diff --git a/.dev/README.md b/.dev/README.md index f92fc42..229d311 100644 --- a/.dev/README.md +++ b/.dev/README.md @@ -1,2 +1,60 @@ -This directory is used for local testing. Nothing to see here. +# Development + +Local development helpers for the `setup-elide` action. + +## Prerequisites + +- [Bun](https://bun.sh) (latest) +- [Node.js](https://nodejs.org) 24+ +- [Docker](https://docs.docker.com/get-docker/) (for `test:docker`) + +## Quick Reference + +```bash +bun install # install dependencies +bun run build # format + bundle (dist/index.js + dist/post.js) +bun run test # run all unit tests (sequenced batches) +bun run test:ci # same as test, but produces JUnit XML + merged lcov +bun run test:docker # build + test in Docker container +bun run lint # oxlint +bun run format:check # biome format check +bun run format:write # biome format + write +bun run all # format + build + test +``` + +## Directory Layout + +| Path | Purpose | +|---|---| +| `.dev/test-env.ts` | Preloaded by bun test to set `RUNNER_TEMP`, `RUNNER_TOOL_CACHE`, `ELIDE_HOME` | +| `.dev/tmp/` | Temp files created during test runs | +| `.dev/target/` | Simulated `ELIDE_HOME` for tests | +| `.dev/tool-cache/` | Simulated tool cache for tests | + +## Test Batching + +Tests run in sequenced batches because `bun:test`'s `mock.module()` creates +process-wide module replacements. Test files that mock the same module differently +must run in separate `bun test` invocations. The `test` script in `package.json` +handles this automatically. + +## Architecture + +See the [main README](../README.md) for user-facing documentation. Key source files: + +| File | Role | +|---|---| +| `src/index.ts` | Entry point (calls `run()`) | +| `src/post.ts` | Post-step entry point (flushes telemetry) | +| `src/main.ts` | Orchestrator: option parsing, installer routing, outputs, summary | +| `src/options.ts` | Option types, defaults, normalization, validation, input parsing | +| `src/releases.ts` | CDN URL building, archive download/extract, tool cache, GitHub API | +| `src/command.ts` | Elide CLI interaction (`elide info`, `elide --version`) | +| `src/platform.ts` | Platform detection (`isDebianLike`, `isRpmBased`) | +| `src/telemetry.ts` | Sentry init/report/flush with aggressive scrubbing | +| `src/install-apt.ts` | apt installer | +| `src/install-shell.ts` | bash/PowerShell install script runner | +| `src/install-msi.ts` | Windows MSI installer | +| `src/install-pkg.ts` | macOS PKG installer | +| `src/install-rpm.ts` | Linux RPM installer | diff --git a/.github/codecov.yml b/.github/codecov.yml index 4425f64..cbde555 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -1,14 +1,31 @@ codecov: - require_ci_to_pass: yes + max_report_age: off + require_ci_to_pass: true + notify: + wait_for_ci: true -ignore: - - "__tests__" - - "dist" - - "node_modules" +coverage: + precision: 2 + round: down + range: "80...100" + status: + project: + default: + informational: true + patch: off -comment: # this is a top-level key - layout: "diff, flags, files" +comment: + layout: "reach,diff,flags,files,footer" behavior: default require_changes: false - require_base: false - require_head: true + +parsers: + javascript: + enable_partials: yes + +github_checks: + annotations: true + +bundle_analysis: + require_bundle_changes: "bundle_increase" + bundle_change_threshold: "1Kb" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3ec3e0..39fb442 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,12 +48,37 @@ jobs: - name: Test id: test - run: bun run test + run: bun run test:ci - - name: "Report: Coverage" + - name: "Upload: Test Results" + if: ${{ !cancelled() && hashFiles('test-results/**') != '' }} uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + with: + token: ${{ secrets.CODECOV_TOKEN }} + report_type: test_results + files: test-results/batch1.xml,test-results/batch2.xml,test-results/batch3.xml,test-results/batch4.xml,test-results/batch5.xml,test-results/batch6.xml + fail_ci_if_error: false + + - name: "Upload: Coverage" + if: ${{ !cancelled() && hashFiles('coverage/**') != '' }} + uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + directory: ./coverage + files: coverage/lcov.info + fail_ci_if_error: false + + - name: Build + run: bun run build + + - name: "Upload: Bundle Analysis" + if: ${{ !cancelled() }} + run: | + bun x @codecov/bundle-analyzer ./dist \ + --bundle-name=setup-elide \ + --upload-token=${{ secrets.CODECOV_TOKEN }} \ + --config-file=codecov-bundle.json + continue-on-error: true test-action: name: "Test: ${{ matrix.name }}" @@ -62,16 +87,55 @@ jobs: fail-fast: false matrix: include: - - name: linux-amd64 + # --- Linux AMD64 --- + - name: linux-amd64 (archive) + runner: ubuntu-latest + installer: archive + - name: linux-amd64 (shell) runner: ubuntu-latest - - name: linux-arm64 + installer: shell + - name: linux-amd64 (apt) + runner: ubuntu-latest + installer: apt + # - name: linux-amd64 (rpm) + # runner: ubuntu-latest + # installer: rpm + + # --- Linux ARM64 --- + - name: linux-arm64 (archive) runner: ubuntu-24.04-arm - - name: macos-arm64 + installer: archive + - name: linux-arm64 (shell) + runner: ubuntu-24.04-arm + installer: shell + + # --- macOS ARM64 --- + - name: macos-arm64 (archive) runner: macos-latest - - name: macos-amd64 + installer: archive + - name: macos-arm64 (shell) + runner: macos-latest + installer: shell + # - name: macos-arm64 (pkg) + # runner: macos-latest + # installer: pkg + + # --- macOS AMD64 --- + - name: macos-amd64 (archive) runner: macos-15-intel - - name: windows-amd64 + installer: archive + + # --- Windows AMD64 --- + - name: windows-amd64 (archive) runner: windows-latest + installer: archive + # - name: windows-amd64 (shell) + # runner: windows-latest + # installer: shell + # MSI: suppressed until installer is verified + # - name: windows-amd64 (msi) + # runner: windows-latest + # installer: msi steps: - name: Harden Runner @@ -86,7 +150,8 @@ jobs: - name: "Test: Local Action" id: test-action uses: ./ - with: {} + with: + installer: ${{ matrix.installer }} - name: "Test: Verify Installation" shell: bash @@ -94,3 +159,5 @@ jobs: elide --version echo "Path: ${{ steps.test-action.outputs.path }}" echo "Version: ${{ steps.test-action.outputs.version }}" + echo "Cached: ${{ steps.test-action.outputs.cached }}" + echo "Installer: ${{ steps.test-action.outputs.installer }}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 45d6246..9f741ed 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,6 +46,18 @@ jobs: - name: "Build: Bundle" run: bun run build + - name: "Sentry: Upload Source Maps" + if: env.SENTRY_AUTH_TOKEN != '' + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_ORG: elide-dev + SENTRY_PROJECT: setup-elide + run: | + npx @sentry/cli releases new "setup-elide@${GITHUB_REF_NAME#v}" + npx @sentry/cli releases files "setup-elide@${GITHUB_REF_NAME#v}" upload-sourcemaps dist/ --ext js --ext map + npx @sentry/cli releases finalize "setup-elide@${GITHUB_REF_NAME#v}" + npx @sentry/cli releases deploys "setup-elide@${GITHUB_REF_NAME#v}" new -e production + - name: "Build: Package Artifact" run: | TAG="${GITHUB_REF_NAME}" @@ -54,6 +66,8 @@ jobs: action.yml \ dist/index.js \ dist/index.js.map \ + dist/post.js \ + dist/post.js.map \ package.json \ .github/LICENSE sha256sum "artifacts/setup-elide-${TAG}.tar.gz" > "artifacts/setup-elide-${TAG}.tar.gz.sha256" diff --git a/README.md b/README.md index 23444bf..6402efc 100644 --- a/README.md +++ b/README.md @@ -3,83 +3,168 @@ [![Elide](https://elide.dev/shield)](https://elide.dev) [![CI](https://github.com/elide-dev/setup-elide/actions/workflows/ci.yml/badge.svg)](https://github.com/elide-dev/setup-elide/actions) -[![Coverage](./.github/badges/coverage.svg)](https://codecov.io/gh/elide-dev/setup-elide) +[![codecov](https://codecov.io/gh/elide-dev/setup-elide/graph/badge.svg)](https://codecov.io/gh/elide-dev/setup-elide) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v1.4-ff69b4.svg)](.github/CODE_OF_CONDUCT.md) -This repository provides a [GitHub Action][0] to setup the [Elide][1] runtime within your workflows. +This repository provides a [GitHub Action][0] to install the [Elide][1] runtime within your workflows. -## Usage +## Quick Start -**Install the latest Elide version and add it to the `PATH`** ```yaml - - name: "Setup: Elide" - uses: elide-dev/setup-elide@v2 +- name: "Setup: Elide" + uses: elide-dev/setup-elide@v4 ``` -**Install a specific Elide version and add it to the `PATH`** +This installs the latest nightly build of Elide and adds it to the `PATH`. + +## Usage Examples + +**Install a specific version** +```yaml +- name: "Setup: Elide" + uses: elide-dev/setup-elide@v4 + with: + version: 1.0.0 + channel: release +``` + +**Install via apt on Debian/Ubuntu** +```yaml +- name: "Setup: Elide" + uses: elide-dev/setup-elide@v4 + with: + installer: apt +``` + +**Install via shell script (uses GitHub Releases for faster downloads in GHA)** +```yaml +- name: "Setup: Elide" + uses: elide-dev/setup-elide@v4 + with: + installer: shell +``` + +**Install via PKG on macOS** +```yaml +- name: "Setup: Elide" + uses: elide-dev/setup-elide@v4 + with: + installer: pkg +``` + +**Install without adding to PATH** ```yaml - - name: "Setup: Elide" - uses: elide-dev/setup-elide@v2 - with: - version: 1.0.0-beta1 # any tag from the `elide-dev/releases` repo; omit for latest +- name: "Setup: Elide" + uses: elide-dev/setup-elide@v4 + with: + export_path: false ``` -**Install Elide but don't add it to the `PATH`** +**Use outputs in subsequent steps** ```yaml - - name: "Setup: Elide" - uses: elide-dev/setup-elide@v2 - with: - export_path: false +- name: "Setup: Elide" + id: setup-elide + uses: elide-dev/setup-elide@v4 + +- name: "Check" + run: | + echo "Installed: ${{ steps.setup-elide.outputs.version }}" + echo "Path: ${{ steps.setup-elide.outputs.path }}" + echo "Cached: ${{ steps.setup-elide.outputs.cached }}" + echo "Installer: ${{ steps.setup-elide.outputs.installer }}" ``` -## Options +## Inputs -The full suite of available options are below. +| Input | Type | Default | Description | +|---|---|---|---| +| `version` | `string` | `latest` | Version to install, or `latest` for the newest release | +| `channel` | `string` | `nightly` | Release channel: `nightly`, `preview`, or `release` | +| `installer` | `string` | `archive` | Installation method (see [Installers](#installers) below) | +| `os` | `string` | _(auto)_ | Target OS override | +| `arch` | `string` | _(auto)_ | Target architecture override | +| `install_path` | `string` | _(conventional)_ | Custom install directory | +| `force` | `boolean` | `false` | Force installation even if Elide is already installed | +| `export_path` | `boolean` | `true` | Add Elide to the `PATH` | +| `no_cache` | `boolean` | `false` | Disable the GitHub Actions tool cache | +| `telemetry` | `boolean` | `true` | Enable anonymous error telemetry ([details](#telemetry)) | +| `token` | `string` | `${{ github.token }}` | GitHub token for API requests | +| `custom_url` | `string` | | Custom download URL (overrides all other download logic) | +| `version_tag` | `string` | | Version tag to use with a custom download URL | -| Option | Type | Default | Description | -| ------------- | ------------ | ------------------------- | -------------------------------------------- | -| `version` | `string` | `latest` | Version to install; defaults to `latest` | -| `os` | `string` | (Current) | OS to target; defaults to current platform | -| `arch` | `string` | (Current) | Arch to target; defaults to current platform | -| `force` | `boolean` | `false` | Force installation over existing binary | -| `prewarm` | `boolean` | `true` | Warm up the runtime after installing | -| `token` | `string` | `${{ env.GITHUB_TOKEN }}` | GitHub token to use for fetching assets | -| `export_path` | `boolean` | `true` | Whether to install Elide onto the `PATH` | +## Outputs -**Options for `os`** (support varies) -- `darwin`, `mac`, `macos` -- `windows`, `win32` -- `linux` +| Output | Description | +|---|---| +| `path` | Path to the installed Elide binary | +| `version` | Installed version string | +| `cached` | `true` if the installation was served from the tool cache | +| `installer` | The effective installer method that was used | -**Options for `arch`** (support varies) -- `amd64`, `x64`, `x86_64` -- `arm64`, `aarch64` +## Installers -**Full configuration sample with defaults** +The `installer` input controls how Elide is installed. The default (`archive`) downloads a prebuilt archive from the Elide CDN and caches it using the GitHub Actions tool cache. + +| Installer | Platforms | Description | +|---|---|---| +| `archive` | All | Download and extract a `.tgz`/`.txz`/`.zip` archive (default) | +| `shell` | All | Run the official install script (`install.sh` or `install.ps1`) | +| `apt` | Linux (Debian/Ubuntu) | Install via the Elide apt repository | +| `rpm` | Linux (RHEL/Fedora) | Install via `.rpm` package | +| `pkg` | macOS | Install via `.pkg` installer | +| `msi` | Windows | Install via `.msi` installer | + +If you choose an installer that doesn't match your platform (e.g., `msi` on Linux), the action will warn and fall back to `archive`. + +## Supported Platforms + +| Platform | Architectures | +|---|---| +| Linux | `amd64`, `aarch64` | +| macOS | `amd64`, `aarch64` | +| Windows | `amd64` | + +**OS aliases:** `darwin`, `mac`, `macos`, `windows`, `win`, `win32`, `linux` +**Arch aliases:** `amd64`, `x64`, `x86_64`, `aarch64`, `arm64` + +## Caching + +The `archive` installer uses the [GitHub Actions tool cache][4] to avoid re-downloading on subsequent runs. Cache keys are scoped by version and architecture. Set `no_cache: true` to disable caching. + +## Telemetry + +This action sends anonymous error telemetry to help the Elide team detect and fix issues at scale. **No secrets, tokens, environment variables, or personally identifiable information are ever transmitted.** Only the error message (scrubbed of sensitive values), stack trace, and action configuration (installer, os, arch, channel, version) are sent. + +To opt out: ```yaml - - name: "Setup: Elide" - uses: elide-dev/setup-elide@v1 - with: - version: latest - os: linux - arch: amd64 - force: false - prewarm: true - export_path: true +- uses: elide-dev/setup-elide@v4 + with: + telemetry: false ``` -> [!IMPORTANT] -> Elide supports Linux on amd64 and macOS on amd64/aarch64 at this time. Windows and Linux/aarch64 support are forthcoming. +## GitHub Integration + +This action uses GitHub Actions features to provide a polished CI experience: + +- **Grouped log output** -- Installation phases are wrapped in collapsible log groups +- **Job summary** -- A summary table is written to the Actions Summary tab showing version, platform, installer, timing, and cache status +- **Annotations** -- Errors and warnings appear as titled annotations in the Actions UI +- **Rich outputs** -- Downstream steps can branch on `cached`, `installer`, `version`, and `path` ## What is Elide? -Elide is a new runtime and framework designed for the polyglot era. Mix and match languages including JavaScript, Python, Ruby, and JVM, with the ability to share objects between them. It's fast: Elide can execute Python at up to 3x the speed of CPython, Ruby at up to 22x vs. CRuby, and JavaScript at up to 75x the speed of Node. Elide already beats Node, Deno, and Bun under benchmark. +Elide is a new runtime and framework designed for the polyglot era. Mix and match languages including JavaScript, Python, Ruby, and JVM, with the ability to share objects between them. It's fast: Elide can execute Python at up to 3x the speed of CPython, Ruby at up to 22x vs. CRuby, and JavaScript at up to 75x the speed of Node. - **Visit [elide.dev][1]**, our website, which runs on Elide - **Watch the [launch video][2]** for demos, benchmarks, and a full feature tour - **Join the devs on [Discord][3]**, we are always open to new ideas and feedback +## License + +[MIT](.github/LICENSE) + [0]: https://github.com/features/actions [1]: https://elide.dev [2]: https://www.youtube.com/watch?v=Txl9ryfbCw4 [3]: https://elide.dev/discord +[4]: https://github.com/actions/toolkit/tree/main/packages/tool-cache diff --git a/__tests__/command.test.ts b/__tests__/command.test.ts index 3bf2816..049f420 100644 --- a/__tests__/command.test.ts +++ b/__tests__/command.test.ts @@ -22,8 +22,9 @@ mock.module('@actions/core', () => ({ addPath: jest.fn() })) -const { prewarm, info, obtainVersion, ElideCommand, ElideArgument } = - await import('../src/command') +const { elideInfo, obtainVersion, ElideCommand, ElideArgument } = await import( + '../src/command' +) describe('command', () => { beforeEach(() => { @@ -39,20 +40,10 @@ describe('command', () => { }) }) - it('prewarm should execute the info command', async () => { - await prewarm('/usr/bin/elide') + it('elideInfo should execute the info command', async () => { + await elideInfo('/usr/bin/elide') expect(infoMock).toHaveBeenCalledWith( - 'Prewarming Elide at bin: /usr/bin/elide' - ) - expect(execMock).toHaveBeenCalledWith('"/usr/bin/elide"', [ - ElideCommand.INFO - ]) - }) - - it('info should execute the info command', async () => { - await info('/usr/bin/elide') - expect(debugMock).toHaveBeenCalledWith( - 'Printing runtime info at bin: /usr/bin/elide' + 'Running Elide info at bin: /usr/bin/elide' ) expect(execMock).toHaveBeenCalledWith('"/usr/bin/elide"', [ ElideCommand.INFO @@ -82,8 +73,8 @@ describe('command', () => { expect(version).toBe('1.0.0') }) - it('prewarm should propagate exec errors', async () => { + it('elideInfo should propagate exec errors', async () => { execMock.mockRejectedValue(new Error('exec failed')) - await expect(prewarm('/bad/path')).rejects.toThrow('exec failed') + await expect(elideInfo('/bad/path')).rejects.toThrow('exec failed') }) }) diff --git a/__tests__/install-apt.test.ts b/__tests__/install-apt.test.ts index 929077f..0d1ac86 100644 --- a/__tests__/install-apt.test.ts +++ b/__tests__/install-apt.test.ts @@ -31,8 +31,7 @@ mock.module('@actions/core', () => ({ })) mock.module('../src/command', () => ({ obtainVersion: obtainVersionMock, - prewarm: jest.fn(), - info: jest.fn() + elideInfo: jest.fn() })) const { installViaApt } = await import('../src/install-apt') diff --git a/__tests__/install-msi.test.ts b/__tests__/install-msi.test.ts new file mode 100644 index 0000000..8704bcd --- /dev/null +++ b/__tests__/install-msi.test.ts @@ -0,0 +1,134 @@ +import { describe, it, expect, beforeEach, jest, mock } from 'bun:test' + +// Create mock functions +const execMock = jest.fn().mockResolvedValue(0) +const whichMock = jest.fn().mockResolvedValue('C:\\Elide\\bin\\elide.exe') +const downloadToolMock = jest.fn().mockResolvedValue('/tmp/elide.msi') +const obtainVersionMock = jest.fn().mockResolvedValue('1.0.0') +const buildCdnAssetUrlMock = jest + .fn() + .mockReturnValue( + new URL( + 'https://elide.zip/artifacts/nightly/latest/elide.windows-amd64.msi?source=gha' + ) + ) +const infoMock = jest.fn() +const debugMock = jest.fn() + +// Mock modules before import +mock.module('@actions/exec', () => ({ + exec: execMock, + getExecOutput: jest.fn() +})) +mock.module('@actions/io', () => ({ + which: whichMock, + mv: jest.fn(), + cp: jest.fn(), + rmRF: jest.fn(), + mkdirP: jest.fn() +})) +mock.module('@actions/core', () => ({ + info: infoMock, + debug: debugMock, + error: jest.fn(), + warning: jest.fn(), + getInput: jest.fn().mockReturnValue(''), + getBooleanInput: jest.fn().mockReturnValue(true), + setFailed: jest.fn(), + setOutput: jest.fn(), + addPath: jest.fn() +})) +mock.module('@actions/tool-cache', () => ({ + downloadTool: downloadToolMock, + extractTar: jest.fn(), + extractZip: jest.fn(), + cacheDir: jest.fn(), + find: jest.fn() +})) +mock.module('../src/command', () => ({ + obtainVersion: obtainVersionMock, + elideInfo: jest.fn() +})) +mock.module('../src/releases', () => ({ + buildCdnAssetUrl: buildCdnAssetUrlMock +})) + +const { installViaMsi } = await import('../src/install-msi') +const { default: buildOptions } = await import('../src/options') + +describe('install-msi', () => { + beforeEach(() => { + execMock.mockClear() + whichMock.mockClear() + downloadToolMock.mockClear() + obtainVersionMock.mockClear() + buildCdnAssetUrlMock.mockClear() + infoMock.mockClear() + debugMock.mockClear() + + downloadToolMock.mockResolvedValue('/tmp/elide.msi') + execMock.mockResolvedValue(0) + whichMock.mockResolvedValue('C:\\Elide\\bin\\elide.exe') + obtainVersionMock.mockResolvedValue('1.0.0') + buildCdnAssetUrlMock.mockReturnValue( + new URL( + 'https://elide.zip/artifacts/nightly/latest/elide.windows-amd64.msi?source=gha' + ) + ) + }) + + it('should construct the CDN URL with msi extension', async () => { + const options = buildOptions({ + os: 'windows', + arch: 'amd64', + version: 'latest' + }) + await installViaMsi(options) + + expect(buildCdnAssetUrlMock).toHaveBeenCalledWith(options, 'msi') + }) + + it('should call msiexec with correct arguments', async () => { + const options = buildOptions({ + os: 'windows', + arch: 'amd64', + version: 'latest' + }) + await installViaMsi(options) + + expect(downloadToolMock).toHaveBeenCalledWith( + 'https://elide.zip/artifacts/nightly/latest/elide.windows-amd64.msi?source=gha' + ) + expect(execMock).toHaveBeenCalledWith('msiexec', [ + '/i', + '/tmp/elide.msi', + '/quiet', + '/norestart', + `INSTALLDIR=${options.install_path}` + ]) + }) + + it('should return correct elidePath and version', async () => { + const options = buildOptions({ + os: 'windows', + arch: 'amd64', + version: 'latest' + }) + const result = await installViaMsi(options) + + expect(result.elidePath).toBe('C:\\Elide\\bin\\elide.exe') + expect(result.version.tag_name).toBe('1.0.0') + expect(result.version.userProvided).toBe(false) + }) + + it('should mark version as userProvided when not latest', async () => { + const options = buildOptions({ + os: 'windows', + arch: 'amd64', + version: '1.2.3' + }) + const result = await installViaMsi(options) + + expect(result.version.userProvided).toBe(true) + }) +}) diff --git a/__tests__/install-script.test.ts b/__tests__/install-pkg.test.ts similarity index 53% rename from __tests__/install-script.test.ts rename to __tests__/install-pkg.test.ts index 983667b..71cdaf7 100644 --- a/__tests__/install-script.test.ts +++ b/__tests__/install-pkg.test.ts @@ -3,9 +3,15 @@ import { describe, it, expect, beforeEach, jest, mock } from 'bun:test' // Create mock functions const execMock = jest.fn().mockResolvedValue(0) const whichMock = jest.fn().mockResolvedValue('/usr/local/bin/elide') -const downloadToolMock = jest.fn().mockResolvedValue('/tmp/install.sh') +const downloadToolMock = jest.fn().mockResolvedValue('/tmp/elide.pkg') const obtainVersionMock = jest.fn().mockResolvedValue('1.0.0') -const addPathMock = jest.fn() +const buildCdnAssetUrlMock = jest + .fn() + .mockReturnValue( + new URL( + 'https://elide.zip/artifacts/nightly/latest/elide.macos-arm64.pkg?source=gha' + ) + ) const infoMock = jest.fn() const debugMock = jest.fn() @@ -27,9 +33,10 @@ mock.module('@actions/core', () => ({ error: jest.fn(), warning: jest.fn(), getInput: jest.fn().mockReturnValue(''), + getBooleanInput: jest.fn().mockReturnValue(true), setFailed: jest.fn(), setOutput: jest.fn(), - addPath: addPathMock + addPath: jest.fn() })) mock.module('@actions/tool-cache', () => ({ downloadTool: downloadToolMock, @@ -40,73 +47,78 @@ mock.module('@actions/tool-cache', () => ({ })) mock.module('../src/command', () => ({ obtainVersion: obtainVersionMock, - prewarm: jest.fn(), - info: jest.fn() + elideInfo: jest.fn() +})) +mock.module('../src/releases', () => ({ + buildCdnAssetUrl: buildCdnAssetUrlMock })) -const { installViaScript } = await import('../src/install-script') +const { installViaPkg } = await import('../src/install-pkg') const { default: buildOptions } = await import('../src/options') -describe('install-script', () => { +describe('install-pkg', () => { beforeEach(() => { execMock.mockClear() whichMock.mockClear() downloadToolMock.mockClear() obtainVersionMock.mockClear() - addPathMock.mockClear() + buildCdnAssetUrlMock.mockClear() infoMock.mockClear() debugMock.mockClear() - downloadToolMock.mockResolvedValue('/tmp/install.sh') + downloadToolMock.mockResolvedValue('/tmp/elide.pkg') execMock.mockResolvedValue(0) whichMock.mockResolvedValue('/usr/local/bin/elide') obtainVersionMock.mockResolvedValue('1.0.0') + buildCdnAssetUrlMock.mockReturnValue( + new URL( + 'https://elide.zip/artifacts/nightly/latest/elide.macos-arm64.pkg?source=gha' + ) + ) }) - it('should download and execute the install script', async () => { + it('should construct the URL correctly via buildCdnAssetUrl', async () => { const options = buildOptions({ os: 'darwin', arch: 'aarch64', version: 'latest' }) - const result = await installViaScript(options) + await installViaPkg(options) - expect(downloadToolMock).toHaveBeenCalledWith( - 'https://dl.elide.dev/cli/install.sh' - ) - expect(execMock).toHaveBeenCalledWith('bash', ['/tmp/install.sh']) - expect(result.elidePath).toBe('/usr/local/bin/elide') - expect(result.version.tag_name).toBe('1.0.0') + expect(buildCdnAssetUrlMock).toHaveBeenCalledWith(options, 'pkg') }) - it('should pass --version when a specific version is requested', async () => { + it('should call sudo installer -pkg with the downloaded path', async () => { const options = buildOptions({ - os: 'linux', - arch: 'amd64', - version: '1.2.3' + os: 'darwin', + arch: 'aarch64', + version: 'latest' }) - await installViaScript(options) + await installViaPkg(options) - expect(execMock).toHaveBeenCalledWith('bash', [ - '/tmp/install.sh', - '--version', - '1.2.3' + expect(downloadToolMock).toHaveBeenCalledWith( + 'https://elide.zip/artifacts/nightly/latest/elide.macos-arm64.pkg?source=gha' + ) + expect(execMock).toHaveBeenCalledWith('sudo', [ + 'installer', + '-pkg', + '/tmp/elide.pkg', + '-target', + '/' ]) }) - it('should fall back to ~/.elide/bin if which fails initially', async () => { - whichMock - .mockRejectedValueOnce(new Error('not found')) - .mockResolvedValueOnce('/home/runner/.elide/bin/elide') - + it('should return the correct elidePath and version', async () => { const options = buildOptions({ - os: 'linux', - arch: 'amd64', + os: 'darwin', + arch: 'aarch64', version: 'latest' }) - const result = await installViaScript(options) + const result = await installViaPkg(options) - expect(addPathMock).toHaveBeenCalled() - expect(result.elidePath).toBe('/home/runner/.elide/bin/elide') + expect(result.elidePath).toBe('/usr/local/bin/elide') + expect(result.version.tag_name).toBe('1.0.0') + expect(result.elideBin).toBe('/usr/local/bin') + expect(result.elideHome).toBe('/usr/local/bin') }) }) diff --git a/__tests__/install-rpm.test.ts b/__tests__/install-rpm.test.ts new file mode 100644 index 0000000..976e574 --- /dev/null +++ b/__tests__/install-rpm.test.ts @@ -0,0 +1,161 @@ +import { describe, it, expect, beforeEach, jest, mock } from 'bun:test' + +// Create mock functions +const execMock = jest.fn().mockResolvedValue(0) +const whichMock = jest.fn().mockResolvedValue('/usr/bin/elide') +const downloadToolMock = jest.fn().mockResolvedValue('/tmp/elide.rpm') +const obtainVersionMock = jest.fn().mockResolvedValue('1.0.0') +const buildCdnAssetUrlMock = jest + .fn() + .mockReturnValue( + new URL( + 'https://elide.zip/artifacts/nightly/latest/elide.linux-amd64.rpm?source=gha' + ) + ) +const infoMock = jest.fn() +const debugMock = jest.fn() + +// Mock modules before import +mock.module('@actions/exec', () => ({ + exec: execMock, + getExecOutput: jest.fn() +})) +mock.module('@actions/io', () => ({ + which: whichMock, + mv: jest.fn(), + cp: jest.fn(), + rmRF: jest.fn(), + mkdirP: jest.fn() +})) +mock.module('@actions/core', () => ({ + info: infoMock, + debug: debugMock, + error: jest.fn(), + warning: jest.fn(), + getInput: jest.fn().mockReturnValue(''), + getBooleanInput: jest.fn().mockReturnValue(true), + setFailed: jest.fn(), + setOutput: jest.fn(), + addPath: jest.fn() +})) +mock.module('@actions/tool-cache', () => ({ + downloadTool: downloadToolMock, + extractTar: jest.fn(), + extractZip: jest.fn(), + cacheDir: jest.fn(), + find: jest.fn() +})) +mock.module('../src/command', () => ({ + obtainVersion: obtainVersionMock, + elideInfo: jest.fn() +})) +mock.module('../src/releases', () => ({ + buildCdnAssetUrl: buildCdnAssetUrlMock +})) + +const { installViaRpm } = await import('../src/install-rpm') +const { default: buildOptions } = await import('../src/options') + +describe('install-rpm', () => { + beforeEach(() => { + execMock.mockClear() + whichMock.mockClear() + downloadToolMock.mockClear() + obtainVersionMock.mockClear() + buildCdnAssetUrlMock.mockClear() + infoMock.mockClear() + debugMock.mockClear() + + downloadToolMock.mockResolvedValue('/tmp/elide.rpm') + execMock.mockResolvedValue(0) + whichMock.mockResolvedValue('/usr/bin/elide') + obtainVersionMock.mockResolvedValue('1.0.0') + buildCdnAssetUrlMock.mockReturnValue( + new URL( + 'https://elide.zip/artifacts/nightly/latest/elide.linux-amd64.rpm?source=gha' + ) + ) + }) + + it('should construct the RPM URL correctly', async () => { + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: 'latest' + }) + await installViaRpm(options) + + expect(buildCdnAssetUrlMock).toHaveBeenCalledWith(options, 'rpm') + }) + + it('should install via dnf when dnf is available', async () => { + // First call: which('dnf', true) -> resolves (dnf available) + // Second call: which('elide', true) -> resolves to binary path + whichMock + .mockResolvedValueOnce('/usr/bin/dnf') + .mockResolvedValueOnce('/usr/bin/elide') + + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: 'latest' + }) + const result = await installViaRpm(options) + + expect(execMock).toHaveBeenCalledWith('sudo', [ + 'dnf', + 'install', + '-y', + '/tmp/elide.rpm' + ]) + expect(result.elidePath).toBe('/usr/bin/elide') + expect(result.version.tag_name).toBe('1.0.0') + }) + + it('should fall back to rpm when dnf is not available', async () => { + // First call: which('dnf', true) -> rejects (dnf not found) + // Second call: which('elide', true) -> resolves to binary path + whichMock + .mockRejectedValueOnce(new Error('not found')) + .mockResolvedValueOnce('/usr/bin/elide') + + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: 'latest' + }) + const result = await installViaRpm(options) + + expect(execMock).toHaveBeenCalledWith('sudo', [ + 'rpm', + '-U', + '--replacepkgs', + '/tmp/elide.rpm' + ]) + expect(execMock).not.toHaveBeenCalledWith( + 'sudo', + expect.arrayContaining(['dnf']) + ) + expect(result.elidePath).toBe('/usr/bin/elide') + expect(result.version.tag_name).toBe('1.0.0') + }) + + it('should return correct release info', async () => { + whichMock + .mockResolvedValueOnce('/usr/bin/dnf') + .mockResolvedValueOnce('/usr/bin/elide') + + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: '1.2.3' + }) + const result = await installViaRpm(options) + + expect(result.elidePath).toBe('/usr/bin/elide') + expect(result.elideBin).toBe('/usr/bin') + expect(result.elideHome).toBe('/usr/bin') + expect(result.version.tag_name).toBe('1.0.0') + expect(result.version.userProvided).toBe(true) + }) +}) diff --git a/__tests__/install-shell.test.ts b/__tests__/install-shell.test.ts new file mode 100644 index 0000000..542dacf --- /dev/null +++ b/__tests__/install-shell.test.ts @@ -0,0 +1,163 @@ +import { describe, it, expect, beforeEach, jest, mock } from 'bun:test' + +// Create mock functions +const execMock = jest.fn().mockResolvedValue(0) +const whichMock = jest.fn().mockResolvedValue('/usr/local/bin/elide') +const downloadToolMock = jest.fn().mockResolvedValue('/tmp/install.sh') +const obtainVersionMock = jest.fn().mockResolvedValue('1.0.0') +const addPathMock = jest.fn() +const infoMock = jest.fn() +const debugMock = jest.fn() + +// Mock modules before import +mock.module('@actions/exec', () => ({ + exec: execMock, + getExecOutput: jest.fn() +})) +mock.module('@actions/io', () => ({ + which: whichMock, + mv: jest.fn(), + cp: jest.fn(), + rmRF: jest.fn(), + mkdirP: jest.fn() +})) +mock.module('@actions/core', () => ({ + info: infoMock, + debug: debugMock, + error: jest.fn(), + warning: jest.fn(), + getInput: jest.fn().mockReturnValue(''), + getBooleanInput: jest.fn().mockReturnValue(true), + setFailed: jest.fn(), + setOutput: jest.fn(), + addPath: addPathMock +})) +mock.module('@actions/tool-cache', () => ({ + downloadTool: downloadToolMock, + extractTar: jest.fn(), + extractZip: jest.fn(), + cacheDir: jest.fn(), + find: jest.fn() +})) +mock.module('../src/command', () => ({ + obtainVersion: obtainVersionMock, + elideInfo: jest.fn() +})) + +const { installViaShell } = await import('../src/install-shell') +const { default: buildOptions } = await import('../src/options') + +describe('install-shell', () => { + beforeEach(() => { + execMock.mockClear() + whichMock.mockClear() + downloadToolMock.mockClear() + obtainVersionMock.mockClear() + addPathMock.mockClear() + infoMock.mockClear() + debugMock.mockClear() + + downloadToolMock.mockResolvedValue('/tmp/install.sh') + execMock.mockResolvedValue(0) + whichMock.mockResolvedValue('/usr/local/bin/elide') + obtainVersionMock.mockResolvedValue('1.0.0') + }) + + describe('bash (linux/macOS)', () => { + it('should download and execute the bash install script with --gha', async () => { + const options = buildOptions({ + os: 'darwin', + arch: 'aarch64', + version: 'latest' + }) + const result = await installViaShell(options) + + expect(downloadToolMock).toHaveBeenCalledWith( + 'https://dl.elide.dev/cli/install.sh' + ) + expect(execMock).toHaveBeenCalledWith('bash', [ + '/tmp/install.sh', + '--gha' + ]) + expect(result.elidePath).toBe('/usr/local/bin/elide') + expect(result.version.tag_name).toBe('1.0.0') + }) + + it('should pass --version when a specific version is requested', async () => { + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: '1.2.3' + }) + await installViaShell(options) + + expect(execMock).toHaveBeenCalledWith('bash', [ + '/tmp/install.sh', + '--gha', + '--version', + '1.2.3' + ]) + }) + + it('should fall back to ~/.elide/bin if which fails initially', async () => { + whichMock + .mockRejectedValueOnce(new Error('not found')) + .mockResolvedValueOnce('/home/runner/.elide/bin/elide') + + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: 'latest' + }) + const result = await installViaShell(options) + + expect(addPathMock).toHaveBeenCalled() + expect(result.elidePath).toBe('/home/runner/.elide/bin/elide') + }) + }) + + describe('powershell (windows)', () => { + it('should download and execute the PowerShell script with -Gha', async () => { + downloadToolMock.mockResolvedValue('/tmp/install.ps1') + const options = buildOptions({ + os: 'windows', + arch: 'amd64', + version: 'latest' + }) + const result = await installViaShell(options) + + expect(downloadToolMock).toHaveBeenCalledWith( + 'https://dl.elide.dev/cli/install.ps1' + ) + expect(execMock).toHaveBeenCalledWith('powershell', [ + '-ExecutionPolicy', + 'Bypass', + '-File', + '/tmp/install.ps1', + '-Gha' + ]) + expect(result.elidePath).toBe('/usr/local/bin/elide') + expect(result.version.tag_name).toBe('1.0.0') + }) + + it('should pass -Version when a specific version is requested', async () => { + downloadToolMock.mockResolvedValue('/tmp/install.ps1') + const options = buildOptions({ + os: 'windows', + arch: 'amd64', + version: '2.0.0' + }) + await installViaShell(options) + + expect(execMock).toHaveBeenCalledWith('powershell', [ + '-ExecutionPolicy', + 'Bypass', + '-File', + '/tmp/install.ps1', + '-Gha', + '-Version', + '2.0.0' + ]) + }) + }) +}) diff --git a/__tests__/main.test.ts b/__tests__/main.test.ts index 0bab829..c094f9f 100644 --- a/__tests__/main.test.ts +++ b/__tests__/main.test.ts @@ -13,12 +13,22 @@ const debugMock = jest.fn() const infoMock = jest.fn() const warningMock = jest.fn() const errorMock = jest.fn() +const noticeMock = jest.fn() const addPathMock = jest.fn() -const isDebianLikeMock = jest.fn().mockResolvedValue(false) +const groupMock = jest.fn(async (_name: string, fn: () => Promise) => fn()) +const summaryMock = { + addHeading: jest.fn().mockReturnThis(), + addTable: jest.fn().mockReturnThis(), + addCodeBlock: jest.fn().mockReturnThis(), + addLink: jest.fn().mockReturnThis(), + write: jest.fn().mockResolvedValue(undefined) +} const downloadToolMock = jest.fn().mockResolvedValue('/tmp/install.sh') -const prewarmMock = jest.fn().mockResolvedValue(undefined) -const cmdInfoMock = jest.fn().mockResolvedValue(undefined) +const elideInfoMock = jest.fn().mockResolvedValue(undefined) const obtainVersionMock = jest.fn().mockResolvedValue('1.0.0') +const initTelemetryMock = jest.fn() +const reportErrorMock = jest.fn() +const flushTelemetryMock = jest.fn().mockResolvedValue(undefined) // Mock modules before any project imports mock.module('@actions/exec', () => ({ @@ -37,10 +47,14 @@ mock.module('@actions/core', () => ({ debug: debugMock, error: errorMock, warning: warningMock, + notice: noticeMock, getInput: getInputMock, + getBooleanInput: jest.fn().mockReturnValue(true), setFailed: setFailedMock, setOutput: setOutputMock, - addPath: addPathMock + addPath: addPathMock, + group: groupMock, + summary: summaryMock })) mock.module('@actions/tool-cache', () => ({ downloadTool: downloadToolMock, @@ -50,20 +64,30 @@ mock.module('@actions/tool-cache', () => ({ find: jest.fn() })) mock.module('../src/command', () => ({ - prewarm: prewarmMock, - info: cmdInfoMock, + elideInfo: elideInfoMock, obtainVersion: obtainVersionMock, ElideCommand: { RUN: 'run', INFO: 'info' }, ElideArgument: { VERSION: '--version' } })) -mock.module('../src/platform', () => ({ - isDebianLike: isDebianLikeMock +const withSpanMock = jest.fn( + async (_name: string, _op: string, fn: () => Promise) => fn() +) +const recordMetricMock = jest.fn() +const logEventMock = jest.fn() + +mock.module('../src/telemetry', () => ({ + initTelemetry: initTelemetryMock, + reportError: reportErrorMock, + flushTelemetry: flushTelemetryMock, + withSpan: withSpanMock, + recordMetric: recordMetricMock, + logEvent: logEventMock })) const main = await import('../src/main') const { default: buildOptions, OptionName } = await import('../src/options') const { ElideArch, ElideOS } = await import('../src/releases') -const { ActionOutputName } = await import('../src/outputs') +const { ActionOutputName } = await import('../src/main') const setupMocks = () => { debugMock.mockImplementation((...args: unknown[]) => @@ -83,7 +107,6 @@ const setupMocks = () => { describe('action', () => { beforeEach(() => { - // Clear all mock state execMock.mockClear() getExecOutputMock.mockClear() whichMock.mockClear() @@ -94,19 +117,28 @@ describe('action', () => { infoMock.mockClear() warningMock.mockClear() errorMock.mockClear() + noticeMock.mockClear() addPathMock.mockClear() - isDebianLikeMock.mockClear() + groupMock.mockClear() downloadToolMock.mockClear() - prewarmMock.mockClear() - cmdInfoMock.mockClear() + elideInfoMock.mockClear() obtainVersionMock.mockClear() - // Default: getInput returns empty - getInputMock.mockReturnValue('') - - // Default: not debian - isDebianLikeMock.mockResolvedValue(false) + initTelemetryMock.mockClear() + reportErrorMock.mockClear() + flushTelemetryMock.mockClear() + withSpanMock.mockClear() + recordMetricMock.mockClear() + logEventMock.mockClear() + summaryMock.addHeading.mockClear() + summaryMock.addTable.mockClear() + summaryMock.write.mockClear() + summaryMock.addCodeBlock.mockClear() + summaryMock.addLink.mockClear() - // Default: install script path succeeds + getInputMock.mockReturnValue('') + groupMock.mockImplementation( + async (_name: string, fn: () => Promise) => fn() + ) downloadToolMock.mockResolvedValue('/tmp/install.sh') execMock.mockResolvedValue(0) whichMock.mockResolvedValue('/mock/bin/elide') @@ -115,9 +147,12 @@ describe('action', () => { stderr: '', exitCode: 0 }) - prewarmMock.mockResolvedValue(undefined) - cmdInfoMock.mockResolvedValue(undefined) + elideInfoMock.mockResolvedValue(undefined) obtainVersionMock.mockResolvedValue('1.0.0') + flushTelemetryMock.mockResolvedValue(undefined) + withSpanMock.mockImplementation( + async (_name: string, _op: string, fn: () => Promise) => fn() + ) }) it('reads option inputs', async () => { @@ -129,7 +164,7 @@ describe('action', () => { expect(getInputMock).toHaveBeenCalledWith(OptionName.ARCH) expect(getInputMock).toHaveBeenCalledWith(OptionName.TOKEN) expect(getInputMock).toHaveBeenCalledWith(OptionName.CUSTOM_URL) - expect(getInputMock).toHaveBeenCalledWith(OptionName.EXPORT_PATH) + expect(getInputMock).toHaveBeenCalledWith(OptionName.INSTALLER) }) it('sets the `path` and `version` outputs', async () => { @@ -146,15 +181,117 @@ describe('action', () => { ) }) - it('should fail for unhandled exceptions', async () => { + it('sets cached and installer outputs', async () => { + setupMocks() + await main.run({ force: true, installer: 'shell' }) + expect(setOutputMock).toHaveBeenCalledWith(ActionOutputName.CACHED, 'false') + expect(setOutputMock).toHaveBeenCalledWith( + ActionOutputName.INSTALLER, + 'shell' + ) + }) + + it('should initialize telemetry', async () => { + setupMocks() + await main.run() + expect(initTelemetryMock).toHaveBeenCalled() + }) + + it('should flush telemetry in finally block', async () => { + setupMocks() + await main.run() + expect(flushTelemetryMock).toHaveBeenCalled() + }) + + it('should report errors to telemetry on failure', async () => { setupMocks() - infoMock.mockImplementationOnce(() => { - throw new Error('oh noes') + infoMock.mockImplementation((msg: string) => { + if (msg.includes('Options:')) throw new Error('oh noes') }) await main.run() + expect(reportErrorMock).toHaveBeenCalled() expect(setFailedMock).toHaveBeenCalled() }) + it('should emit start and exit log events', async () => { + setupMocks() + await main.run({ force: true, installer: 'shell' }) + expect(logEventMock).toHaveBeenCalledWith( + 'setup-elide.start', + expect.objectContaining({ installer: 'shell' }) + ) + expect(logEventMock).toHaveBeenCalledWith( + 'setup-elide.exit', + expect.objectContaining({ status: 'success' }) + ) + }) + + it('should record install duration metric', async () => { + setupMocks() + await main.run({ force: true, installer: 'shell' }) + expect(recordMetricMock).toHaveBeenCalledWith( + 'setup_elide.duration_ms', + expect.any(Number), + 'millisecond', + expect.objectContaining({ installer: 'shell' }) + ) + }) + + it('should wrap install in tracing spans', async () => { + setupMocks() + await main.run({ force: true, installer: 'shell' }) + expect(withSpanMock).toHaveBeenCalledWith( + 'setup-elide', + 'setup', + expect.any(Function) + ) + expect(withSpanMock).toHaveBeenCalledWith( + 'install.shell', + 'install', + expect.any(Function) + ) + expect(withSpanMock).toHaveBeenCalledWith( + 'verify', + 'verify', + expect.any(Function) + ) + }) + + it('should use grouped output', async () => { + setupMocks() + await main.run({ force: true, installer: 'shell' }) + expect(groupMock).toHaveBeenCalledWith( + '⚙️ Resolving options', + expect.any(Function) + ) + expect(groupMock).toHaveBeenCalledWith( + '📦 Installing Elide via shell', + expect.any(Function) + ) + expect(groupMock).toHaveBeenCalledWith( + '✅ Verifying installation', + expect.any(Function) + ) + }) + + it('should write job summary on success', async () => { + setupMocks() + await main.run({ force: true, installer: 'shell' }) + expect(summaryMock.addHeading).toHaveBeenCalledWith('Elide Installed', 2) + expect(summaryMock.write).toHaveBeenCalled() + }) + + it('should write error summary on failure', async () => { + setupMocks() + infoMock.mockImplementation((msg: string) => { + if (msg.includes('Options:')) throw new Error('install boom') + }) + await main.run() + expect(summaryMock.addHeading).toHaveBeenCalledWith('Setup Elide Failed', 2) + expect(summaryMock.addCodeBlock).toHaveBeenCalled() + expect(summaryMock.write).toHaveBeenCalled() + }) + it('should properly detect existing elide binary', async () => { whichMock.mockResolvedValueOnce('/some/path/to/an/elide/bin') const existing = await main.resolveExistingBinary() @@ -168,51 +305,112 @@ describe('action', () => { expect(existing).toBeNull() }) - it('should be able to force installation', async () => { + // --- Installer routing tests --- + + it('should use archive installer by default', async () => { setupMocks() - await main.run({ force: true }) + await main.run({ force: true, installer: 'shell' }) expect(setFailedMock).not.toHaveBeenCalled() expect(setOutputMock).toHaveBeenCalledWith( ActionOutputName.PATH, expect.anything() ) - expect(setOutputMock).toHaveBeenCalledWith( - ActionOutputName.VERSION, - expect.anything() - ) }) - it('should be able to force installation of specific version', async () => { + it('should use shell installer when specified', async () => { setupMocks() - await main.run({ force: true, version: '1.0.0-alpha9' }) + await main.run({ force: true, installer: 'shell' }) expect(setFailedMock).not.toHaveBeenCalled() - expect(setOutputMock).toHaveBeenCalledWith( - ActionOutputName.PATH, - expect.anything() + expect(infoMock).toHaveBeenCalledWith( + expect.stringContaining('install script') ) - expect(setOutputMock).toHaveBeenCalledWith( - ActionOutputName.VERSION, - expect.anything() + }) + + it('should use apt installer when specified on linux', async () => { + setupMocks() + await main.run({ + force: true, + os: 'linux', + arch: 'amd64', + installer: 'apt' + }) + expect(setFailedMock).not.toHaveBeenCalled() + expect(infoMock).toHaveBeenCalledWith(expect.stringContaining('apt')) + }) + + it('should use msi installer on windows', async () => { + setupMocks() + await main.run({ + force: true, + os: 'windows', + arch: 'amd64', + installer: 'msi' + }) + expect(setFailedMock).not.toHaveBeenCalled() + expect(infoMock).toHaveBeenCalledWith(expect.stringContaining('MSI')) + }) + + it('should use pkg installer on darwin', async () => { + setupMocks() + await main.run({ + force: true, + os: 'darwin', + arch: 'aarch64', + installer: 'pkg' + }) + expect(setFailedMock).not.toHaveBeenCalled() + expect(infoMock).toHaveBeenCalledWith(expect.stringContaining('PKG')) + }) + + it('should use rpm installer on linux', async () => { + setupMocks() + await main.run({ + force: true, + os: 'linux', + arch: 'amd64', + installer: 'rpm' + }) + expect(setFailedMock).not.toHaveBeenCalled() + expect(infoMock).toHaveBeenCalledWith(expect.stringContaining('RPM')) + }) + + // --- Validation fallback --- + + it('should warn and fall back to archive for invalid installer/platform combo', async () => { + setupMocks() + await main.run({ + force: true, + os: 'linux', + arch: 'amd64', + version: '1.0.0', + installer: 'msi' + }) + expect(warningMock).toHaveBeenCalledWith( + expect.stringContaining("Installer 'msi' is not supported on linux"), + expect.objectContaining({ title: 'Installer Fallback' }) ) + expect(setFailedMock).not.toHaveBeenCalled() }) - it('should gracefully handle prewarm failure', async () => { + // --- Existing behavior preserved --- + + it('should be able to force installation of specific version', async () => { setupMocks() - prewarmMock.mockRejectedValueOnce(new Error('prewarm boom')) - await main.run({ force: true }) + await main.run({ force: true, version: '1.0.0-alpha9' }) expect(setFailedMock).not.toHaveBeenCalled() - expect(debugMock).toHaveBeenCalledWith( - expect.stringContaining('Prewarm failed; proceeding anyway') + expect(setOutputMock).toHaveBeenCalledWith( + ActionOutputName.PATH, + expect.anything() ) }) - it('should gracefully handle info command failure', async () => { + it('should gracefully handle post-install info failure', async () => { setupMocks() - cmdInfoMock.mockRejectedValue(new Error('info boom')) - await main.run({ force: true }) + elideInfoMock.mockRejectedValueOnce(new Error('info boom')) + await main.run({ force: true, installer: 'shell' }) expect(setFailedMock).not.toHaveBeenCalled() expect(debugMock).toHaveBeenCalledWith( - expect.stringContaining('Info command failed; proceeding anyway') + expect.stringContaining('Post-install info failed; proceeding anyway') ) }) @@ -229,41 +427,22 @@ describe('action', () => { ActionOutputName.VERSION, '1.0.0' ) - expect(infoMock).toHaveBeenCalledWith( - expect.stringContaining('was preserved') + expect(noticeMock).toHaveBeenCalledWith( + expect.stringContaining('preserved'), + expect.objectContaining({ title: 'Already Installed' }) ) }) - it('should install via apt when on debian-like linux', async () => { - setupMocks() - isDebianLikeMock.mockResolvedValue(true) - await main.run({ force: true, os: 'linux', arch: 'amd64' }) - expect(infoMock).toHaveBeenCalledWith( - expect.stringContaining('apt repository') - ) - expect(setFailedMock).not.toHaveBeenCalled() - }) - it('should warn on version mismatch', async () => { setupMocks() - // First call (inside installViaScript) returns the "installed" version, - // second call (main.run verification) returns a different version. obtainVersionMock.mockResolvedValueOnce('1.0.0').mockResolvedValue('9.9.9') - await main.run({ force: true }) + await main.run({ force: true, installer: 'shell' }) expect(warningMock).toHaveBeenCalledWith( - expect.stringContaining('Elide version mismatch') + expect.stringContaining('Elide version mismatch'), + expect.objectContaining({ title: 'Version Mismatch' }) ) }) - it('should use archive download for windows', async () => { - setupMocks() - await main.run({ force: true, os: 'windows', arch: 'amd64' }) - expect(infoMock).toHaveBeenCalledWith( - expect.stringContaining('Windows -- installing via archive') - ) - expect(setFailedMock).not.toHaveBeenCalled() - }) - it('should use downloadRelease for custom_url', async () => { setupMocks() downloadToolMock.mockResolvedValue('/tmp/custom-elide.tgz') @@ -280,7 +459,7 @@ describe('action', () => { it('should not export to path when export_path is false', async () => { setupMocks() - await main.run({ force: true, export_path: false }) + await main.run({ force: true, export_path: false, installer: 'shell' }) expect(addPathMock).not.toHaveBeenCalled() expect(setFailedMock).not.toHaveBeenCalled() }) diff --git a/__tests__/options.test.ts b/__tests__/options.test.ts index 8f191c9..526ee55 100644 --- a/__tests__/options.test.ts +++ b/__tests__/options.test.ts @@ -1,5 +1,10 @@ import { describe, it, expect } from 'bun:test' -import buildOptions, { normalizeArch, normalizeOs } from '../src/options' +import buildOptions, { + normalizeArch, + normalizeOs, + normalizeInstaller, + validateInstallerForPlatform +} from '../src/options' describe('action options', () => { it('should apply sensible defaults', () => { @@ -46,4 +51,75 @@ describe('action options', () => { expect(buildOptions({ export_path: true }).export_path).toBeTruthy() expect(buildOptions({ export_path: false }).export_path).toBeFalsy() }) + it('should default installer to archive', () => { + expect(buildOptions().installer).toEqual('archive') + expect(buildOptions({}).installer).toEqual('archive') + }) + it('should allow overriding installer', () => { + expect(buildOptions({ installer: 'shell' }).installer).toEqual('shell') + expect(buildOptions({ installer: 'msi' }).installer).toEqual('msi') + expect(buildOptions({ installer: 'pkg' }).installer).toEqual('pkg') + expect(buildOptions({ installer: 'apt' }).installer).toEqual('apt') + expect(buildOptions({ installer: 'rpm' }).installer).toEqual('rpm') + }) +}) + +describe('normalizeInstaller', () => { + it('should recognize all valid installer methods', () => { + expect(normalizeInstaller('archive')).toEqual('archive') + expect(normalizeInstaller('shell')).toEqual('shell') + expect(normalizeInstaller('msi')).toEqual('msi') + expect(normalizeInstaller('pkg')).toEqual('pkg') + expect(normalizeInstaller('apt')).toEqual('apt') + expect(normalizeInstaller('rpm')).toEqual('rpm') + }) + it('should be case-insensitive', () => { + expect(normalizeInstaller('ARCHIVE')).toEqual('archive') + expect(normalizeInstaller('Shell')).toEqual('shell') + expect(normalizeInstaller('MSI')).toEqual('msi') + }) + it('should default unknown values to archive', () => { + expect(normalizeInstaller('unknown')).toEqual('archive') + expect(normalizeInstaller('')).toEqual('archive') + expect(normalizeInstaller(' ')).toEqual('archive') + }) +}) + +describe('validateInstallerForPlatform', () => { + it('should allow archive on any platform', () => { + expect(validateInstallerForPlatform('archive', 'linux').valid).toBe(true) + expect(validateInstallerForPlatform('archive', 'darwin').valid).toBe(true) + expect(validateInstallerForPlatform('archive', 'windows').valid).toBe(true) + }) + it('should allow shell on any platform', () => { + expect(validateInstallerForPlatform('shell', 'linux').valid).toBe(true) + expect(validateInstallerForPlatform('shell', 'darwin').valid).toBe(true) + expect(validateInstallerForPlatform('shell', 'windows').valid).toBe(true) + }) + it('should allow msi only on windows', () => { + expect(validateInstallerForPlatform('msi', 'windows').valid).toBe(true) + expect(validateInstallerForPlatform('msi', 'linux').valid).toBe(false) + expect(validateInstallerForPlatform('msi', 'darwin').valid).toBe(false) + }) + it('should allow pkg only on darwin', () => { + expect(validateInstallerForPlatform('pkg', 'darwin').valid).toBe(true) + expect(validateInstallerForPlatform('pkg', 'linux').valid).toBe(false) + expect(validateInstallerForPlatform('pkg', 'windows').valid).toBe(false) + }) + it('should allow apt only on linux', () => { + expect(validateInstallerForPlatform('apt', 'linux').valid).toBe(true) + expect(validateInstallerForPlatform('apt', 'darwin').valid).toBe(false) + expect(validateInstallerForPlatform('apt', 'windows').valid).toBe(false) + }) + it('should allow rpm only on linux', () => { + expect(validateInstallerForPlatform('rpm', 'linux').valid).toBe(true) + expect(validateInstallerForPlatform('rpm', 'darwin').valid).toBe(false) + expect(validateInstallerForPlatform('rpm', 'windows').valid).toBe(false) + }) + it('should include a reason for invalid combinations', () => { + const result = validateInstallerForPlatform('msi', 'linux') + expect(result.valid).toBe(false) + expect(result.reason).toBeDefined() + expect(result.reason).toContain('Windows') + }) }) diff --git a/__tests__/platform.test.ts b/__tests__/platform.test.ts index 86d29b7..1a9774e 100644 --- a/__tests__/platform.test.ts +++ b/__tests__/platform.test.ts @@ -5,7 +5,7 @@ mock.module('node:fs/promises', () => ({ access: mockAccess })) -const { isDebianLike } = await import('../src/platform') +const { isDebianLike, isRpmBased } = await import('../src/platform') describe('platform detection', () => { beforeEach(() => { @@ -22,4 +22,15 @@ describe('platform detection', () => { mockAccess.mockRejectedValueOnce(new Error('ENOENT: no such file')) expect(await isDebianLike()).toBe(false) }) + + it('should return true when /etc/redhat-release exists', async () => { + mockAccess.mockResolvedValueOnce(undefined) + expect(await isRpmBased()).toBe(true) + expect(mockAccess).toHaveBeenCalledWith('/etc/redhat-release') + }) + + it('should return false when /etc/redhat-release does not exist', async () => { + mockAccess.mockRejectedValueOnce(new Error('ENOENT: no such file')) + expect(await isRpmBased()).toBe(false) + }) }) diff --git a/__tests__/releases-download.test.ts b/__tests__/releases-download.test.ts index d876da5..468abc4 100644 --- a/__tests__/releases-download.test.ts +++ b/__tests__/releases-download.test.ts @@ -53,13 +53,11 @@ mock.module('octokit', () => ({ })) mock.module('../src/command', () => ({ obtainVersion: obtainVersionMock, - prewarm: jest.fn(), - info: jest.fn() + elideInfo: jest.fn() })) -const { downloadRelease, resolveLatestVersion } = await import( - '../src/releases' -) +const { downloadRelease, resolveLatestVersion, toSemverCacheKey } = + await import('../src/releases') const { default: buildOptions } = await import('../src/options') describe('resolveLatestVersion', () => { @@ -84,6 +82,59 @@ describe('resolveLatestVersion', () => { expect(getOctokitMock).toHaveBeenCalledWith('ghp_test_token') expect(result.userProvided).toBe(true) }) + + it('should retry on transient failure and succeed', async () => { + requestMock + .mockRejectedValueOnce(new Error('rate limit exceeded')) + .mockResolvedValueOnce({ + data: { tag_name: '2.0.0', name: 'Elide 2.0.0' } + }) + const result = await resolveLatestVersion() + expect(result.tag_name).toBe('2.0.0') + expect(requestMock).toHaveBeenCalledTimes(2) + expect(warningMock).toHaveBeenCalledWith( + expect.stringContaining('Retrying') + ) + }) + + it('should throw after exhausting retries', async () => { + requestMock.mockRejectedValue(new Error('quota exhausted')) + await expect(resolveLatestVersion()).rejects.toThrow('quota exhausted') + expect(requestMock).toHaveBeenCalledTimes(3) + expect(errorMock).toHaveBeenCalledWith( + expect.stringContaining('rate limit'), + expect.objectContaining({ title: 'Rate Limited' }) + ) + }) + + it('should warn when no token is provided', async () => { + await resolveLatestVersion() + expect(warningMock).toHaveBeenCalledWith( + expect.stringContaining('No GitHub token provided') + ) + }) +}) + +describe('toSemverCacheKey', () => { + it('should pass through valid semver', () => { + expect(toSemverCacheKey('1.0.0')).toBe('1.0.0') + expect(toSemverCacheKey('1.0.0-beta10')).toBe('1.0.0-beta10') + expect(toSemverCacheKey('1.0.0-alpha9')).toBe('1.0.0-alpha9') + expect(toSemverCacheKey('2.1.3')).toBe('2.1.3') + }) + + it('should convert nightly tags to semver prerelease', () => { + expect(toSemverCacheKey('nightly-20260328')).toBe('0.0.0-nightly.20260328') + expect(toSemverCacheKey('nightly-2026-03-28')).toBe( + '0.0.0-nightly.20260328' + ) + expect(toSemverCacheKey('nightly-20251231')).toBe('0.0.0-nightly.20251231') + }) + + it('should pass through unknown formats unchanged', () => { + expect(toSemverCacheKey('dev')).toBe('dev') + expect(toSemverCacheKey('custom-build')).toBe('custom-build') + }) }) describe('downloadRelease', () => { @@ -396,6 +447,59 @@ describe('downloadRelease', () => { expect(downloadToolMock).not.toHaveBeenCalled() }) + it('nightly versions should use semver cache keys', async () => { + findMock.mockReturnValue('') + requestMock.mockResolvedValue({ + data: { tag_name: 'nightly-20260328', name: 'Nightly' } + }) + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: 'latest' + }) + await downloadRelease(options) + + // find should be called with the semver cache key, not the raw tag + expect(findMock).toHaveBeenCalledWith( + 'elide', + '0.0.0-nightly.20260328', + 'amd64' + ) + // cacheDir should also use the semver key + expect(cacheDirMock).toHaveBeenCalledWith( + expect.any(String), + 'elide', + '0.0.0-nightly.20260328', + 'amd64' + ) + }) + + it('second run with nightly should hit cache', async () => { + findMock.mockReturnValue( + '/cache/tools/elide/0.0.0-nightly.20260328/amd64' + ) + requestMock.mockResolvedValue({ + data: { tag_name: 'nightly-20260328', name: 'Nightly' } + }) + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: 'latest' + }) + const result = await downloadRelease(options) + + expect(findMock).toHaveBeenCalledWith( + 'elide', + '0.0.0-nightly.20260328', + 'amd64' + ) + expect(downloadToolMock).not.toHaveBeenCalled() + expect(result.cached).toBe(true) + expect(result.elideBin).toBe( + '/cache/tools/elide/0.0.0-nightly.20260328/amd64/bin' + ) + }) + it('different architectures should not share cache', async () => { findMock.mockImplementation( (_name: string, _version: string, arch: string) => { @@ -415,15 +519,4 @@ describe('downloadRelease', () => { expect(findMock).toHaveBeenCalledWith('elide', '1.0.0', 'aarch64') }) }) - - it('should not wrap with directory root for alpha7/alpha8', async () => { - const options = buildOptions({ - os: 'linux', - arch: 'amd64', - version: '1.0.0-alpha7' - }) - const result = await downloadRelease(options) - // alpha7 has the early-return path in unpackRelease - expect(result).toBeDefined() - }) }) diff --git a/__tests__/releases.test.ts b/__tests__/releases.test.ts index a05ef9a..320b937 100644 --- a/__tests__/releases.test.ts +++ b/__tests__/releases.test.ts @@ -10,8 +10,14 @@ mock.module('@actions/io', () => ({ mkdirP: jest.fn() })) -const { resolveLatestVersion, buildDownloadUrl, ArchiveType, cdnOs, cdnArch } = - await import('../src/releases') +const { + resolveLatestVersion, + buildDownloadUrl, + buildCdnAssetUrl, + ArchiveType, + cdnOs, + cdnArch +} = await import('../src/releases') const { default: buildOptions } = await import('../src/options') describe('elide release', () => { @@ -42,6 +48,45 @@ describe('CDN platform mapping', () => { }) }) +describe('buildCdnAssetUrl', () => { + it('should append ?source=gha', () => { + const options = buildOptions({ + os: 'linux', + arch: 'amd64', + version: '1.0.0', + channel: 'release' + }) + const url = buildCdnAssetUrl(options, 'tgz') + expect(url.toString()).toBe( + 'https://elide.zip/artifacts/release/1.0.0/elide.linux-amd64.tgz?source=gha' + ) + }) + + it('should work for non-archive extensions', () => { + const options = buildOptions({ + os: 'windows', + arch: 'amd64', + version: '1.0.0', + channel: 'release' + }) + expect(buildCdnAssetUrl(options, 'msi').toString()).toBe( + 'https://elide.zip/artifacts/release/1.0.0/elide.windows-amd64.msi?source=gha' + ) + }) + + it('should use latest as revision when version is latest', () => { + const options = buildOptions({ + os: 'darwin', + arch: 'aarch64', + version: 'latest' + }) + const url = buildCdnAssetUrl(options, 'pkg') + expect(url.toString()).toBe( + 'https://elide.zip/artifacts/nightly/latest/elide.macos-arm64.pkg?source=gha' + ) + }) +}) + describe('buildDownloadUrl', () => { beforeEach(() => { whichMock.mockClear() @@ -57,12 +102,9 @@ describe('buildDownloadUrl', () => { version: '1.0.0', channel: 'release' }) - const { url } = await buildDownloadUrl(options, { - tag_name: '1.0.0', - userProvided: true - }) + const { url } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/release/1.0.0/elide.linux-amd64.tgz' + 'https://elide.zip/artifacts/release/1.0.0/elide.linux-amd64.tgz?source=gha' ) }) @@ -73,12 +115,9 @@ describe('buildDownloadUrl', () => { version: '1.0.0', channel: 'release' }) - const { url } = await buildDownloadUrl(options, { - tag_name: '1.0.0', - userProvided: true - }) + const { url } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/release/1.0.0/elide.macos-arm64.tgz' + 'https://elide.zip/artifacts/release/1.0.0/elide.macos-arm64.tgz?source=gha' ) }) @@ -89,12 +128,9 @@ describe('buildDownloadUrl', () => { version: '1.0.0', channel: 'release' }) - const { url } = await buildDownloadUrl(options, { - tag_name: '1.0.0', - userProvided: true - }) + const { url } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/release/1.0.0/elide.macos-amd64.tgz' + 'https://elide.zip/artifacts/release/1.0.0/elide.macos-amd64.tgz?source=gha' ) }) @@ -105,12 +141,9 @@ describe('buildDownloadUrl', () => { version: '1.0.0', channel: 'release' }) - const { url, archiveType } = await buildDownloadUrl(options, { - tag_name: '1.0.0', - userProvided: true - }) + const { url, archiveType } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/release/1.0.0/elide.windows-amd64.zip' + 'https://elide.zip/artifacts/release/1.0.0/elide.windows-amd64.zip?source=gha' ) expect(archiveType).toBe(ArchiveType.ZIP) }) @@ -124,12 +157,9 @@ describe('buildDownloadUrl', () => { version: '1.0.0-beta10', channel: 'release' }) - const { url } = await buildDownloadUrl(options, { - tag_name: '1.0.0-beta10', - userProvided: true - }) + const { url } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/release/1.0.0-beta10/elide.linux-amd64.tgz' + 'https://elide.zip/artifacts/release/1.0.0-beta10/elide.linux-amd64.tgz?source=gha' ) }) @@ -140,12 +170,9 @@ describe('buildDownloadUrl', () => { version: '1.0.0-alpha7', channel: 'release' }) - const { url } = await buildDownloadUrl(options, { - tag_name: '1.0.0-alpha7', - userProvided: true - }) + const { url } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/release/1.0.0-alpha7/elide.macos-arm64.tgz' + 'https://elide.zip/artifacts/release/1.0.0-alpha7/elide.macos-arm64.tgz?source=gha' ) }) @@ -157,12 +184,9 @@ describe('buildDownloadUrl', () => { arch: 'amd64', version: '1.0.0' }) - const { url } = await buildDownloadUrl(options, { - tag_name: '1.0.0', - userProvided: true - }) + const { url } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/nightly/1.0.0/elide.linux-amd64.tgz' + 'https://elide.zip/artifacts/nightly/1.0.0/elide.linux-amd64.tgz?source=gha' ) }) @@ -172,12 +196,9 @@ describe('buildDownloadUrl', () => { arch: 'amd64', version: 'latest' }) - const { url } = await buildDownloadUrl(options, { - tag_name: 'ignored', - userProvided: false - }) + const { url } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/nightly/latest/elide.linux-amd64.tgz' + 'https://elide.zip/artifacts/nightly/latest/elide.linux-amd64.tgz?source=gha' ) }) @@ -190,12 +211,9 @@ describe('buildDownloadUrl', () => { version: 'latest', channel: 'preview' }) - const { url } = await buildDownloadUrl(options, { - tag_name: 'ignored', - userProvided: false - }) + const { url } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/preview/latest/elide.macos-arm64.tgz' + 'https://elide.zip/artifacts/preview/latest/elide.macos-arm64.tgz?source=gha' ) }) @@ -207,12 +225,9 @@ describe('buildDownloadUrl', () => { arch: 'amd64', version: 'latest' }) - const { url, archiveType } = await buildDownloadUrl(options, { - tag_name: 'ignored', - userProvided: false - }) + const { url, archiveType } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/nightly/latest/elide.windows-amd64.zip' + 'https://elide.zip/artifacts/nightly/latest/elide.windows-amd64.zip?source=gha' ) expect(archiveType).toBe(ArchiveType.ZIP) }) @@ -225,12 +240,9 @@ describe('buildDownloadUrl', () => { version: '1.0.0', channel: 'release' }) - const { url, archiveType } = await buildDownloadUrl(options, { - tag_name: '1.0.0', - userProvided: true - }) + const { url, archiveType } = await buildDownloadUrl(options) expect(url.toString()).toBe( - 'https://elide.zip/artifacts/release/1.0.0/elide.linux-amd64.txz' + 'https://elide.zip/artifacts/release/1.0.0/elide.linux-amd64.txz?source=gha' ) expect(archiveType).toBe(ArchiveType.TXZ) }) diff --git a/__tests__/telemetry.test.ts b/__tests__/telemetry.test.ts new file mode 100644 index 0000000..1867bfa --- /dev/null +++ b/__tests__/telemetry.test.ts @@ -0,0 +1,251 @@ +import { describe, it, expect, beforeEach, jest, mock } from 'bun:test' + +const initMock = jest.fn() +const setTagsMock = jest.fn() +const captureExceptionMock = jest.fn() +const captureMessageMock = jest.fn() +const withScopeMock = jest.fn((cb: (scope: any) => void) => { + cb({ setTag: jest.fn() }) +}) +const startSpanMock = jest.fn((_opts: any, fn: () => Promise) => fn()) +const metricsGaugeMock = jest.fn() +const flushMock = jest.fn().mockResolvedValue(true) + +mock.module('@sentry/node', () => ({ + init: initMock, + setTags: setTagsMock, + captureException: captureExceptionMock, + captureMessage: captureMessageMock, + withScope: withScopeMock, + startSpan: startSpanMock, + metrics: { gauge: metricsGaugeMock }, + flush: flushMock +})) + +const { + initTelemetry, + reportError, + flushTelemetry, + withSpan, + recordMetric, + logEvent +} = await import('../src/telemetry') +const { default: buildOptions } = await import('../src/options') + +describe('telemetry', () => { + beforeEach(() => { + initMock.mockClear() + setTagsMock.mockClear() + captureExceptionMock.mockClear() + captureMessageMock.mockClear() + withScopeMock.mockClear() + startSpanMock.mockClear() + metricsGaugeMock.mockClear() + flushMock.mockClear() + }) + + it('should not initialize Sentry when disabled', () => { + const options = buildOptions({}) + initTelemetry(false, options) + expect(initMock).not.toHaveBeenCalled() + }) + + it('should initialize Sentry when enabled', () => { + const options = buildOptions({ channel: 'nightly', os: 'linux' }) + initTelemetry(true, options) + expect(initMock).toHaveBeenCalledWith( + expect.objectContaining({ + defaultIntegrations: false, + environment: 'nightly', + tracesSampleRate: 1.0 + }) + ) + }) + + it('should set action config tags on init', () => { + const options = buildOptions({ + installer: 'shell', + os: 'darwin', + arch: 'aarch64', + channel: 'release', + version: '1.0.0' + }) + initTelemetry(true, options) + expect(setTagsMock).toHaveBeenCalledWith( + expect.objectContaining({ + installer: 'shell', + os: 'darwin', + arch: 'aarch64', + channel: 'release', + version: '1.0.0' + }) + ) + }) + + it('should strip sensitive data in beforeSend', () => { + const options = buildOptions({}) + initTelemetry(true, options) + + const beforeSend = initMock.mock.calls[0][0].beforeSend + const event = { + message: 'test error', + server_name: 'runner-abc123', + extra: { SECRET_KEY: 'leaked' }, + user: { id: 'user123' }, + request: { url: 'https://internal' }, + contexts: { os: { name: 'Linux' } } + } + + const scrubbed = beforeSend(event) + expect(scrubbed.message).toBe('test error') + expect(scrubbed.server_name).toBeUndefined() + expect(scrubbed.extra).toBeUndefined() + expect(scrubbed.user).toBeUndefined() + expect(scrubbed.request).toBeUndefined() + expect(scrubbed.contexts).toEqual({}) + }) + + it('should strip sensitive data in beforeSendTransaction', () => { + const options = buildOptions({}) + initTelemetry(true, options) + + const beforeSendTransaction = + initMock.mock.calls[0][0].beforeSendTransaction + const event = { + server_name: 'runner-abc', + extra: { leak: true }, + contexts: { something: {} } + } + + const scrubbed = beforeSendTransaction(event) + expect(scrubbed.server_name).toBeUndefined() + expect(scrubbed.extra).toBeUndefined() + expect(scrubbed.contexts).toEqual({}) + }) + + it('should scrub exception values of env var secrets', () => { + const originalToken = process.env.GITHUB_TOKEN + process.env.GITHUB_TOKEN = 'ghp_superSecretTokenValue123' + try { + const options = buildOptions({}) + initTelemetry(true, options) + + const beforeSend = initMock.mock.calls[0][0].beforeSend + const event = { + exception: { + values: [ + { value: 'Failed to fetch ghp_superSecretTokenValue123' }, + { value: 'another error' } + ] + }, + message: 'Error with ghp_superSecretTokenValue123 in message' + } + + const scrubbed = beforeSend(event) + expect(scrubbed.exception.values[0].value).toBe( + 'Failed to fetch [REDACTED]' + ) + expect(scrubbed.exception.values[1].value).toBe('another error') + expect(scrubbed.message).toBe('Error with [REDACTED] in message') + } finally { + if (originalToken) { + process.env.GITHUB_TOKEN = originalToken + } else { + delete process.env.GITHUB_TOKEN + } + } + }) + + it('should report errors via captureException', () => { + const options = buildOptions({}) + initTelemetry(true, options) + reportError(new Error('install failed')) + expect(withScopeMock).toHaveBeenCalled() + }) + + it('should report errors with context tags', () => { + const options = buildOptions({}) + initTelemetry(true, options) + + const setTagMock = jest.fn() + withScopeMock.mockImplementation((cb: (scope: any) => void) => { + cb({ setTag: setTagMock }) + }) + + reportError(new Error('fail'), { phase: 'download' }) + expect(setTagMock).toHaveBeenCalledWith('phase', 'download') + }) + + it('should not report errors when disabled', () => { + initTelemetry(false, buildOptions({})) + reportError(new Error('should not send')) + expect(withScopeMock).not.toHaveBeenCalled() + }) + + // --- Tracing --- + + it('withSpan should call Sentry.startSpan when enabled', async () => { + initTelemetry(true, buildOptions({})) + const result = await withSpan('test-op', 'test', async () => 42) + expect(result).toBe(42) + expect(startSpanMock).toHaveBeenCalledWith( + expect.objectContaining({ name: 'test-op', op: 'test' }), + expect.any(Function) + ) + }) + + it('withSpan should run function directly when disabled', async () => { + initTelemetry(false, buildOptions({})) + const result = await withSpan('test-op', 'test', async () => 99) + expect(result).toBe(99) + expect(startSpanMock).not.toHaveBeenCalled() + }) + + // --- Metrics --- + + it('recordMetric should call metrics.gauge when enabled', () => { + initTelemetry(true, buildOptions({})) + recordMetric('install_duration', 1500, 'millisecond', { os: 'linux' }) + expect(metricsGaugeMock).toHaveBeenCalledWith('install_duration', 1500, { + unit: 'millisecond', + tags: { os: 'linux' } + }) + }) + + it('recordMetric should no-op when disabled', () => { + initTelemetry(false, buildOptions({})) + recordMetric('install_duration', 1500, 'millisecond') + expect(metricsGaugeMock).not.toHaveBeenCalled() + }) + + // --- Logging --- + + it('logEvent should call captureMessage when enabled', () => { + initTelemetry(true, buildOptions({})) + logEvent('setup-elide.start', { installer: 'shell' }) + expect(captureMessageMock).toHaveBeenCalledWith('setup-elide.start', { + level: 'info', + tags: { installer: 'shell' } + }) + }) + + it('logEvent should no-op when disabled', () => { + initTelemetry(false, buildOptions({})) + logEvent('setup-elide.start') + expect(captureMessageMock).not.toHaveBeenCalled() + }) + + // --- Flush --- + + it('should flush pending events', async () => { + initTelemetry(true, buildOptions({})) + await flushTelemetry() + expect(flushMock).toHaveBeenCalledWith(2000) + }) + + it('should not flush when disabled', async () => { + initTelemetry(false, buildOptions({})) + await flushTelemetry() + expect(flushMock).not.toHaveBeenCalled() + }) +}) diff --git a/action.yml b/action.yml index de12a90..3dfb0ae 100644 --- a/action.yml +++ b/action.yml @@ -24,7 +24,12 @@ inputs: description: 'Architecture' required: false - target: + installer: + description: 'Installation method: archive, shell, msi, pkg, apt, or rpm' + required: false + default: 'archive' + + install_path: description: 'Custom install path' required: false @@ -35,20 +40,46 @@ inputs: export_path: description: 'Export to Path' required: false - default: true + default: 'true' + + no_cache: + description: 'Disable tool caching' + required: false + default: 'false' + + telemetry: + description: 'Enable anonymous error telemetry' + required: false + default: 'true' custom_url: description: 'Custom Download URL' required: false + version_tag: + description: 'Version tag for custom download URL' + required: false + token: description: 'GitHub Token' required: false + default: ${{ github.token }} outputs: path: description: 'Path to Elide' + version: + description: 'Installed Elide version' + + cached: + description: 'Whether a cached installation was used' + + installer: + description: 'Effective installer method used' + runs: using: node24 main: dist/index.js + post: dist/post.js + post-if: always() diff --git a/bun.lock b/bun.lock index f48be5b..f74f4cd 100644 --- a/bun.lock +++ b/bun.lock @@ -12,6 +12,7 @@ "@actions/http-client": "4.0.0", "@actions/io": "3.0.2", "@actions/tool-cache": "4.0.0", + "@sentry/node": "^10.46.0", "octokit": "5.0.5", }, "devDependencies": { @@ -128,6 +129,8 @@ "@conventional-changelog/git-client": ["@conventional-changelog/git-client@2.6.0", "", { "dependencies": { "@simple-libs/child-process-utils": "^1.0.0", "@simple-libs/stream-utils": "^1.2.0", "semver": "^7.5.2" }, "peerDependencies": { "conventional-commits-filter": "^5.0.0", "conventional-commits-parser": "^6.3.0" }, "optionalPeers": ["conventional-commits-filter", "conventional-commits-parser"] }, "sha512-T+uPDciKf0/ioNNDpMGc8FDsehJClZP0yR3Q5MN6wE/Y/1QZ7F+80OgznnTCOlMEG4AV0LvH2UJi3C/nBnaBUg=="], + "@fastify/otel": ["@fastify/otel@0.17.1", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.212.0", "@opentelemetry/semantic-conventions": "^1.28.0", "minimatch": "^10.2.4" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0" } }, "sha512-K4wyxfUZx2ux5o+b6BtTqouYFVILohLZmSbA2tKUueJstNcBnoGPVhllCaOvbQ3ZrXdUxUC/fyrSWSCqHhdOPg=="], + "@octokit/app": ["@octokit/app@16.1.2", "", { "dependencies": { "@octokit/auth-app": "^8.1.2", "@octokit/auth-unauthenticated": "^7.0.3", "@octokit/core": "^7.0.6", "@octokit/oauth-app": "^8.0.3", "@octokit/plugin-paginate-rest": "^14.0.0", "@octokit/types": "^16.0.0", "@octokit/webhooks": "^14.0.0" } }, "sha512-8j7sEpUYVj18dxvh0KWj6W/l6uAiVRBl1JBDVRqH1VHKAO/G5eRVl4yEoYACjakWers1DjUkcCHyJNQK47JqyQ=="], "@octokit/auth-app": ["@octokit/auth-app@8.2.0", "", { "dependencies": { "@octokit/auth-oauth-app": "^9.0.3", "@octokit/auth-oauth-user": "^6.0.2", "@octokit/request": "^10.0.6", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "toad-cache": "^3.7.0", "universal-github-app-jwt": "^2.2.0", "universal-user-agent": "^7.0.0" } }, "sha512-vVjdtQQwomrZ4V46B9LaCsxsySxGoHsyw6IYBov/TqJVROrlYdyNgw5q6tQbB7KZt53v1l1W53RiqTvpzL907g=="], @@ -178,6 +181,70 @@ "@octokit/webhooks-methods": ["@octokit/webhooks-methods@6.0.0", "", {}, "sha512-MFlzzoDJVw/GcbfzVC1RLR36QqkTLUf79vLVO3D+xn7r0QgxnFoLZgtrzxiQErAjFUOdH6fas2KeQJ1yr/qaXQ=="], + "@opentelemetry/api": ["@opentelemetry/api@1.9.1", "", {}, "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q=="], + + "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.213.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw=="], + + "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@2.6.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-XHzhwRNkBpeP8Fs/qjGrAf9r9PRv67wkJQ/7ZPaBQQ68DYlTBBx5MF9LvPx7mhuXcDessKK2b+DcxqwpgkcivQ=="], + + "@opentelemetry/core": ["@opentelemetry/core@2.6.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g=="], + + "@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.213.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.213.0", "import-in-the-middle": "^3.0.0", "require-in-the-middle": "^8.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-3i9NdkET/KvQomeh7UaR/F4r9P25Rx6ooALlWXPIjypcEOUxksCmVu0zA70NBJWlrMW1rPr/LRidFAflLI+s/w=="], + + "@opentelemetry/instrumentation-amqplib": ["@opentelemetry/instrumentation-amqplib@0.60.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.33.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-q/B2IvoVXRm1M00MvhnzpMN6rKYOszPXVsALi6u0ss4AYHe+TidZEtLW9N1ZhrobI1dSriHnBqqtAOZVAv07sg=="], + + "@opentelemetry/instrumentation-connect": ["@opentelemetry/instrumentation-connect@0.56.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-PKp+sSZ7AfzMvGgO3VCyo1inwNu+q7A1k9X88WK4PQ+S6Hp7eFk8pie+sWHDTaARovmqq5V2osav3lQej2B0nw=="], + + "@opentelemetry/instrumentation-dataloader": ["@opentelemetry/instrumentation-dataloader@0.30.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-MXHP2Q38cd2OhzEBKAIXUi9uBlPEYzF6BNJbyjUXBQ6kLaf93kRC41vNMIz0Nl5mnuwK7fDvKT+/lpx7BXRwdg=="], + + "@opentelemetry/instrumentation-express": ["@opentelemetry/instrumentation-express@0.61.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Xdmqo9RZuZlL29Flg8QdwrrX7eW1CZ7wFQPKHyXljNymgKhN1MCsYuqQ/7uxavhSKwAl7WxkTzKhnqpUApLMvQ=="], + + "@opentelemetry/instrumentation-fs": ["@opentelemetry/instrumentation-fs@0.32.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-koR6apx0g0wX6RRiPpjA4AFQUQUbXrK16kq4/SZjVp7u5cffJhNkY4TnITxcGA4acGSPYAfx3NHRIv4Khn1axQ=="], + + "@opentelemetry/instrumentation-generic-pool": ["@opentelemetry/instrumentation-generic-pool@0.56.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-fg+Jffs6fqrf0uQS0hom7qBFKsbtpBiBl8+Vkc63Gx8xh6pVh+FhagmiO6oM0m3vyb683t1lP7yGYq22SiDnqg=="], + + "@opentelemetry/instrumentation-graphql": ["@opentelemetry/instrumentation-graphql@0.61.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-pUiVASv6nh2XrerTvlbVHh7vKFzscpgwiQ/xvnZuAIzQ5lRjWVdRPUuXbvZJ/Yq79QsE81TZdJ7z9YsXiss1ew=="], + + "@opentelemetry/instrumentation-hapi": ["@opentelemetry/instrumentation-hapi@0.59.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-33wa4mEr+9+ztwdgLor1SeBu4Opz4IsmpcLETXAd3VmBrOjez8uQtrsOhPCa5Vhbm5gzDlMYTgFRLQzf8/YHFA=="], + + "@opentelemetry/instrumentation-http": ["@opentelemetry/instrumentation-http@0.213.0", "", { "dependencies": { "@opentelemetry/core": "2.6.0", "@opentelemetry/instrumentation": "0.213.0", "@opentelemetry/semantic-conventions": "^1.29.0", "forwarded-parse": "2.1.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-B978Xsm5XEPGhm1P07grDoaOFLHapJPkOG9h016cJsyWWxmiLnPu2M/4Nrm7UCkHSiLnkXgC+zVGUAIahy8EEA=="], + + "@opentelemetry/instrumentation-ioredis": ["@opentelemetry/instrumentation-ioredis@0.61.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/redis-common": "^0.38.2", "@opentelemetry/semantic-conventions": "^1.33.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-hsHDadUtAFbws1YSDc1XW0svGFKiUbqv2td1Cby+UAiwvojm1NyBo/taifH0t8CuFZ0x/2SDm0iuTwrM5pnVOg=="], + + "@opentelemetry/instrumentation-kafkajs": ["@opentelemetry/instrumentation-kafkajs@0.22.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-wJU4IBQMUikdJAcTChLFqK5lo+flo7pahqd8DSLv7uMxsdOdAHj6RzKYAm8pPfUS6ItKYutYyuicwKaFwQKsoA=="], + + "@opentelemetry/instrumentation-knex": ["@opentelemetry/instrumentation-knex@0.57.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.33.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-vMCSh8kolEm5rRsc+FZeTZymWmIJwc40hjIKnXH4O0Dv/gAkJJIRXCsPX5cPbe0c0j/34+PsENd0HqKruwhVYw=="], + + "@opentelemetry/instrumentation-koa": ["@opentelemetry/instrumentation-koa@0.61.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.36.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0" } }, "sha512-lvrfWe9ShK/D2X4brmx8ZqqeWPfRl8xekU0FCn7C1dHm5k6+rTOOi36+4fnaHAP8lig9Ux6XQ1D4RNIpPCt1WQ=="], + + "@opentelemetry/instrumentation-lru-memoizer": ["@opentelemetry/instrumentation-lru-memoizer@0.57.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-cEqpUocSKJfwDtLYTTJehRLWzkZ2eoePCxfVIgGkGkb83fMB71O+y4MvRHJPbeV2bdoWdOVrl8uO0+EynWhTEA=="], + + "@opentelemetry/instrumentation-mongodb": ["@opentelemetry/instrumentation-mongodb@0.66.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.33.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-d7m9QnAY+4TCWI4q1QRkfrc6fo/92VwssaB1DzQfXNRvu51b78P+HJlWP7Qg6N6nkwdb9faMZNBCZJfftmszkw=="], + + "@opentelemetry/instrumentation-mongoose": ["@opentelemetry/instrumentation-mongoose@0.59.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.33.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-6/jWU+c1NgznkVLDU/2y0bXV2nJo3o9FWZ9mZ9nN6T/JBNRoMnVXZl2FdBmgH+a5MwaWLs5kmRJTP5oUVGIkPw=="], + + "@opentelemetry/instrumentation-mysql": ["@opentelemetry/instrumentation-mysql@0.59.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.33.0", "@types/mysql": "2.15.27" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-r+V/Fh0sm7Ga8/zk/TI5H5FQRAjwr0RrpfPf8kNIehlsKf12XnvIaZi8ViZkpX0gyPEpLXqzqWD6QHlgObgzZw=="], + + "@opentelemetry/instrumentation-mysql2": ["@opentelemetry/instrumentation-mysql2@0.59.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.33.0", "@opentelemetry/sql-common": "^0.41.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-n9/xrVCRBfG9egVbffnlU1uhr+HX0vF4GgtAB/Bvm48wpFgRidqD8msBMiym1kRYzmpWvJqTxNT47u1MkgBEdw=="], + + "@opentelemetry/instrumentation-pg": ["@opentelemetry/instrumentation-pg@0.65.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.34.0", "@opentelemetry/sql-common": "^0.41.2", "@types/pg": "8.15.6", "@types/pg-pool": "2.0.7" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-W0zpHEIEuyZ8zvb3njaX9AAbHgPYOsSWVOoWmv1sjVRSF6ZpBqtlxBWbU+6hhq1TFWBeWJOXZ8nZS/PUFpLJYQ=="], + + "@opentelemetry/instrumentation-redis": ["@opentelemetry/instrumentation-redis@0.61.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/redis-common": "^0.38.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-JnPexA034/0UJRsvH96B0erQoNOqKJZjE2ZRSw9hiTSC23LzE0nJE/u6D+xqOhgUhRnhhcPHq4MdYtmUdYTF+Q=="], + + "@opentelemetry/instrumentation-tedious": ["@opentelemetry/instrumentation-tedious@0.32.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.33.0", "@types/tedious": "^4.0.14" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-BQS6gG8RJ1foEqfEZ+wxoqlwfCAzb1ZVG0ad8Gfe4x8T658HJCLGLd4E4NaoQd8EvPfLqOXgzGaE/2U4ytDSWA=="], + + "@opentelemetry/instrumentation-undici": ["@opentelemetry/instrumentation-undici@0.23.0", "", { "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/semantic-conventions": "^1.24.0" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" } }, "sha512-LL0VySzKVR2cJSFVZaTYpZl1XTpBGnfzoQPe2W7McS2267ldsaEIqtQY6VXs2KCXN0poFjze5110PIpxHDaDGg=="], + + "@opentelemetry/redis-common": ["@opentelemetry/redis-common@0.38.2", "", {}, "sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA=="], + + "@opentelemetry/resources": ["@opentelemetry/resources@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-lID/vxSuKWXM55XhAKNoYXu9Cutoq5hFdkbTdI/zDKQktXzcWBVhNsOkiZFTMU9UtEWuGRNe0HUgmsFldIdxVA=="], + + "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/resources": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-r86ut4T1e8vNwB35CqCcKd45yzqH6/6Wzvpk2/cZB8PsPLlZFTvrh8yfOS3CYZYcUmAx4hHTZJ8AO8Dj8nrdhw=="], + + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.40.0", "", {}, "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw=="], + + "@opentelemetry/sql-common": ["@opentelemetry/sql-common@0.41.2", "", { "dependencies": { "@opentelemetry/core": "^2.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" } }, "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ=="], + "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.57.0", "", { "os": "android", "cpu": "arm" }, "sha512-C7EiyfAJG4B70496eV543nKiq5cH0o/xIh/ufbjQz3SIvHhlDDsyn+mRFh+aW8KskTyUpyH2LGWL8p2oN6bl1A=="], "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.57.0", "", { "os": "android", "cpu": "arm64" }, "sha512-9i80AresjZ/FZf5xK8tKFbhQnijD4s1eOZw6/FHUwD59HEZbVLRc2C88ADYJfLZrF5XofWDiRX/Ja9KefCLy7w=="], @@ -216,10 +283,20 @@ "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.57.0", "", { "os": "win32", "cpu": "x64" }, "sha512-6PuxhYgth8TuW0+ABPOIkGdBYw+qYGxgIdXPHSVpiCDm+hqTTWCmC739St1Xni0DJBt8HnSHTG67i1y6gr8qrA=="], + "@prisma/instrumentation": ["@prisma/instrumentation@7.4.2", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.207.0" }, "peerDependencies": { "@opentelemetry/api": "^1.8" } }, "sha512-r9JfchJF1Ae6yAxcaLu/V1TGqBhAuSDe3mRNOssBfx1rMzfZ4fdNvrgUBwyb/TNTGXFxlH9AZix5P257x07nrg=="], + "@protobuf-ts/runtime": ["@protobuf-ts/runtime@2.11.1", "", {}, "sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ=="], "@protobuf-ts/runtime-rpc": ["@protobuf-ts/runtime-rpc@2.11.1", "", { "dependencies": { "@protobuf-ts/runtime": "2.11.1" } }, "sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ=="], + "@sentry/core": ["@sentry/core@10.46.0", "", {}, "sha512-N3fj4zqBQOhXliS1Ne9euqIKuciHCGOJfPGQLwBoW9DNz03jF+NB8+dUKtrJ79YLoftjVgf8nbgwtADK7NR+2Q=="], + + "@sentry/node": ["@sentry/node@10.46.0", "", { "dependencies": { "@fastify/otel": "0.17.1", "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^2.6.0", "@opentelemetry/core": "^2.6.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/instrumentation-amqplib": "0.60.0", "@opentelemetry/instrumentation-connect": "0.56.0", "@opentelemetry/instrumentation-dataloader": "0.30.0", "@opentelemetry/instrumentation-express": "0.61.0", "@opentelemetry/instrumentation-fs": "0.32.0", "@opentelemetry/instrumentation-generic-pool": "0.56.0", "@opentelemetry/instrumentation-graphql": "0.61.0", "@opentelemetry/instrumentation-hapi": "0.59.0", "@opentelemetry/instrumentation-http": "0.213.0", "@opentelemetry/instrumentation-ioredis": "0.61.0", "@opentelemetry/instrumentation-kafkajs": "0.22.0", "@opentelemetry/instrumentation-knex": "0.57.0", "@opentelemetry/instrumentation-koa": "0.61.0", "@opentelemetry/instrumentation-lru-memoizer": "0.57.0", "@opentelemetry/instrumentation-mongodb": "0.66.0", "@opentelemetry/instrumentation-mongoose": "0.59.0", "@opentelemetry/instrumentation-mysql": "0.59.0", "@opentelemetry/instrumentation-mysql2": "0.59.0", "@opentelemetry/instrumentation-pg": "0.65.0", "@opentelemetry/instrumentation-redis": "0.61.0", "@opentelemetry/instrumentation-tedious": "0.32.0", "@opentelemetry/instrumentation-undici": "0.23.0", "@opentelemetry/resources": "^2.6.0", "@opentelemetry/sdk-trace-base": "^2.6.0", "@opentelemetry/semantic-conventions": "^1.40.0", "@prisma/instrumentation": "7.4.2", "@sentry/core": "10.46.0", "@sentry/node-core": "10.46.0", "@sentry/opentelemetry": "10.46.0", "import-in-the-middle": "^3.0.0" } }, "sha512-vF+7FrUXEtmYWuVcnvBjlWKeyLw/kwHpwnGj9oUmO/a2uKjDmUr53ZVcapggNxCjivavGYr9uHOY64AGdeUyzA=="], + + "@sentry/node-core": ["@sentry/node-core@10.46.0", "", { "dependencies": { "@sentry/core": "10.46.0", "@sentry/opentelemetry": "10.46.0", "import-in-the-middle": "^3.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/instrumentation": ">=0.57.1 <1", "@opentelemetry/resources": "^1.30.1 || ^2.1.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/semantic-conventions": "^1.39.0" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/context-async-hooks", "@opentelemetry/core", "@opentelemetry/instrumentation", "@opentelemetry/resources", "@opentelemetry/sdk-trace-base", "@opentelemetry/semantic-conventions"] }, "sha512-gwLGXfkzmiCmUI1VWttyoZBaVp1ItpDKc8AV2mQblWPQGdLSD0c6uKV/FkU291yZA3rXsrLXVwcWoibwnjE2vw=="], + + "@sentry/opentelemetry": ["@sentry/opentelemetry@10.46.0", "", { "dependencies": { "@sentry/core": "10.46.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0", "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/semantic-conventions": "^1.39.0" } }, "sha512-dzzV2ovruGsx9jzusGGr6cNPvMgYRu2BIrF8aMZ3rkQ1OpPJjPStqtA1l1fw0aoxHOxIjFU7ml4emF+xdmMl3g=="], + "@simple-libs/child-process-utils": ["@simple-libs/child-process-utils@1.0.2", "", { "dependencies": { "@simple-libs/stream-utils": "^1.2.0" } }, "sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw=="], "@simple-libs/stream-utils": ["@simple-libs/stream-utils@1.2.0", "", {}, "sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA=="], @@ -228,10 +305,24 @@ "@types/bun": ["@types/bun@1.3.11", "", { "dependencies": { "bun-types": "1.3.11" } }, "sha512-5vPne5QvtpjGpsGYXiFyycfpDF2ECyPcTSsFBMa0fraoxiQyMJ3SmuQIGhzPg2WJuWxVBoxWJ2kClYTcw/4fAg=="], + "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + + "@types/mysql": ["@types/mysql@2.15.27", "", { "dependencies": { "@types/node": "*" } }, "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA=="], + "@types/node": ["@types/node@25.5.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw=="], + "@types/pg": ["@types/pg@8.15.6", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ=="], + + "@types/pg-pool": ["@types/pg-pool@2.0.7", "", { "dependencies": { "@types/pg": "*" } }, "sha512-U4CwmGVQcbEuqpyju8/ptOKg6gEC+Tqsvj2xS9o1g71bUh8twxnC6ZL5rZKCsGN0iyH0CwgUyc9VR5owNQF9Ng=="], + + "@types/tedious": ["@types/tedious@4.0.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw=="], + "@typespec/ts-http-runtime": ["@typespec/ts-http-runtime@0.3.2", "", { "dependencies": { "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", "tslib": "2.8.1" } }, "sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg=="], + "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], + + "acorn-import-attributes": ["acorn-import-attributes@1.9.5", "", { "peerDependencies": { "acorn": "^8" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="], + "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "3.1.3", "fast-uri": "3.0.6", "json-schema-traverse": "1.0.0", "require-from-string": "2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], @@ -256,6 +347,8 @@ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + "cjs-module-lexer": ["cjs-module-lexer@2.2.0", "", {}, "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ=="], + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "4.2.3", "strip-ansi": "6.0.1", "wrap-ansi": "7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], @@ -298,6 +391,8 @@ "fast-xml-parser": ["fast-xml-parser@5.3.1", "", { "dependencies": { "strnum": "2.1.1" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-jbNkWiv2Ec1A7wuuxk0br0d0aTMUtQ4IkL+l/i1r9PRf6pLXjDgsBsWwO+UyczmQlnehi4Tbc8/KIvxGQe+I/A=="], + "forwarded-parse": ["forwarded-parse@2.1.2", "", {}, "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="], + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], "git-raw-commits": ["git-raw-commits@5.0.1", "", { "dependencies": { "@conventional-changelog/git-client": "^2.6.0", "meow": "^13.0.0" }, "bin": { "git-raw-commits": "src/cli.js" } }, "sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ=="], @@ -312,6 +407,8 @@ "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "1.0.1", "resolve-from": "4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + "import-in-the-middle": ["import-in-the-middle@3.0.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^2.2.0", "module-details-from-path": "^1.0.4" } }, "sha512-OnGy+eYT7wVejH2XWgLRgbmzujhhVIATQH0ztIeRilwHBjTeG3pD+XnH3PKX0r9gJ0BuJmJ68q/oh9qgXnNDQg=="], + "import-meta-resolve": ["import-meta-resolve@4.1.0", "", {}, "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw=="], "ini": ["ini@4.1.1", "", {}, "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g=="], @@ -356,6 +453,8 @@ "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], + "module-details-from-path": ["module-details-from-path@1.0.4", "", {}, "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="], + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "octokit": ["octokit@5.0.5", "", { "dependencies": { "@octokit/app": "^16.1.2", "@octokit/core": "^7.0.6", "@octokit/oauth-app": "^8.0.3", "@octokit/plugin-paginate-graphql": "^6.0.0", "@octokit/plugin-paginate-rest": "^14.0.0", "@octokit/plugin-rest-endpoint-methods": "^17.0.0", "@octokit/plugin-retry": "^8.0.3", "@octokit/plugin-throttling": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "@octokit/webhooks": "^14.0.0" } }, "sha512-4+/OFSqOjoyULo7eN7EA97DE0Xydj/PW5aIckxqQIoFjFwqXKuFCvXUJObyJfBF9Khu4RL/jlDRI9FPaMGfPnw=="], @@ -366,12 +465,28 @@ "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "7.26.2", "error-ex": "1.3.2", "json-parse-even-better-errors": "2.3.1", "lines-and-columns": "1.2.4" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], + "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], + + "pg-protocol": ["pg-protocol@1.13.0", "", {}, "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w=="], + + "pg-types": ["pg-types@2.2.0", "", { "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" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + "postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], + + "postgres-bytea": ["postgres-bytea@1.0.1", "", {}, "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ=="], + + "postgres-date": ["postgres-date@1.0.7", "", {}, "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="], + + "postgres-interval": ["postgres-interval@1.2.0", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="], + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + "require-in-the-middle": ["require-in-the-middle@8.0.1", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3" } }, "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ=="], + "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], @@ -402,6 +517,8 @@ "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "4.3.0", "string-width": "4.2.3", "strip-ansi": "6.0.1" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], + "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "8.0.1", "escalade": "3.2.0", "get-caller-file": "2.0.5", "require-directory": "2.1.1", "string-width": "4.2.3", "y18n": "5.0.8", "yargs-parser": "21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], @@ -410,12 +527,32 @@ "@actions/github/@actions/http-client": ["@actions/http-client@3.0.2", "", { "dependencies": { "tunnel": "^0.0.6", "undici": "^6.23.0" } }, "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA=="], + "@fastify/otel/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.212.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.212.0", "import-in-the-middle": "^2.0.6", "require-in-the-middle": "^8.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-IyXmpNnifNouMOe0I/gX7ENfv2ZCNdYTF0FpCsoBcpbIHzk81Ww9rQTYTnvghszCg7qGrIhNvWC8dhEifgX9Jg=="], + + "@fastify/otel/minimatch": ["minimatch@10.2.4", "", { "dependencies": { "brace-expansion": "^5.0.2" } }, "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg=="], + + "@opentelemetry/instrumentation-http/@opentelemetry/core": ["@opentelemetry/core@2.6.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-HLM1v2cbZ4TgYN6KEOj+Bbj8rAKriOdkF9Ed3tG25FoprSiQl7kYc+RRT6fUZGOvx0oMi5U67GoFdT+XUn8zEg=="], + + "@prisma/instrumentation/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.207.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.207.0", "import-in-the-middle": "^2.0.0", "require-in-the-middle": "^8.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-y6eeli9+TLKnznrR8AZlQMSJT7wILpXH+6EYq5Vf/4Ao+huI7EedxQHwRgVUOMLFbe7VFDvHJrX9/f4lcwnJsA=="], + "cosmiconfig-typescript-loader/cosmiconfig": ["cosmiconfig@9.0.0", "", { "dependencies": { "env-paths": "2.2.1", "import-fresh": "3.3.1", "js-yaml": "4.1.0", "parse-json": "5.2.0" }, "optionalDependencies": { "typescript": "5.9.3" } }, "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg=="], "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + "@fastify/otel/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.212.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-TEEVrLbNROUkYY51sBJGk7lO/OLjuepch8+hmpM6ffMJQ2z/KVCjdHuCFX6fJj8OkJP2zckPjrJzQtXU3IAsFg=="], + + "@fastify/otel/@opentelemetry/instrumentation/import-in-the-middle": ["import-in-the-middle@2.0.6", "", { "dependencies": { "acorn": "^8.15.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^2.2.0", "module-details-from-path": "^1.0.4" } }, "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw=="], + + "@fastify/otel/minimatch/brace-expansion": ["brace-expansion@5.0.5", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ=="], + + "@prisma/instrumentation/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.207.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-lAb0jQRVyleQQGiuuvCOTDVspc14nx6XJjP4FspJ1sNARo3Regq4ZZbrc3rN4b1TYSuUCvgH+UXUPug4SLOqEQ=="], + + "@prisma/instrumentation/@opentelemetry/instrumentation/import-in-the-middle": ["import-in-the-middle@2.0.6", "", { "dependencies": { "acorn": "^8.15.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^2.2.0", "module-details-from-path": "^1.0.4" } }, "sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw=="], + "cosmiconfig-typescript-loader/cosmiconfig/js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], "cosmiconfig-typescript-loader/cosmiconfig/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "@fastify/otel/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], } } diff --git a/codecov-bundle.json b/codecov-bundle.json new file mode 100644 index 0000000..ae547f0 --- /dev/null +++ b/codecov-bundle.json @@ -0,0 +1,4 @@ +{ + "ignorePatterns": ["*.map"], + "normalizeAssetsPattern": "[name].js" +} diff --git a/dist/index.js b/dist/index.js index 20cff1d..8df590f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,51 +1,88 @@ -import{createRequire as f8}from"node:module";var x8=Object.create;var{getPrototypeOf:O8,defineProperty:nU,getOwnPropertyNames:P8}=Object;var q8=Object.prototype.hasOwnProperty;function y8(A){return this[A]}var h8,k8,RB=(A,Q,B)=>{var I=A!=null&&typeof A==="object";if(I){var E=Q?h8??=new WeakMap:k8??=new WeakMap,C=E.get(A);if(C)return C}B=A!=null?x8(O8(A)):{};let g=Q||!A||!A.__esModule?nU(B,"default",{value:A,enumerable:!0}):B;for(let F of P8(A))if(!q8.call(g,F))nU(g,F,{get:y8.bind(A,F),enumerable:!0});if(I)E.set(A,g);return g};var W=(A,Q)=>()=>(Q||A((Q={exports:{}}).exports,Q),Q.exports);var z=f8(import.meta.url);var m0=W((o8)=>{var Fb=z("net"),d8=z("tls"),v0=z("http"),eU=z("https"),l8=z("events"),Db=z("assert"),p8=z("util");o8.httpOverHttp=i8;o8.httpsOverHttp=n8;o8.httpOverHttps=a8;o8.httpsOverHttps=s8;function i8(A){var Q=new AB(A);return Q.request=v0.request,Q}function n8(A){var Q=new AB(A);return Q.request=v0.request,Q.createSocket=AG,Q.defaultPort=443,Q}function a8(A){var Q=new AB(A);return Q.request=eU.request,Q}function s8(A){var Q=new AB(A);return Q.request=eU.request,Q.createSocket=AG,Q.defaultPort=443,Q}function AB(A){var Q=this;Q.options=A||{},Q.proxyOptions=Q.options.proxy||{},Q.maxSockets=Q.options.maxSockets||v0.Agent.defaultMaxSockets,Q.requests=[],Q.sockets=[],Q.on("free",function(I,E,C,g){var F=QG(E,C,g);for(var D=0,J=Q.requests.length;D=this.maxSockets){C.requests.push(g);return}C.createSocket(g,function(F){F.on("free",D),F.on("close",J),F.on("agentRemove",J),Q.onSocket(F);function D(){C.emit("free",F,g)}function J(Y){C.removeSocket(F),F.removeListener("free",D),F.removeListener("close",J),F.removeListener("agentRemove",J)}})};AB.prototype.createSocket=function(Q,B){var I=this,E={};I.sockets.push(E);var C=b0({},I.proxyOptions,{method:"CONNECT",path:Q.host+":"+Q.port,agent:!1,headers:{host:Q.host+":"+Q.port}});if(Q.localAddress)C.localAddress=Q.localAddress;if(C.proxyAuth)C.headers=C.headers||{},C.headers["Proxy-Authorization"]="Basic "+new Buffer(C.proxyAuth).toString("base64");KB("making CONNECT request");var g=I.request(C);g.useChunkedEncodingByDefault=!1,g.once("response",F),g.once("upgrade",D),g.once("connect",J),g.once("error",Y),g.end();function F(U){U.upgrade=!0}function D(U,N,w){process.nextTick(function(){J(U,N,w)})}function J(U,N,w){if(g.removeAllListeners(),N.removeAllListeners(),U.statusCode!==200){KB("tunneling socket could not be established, statusCode=%d",U.statusCode),N.destroy();var L=Error("tunneling socket could not be established, statusCode="+U.statusCode);L.code="ECONNRESET",Q.request.emit("error",L),I.removeSocket(E);return}if(w.length>0){KB("got illegal response body from proxy"),N.destroy();var L=Error("got illegal response body from proxy");L.code="ECONNRESET",Q.request.emit("error",L),I.removeSocket(E);return}return KB("tunneling connection has established"),I.sockets[I.sockets.indexOf(E)]=N,B(N)}function Y(U){g.removeAllListeners(),KB(`tunneling socket could not be established, cause=%s -`,U.message,U.stack);var N=Error("tunneling socket could not be established, cause="+U.message);N.code="ECONNRESET",Q.request.emit("error",N),I.removeSocket(E)}};AB.prototype.removeSocket=function(Q){var B=this.sockets.indexOf(Q);if(B===-1)return;this.sockets.splice(B,1);var I=this.requests.shift();if(I)this.createSocket(I,function(E){I.request.onSocket(E)})};function AG(A,Q){var B=this;AB.prototype.createSocket.call(B,A,function(I){var E=A.request.getHeader("host"),C=b0({},B.options,{socket:I,servername:E?E.replace(/:.*$/,""):A.host}),g=d8.connect(0,C);B.sockets[B.sockets.indexOf(I)]=g,Q(g)})}function QG(A,Q,B){if(typeof A==="string")return{host:A,port:Q,localAddress:B};return A}function b0(A){for(var Q=1,B=arguments.length;Q{BG.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}});var r=W((Ub,sG)=>{var IG=Symbol.for("undici.error.UND_ERR");class WA extends Error{constructor(A){super(A);this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](A){return A&&A[IG]===!0}[IG]=!0}var EG=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT");class TG extends WA{constructor(A){super(A);this.name="ConnectTimeoutError",this.message=A||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[EG]===!0}[EG]=!0}var CG=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT");class _G extends WA{constructor(A){super(A);this.name="HeadersTimeoutError",this.message=A||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[CG]===!0}[CG]=!0}var gG=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW");class jG extends WA{constructor(A){super(A);this.name="HeadersOverflowError",this.message=A||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](A){return A&&A[gG]===!0}[gG]=!0}var FG=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT");class xG extends WA{constructor(A){super(A);this.name="BodyTimeoutError",this.message=A||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[FG]===!0}[FG]=!0}var DG=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE");class OG extends WA{constructor(A,Q,B,I){super(A);this.name="ResponseStatusCodeError",this.message=A||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=I,this.status=Q,this.statusCode=Q,this.headers=B}static[Symbol.hasInstance](A){return A&&A[DG]===!0}[DG]=!0}var YG=Symbol.for("undici.error.UND_ERR_INVALID_ARG");class PG extends WA{constructor(A){super(A);this.name="InvalidArgumentError",this.message=A||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](A){return A&&A[YG]===!0}[YG]=!0}var JG=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE");class qG extends WA{constructor(A){super(A);this.name="InvalidReturnValueError",this.message=A||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](A){return A&&A[JG]===!0}[JG]=!0}var UG=Symbol.for("undici.error.UND_ERR_ABORT");class u0 extends WA{constructor(A){super(A);this.name="AbortError",this.message=A||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](A){return A&&A[UG]===!0}[UG]=!0}var GG=Symbol.for("undici.error.UND_ERR_ABORTED");class yG extends u0{constructor(A){super(A);this.name="AbortError",this.message=A||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](A){return A&&A[GG]===!0}[GG]=!0}var NG=Symbol.for("undici.error.UND_ERR_INFO");class hG extends WA{constructor(A){super(A);this.name="InformationalError",this.message=A||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](A){return A&&A[NG]===!0}[NG]=!0}var MG=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH");class kG extends WA{constructor(A){super(A);this.name="RequestContentLengthMismatchError",this.message=A||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[MG]===!0}[MG]=!0}var wG=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH");class fG extends WA{constructor(A){super(A);this.name="ResponseContentLengthMismatchError",this.message=A||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[wG]===!0}[wG]=!0}var WG=Symbol.for("undici.error.UND_ERR_DESTROYED");class vG extends WA{constructor(A){super(A);this.name="ClientDestroyedError",this.message=A||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](A){return A&&A[WG]===!0}[WG]=!0}var LG=Symbol.for("undici.error.UND_ERR_CLOSED");class bG extends WA{constructor(A){super(A);this.name="ClientClosedError",this.message=A||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](A){return A&&A[LG]===!0}[LG]=!0}var VG=Symbol.for("undici.error.UND_ERR_SOCKET");class mG extends WA{constructor(A,Q){super(A);this.name="SocketError",this.message=A||"Socket error",this.code="UND_ERR_SOCKET",this.socket=Q}static[Symbol.hasInstance](A){return A&&A[VG]===!0}[VG]=!0}var ZG=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED");class uG extends WA{constructor(A){super(A);this.name="NotSupportedError",this.message=A||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](A){return A&&A[ZG]===!0}[ZG]=!0}var RG=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM");class cG extends WA{constructor(A){super(A);this.name="MissingUpstreamError",this.message=A||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](A){return A&&A[RG]===!0}[RG]=!0}var XG=Symbol.for("undici.error.UND_ERR_HTTP_PARSER");class dG extends Error{constructor(A,Q,B){super(A);this.name="HTTPParserError",this.code=Q?`HPE_${Q}`:void 0,this.data=B?B.toString():void 0}static[Symbol.hasInstance](A){return A&&A[XG]===!0}[XG]=!0}var KG=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE");class lG extends WA{constructor(A){super(A);this.name="ResponseExceededMaxSizeError",this.message=A||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](A){return A&&A[KG]===!0}[KG]=!0}var zG=Symbol.for("undici.error.UND_ERR_REQ_RETRY");class pG extends WA{constructor(A,Q,{headers:B,data:I}){super(A);this.name="RequestRetryError",this.message=A||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=Q,this.data=I,this.headers=B}static[Symbol.hasInstance](A){return A&&A[zG]===!0}[zG]=!0}var SG=Symbol.for("undici.error.UND_ERR_RESPONSE");class iG extends WA{constructor(A,Q,{headers:B,data:I}){super(A);this.name="ResponseError",this.message=A||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=Q,this.data=I,this.headers=B}static[Symbol.hasInstance](A){return A&&A[SG]===!0}[SG]=!0}var $G=Symbol.for("undici.error.UND_ERR_PRX_TLS");class nG extends WA{constructor(A,Q,B){super(Q,{cause:A,...B??{}});this.name="SecureProxyConnectionError",this.message=Q||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=A}static[Symbol.hasInstance](A){return A&&A[$G]===!0}[$G]=!0}var HG=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");class aG extends WA{constructor(A){super(A);this.name="MessageSizeExceededError",this.message=A||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](A){return A&&A[HG]===!0}get[HG](){return!0}}sG.exports={AbortError:u0,HTTPParserError:dG,UndiciError:WA,HeadersTimeoutError:_G,HeadersOverflowError:jG,BodyTimeoutError:xG,RequestContentLengthMismatchError:kG,ConnectTimeoutError:TG,ResponseStatusCodeError:OG,InvalidArgumentError:PG,InvalidReturnValueError:qG,RequestAbortedError:yG,ClientDestroyedError:vG,ClientClosedError:bG,InformationalError:hG,SocketError:mG,NotSupportedError:uG,ResponseContentLengthMismatchError:fG,BalancedPoolMissingUpstreamError:cG,ResponseExceededMaxSizeError:lG,RequestRetryError:pG,ResponseError:iG,SecureProxyConnectionError:nG,MessageSizeExceededError:aG}});var Dg=W((Gb,oG)=>{var Fg={},c0=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let A=0;A{var{wellknownHeaderNames:rG,headerNameLowerCasedRecord:B4}=Dg();class TI{value=null;left=null;middle=null;right=null;code;constructor(A,Q,B){if(B===void 0||B>=A.length)throw TypeError("Unreachable");if((this.code=A.charCodeAt(B))>127)throw TypeError("key must be ascii string");if(A.length!==++B)this.middle=new TI(A,Q,B);else this.value=Q}add(A,Q){let B=A.length;if(B===0)throw TypeError("Unreachable");let I=0,E=this;while(!0){let C=A.charCodeAt(I);if(C>127)throw TypeError("key must be ascii string");if(E.code===C)if(B===++I){E.value=Q;break}else if(E.middle!==null)E=E.middle;else{E.middle=new TI(A,Q,I);break}else if(E.code=65)E|=32;while(I!==null){if(E===I.code){if(Q===++B)return I;I=I.middle;break}I=I.code{var xE=z("node:assert"),{kDestroyed:BN,kBodyUsed:_I,kListeners:l0,kBody:QN}=GA(),{IncomingMessage:I4}=z("node:http"),Jg=z("node:stream"),E4=z("node:net"),{Blob:C4}=z("node:buffer"),g4=z("node:util"),{stringify:F4}=z("node:querystring"),{EventEmitter:D4}=z("node:events"),{InvalidArgumentError:$A}=r(),{headerNameLowerCasedRecord:Y4}=Dg(),{tree:IN}=AN(),[J4,U4]=process.versions.node.split(".").map((A)=>Number(A));class p0{constructor(A){this[QN]=A,this[_I]=!1}async*[Symbol.asyncIterator](){xE(!this[_I],"disturbed"),this[_I]=!0,yield*this[QN]}}function G4(A){if(Ug(A)){if(DN(A)===0)A.on("data",function(){xE(!1)});if(typeof A.readableDidRead!=="boolean")A[_I]=!1,D4.prototype.on.call(A,"data",function(){this[_I]=!0});return A}else if(A&&typeof A.pipeTo==="function")return new p0(A);else if(A&&typeof A!=="string"&&!ArrayBuffer.isView(A)&&FN(A))return new p0(A);else return A}function N4(){}function Ug(A){return A&&typeof A==="object"&&typeof A.pipe==="function"&&typeof A.on==="function"}function EN(A){if(A===null)return!1;else if(A instanceof C4)return!0;else if(typeof A!=="object")return!1;else{let Q=A[Symbol.toStringTag];return(Q==="Blob"||Q==="File")&&(("stream"in A)&&typeof A.stream==="function"||("arrayBuffer"in A)&&typeof A.arrayBuffer==="function")}}function M4(A,Q){if(A.includes("?")||A.includes("#"))throw Error('Query params cannot be passed when url already contains "?" or "#".');let B=F4(Q);if(B)A+="?"+B;return A}function CN(A){let Q=parseInt(A,10);return Q===Number(A)&&Q>=0&&Q<=65535}function Yg(A){return A!=null&&A[0]==="h"&&A[1]==="t"&&A[2]==="t"&&A[3]==="p"&&(A[4]===":"||A[4]==="s"&&A[5]===":")}function gN(A){if(typeof A==="string"){if(A=new URL(A),!Yg(A.origin||A.protocol))throw new $A("Invalid URL protocol: the URL must start with `http:` or `https:`.");return A}if(!A||typeof A!=="object")throw new $A("Invalid URL: The URL argument must be a non-null object.");if(!(A instanceof URL)){if(A.port!=null&&A.port!==""&&CN(A.port)===!1)throw new $A("Invalid URL: port must be a valid integer or a string representation of an integer.");if(A.path!=null&&typeof A.path!=="string")throw new $A("Invalid URL path: the path must be a string or null/undefined.");if(A.pathname!=null&&typeof A.pathname!=="string")throw new $A("Invalid URL pathname: the pathname must be a string or null/undefined.");if(A.hostname!=null&&typeof A.hostname!=="string")throw new $A("Invalid URL hostname: the hostname must be a string or null/undefined.");if(A.origin!=null&&typeof A.origin!=="string")throw new $A("Invalid URL origin: the origin must be a string or null/undefined.");if(!Yg(A.origin||A.protocol))throw new $A("Invalid URL protocol: the URL must start with `http:` or `https:`.");let Q=A.port!=null?A.port:A.protocol==="https:"?443:80,B=A.origin!=null?A.origin:`${A.protocol||""}//${A.hostname||""}:${Q}`,I=A.path!=null?A.path:`${A.pathname||""}${A.search||""}`;if(B[B.length-1]==="/")B=B.slice(0,B.length-1);if(I&&I[0]!=="/")I=`/${I}`;return new URL(`${B}${I}`)}if(!Yg(A.origin||A.protocol))throw new $A("Invalid URL protocol: the URL must start with `http:` or `https:`.");return A}function w4(A){if(A=gN(A),A.pathname!=="/"||A.search||A.hash)throw new $A("invalid url");return A}function W4(A){if(A[0]==="["){let B=A.indexOf("]");return xE(B!==-1),A.substring(1,B)}let Q=A.indexOf(":");if(Q===-1)return A;return A.substring(0,Q)}function L4(A){if(!A)return null;xE(typeof A==="string");let Q=W4(A);if(E4.isIP(Q))return"";return Q}function V4(A){return JSON.parse(JSON.stringify(A))}function Z4(A){return A!=null&&typeof A[Symbol.asyncIterator]==="function"}function FN(A){return A!=null&&(typeof A[Symbol.iterator]==="function"||typeof A[Symbol.asyncIterator]==="function")}function DN(A){if(A==null)return 0;else if(Ug(A)){let Q=A._readableState;return Q&&Q.objectMode===!1&&Q.ended===!0&&Number.isFinite(Q.length)?Q.length:null}else if(EN(A))return A.size!=null?A.size:null;else if(UN(A))return A.byteLength;return null}function YN(A){return A&&!!(A.destroyed||A[BN]||Jg.isDestroyed?.(A))}function R4(A,Q){if(A==null||!Ug(A)||YN(A))return;if(typeof A.destroy==="function"){if(Object.getPrototypeOf(A).constructor===I4)A.socket=null;A.destroy(Q)}else if(Q)queueMicrotask(()=>{A.emit("error",Q)});if(A.destroyed!==!0)A[BN]=!0}var X4=/timeout=(\d+)/;function K4(A){let Q=A.toString().match(X4);return Q?parseInt(Q[1],10)*1000:null}function JN(A){return typeof A==="string"?Y4[A]??A.toLowerCase():IN.lookup(A)??A.toString("latin1").toLowerCase()}function z4(A){return IN.lookup(A)??A.toString("latin1").toLowerCase()}function S4(A,Q){if(Q===void 0)Q={};for(let B=0;Bg.toString("utf8")):C.toString("utf8")}}if("content-length"in Q&&"content-disposition"in Q)Q["content-disposition"]=Buffer.from(Q["content-disposition"]).toString("latin1");return Q}function $4(A){let Q=A.length,B=Array(Q),I=!1,E=-1,C,g,F=0;for(let D=0;D{B.close(),B.byobRequest?.respond(0)});else{let C=Buffer.isBuffer(E)?E:Buffer.from(E);if(C.byteLength)B.enqueue(new Uint8Array(C))}return B.desiredSize>0},async cancel(B){await Q.return()},type:"bytes"})}function P4(A){return A&&typeof A==="object"&&typeof A.append==="function"&&typeof A.delete==="function"&&typeof A.get==="function"&&typeof A.getAll==="function"&&typeof A.has==="function"&&typeof A.set==="function"&&A[Symbol.toStringTag]==="FormData"}function q4(A,Q){if("addEventListener"in A)return A.addEventListener("abort",Q,{once:!0}),()=>A.removeEventListener("abort",Q);return A.addListener("abort",Q),()=>A.removeListener("abort",Q)}var y4=typeof String.prototype.toWellFormed==="function",h4=typeof String.prototype.isWellFormed==="function";function GN(A){return y4?`${A}`.toWellFormed():g4.toUSVString(A)}function k4(A){return h4?`${A}`.isWellFormed():GN(A)===`${A}`}function NN(A){switch(A){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return A>=33&&A<=126}}function f4(A){if(A.length===0)return!1;for(let Q=0;Q{var QA=z("node:diagnostics_channel"),a0=z("node:util"),Gg=a0.debuglog("undici"),n0=a0.debuglog("fetch"),sB=a0.debuglog("websocket"),LN=!1,l4={beforeConnect:QA.channel("undici:client:beforeConnect"),connected:QA.channel("undici:client:connected"),connectError:QA.channel("undici:client:connectError"),sendHeaders:QA.channel("undici:client:sendHeaders"),create:QA.channel("undici:request:create"),bodySent:QA.channel("undici:request:bodySent"),headers:QA.channel("undici:request:headers"),trailers:QA.channel("undici:request:trailers"),error:QA.channel("undici:request:error"),open:QA.channel("undici:websocket:open"),close:QA.channel("undici:websocket:close"),socketError:QA.channel("undici:websocket:socket_error"),ping:QA.channel("undici:websocket:ping"),pong:QA.channel("undici:websocket:pong")};if(Gg.enabled||n0.enabled){let A=n0.enabled?n0:Gg;QA.channel("undici:client:beforeConnect").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:E,host:C}}=Q;A("connecting to %s using %s%s",`${C}${E?`:${E}`:""}`,I,B)}),QA.channel("undici:client:connected").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:E,host:C}}=Q;A("connected to %s using %s%s",`${C}${E?`:${E}`:""}`,I,B)}),QA.channel("undici:client:connectError").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:E,host:C},error:g}=Q;A("connection to %s using %s%s errored - %s",`${C}${E?`:${E}`:""}`,I,B,g.message)}),QA.channel("undici:client:sendHeaders").subscribe((Q)=>{let{request:{method:B,path:I,origin:E}}=Q;A("sending request to %s %s/%s",B,E,I)}),QA.channel("undici:request:headers").subscribe((Q)=>{let{request:{method:B,path:I,origin:E},response:{statusCode:C}}=Q;A("received response to %s %s/%s - HTTP %d",B,E,I,C)}),QA.channel("undici:request:trailers").subscribe((Q)=>{let{request:{method:B,path:I,origin:E}}=Q;A("trailers received from %s %s/%s",B,E,I)}),QA.channel("undici:request:error").subscribe((Q)=>{let{request:{method:B,path:I,origin:E},error:C}=Q;A("request to %s %s/%s errored - %s",B,E,I,C.message)}),LN=!0}if(sB.enabled){if(!LN){let A=Gg.enabled?Gg:sB;QA.channel("undici:client:beforeConnect").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:E,host:C}}=Q;A("connecting to %s%s using %s%s",C,E?`:${E}`:"",I,B)}),QA.channel("undici:client:connected").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:E,host:C}}=Q;A("connected to %s%s using %s%s",C,E?`:${E}`:"",I,B)}),QA.channel("undici:client:connectError").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:E,host:C},error:g}=Q;A("connection to %s%s using %s%s errored - %s",C,E?`:${E}`:"",I,B,g.message)}),QA.channel("undici:client:sendHeaders").subscribe((Q)=>{let{request:{method:B,path:I,origin:E}}=Q;A("sending request to %s %s/%s",B,E,I)})}QA.channel("undici:websocket:open").subscribe((A)=>{let{address:{address:Q,port:B}}=A;sB("connection opened %s%s",Q,B?`:${B}`:"")}),QA.channel("undici:websocket:close").subscribe((A)=>{let{websocket:Q,code:B,reason:I}=A;sB("closed connection to %s - %s %s",Q.url,B,I)}),QA.channel("undici:websocket:socket_error").subscribe((A)=>{sB("connection errored - %s",A.message)}),QA.channel("undici:websocket:ping").subscribe((A)=>{sB("ping received")}),QA.channel("undici:websocket:pong").subscribe((A)=>{sB("pong received")})}VN.exports={channels:l4}});var zN=W((Wb,KN)=>{var{InvalidArgumentError:FA,NotSupportedError:p4}=r(),QB=z("node:assert"),{isValidHTTPToken:RN,isValidHeaderValue:s0,isStream:i4,destroy:n4,isBuffer:a4,isFormDataLike:s4,isIterable:o4,isBlobLike:r4,buildURL:t4,validateHandler:e4,getServerName:Az,normalizedMethodRecords:Qz}=p(),{channels:kQ}=jI(),{headerNameLowerCasedRecord:ZN}=Dg(),Bz=/[^\u0021-\u00ff]/,GQ=Symbol("handler");class XN{constructor(A,{path:Q,method:B,body:I,headers:E,query:C,idempotent:g,blocking:F,upgrade:D,headersTimeout:J,bodyTimeout:Y,reset:U,throwOnError:N,expectContinue:w,servername:L},S){if(typeof Q!=="string")throw new FA("path must be a string");else if(Q[0]!=="/"&&!(Q.startsWith("http://")||Q.startsWith("https://"))&&B!=="CONNECT")throw new FA("path must be an absolute URL or start with a slash");else if(Bz.test(Q))throw new FA("invalid request path");if(typeof B!=="string")throw new FA("method must be a string");else if(Qz[B]===void 0&&!RN(B))throw new FA("invalid request method");if(D&&typeof D!=="string")throw new FA("upgrade must be a string");if(D&&!s0(D))throw new FA("invalid upgrade header");if(J!=null&&(!Number.isFinite(J)||J<0))throw new FA("invalid headersTimeout");if(Y!=null&&(!Number.isFinite(Y)||Y<0))throw new FA("invalid bodyTimeout");if(U!=null&&typeof U!=="boolean")throw new FA("invalid reset");if(w!=null&&typeof w!=="boolean")throw new FA("invalid expectContinue");if(this.headersTimeout=J,this.bodyTimeout=Y,this.throwOnError=N===!0,this.method=B,this.abort=null,I==null)this.body=null;else if(i4(I)){this.body=I;let Z=this.body._readableState;if(!Z||!Z.autoDestroy)this.endHandler=function(){n4(this)},this.body.on("end",this.endHandler);this.errorHandler=(R)=>{if(this.abort)this.abort(R);else this.error=R},this.body.on("error",this.errorHandler)}else if(a4(I))this.body=I.byteLength?I:null;else if(ArrayBuffer.isView(I))this.body=I.buffer.byteLength?Buffer.from(I.buffer,I.byteOffset,I.byteLength):null;else if(I instanceof ArrayBuffer)this.body=I.byteLength?Buffer.from(I):null;else if(typeof I==="string")this.body=I.length?Buffer.from(I):null;else if(s4(I)||o4(I)||r4(I))this.body=I;else throw new FA("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=D||null,this.path=C?t4(Q,C):Q,this.origin=A,this.idempotent=g==null?B==="HEAD"||B==="GET":g,this.blocking=F==null?!1:F,this.reset=U==null?null:U,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=w!=null?w:!1,Array.isArray(E)){if(E.length%2!==0)throw new FA("headers array must be even");for(let Z=0;Z{var Iz=z("node:events");class o0 extends Iz{dispatch(){throw Error("not implemented")}close(){throw Error("not implemented")}destroy(){throw Error("not implemented")}compose(...A){let Q=Array.isArray(A[0])?A[0]:A,B=this.dispatch.bind(this);for(let I of Q){if(I==null)continue;if(typeof I!=="function")throw TypeError(`invalid interceptor, expected function received ${typeof I}`);if(B=I(B),B==null||typeof B!=="function"||B.length!==2)throw TypeError("invalid interceptor")}return new SN(this,B)}}class SN extends o0{#A=null;#Q=null;constructor(A,Q){super();this.#A=A,this.#Q=Q}dispatch(...A){this.#Q(...A)}close(...A){return this.#A.close(...A)}destroy(...A){return this.#A.destroy(...A)}}$N.exports=o0});var qI=W((Vb,TN)=>{var Ez=OE(),{ClientDestroyedError:r0,ClientClosedError:Cz,InvalidArgumentError:xI}=r(),{kDestroy:gz,kClose:Fz,kClosed:PE,kDestroyed:OI,kDispatch:t0,kInterceptors:oB}=GA(),BB=Symbol("onDestroyed"),PI=Symbol("onClosed"),Mg=Symbol("Intercepted Dispatch");class HN extends Ez{constructor(){super();this[OI]=!1,this[BB]=null,this[PE]=!1,this[PI]=[]}get destroyed(){return this[OI]}get closed(){return this[PE]}get interceptors(){return this[oB]}set interceptors(A){if(A){for(let Q=A.length-1;Q>=0;Q--)if(typeof this[oB][Q]!=="function")throw new xI("interceptor must be an function")}this[oB]=A}close(A){if(A===void 0)return new Promise((B,I)=>{this.close((E,C)=>{return E?I(E):B(C)})});if(typeof A!=="function")throw new xI("invalid callback");if(this[OI]){queueMicrotask(()=>A(new r0,null));return}if(this[PE]){if(this[PI])this[PI].push(A);else queueMicrotask(()=>A(null,null));return}this[PE]=!0,this[PI].push(A);let Q=()=>{let B=this[PI];this[PI]=null;for(let I=0;Ithis.destroy()).then(()=>{queueMicrotask(Q)})}destroy(A,Q){if(typeof A==="function")Q=A,A=null;if(Q===void 0)return new Promise((I,E)=>{this.destroy(A,(C,g)=>{return C?E(C):I(g)})});if(typeof Q!=="function")throw new xI("invalid callback");if(this[OI]){if(this[BB])this[BB].push(Q);else queueMicrotask(()=>Q(null,null));return}if(!A)A=new r0;this[OI]=!0,this[BB]=this[BB]||[],this[BB].push(Q);let B=()=>{let I=this[BB];this[BB]=null;for(let E=0;E{queueMicrotask(B)})}[Mg](A,Q){if(!this[oB]||this[oB].length===0)return this[Mg]=this[t0],this[t0](A,Q);let B=this[t0].bind(this);for(let I=this[oB].length-1;I>=0;I--)B=this[oB][I](B);return this[Mg]=B,B(A,Q)}dispatch(A,Q){if(!Q||typeof Q!=="object")throw new xI("handler must be an object");try{if(!A||typeof A!=="object")throw new xI("opts must be an object.");if(this[OI]||this[BB])throw new r0;if(this[PE])throw new Cz;return this[Mg](A,Q)}catch(B){if(typeof Q.onError!=="function")throw new xI("invalid onError method");return Q.onError(B),!1}}}TN.exports=HN});var gD=W((Zb,ON)=>{var yI=0,e0=1000,AD=(e0>>1)-1,IB,QD=Symbol("kFastTimer"),EB=[],BD=-2,ID=-1,jN=0,_N=1;function ED(){yI+=AD;let A=0,Q=EB.length;while(A=B._idleStart+B._idleTimeout)B._state=ID,B._idleStart=-1,B._onTimeout(B._timerArg);if(B._state===ID){if(B._state=BD,--Q!==0)EB[A]=EB[Q]}else++A}if(EB.length=Q,EB.length!==0)xN()}function xN(){if(IB)IB.refresh();else if(clearTimeout(IB),IB=setTimeout(ED,AD),IB.unref)IB.unref()}class CD{[QD]=!0;_state=BD;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(A,Q,B){this._onTimeout=A,this._idleTimeout=Q,this._timerArg=B,this.refresh()}refresh(){if(this._state===BD)EB.push(this);if(!IB||EB.length===1)xN();this._state=jN}clear(){this._state=ID,this._idleStart=-1}}ON.exports={setTimeout(A,Q,B){return Q<=e0?setTimeout(A,Q,B):new CD(A,Q,B)},clearTimeout(A){if(A[QD])A.clear();else clearTimeout(A)},setFastTimeout(A,Q,B){return new CD(A,Q,B)},clearFastTimeout(A){A.clear()},now(){return yI},tick(A=0){yI+=A-e0+1,ED(),ED()},reset(){yI=0,EB.length=0,clearTimeout(IB),IB=null},kFastTimer:QD}});var qE=W((Rb,kN)=>{var Dz=z("node:net"),PN=z("node:assert"),hN=p(),{InvalidArgumentError:Yz,ConnectTimeoutError:Jz}=r(),wg=gD();function qN(){}var FD,DD;if(global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG))DD=class{constructor(Q){this._maxCachedSessions=Q,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry((B)=>{if(this._sessionCache.size=this._maxCachedSessions){let{value:I}=this._sessionCache.keys().next();this._sessionCache.delete(I)}this._sessionCache.set(Q,B)}};function Uz({allowH2:A,maxCachedSessions:Q,socketPath:B,timeout:I,session:E,...C}){if(Q!=null&&(!Number.isInteger(Q)||Q<0))throw new Yz("maxCachedSessions must be a positive integer or zero");let g={path:B,...C},F=new DD(Q==null?100:Q);return I=I==null?1e4:I,A=A!=null?A:!1,function({hostname:J,host:Y,protocol:U,port:N,servername:w,localAddress:L,httpSocket:S},Z){let R;if(U==="https:"){if(!FD)FD=z("node:tls");w=w||g.servername||hN.getServerName(Y)||null;let O=w||J;PN(O);let q=E||F.get(O)||null;N=N||443,R=FD.connect({highWaterMark:16384,...g,servername:w,session:q,localAddress:L,ALPNProtocols:A?["http/1.1","h2"]:["http/1.1"],socket:S,port:N,host:J}),R.on("session",function(a){F.set(O,a)})}else PN(!S,"httpSocket can only be sent on TLS update"),N=N||80,R=Dz.connect({highWaterMark:65536,...g,localAddress:L,port:N,host:J});if(g.keepAlive==null||g.keepAlive){let O=g.keepAliveInitialDelay===void 0?60000:g.keepAliveInitialDelay;R.setKeepAlive(!0,O)}let x=Gz(new WeakRef(R),{timeout:I,hostname:J,port:N});return R.setNoDelay(!0).once(U==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(x),Z){let O=Z;Z=null,O(null,this)}}).on("error",function(O){if(queueMicrotask(x),Z){let q=Z;Z=null,q(O)}}),R}}var Gz=process.platform==="win32"?(A,Q)=>{if(!Q.timeout)return qN;let B=null,I=null,E=wg.setFastTimeout(()=>{B=setImmediate(()=>{I=setImmediate(()=>yN(A.deref(),Q))})},Q.timeout);return()=>{wg.clearFastTimeout(E),clearImmediate(B),clearImmediate(I)}}:(A,Q)=>{if(!Q.timeout)return qN;let B=null,I=wg.setFastTimeout(()=>{B=setImmediate(()=>{yN(A.deref(),Q)})},Q.timeout);return()=>{wg.clearFastTimeout(I),clearImmediate(B)}};function yN(A,Q){if(A==null)return;let B="Connect Timeout Error";if(Array.isArray(A.autoSelectFamilyAttemptedAddresses))B+=` (attempted addresses: ${A.autoSelectFamilyAttemptedAddresses.join(", ")},`;else B+=` (attempted address: ${Q.hostname}:${Q.port},`;B+=` timeout: ${Q.timeout}ms)`,hN.destroy(A,new Jz(B))}kN.exports=Uz});var bN=W((fN)=>{Object.defineProperty(fN,"__esModule",{value:!0});fN.enumToMap=void 0;function Nz(A){let Q={};return Object.keys(A).forEach((B)=>{let I=A[B];if(typeof I==="number")Q[B]=I}),Q}fN.enumToMap=Nz});var BM=W((nN)=>{Object.defineProperty(nN,"__esModule",{value:!0});nN.SPECIAL_HEADERS=nN.HEADER_STATE=nN.MINOR=nN.MAJOR=nN.CONNECTION_TOKEN_CHARS=nN.HEADER_CHARS=nN.TOKEN=nN.STRICT_TOKEN=nN.HEX=nN.URL_CHAR=nN.STRICT_URL_CHAR=nN.USERINFO_CHARS=nN.MARK=nN.ALPHANUM=nN.NUM=nN.HEX_MAP=nN.NUM_MAP=nN.ALPHA=nN.FINISH=nN.H_METHOD_MAP=nN.METHOD_MAP=nN.METHODS_RTSP=nN.METHODS_ICE=nN.METHODS_HTTP=nN.METHODS=nN.LENIENT_FLAGS=nN.FLAGS=nN.TYPE=nN.ERROR=void 0;var Mz=bN(),wz;(function(A){A[A.OK=0]="OK",A[A.INTERNAL=1]="INTERNAL",A[A.STRICT=2]="STRICT",A[A.LF_EXPECTED=3]="LF_EXPECTED",A[A.UNEXPECTED_CONTENT_LENGTH=4]="UNEXPECTED_CONTENT_LENGTH",A[A.CLOSED_CONNECTION=5]="CLOSED_CONNECTION",A[A.INVALID_METHOD=6]="INVALID_METHOD",A[A.INVALID_URL=7]="INVALID_URL",A[A.INVALID_CONSTANT=8]="INVALID_CONSTANT",A[A.INVALID_VERSION=9]="INVALID_VERSION",A[A.INVALID_HEADER_TOKEN=10]="INVALID_HEADER_TOKEN",A[A.INVALID_CONTENT_LENGTH=11]="INVALID_CONTENT_LENGTH",A[A.INVALID_CHUNK_SIZE=12]="INVALID_CHUNK_SIZE",A[A.INVALID_STATUS=13]="INVALID_STATUS",A[A.INVALID_EOF_STATE=14]="INVALID_EOF_STATE",A[A.INVALID_TRANSFER_ENCODING=15]="INVALID_TRANSFER_ENCODING",A[A.CB_MESSAGE_BEGIN=16]="CB_MESSAGE_BEGIN",A[A.CB_HEADERS_COMPLETE=17]="CB_HEADERS_COMPLETE",A[A.CB_MESSAGE_COMPLETE=18]="CB_MESSAGE_COMPLETE",A[A.CB_CHUNK_HEADER=19]="CB_CHUNK_HEADER",A[A.CB_CHUNK_COMPLETE=20]="CB_CHUNK_COMPLETE",A[A.PAUSED=21]="PAUSED",A[A.PAUSED_UPGRADE=22]="PAUSED_UPGRADE",A[A.PAUSED_H2_UPGRADE=23]="PAUSED_H2_UPGRADE",A[A.USER=24]="USER"})(wz=nN.ERROR||(nN.ERROR={}));var Wz;(function(A){A[A.BOTH=0]="BOTH",A[A.REQUEST=1]="REQUEST",A[A.RESPONSE=2]="RESPONSE"})(Wz=nN.TYPE||(nN.TYPE={}));var Lz;(function(A){A[A.CONNECTION_KEEP_ALIVE=1]="CONNECTION_KEEP_ALIVE",A[A.CONNECTION_CLOSE=2]="CONNECTION_CLOSE",A[A.CONNECTION_UPGRADE=4]="CONNECTION_UPGRADE",A[A.CHUNKED=8]="CHUNKED",A[A.UPGRADE=16]="UPGRADE",A[A.CONTENT_LENGTH=32]="CONTENT_LENGTH",A[A.SKIPBODY=64]="SKIPBODY",A[A.TRAILING=128]="TRAILING",A[A.TRANSFER_ENCODING=512]="TRANSFER_ENCODING"})(Lz=nN.FLAGS||(nN.FLAGS={}));var Vz;(function(A){A[A.HEADERS=1]="HEADERS",A[A.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",A[A.KEEP_ALIVE=4]="KEEP_ALIVE"})(Vz=nN.LENIENT_FLAGS||(nN.LENIENT_FLAGS={}));var k;(function(A){A[A.DELETE=0]="DELETE",A[A.GET=1]="GET",A[A.HEAD=2]="HEAD",A[A.POST=3]="POST",A[A.PUT=4]="PUT",A[A.CONNECT=5]="CONNECT",A[A.OPTIONS=6]="OPTIONS",A[A.TRACE=7]="TRACE",A[A.COPY=8]="COPY",A[A.LOCK=9]="LOCK",A[A.MKCOL=10]="MKCOL",A[A.MOVE=11]="MOVE",A[A.PROPFIND=12]="PROPFIND",A[A.PROPPATCH=13]="PROPPATCH",A[A.SEARCH=14]="SEARCH",A[A.UNLOCK=15]="UNLOCK",A[A.BIND=16]="BIND",A[A.REBIND=17]="REBIND",A[A.UNBIND=18]="UNBIND",A[A.ACL=19]="ACL",A[A.REPORT=20]="REPORT",A[A.MKACTIVITY=21]="MKACTIVITY",A[A.CHECKOUT=22]="CHECKOUT",A[A.MERGE=23]="MERGE",A[A["M-SEARCH"]=24]="M-SEARCH",A[A.NOTIFY=25]="NOTIFY",A[A.SUBSCRIBE=26]="SUBSCRIBE",A[A.UNSUBSCRIBE=27]="UNSUBSCRIBE",A[A.PATCH=28]="PATCH",A[A.PURGE=29]="PURGE",A[A.MKCALENDAR=30]="MKCALENDAR",A[A.LINK=31]="LINK",A[A.UNLINK=32]="UNLINK",A[A.SOURCE=33]="SOURCE",A[A.PRI=34]="PRI",A[A.DESCRIBE=35]="DESCRIBE",A[A.ANNOUNCE=36]="ANNOUNCE",A[A.SETUP=37]="SETUP",A[A.PLAY=38]="PLAY",A[A.PAUSE=39]="PAUSE",A[A.TEARDOWN=40]="TEARDOWN",A[A.GET_PARAMETER=41]="GET_PARAMETER",A[A.SET_PARAMETER=42]="SET_PARAMETER",A[A.REDIRECT=43]="REDIRECT",A[A.RECORD=44]="RECORD",A[A.FLUSH=45]="FLUSH"})(k=nN.METHODS||(nN.METHODS={}));nN.METHODS_HTTP=[k.DELETE,k.GET,k.HEAD,k.POST,k.PUT,k.CONNECT,k.OPTIONS,k.TRACE,k.COPY,k.LOCK,k.MKCOL,k.MOVE,k.PROPFIND,k.PROPPATCH,k.SEARCH,k.UNLOCK,k.BIND,k.REBIND,k.UNBIND,k.ACL,k.REPORT,k.MKACTIVITY,k.CHECKOUT,k.MERGE,k["M-SEARCH"],k.NOTIFY,k.SUBSCRIBE,k.UNSUBSCRIBE,k.PATCH,k.PURGE,k.MKCALENDAR,k.LINK,k.UNLINK,k.PRI,k.SOURCE];nN.METHODS_ICE=[k.SOURCE];nN.METHODS_RTSP=[k.OPTIONS,k.DESCRIBE,k.ANNOUNCE,k.SETUP,k.PLAY,k.PAUSE,k.TEARDOWN,k.GET_PARAMETER,k.SET_PARAMETER,k.REDIRECT,k.RECORD,k.FLUSH,k.GET,k.POST];nN.METHOD_MAP=Mz.enumToMap(k);nN.H_METHOD_MAP={};Object.keys(nN.METHOD_MAP).forEach((A)=>{if(/^H/.test(A))nN.H_METHOD_MAP[A]=nN.METHOD_MAP[A]});var Zz;(function(A){A[A.SAFE=0]="SAFE",A[A.SAFE_WITH_CB=1]="SAFE_WITH_CB",A[A.UNSAFE=2]="UNSAFE"})(Zz=nN.FINISH||(nN.FINISH={}));nN.ALPHA=[];for(let A=65;A<=90;A++)nN.ALPHA.push(String.fromCharCode(A)),nN.ALPHA.push(String.fromCharCode(A+32));nN.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};nN.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};nN.NUM=["0","1","2","3","4","5","6","7","8","9"];nN.ALPHANUM=nN.ALPHA.concat(nN.NUM);nN.MARK=["-","_",".","!","~","*","'","(",")"];nN.USERINFO_CHARS=nN.ALPHANUM.concat(nN.MARK).concat(["%",";",":","&","=","+","$",","]);nN.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(nN.ALPHANUM);nN.URL_CHAR=nN.STRICT_URL_CHAR.concat(["\t","\f"]);for(let A=128;A<=255;A++)nN.URL_CHAR.push(A);nN.HEX=nN.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);nN.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(nN.ALPHANUM);nN.TOKEN=nN.STRICT_TOKEN.concat([" "]);nN.HEADER_CHARS=["\t"];for(let A=32;A<=255;A++)if(A!==127)nN.HEADER_CHARS.push(A);nN.CONNECTION_TOKEN_CHARS=nN.HEADER_CHARS.filter((A)=>A!==44);nN.MAJOR=nN.NUM_MAP;nN.MINOR=nN.MAJOR;var hI;(function(A){A[A.GENERAL=0]="GENERAL",A[A.CONNECTION=1]="CONNECTION",A[A.CONTENT_LENGTH=2]="CONTENT_LENGTH",A[A.TRANSFER_ENCODING=3]="TRANSFER_ENCODING",A[A.UPGRADE=4]="UPGRADE",A[A.CONNECTION_KEEP_ALIVE=5]="CONNECTION_KEEP_ALIVE",A[A.CONNECTION_CLOSE=6]="CONNECTION_CLOSE",A[A.CONNECTION_UPGRADE=7]="CONNECTION_UPGRADE",A[A.TRANSFER_ENCODING_CHUNKED=8]="TRANSFER_ENCODING_CHUNKED"})(hI=nN.HEADER_STATE||(nN.HEADER_STATE={}));nN.SPECIAL_HEADERS={connection:hI.CONNECTION,"content-length":hI.CONTENT_LENGTH,"proxy-connection":hI.CONNECTION,"transfer-encoding":hI.TRANSFER_ENCODING,upgrade:hI.UPGRADE}});var GD=W((zb,IM)=>{var{Buffer:jz}=z("node:buffer");IM.exports=jz.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv","base64")});var CM=W((Sb,EM)=>{var{Buffer:xz}=z("node:buffer");EM.exports=xz.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIdbGxodHRwX3NldF9sZW5pZW50X2tlZXBfYWxpdmUAIyRsbGh0dHBfc2V0X2xlbmllbnRfdHJhbnNmZXJfZW5jb2RpbmcAJBhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YALgkXAQBBAQsRAQIDBAUKBgcrLSwqKSglJyYK77MCLBYAQYjQACgCAARAAAtBiNAAQQE2AgALFAAgABAwIAAgAjYCOCAAIAE6ACgLFAAgACAALwEyIAAtAC4gABAvEAALHgEBf0HAABAyIgEQMCABQYAINgI4IAEgADoAKCABC48MAQd/AkAgAEUNACAAQQhrIgEgAEEEaygCACIAQXhxIgRqIQUCQCAAQQFxDQAgAEEDcUUNASABIAEoAgAiAGsiAUGc0AAoAgBJDQEgACAEaiEEAkACQEGg0AAoAgAgAUcEQCAAQf8BTQRAIABBA3YhAyABKAIIIgAgASgCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyABKAIYIQYgASABKAIMIgBHBEAgACABKAIIIgI2AgggAiAANgIMDAMLIAFBFGoiAygCACICRQRAIAEoAhAiAkUNAiABQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFKAIEIgBBA3FBA0cNAiAFIABBfnE2AgRBlNAAIAQ2AgAgBSAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCABKAIcIgJBAnRBvNIAaiIDKAIAIAFGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgAUYbaiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAFTw0AIAUoAgQiAEEBcUUNAAJAAkACQAJAIABBAnFFBEBBpNAAKAIAIAVGBEBBpNAAIAE2AgBBmNAAQZjQACgCACAEaiIANgIAIAEgAEEBcjYCBCABQaDQACgCAEcNBkGU0ABBADYCAEGg0ABBADYCAAwGC0Gg0AAoAgAgBUYEQEGg0AAgATYCAEGU0ABBlNAAKAIAIARqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAAwGCyAAQXhxIARqIQQgAEH/AU0EQCAAQQN2IQMgBSgCCCIAIAUoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgBSgCGCEGIAUgBSgCDCIARwRAQZzQACgCABogACAFKAIIIgI2AgggAiAANgIMDAMLIAVBFGoiAygCACICRQRAIAUoAhAiAkUNAiAFQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFIABBfnE2AgQgASAEaiAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCAFKAIcIgJBAnRBvNIAaiIDKAIAIAVGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiAANgIAIABFDQELIAAgBjYCGCAFKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAFQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAEaiAENgIAIAEgBEEBcjYCBCABQaDQACgCAEcNAEGU0AAgBDYCAAwBCyAEQf8BTQRAIARBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASAEQQN2dCIDcUUEQEGM0AAgAiADcjYCACAADAELIAAoAggLIgIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCAwBC0EfIQIgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgASACNgIcIAFCADcCECACQQJ0QbzSAGohAAJAQZDQACgCACIDQQEgAnQiB3FFBEAgACABNgIAQZDQACADIAdyNgIAIAEgADYCGCABIAE2AgggASABNgIMDAELIARBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAAJAA0AgACIDKAIEQXhxIARGDQEgAkEddiEAIAJBAXQhAiADIABBBHFqQRBqIgcoAgAiAA0ACyAHIAE2AgAgASADNgIYIAEgATYCDCABIAE2AggMAQsgAygCCCIAIAE2AgwgAyABNgIIIAFBADYCGCABIAM2AgwgASAANgIIC0Gs0ABBrNAAKAIAQQFrIgBBfyAAGzYCAAsLBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LQAEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABAwIAAgBDYCOCAAIAM6ACggACACOgAtIAAgATYCGAu74gECB38DfiABIAJqIQQCQCAAIgIoAgwiAA0AIAIoAgQEQCACIAE2AgQLIwBBEGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwiA0EBaw7dAdoBAdkBAgMEBQYHCAkKCwwNDtgBDxDXARES1gETFBUWFxgZGhvgAd8BHB0e1QEfICEiIyQl1AEmJygpKiss0wHSAS0u0QHQAS8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRtsBR0hJSs8BzgFLzQFMzAFNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBywHKAbgByQG5AcgBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgEA3AELQQAMxgELQQ4MxQELQQ0MxAELQQ8MwwELQRAMwgELQRMMwQELQRQMwAELQRUMvwELQRYMvgELQRgMvQELQRkMvAELQRoMuwELQRsMugELQRwMuQELQR0MuAELQQgMtwELQR4MtgELQSAMtQELQR8MtAELQQcMswELQSEMsgELQSIMsQELQSMMsAELQSQMrwELQRIMrgELQREMrQELQSUMrAELQSYMqwELQScMqgELQSgMqQELQcMBDKgBC0EqDKcBC0ErDKYBC0EsDKUBC0EtDKQBC0EuDKMBC0EvDKIBC0HEAQyhAQtBMAygAQtBNAyfAQtBDAyeAQtBMQydAQtBMgycAQtBMwybAQtBOQyaAQtBNQyZAQtBxQEMmAELQQsMlwELQToMlgELQTYMlQELQQoMlAELQTcMkwELQTgMkgELQTwMkQELQTsMkAELQT0MjwELQQkMjgELQSkMjQELQT4MjAELQT8MiwELQcAADIoBC0HBAAyJAQtBwgAMiAELQcMADIcBC0HEAAyGAQtBxQAMhQELQcYADIQBC0EXDIMBC0HHAAyCAQtByAAMgQELQckADIABC0HKAAx/C0HLAAx+C0HNAAx9C0HMAAx8C0HOAAx7C0HPAAx6C0HQAAx5C0HRAAx4C0HSAAx3C0HTAAx2C0HUAAx1C0HWAAx0C0HVAAxzC0EGDHILQdcADHELQQUMcAtB2AAMbwtBBAxuC0HZAAxtC0HaAAxsC0HbAAxrC0HcAAxqC0EDDGkLQd0ADGgLQd4ADGcLQd8ADGYLQeEADGULQeAADGQLQeIADGMLQeMADGILQQIMYQtB5AAMYAtB5QAMXwtB5gAMXgtB5wAMXQtB6AAMXAtB6QAMWwtB6gAMWgtB6wAMWQtB7AAMWAtB7QAMVwtB7gAMVgtB7wAMVQtB8AAMVAtB8QAMUwtB8gAMUgtB8wAMUQtB9AAMUAtB9QAMTwtB9gAMTgtB9wAMTQtB+AAMTAtB+QAMSwtB+gAMSgtB+wAMSQtB/AAMSAtB/QAMRwtB/gAMRgtB/wAMRQtBgAEMRAtBgQEMQwtBggEMQgtBgwEMQQtBhAEMQAtBhQEMPwtBhgEMPgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxBACEDDKIBCyACQeQANgIcIAIgATYCFCACQeMXNgIQIAJBFTYCDEEAIQMMoQELIAJBADYCACAGQQFqIQEgAi0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACEDIAJBADYCHCACIAE2AhQgAkH3CTYCECACQQg2AgwMoAELIAJBADYCACAGQQFqIQEgAi0AKUEhRg0DIAJBADYCHCACIAE2AhQgAkGbCjYCECACQQg2AgxBACEDDJ8BCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJBkDM2AhAgAkEINgIMDJ0BCyACQQA2AgAgBkEBaiEBIAItAClBI0kNACACQQA2AhwgAiABNgIUIAJB0wk2AhAgAkEINgIMQQAhAwycAQtB0QAhAwyCAQsgAS0AAEEwayIAQf8BcUEKSQRAIAIgADoAKiABQQFqIQFBzwAhAwyCAQsgAigCBCEAIAJBADYCBCACIAAgARAoIgBFDYYBIAJB3gA2AhwgAiABNgIUIAIgADYCDEEAIQMMmgELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ2GASACQdwANgIcIAIgATYCFCACIAA2AgxBACEDDJkBCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMhwELIAJB2gA2AhwgAiAFNgIUIAIgADYCDAyYAQtBACEBQQEhAwsgAiADOgArIAVBAWohAwJAAkACQCACLQAtQRBxDQACQAJAAkAgAi0AKg4DAQACBAsgBkUNAwwCCyAADQEMAgsgAUUNAQsgAigCBCEAIAJBADYCBCACIAAgAxAoIgBFBEAgAyEBDAILIAJB2AA2AhwgAiADNgIUIAIgADYCDEEAIQMMmAELIAIoAgQhACACQQA2AgQgAiAAIAMQKCIARQRAIAMhAQyHAQsgAkHZADYCHCACIAM2AhQgAiAANgIMQQAhAwyXAQtBzAAhAwx9CyAAQRVHBEAgAkEANgIcIAIgATYCFCACQZQNNgIQIAJBITYCDEEAIQMMlgELIAJB1wA2AhwgAiABNgIUIAJByRc2AhAgAkEVNgIMQQAhAwyVAQtBACEDIAJBADYCHCACIAE2AhQgAkGAETYCECACQQk2AgwMlAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0AIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMkwELQckAIQMMeQsgAkEANgIcIAIgATYCFCACQcEoNgIQIAJBBzYCDCACQQA2AgBBACEDDJEBCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAlIgBFDQAgAkHSADYCHCACIAE2AhQgAiAANgIMDJABC0HIACEDDHYLIAJBADYCACAFIQELIAJBgBI7ASogAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANAQtBxwAhAwxzCyAAQRVGBEAgAkHRADYCHCACIAE2AhQgAkHjFzYCECACQRU2AgxBACEDDIwBC0EAIQMgAkEANgIcIAIgATYCFCACQbkNNgIQIAJBGjYCDAyLAQtBACEDIAJBADYCHCACIAE2AhQgAkGgGTYCECACQR42AgwMigELIAEtAABBOkYEQCACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgBFDQEgAkHDADYCHCACIAA2AgwgAiABQQFqNgIUDIoBC0EAIQMgAkEANgIcIAIgATYCFCACQbERNgIQIAJBCjYCDAyJAQsgAUEBaiEBQTshAwxvCyACQcMANgIcIAIgADYCDCACIAFBAWo2AhQMhwELQQAhAyACQQA2AhwgAiABNgIUIAJB8A42AhAgAkEcNgIMDIYBCyACIAIvATBBEHI7ATAMZgsCQCACLwEwIgBBCHFFDQAgAi0AKEEBRw0AIAItAC1BCHFFDQMLIAIgAEH3+wNxQYAEcjsBMAwECyABIARHBEACQANAIAEtAABBMGsiAEH/AXFBCk8EQEE1IQMMbgsgAikDICIKQpmz5syZs+bMGVYNASACIApCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAIgCiALfDcDICAEIAFBAWoiAUcNAAtBOSEDDIUBCyACKAIEIQBBACEDIAJBADYCBCACIAAgAUEBaiIBECoiAA0MDHcLQTkhAwyDAQsgAi0AMEEgcQ0GQcUBIQMMaQtBACEDIAJBADYCBCACIAEgARAqIgBFDQQgAkE6NgIcIAIgADYCDCACIAFBAWo2AhQMgQELIAItAChBAUcNACACLQAtQQhxRQ0BC0E3IQMMZgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIABEAgAkE7NgIcIAIgADYCDCACIAFBAWo2AhQMfwsgAUEBaiEBDG4LIAJBCDoALAwECyABQQFqIQEMbQtBACEDIAJBADYCHCACIAE2AhQgAkHkEjYCECACQQQ2AgwMewsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ1sIAJBNzYCHCACIAE2AhQgAiAANgIMDHoLIAIgAi8BMEEgcjsBMAtBMCEDDF8LIAJBNjYCHCACIAE2AhQgAiAANgIMDHcLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCACLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIAJBAToALCACIAIvATAgAXI7ATAgACEBDAELIAIgAi8BMEEIcjsBMCAAIQELQTkhAwxcCyACQQA6ACwLQTQhAwxaCyABIARGBEBBLSEDDHMLAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0EtIQMMdAsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ0CIAJBLDYCHCACIAE2AhQgAiAANgIMDHMLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAS0AAEENRgRAIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAi0ALUEBcQRAQcQBIQMMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIADQEMZQtBLyEDDFcLIAJBLjYCHCACIAE2AhQgAiAANgIMDG8LQQAhAyACQQA2AhwgAiABNgIUIAJB8BQ2AhAgAkEDNgIMDG4LQQEhAwJAAkACQAJAIAItACxBBWsOBAMBAgAECyACIAIvATBBCHI7ATAMAwtBAiEDDAELQQQhAwsgAkEBOgAsIAIgAi8BMCADcjsBMAtBKiEDDFMLQQAhAyACQQA2AhwgAiABNgIUIAJB4Q82AhAgAkEKNgIMDGsLQQEhAwJAAkACQAJAAkACQCACLQAsQQJrDgcFBAQDAQIABAsgAiACLwEwQQhyOwEwDAMLQQIhAwwBC0EEIQMLIAJBAToALCACIAIvATAgA3I7ATALQSshAwxSC0EAIQMgAkEANgIcIAIgATYCFCACQasSNgIQIAJBCzYCDAxqC0EAIQMgAkEANgIcIAIgATYCFCACQf0NNgIQIAJBHTYCDAxpCyABIARHBEADQCABLQAAQSBHDUggBCABQQFqIgFHDQALQSUhAwxpC0ElIQMMaAsgAi0ALUEBcQRAQcMBIQMMTwsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKSIABEAgAkEmNgIcIAIgADYCDCACIAFBAWo2AhQMaAsgAUEBaiEBDFwLIAFBAWohASACLwEwIgBBgAFxBEBBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAEUNBiAAQRVHDR8gAkEFNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMZwsCQCAAQaAEcUGgBEcNACACLQAtQQJxDQBBACEDIAJBADYCHCACIAE2AhQgAkGWEzYCECACQQQ2AgwMZwsgAgJ/IAIvATBBFHFBFEYEQEEBIAItAChBAUYNARogAi8BMkHlAEYMAQsgAi0AKUEFRgs6AC5BACEAAkAgAigCOCIDRQ0AIAMoAiQiA0UNACACIAMRAAAhAAsCQAJAAkACQAJAIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyACQQE6AC4LIAIgAi8BMEHAAHI7ATALQSchAwxPCyACQSM2AhwgAiABNgIUIAJBpRY2AhAgAkEVNgIMQQAhAwxnC0EAIQMgAkEANgIcIAIgATYCFCACQdULNgIQIAJBETYCDAxmC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAADQELQQ4hAwxLCyAAQRVGBEAgAkECNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMZAtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMYwtBACEDIAJBADYCHCACIAE2AhQgAkGqHDYCECACQQ82AgwMYgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEgCqdqIgEQKyIARQ0AIAJBBTYCHCACIAE2AhQgAiAANgIMDGELQQ8hAwxHC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxfC0IBIQoLIAFBAWohAQJAIAIpAyAiC0L//////////w9YBEAgAiALQgSGIAqENwMgDAELQQAhAyACQQA2AhwgAiABNgIUIAJBrQk2AhAgAkEMNgIMDF4LQSQhAwxEC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxcCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAsIgBFBEAgAUEBaiEBDFILIAJBFzYCHCACIAA2AgwgAiABQQFqNgIUDFsLIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQRY2AhwgAiAANgIMIAIgAUEBajYCFAxbC0EfIQMMQQtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQLSIARQRAIAFBAWohAQxQCyACQRQ2AhwgAiAANgIMIAIgAUEBajYCFAxYCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABEC0iAEUEQCABQQFqIQEMAQsgAkETNgIcIAIgADYCDCACIAFBAWo2AhQMWAtBHiEDDD4LQQAhAyACQQA2AhwgAiABNgIUIAJBxgw2AhAgAkEjNgIMDFYLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABEC0iAEUEQCABQQFqIQEMTgsgAkERNgIcIAIgADYCDCACIAFBAWo2AhQMVQsgAkEQNgIcIAIgATYCFCACIAA2AgwMVAtBACEDIAJBADYCHCACIAE2AhQgAkHGDDYCECACQSM2AgwMUwtBACEDIAJBADYCHCACIAE2AhQgAkHAFTYCECACQQI2AgwMUgsgAigCBCEAQQAhAyACQQA2AgQCQCACIAAgARAtIgBFBEAgAUEBaiEBDAELIAJBDjYCHCACIAA2AgwgAiABQQFqNgIUDFILQRshAww4C0EAIQMgAkEANgIcIAIgATYCFCACQcYMNgIQIAJBIzYCDAxQCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABECwiAEUEQCABQQFqIQEMAQsgAkENNgIcIAIgADYCDCACIAFBAWo2AhQMUAtBGiEDDDYLQQAhAyACQQA2AhwgAiABNgIUIAJBmg82AhAgAkEiNgIMDE4LIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQQw2AhwgAiAANgIMIAIgAUEBajYCFAxOC0EZIQMMNAtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMTAsgAEEVRwRAQQAhAyACQQA2AhwgAiABNgIUIAJBgww2AhAgAkETNgIMDEwLIAJBCjYCHCACIAE2AhQgAkHkFjYCECACQRU2AgxBACEDDEsLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABIAqnaiIBECsiAARAIAJBBzYCHCACIAE2AhQgAiAANgIMDEsLQRMhAwwxCyAAQRVHBEBBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMSgsgAkEeNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMSQtBACEAAkAgAigCOCIDRQ0AIAMoAiwiA0UNACACIAMRAAAhAAsgAEUNQSAAQRVGBEAgAkEDNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMSQtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMSAtBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMRwtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMRgsgAkEAOgAvIAItAC1BBHFFDT8LIAJBADoALyACQQE6ADRBACEDDCsLQQAhAyACQQA2AhwgAkHkETYCECACQQc2AgwgAiABQQFqNgIUDEMLAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB3QEhAwxDCwJAAkAgAi0ANEEBRw0AQQAhAAJAIAIoAjgiA0UNACADKAJYIgNFDQAgAiADEQAAIQALIABFDQAgAEEVRw0BIAJB3AE2AhwgAiABNgIUIAJB1RY2AhAgAkEVNgIMQQAhAwxEC0HBASEDDCoLIAJBADYCHCACIAE2AhQgAkHpCzYCECACQR82AgxBACEDDEILAkACQCACLQAoQQFrDgIEAQALQcABIQMMKQtBuQEhAwwoCyACQQI6AC9BACEAAkAgAigCOCIDRQ0AIAMoAgAiA0UNACACIAMRAAAhAAsgAEUEQEHCASEDDCgLIABBFUcEQCACQQA2AhwgAiABNgIUIAJBpAw2AhAgAkEQNgIMQQAhAwxBCyACQdsBNgIcIAIgATYCFCACQfoWNgIQIAJBFTYCDEEAIQMMQAsgASAERgRAQdoBIQMMQAsgAS0AAEHIAEYNASACQQE6ACgLQawBIQMMJQtBvwEhAwwkCyABIARHBEAgAkEQNgIIIAIgATYCBEG+ASEDDCQLQdkBIQMMPAsgASAERgRAQdgBIQMMPAsgAS0AAEHIAEcNBCABQQFqIQFBvQEhAwwiCyABIARGBEBB1wEhAww7CwJAAkAgAS0AAEHFAGsOEAAFBQUFBQUFBQUFBQUFBQEFCyABQQFqIQFBuwEhAwwiCyABQQFqIQFBvAEhAwwhC0HWASEDIAEgBEYNOSACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGD0ABqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw6CyACKAIEIQAgAkIANwMAIAIgACAGQQFqIgEQJyIARQRAQcYBIQMMIQsgAkHVATYCHCACIAE2AhQgAiAANgIMQQAhAww5C0HUASEDIAEgBEYNOCACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGB0ABqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw5CyACQYEEOwEoIAIoAgQhACACQgA3AwAgAiAAIAZBAWoiARAnIgANAwwCCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB2Bs2AhAgAkEINgIMDDYLQboBIQMMHAsgAkHTATYCHCACIAE2AhQgAiAANgIMQQAhAww0C0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAARQ0AIABBFUYNASACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwwzC0HkACEDDBkLIAJB+AA2AhwgAiABNgIUIAJByhg2AhAgAkEVNgIMQQAhAwwxC0HSASEDIAQgASIARg0wIAQgAWsgAigCACIBaiEFIAAgAWtBBGohBgJAA0AgAC0AACABQfzPAGotAABHDQEgAUEERg0DIAFBAWohASAEIABBAWoiAEcNAAsgAiAFNgIADDELIAJBADYCHCACIAA2AhQgAkGQMzYCECACQQg2AgwgAkEANgIAQQAhAwwwCyABIARHBEAgAkEONgIIIAIgATYCBEG3ASEDDBcLQdEBIQMMLwsgAkEANgIAIAZBAWohAQtBuAEhAwwUCyABIARGBEBB0AEhAwwtCyABLQAAQTBrIgBB/wFxQQpJBEAgAiAAOgAqIAFBAWohAUG2ASEDDBQLIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0UIAJBzwE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAsgASAERgRAQc4BIQMMLAsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0VIAJBzQE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAtBtQEhAwwSCyAEIAEiBUYEQEHMASEDDCsLQQAhAEEBIQFBASEGQQAhAwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAUtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyEDQQAhAUEAIQYMAgtBCSEDQQEhAEEAIQFBACEGDAELQQAhAUEBIQMLIAIgAzoAKyAFQQFqIQMCQAJAIAItAC1BEHENAAJAAkACQCACLQAqDgMBAAIECyAGRQ0DDAILIAANAQwCCyABRQ0BCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMAwsgAkHJATYCHCACIAM2AhQgAiAANgIMQQAhAwwtCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMGAsgAkHKATYCHCACIAM2AhQgAiAANgIMQQAhAwwsCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMFgsgAkHLATYCHCACIAU2AhQgAiAANgIMDCsLQbQBIQMMEQtBACEAAkAgAigCOCIDRQ0AIAMoAjwiA0UNACACIAMRAAAhAAsCQCAABEAgAEEVRg0BIAJBADYCHCACIAE2AhQgAkGUDTYCECACQSE2AgxBACEDDCsLQbIBIQMMEQsgAkHIATYCHCACIAE2AhQgAkHJFzYCECACQRU2AgxBACEDDCkLIAJBADYCACAGQQFqIQFB9QAhAwwPCyACLQApQQVGBEBB4wAhAwwPC0HiACEDDA4LIAAhASACQQA2AgALIAJBADoALEEJIQMMDAsgAkEANgIAIAdBAWohAUHAACEDDAsLQQELOgAsIAJBADYCACAGQQFqIQELQSkhAwwIC0E4IQMMBwsCQCABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRw0DIAFBAWohAQwFCyAEIAFBAWoiAUcNAAtBPiEDDCELQT4hAwwgCwsgAkEAOgAsDAELQQshAwwEC0E6IQMMAwsgAUEBaiEBQS0hAwwCCyACIAE6ACwgAkEANgIAIAZBAWohAUEMIQMMAQsgAkEANgIAIAZBAWohAUEKIQMMAAsAC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwXC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwWC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwVC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwUC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwTC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwSC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwRC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwQC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwPC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwOC0EAIQMgAkEANgIcIAIgATYCFCACQcASNgIQIAJBCzYCDAwNC0EAIQMgAkEANgIcIAIgATYCFCACQZUJNgIQIAJBCzYCDAwMC0EAIQMgAkEANgIcIAIgATYCFCACQeEPNgIQIAJBCjYCDAwLC0EAIQMgAkEANgIcIAIgATYCFCACQfsPNgIQIAJBCjYCDAwKC0EAIQMgAkEANgIcIAIgATYCFCACQfEZNgIQIAJBAjYCDAwJC0EAIQMgAkEANgIcIAIgATYCFCACQcQUNgIQIAJBAjYCDAwIC0EAIQMgAkEANgIcIAIgATYCFCACQfIVNgIQIAJBAjYCDAwHCyACQQI2AhwgAiABNgIUIAJBnBo2AhAgAkEWNgIMQQAhAwwGC0EBIQMMBQtB1AAhAyABIARGDQQgCEEIaiEJIAIoAgAhBQJAAkAgASAERwRAIAVB2MIAaiEHIAQgBWogAWshACAFQX9zQQpqIgUgAWohBgNAIAEtAAAgBy0AAEcEQEECIQcMAwsgBUUEQEEAIQcgBiEBDAMLIAVBAWshBSAHQQFqIQcgBCABQQFqIgFHDQALIAAhBSAEIQELIAlBATYCACACIAU2AgAMAQsgAkEANgIAIAkgBzYCAAsgCSABNgIEIAgoAgwhACAIKAIIDgMBBAIACwALIAJBADYCHCACQbUaNgIQIAJBFzYCDCACIABBAWo2AhRBACEDDAILIAJBADYCHCACIAA2AhQgAkHKGjYCECACQQk2AgxBACEDDAELIAEgBEYEQEEiIQMMAQsgAkEJNgIIIAIgATYCBEEhIQMLIAhBEGokACADRQRAIAIoAgwhAAwBCyACIAM2AhxBACEAIAIoAgQiAUUNACACIAEgBCACKAIIEQEAIgFFDQAgAiAENgIUIAIgATYCDCABIQALIAALvgIBAn8gAEEAOgAAIABB3ABqIgFBAWtBADoAACAAQQA6AAIgAEEAOgABIAFBA2tBADoAACABQQJrQQA6AAAgAEEAOgADIAFBBGtBADoAAEEAIABrQQNxIgEgAGoiAEEANgIAQdwAIAFrQXxxIgIgAGoiAUEEa0EANgIAAkAgAkEJSQ0AIABBADYCCCAAQQA2AgQgAUEIa0EANgIAIAFBDGtBADYCACACQRlJDQAgAEEANgIYIABBADYCFCAAQQA2AhAgAEEANgIMIAFBEGtBADYCACABQRRrQQA2AgAgAUEYa0EANgIAIAFBHGtBADYCACACIABBBHFBGHIiAmsiAUEgSQ0AIAAgAmohAANAIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDACAAQSBqIQAgAUEgayIBQR9LDQALCwtWAQF/AkAgACgCDA0AAkACQAJAAkAgAC0ALw4DAQADAgsgACgCOCIBRQ0AIAEoAiwiAUUNACAAIAERAAAiAQ0DC0EADwsACyAAQcMWNgIQQQ4hAQsgAQsaACAAKAIMRQRAIABB0Rs2AhAgAEEVNgIMCwsUACAAKAIMQRVGBEAgAEEANgIMCwsUACAAKAIMQRZGBEAgAEEANgIMCwsHACAAKAIMCwcAIAAoAhALCQAgACABNgIQCwcAIAAoAhQLFwAgAEEkTwRAAAsgAEECdEGgM2ooAgALFwAgAEEuTwRAAAsgAEECdEGwNGooAgALvwkBAX9B6yghAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")});var yE=W(($b,NM)=>{var gM=["GET","HEAD","POST"],Oz=new Set(gM),Pz=[101,204,205,304],FM=[301,302,303,307,308],qz=new Set(FM),DM=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],yz=new Set(DM),YM=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],hz=new Set(YM),kz=["follow","manual","error"],JM=["GET","HEAD","OPTIONS","TRACE"],fz=new Set(JM),vz=["navigate","same-origin","no-cors","cors"],bz=["omit","same-origin","include"],mz=["default","no-store","reload","no-cache","force-cache","only-if-cached"],uz=["content-encoding","content-language","content-location","content-type","content-length"],cz=["half"],UM=["CONNECT","TRACE","TRACK"],dz=new Set(UM),GM=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],lz=new Set(GM);NM.exports={subresource:GM,forbiddenMethods:UM,requestBodyHeader:uz,referrerPolicy:YM,requestRedirect:kz,requestMode:vz,requestCredentials:bz,requestCache:mz,redirectStatus:FM,corsSafeListedMethods:gM,nullBodyStatus:Pz,safeMethods:JM,badPorts:DM,requestDuplex:cz,subresourceSet:lz,badPortsSet:yz,redirectStatusSet:qz,corsSafeListedMethodsSet:Oz,safeMethodsSet:fz,forbiddenMethodsSet:dz,referrerPolicySet:hz}});var MD=W((Hb,MM)=>{var ND=Symbol.for("undici.globalOrigin.1");function pz(){return globalThis[ND]}function iz(A){if(A===void 0){Object.defineProperty(globalThis,ND,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let Q=new URL(A);if(Q.protocol!=="http:"&&Q.protocol!=="https:")throw TypeError(`Only http & https urls are allowed, received ${Q.protocol}`);Object.defineProperty(globalThis,ND,{value:Q,writable:!0,enumerable:!1,configurable:!1})}MM.exports={getGlobalOrigin:pz,setGlobalOrigin:iz}});var oA=W((Tb,XM)=>{var Zg=z("node:assert"),nz=new TextEncoder,hE=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/,az=/[\u000A\u000D\u0009\u0020]/,sz=/[\u0009\u000A\u000C\u000D\u0020]/g,oz=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function rz(A){Zg(A.protocol==="data:");let Q=LM(A,!0);Q=Q.slice(5);let B={position:0},I=kI(",",Q,B),E=I.length;if(I=I5(I,!0,!0),B.position>=Q.length)return"failure";B.position++;let C=Q.slice(E+1),g=VM(C);if(/;(\u0020){0,}base64$/i.test(I)){let D=RM(g);if(g=ez(D),g==="failure")return"failure";I=I.slice(0,-6),I=I.replace(/(\u0020)+$/,""),I=I.slice(0,-1)}if(I.startsWith(";"))I="text/plain"+I;let F=wD(I);if(F==="failure")F=wD("text/plain;charset=US-ASCII");return{mimeType:F,body:g}}function LM(A,Q=!1){if(!Q)return A.href;let B=A.href,I=A.hash.length,E=I===0?B:B.substring(0,B.length-I);if(!I&&B.endsWith("#"))return E.slice(0,-1);return E}function Rg(A,Q,B){let I="";while(B.position=48&&A<=57||A>=65&&A<=70||A>=97&&A<=102}function WM(A){return A>=48&&A<=57?A-48:(A&223)-55}function tz(A){let Q=A.length,B=new Uint8Array(Q),I=0;for(let E=0;EA.length)return"failure";Q.position++;let I=kI(";",A,Q);if(I=Vg(I,!1,!0),I.length===0||!hE.test(I))return"failure";let E=B.toLowerCase(),C=I.toLowerCase(),g={type:E,subtype:C,parameters:new Map,essence:`${E}/${C}`};while(Q.positionaz.test(J),A,Q);let F=Rg((J)=>J!==";"&&J!=="=",A,Q);if(F=F.toLowerCase(),Q.positionA.length)break;let D=null;if(A[Q.position]==='"')D=ZM(A,Q,!0),kI(";",A,Q);else if(D=kI(";",A,Q),D=Vg(D,!1,!0),D.length===0)continue;if(F.length!==0&&hE.test(F)&&(D.length===0||oz.test(D))&&!g.parameters.has(F))g.parameters.set(F,D)}return g}function ez(A){A=A.replace(sz,"");let Q=A.length;if(Q%4===0){if(A.charCodeAt(Q-1)===61){if(--Q,A.charCodeAt(Q-1)===61)--Q}}if(Q%4===1)return"failure";if(/[^+/0-9A-Za-z]/.test(A.length===Q?A:A.substring(0,Q)))return"failure";let B=Buffer.from(A,"base64");return new Uint8Array(B.buffer,B.byteOffset,B.byteLength)}function ZM(A,Q,B){let I=Q.position,E="";Zg(A[Q.position]==='"'),Q.position++;while(!0){if(E+=Rg((g)=>g!=='"'&&g!=="\\",A,Q),Q.position>=A.length)break;let C=A[Q.position];if(Q.position++,C==="\\"){if(Q.position>=A.length){E+="\\";break}E+=A[Q.position],Q.position++}else{Zg(C==='"');break}}if(B)return E;return A.slice(I,Q.position)}function A5(A){Zg(A!=="failure");let{parameters:Q,essence:B}=A,I=B;for(let[E,C]of Q.entries()){if(I+=";",I+=E,I+="=",!hE.test(C))C=C.replace(/(\\|")/g,"\\$1"),C='"'+C,C+='"';I+=C}return I}function Q5(A){return A===13||A===10||A===9||A===32}function Vg(A,Q=!0,B=!0){return WD(A,Q,B,Q5)}function B5(A){return A===13||A===10||A===9||A===12||A===32}function I5(A,Q=!0,B=!0){return WD(A,Q,B,B5)}function WD(A,Q,B,I){let E=0,C=A.length-1;if(Q)while(E0&&I(A.charCodeAt(C)))C--;return E===0&&C===A.length-1?A:A.slice(E,C+1)}function RM(A){let Q=A.length;if(65535>Q)return String.fromCharCode.apply(null,A);let B="",I=0,E=65535;while(IQ)E=Q-I;B+=String.fromCharCode.apply(null,A.subarray(I,I+=E))}return B}function E5(A){switch(A.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}if(A.subtype.endsWith("+json"))return"application/json";if(A.subtype.endsWith("+xml"))return"application/xml";return""}XM.exports={dataURLProcessor:rz,URLSerializer:LM,collectASequenceOfCodePoints:Rg,collectASequenceOfCodePointsFast:kI,stringPercentDecode:VM,parseMIMEType:wD,collectAnHTTPQuotedString:ZM,serializeAMimeType:A5,removeChars:WD,removeHTTPWhitespace:Vg,minimizeSupportedMimeType:E5,HTTP_TOKEN_CODEPOINTS:hE,isomorphicDecode:RM}});var jA=W((_b,KM)=>{var{types:fQ,inspect:C5}=z("node:util"),{markAsUncloneable:g5}=z("node:worker_threads"),{toUSVString:F5}=p(),$={};$.converters={};$.util={};$.errors={};$.errors.exception=function(A){return TypeError(`${A.header}: ${A.message}`)};$.errors.conversionFailed=function(A){let Q=A.types.length===1?"":" one of",B=`${A.argument} could not be converted to${Q}: ${A.types.join(", ")}.`;return $.errors.exception({header:A.prefix,message:B})};$.errors.invalidArgument=function(A){return $.errors.exception({header:A.prefix,message:`"${A.value}" is an invalid ${A.type}.`})};$.brandCheck=function(A,Q,B){if(B?.strict!==!1){if(!(A instanceof Q)){let I=TypeError("Illegal invocation");throw I.code="ERR_INVALID_THIS",I}}else if(A?.[Symbol.toStringTag]!==Q.prototype[Symbol.toStringTag]){let I=TypeError("Illegal invocation");throw I.code="ERR_INVALID_THIS",I}};$.argumentLengthCheck=function({length:A},Q,B){if(A{});$.util.ConvertToInt=function(A,Q,B,I){let E,C;if(Q===64)if(E=Math.pow(2,53)-1,B==="unsigned")C=0;else C=Math.pow(-2,53)+1;else if(B==="unsigned")C=0,E=Math.pow(2,Q)-1;else C=Math.pow(-2,Q)-1,E=Math.pow(2,Q-1)-1;let g=Number(A);if(g===0)g=0;if(I?.enforceRange===!0){if(Number.isNaN(g)||g===Number.POSITIVE_INFINITY||g===Number.NEGATIVE_INFINITY)throw $.errors.exception({header:"Integer conversion",message:`Could not convert ${$.util.Stringify(A)} to an integer.`});if(g=$.util.IntegerPart(g),gE)throw $.errors.exception({header:"Integer conversion",message:`Value must be between ${C}-${E}, got ${g}.`});return g}if(!Number.isNaN(g)&&I?.clamp===!0){if(g=Math.min(Math.max(g,C),E),Math.floor(g)%2===0)g=Math.floor(g);else g=Math.ceil(g);return g}if(Number.isNaN(g)||g===0&&Object.is(0,g)||g===Number.POSITIVE_INFINITY||g===Number.NEGATIVE_INFINITY)return 0;if(g=$.util.IntegerPart(g),g=g%Math.pow(2,Q),B==="signed"&&g>=Math.pow(2,Q)-1)return g-Math.pow(2,Q);return g};$.util.IntegerPart=function(A){let Q=Math.floor(Math.abs(A));if(A<0)return-1*Q;return Q};$.util.Stringify=function(A){switch($.util.Type(A)){case"Symbol":return`Symbol(${A.description})`;case"Object":return C5(A);case"String":return`"${A}"`;default:return`${A}`}};$.sequenceConverter=function(A){return(Q,B,I,E)=>{if($.util.Type(Q)!=="Object")throw $.errors.exception({header:B,message:`${I} (${$.util.Stringify(Q)}) is not iterable.`});let C=typeof E==="function"?E():Q?.[Symbol.iterator]?.(),g=[],F=0;if(C===void 0||typeof C.next!=="function")throw $.errors.exception({header:B,message:`${I} is not iterable.`});while(!0){let{done:D,value:J}=C.next();if(D)break;g.push(A(J,B,`${I}[${F++}]`))}return g}};$.recordConverter=function(A,Q){return(B,I,E)=>{if($.util.Type(B)!=="Object")throw $.errors.exception({header:I,message:`${E} ("${$.util.Type(B)}") is not an Object.`});let C={};if(!fQ.isProxy(B)){let F=[...Object.getOwnPropertyNames(B),...Object.getOwnPropertySymbols(B)];for(let D of F){let J=A(D,I,E),Y=Q(B[D],I,E);C[J]=Y}return C}let g=Reflect.ownKeys(B);for(let F of g)if(Reflect.getOwnPropertyDescriptor(B,F)?.enumerable){let J=A(F,I,E),Y=Q(B[F],I,E);C[J]=Y}return C}};$.interfaceConverter=function(A){return(Q,B,I,E)=>{if(E?.strict!==!1&&!(Q instanceof A))throw $.errors.exception({header:B,message:`Expected ${I} ("${$.util.Stringify(Q)}") to be an instance of ${A.name}.`});return Q}};$.dictionaryConverter=function(A){return(Q,B,I)=>{let E=$.util.Type(Q),C={};if(E==="Null"||E==="Undefined")return C;else if(E!=="Object")throw $.errors.exception({header:B,message:`Expected ${Q} to be one of: Null, Undefined, Object.`});for(let g of A){let{key:F,defaultValue:D,required:J,converter:Y}=g;if(J===!0){if(!Object.hasOwn(Q,F))throw $.errors.exception({header:B,message:`Missing required key "${F}".`})}let U=Q[F],N=Object.hasOwn(g,"defaultValue");if(N&&U!==null)U??=D();if(J||N||U!==void 0){if(U=Y(U,B,`${I}.${F}`),g.allowedValues&&!g.allowedValues.includes(U))throw $.errors.exception({header:B,message:`${U} is not an accepted type. Expected one of ${g.allowedValues.join(", ")}.`});C[F]=U}}return C}};$.nullableConverter=function(A){return(Q,B,I)=>{if(Q===null)return Q;return A(Q,B,I)}};$.converters.DOMString=function(A,Q,B,I){if(A===null&&I?.legacyNullToEmptyString)return"";if(typeof A==="symbol")throw $.errors.exception({header:Q,message:`${B} is a symbol, which cannot be converted to a DOMString.`});return String(A)};$.converters.ByteString=function(A,Q,B){let I=$.converters.DOMString(A,Q,B);for(let E=0;E255)throw TypeError(`Cannot convert argument to a ByteString because the character at index ${E} has a value of ${I.charCodeAt(E)} which is greater than 255.`);return I};$.converters.USVString=F5;$.converters.boolean=function(A){return Boolean(A)};$.converters.any=function(A){return A};$.converters["long long"]=function(A,Q,B){return $.util.ConvertToInt(A,64,"signed",void 0,Q,B)};$.converters["unsigned long long"]=function(A,Q,B){return $.util.ConvertToInt(A,64,"unsigned",void 0,Q,B)};$.converters["unsigned long"]=function(A,Q,B){return $.util.ConvertToInt(A,32,"unsigned",void 0,Q,B)};$.converters["unsigned short"]=function(A,Q,B,I){return $.util.ConvertToInt(A,16,"unsigned",I,Q,B)};$.converters.ArrayBuffer=function(A,Q,B,I){if($.util.Type(A)!=="Object"||!fQ.isAnyArrayBuffer(A))throw $.errors.conversionFailed({prefix:Q,argument:`${B} ("${$.util.Stringify(A)}")`,types:["ArrayBuffer"]});if(I?.allowShared===!1&&fQ.isSharedArrayBuffer(A))throw $.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(A.resizable||A.growable)throw $.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return A};$.converters.TypedArray=function(A,Q,B,I,E){if($.util.Type(A)!=="Object"||!fQ.isTypedArray(A)||A.constructor.name!==Q.name)throw $.errors.conversionFailed({prefix:B,argument:`${I} ("${$.util.Stringify(A)}")`,types:[Q.name]});if(E?.allowShared===!1&&fQ.isSharedArrayBuffer(A.buffer))throw $.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(A.buffer.resizable||A.buffer.growable)throw $.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return A};$.converters.DataView=function(A,Q,B,I){if($.util.Type(A)!=="Object"||!fQ.isDataView(A))throw $.errors.exception({header:Q,message:`${B} is not a DataView.`});if(I?.allowShared===!1&&fQ.isSharedArrayBuffer(A.buffer))throw $.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(A.buffer.resizable||A.buffer.growable)throw $.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return A};$.converters.BufferSource=function(A,Q,B,I){if(fQ.isAnyArrayBuffer(A))return $.converters.ArrayBuffer(A,Q,B,{...I,allowShared:!1});if(fQ.isTypedArray(A))return $.converters.TypedArray(A,A.constructor,Q,B,{...I,allowShared:!1});if(fQ.isDataView(A))return $.converters.DataView(A,Q,B,{...I,allowShared:!1});throw $.errors.conversionFailed({prefix:Q,argument:`${B} ("${$.util.Stringify(A)}")`,types:["BufferSource"]})};$.converters["sequence"]=$.sequenceConverter($.converters.ByteString);$.converters["sequence>"]=$.sequenceConverter($.converters["sequence"]);$.converters["record"]=$.recordConverter($.converters.ByteString,$.converters.ByteString);KM.exports={webidl:$}});var BQ=W((jb,bM)=>{var{Transform:D5}=z("node:stream"),zM=z("node:zlib"),{redirectStatusSet:Y5,referrerPolicySet:J5,badPortsSet:U5}=yE(),{getGlobalOrigin:SM}=MD(),{collectASequenceOfCodePoints:rB,collectAnHTTPQuotedString:G5,removeChars:N5,parseMIMEType:M5}=oA(),{performance:w5}=z("node:perf_hooks"),{isBlobLike:W5,ReadableStreamFrom:L5,isValidHTTPToken:$M,normalizedMethodRecordsBase:V5}=p(),tB=z("node:assert"),{isUint8Array:Z5}=z("node:util/types"),{webidl:kE}=jA(),HM=[],Kg;try{Kg=z("node:crypto");let A=["sha256","sha384","sha512"];HM=Kg.getHashes().filter((Q)=>A.includes(Q))}catch{}function TM(A){let Q=A.urlList,B=Q.length;return B===0?null:Q[B-1].toString()}function R5(A,Q){if(!Y5.has(A.status))return null;let B=A.headersList.get("location",!0);if(B!==null&&jM(B)){if(!_M(B))B=X5(B);B=new URL(B,TM(A))}if(B&&!B.hash)B.hash=Q;return B}function _M(A){for(let Q=0;Q126||B<32)return!1}return!0}function X5(A){return Buffer.from(A,"binary").toString("utf8")}function vE(A){return A.urlList[A.urlList.length-1]}function K5(A){let Q=vE(A);if(yM(Q)&&U5.has(Q.port))return"blocked";return"allowed"}function z5(A){return A instanceof Error||(A?.constructor?.name==="Error"||A?.constructor?.name==="DOMException")}function S5(A){for(let Q=0;Q=32&&B<=126||B>=128&&B<=255))return!1}return!0}var $5=$M;function jM(A){return(A[0]==="\t"||A[0]===" "||A[A.length-1]==="\t"||A[A.length-1]===" "||A.includes(` -`)||A.includes("\r")||A.includes("\x00"))===!1}function H5(A,Q){let{headersList:B}=Q,I=(B.get("referrer-policy",!0)??"").split(","),E="";if(I.length>0)for(let C=I.length;C!==0;C--){let g=I[C-1].trim();if(J5.has(g)){E=g;break}}if(E!=="")A.referrerPolicy=E}function T5(){return"allowed"}function _5(){return"success"}function j5(){return"success"}function x5(A){let Q=null;Q=A.mode,A.headersList.set("sec-fetch-mode",Q,!0)}function O5(A){let Q=A.origin;if(Q==="client"||Q===void 0)return;if(A.responseTainting==="cors"||A.mode==="websocket")A.headersList.append("origin",Q,!0);else if(A.method!=="GET"&&A.method!=="HEAD"){switch(A.referrerPolicy){case"no-referrer":Q=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":if(A.origin&&VD(A.origin)&&!VD(vE(A)))Q=null;break;case"same-origin":if(!zg(A,vE(A)))Q=null;break;default:}A.headersList.append("origin",Q,!0)}}function fI(A,Q){return A}function P5(A,Q,B){if(!A?.startTime||A.startTime4096)I=E;let C=zg(A,I),g=fE(I)&&!fE(A.url);switch(Q){case"origin":return E!=null?E:LD(B,!0);case"unsafe-url":return I;case"same-origin":return C?E:"no-referrer";case"origin-when-cross-origin":return C?I:E;case"strict-origin-when-cross-origin":{let F=vE(A);if(zg(I,F))return I;if(fE(I)&&!fE(F))return"no-referrer";return E}case"strict-origin":case"no-referrer-when-downgrade":default:return g?"no-referrer":E}}function LD(A,Q){if(tB(A instanceof URL),A=new URL(A),A.protocol==="file:"||A.protocol==="about:"||A.protocol==="blank:")return"no-referrer";if(A.username="",A.password="",A.hash="",Q)A.pathname="",A.search="";return A}function fE(A){if(!(A instanceof URL))return!1;if(A.href==="about:blank"||A.href==="about:srcdoc")return!0;if(A.protocol==="data:")return!0;if(A.protocol==="file:")return!0;return Q(A.origin);function Q(B){if(B==null||B==="null")return!1;let I=new URL(B);if(I.protocol==="https:"||I.protocol==="wss:")return!0;if(/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(I.hostname)||(I.hostname==="localhost"||I.hostname.includes("localhost."))||I.hostname.endsWith(".localhost"))return!0;return!1}}function f5(A,Q){if(Kg===void 0)return!0;let B=OM(Q);if(B==="no metadata")return!0;if(B.length===0)return!0;let I=b5(B),E=m5(B,I);for(let C of E){let{algo:g,hash:F}=C,D=Kg.createHash(g).update(A).digest("base64");if(D[D.length-1]==="=")if(D[D.length-2]==="=")D=D.slice(0,-2);else D=D.slice(0,-1);if(u5(D,F))return!0}return!1}var v5=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function OM(A){let Q=[],B=!0;for(let I of A.split(" ")){B=!1;let E=v5.exec(I);if(E===null||E.groups===void 0||E.groups.algo===void 0)continue;let C=E.groups.algo.toLowerCase();if(HM.includes(C))Q.push(E.groups)}if(B===!0)return"no metadata";return Q}function b5(A){let Q=A[0].algo;if(Q[3]==="5")return Q;for(let B=1;B{A=I,Q=E}),resolve:A,reject:Q}}function l5(A){return A.controller.state==="aborted"}function p5(A){return A.controller.state==="aborted"||A.controller.state==="terminated"}function i5(A){return V5[A.toLowerCase()]??A}function n5(A){let Q=JSON.stringify(A);if(Q===void 0)throw TypeError("Value is not JSON serializable");return tB(typeof Q==="string"),Q}var a5=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function PM(A,Q,B=0,I=1){class E{#A;#Q;#E;constructor(C,g){this.#A=C,this.#Q=g,this.#E=0}next(){if(typeof this!=="object"||this===null||!(#A in this))throw TypeError(`'next' called on an object that does not implement interface ${A} Iterator.`);let C=this.#E,g=this.#A[Q],F=g.length;if(C>=F)return{value:void 0,done:!0};let{[B]:D,[I]:J}=g[C];this.#E=C+1;let Y;switch(this.#Q){case"key":Y=D;break;case"value":Y=J;break;case"key+value":Y=[D,J];break}return{value:Y,done:!1}}}return delete E.prototype.constructor,Object.setPrototypeOf(E.prototype,a5),Object.defineProperties(E.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${A} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(C,g){return new E(C,g)}}function s5(A,Q,B,I=0,E=1){let C=PM(A,B,I,E),g={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return kE.brandCheck(this,Q),C(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return kE.brandCheck(this,Q),C(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return kE.brandCheck(this,Q),C(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(D,J=globalThis){if(kE.brandCheck(this,Q),kE.argumentLengthCheck(arguments,1,`${A}.forEach`),typeof D!=="function")throw TypeError(`Failed to execute 'forEach' on '${A}': parameter 1 is not of type 'Function'.`);for(let{0:Y,1:U}of C(this,"key+value"))D.call(J,U,Y,this)}}};return Object.defineProperties(Q.prototype,{...g,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:g.entries.value}})}async function o5(A,Q,B){let I=Q,E=B,C;try{C=A.stream.getReader()}catch(g){E(g);return}try{I(await qM(C))}catch(g){E(g)}}function r5(A){return A instanceof ReadableStream||A[Symbol.toStringTag]==="ReadableStream"&&typeof A.tee==="function"}function t5(A){try{A.close(),A.byobRequest?.respond(0)}catch(Q){if(!Q.message.includes("Controller is already closed")&&!Q.message.includes("ReadableStream is already closed"))throw Q}}var e5=/[^\x00-\xFF]/;function Xg(A){return tB(!e5.test(A)),A}async function qM(A){let Q=[],B=0;while(!0){let{done:I,value:E}=await A.read();if(I)return Buffer.concat(Q,B);if(!Z5(E))throw TypeError("Received non-Uint8Array chunk");Q.push(E),B+=E.length}}function AS(A){tB("protocol"in A);let Q=A.protocol;return Q==="about:"||Q==="blob:"||Q==="data:"}function VD(A){return typeof A==="string"&&A[5]===":"&&A[0]==="h"&&A[1]==="t"&&A[2]==="t"&&A[3]==="p"&&A[4]==="s"||A.protocol==="https:"}function yM(A){tB("protocol"in A);let Q=A.protocol;return Q==="http:"||Q==="https:"}function QS(A,Q){let B=A;if(!B.startsWith("bytes"))return"failure";let I={position:5};if(Q)rB((D)=>D==="\t"||D===" ",B,I);if(B.charCodeAt(I.position)!==61)return"failure";if(I.position++,Q)rB((D)=>D==="\t"||D===" ",B,I);let E=rB((D)=>{let J=D.charCodeAt(0);return J>=48&&J<=57},B,I),C=E.length?Number(E):null;if(Q)rB((D)=>D==="\t"||D===" ",B,I);if(B.charCodeAt(I.position)!==45)return"failure";if(I.position++,Q)rB((D)=>D==="\t"||D===" ",B,I);let g=rB((D)=>{let J=D.charCodeAt(0);return J>=48&&J<=57},B,I),F=g.length?Number(g):null;if(I.positionF)return"failure";return{rangeStartValue:C,rangeEndValue:F}}function BS(A,Q,B){let I="bytes ";return I+=Xg(`${A}`),I+="-",I+=Xg(`${Q}`),I+="/",I+=Xg(`${B}`),I}class hM extends D5{#A;constructor(A){super();this.#A=A}_transform(A,Q,B){if(!this._inflateStream){if(A.length===0){B();return}this._inflateStream=(A[0]&15)===8?zM.createInflate(this.#A):zM.createInflateRaw(this.#A),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",(I)=>this.destroy(I))}this._inflateStream.write(A,Q,B)}_final(A){if(this._inflateStream)this._inflateStream.end(),this._inflateStream=null;A()}}function IS(A){return new hM(A)}function ES(A){let Q=null,B=null,I=null,E=kM("content-type",A);if(E===null)return"failure";for(let C of E){let g=M5(C);if(g==="failure"||g.essence==="*/*")continue;if(I=g,I.essence!==B){if(Q=null,I.parameters.has("charset"))Q=I.parameters.get("charset");B=I.essence}else if(!I.parameters.has("charset")&&Q!==null)I.parameters.set("charset",Q)}if(I==null)return"failure";return I}function CS(A){let Q=A,B={position:0},I=[],E="";while(B.positionC!=='"'&&C!==",",Q,B),B.positionC===9||C===32),I.push(E),E=""}return I}function kM(A,Q){let B=Q.get(A,!0);if(B===null)return null;return CS(B)}var gS=new TextDecoder;function FS(A){if(A.length===0)return"";if(A[0]===239&&A[1]===187&&A[2]===191)A=A.subarray(3);return gS.decode(A)}class fM{get baseUrl(){return SM()}get origin(){return this.baseUrl?.origin}policyContainer=xM()}class vM{settingsObject=new fM}var DS=new vM;bM.exports={isAborted:l5,isCancelled:p5,isValidEncodedURL:_M,createDeferredPromise:d5,ReadableStreamFrom:L5,tryUpgradeRequestToAPotentiallyTrustworthyURL:c5,clampAndCoarsenConnectionTimingInfo:P5,coarsenedSharedCurrentTime:q5,determineRequestsReferrer:k5,makePolicyContainer:xM,clonePolicyContainer:h5,appendFetchMetadata:x5,appendRequestOriginHeader:O5,TAOCheck:j5,corsCheck:_5,crossOriginResourcePolicyCheck:T5,createOpaqueTimingInfo:y5,setRequestReferrerPolicyOnRedirect:H5,isValidHTTPToken:$M,requestBadPort:K5,requestCurrentURL:vE,responseURL:TM,responseLocationURL:R5,isBlobLike:W5,isURLPotentiallyTrustworthy:fE,isValidReasonPhrase:S5,sameOrigin:zg,normalizeMethod:i5,serializeJavascriptValueToJSONString:n5,iteratorMixin:s5,createIterator:PM,isValidHeaderName:$5,isValidHeaderValue:jM,isErrorLike:z5,fullyReadBody:o5,bytesMatch:f5,isReadableStreamLike:r5,readableStreamClose:t5,isomorphicEncode:Xg,urlIsLocal:AS,urlHasHttpsScheme:VD,urlIsHttpHttpsScheme:yM,readAllBytes:qM,simpleRangeHeaderValue:QS,buildContentRange:BS,parseMetadata:OM,createInflate:IS,extractMimeType:ES,getDecodeSplit:kM,utf8DecodeBytes:FS,environmentSettingsObject:DS}});var zB=W((xb,mM)=>{mM.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}});var ZD=W((Ob,uM)=>{var{Blob:YS,File:JS}=z("node:buffer"),{kState:CB}=zB(),{webidl:vQ}=jA();class bQ{constructor(A,Q,B={}){let I=Q,E=B.type,C=B.lastModified??Date.now();this[CB]={blobLike:A,name:I,type:E,lastModified:C}}stream(...A){return vQ.brandCheck(this,bQ),this[CB].blobLike.stream(...A)}arrayBuffer(...A){return vQ.brandCheck(this,bQ),this[CB].blobLike.arrayBuffer(...A)}slice(...A){return vQ.brandCheck(this,bQ),this[CB].blobLike.slice(...A)}text(...A){return vQ.brandCheck(this,bQ),this[CB].blobLike.text(...A)}get size(){return vQ.brandCheck(this,bQ),this[CB].blobLike.size}get type(){return vQ.brandCheck(this,bQ),this[CB].blobLike.type}get name(){return vQ.brandCheck(this,bQ),this[CB].name}get lastModified(){return vQ.brandCheck(this,bQ),this[CB].lastModified}get[Symbol.toStringTag](){return"File"}}vQ.converters.Blob=vQ.interfaceConverter(YS);function US(A){return A instanceof JS||A&&(typeof A.stream==="function"||typeof A.arrayBuffer==="function")&&A[Symbol.toStringTag]==="File"}uM.exports={FileLike:bQ,isFileLike:US}});var bE=W((Pb,iM)=>{var{isBlobLike:Sg,iteratorMixin:GS}=BQ(),{kState:lA}=zB(),{kEnumerableProperty:vI}=p(),{FileLike:cM,isFileLike:NS}=ZD(),{webidl:DA}=jA(),{File:pM}=z("node:buffer"),dM=z("node:util"),lM=globalThis.File??pM;class mQ{constructor(A){if(DA.util.markAsUncloneable(this),A!==void 0)throw DA.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[lA]=[]}append(A,Q,B=void 0){DA.brandCheck(this,mQ);let I="FormData.append";if(DA.argumentLengthCheck(arguments,2,I),arguments.length===3&&!Sg(Q))throw TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");A=DA.converters.USVString(A,I,"name"),Q=Sg(Q)?DA.converters.Blob(Q,I,"value",{strict:!1}):DA.converters.USVString(Q,I,"value"),B=arguments.length===3?DA.converters.USVString(B,I,"filename"):void 0;let E=RD(A,Q,B);this[lA].push(E)}delete(A){DA.brandCheck(this,mQ);let Q="FormData.delete";DA.argumentLengthCheck(arguments,1,Q),A=DA.converters.USVString(A,Q,"name"),this[lA]=this[lA].filter((B)=>B.name!==A)}get(A){DA.brandCheck(this,mQ);let Q="FormData.get";DA.argumentLengthCheck(arguments,1,Q),A=DA.converters.USVString(A,Q,"name");let B=this[lA].findIndex((I)=>I.name===A);if(B===-1)return null;return this[lA][B].value}getAll(A){DA.brandCheck(this,mQ);let Q="FormData.getAll";return DA.argumentLengthCheck(arguments,1,Q),A=DA.converters.USVString(A,Q,"name"),this[lA].filter((B)=>B.name===A).map((B)=>B.value)}has(A){DA.brandCheck(this,mQ);let Q="FormData.has";return DA.argumentLengthCheck(arguments,1,Q),A=DA.converters.USVString(A,Q,"name"),this[lA].findIndex((B)=>B.name===A)!==-1}set(A,Q,B=void 0){DA.brandCheck(this,mQ);let I="FormData.set";if(DA.argumentLengthCheck(arguments,2,I),arguments.length===3&&!Sg(Q))throw TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");A=DA.converters.USVString(A,I,"name"),Q=Sg(Q)?DA.converters.Blob(Q,I,"name",{strict:!1}):DA.converters.USVString(Q,I,"name"),B=arguments.length===3?DA.converters.USVString(B,I,"name"):void 0;let E=RD(A,Q,B),C=this[lA].findIndex((g)=>g.name===A);if(C!==-1)this[lA]=[...this[lA].slice(0,C),E,...this[lA].slice(C+1).filter((g)=>g.name!==A)];else this[lA].push(E)}[dM.inspect.custom](A,Q){let B=this[lA].reduce((E,C)=>{if(E[C.name])if(Array.isArray(E[C.name]))E[C.name].push(C.value);else E[C.name]=[E[C.name],C.value];else E[C.name]=C.value;return E},{__proto__:null});Q.depth??=A,Q.colors??=!0;let I=dM.formatWithOptions(Q,B);return`FormData ${I.slice(I.indexOf("]")+2)}`}}GS("FormData",mQ,lA,"name","value");Object.defineProperties(mQ.prototype,{append:vI,delete:vI,get:vI,getAll:vI,has:vI,set:vI,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function RD(A,Q,B){if(typeof Q==="string");else{if(!NS(Q))Q=Q instanceof Blob?new lM([Q],"blob",{type:Q.type}):new cM(Q,"blob",{type:Q.type});if(B!==void 0){let I={type:Q.type,lastModified:Q.lastModified};Q=Q instanceof pM?new lM([Q],B,I):new cM(Q,B,I)}}return{name:A,value:Q}}iM.exports={FormData:mQ,makeEntry:RD}});var tM=W((qb,rM)=>{var{isUSVString:nM,bufferToLowerCasedHeaderName:MS}=p(),{utf8DecodeBytes:wS}=BQ(),{HTTP_TOKEN_CODEPOINTS:WS,isomorphicDecode:aM}=oA(),{isFileLike:LS}=ZD(),{makeEntry:VS}=bE(),$g=z("node:assert"),{File:ZS}=z("node:buffer"),RS=globalThis.File??ZS,XS=Buffer.from('form-data; name="'),sM=Buffer.from("; filename"),KS=Buffer.from("--"),zS=Buffer.from(`--\r -`);function SS(A){for(let Q=0;Q70)return!1;for(let B=0;B=48&&I<=57||I>=65&&I<=90||I>=97&&I<=122||I===39||I===45||I===95))return!1}return!0}function HS(A,Q){$g(Q!=="failure"&&Q.essence==="multipart/form-data");let B=Q.parameters.get("boundary");if(B===void 0)return"failure";let I=Buffer.from(`--${B}`,"utf8"),E=[],C={position:0};while(A[C.position]===13&&A[C.position+1]===10)C.position+=2;let g=A.length;while(A[g-1]===10&&A[g-2]===13)g-=2;if(g!==A.length)A=A.subarray(0,g);while(!0){if(A.subarray(C.position,C.position+I.length).equals(I))C.position+=I.length;else return"failure";if(C.position===A.length-2&&Hg(A,KS,C)||C.position===A.length-4&&Hg(A,zS,C))return E;if(A[C.position]!==13||A[C.position+1]!==10)return"failure";C.position+=2;let F=TS(A,C);if(F==="failure")return"failure";let{name:D,filename:J,contentType:Y,encoding:U}=F;C.position+=2;let N;{let L=A.indexOf(I.subarray(2),C.position);if(L===-1)return"failure";if(N=A.subarray(C.position,L-4),C.position+=N.length,U==="base64")N=Buffer.from(N.toString(),"base64")}if(A[C.position]!==13||A[C.position+1]!==10)return"failure";else C.position+=2;let w;if(J!==null){if(Y??="text/plain",!SS(Y))Y="";w=new RS([N],J,{type:Y})}else w=wS(Buffer.from(N));$g(nM(D)),$g(typeof w==="string"&&nM(w)||LS(w)),E.push(VS(D,w,J))}}function TS(A,Q){let B=null,I=null,E=null,C=null;while(!0){if(A[Q.position]===13&&A[Q.position+1]===10){if(B===null)return"failure";return{name:B,filename:I,contentType:E,encoding:C}}let g=bI((F)=>F!==10&&F!==13&&F!==58,A,Q);if(g=XD(g,!0,!0,(F)=>F===9||F===32),!WS.test(g.toString()))return"failure";if(A[Q.position]!==58)return"failure";switch(Q.position++,bI((F)=>F===32||F===9,A,Q),MS(g)){case"content-disposition":{if(B=I=null,!Hg(A,XS,Q))return"failure";if(Q.position+=17,B=oM(A,Q),B===null)return"failure";if(Hg(A,sM,Q)){let F=Q.position+sM.length;if(A[F]===42)Q.position+=1,F+=1;if(A[F]!==61||A[F+1]!==34)return"failure";if(Q.position+=12,I=oM(A,Q),I===null)return"failure"}break}case"content-type":{let F=bI((D)=>D!==10&&D!==13,A,Q);F=XD(F,!1,!0,(D)=>D===9||D===32),E=aM(F);break}case"content-transfer-encoding":{let F=bI((D)=>D!==10&&D!==13,A,Q);F=XD(F,!1,!0,(D)=>D===9||D===32),C=aM(F);break}default:bI((F)=>F!==10&&F!==13,A,Q)}if(A[Q.position]!==13&&A[Q.position+1]!==10)return"failure";else Q.position+=2}}function oM(A,Q){$g(A[Q.position-1]===34);let B=bI((I)=>I!==10&&I!==13&&I!==34,A,Q);if(A[Q.position]!==34)return null;else Q.position++;return B=new TextDecoder().decode(B).replace(/%0A/ig,` -`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),B}function bI(A,Q,B){let I=B.position;while(I0&&I(A[C]))C--;return E===0&&C===A.length-1?A:A.subarray(E,C+1)}function Hg(A,Q,B){if(A.length{var mE=p(),{ReadableStreamFrom:_S,isBlobLike:eM,isReadableStreamLike:jS,readableStreamClose:xS,createDeferredPromise:OS,fullyReadBody:PS,extractMimeType:qS,utf8DecodeBytes:Bw}=BQ(),{FormData:Aw}=bE(),{kState:uI}=zB(),{webidl:yS}=jA(),{Blob:hS}=z("node:buffer"),KD=z("node:assert"),{isErrored:Iw,isDisturbed:kS}=z("node:stream"),{isArrayBuffer:fS}=z("node:util/types"),{serializeAMimeType:vS}=oA(),{multipartFormDataParser:bS}=tM(),zD;try{let A=z("node:crypto");zD=(Q)=>A.randomInt(0,Q)}catch{zD=(A)=>Math.floor(Math.random(A))}var Tg=new TextEncoder;function mS(){}var Ew=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,Cw;if(Ew)Cw=new FinalizationRegistry((A)=>{let Q=A.deref();if(Q&&!Q.locked&&!kS(Q)&&!Iw(Q))Q.cancel("Response object has been garbage collected").catch(mS)});function gw(A,Q=!1){let B=null;if(A instanceof ReadableStream)B=A;else if(eM(A))B=A.stream();else B=new ReadableStream({async pull(D){let J=typeof E==="string"?Tg.encode(E):E;if(J.byteLength)D.enqueue(J);queueMicrotask(()=>xS(D))},start(){},type:"bytes"});KD(jS(B));let I=null,E=null,C=null,g=null;if(typeof A==="string")E=A,g="text/plain;charset=UTF-8";else if(A instanceof URLSearchParams)E=A.toString(),g="application/x-www-form-urlencoded;charset=UTF-8";else if(fS(A))E=new Uint8Array(A.slice());else if(ArrayBuffer.isView(A))E=new Uint8Array(A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength));else if(mE.isFormDataLike(A)){let D=`----formdata-undici-0${`${zD(100000000000)}`.padStart(11,"0")}`,J=`--${D}\r -Content-Disposition: form-data`;/*! formdata-polyfill. MIT License. Jimmy Wärting */let Y=(Z)=>Z.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),U=(Z)=>Z.replace(/\r?\n|\r/g,`\r -`),N=[],w=new Uint8Array([13,10]);C=0;let L=!1;for(let[Z,R]of A)if(typeof R==="string"){let x=Tg.encode(J+`; name="${Y(U(Z))}"\r +import{createRequire as GVA}from"node:module";var ezA=Object.create;var{getPrototypeOf:AVA,defineProperty:DK,getOwnPropertyNames:QVA}=Object;var BVA=Object.prototype.hasOwnProperty;function IVA(A){return this[A]}var CVA,EVA,f=(A,Q,B)=>{var I=A!=null&&typeof A==="object";if(I){var C=Q?CVA??=new WeakMap:EVA??=new WeakMap,E=C.get(A);if(E)return E}B=A!=null?ezA(AVA(A)):{};let Y=Q||!A||!A.__esModule?DK(B,"default",{value:A,enumerable:!0}):B;for(let J of QVA(A))if(!BVA.call(Y,J))DK(Y,J,{get:IVA.bind(A,J),enumerable:!0});if(I)C.set(A,Y);return Y};var U=(A,Q)=>()=>(Q||A((Q={exports:{}}).exports,Q),Q.exports);var YVA=(A)=>A;function JVA(A,Q){this[A]=YVA.bind(null,Q)}var FVA=(A,Q)=>{for(var B in Q)DK(A,B,{get:Q[B],enumerable:!0,configurable:!0,set:JVA.bind(Q,B)})};var M=GVA(import.meta.url);var zK=U((MVA)=>{var ILQ=M("net"),wVA=M("tls"),wK=M("http"),rj=M("https"),KVA=M("events"),CLQ=M("assert"),zVA=M("util");MVA.httpOverHttp=VVA;MVA.httpsOverHttp=$VA;MVA.httpOverHttps=LVA;MVA.httpsOverHttps=HVA;function VVA(A){var Q=new ME(A);return Q.request=wK.request,Q}function $VA(A){var Q=new ME(A);return Q.request=wK.request,Q.createSocket=tj,Q.defaultPort=443,Q}function LVA(A){var Q=new ME(A);return Q.request=rj.request,Q}function HVA(A){var Q=new ME(A);return Q.request=rj.request,Q.createSocket=tj,Q.defaultPort=443,Q}function ME(A){var Q=this;Q.options=A||{},Q.proxyOptions=Q.options.proxy||{},Q.maxSockets=Q.options.maxSockets||wK.Agent.defaultMaxSockets,Q.requests=[],Q.sockets=[],Q.on("free",function(I,C,E,Y){var J=ej(C,E,Y);for(var F=0,G=Q.requests.length;F=this.maxSockets){E.requests.push(Y);return}E.createSocket(Y,function(J){J.on("free",F),J.on("close",G),J.on("agentRemove",G),Q.onSocket(J);function F(){E.emit("free",J,Y)}function G(D){E.removeSocket(J),J.removeListener("free",F),J.removeListener("close",G),J.removeListener("agentRemove",G)}})};ME.prototype.createSocket=function(Q,B){var I=this,C={};I.sockets.push(C);var E=KK({},I.proxyOptions,{method:"CONNECT",path:Q.host+":"+Q.port,agent:!1,headers:{host:Q.host+":"+Q.port}});if(Q.localAddress)E.localAddress=Q.localAddress;if(E.proxyAuth)E.headers=E.headers||{},E.headers["Proxy-Authorization"]="Basic "+new Buffer(E.proxyAuth).toString("base64");L0("making CONNECT request");var Y=I.request(E);Y.useChunkedEncodingByDefault=!1,Y.once("response",J),Y.once("upgrade",F),Y.once("connect",G),Y.once("error",D),Y.end();function J(Z){Z.upgrade=!0}function F(Z,W,X){process.nextTick(function(){G(Z,W,X)})}function G(Z,W,X){if(Y.removeAllListeners(),W.removeAllListeners(),Z.statusCode!==200){L0("tunneling socket could not be established, statusCode=%d",Z.statusCode),W.destroy();var w=Error("tunneling socket could not be established, statusCode="+Z.statusCode);w.code="ECONNRESET",Q.request.emit("error",w),I.removeSocket(C);return}if(X.length>0){L0("got illegal response body from proxy"),W.destroy();var w=Error("got illegal response body from proxy");w.code="ECONNRESET",Q.request.emit("error",w),I.removeSocket(C);return}return L0("tunneling connection has established"),I.sockets[I.sockets.indexOf(C)]=W,B(W)}function D(Z){Y.removeAllListeners(),L0(`tunneling socket could not be established, cause=%s +`,Z.message,Z.stack);var W=Error("tunneling socket could not be established, cause="+Z.message);W.code="ECONNRESET",Q.request.emit("error",W),I.removeSocket(C)}};ME.prototype.removeSocket=function(Q){var B=this.sockets.indexOf(Q);if(B===-1)return;this.sockets.splice(B,1);var I=this.requests.shift();if(I)this.createSocket(I,function(C){I.request.onSocket(C)})};function tj(A,Q){var B=this;ME.prototype.createSocket.call(B,A,function(I){var C=A.request.getHeader("host"),E=KK({},B.options,{socket:I,servername:C?C.replace(/:.*$/,""):A.host}),Y=wVA.connect(0,E);B.sockets[B.sockets.indexOf(I)]=Y,Q(Y)})}function ej(A,Q,B){if(typeof A==="string")return{host:A,port:Q,localAddress:B};return A}function KK(A){for(var Q=1,B=arguments.length;Q{AR.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}});var TA=U((JLQ,nR)=>{var QR=Symbol.for("undici.error.UND_ERR");class YQ extends Error{constructor(A){super(A);this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](A){return A&&A[QR]===!0}[QR]=!0}var BR=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT");class RR extends YQ{constructor(A){super(A);this.name="ConnectTimeoutError",this.message=A||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[BR]===!0}[BR]=!0}var IR=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT");class qR extends YQ{constructor(A){super(A);this.name="HeadersTimeoutError",this.message=A||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[IR]===!0}[IR]=!0}var CR=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW");class OR extends YQ{constructor(A){super(A);this.name="HeadersOverflowError",this.message=A||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](A){return A&&A[CR]===!0}[CR]=!0}var ER=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT");class TR extends YQ{constructor(A){super(A);this.name="BodyTimeoutError",this.message=A||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[ER]===!0}[ER]=!0}var YR=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE");class PR extends YQ{constructor(A,Q,B,I){super(A);this.name="ResponseStatusCodeError",this.message=A||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=I,this.status=Q,this.statusCode=Q,this.headers=B}static[Symbol.hasInstance](A){return A&&A[YR]===!0}[YR]=!0}var JR=Symbol.for("undici.error.UND_ERR_INVALID_ARG");class kR extends YQ{constructor(A){super(A);this.name="InvalidArgumentError",this.message=A||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](A){return A&&A[JR]===!0}[JR]=!0}var FR=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE");class SR extends YQ{constructor(A){super(A);this.name="InvalidReturnValueError",this.message=A||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](A){return A&&A[FR]===!0}[FR]=!0}var GR=Symbol.for("undici.error.UND_ERR_ABORT");class VK extends YQ{constructor(A){super(A);this.name="AbortError",this.message=A||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](A){return A&&A[GR]===!0}[GR]=!0}var DR=Symbol.for("undici.error.UND_ERR_ABORTED");class yR extends VK{constructor(A){super(A);this.name="AbortError",this.message=A||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](A){return A&&A[DR]===!0}[DR]=!0}var ZR=Symbol.for("undici.error.UND_ERR_INFO");class _R extends YQ{constructor(A){super(A);this.name="InformationalError",this.message=A||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](A){return A&&A[ZR]===!0}[ZR]=!0}var WR=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH");class fR extends YQ{constructor(A){super(A);this.name="RequestContentLengthMismatchError",this.message=A||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[WR]===!0}[WR]=!0}var XR=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH");class gR extends YQ{constructor(A){super(A);this.name="ResponseContentLengthMismatchError",this.message=A||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[XR]===!0}[XR]=!0}var UR=Symbol.for("undici.error.UND_ERR_DESTROYED");class hR extends YQ{constructor(A){super(A);this.name="ClientDestroyedError",this.message=A||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](A){return A&&A[UR]===!0}[UR]=!0}var wR=Symbol.for("undici.error.UND_ERR_CLOSED");class xR extends YQ{constructor(A){super(A);this.name="ClientClosedError",this.message=A||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](A){return A&&A[wR]===!0}[wR]=!0}var KR=Symbol.for("undici.error.UND_ERR_SOCKET");class vR extends YQ{constructor(A,Q){super(A);this.name="SocketError",this.message=A||"Socket error",this.code="UND_ERR_SOCKET",this.socket=Q}static[Symbol.hasInstance](A){return A&&A[KR]===!0}[KR]=!0}var zR=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED");class bR extends YQ{constructor(A){super(A);this.name="NotSupportedError",this.message=A||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](A){return A&&A[zR]===!0}[zR]=!0}var VR=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM");class mR extends YQ{constructor(A){super(A);this.name="MissingUpstreamError",this.message=A||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](A){return A&&A[VR]===!0}[VR]=!0}var $R=Symbol.for("undici.error.UND_ERR_HTTP_PARSER");class dR extends Error{constructor(A,Q,B){super(A);this.name="HTTPParserError",this.code=Q?`HPE_${Q}`:void 0,this.data=B?B.toString():void 0}static[Symbol.hasInstance](A){return A&&A[$R]===!0}[$R]=!0}var LR=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE");class cR extends YQ{constructor(A){super(A);this.name="ResponseExceededMaxSizeError",this.message=A||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](A){return A&&A[LR]===!0}[LR]=!0}var HR=Symbol.for("undici.error.UND_ERR_REQ_RETRY");class uR extends YQ{constructor(A,Q,{headers:B,data:I}){super(A);this.name="RequestRetryError",this.message=A||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=Q,this.data=I,this.headers=B}static[Symbol.hasInstance](A){return A&&A[HR]===!0}[HR]=!0}var MR=Symbol.for("undici.error.UND_ERR_RESPONSE");class lR extends YQ{constructor(A,Q,{headers:B,data:I}){super(A);this.name="ResponseError",this.message=A||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=Q,this.data=I,this.headers=B}static[Symbol.hasInstance](A){return A&&A[MR]===!0}[MR]=!0}var NR=Symbol.for("undici.error.UND_ERR_PRX_TLS");class pR extends YQ{constructor(A,Q,B){super(Q,{cause:A,...B??{}});this.name="SecureProxyConnectionError",this.message=Q||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=A}static[Symbol.hasInstance](A){return A&&A[NR]===!0}[NR]=!0}var jR=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");class iR extends YQ{constructor(A){super(A);this.name="MessageSizeExceededError",this.message=A||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](A){return A&&A[jR]===!0}get[jR](){return!0}}nR.exports={AbortError:VK,HTTPParserError:dR,UndiciError:YQ,HeadersTimeoutError:qR,HeadersOverflowError:OR,BodyTimeoutError:TR,RequestContentLengthMismatchError:fR,ConnectTimeoutError:RR,ResponseStatusCodeError:PR,InvalidArgumentError:kR,InvalidReturnValueError:SR,RequestAbortedError:yR,ClientDestroyedError:hR,ClientClosedError:xR,InformationalError:_R,SocketError:vR,NotSupportedError:bR,ResponseContentLengthMismatchError:gR,BalancedPoolMissingUpstreamError:mR,ResponseExceededMaxSizeError:cR,RequestRetryError:uR,ResponseError:lR,SecureProxyConnectionError:pR,MessageSizeExceededError:iR}});var Z8=U((FLQ,aR)=>{var D8={},$K=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let A=0;A<$K.length;++A){let Q=$K[A],B=Q.toLowerCase();D8[Q]=D8[B]=B}Object.setPrototypeOf(D8,null);aR.exports={wellknownHeaderNames:$K,headerNameLowerCasedRecord:D8}});var tR=U((GLQ,rR)=>{var{wellknownHeaderNames:oR,headerNameLowerCasedRecord:TVA}=Z8();class MF{value=null;left=null;middle=null;right=null;code;constructor(A,Q,B){if(B===void 0||B>=A.length)throw TypeError("Unreachable");if((this.code=A.charCodeAt(B))>127)throw TypeError("key must be ascii string");if(A.length!==++B)this.middle=new MF(A,Q,B);else this.value=Q}add(A,Q){let B=A.length;if(B===0)throw TypeError("Unreachable");let I=0,C=this;while(!0){let E=A.charCodeAt(I);if(E>127)throw TypeError("key must be ascii string");if(C.code===E)if(B===++I){C.value=Q;break}else if(C.middle!==null)C=C.middle;else{C.middle=new MF(A,Q,I);break}else if(C.code=65)C|=32;while(I!==null){if(C===I.code){if(Q===++B)return I;I=I.middle;break}I=I.code{var BZ=M("node:assert"),{kDestroyed:Aq,kBodyUsed:NF,kListeners:HK,kBody:eR}=eA(),{IncomingMessage:PVA}=M("node:http"),X8=M("node:stream"),kVA=M("node:net"),{Blob:SVA}=M("node:buffer"),yVA=M("node:util"),{stringify:_VA}=M("node:querystring"),{EventEmitter:fVA}=M("node:events"),{InvalidArgumentError:vQ}=TA(),{headerNameLowerCasedRecord:gVA}=Z8(),{tree:Qq}=tR(),[hVA,xVA]=process.versions.node.split(".").map((A)=>Number(A));class MK{constructor(A){this[eR]=A,this[NF]=!1}async*[Symbol.asyncIterator](){BZ(!this[NF],"disturbed"),this[NF]=!0,yield*this[eR]}}function vVA(A){if(U8(A)){if(Yq(A)===0)A.on("data",function(){BZ(!1)});if(typeof A.readableDidRead!=="boolean")A[NF]=!1,fVA.prototype.on.call(A,"data",function(){this[NF]=!0});return A}else if(A&&typeof A.pipeTo==="function")return new MK(A);else if(A&&typeof A!=="string"&&!ArrayBuffer.isView(A)&&Eq(A))return new MK(A);else return A}function bVA(){}function U8(A){return A&&typeof A==="object"&&typeof A.pipe==="function"&&typeof A.on==="function"}function Bq(A){if(A===null)return!1;else if(A instanceof SVA)return!0;else if(typeof A!=="object")return!1;else{let Q=A[Symbol.toStringTag];return(Q==="Blob"||Q==="File")&&(("stream"in A)&&typeof A.stream==="function"||("arrayBuffer"in A)&&typeof A.arrayBuffer==="function")}}function mVA(A,Q){if(A.includes("?")||A.includes("#"))throw Error('Query params cannot be passed when url already contains "?" or "#".');let B=_VA(Q);if(B)A+="?"+B;return A}function Iq(A){let Q=parseInt(A,10);return Q===Number(A)&&Q>=0&&Q<=65535}function W8(A){return A!=null&&A[0]==="h"&&A[1]==="t"&&A[2]==="t"&&A[3]==="p"&&(A[4]===":"||A[4]==="s"&&A[5]===":")}function Cq(A){if(typeof A==="string"){if(A=new URL(A),!W8(A.origin||A.protocol))throw new vQ("Invalid URL protocol: the URL must start with `http:` or `https:`.");return A}if(!A||typeof A!=="object")throw new vQ("Invalid URL: The URL argument must be a non-null object.");if(!(A instanceof URL)){if(A.port!=null&&A.port!==""&&Iq(A.port)===!1)throw new vQ("Invalid URL: port must be a valid integer or a string representation of an integer.");if(A.path!=null&&typeof A.path!=="string")throw new vQ("Invalid URL path: the path must be a string or null/undefined.");if(A.pathname!=null&&typeof A.pathname!=="string")throw new vQ("Invalid URL pathname: the pathname must be a string or null/undefined.");if(A.hostname!=null&&typeof A.hostname!=="string")throw new vQ("Invalid URL hostname: the hostname must be a string or null/undefined.");if(A.origin!=null&&typeof A.origin!=="string")throw new vQ("Invalid URL origin: the origin must be a string or null/undefined.");if(!W8(A.origin||A.protocol))throw new vQ("Invalid URL protocol: the URL must start with `http:` or `https:`.");let Q=A.port!=null?A.port:A.protocol==="https:"?443:80,B=A.origin!=null?A.origin:`${A.protocol||""}//${A.hostname||""}:${Q}`,I=A.path!=null?A.path:`${A.pathname||""}${A.search||""}`;if(B[B.length-1]==="/")B=B.slice(0,B.length-1);if(I&&I[0]!=="/")I=`/${I}`;return new URL(`${B}${I}`)}if(!W8(A.origin||A.protocol))throw new vQ("Invalid URL protocol: the URL must start with `http:` or `https:`.");return A}function dVA(A){if(A=Cq(A),A.pathname!=="/"||A.search||A.hash)throw new vQ("invalid url");return A}function cVA(A){if(A[0]==="["){let B=A.indexOf("]");return BZ(B!==-1),A.substring(1,B)}let Q=A.indexOf(":");if(Q===-1)return A;return A.substring(0,Q)}function uVA(A){if(!A)return null;BZ(typeof A==="string");let Q=cVA(A);if(kVA.isIP(Q))return"";return Q}function lVA(A){return JSON.parse(JSON.stringify(A))}function pVA(A){return A!=null&&typeof A[Symbol.asyncIterator]==="function"}function Eq(A){return A!=null&&(typeof A[Symbol.iterator]==="function"||typeof A[Symbol.asyncIterator]==="function")}function Yq(A){if(A==null)return 0;else if(U8(A)){let Q=A._readableState;return Q&&Q.objectMode===!1&&Q.ended===!0&&Number.isFinite(Q.length)?Q.length:null}else if(Bq(A))return A.size!=null?A.size:null;else if(Gq(A))return A.byteLength;return null}function Jq(A){return A&&!!(A.destroyed||A[Aq]||X8.isDestroyed?.(A))}function iVA(A,Q){if(A==null||!U8(A)||Jq(A))return;if(typeof A.destroy==="function"){if(Object.getPrototypeOf(A).constructor===PVA)A.socket=null;A.destroy(Q)}else if(Q)queueMicrotask(()=>{A.emit("error",Q)});if(A.destroyed!==!0)A[Aq]=!0}var nVA=/timeout=(\d+)/;function aVA(A){let Q=A.toString().match(nVA);return Q?parseInt(Q[1],10)*1000:null}function Fq(A){return typeof A==="string"?gVA[A]??A.toLowerCase():Qq.lookup(A)??A.toString("latin1").toLowerCase()}function oVA(A){return Qq.lookup(A)??A.toString("latin1").toLowerCase()}function sVA(A,Q){if(Q===void 0)Q={};for(let B=0;BY.toString("utf8")):E.toString("utf8")}}if("content-length"in Q&&"content-disposition"in Q)Q["content-disposition"]=Buffer.from(Q["content-disposition"]).toString("latin1");return Q}function rVA(A){let Q=A.length,B=Array(Q),I=!1,C=-1,E,Y,J=0;for(let F=0;F{B.close(),B.byobRequest?.respond(0)});else{let E=Buffer.isBuffer(C)?C:Buffer.from(C);if(E.byteLength)B.enqueue(new Uint8Array(E))}return B.desiredSize>0},async cancel(B){await Q.return()},type:"bytes"})}function C$A(A){return A&&typeof A==="object"&&typeof A.append==="function"&&typeof A.delete==="function"&&typeof A.get==="function"&&typeof A.getAll==="function"&&typeof A.has==="function"&&typeof A.set==="function"&&A[Symbol.toStringTag]==="FormData"}function E$A(A,Q){if("addEventListener"in A)return A.addEventListener("abort",Q,{once:!0}),()=>A.removeEventListener("abort",Q);return A.addListener("abort",Q),()=>A.removeListener("abort",Q)}var Y$A=typeof String.prototype.toWellFormed==="function",J$A=typeof String.prototype.isWellFormed==="function";function Dq(A){return Y$A?`${A}`.toWellFormed():yVA.toUSVString(A)}function F$A(A){return J$A?`${A}`.isWellFormed():Dq(A)===`${A}`}function Zq(A){switch(A){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return A>=33&&A<=126}}function G$A(A){if(A.length===0)return!1;for(let Q=0;Q{var SA=M("node:diagnostics_channel"),RK=M("node:util"),w8=RK.debuglog("undici"),jK=RK.debuglog("fetch"),cY=RK.debuglog("websocket"),wq=!1,K$A={beforeConnect:SA.channel("undici:client:beforeConnect"),connected:SA.channel("undici:client:connected"),connectError:SA.channel("undici:client:connectError"),sendHeaders:SA.channel("undici:client:sendHeaders"),create:SA.channel("undici:request:create"),bodySent:SA.channel("undici:request:bodySent"),headers:SA.channel("undici:request:headers"),trailers:SA.channel("undici:request:trailers"),error:SA.channel("undici:request:error"),open:SA.channel("undici:websocket:open"),close:SA.channel("undici:websocket:close"),socketError:SA.channel("undici:websocket:socket_error"),ping:SA.channel("undici:websocket:ping"),pong:SA.channel("undici:websocket:pong")};if(w8.enabled||jK.enabled){let A=jK.enabled?jK:w8;SA.channel("undici:client:beforeConnect").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:C,host:E}}=Q;A("connecting to %s using %s%s",`${E}${C?`:${C}`:""}`,I,B)}),SA.channel("undici:client:connected").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:C,host:E}}=Q;A("connected to %s using %s%s",`${E}${C?`:${C}`:""}`,I,B)}),SA.channel("undici:client:connectError").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:C,host:E},error:Y}=Q;A("connection to %s using %s%s errored - %s",`${E}${C?`:${C}`:""}`,I,B,Y.message)}),SA.channel("undici:client:sendHeaders").subscribe((Q)=>{let{request:{method:B,path:I,origin:C}}=Q;A("sending request to %s %s/%s",B,C,I)}),SA.channel("undici:request:headers").subscribe((Q)=>{let{request:{method:B,path:I,origin:C},response:{statusCode:E}}=Q;A("received response to %s %s/%s - HTTP %d",B,C,I,E)}),SA.channel("undici:request:trailers").subscribe((Q)=>{let{request:{method:B,path:I,origin:C}}=Q;A("trailers received from %s %s/%s",B,C,I)}),SA.channel("undici:request:error").subscribe((Q)=>{let{request:{method:B,path:I,origin:C},error:E}=Q;A("request to %s %s/%s errored - %s",B,C,I,E.message)}),wq=!0}if(cY.enabled){if(!wq){let A=w8.enabled?w8:cY;SA.channel("undici:client:beforeConnect").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:C,host:E}}=Q;A("connecting to %s%s using %s%s",E,C?`:${C}`:"",I,B)}),SA.channel("undici:client:connected").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:C,host:E}}=Q;A("connected to %s%s using %s%s",E,C?`:${C}`:"",I,B)}),SA.channel("undici:client:connectError").subscribe((Q)=>{let{connectParams:{version:B,protocol:I,port:C,host:E},error:Y}=Q;A("connection to %s%s using %s%s errored - %s",E,C?`:${C}`:"",I,B,Y.message)}),SA.channel("undici:client:sendHeaders").subscribe((Q)=>{let{request:{method:B,path:I,origin:C}}=Q;A("sending request to %s %s/%s",B,C,I)})}SA.channel("undici:websocket:open").subscribe((A)=>{let{address:{address:Q,port:B}}=A;cY("connection opened %s%s",Q,B?`:${B}`:"")}),SA.channel("undici:websocket:close").subscribe((A)=>{let{websocket:Q,code:B,reason:I}=A;cY("closed connection to %s - %s %s",Q.url,B,I)}),SA.channel("undici:websocket:socket_error").subscribe((A)=>{cY("connection errored - %s",A.message)}),SA.channel("undici:websocket:ping").subscribe((A)=>{cY("ping received")}),SA.channel("undici:websocket:pong").subscribe((A)=>{cY("pong received")})}Kq.exports={channels:K$A}});var Hq=U((WLQ,Lq)=>{var{InvalidArgumentError:lA,NotSupportedError:z$A}=TA(),NE=M("node:assert"),{isValidHTTPToken:Vq,isValidHeaderValue:qK,isStream:V$A,destroy:$$A,isBuffer:L$A,isFormDataLike:H$A,isIterable:M$A,isBlobLike:N$A,buildURL:j$A,validateHandler:R$A,getServerName:q$A,normalizedMethodRecords:O$A}=$A(),{channels:dC}=jF(),{headerNameLowerCasedRecord:zq}=Z8(),T$A=/[^\u0021-\u00ff]/,kI=Symbol("handler");class $q{constructor(A,{path:Q,method:B,body:I,headers:C,query:E,idempotent:Y,blocking:J,upgrade:F,headersTimeout:G,bodyTimeout:D,reset:Z,throwOnError:W,expectContinue:X,servername:w},K){if(typeof Q!=="string")throw new lA("path must be a string");else if(Q[0]!=="/"&&!(Q.startsWith("http://")||Q.startsWith("https://"))&&B!=="CONNECT")throw new lA("path must be an absolute URL or start with a slash");else if(T$A.test(Q))throw new lA("invalid request path");if(typeof B!=="string")throw new lA("method must be a string");else if(O$A[B]===void 0&&!Vq(B))throw new lA("invalid request method");if(F&&typeof F!=="string")throw new lA("upgrade must be a string");if(F&&!qK(F))throw new lA("invalid upgrade header");if(G!=null&&(!Number.isFinite(G)||G<0))throw new lA("invalid headersTimeout");if(D!=null&&(!Number.isFinite(D)||D<0))throw new lA("invalid bodyTimeout");if(Z!=null&&typeof Z!=="boolean")throw new lA("invalid reset");if(X!=null&&typeof X!=="boolean")throw new lA("invalid expectContinue");if(this.headersTimeout=G,this.bodyTimeout=D,this.throwOnError=W===!0,this.method=B,this.abort=null,I==null)this.body=null;else if(V$A(I)){this.body=I;let z=this.body._readableState;if(!z||!z.autoDestroy)this.endHandler=function(){$$A(this)},this.body.on("end",this.endHandler);this.errorHandler=($)=>{if(this.abort)this.abort($);else this.error=$},this.body.on("error",this.errorHandler)}else if(L$A(I))this.body=I.byteLength?I:null;else if(ArrayBuffer.isView(I))this.body=I.buffer.byteLength?Buffer.from(I.buffer,I.byteOffset,I.byteLength):null;else if(I instanceof ArrayBuffer)this.body=I.byteLength?Buffer.from(I):null;else if(typeof I==="string")this.body=I.length?Buffer.from(I):null;else if(H$A(I)||M$A(I)||N$A(I))this.body=I;else throw new lA("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=F||null,this.path=E?j$A(Q,E):Q,this.origin=A,this.idempotent=Y==null?B==="HEAD"||B==="GET":Y,this.blocking=J==null?!1:J,this.reset=Z==null?null:Z,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=X!=null?X:!1,Array.isArray(C)){if(C.length%2!==0)throw new lA("headers array must be even");for(let z=0;z{var P$A=M("node:events");class OK extends P$A{dispatch(){throw Error("not implemented")}close(){throw Error("not implemented")}destroy(){throw Error("not implemented")}compose(...A){let Q=Array.isArray(A[0])?A[0]:A,B=this.dispatch.bind(this);for(let I of Q){if(I==null)continue;if(typeof I!=="function")throw TypeError(`invalid interceptor, expected function received ${typeof I}`);if(B=I(B),B==null||typeof B!=="function"||B.length!==2)throw TypeError("invalid interceptor")}return new Mq(this,B)}}class Mq extends OK{#A=null;#Q=null;constructor(A,Q){super();this.#A=A,this.#Q=Q}dispatch(...A){this.#Q(...A)}close(...A){return this.#A.close(...A)}destroy(...A){return this.#A.destroy(...A)}}Nq.exports=OK});var TF=U((ULQ,Rq)=>{var k$A=IZ(),{ClientDestroyedError:TK,ClientClosedError:S$A,InvalidArgumentError:RF}=TA(),{kDestroy:y$A,kClose:_$A,kClosed:CZ,kDestroyed:qF,kDispatch:PK,kInterceptors:uY}=eA(),jE=Symbol("onDestroyed"),OF=Symbol("onClosed"),z8=Symbol("Intercepted Dispatch");class jq extends k$A{constructor(){super();this[qF]=!1,this[jE]=null,this[CZ]=!1,this[OF]=[]}get destroyed(){return this[qF]}get closed(){return this[CZ]}get interceptors(){return this[uY]}set interceptors(A){if(A){for(let Q=A.length-1;Q>=0;Q--)if(typeof this[uY][Q]!=="function")throw new RF("interceptor must be an function")}this[uY]=A}close(A){if(A===void 0)return new Promise((B,I)=>{this.close((C,E)=>{return C?I(C):B(E)})});if(typeof A!=="function")throw new RF("invalid callback");if(this[qF]){queueMicrotask(()=>A(new TK,null));return}if(this[CZ]){if(this[OF])this[OF].push(A);else queueMicrotask(()=>A(null,null));return}this[CZ]=!0,this[OF].push(A);let Q=()=>{let B=this[OF];this[OF]=null;for(let I=0;Ithis.destroy()).then(()=>{queueMicrotask(Q)})}destroy(A,Q){if(typeof A==="function")Q=A,A=null;if(Q===void 0)return new Promise((I,C)=>{this.destroy(A,(E,Y)=>{return E?C(E):I(Y)})});if(typeof Q!=="function")throw new RF("invalid callback");if(this[qF]){if(this[jE])this[jE].push(Q);else queueMicrotask(()=>Q(null,null));return}if(!A)A=new TK;this[qF]=!0,this[jE]=this[jE]||[],this[jE].push(Q);let B=()=>{let I=this[jE];this[jE]=null;for(let C=0;C{queueMicrotask(B)})}[z8](A,Q){if(!this[uY]||this[uY].length===0)return this[z8]=this[PK],this[PK](A,Q);let B=this[PK].bind(this);for(let I=this[uY].length-1;I>=0;I--)B=this[uY][I](B);return this[z8]=B,B(A,Q)}dispatch(A,Q){if(!Q||typeof Q!=="object")throw new RF("handler must be an object");try{if(!A||typeof A!=="object")throw new RF("opts must be an object.");if(this[qF]||this[jE])throw new TK;if(this[CZ])throw new S$A;return this[z8](A,Q)}catch(B){if(typeof Q.onError!=="function")throw new RF("invalid onError method");return Q.onError(B),!1}}}Rq.exports=jq});var xK=U((wLQ,Pq)=>{var PF=0,kK=1000,SK=(kK>>1)-1,RE,yK=Symbol("kFastTimer"),qE=[],_K=-2,fK=-1,Oq=0,qq=1;function gK(){PF+=SK;let A=0,Q=qE.length;while(A=B._idleStart+B._idleTimeout)B._state=fK,B._idleStart=-1,B._onTimeout(B._timerArg);if(B._state===fK){if(B._state=_K,--Q!==0)qE[A]=qE[Q]}else++A}if(qE.length=Q,qE.length!==0)Tq()}function Tq(){if(RE)RE.refresh();else if(clearTimeout(RE),RE=setTimeout(gK,SK),RE.unref)RE.unref()}class hK{[yK]=!0;_state=_K;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(A,Q,B){this._onTimeout=A,this._idleTimeout=Q,this._timerArg=B,this.refresh()}refresh(){if(this._state===_K)qE.push(this);if(!RE||qE.length===1)Tq();this._state=Oq}clear(){this._state=fK,this._idleStart=-1}}Pq.exports={setTimeout(A,Q,B){return Q<=kK?setTimeout(A,Q,B):new hK(A,Q,B)},clearTimeout(A){if(A[yK])A.clear();else clearTimeout(A)},setFastTimeout(A,Q,B){return new hK(A,Q,B)},clearFastTimeout(A){A.clear()},now(){return PF},tick(A=0){PF+=A-kK+1,gK(),gK()},reset(){PF=0,qE.length=0,clearTimeout(RE),RE=null},kFastTimer:yK}});var EZ=U((KLQ,fq)=>{var f$A=M("node:net"),kq=M("node:assert"),_q=$A(),{InvalidArgumentError:g$A,ConnectTimeoutError:h$A}=TA(),V8=xK();function Sq(){}var vK,bK;if(global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG))bK=class{constructor(Q){this._maxCachedSessions=Q,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry((B)=>{if(this._sessionCache.size=this._maxCachedSessions){let{value:I}=this._sessionCache.keys().next();this._sessionCache.delete(I)}this._sessionCache.set(Q,B)}};function x$A({allowH2:A,maxCachedSessions:Q,socketPath:B,timeout:I,session:C,...E}){if(Q!=null&&(!Number.isInteger(Q)||Q<0))throw new g$A("maxCachedSessions must be a positive integer or zero");let Y={path:B,...E},J=new bK(Q==null?100:Q);return I=I==null?1e4:I,A=A!=null?A:!1,function({hostname:G,host:D,protocol:Z,port:W,servername:X,localAddress:w,httpSocket:K},z){let $;if(Z==="https:"){if(!vK)vK=M("node:tls");X=X||Y.servername||_q.getServerName(D)||null;let j=X||G;kq(j);let O=C||J.get(j)||null;W=W||443,$=vK.connect({highWaterMark:16384,...Y,servername:X,session:O,localAddress:w,ALPNProtocols:A?["http/1.1","h2"]:["http/1.1"],socket:K,port:W,host:G}),$.on("session",function(k){J.set(j,k)})}else kq(!K,"httpSocket can only be sent on TLS update"),W=W||80,$=f$A.connect({highWaterMark:65536,...Y,localAddress:w,port:W,host:G});if(Y.keepAlive==null||Y.keepAlive){let j=Y.keepAliveInitialDelay===void 0?60000:Y.keepAliveInitialDelay;$.setKeepAlive(!0,j)}let N=v$A(new WeakRef($),{timeout:I,hostname:G,port:W});return $.setNoDelay(!0).once(Z==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(N),z){let j=z;z=null,j(null,this)}}).on("error",function(j){if(queueMicrotask(N),z){let O=z;z=null,O(j)}}),$}}var v$A=process.platform==="win32"?(A,Q)=>{if(!Q.timeout)return Sq;let B=null,I=null,C=V8.setFastTimeout(()=>{B=setImmediate(()=>{I=setImmediate(()=>yq(A.deref(),Q))})},Q.timeout);return()=>{V8.clearFastTimeout(C),clearImmediate(B),clearImmediate(I)}}:(A,Q)=>{if(!Q.timeout)return Sq;let B=null,I=V8.setFastTimeout(()=>{B=setImmediate(()=>{yq(A.deref(),Q)})},Q.timeout);return()=>{V8.clearFastTimeout(I),clearImmediate(B)}};function yq(A,Q){if(A==null)return;let B="Connect Timeout Error";if(Array.isArray(A.autoSelectFamilyAttemptedAddresses))B+=` (attempted addresses: ${A.autoSelectFamilyAttemptedAddresses.join(", ")},`;else B+=` (attempted address: ${Q.hostname}:${Q.port},`;B+=` timeout: ${Q.timeout}ms)`,_q.destroy(A,new h$A(B))}fq.exports=x$A});var xq=U((gq)=>{Object.defineProperty(gq,"__esModule",{value:!0});gq.enumToMap=void 0;function b$A(A){let Q={};return Object.keys(A).forEach((B)=>{let I=A[B];if(typeof I==="number")Q[B]=I}),Q}gq.enumToMap=b$A});var AO=U((pq)=>{Object.defineProperty(pq,"__esModule",{value:!0});pq.SPECIAL_HEADERS=pq.HEADER_STATE=pq.MINOR=pq.MAJOR=pq.CONNECTION_TOKEN_CHARS=pq.HEADER_CHARS=pq.TOKEN=pq.STRICT_TOKEN=pq.HEX=pq.URL_CHAR=pq.STRICT_URL_CHAR=pq.USERINFO_CHARS=pq.MARK=pq.ALPHANUM=pq.NUM=pq.HEX_MAP=pq.NUM_MAP=pq.ALPHA=pq.FINISH=pq.H_METHOD_MAP=pq.METHOD_MAP=pq.METHODS_RTSP=pq.METHODS_ICE=pq.METHODS_HTTP=pq.METHODS=pq.LENIENT_FLAGS=pq.FLAGS=pq.TYPE=pq.ERROR=void 0;var m$A=xq(),d$A;(function(A){A[A.OK=0]="OK",A[A.INTERNAL=1]="INTERNAL",A[A.STRICT=2]="STRICT",A[A.LF_EXPECTED=3]="LF_EXPECTED",A[A.UNEXPECTED_CONTENT_LENGTH=4]="UNEXPECTED_CONTENT_LENGTH",A[A.CLOSED_CONNECTION=5]="CLOSED_CONNECTION",A[A.INVALID_METHOD=6]="INVALID_METHOD",A[A.INVALID_URL=7]="INVALID_URL",A[A.INVALID_CONSTANT=8]="INVALID_CONSTANT",A[A.INVALID_VERSION=9]="INVALID_VERSION",A[A.INVALID_HEADER_TOKEN=10]="INVALID_HEADER_TOKEN",A[A.INVALID_CONTENT_LENGTH=11]="INVALID_CONTENT_LENGTH",A[A.INVALID_CHUNK_SIZE=12]="INVALID_CHUNK_SIZE",A[A.INVALID_STATUS=13]="INVALID_STATUS",A[A.INVALID_EOF_STATE=14]="INVALID_EOF_STATE",A[A.INVALID_TRANSFER_ENCODING=15]="INVALID_TRANSFER_ENCODING",A[A.CB_MESSAGE_BEGIN=16]="CB_MESSAGE_BEGIN",A[A.CB_HEADERS_COMPLETE=17]="CB_HEADERS_COMPLETE",A[A.CB_MESSAGE_COMPLETE=18]="CB_MESSAGE_COMPLETE",A[A.CB_CHUNK_HEADER=19]="CB_CHUNK_HEADER",A[A.CB_CHUNK_COMPLETE=20]="CB_CHUNK_COMPLETE",A[A.PAUSED=21]="PAUSED",A[A.PAUSED_UPGRADE=22]="PAUSED_UPGRADE",A[A.PAUSED_H2_UPGRADE=23]="PAUSED_H2_UPGRADE",A[A.USER=24]="USER"})(d$A=pq.ERROR||(pq.ERROR={}));var c$A;(function(A){A[A.BOTH=0]="BOTH",A[A.REQUEST=1]="REQUEST",A[A.RESPONSE=2]="RESPONSE"})(c$A=pq.TYPE||(pq.TYPE={}));var u$A;(function(A){A[A.CONNECTION_KEEP_ALIVE=1]="CONNECTION_KEEP_ALIVE",A[A.CONNECTION_CLOSE=2]="CONNECTION_CLOSE",A[A.CONNECTION_UPGRADE=4]="CONNECTION_UPGRADE",A[A.CHUNKED=8]="CHUNKED",A[A.UPGRADE=16]="UPGRADE",A[A.CONTENT_LENGTH=32]="CONTENT_LENGTH",A[A.SKIPBODY=64]="SKIPBODY",A[A.TRAILING=128]="TRAILING",A[A.TRANSFER_ENCODING=512]="TRANSFER_ENCODING"})(u$A=pq.FLAGS||(pq.FLAGS={}));var l$A;(function(A){A[A.HEADERS=1]="HEADERS",A[A.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",A[A.KEEP_ALIVE=4]="KEEP_ALIVE"})(l$A=pq.LENIENT_FLAGS||(pq.LENIENT_FLAGS={}));var r;(function(A){A[A.DELETE=0]="DELETE",A[A.GET=1]="GET",A[A.HEAD=2]="HEAD",A[A.POST=3]="POST",A[A.PUT=4]="PUT",A[A.CONNECT=5]="CONNECT",A[A.OPTIONS=6]="OPTIONS",A[A.TRACE=7]="TRACE",A[A.COPY=8]="COPY",A[A.LOCK=9]="LOCK",A[A.MKCOL=10]="MKCOL",A[A.MOVE=11]="MOVE",A[A.PROPFIND=12]="PROPFIND",A[A.PROPPATCH=13]="PROPPATCH",A[A.SEARCH=14]="SEARCH",A[A.UNLOCK=15]="UNLOCK",A[A.BIND=16]="BIND",A[A.REBIND=17]="REBIND",A[A.UNBIND=18]="UNBIND",A[A.ACL=19]="ACL",A[A.REPORT=20]="REPORT",A[A.MKACTIVITY=21]="MKACTIVITY",A[A.CHECKOUT=22]="CHECKOUT",A[A.MERGE=23]="MERGE",A[A["M-SEARCH"]=24]="M-SEARCH",A[A.NOTIFY=25]="NOTIFY",A[A.SUBSCRIBE=26]="SUBSCRIBE",A[A.UNSUBSCRIBE=27]="UNSUBSCRIBE",A[A.PATCH=28]="PATCH",A[A.PURGE=29]="PURGE",A[A.MKCALENDAR=30]="MKCALENDAR",A[A.LINK=31]="LINK",A[A.UNLINK=32]="UNLINK",A[A.SOURCE=33]="SOURCE",A[A.PRI=34]="PRI",A[A.DESCRIBE=35]="DESCRIBE",A[A.ANNOUNCE=36]="ANNOUNCE",A[A.SETUP=37]="SETUP",A[A.PLAY=38]="PLAY",A[A.PAUSE=39]="PAUSE",A[A.TEARDOWN=40]="TEARDOWN",A[A.GET_PARAMETER=41]="GET_PARAMETER",A[A.SET_PARAMETER=42]="SET_PARAMETER",A[A.REDIRECT=43]="REDIRECT",A[A.RECORD=44]="RECORD",A[A.FLUSH=45]="FLUSH"})(r=pq.METHODS||(pq.METHODS={}));pq.METHODS_HTTP=[r.DELETE,r.GET,r.HEAD,r.POST,r.PUT,r.CONNECT,r.OPTIONS,r.TRACE,r.COPY,r.LOCK,r.MKCOL,r.MOVE,r.PROPFIND,r.PROPPATCH,r.SEARCH,r.UNLOCK,r.BIND,r.REBIND,r.UNBIND,r.ACL,r.REPORT,r.MKACTIVITY,r.CHECKOUT,r.MERGE,r["M-SEARCH"],r.NOTIFY,r.SUBSCRIBE,r.UNSUBSCRIBE,r.PATCH,r.PURGE,r.MKCALENDAR,r.LINK,r.UNLINK,r.PRI,r.SOURCE];pq.METHODS_ICE=[r.SOURCE];pq.METHODS_RTSP=[r.OPTIONS,r.DESCRIBE,r.ANNOUNCE,r.SETUP,r.PLAY,r.PAUSE,r.TEARDOWN,r.GET_PARAMETER,r.SET_PARAMETER,r.REDIRECT,r.RECORD,r.FLUSH,r.GET,r.POST];pq.METHOD_MAP=m$A.enumToMap(r);pq.H_METHOD_MAP={};Object.keys(pq.METHOD_MAP).forEach((A)=>{if(/^H/.test(A))pq.H_METHOD_MAP[A]=pq.METHOD_MAP[A]});var p$A;(function(A){A[A.SAFE=0]="SAFE",A[A.SAFE_WITH_CB=1]="SAFE_WITH_CB",A[A.UNSAFE=2]="UNSAFE"})(p$A=pq.FINISH||(pq.FINISH={}));pq.ALPHA=[];for(let A=65;A<=90;A++)pq.ALPHA.push(String.fromCharCode(A)),pq.ALPHA.push(String.fromCharCode(A+32));pq.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};pq.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};pq.NUM=["0","1","2","3","4","5","6","7","8","9"];pq.ALPHANUM=pq.ALPHA.concat(pq.NUM);pq.MARK=["-","_",".","!","~","*","'","(",")"];pq.USERINFO_CHARS=pq.ALPHANUM.concat(pq.MARK).concat(["%",";",":","&","=","+","$",","]);pq.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(pq.ALPHANUM);pq.URL_CHAR=pq.STRICT_URL_CHAR.concat(["\t","\f"]);for(let A=128;A<=255;A++)pq.URL_CHAR.push(A);pq.HEX=pq.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);pq.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(pq.ALPHANUM);pq.TOKEN=pq.STRICT_TOKEN.concat([" "]);pq.HEADER_CHARS=["\t"];for(let A=32;A<=255;A++)if(A!==127)pq.HEADER_CHARS.push(A);pq.CONNECTION_TOKEN_CHARS=pq.HEADER_CHARS.filter((A)=>A!==44);pq.MAJOR=pq.NUM_MAP;pq.MINOR=pq.MAJOR;var kF;(function(A){A[A.GENERAL=0]="GENERAL",A[A.CONNECTION=1]="CONNECTION",A[A.CONTENT_LENGTH=2]="CONTENT_LENGTH",A[A.TRANSFER_ENCODING=3]="TRANSFER_ENCODING",A[A.UPGRADE=4]="UPGRADE",A[A.CONNECTION_KEEP_ALIVE=5]="CONNECTION_KEEP_ALIVE",A[A.CONNECTION_CLOSE=6]="CONNECTION_CLOSE",A[A.CONNECTION_UPGRADE=7]="CONNECTION_UPGRADE",A[A.TRANSFER_ENCODING_CHUNKED=8]="TRANSFER_ENCODING_CHUNKED"})(kF=pq.HEADER_STATE||(pq.HEADER_STATE={}));pq.SPECIAL_HEADERS={connection:kF.CONNECTION,"content-length":kF.CONTENT_LENGTH,"proxy-connection":kF.CONNECTION,"transfer-encoding":kF.TRANSFER_ENCODING,upgrade:kF.UPGRADE}});var uK=U(($LQ,QO)=>{var{Buffer:Q3A}=M("node:buffer");QO.exports=Q3A.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv","base64")});var IO=U((LLQ,BO)=>{var{Buffer:B3A}=M("node:buffer");BO.exports=B3A.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")});var YZ=U((HLQ,ZO)=>{var CO=["GET","HEAD","POST"],I3A=new Set(CO),C3A=[101,204,205,304],EO=[301,302,303,307,308],E3A=new Set(EO),YO=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],Y3A=new Set(YO),JO=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],J3A=new Set(JO),F3A=["follow","manual","error"],FO=["GET","HEAD","OPTIONS","TRACE"],G3A=new Set(FO),D3A=["navigate","same-origin","no-cors","cors"],Z3A=["omit","same-origin","include"],W3A=["default","no-store","reload","no-cache","force-cache","only-if-cached"],X3A=["content-encoding","content-language","content-location","content-type","content-length"],U3A=["half"],GO=["CONNECT","TRACE","TRACK"],w3A=new Set(GO),DO=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],K3A=new Set(DO);ZO.exports={subresource:DO,forbiddenMethods:GO,requestBodyHeader:X3A,referrerPolicy:JO,requestRedirect:F3A,requestMode:D3A,requestCredentials:Z3A,requestCache:W3A,redirectStatus:EO,corsSafeListedMethods:CO,nullBodyStatus:C3A,safeMethods:FO,badPorts:YO,requestDuplex:U3A,subresourceSet:K3A,badPortsSet:Y3A,redirectStatusSet:E3A,corsSafeListedMethodsSet:I3A,safeMethodsSet:G3A,forbiddenMethodsSet:w3A,referrerPolicySet:J3A}});var pK=U((MLQ,WO)=>{var lK=Symbol.for("undici.globalOrigin.1");function z3A(){return globalThis[lK]}function V3A(A){if(A===void 0){Object.defineProperty(globalThis,lK,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let Q=new URL(A);if(Q.protocol!=="http:"&&Q.protocol!=="https:")throw TypeError(`Only http & https urls are allowed, received ${Q.protocol}`);Object.defineProperty(globalThis,lK,{value:Q,writable:!0,enumerable:!1,configurable:!1})}WO.exports={getGlobalOrigin:z3A,setGlobalOrigin:V3A}});var dB=U((NLQ,$O)=>{var M8=M("node:assert"),$3A=new TextEncoder,JZ=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/,L3A=/[\u000A\u000D\u0009\u0020]/,H3A=/[\u0009\u000A\u000C\u000D\u0020]/g,M3A=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function N3A(A){M8(A.protocol==="data:");let Q=wO(A,!0);Q=Q.slice(5);let B={position:0},I=SF(",",Q,B),C=I.length;if(I=P3A(I,!0,!0),B.position>=Q.length)return"failure";B.position++;let E=Q.slice(C+1),Y=KO(E);if(/;(\u0020){0,}base64$/i.test(I)){let F=VO(Y);if(Y=R3A(F),Y==="failure")return"failure";I=I.slice(0,-6),I=I.replace(/(\u0020)+$/,""),I=I.slice(0,-1)}if(I.startsWith(";"))I="text/plain"+I;let J=iK(I);if(J==="failure")J=iK("text/plain;charset=US-ASCII");return{mimeType:J,body:Y}}function wO(A,Q=!1){if(!Q)return A.href;let B=A.href,I=A.hash.length,C=I===0?B:B.substring(0,B.length-I);if(!I&&B.endsWith("#"))return C.slice(0,-1);return C}function N8(A,Q,B){let I="";while(B.position=48&&A<=57||A>=65&&A<=70||A>=97&&A<=102}function UO(A){return A>=48&&A<=57?A-48:(A&223)-55}function j3A(A){let Q=A.length,B=new Uint8Array(Q),I=0;for(let C=0;CA.length)return"failure";Q.position++;let I=SF(";",A,Q);if(I=H8(I,!1,!0),I.length===0||!JZ.test(I))return"failure";let C=B.toLowerCase(),E=I.toLowerCase(),Y={type:C,subtype:E,parameters:new Map,essence:`${C}/${E}`};while(Q.positionL3A.test(G),A,Q);let J=N8((G)=>G!==";"&&G!=="=",A,Q);if(J=J.toLowerCase(),Q.positionA.length)break;let F=null;if(A[Q.position]==='"')F=zO(A,Q,!0),SF(";",A,Q);else if(F=SF(";",A,Q),F=H8(F,!1,!0),F.length===0)continue;if(J.length!==0&&JZ.test(J)&&(F.length===0||M3A.test(F))&&!Y.parameters.has(J))Y.parameters.set(J,F)}return Y}function R3A(A){A=A.replace(H3A,"");let Q=A.length;if(Q%4===0){if(A.charCodeAt(Q-1)===61){if(--Q,A.charCodeAt(Q-1)===61)--Q}}if(Q%4===1)return"failure";if(/[^+/0-9A-Za-z]/.test(A.length===Q?A:A.substring(0,Q)))return"failure";let B=Buffer.from(A,"base64");return new Uint8Array(B.buffer,B.byteOffset,B.byteLength)}function zO(A,Q,B){let I=Q.position,C="";M8(A[Q.position]==='"'),Q.position++;while(!0){if(C+=N8((Y)=>Y!=='"'&&Y!=="\\",A,Q),Q.position>=A.length)break;let E=A[Q.position];if(Q.position++,E==="\\"){if(Q.position>=A.length){C+="\\";break}C+=A[Q.position],Q.position++}else{M8(E==='"');break}}if(B)return C;return A.slice(I,Q.position)}function q3A(A){M8(A!=="failure");let{parameters:Q,essence:B}=A,I=B;for(let[C,E]of Q.entries()){if(I+=";",I+=C,I+="=",!JZ.test(E))E=E.replace(/(\\|")/g,"\\$1"),E='"'+E,E+='"';I+=E}return I}function O3A(A){return A===13||A===10||A===9||A===32}function H8(A,Q=!0,B=!0){return nK(A,Q,B,O3A)}function T3A(A){return A===13||A===10||A===9||A===12||A===32}function P3A(A,Q=!0,B=!0){return nK(A,Q,B,T3A)}function nK(A,Q,B,I){let C=0,E=A.length-1;if(Q)while(C0&&I(A.charCodeAt(E)))E--;return C===0&&E===A.length-1?A:A.slice(C,E+1)}function VO(A){let Q=A.length;if(65535>Q)return String.fromCharCode.apply(null,A);let B="",I=0,C=65535;while(IQ)C=Q-I;B+=String.fromCharCode.apply(null,A.subarray(I,I+=C))}return B}function k3A(A){switch(A.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}if(A.subtype.endsWith("+json"))return"application/json";if(A.subtype.endsWith("+xml"))return"application/xml";return""}$O.exports={dataURLProcessor:N3A,URLSerializer:wO,collectASequenceOfCodePoints:N8,collectASequenceOfCodePointsFast:SF,stringPercentDecode:KO,parseMIMEType:iK,collectAnHTTPQuotedString:zO,serializeAMimeType:q3A,removeChars:nK,removeHTTPWhitespace:H8,minimizeSupportedMimeType:k3A,HTTP_TOKEN_CODEPOINTS:JZ,isomorphicDecode:VO}});var nQ=U((jLQ,LO)=>{var{types:cC,inspect:S3A}=M("node:util"),{markAsUncloneable:y3A}=M("node:worker_threads"),{toUSVString:_3A}=$A(),_={};_.converters={};_.util={};_.errors={};_.errors.exception=function(A){return TypeError(`${A.header}: ${A.message}`)};_.errors.conversionFailed=function(A){let Q=A.types.length===1?"":" one of",B=`${A.argument} could not be converted to${Q}: ${A.types.join(", ")}.`;return _.errors.exception({header:A.prefix,message:B})};_.errors.invalidArgument=function(A){return _.errors.exception({header:A.prefix,message:`"${A.value}" is an invalid ${A.type}.`})};_.brandCheck=function(A,Q,B){if(B?.strict!==!1){if(!(A instanceof Q)){let I=TypeError("Illegal invocation");throw I.code="ERR_INVALID_THIS",I}}else if(A?.[Symbol.toStringTag]!==Q.prototype[Symbol.toStringTag]){let I=TypeError("Illegal invocation");throw I.code="ERR_INVALID_THIS",I}};_.argumentLengthCheck=function({length:A},Q,B){if(A{});_.util.ConvertToInt=function(A,Q,B,I){let C,E;if(Q===64)if(C=Math.pow(2,53)-1,B==="unsigned")E=0;else E=Math.pow(-2,53)+1;else if(B==="unsigned")E=0,C=Math.pow(2,Q)-1;else E=Math.pow(-2,Q)-1,C=Math.pow(2,Q-1)-1;let Y=Number(A);if(Y===0)Y=0;if(I?.enforceRange===!0){if(Number.isNaN(Y)||Y===Number.POSITIVE_INFINITY||Y===Number.NEGATIVE_INFINITY)throw _.errors.exception({header:"Integer conversion",message:`Could not convert ${_.util.Stringify(A)} to an integer.`});if(Y=_.util.IntegerPart(Y),YC)throw _.errors.exception({header:"Integer conversion",message:`Value must be between ${E}-${C}, got ${Y}.`});return Y}if(!Number.isNaN(Y)&&I?.clamp===!0){if(Y=Math.min(Math.max(Y,E),C),Math.floor(Y)%2===0)Y=Math.floor(Y);else Y=Math.ceil(Y);return Y}if(Number.isNaN(Y)||Y===0&&Object.is(0,Y)||Y===Number.POSITIVE_INFINITY||Y===Number.NEGATIVE_INFINITY)return 0;if(Y=_.util.IntegerPart(Y),Y=Y%Math.pow(2,Q),B==="signed"&&Y>=Math.pow(2,Q)-1)return Y-Math.pow(2,Q);return Y};_.util.IntegerPart=function(A){let Q=Math.floor(Math.abs(A));if(A<0)return-1*Q;return Q};_.util.Stringify=function(A){switch(_.util.Type(A)){case"Symbol":return`Symbol(${A.description})`;case"Object":return S3A(A);case"String":return`"${A}"`;default:return`${A}`}};_.sequenceConverter=function(A){return(Q,B,I,C)=>{if(_.util.Type(Q)!=="Object")throw _.errors.exception({header:B,message:`${I} (${_.util.Stringify(Q)}) is not iterable.`});let E=typeof C==="function"?C():Q?.[Symbol.iterator]?.(),Y=[],J=0;if(E===void 0||typeof E.next!=="function")throw _.errors.exception({header:B,message:`${I} is not iterable.`});while(!0){let{done:F,value:G}=E.next();if(F)break;Y.push(A(G,B,`${I}[${J++}]`))}return Y}};_.recordConverter=function(A,Q){return(B,I,C)=>{if(_.util.Type(B)!=="Object")throw _.errors.exception({header:I,message:`${C} ("${_.util.Type(B)}") is not an Object.`});let E={};if(!cC.isProxy(B)){let J=[...Object.getOwnPropertyNames(B),...Object.getOwnPropertySymbols(B)];for(let F of J){let G=A(F,I,C),D=Q(B[F],I,C);E[G]=D}return E}let Y=Reflect.ownKeys(B);for(let J of Y)if(Reflect.getOwnPropertyDescriptor(B,J)?.enumerable){let G=A(J,I,C),D=Q(B[J],I,C);E[G]=D}return E}};_.interfaceConverter=function(A){return(Q,B,I,C)=>{if(C?.strict!==!1&&!(Q instanceof A))throw _.errors.exception({header:B,message:`Expected ${I} ("${_.util.Stringify(Q)}") to be an instance of ${A.name}.`});return Q}};_.dictionaryConverter=function(A){return(Q,B,I)=>{let C=_.util.Type(Q),E={};if(C==="Null"||C==="Undefined")return E;else if(C!=="Object")throw _.errors.exception({header:B,message:`Expected ${Q} to be one of: Null, Undefined, Object.`});for(let Y of A){let{key:J,defaultValue:F,required:G,converter:D}=Y;if(G===!0){if(!Object.hasOwn(Q,J))throw _.errors.exception({header:B,message:`Missing required key "${J}".`})}let Z=Q[J],W=Object.hasOwn(Y,"defaultValue");if(W&&Z!==null)Z??=F();if(G||W||Z!==void 0){if(Z=D(Z,B,`${I}.${J}`),Y.allowedValues&&!Y.allowedValues.includes(Z))throw _.errors.exception({header:B,message:`${Z} is not an accepted type. Expected one of ${Y.allowedValues.join(", ")}.`});E[J]=Z}}return E}};_.nullableConverter=function(A){return(Q,B,I)=>{if(Q===null)return Q;return A(Q,B,I)}};_.converters.DOMString=function(A,Q,B,I){if(A===null&&I?.legacyNullToEmptyString)return"";if(typeof A==="symbol")throw _.errors.exception({header:Q,message:`${B} is a symbol, which cannot be converted to a DOMString.`});return String(A)};_.converters.ByteString=function(A,Q,B){let I=_.converters.DOMString(A,Q,B);for(let C=0;C255)throw TypeError(`Cannot convert argument to a ByteString because the character at index ${C} has a value of ${I.charCodeAt(C)} which is greater than 255.`);return I};_.converters.USVString=_3A;_.converters.boolean=function(A){return Boolean(A)};_.converters.any=function(A){return A};_.converters["long long"]=function(A,Q,B){return _.util.ConvertToInt(A,64,"signed",void 0,Q,B)};_.converters["unsigned long long"]=function(A,Q,B){return _.util.ConvertToInt(A,64,"unsigned",void 0,Q,B)};_.converters["unsigned long"]=function(A,Q,B){return _.util.ConvertToInt(A,32,"unsigned",void 0,Q,B)};_.converters["unsigned short"]=function(A,Q,B,I){return _.util.ConvertToInt(A,16,"unsigned",I,Q,B)};_.converters.ArrayBuffer=function(A,Q,B,I){if(_.util.Type(A)!=="Object"||!cC.isAnyArrayBuffer(A))throw _.errors.conversionFailed({prefix:Q,argument:`${B} ("${_.util.Stringify(A)}")`,types:["ArrayBuffer"]});if(I?.allowShared===!1&&cC.isSharedArrayBuffer(A))throw _.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(A.resizable||A.growable)throw _.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return A};_.converters.TypedArray=function(A,Q,B,I,C){if(_.util.Type(A)!=="Object"||!cC.isTypedArray(A)||A.constructor.name!==Q.name)throw _.errors.conversionFailed({prefix:B,argument:`${I} ("${_.util.Stringify(A)}")`,types:[Q.name]});if(C?.allowShared===!1&&cC.isSharedArrayBuffer(A.buffer))throw _.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(A.buffer.resizable||A.buffer.growable)throw _.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return A};_.converters.DataView=function(A,Q,B,I){if(_.util.Type(A)!=="Object"||!cC.isDataView(A))throw _.errors.exception({header:Q,message:`${B} is not a DataView.`});if(I?.allowShared===!1&&cC.isSharedArrayBuffer(A.buffer))throw _.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(A.buffer.resizable||A.buffer.growable)throw _.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return A};_.converters.BufferSource=function(A,Q,B,I){if(cC.isAnyArrayBuffer(A))return _.converters.ArrayBuffer(A,Q,B,{...I,allowShared:!1});if(cC.isTypedArray(A))return _.converters.TypedArray(A,A.constructor,Q,B,{...I,allowShared:!1});if(cC.isDataView(A))return _.converters.DataView(A,Q,B,{...I,allowShared:!1});throw _.errors.conversionFailed({prefix:Q,argument:`${B} ("${_.util.Stringify(A)}")`,types:["BufferSource"]})};_.converters["sequence"]=_.sequenceConverter(_.converters.ByteString);_.converters["sequence>"]=_.sequenceConverter(_.converters["sequence"]);_.converters["record"]=_.recordConverter(_.converters.ByteString,_.converters.ByteString);LO.exports={webidl:_}});var CI=U((RLQ,xO)=>{var{Transform:f3A}=M("node:stream"),HO=M("node:zlib"),{redirectStatusSet:g3A,referrerPolicySet:h3A,badPortsSet:x3A}=YZ(),{getGlobalOrigin:MO}=pK(),{collectASequenceOfCodePoints:lY,collectAnHTTPQuotedString:v3A,removeChars:b3A,parseMIMEType:m3A}=dB(),{performance:d3A}=M("node:perf_hooks"),{isBlobLike:c3A,ReadableStreamFrom:u3A,isValidHTTPToken:NO,normalizedMethodRecordsBase:l3A}=$A(),pY=M("node:assert"),{isUint8Array:p3A}=M("node:util/types"),{webidl:FZ}=nQ(),jO=[],R8;try{R8=M("node:crypto");let A=["sha256","sha384","sha512"];jO=R8.getHashes().filter((Q)=>A.includes(Q))}catch{}function RO(A){let Q=A.urlList,B=Q.length;return B===0?null:Q[B-1].toString()}function i3A(A,Q){if(!g3A.has(A.status))return null;let B=A.headersList.get("location",!0);if(B!==null&&OO(B)){if(!qO(B))B=n3A(B);B=new URL(B,RO(A))}if(B&&!B.hash)B.hash=Q;return B}function qO(A){for(let Q=0;Q126||B<32)return!1}return!0}function n3A(A){return Buffer.from(A,"binary").toString("utf8")}function DZ(A){return A.urlList[A.urlList.length-1]}function a3A(A){let Q=DZ(A);if(yO(Q)&&x3A.has(Q.port))return"blocked";return"allowed"}function o3A(A){return A instanceof Error||(A?.constructor?.name==="Error"||A?.constructor?.name==="DOMException")}function s3A(A){for(let Q=0;Q=32&&B<=126||B>=128&&B<=255))return!1}return!0}var r3A=NO;function OO(A){return(A[0]==="\t"||A[0]===" "||A[A.length-1]==="\t"||A[A.length-1]===" "||A.includes(` +`)||A.includes("\r")||A.includes("\x00"))===!1}function t3A(A,Q){let{headersList:B}=Q,I=(B.get("referrer-policy",!0)??"").split(","),C="";if(I.length>0)for(let E=I.length;E!==0;E--){let Y=I[E-1].trim();if(h3A.has(Y)){C=Y;break}}if(C!=="")A.referrerPolicy=C}function e3A(){return"allowed"}function ALA(){return"success"}function QLA(){return"success"}function BLA(A){let Q=null;Q=A.mode,A.headersList.set("sec-fetch-mode",Q,!0)}function ILA(A){let Q=A.origin;if(Q==="client"||Q===void 0)return;if(A.responseTainting==="cors"||A.mode==="websocket")A.headersList.append("origin",Q,!0);else if(A.method!=="GET"&&A.method!=="HEAD"){switch(A.referrerPolicy){case"no-referrer":Q=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":if(A.origin&&oK(A.origin)&&!oK(DZ(A)))Q=null;break;case"same-origin":if(!q8(A,DZ(A)))Q=null;break;default:}A.headersList.append("origin",Q,!0)}}function yF(A,Q){return A}function CLA(A,Q,B){if(!A?.startTime||A.startTime4096)I=C;let E=q8(A,I),Y=GZ(I)&&!GZ(A.url);switch(Q){case"origin":return C!=null?C:aK(B,!0);case"unsafe-url":return I;case"same-origin":return E?C:"no-referrer";case"origin-when-cross-origin":return E?I:C;case"strict-origin-when-cross-origin":{let J=DZ(A);if(q8(I,J))return I;if(GZ(I)&&!GZ(J))return"no-referrer";return C}case"strict-origin":case"no-referrer-when-downgrade":default:return Y?"no-referrer":C}}function aK(A,Q){if(pY(A instanceof URL),A=new URL(A),A.protocol==="file:"||A.protocol==="about:"||A.protocol==="blank:")return"no-referrer";if(A.username="",A.password="",A.hash="",Q)A.pathname="",A.search="";return A}function GZ(A){if(!(A instanceof URL))return!1;if(A.href==="about:blank"||A.href==="about:srcdoc")return!0;if(A.protocol==="data:")return!0;if(A.protocol==="file:")return!0;return Q(A.origin);function Q(B){if(B==null||B==="null")return!1;let I=new URL(B);if(I.protocol==="https:"||I.protocol==="wss:")return!0;if(/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(I.hostname)||(I.hostname==="localhost"||I.hostname.includes("localhost."))||I.hostname.endsWith(".localhost"))return!0;return!1}}function GLA(A,Q){if(R8===void 0)return!0;let B=PO(Q);if(B==="no metadata")return!0;if(B.length===0)return!0;let I=ZLA(B),C=WLA(B,I);for(let E of C){let{algo:Y,hash:J}=E,F=R8.createHash(Y).update(A).digest("base64");if(F[F.length-1]==="=")if(F[F.length-2]==="=")F=F.slice(0,-2);else F=F.slice(0,-1);if(XLA(F,J))return!0}return!1}var DLA=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function PO(A){let Q=[],B=!0;for(let I of A.split(" ")){B=!1;let C=DLA.exec(I);if(C===null||C.groups===void 0||C.groups.algo===void 0)continue;let E=C.groups.algo.toLowerCase();if(jO.includes(E))Q.push(C.groups)}if(B===!0)return"no metadata";return Q}function ZLA(A){let Q=A[0].algo;if(Q[3]==="5")return Q;for(let B=1;B{A=I,Q=C}),resolve:A,reject:Q}}function KLA(A){return A.controller.state==="aborted"}function zLA(A){return A.controller.state==="aborted"||A.controller.state==="terminated"}function VLA(A){return l3A[A.toLowerCase()]??A}function $LA(A){let Q=JSON.stringify(A);if(Q===void 0)throw TypeError("Value is not JSON serializable");return pY(typeof Q==="string"),Q}var LLA=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function kO(A,Q,B=0,I=1){class C{#A;#Q;#C;constructor(E,Y){this.#A=E,this.#Q=Y,this.#C=0}next(){if(typeof this!=="object"||this===null||!(#A in this))throw TypeError(`'next' called on an object that does not implement interface ${A} Iterator.`);let E=this.#C,Y=this.#A[Q],J=Y.length;if(E>=J)return{value:void 0,done:!0};let{[B]:F,[I]:G}=Y[E];this.#C=E+1;let D;switch(this.#Q){case"key":D=F;break;case"value":D=G;break;case"key+value":D=[F,G];break}return{value:D,done:!1}}}return delete C.prototype.constructor,Object.setPrototypeOf(C.prototype,LLA),Object.defineProperties(C.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${A} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(E,Y){return new C(E,Y)}}function HLA(A,Q,B,I=0,C=1){let E=kO(A,B,I,C),Y={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return FZ.brandCheck(this,Q),E(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return FZ.brandCheck(this,Q),E(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return FZ.brandCheck(this,Q),E(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(F,G=globalThis){if(FZ.brandCheck(this,Q),FZ.argumentLengthCheck(arguments,1,`${A}.forEach`),typeof F!=="function")throw TypeError(`Failed to execute 'forEach' on '${A}': parameter 1 is not of type 'Function'.`);for(let{0:D,1:Z}of E(this,"key+value"))F.call(G,Z,D,this)}}};return Object.defineProperties(Q.prototype,{...Y,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:Y.entries.value}})}async function MLA(A,Q,B){let I=Q,C=B,E;try{E=A.stream.getReader()}catch(Y){C(Y);return}try{I(await SO(E))}catch(Y){C(Y)}}function NLA(A){return A instanceof ReadableStream||A[Symbol.toStringTag]==="ReadableStream"&&typeof A.tee==="function"}function jLA(A){try{A.close(),A.byobRequest?.respond(0)}catch(Q){if(!Q.message.includes("Controller is already closed")&&!Q.message.includes("ReadableStream is already closed"))throw Q}}var RLA=/[^\x00-\xFF]/;function j8(A){return pY(!RLA.test(A)),A}async function SO(A){let Q=[],B=0;while(!0){let{done:I,value:C}=await A.read();if(I)return Buffer.concat(Q,B);if(!p3A(C))throw TypeError("Received non-Uint8Array chunk");Q.push(C),B+=C.length}}function qLA(A){pY("protocol"in A);let Q=A.protocol;return Q==="about:"||Q==="blob:"||Q==="data:"}function oK(A){return typeof A==="string"&&A[5]===":"&&A[0]==="h"&&A[1]==="t"&&A[2]==="t"&&A[3]==="p"&&A[4]==="s"||A.protocol==="https:"}function yO(A){pY("protocol"in A);let Q=A.protocol;return Q==="http:"||Q==="https:"}function OLA(A,Q){let B=A;if(!B.startsWith("bytes"))return"failure";let I={position:5};if(Q)lY((F)=>F==="\t"||F===" ",B,I);if(B.charCodeAt(I.position)!==61)return"failure";if(I.position++,Q)lY((F)=>F==="\t"||F===" ",B,I);let C=lY((F)=>{let G=F.charCodeAt(0);return G>=48&&G<=57},B,I),E=C.length?Number(C):null;if(Q)lY((F)=>F==="\t"||F===" ",B,I);if(B.charCodeAt(I.position)!==45)return"failure";if(I.position++,Q)lY((F)=>F==="\t"||F===" ",B,I);let Y=lY((F)=>{let G=F.charCodeAt(0);return G>=48&&G<=57},B,I),J=Y.length?Number(Y):null;if(I.positionJ)return"failure";return{rangeStartValue:E,rangeEndValue:J}}function TLA(A,Q,B){let I="bytes ";return I+=j8(`${A}`),I+="-",I+=j8(`${Q}`),I+="/",I+=j8(`${B}`),I}class _O extends f3A{#A;constructor(A){super();this.#A=A}_transform(A,Q,B){if(!this._inflateStream){if(A.length===0){B();return}this._inflateStream=(A[0]&15)===8?HO.createInflate(this.#A):HO.createInflateRaw(this.#A),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",(I)=>this.destroy(I))}this._inflateStream.write(A,Q,B)}_final(A){if(this._inflateStream)this._inflateStream.end(),this._inflateStream=null;A()}}function PLA(A){return new _O(A)}function kLA(A){let Q=null,B=null,I=null,C=fO("content-type",A);if(C===null)return"failure";for(let E of C){let Y=m3A(E);if(Y==="failure"||Y.essence==="*/*")continue;if(I=Y,I.essence!==B){if(Q=null,I.parameters.has("charset"))Q=I.parameters.get("charset");B=I.essence}else if(!I.parameters.has("charset")&&Q!==null)I.parameters.set("charset",Q)}if(I==null)return"failure";return I}function SLA(A){let Q=A,B={position:0},I=[],C="";while(B.positionE!=='"'&&E!==",",Q,B),B.positionE===9||E===32),I.push(C),C=""}return I}function fO(A,Q){let B=Q.get(A,!0);if(B===null)return null;return SLA(B)}var yLA=new TextDecoder;function _LA(A){if(A.length===0)return"";if(A[0]===239&&A[1]===187&&A[2]===191)A=A.subarray(3);return yLA.decode(A)}class gO{get baseUrl(){return MO()}get origin(){return this.baseUrl?.origin}policyContainer=TO()}class hO{settingsObject=new gO}var fLA=new hO;xO.exports={isAborted:KLA,isCancelled:zLA,isValidEncodedURL:qO,createDeferredPromise:wLA,ReadableStreamFrom:u3A,tryUpgradeRequestToAPotentiallyTrustworthyURL:ULA,clampAndCoarsenConnectionTimingInfo:CLA,coarsenedSharedCurrentTime:ELA,determineRequestsReferrer:FLA,makePolicyContainer:TO,clonePolicyContainer:JLA,appendFetchMetadata:BLA,appendRequestOriginHeader:ILA,TAOCheck:QLA,corsCheck:ALA,crossOriginResourcePolicyCheck:e3A,createOpaqueTimingInfo:YLA,setRequestReferrerPolicyOnRedirect:t3A,isValidHTTPToken:NO,requestBadPort:a3A,requestCurrentURL:DZ,responseURL:RO,responseLocationURL:i3A,isBlobLike:c3A,isURLPotentiallyTrustworthy:GZ,isValidReasonPhrase:s3A,sameOrigin:q8,normalizeMethod:VLA,serializeJavascriptValueToJSONString:$LA,iteratorMixin:HLA,createIterator:kO,isValidHeaderName:r3A,isValidHeaderValue:OO,isErrorLike:o3A,fullyReadBody:MLA,bytesMatch:GLA,isReadableStreamLike:NLA,readableStreamClose:jLA,isomorphicEncode:j8,urlIsLocal:qLA,urlHasHttpsScheme:oK,urlIsHttpHttpsScheme:yO,readAllBytes:SO,simpleRangeHeaderValue:OLA,buildContentRange:TLA,parseMetadata:PO,createInflate:PLA,extractMimeType:kLA,getDecodeSplit:fO,utf8DecodeBytes:_LA,environmentSettingsObject:fLA}});var H0=U((qLQ,vO)=>{vO.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}});var sK=U((OLQ,bO)=>{var{Blob:gLA,File:hLA}=M("node:buffer"),{kState:OE}=H0(),{webidl:uC}=nQ();class lC{constructor(A,Q,B={}){let I=Q,C=B.type,E=B.lastModified??Date.now();this[OE]={blobLike:A,name:I,type:C,lastModified:E}}stream(...A){return uC.brandCheck(this,lC),this[OE].blobLike.stream(...A)}arrayBuffer(...A){return uC.brandCheck(this,lC),this[OE].blobLike.arrayBuffer(...A)}slice(...A){return uC.brandCheck(this,lC),this[OE].blobLike.slice(...A)}text(...A){return uC.brandCheck(this,lC),this[OE].blobLike.text(...A)}get size(){return uC.brandCheck(this,lC),this[OE].blobLike.size}get type(){return uC.brandCheck(this,lC),this[OE].blobLike.type}get name(){return uC.brandCheck(this,lC),this[OE].name}get lastModified(){return uC.brandCheck(this,lC),this[OE].lastModified}get[Symbol.toStringTag](){return"File"}}uC.converters.Blob=uC.interfaceConverter(gLA);function xLA(A){return A instanceof hLA||A&&(typeof A.stream==="function"||typeof A.arrayBuffer==="function")&&A[Symbol.toStringTag]==="File"}bO.exports={FileLike:lC,isFileLike:xLA}});var ZZ=U((TLQ,lO)=>{var{isBlobLike:O8,iteratorMixin:vLA}=CI(),{kState:LB}=H0(),{kEnumerableProperty:_F}=$A(),{FileLike:mO,isFileLike:bLA}=sK(),{webidl:pA}=nQ(),{File:uO}=M("node:buffer"),dO=M("node:util"),cO=globalThis.File??uO;class pC{constructor(A){if(pA.util.markAsUncloneable(this),A!==void 0)throw pA.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[LB]=[]}append(A,Q,B=void 0){pA.brandCheck(this,pC);let I="FormData.append";if(pA.argumentLengthCheck(arguments,2,I),arguments.length===3&&!O8(Q))throw TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");A=pA.converters.USVString(A,I,"name"),Q=O8(Q)?pA.converters.Blob(Q,I,"value",{strict:!1}):pA.converters.USVString(Q,I,"value"),B=arguments.length===3?pA.converters.USVString(B,I,"filename"):void 0;let C=rK(A,Q,B);this[LB].push(C)}delete(A){pA.brandCheck(this,pC);let Q="FormData.delete";pA.argumentLengthCheck(arguments,1,Q),A=pA.converters.USVString(A,Q,"name"),this[LB]=this[LB].filter((B)=>B.name!==A)}get(A){pA.brandCheck(this,pC);let Q="FormData.get";pA.argumentLengthCheck(arguments,1,Q),A=pA.converters.USVString(A,Q,"name");let B=this[LB].findIndex((I)=>I.name===A);if(B===-1)return null;return this[LB][B].value}getAll(A){pA.brandCheck(this,pC);let Q="FormData.getAll";return pA.argumentLengthCheck(arguments,1,Q),A=pA.converters.USVString(A,Q,"name"),this[LB].filter((B)=>B.name===A).map((B)=>B.value)}has(A){pA.brandCheck(this,pC);let Q="FormData.has";return pA.argumentLengthCheck(arguments,1,Q),A=pA.converters.USVString(A,Q,"name"),this[LB].findIndex((B)=>B.name===A)!==-1}set(A,Q,B=void 0){pA.brandCheck(this,pC);let I="FormData.set";if(pA.argumentLengthCheck(arguments,2,I),arguments.length===3&&!O8(Q))throw TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");A=pA.converters.USVString(A,I,"name"),Q=O8(Q)?pA.converters.Blob(Q,I,"name",{strict:!1}):pA.converters.USVString(Q,I,"name"),B=arguments.length===3?pA.converters.USVString(B,I,"name"):void 0;let C=rK(A,Q,B),E=this[LB].findIndex((Y)=>Y.name===A);if(E!==-1)this[LB]=[...this[LB].slice(0,E),C,...this[LB].slice(E+1).filter((Y)=>Y.name!==A)];else this[LB].push(C)}[dO.inspect.custom](A,Q){let B=this[LB].reduce((C,E)=>{if(C[E.name])if(Array.isArray(C[E.name]))C[E.name].push(E.value);else C[E.name]=[C[E.name],E.value];else C[E.name]=E.value;return C},{__proto__:null});Q.depth??=A,Q.colors??=!0;let I=dO.formatWithOptions(Q,B);return`FormData ${I.slice(I.indexOf("]")+2)}`}}vLA("FormData",pC,LB,"name","value");Object.defineProperties(pC.prototype,{append:_F,delete:_F,get:_F,getAll:_F,has:_F,set:_F,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function rK(A,Q,B){if(typeof Q==="string");else{if(!bLA(Q))Q=Q instanceof Blob?new cO([Q],"blob",{type:Q.type}):new mO(Q,"blob",{type:Q.type});if(B!==void 0){let I={type:Q.type,lastModified:Q.lastModified};Q=Q instanceof uO?new cO([Q],B,I):new mO(Q,B,I)}}return{name:A,value:Q}}lO.exports={FormData:pC,makeEntry:rK}});var sO=U((PLQ,oO)=>{var{isUSVString:pO,bufferToLowerCasedHeaderName:mLA}=$A(),{utf8DecodeBytes:dLA}=CI(),{HTTP_TOKEN_CODEPOINTS:cLA,isomorphicDecode:iO}=dB(),{isFileLike:uLA}=sK(),{makeEntry:lLA}=ZZ(),T8=M("node:assert"),{File:pLA}=M("node:buffer"),iLA=globalThis.File??pLA,nLA=Buffer.from('form-data; name="'),nO=Buffer.from("; filename"),aLA=Buffer.from("--"),oLA=Buffer.from(`--\r +`);function sLA(A){for(let Q=0;Q70)return!1;for(let B=0;B=48&&I<=57||I>=65&&I<=90||I>=97&&I<=122||I===39||I===45||I===95))return!1}return!0}function tLA(A,Q){T8(Q!=="failure"&&Q.essence==="multipart/form-data");let B=Q.parameters.get("boundary");if(B===void 0)return"failure";let I=Buffer.from(`--${B}`,"utf8"),C=[],E={position:0};while(A[E.position]===13&&A[E.position+1]===10)E.position+=2;let Y=A.length;while(A[Y-1]===10&&A[Y-2]===13)Y-=2;if(Y!==A.length)A=A.subarray(0,Y);while(!0){if(A.subarray(E.position,E.position+I.length).equals(I))E.position+=I.length;else return"failure";if(E.position===A.length-2&&P8(A,aLA,E)||E.position===A.length-4&&P8(A,oLA,E))return C;if(A[E.position]!==13||A[E.position+1]!==10)return"failure";E.position+=2;let J=eLA(A,E);if(J==="failure")return"failure";let{name:F,filename:G,contentType:D,encoding:Z}=J;E.position+=2;let W;{let w=A.indexOf(I.subarray(2),E.position);if(w===-1)return"failure";if(W=A.subarray(E.position,w-4),E.position+=W.length,Z==="base64")W=Buffer.from(W.toString(),"base64")}if(A[E.position]!==13||A[E.position+1]!==10)return"failure";else E.position+=2;let X;if(G!==null){if(D??="text/plain",!sLA(D))D="";X=new iLA([W],G,{type:D})}else X=dLA(Buffer.from(W));T8(pO(F)),T8(typeof X==="string"&&pO(X)||uLA(X)),C.push(lLA(F,X,G))}}function eLA(A,Q){let B=null,I=null,C=null,E=null;while(!0){if(A[Q.position]===13&&A[Q.position+1]===10){if(B===null)return"failure";return{name:B,filename:I,contentType:C,encoding:E}}let Y=fF((J)=>J!==10&&J!==13&&J!==58,A,Q);if(Y=tK(Y,!0,!0,(J)=>J===9||J===32),!cLA.test(Y.toString()))return"failure";if(A[Q.position]!==58)return"failure";switch(Q.position++,fF((J)=>J===32||J===9,A,Q),mLA(Y)){case"content-disposition":{if(B=I=null,!P8(A,nLA,Q))return"failure";if(Q.position+=17,B=aO(A,Q),B===null)return"failure";if(P8(A,nO,Q)){let J=Q.position+nO.length;if(A[J]===42)Q.position+=1,J+=1;if(A[J]!==61||A[J+1]!==34)return"failure";if(Q.position+=12,I=aO(A,Q),I===null)return"failure"}break}case"content-type":{let J=fF((F)=>F!==10&&F!==13,A,Q);J=tK(J,!1,!0,(F)=>F===9||F===32),C=iO(J);break}case"content-transfer-encoding":{let J=fF((F)=>F!==10&&F!==13,A,Q);J=tK(J,!1,!0,(F)=>F===9||F===32),E=iO(J);break}default:fF((J)=>J!==10&&J!==13,A,Q)}if(A[Q.position]!==13&&A[Q.position+1]!==10)return"failure";else Q.position+=2}}function aO(A,Q){T8(A[Q.position-1]===34);let B=fF((I)=>I!==10&&I!==13&&I!==34,A,Q);if(A[Q.position]!==34)return null;else Q.position++;return B=new TextDecoder().decode(B).replace(/%0A/ig,` +`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),B}function fF(A,Q,B){let I=B.position;while(I0&&I(A[E]))E--;return C===0&&E===A.length-1?A:A.subarray(C,E+1)}function P8(A,Q,B){if(A.length{var WZ=$A(),{ReadableStreamFrom:AHA,isBlobLike:rO,isReadableStreamLike:QHA,readableStreamClose:BHA,createDeferredPromise:IHA,fullyReadBody:CHA,extractMimeType:EHA,utf8DecodeBytes:AT}=CI(),{FormData:tO}=ZZ(),{kState:hF}=H0(),{webidl:YHA}=nQ(),{Blob:JHA}=M("node:buffer"),eK=M("node:assert"),{isErrored:QT,isDisturbed:FHA}=M("node:stream"),{isArrayBuffer:GHA}=M("node:util/types"),{serializeAMimeType:DHA}=dB(),{multipartFormDataParser:ZHA}=sO(),A6;try{let A=M("node:crypto");A6=(Q)=>A.randomInt(0,Q)}catch{A6=(A)=>Math.floor(Math.random(A))}var k8=new TextEncoder;function WHA(){}var BT=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,IT;if(BT)IT=new FinalizationRegistry((A)=>{let Q=A.deref();if(Q&&!Q.locked&&!FHA(Q)&&!QT(Q))Q.cancel("Response object has been garbage collected").catch(WHA)});function CT(A,Q=!1){let B=null;if(A instanceof ReadableStream)B=A;else if(rO(A))B=A.stream();else B=new ReadableStream({async pull(F){let G=typeof C==="string"?k8.encode(C):C;if(G.byteLength)F.enqueue(G);queueMicrotask(()=>BHA(F))},start(){},type:"bytes"});eK(QHA(B));let I=null,C=null,E=null,Y=null;if(typeof A==="string")C=A,Y="text/plain;charset=UTF-8";else if(A instanceof URLSearchParams)C=A.toString(),Y="application/x-www-form-urlencoded;charset=UTF-8";else if(GHA(A))C=new Uint8Array(A.slice());else if(ArrayBuffer.isView(A))C=new Uint8Array(A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength));else if(WZ.isFormDataLike(A)){let F=`----formdata-undici-0${`${A6(100000000000)}`.padStart(11,"0")}`,G=`--${F}\r +Content-Disposition: form-data`;/*! formdata-polyfill. MIT License. Jimmy Wärting */let D=(z)=>z.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),Z=(z)=>z.replace(/\r?\n|\r/g,`\r +`),W=[],X=new Uint8Array([13,10]);E=0;let w=!1;for(let[z,$]of A)if(typeof $==="string"){let N=k8.encode(G+`; name="${D(Z(z))}"\r \r -${U(R)}\r -`);N.push(x),C+=x.byteLength}else{let x=Tg.encode(`${J}; name="${Y(U(Z))}"`+(R.name?`; filename="${Y(R.name)}"`:"")+`\r -Content-Type: ${R.type||"application/octet-stream"}\r +${Z($)}\r +`);W.push(N),E+=N.byteLength}else{let N=k8.encode(`${G}; name="${D(Z(z))}"`+($.name?`; filename="${D($.name)}"`:"")+`\r +Content-Type: ${$.type||"application/octet-stream"}\r \r -`);if(N.push(x,R,w),typeof R.size==="number")C+=x.byteLength+R.size+w.byteLength;else L=!0}let S=Tg.encode(`--${D}--\r -`);if(N.push(S),C+=S.byteLength,L)C=null;E=A,I=async function*(){for(let Z of N)if(Z.stream)yield*Z.stream();else yield Z},g=`multipart/form-data; boundary=${D}`}else if(eM(A)){if(E=A,C=A.size,A.type)g=A.type}else if(typeof A[Symbol.asyncIterator]==="function"){if(Q)throw TypeError("keepalive");if(mE.isDisturbed(A)||A.locked)throw TypeError("Response body object should not be disturbed or locked");B=A instanceof ReadableStream?A:_S(A)}if(typeof E==="string"||mE.isBuffer(E))C=Buffer.byteLength(E);if(I!=null){let D;B=new ReadableStream({async start(){D=I(A)[Symbol.asyncIterator]()},async pull(J){let{value:Y,done:U}=await D.next();if(U)queueMicrotask(()=>{J.close(),J.byobRequest?.respond(0)});else if(!Iw(B)){let N=new Uint8Array(Y);if(N.byteLength)J.enqueue(N)}return J.desiredSize>0},async cancel(J){await D.return()},type:"bytes"})}return[{stream:B,source:E,length:C},g]}function uS(A,Q=!1){if(A instanceof ReadableStream)KD(!mE.isDisturbed(A),"The body has already been consumed."),KD(!A.locked,"The stream is locked.");return gw(A,Q)}function cS(A,Q){let[B,I]=Q.stream.tee();return Q.stream=B,{stream:I,length:Q.length,source:Q.source}}function dS(A){if(A.aborted)throw new DOMException("The operation was aborted.","AbortError")}function lS(A){return{blob(){return mI(this,(B)=>{let I=Qw(this);if(I===null)I="";else if(I)I=vS(I);return new hS([B],{type:I})},A)},arrayBuffer(){return mI(this,(B)=>{return new Uint8Array(B).buffer},A)},text(){return mI(this,Bw,A)},json(){return mI(this,iS,A)},formData(){return mI(this,(B)=>{let I=Qw(this);if(I!==null)switch(I.essence){case"multipart/form-data":{let E=bS(B,I);if(E==="failure")throw TypeError("Failed to parse body as FormData.");let C=new Aw;return C[uI]=E,C}case"application/x-www-form-urlencoded":{let E=new URLSearchParams(B.toString()),C=new Aw;for(let[g,F]of E)C.append(g,F);return C}}throw TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},A)},bytes(){return mI(this,(B)=>{return new Uint8Array(B)},A)}}}function pS(A){Object.assign(A.prototype,lS(A))}async function mI(A,Q,B){if(yS.brandCheck(A,B),Fw(A))throw TypeError("Body is unusable: Body has already been read");dS(A[uI]);let I=OS(),E=(g)=>I.reject(g),C=(g)=>{try{I.resolve(Q(g))}catch(F){E(F)}};if(A[uI].body==null)return C(Buffer.allocUnsafe(0)),I.promise;return await PS(A[uI].body,C,E),I.promise}function Fw(A){let Q=A[uI].body;return Q!=null&&(Q.stream.locked||mE.isDisturbed(Q.stream))}function iS(A){return JSON.parse(Bw(A))}function Qw(A){let Q=A[uI].headersList,B=qS(Q);if(B==="failure")return null;return B}Dw.exports={extractBody:gw,safelyExtractBody:uS,cloneBody:cS,mixinBody:pS,streamRegistry:Cw,hasFinalizationRegistry:Ew,bodyUnusable:Fw}});var Rw=W((hb,Zw)=>{var f=z("node:assert"),u=p(),{channels:Yw}=jI(),SD=gD(),{RequestContentLengthMismatchError:eB,ResponseContentLengthMismatchError:nS,RequestAbortedError:ww,HeadersTimeoutError:aS,HeadersOverflowError:sS,SocketError:qg,InformationalError:dI,BodyTimeoutError:oS,HTTPParserError:rS,ResponseExceededMaxSizeError:tS}=r(),{kUrl:Ww,kReset:rA,kClient:_D,kParser:LA,kBlocking:dE,kRunning:qA,kPending:eS,kSize:Jw,kWriting:$B,kQueue:$Q,kNoRef:uE,kKeepAliveDefaultTimeout:A$,kHostHeader:Q$,kPendingIdx:B$,kRunningIdx:NQ,kError:MQ,kPipelining:Og,kSocket:lI,kKeepAliveTimeoutValue:yg,kMaxHeadersSize:$D,kKeepAliveMaxTimeout:I$,kKeepAliveTimeoutThreshold:E$,kHeadersTimeout:C$,kBodyTimeout:g$,kStrictContentLength:jD,kMaxRequests:Uw,kCounter:F$,kMaxResponseSize:D$,kOnError:Y$,kResume:SB,kHTTPContext:Lw}=GA(),uQ=BM(),J$=Buffer.alloc(0),_g=Buffer[Symbol.species],jg=u.addListener,U$=u.removeAllListeners,HD;async function G$(){let A=process.env.JEST_WORKER_ID?GD():void 0,Q;try{Q=await WebAssembly.compile(CM())}catch(B){Q=await WebAssembly.compile(A||GD())}return await WebAssembly.instantiate(Q,{env:{wasm_on_url:(B,I,E)=>{return 0},wasm_on_status:(B,I,E)=>{f(SA.ptr===B);let C=I-dQ+cQ.byteOffset;return SA.onStatus(new _g(cQ.buffer,C,E))||0},wasm_on_message_begin:(B)=>{return f(SA.ptr===B),SA.onMessageBegin()||0},wasm_on_header_field:(B,I,E)=>{f(SA.ptr===B);let C=I-dQ+cQ.byteOffset;return SA.onHeaderField(new _g(cQ.buffer,C,E))||0},wasm_on_header_value:(B,I,E)=>{f(SA.ptr===B);let C=I-dQ+cQ.byteOffset;return SA.onHeaderValue(new _g(cQ.buffer,C,E))||0},wasm_on_headers_complete:(B,I,E,C)=>{return f(SA.ptr===B),SA.onHeadersComplete(I,Boolean(E),Boolean(C))||0},wasm_on_body:(B,I,E)=>{f(SA.ptr===B);let C=I-dQ+cQ.byteOffset;return SA.onBody(new _g(cQ.buffer,C,E))||0},wasm_on_message_complete:(B)=>{return f(SA.ptr===B),SA.onMessageComplete()||0}}})}var TD=null,xD=G$();xD.catch();var SA=null,cQ=null,xg=0,dQ=null,N$=0,cE=1,pI=2|cE,Pg=4|cE,OD=8|N$;class Vw{constructor(A,Q,{exports:B}){f(Number.isFinite(A[$D])&&A[$D]>0),this.llhttp=B,this.ptr=this.llhttp.llhttp_alloc(uQ.TYPE.RESPONSE),this.client=A,this.socket=Q,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=A[$D],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=A[D$]}setTimeout(A,Q){if(A!==this.timeoutValue||Q&cE^this.timeoutType&cE){if(this.timeout)SD.clearTimeout(this.timeout),this.timeout=null;if(A)if(Q&cE)this.timeout=SD.setFastTimeout(Gw,A,new WeakRef(this));else this.timeout=setTimeout(Gw,A,new WeakRef(this)),this.timeout.unref();this.timeoutValue=A}else if(this.timeout){if(this.timeout.refresh)this.timeout.refresh()}this.timeoutType=Q}resume(){if(this.socket.destroyed||!this.paused)return;if(f(this.ptr!=null),f(SA==null),this.llhttp.llhttp_resume(this.ptr),f(this.timeoutType===Pg),this.timeout){if(this.timeout.refresh)this.timeout.refresh()}this.paused=!1,this.execute(this.socket.read()||J$),this.readMore()}readMore(){while(!this.paused&&this.ptr){let A=this.socket.read();if(A===null)break;this.execute(A)}}execute(A){f(this.ptr!=null),f(SA==null),f(!this.paused);let{socket:Q,llhttp:B}=this;if(A.length>xg){if(dQ)B.free(dQ);xg=Math.ceil(A.length/4096)*4096,dQ=B.malloc(xg)}new Uint8Array(B.memory.buffer,dQ,xg).set(A);try{let I;try{cQ=A,SA=this,I=B.llhttp_execute(this.ptr,dQ,A.length)}catch(C){throw C}finally{SA=null,cQ=null}let E=B.llhttp_get_error_pos(this.ptr)-dQ;if(I===uQ.ERROR.PAUSED_UPGRADE)this.onUpgrade(A.slice(E));else if(I===uQ.ERROR.PAUSED)this.paused=!0,Q.unshift(A.slice(E));else if(I!==uQ.ERROR.OK){let C=B.llhttp_get_error_reason(this.ptr),g="";if(C){let F=new Uint8Array(B.memory.buffer,C).indexOf(0);g="Response does not match the HTTP/1.1 protocol ("+Buffer.from(B.memory.buffer,C,F).toString()+")"}throw new rS(g,uQ.ERROR[I],A.slice(E))}}catch(I){u.destroy(Q,I)}}destroy(){f(this.ptr!=null),f(SA==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&SD.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(A){this.statusText=A.toString()}onMessageBegin(){let{socket:A,client:Q}=this;if(A.destroyed)return-1;let B=Q[$Q][Q[NQ]];if(!B)return-1;B.onResponseStarted()}onHeaderField(A){let Q=this.headers.length;if((Q&1)===0)this.headers.push(A);else this.headers[Q-1]=Buffer.concat([this.headers[Q-1],A]);this.trackHeader(A.length)}onHeaderValue(A){let Q=this.headers.length;if((Q&1)===1)this.headers.push(A),Q+=1;else this.headers[Q-1]=Buffer.concat([this.headers[Q-1],A]);let B=this.headers[Q-2];if(B.length===10){let I=u.bufferToLowerCasedHeaderName(B);if(I==="keep-alive")this.keepAlive+=A.toString();else if(I==="connection")this.connection+=A.toString()}else if(B.length===14&&u.bufferToLowerCasedHeaderName(B)==="content-length")this.contentLength+=A.toString();this.trackHeader(A.length)}trackHeader(A){if(this.headersSize+=A,this.headersSize>=this.headersMaxSize)u.destroy(this.socket,new sS)}onUpgrade(A){let{upgrade:Q,client:B,socket:I,headers:E,statusCode:C}=this;f(Q),f(B[lI]===I),f(!I.destroyed),f(!this.paused),f((E.length&1)===0);let g=B[$Q][B[NQ]];f(g),f(g.upgrade||g.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,this.headers=[],this.headersSize=0,I.unshift(A),I[LA].destroy(),I[LA]=null,I[_D]=null,I[MQ]=null,U$(I),B[lI]=null,B[Lw]=null,B[$Q][B[NQ]++]=null,B.emit("disconnect",B[Ww],[B],new dI("upgrade"));try{g.onUpgrade(C,E,I)}catch(F){u.destroy(I,F)}B[SB]()}onHeadersComplete(A,Q,B){let{client:I,socket:E,headers:C,statusText:g}=this;if(E.destroyed)return-1;let F=I[$Q][I[NQ]];if(!F)return-1;if(f(!this.upgrade),f(this.statusCode<200),A===100)return u.destroy(E,new qg("bad response",u.getSocketInfo(E))),-1;if(Q&&!F.upgrade)return u.destroy(E,new qg("bad upgrade",u.getSocketInfo(E))),-1;if(f(this.timeoutType===pI),this.statusCode=A,this.shouldKeepAlive=B||F.method==="HEAD"&&!E[rA]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){let J=F.bodyTimeout!=null?F.bodyTimeout:I[g$];this.setTimeout(J,Pg)}else if(this.timeout){if(this.timeout.refresh)this.timeout.refresh()}if(F.method==="CONNECT")return f(I[qA]===1),this.upgrade=!0,2;if(Q)return f(I[qA]===1),this.upgrade=!0,2;if(f((this.headers.length&1)===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&I[Og]){let J=this.keepAlive?u.parseKeepAliveTimeout(this.keepAlive):null;if(J!=null){let Y=Math.min(J-I[E$],I[I$]);if(Y<=0)E[rA]=!0;else I[yg]=Y}else I[yg]=I[A$]}else E[rA]=!0;let D=F.onHeaders(A,C,this.resume,g)===!1;if(F.aborted)return-1;if(F.method==="HEAD")return 1;if(A<200)return 1;if(E[dE])E[dE]=!1,I[SB]();return D?uQ.ERROR.PAUSED:0}onBody(A){let{client:Q,socket:B,statusCode:I,maxResponseSize:E}=this;if(B.destroyed)return-1;let C=Q[$Q][Q[NQ]];if(f(C),f(this.timeoutType===Pg),this.timeout){if(this.timeout.refresh)this.timeout.refresh()}if(f(I>=200),E>-1&&this.bytesRead+A.length>E)return u.destroy(B,new tS),-1;if(this.bytesRead+=A.length,C.onData(A)===!1)return uQ.ERROR.PAUSED}onMessageComplete(){let{client:A,socket:Q,statusCode:B,upgrade:I,headers:E,contentLength:C,bytesRead:g,shouldKeepAlive:F}=this;if(Q.destroyed&&(!B||F))return-1;if(I)return;f(B>=100),f((this.headers.length&1)===0);let D=A[$Q][A[NQ]];if(f(D),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",this.headers=[],this.headersSize=0,B<200)return;if(D.method!=="HEAD"&&C&&g!==parseInt(C,10))return u.destroy(Q,new nS),-1;if(D.onComplete(E),A[$Q][A[NQ]++]=null,Q[$B])return f(A[qA]===0),u.destroy(Q,new dI("reset")),uQ.ERROR.PAUSED;else if(!F)return u.destroy(Q,new dI("reset")),uQ.ERROR.PAUSED;else if(Q[rA]&&A[qA]===0)return u.destroy(Q,new dI("reset")),uQ.ERROR.PAUSED;else if(A[Og]==null||A[Og]===1)setImmediate(()=>A[SB]());else A[SB]()}}function Gw(A){let{socket:Q,timeoutType:B,client:I,paused:E}=A.deref();if(B===pI){if(!Q[$B]||Q.writableNeedDrain||I[qA]>1)f(!E,"cannot be paused while waiting for headers"),u.destroy(Q,new aS)}else if(B===Pg){if(!E)u.destroy(Q,new oS)}else if(B===OD)f(I[qA]===0&&I[yg]),u.destroy(Q,new dI("socket idle timeout"))}async function M$(A,Q){if(A[lI]=Q,!TD)TD=await xD,xD=null;Q[uE]=!1,Q[$B]=!1,Q[rA]=!1,Q[dE]=!1,Q[LA]=new Vw(A,Q,TD),jg(Q,"error",function(I){f(I.code!=="ERR_TLS_CERT_ALTNAME_INVALID");let E=this[LA];if(I.code==="ECONNRESET"&&E.statusCode&&!E.shouldKeepAlive){E.onMessageComplete();return}this[MQ]=I,this[_D][Y$](I)}),jg(Q,"readable",function(){let I=this[LA];if(I)I.readMore()}),jg(Q,"end",function(){let I=this[LA];if(I.statusCode&&!I.shouldKeepAlive){I.onMessageComplete();return}u.destroy(this,new qg("other side closed",u.getSocketInfo(this)))}),jg(Q,"close",function(){let I=this[_D],E=this[LA];if(E){if(!this[MQ]&&E.statusCode&&!E.shouldKeepAlive)E.onMessageComplete();this[LA].destroy(),this[LA]=null}let C=this[MQ]||new qg("closed",u.getSocketInfo(this));if(I[lI]=null,I[Lw]=null,I.destroyed){f(I[eS]===0);let g=I[$Q].splice(I[NQ]);for(let F=0;F0&&C.code!=="UND_ERR_INFO"){let g=I[$Q][I[NQ]];I[$Q][I[NQ]++]=null,u.errorRequest(I,g,C)}I[B$]=I[NQ],f(I[qA]===0),I.emit("disconnect",I[Ww],[I],C),I[SB]()});let B=!1;return Q.on("close",()=>{B=!0}),{version:"h1",defaultPipelining:1,write(...I){return L$(A,...I)},resume(){w$(A)},destroy(I,E){if(B)queueMicrotask(E);else Q.destroy(I).on("close",E)},get destroyed(){return Q.destroyed},busy(I){if(Q[$B]||Q[rA]||Q[dE])return!0;if(I){if(A[qA]>0&&!I.idempotent)return!0;if(A[qA]>0&&(I.upgrade||I.method==="CONNECT"))return!0;if(A[qA]>0&&u.bodyLength(I.body)!==0&&(u.isStream(I.body)||u.isAsyncIterable(I.body)||u.isFormDataLike(I.body)))return!0}return!1}}}function w$(A){let Q=A[lI];if(Q&&!Q.destroyed){if(A[Jw]===0){if(!Q[uE]&&Q.unref)Q.unref(),Q[uE]=!0}else if(Q[uE]&&Q.ref)Q.ref(),Q[uE]=!1;if(A[Jw]===0){if(Q[LA].timeoutType!==OD)Q[LA].setTimeout(A[yg],OD)}else if(A[qA]>0&&Q[LA].statusCode<200){if(Q[LA].timeoutType!==pI){let B=A[$Q][A[NQ]],I=B.headersTimeout!=null?B.headersTimeout:A[C$];Q[LA].setTimeout(I,pI)}}}}function W$(A){return A!=="GET"&&A!=="HEAD"&&A!=="OPTIONS"&&A!=="TRACE"&&A!=="CONNECT"}function L$(A,Q){let{method:B,path:I,host:E,upgrade:C,blocking:g,reset:F}=Q,{body:D,headers:J,contentLength:Y}=Q,U=B==="PUT"||B==="POST"||B==="PATCH"||B==="QUERY"||B==="PROPFIND"||B==="PROPPATCH";if(u.isFormDataLike(D)){if(!HD)HD=cI().extractBody;let[Z,R]=HD(D);if(Q.contentType==null)J.push("content-type",R);D=Z.stream,Y=Z.length}else if(u.isBlobLike(D)&&Q.contentType==null&&D.type)J.push("content-type",D.type);if(D&&typeof D.read==="function")D.read(0);let N=u.bodyLength(D);if(Y=N??Y,Y===null)Y=Q.contentLength;if(Y===0&&!U)Y=null;if(W$(B)&&Y>0&&Q.contentLength!==null&&Q.contentLength!==Y){if(A[jD])return u.errorRequest(A,Q,new eB),!1;process.emitWarning(new eB)}let w=A[lI],L=(Z)=>{if(Q.aborted||Q.completed)return;u.errorRequest(A,Q,Z||new ww),u.destroy(D),u.destroy(w,new dI("aborted"))};try{Q.onConnect(L)}catch(Z){u.errorRequest(A,Q,Z)}if(Q.aborted)return!1;if(B==="HEAD")w[rA]=!0;if(C||B==="CONNECT")w[rA]=!0;if(F!=null)w[rA]=F;if(A[Uw]&&w[F$]++>=A[Uw])w[rA]=!0;if(g)w[dE]=!0;let S=`${B} ${I} HTTP/1.1\r -`;if(typeof E==="string")S+=`host: ${E}\r -`;else S+=A[Q$];if(C)S+=`connection: upgrade\r -upgrade: ${C}\r -`;else if(A[Og]&&!w[rA])S+=`connection: keep-alive\r -`;else S+=`connection: close\r -`;if(Array.isArray(J))for(let Z=0;Z{Q.removeListener("error",w)}),!D){let L=new ww;queueMicrotask(()=>w(L))}},w=function(L){if(D)return;if(D=!0,f(E.destroyed||E[$B]&&B[qA]<=1),E.off("drain",U).off("error",w),Q.removeListener("data",Y).removeListener("end",w).removeListener("close",N),!L)try{J.end()}catch(S){L=S}if(J.destroy(L),L&&(L.code!=="UND_ERR_INFO"||L.message!=="reset"))u.destroy(Q,L);else u.destroy(Q)};if(Q.on("data",Y).on("end",w).on("error",w).on("close",N),Q.resume)Q.resume();if(E.on("drain",U).on("error",w),Q.errorEmitted??Q.errored)setImmediate(()=>w(Q.errored));else if(Q.endEmitted??Q.readableEnded)setImmediate(()=>w(null));if(Q.closeEmitted??Q.closed)setImmediate(N)}function Nw(A,Q,B,I,E,C,g,F){try{if(!Q)if(C===0)E.write(`${g}content-length: 0\r +`);if(W.push(N,$,X),typeof $.size==="number")E+=N.byteLength+$.size+X.byteLength;else w=!0}let K=k8.encode(`--${F}--\r +`);if(W.push(K),E+=K.byteLength,w)E=null;C=A,I=async function*(){for(let z of W)if(z.stream)yield*z.stream();else yield z},Y=`multipart/form-data; boundary=${F}`}else if(rO(A)){if(C=A,E=A.size,A.type)Y=A.type}else if(typeof A[Symbol.asyncIterator]==="function"){if(Q)throw TypeError("keepalive");if(WZ.isDisturbed(A)||A.locked)throw TypeError("Response body object should not be disturbed or locked");B=A instanceof ReadableStream?A:AHA(A)}if(typeof C==="string"||WZ.isBuffer(C))E=Buffer.byteLength(C);if(I!=null){let F;B=new ReadableStream({async start(){F=I(A)[Symbol.asyncIterator]()},async pull(G){let{value:D,done:Z}=await F.next();if(Z)queueMicrotask(()=>{G.close(),G.byobRequest?.respond(0)});else if(!QT(B)){let W=new Uint8Array(D);if(W.byteLength)G.enqueue(W)}return G.desiredSize>0},async cancel(G){await F.return()},type:"bytes"})}return[{stream:B,source:C,length:E},Y]}function XHA(A,Q=!1){if(A instanceof ReadableStream)eK(!WZ.isDisturbed(A),"The body has already been consumed."),eK(!A.locked,"The stream is locked.");return CT(A,Q)}function UHA(A,Q){let[B,I]=Q.stream.tee();return Q.stream=B,{stream:I,length:Q.length,source:Q.source}}function wHA(A){if(A.aborted)throw new DOMException("The operation was aborted.","AbortError")}function KHA(A){return{blob(){return gF(this,(B)=>{let I=eO(this);if(I===null)I="";else if(I)I=DHA(I);return new JHA([B],{type:I})},A)},arrayBuffer(){return gF(this,(B)=>{return new Uint8Array(B).buffer},A)},text(){return gF(this,AT,A)},json(){return gF(this,VHA,A)},formData(){return gF(this,(B)=>{let I=eO(this);if(I!==null)switch(I.essence){case"multipart/form-data":{let C=ZHA(B,I);if(C==="failure")throw TypeError("Failed to parse body as FormData.");let E=new tO;return E[hF]=C,E}case"application/x-www-form-urlencoded":{let C=new URLSearchParams(B.toString()),E=new tO;for(let[Y,J]of C)E.append(Y,J);return E}}throw TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},A)},bytes(){return gF(this,(B)=>{return new Uint8Array(B)},A)}}}function zHA(A){Object.assign(A.prototype,KHA(A))}async function gF(A,Q,B){if(YHA.brandCheck(A,B),ET(A))throw TypeError("Body is unusable: Body has already been read");wHA(A[hF]);let I=IHA(),C=(Y)=>I.reject(Y),E=(Y)=>{try{I.resolve(Q(Y))}catch(J){C(J)}};if(A[hF].body==null)return E(Buffer.allocUnsafe(0)),I.promise;return await CHA(A[hF].body,E,C),I.promise}function ET(A){let Q=A[hF].body;return Q!=null&&(Q.stream.locked||WZ.isDisturbed(Q.stream))}function VHA(A){return JSON.parse(AT(A))}function eO(A){let Q=A[hF].headersList,B=EHA(Q);if(B==="failure")return null;return B}YT.exports={extractBody:CT,safelyExtractBody:XHA,cloneBody:UHA,mixinBody:zHA,streamRegistry:IT,hasFinalizationRegistry:BT,bodyUnusable:ET}});var VT=U((SLQ,zT)=>{var QA=M("node:assert"),FA=$A(),{channels:JT}=jF(),Q6=xK(),{RequestContentLengthMismatchError:iY,ResponseContentLengthMismatchError:$HA,RequestAbortedError:XT,HeadersTimeoutError:LHA,HeadersOverflowError:HHA,SocketError:h8,InformationalError:vF,BodyTimeoutError:MHA,HTTPParserError:NHA,ResponseExceededMaxSizeError:jHA}=TA(),{kUrl:UT,kReset:cB,kClient:E6,kParser:WQ,kBlocking:wZ,kRunning:EB,kPending:RHA,kSize:FT,kWriting:N0,kQueue:WC,kNoRef:XZ,kKeepAliveDefaultTimeout:qHA,kHostHeader:OHA,kPendingIdx:THA,kRunningIdx:SI,kError:yI,kPipelining:f8,kSocket:bF,kKeepAliveTimeoutValue:x8,kMaxHeadersSize:B6,kKeepAliveMaxTimeout:PHA,kKeepAliveTimeoutThreshold:kHA,kHeadersTimeout:SHA,kBodyTimeout:yHA,kStrictContentLength:Y6,kMaxRequests:GT,kCounter:_HA,kMaxResponseSize:fHA,kOnError:gHA,kResume:M0,kHTTPContext:wT}=eA(),iC=AO(),hHA=Buffer.alloc(0),S8=Buffer[Symbol.species],y8=FA.addListener,xHA=FA.removeAllListeners,I6;async function vHA(){let A=process.env.JEST_WORKER_ID?uK():void 0,Q;try{Q=await WebAssembly.compile(IO())}catch(B){Q=await WebAssembly.compile(A||uK())}return await WebAssembly.instantiate(Q,{env:{wasm_on_url:(B,I,C)=>{return 0},wasm_on_status:(B,I,C)=>{QA(yQ.ptr===B);let E=I-aC+nC.byteOffset;return yQ.onStatus(new S8(nC.buffer,E,C))||0},wasm_on_message_begin:(B)=>{return QA(yQ.ptr===B),yQ.onMessageBegin()||0},wasm_on_header_field:(B,I,C)=>{QA(yQ.ptr===B);let E=I-aC+nC.byteOffset;return yQ.onHeaderField(new S8(nC.buffer,E,C))||0},wasm_on_header_value:(B,I,C)=>{QA(yQ.ptr===B);let E=I-aC+nC.byteOffset;return yQ.onHeaderValue(new S8(nC.buffer,E,C))||0},wasm_on_headers_complete:(B,I,C,E)=>{return QA(yQ.ptr===B),yQ.onHeadersComplete(I,Boolean(C),Boolean(E))||0},wasm_on_body:(B,I,C)=>{QA(yQ.ptr===B);let E=I-aC+nC.byteOffset;return yQ.onBody(new S8(nC.buffer,E,C))||0},wasm_on_message_complete:(B)=>{return QA(yQ.ptr===B),yQ.onMessageComplete()||0}}})}var C6=null,J6=vHA();J6.catch();var yQ=null,nC=null,_8=0,aC=null,bHA=0,UZ=1,mF=2|UZ,g8=4|UZ,F6=8|bHA;class KT{constructor(A,Q,{exports:B}){QA(Number.isFinite(A[B6])&&A[B6]>0),this.llhttp=B,this.ptr=this.llhttp.llhttp_alloc(iC.TYPE.RESPONSE),this.client=A,this.socket=Q,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=A[B6],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=A[fHA]}setTimeout(A,Q){if(A!==this.timeoutValue||Q&UZ^this.timeoutType&UZ){if(this.timeout)Q6.clearTimeout(this.timeout),this.timeout=null;if(A)if(Q&UZ)this.timeout=Q6.setFastTimeout(DT,A,new WeakRef(this));else this.timeout=setTimeout(DT,A,new WeakRef(this)),this.timeout.unref();this.timeoutValue=A}else if(this.timeout){if(this.timeout.refresh)this.timeout.refresh()}this.timeoutType=Q}resume(){if(this.socket.destroyed||!this.paused)return;if(QA(this.ptr!=null),QA(yQ==null),this.llhttp.llhttp_resume(this.ptr),QA(this.timeoutType===g8),this.timeout){if(this.timeout.refresh)this.timeout.refresh()}this.paused=!1,this.execute(this.socket.read()||hHA),this.readMore()}readMore(){while(!this.paused&&this.ptr){let A=this.socket.read();if(A===null)break;this.execute(A)}}execute(A){QA(this.ptr!=null),QA(yQ==null),QA(!this.paused);let{socket:Q,llhttp:B}=this;if(A.length>_8){if(aC)B.free(aC);_8=Math.ceil(A.length/4096)*4096,aC=B.malloc(_8)}new Uint8Array(B.memory.buffer,aC,_8).set(A);try{let I;try{nC=A,yQ=this,I=B.llhttp_execute(this.ptr,aC,A.length)}catch(E){throw E}finally{yQ=null,nC=null}let C=B.llhttp_get_error_pos(this.ptr)-aC;if(I===iC.ERROR.PAUSED_UPGRADE)this.onUpgrade(A.slice(C));else if(I===iC.ERROR.PAUSED)this.paused=!0,Q.unshift(A.slice(C));else if(I!==iC.ERROR.OK){let E=B.llhttp_get_error_reason(this.ptr),Y="";if(E){let J=new Uint8Array(B.memory.buffer,E).indexOf(0);Y="Response does not match the HTTP/1.1 protocol ("+Buffer.from(B.memory.buffer,E,J).toString()+")"}throw new NHA(Y,iC.ERROR[I],A.slice(C))}}catch(I){FA.destroy(Q,I)}}destroy(){QA(this.ptr!=null),QA(yQ==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&Q6.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(A){this.statusText=A.toString()}onMessageBegin(){let{socket:A,client:Q}=this;if(A.destroyed)return-1;let B=Q[WC][Q[SI]];if(!B)return-1;B.onResponseStarted()}onHeaderField(A){let Q=this.headers.length;if((Q&1)===0)this.headers.push(A);else this.headers[Q-1]=Buffer.concat([this.headers[Q-1],A]);this.trackHeader(A.length)}onHeaderValue(A){let Q=this.headers.length;if((Q&1)===1)this.headers.push(A),Q+=1;else this.headers[Q-1]=Buffer.concat([this.headers[Q-1],A]);let B=this.headers[Q-2];if(B.length===10){let I=FA.bufferToLowerCasedHeaderName(B);if(I==="keep-alive")this.keepAlive+=A.toString();else if(I==="connection")this.connection+=A.toString()}else if(B.length===14&&FA.bufferToLowerCasedHeaderName(B)==="content-length")this.contentLength+=A.toString();this.trackHeader(A.length)}trackHeader(A){if(this.headersSize+=A,this.headersSize>=this.headersMaxSize)FA.destroy(this.socket,new HHA)}onUpgrade(A){let{upgrade:Q,client:B,socket:I,headers:C,statusCode:E}=this;QA(Q),QA(B[bF]===I),QA(!I.destroyed),QA(!this.paused),QA((C.length&1)===0);let Y=B[WC][B[SI]];QA(Y),QA(Y.upgrade||Y.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,this.headers=[],this.headersSize=0,I.unshift(A),I[WQ].destroy(),I[WQ]=null,I[E6]=null,I[yI]=null,xHA(I),B[bF]=null,B[wT]=null,B[WC][B[SI]++]=null,B.emit("disconnect",B[UT],[B],new vF("upgrade"));try{Y.onUpgrade(E,C,I)}catch(J){FA.destroy(I,J)}B[M0]()}onHeadersComplete(A,Q,B){let{client:I,socket:C,headers:E,statusText:Y}=this;if(C.destroyed)return-1;let J=I[WC][I[SI]];if(!J)return-1;if(QA(!this.upgrade),QA(this.statusCode<200),A===100)return FA.destroy(C,new h8("bad response",FA.getSocketInfo(C))),-1;if(Q&&!J.upgrade)return FA.destroy(C,new h8("bad upgrade",FA.getSocketInfo(C))),-1;if(QA(this.timeoutType===mF),this.statusCode=A,this.shouldKeepAlive=B||J.method==="HEAD"&&!C[cB]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){let G=J.bodyTimeout!=null?J.bodyTimeout:I[yHA];this.setTimeout(G,g8)}else if(this.timeout){if(this.timeout.refresh)this.timeout.refresh()}if(J.method==="CONNECT")return QA(I[EB]===1),this.upgrade=!0,2;if(Q)return QA(I[EB]===1),this.upgrade=!0,2;if(QA((this.headers.length&1)===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&I[f8]){let G=this.keepAlive?FA.parseKeepAliveTimeout(this.keepAlive):null;if(G!=null){let D=Math.min(G-I[kHA],I[PHA]);if(D<=0)C[cB]=!0;else I[x8]=D}else I[x8]=I[qHA]}else C[cB]=!0;let F=J.onHeaders(A,E,this.resume,Y)===!1;if(J.aborted)return-1;if(J.method==="HEAD")return 1;if(A<200)return 1;if(C[wZ])C[wZ]=!1,I[M0]();return F?iC.ERROR.PAUSED:0}onBody(A){let{client:Q,socket:B,statusCode:I,maxResponseSize:C}=this;if(B.destroyed)return-1;let E=Q[WC][Q[SI]];if(QA(E),QA(this.timeoutType===g8),this.timeout){if(this.timeout.refresh)this.timeout.refresh()}if(QA(I>=200),C>-1&&this.bytesRead+A.length>C)return FA.destroy(B,new jHA),-1;if(this.bytesRead+=A.length,E.onData(A)===!1)return iC.ERROR.PAUSED}onMessageComplete(){let{client:A,socket:Q,statusCode:B,upgrade:I,headers:C,contentLength:E,bytesRead:Y,shouldKeepAlive:J}=this;if(Q.destroyed&&(!B||J))return-1;if(I)return;QA(B>=100),QA((this.headers.length&1)===0);let F=A[WC][A[SI]];if(QA(F),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",this.headers=[],this.headersSize=0,B<200)return;if(F.method!=="HEAD"&&E&&Y!==parseInt(E,10))return FA.destroy(Q,new $HA),-1;if(F.onComplete(C),A[WC][A[SI]++]=null,Q[N0])return QA(A[EB]===0),FA.destroy(Q,new vF("reset")),iC.ERROR.PAUSED;else if(!J)return FA.destroy(Q,new vF("reset")),iC.ERROR.PAUSED;else if(Q[cB]&&A[EB]===0)return FA.destroy(Q,new vF("reset")),iC.ERROR.PAUSED;else if(A[f8]==null||A[f8]===1)setImmediate(()=>A[M0]());else A[M0]()}}function DT(A){let{socket:Q,timeoutType:B,client:I,paused:C}=A.deref();if(B===mF){if(!Q[N0]||Q.writableNeedDrain||I[EB]>1)QA(!C,"cannot be paused while waiting for headers"),FA.destroy(Q,new LHA)}else if(B===g8){if(!C)FA.destroy(Q,new MHA)}else if(B===F6)QA(I[EB]===0&&I[x8]),FA.destroy(Q,new vF("socket idle timeout"))}async function mHA(A,Q){if(A[bF]=Q,!C6)C6=await J6,J6=null;Q[XZ]=!1,Q[N0]=!1,Q[cB]=!1,Q[wZ]=!1,Q[WQ]=new KT(A,Q,C6),y8(Q,"error",function(I){QA(I.code!=="ERR_TLS_CERT_ALTNAME_INVALID");let C=this[WQ];if(I.code==="ECONNRESET"&&C.statusCode&&!C.shouldKeepAlive){C.onMessageComplete();return}this[yI]=I,this[E6][gHA](I)}),y8(Q,"readable",function(){let I=this[WQ];if(I)I.readMore()}),y8(Q,"end",function(){let I=this[WQ];if(I.statusCode&&!I.shouldKeepAlive){I.onMessageComplete();return}FA.destroy(this,new h8("other side closed",FA.getSocketInfo(this)))}),y8(Q,"close",function(){let I=this[E6],C=this[WQ];if(C){if(!this[yI]&&C.statusCode&&!C.shouldKeepAlive)C.onMessageComplete();this[WQ].destroy(),this[WQ]=null}let E=this[yI]||new h8("closed",FA.getSocketInfo(this));if(I[bF]=null,I[wT]=null,I.destroyed){QA(I[RHA]===0);let Y=I[WC].splice(I[SI]);for(let J=0;J0&&E.code!=="UND_ERR_INFO"){let Y=I[WC][I[SI]];I[WC][I[SI]++]=null,FA.errorRequest(I,Y,E)}I[THA]=I[SI],QA(I[EB]===0),I.emit("disconnect",I[UT],[I],E),I[M0]()});let B=!1;return Q.on("close",()=>{B=!0}),{version:"h1",defaultPipelining:1,write(...I){return uHA(A,...I)},resume(){dHA(A)},destroy(I,C){if(B)queueMicrotask(C);else Q.destroy(I).on("close",C)},get destroyed(){return Q.destroyed},busy(I){if(Q[N0]||Q[cB]||Q[wZ])return!0;if(I){if(A[EB]>0&&!I.idempotent)return!0;if(A[EB]>0&&(I.upgrade||I.method==="CONNECT"))return!0;if(A[EB]>0&&FA.bodyLength(I.body)!==0&&(FA.isStream(I.body)||FA.isAsyncIterable(I.body)||FA.isFormDataLike(I.body)))return!0}return!1}}}function dHA(A){let Q=A[bF];if(Q&&!Q.destroyed){if(A[FT]===0){if(!Q[XZ]&&Q.unref)Q.unref(),Q[XZ]=!0}else if(Q[XZ]&&Q.ref)Q.ref(),Q[XZ]=!1;if(A[FT]===0){if(Q[WQ].timeoutType!==F6)Q[WQ].setTimeout(A[x8],F6)}else if(A[EB]>0&&Q[WQ].statusCode<200){if(Q[WQ].timeoutType!==mF){let B=A[WC][A[SI]],I=B.headersTimeout!=null?B.headersTimeout:A[SHA];Q[WQ].setTimeout(I,mF)}}}}function cHA(A){return A!=="GET"&&A!=="HEAD"&&A!=="OPTIONS"&&A!=="TRACE"&&A!=="CONNECT"}function uHA(A,Q){let{method:B,path:I,host:C,upgrade:E,blocking:Y,reset:J}=Q,{body:F,headers:G,contentLength:D}=Q,Z=B==="PUT"||B==="POST"||B==="PATCH"||B==="QUERY"||B==="PROPFIND"||B==="PROPPATCH";if(FA.isFormDataLike(F)){if(!I6)I6=xF().extractBody;let[z,$]=I6(F);if(Q.contentType==null)G.push("content-type",$);F=z.stream,D=z.length}else if(FA.isBlobLike(F)&&Q.contentType==null&&F.type)G.push("content-type",F.type);if(F&&typeof F.read==="function")F.read(0);let W=FA.bodyLength(F);if(D=W??D,D===null)D=Q.contentLength;if(D===0&&!Z)D=null;if(cHA(B)&&D>0&&Q.contentLength!==null&&Q.contentLength!==D){if(A[Y6])return FA.errorRequest(A,Q,new iY),!1;process.emitWarning(new iY)}let X=A[bF],w=(z)=>{if(Q.aborted||Q.completed)return;FA.errorRequest(A,Q,z||new XT),FA.destroy(F),FA.destroy(X,new vF("aborted"))};try{Q.onConnect(w)}catch(z){FA.errorRequest(A,Q,z)}if(Q.aborted)return!1;if(B==="HEAD")X[cB]=!0;if(E||B==="CONNECT")X[cB]=!0;if(J!=null)X[cB]=J;if(A[GT]&&X[_HA]++>=A[GT])X[cB]=!0;if(Y)X[wZ]=!0;let K=`${B} ${I} HTTP/1.1\r +`;if(typeof C==="string")K+=`host: ${C}\r +`;else K+=A[OHA];if(E)K+=`connection: upgrade\r +upgrade: ${E}\r +`;else if(A[f8]&&!X[cB])K+=`connection: keep-alive\r +`;else K+=`connection: close\r +`;if(Array.isArray(G))for(let z=0;z{Q.removeListener("error",X)}),!F){let w=new XT;queueMicrotask(()=>X(w))}},X=function(w){if(F)return;if(F=!0,QA(C.destroyed||C[N0]&&B[EB]<=1),C.off("drain",Z).off("error",X),Q.removeListener("data",D).removeListener("end",X).removeListener("close",W),!w)try{G.end()}catch(K){w=K}if(G.destroy(w),w&&(w.code!=="UND_ERR_INFO"||w.message!=="reset"))FA.destroy(Q,w);else FA.destroy(Q)};if(Q.on("data",D).on("end",X).on("error",X).on("close",W),Q.resume)Q.resume();if(C.on("drain",Z).on("error",X),Q.errorEmitted??Q.errored)setImmediate(()=>X(Q.errored));else if(Q.endEmitted??Q.readableEnded)setImmediate(()=>X(null));if(Q.closeEmitted??Q.closed)setImmediate(W)}function ZT(A,Q,B,I,C,E,Y,J){try{if(!Q)if(E===0)C.write(`${Y}content-length: 0\r \r -`,"latin1");else f(C===null,"no body must not have content length"),E.write(`${g}\r -`,"latin1");else if(u.isBuffer(Q)){if(f(C===Q.byteLength,"buffer body must have content length"),E.cork(),E.write(`${g}content-length: ${C}\r +`,"latin1");else QA(E===null,"no body must not have content length"),C.write(`${Y}\r +`,"latin1");else if(FA.isBuffer(Q)){if(QA(E===Q.byteLength,"buffer body must have content length"),C.cork(),C.write(`${Y}content-length: ${E}\r \r -`,"latin1"),E.write(Q),E.uncork(),I.onBodySent(Q),!F&&I.reset!==!1)E[rA]=!0}I.onRequestSent(),B[SB]()}catch(D){A(D)}}async function Z$(A,Q,B,I,E,C,g,F){f(C===Q.size,"blob body must have content length");try{if(C!=null&&C!==Q.size)throw new eB;let D=Buffer.from(await Q.arrayBuffer());if(E.cork(),E.write(`${g}content-length: ${C}\r +`,"latin1"),C.write(Q),C.uncork(),I.onBodySent(Q),!J&&I.reset!==!1)C[cB]=!0}I.onRequestSent(),B[M0]()}catch(F){A(F)}}async function pHA(A,Q,B,I,C,E,Y,J){QA(E===Q.size,"blob body must have content length");try{if(E!=null&&E!==Q.size)throw new iY;let F=Buffer.from(await Q.arrayBuffer());if(C.cork(),C.write(`${Y}content-length: ${E}\r \r -`,"latin1"),E.write(D),E.uncork(),I.onBodySent(D),I.onRequestSent(),!F&&I.reset!==!1)E[rA]=!0;B[SB]()}catch(D){A(D)}}async function Mw(A,Q,B,I,E,C,g,F){f(C!==0||B[qA]===0,"iterator body cannot be pipelined");let D=null;function J(){if(D){let N=D;D=null,N()}}let Y=()=>new Promise((N,w)=>{if(f(D===null),E[MQ])w(E[MQ]);else D=N});E.on("close",J).on("drain",J);let U=new PD({abort:A,socket:E,request:I,contentLength:C,client:B,expectsPayload:F,header:g});try{for await(let N of Q){if(E[MQ])throw E[MQ];if(!U.write(N))await Y()}U.end()}catch(N){U.destroy(N)}finally{E.off("close",J).off("drain",J)}}class PD{constructor({abort:A,socket:Q,request:B,contentLength:I,client:E,expectsPayload:C,header:g}){this.socket=Q,this.request=B,this.contentLength=I,this.client=E,this.bytesWritten=0,this.expectsPayload=C,this.header=g,this.abort=A,Q[$B]=!0}write(A){let{socket:Q,request:B,contentLength:I,client:E,bytesWritten:C,expectsPayload:g,header:F}=this;if(Q[MQ])throw Q[MQ];if(Q.destroyed)return!1;let D=Buffer.byteLength(A);if(!D)return!0;if(I!==null&&C+D>I){if(E[jD])throw new eB;process.emitWarning(new eB)}if(Q.cork(),C===0){if(!g&&B.reset!==!1)Q[rA]=!0;if(I===null)Q.write(`${F}transfer-encoding: chunked\r -`,"latin1");else Q.write(`${F}content-length: ${I}\r +`,"latin1"),C.write(F),C.uncork(),I.onBodySent(F),I.onRequestSent(),!J&&I.reset!==!1)C[cB]=!0;B[M0]()}catch(F){A(F)}}async function WT(A,Q,B,I,C,E,Y,J){QA(E!==0||B[EB]===0,"iterator body cannot be pipelined");let F=null;function G(){if(F){let W=F;F=null,W()}}let D=()=>new Promise((W,X)=>{if(QA(F===null),C[yI])X(C[yI]);else F=W});C.on("close",G).on("drain",G);let Z=new G6({abort:A,socket:C,request:I,contentLength:E,client:B,expectsPayload:J,header:Y});try{for await(let W of Q){if(C[yI])throw C[yI];if(!Z.write(W))await D()}Z.end()}catch(W){Z.destroy(W)}finally{C.off("close",G).off("drain",G)}}class G6{constructor({abort:A,socket:Q,request:B,contentLength:I,client:C,expectsPayload:E,header:Y}){this.socket=Q,this.request=B,this.contentLength=I,this.client=C,this.bytesWritten=0,this.expectsPayload=E,this.header=Y,this.abort=A,Q[N0]=!0}write(A){let{socket:Q,request:B,contentLength:I,client:C,bytesWritten:E,expectsPayload:Y,header:J}=this;if(Q[yI])throw Q[yI];if(Q.destroyed)return!1;let F=Buffer.byteLength(A);if(!F)return!0;if(I!==null&&E+F>I){if(C[Y6])throw new iY;process.emitWarning(new iY)}if(Q.cork(),E===0){if(!Y&&B.reset!==!1)Q[cB]=!0;if(I===null)Q.write(`${J}transfer-encoding: chunked\r +`,"latin1");else Q.write(`${J}content-length: ${I}\r \r `,"latin1")}if(I===null)Q.write(`\r -${D.toString(16)}\r -`,"latin1");this.bytesWritten+=D;let J=Q.write(A);if(Q.uncork(),B.onBodySent(A),!J){if(Q[LA].timeout&&Q[LA].timeoutType===pI){if(Q[LA].timeout.refresh)Q[LA].timeout.refresh()}}return J}end(){let{socket:A,contentLength:Q,client:B,bytesWritten:I,expectsPayload:E,header:C,request:g}=this;if(g.onRequestSent(),A[$B]=!1,A[MQ])throw A[MQ];if(A.destroyed)return;if(I===0)if(E)A.write(`${C}content-length: 0\r +${F.toString(16)}\r +`,"latin1");this.bytesWritten+=F;let G=Q.write(A);if(Q.uncork(),B.onBodySent(A),!G){if(Q[WQ].timeout&&Q[WQ].timeoutType===mF){if(Q[WQ].timeout.refresh)Q[WQ].timeout.refresh()}}return G}end(){let{socket:A,contentLength:Q,client:B,bytesWritten:I,expectsPayload:C,header:E,request:Y}=this;if(Y.onRequestSent(),A[N0]=!1,A[yI])throw A[yI];if(A.destroyed)return;if(I===0)if(C)A.write(`${E}content-length: 0\r \r -`,"latin1");else A.write(`${C}\r +`,"latin1");else A.write(`${E}\r `,"latin1");else if(Q===null)A.write(`\r 0\r \r -`,"latin1");if(Q!==null&&I!==Q)if(B[jD])throw new eB;else process.emitWarning(new eB);if(A[LA].timeout&&A[LA].timeoutType===pI){if(A[LA].timeout.refresh)A[LA].timeout.refresh()}B[SB]()}destroy(A){let{socket:Q,client:B,abort:I}=this;if(Q[$B]=!1,A)f(B[qA]<=1,"pipeline should only contain this request"),I(A)}}Zw.exports=M$});var _w=W((kb,Tw)=>{var wQ=z("node:assert"),{pipeline:R$}=z("node:stream"),i=p(),{RequestContentLengthMismatchError:qD,RequestAbortedError:Xw,SocketError:lE,InformationalError:yD}=r(),{kUrl:hg,kReset:fg,kClient:iI,kRunning:vg,kPending:X$,kQueue:HB,kPendingIdx:hD,kRunningIdx:HQ,kError:_Q,kSocket:HA,kStrictContentLength:K$,kOnError:kD,kMaxConcurrentStreams:Hw,kHTTP2Session:TQ,kResume:TB,kSize:z$,kHTTPContext:S$}=GA(),gB=Symbol("open streams"),Kw,zw=!1,kg;try{kg=z("node:http2")}catch{kg={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:$$,HTTP2_HEADER_METHOD:H$,HTTP2_HEADER_PATH:T$,HTTP2_HEADER_SCHEME:_$,HTTP2_HEADER_CONTENT_LENGTH:j$,HTTP2_HEADER_EXPECT:x$,HTTP2_HEADER_STATUS:O$}}=kg;function P$(A){let Q=[];for(let[B,I]of Object.entries(A))if(Array.isArray(I))for(let E of I)Q.push(Buffer.from(B),Buffer.from(E));else Q.push(Buffer.from(B),Buffer.from(I));return Q}async function q$(A,Q){if(A[HA]=Q,!zw)zw=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"});let B=kg.connect(A[hg],{createConnection:()=>Q,peerMaxConcurrentStreams:A[Hw]});B[gB]=0,B[iI]=A,B[HA]=Q,i.addListener(B,"error",h$),i.addListener(B,"frameError",k$),i.addListener(B,"end",f$),i.addListener(B,"goaway",v$),i.addListener(B,"close",function(){let{[iI]:E}=this,{[HA]:C}=E,g=this[HA][_Q]||this[_Q]||new lE("closed",i.getSocketInfo(C));if(E[TQ]=null,E.destroyed){wQ(E[X$]===0);let F=E[HB].splice(E[HQ]);for(let D=0;D{I=!0}),{version:"h2",defaultPipelining:1/0,write(...E){return m$(A,...E)},resume(){y$(A)},destroy(E,C){if(I)queueMicrotask(C);else Q.destroy(E).on("close",C)},get destroyed(){return Q.destroyed},busy(){return!1}}}function y$(A){let Q=A[HA];if(Q?.destroyed===!1)if(A[z$]===0&&A[Hw]===0)Q.unref(),A[TQ].unref();else Q.ref(),A[TQ].ref()}function h$(A){wQ(A.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[HA][_Q]=A,this[iI][kD](A)}function k$(A,Q,B){if(B===0){let I=new yD(`HTTP/2: "frameError" received - type ${A}, code ${Q}`);this[HA][_Q]=I,this[iI][kD](I)}}function f$(){let A=new lE("other side closed",i.getSocketInfo(this[HA]));this.destroy(A),i.destroy(this[HA],A)}function v$(A){let Q=this[_Q]||new lE(`HTTP/2: "GOAWAY" frame received with code ${A}`,i.getSocketInfo(this)),B=this[iI];if(B[HA]=null,B[S$]=null,this[TQ]!=null)this[TQ].destroy(Q),this[TQ]=null;if(i.destroy(this[HA],Q),B[HQ]{if(Q.aborted||Q.completed)return;if(q=q||new Xw,i.errorRequest(A,Q,q),N!=null)i.destroy(N,q);i.destroy(Y,q),A[HB][A[HQ]++]=null,A[TB]()};try{Q.onConnect(S)}catch(q){i.errorRequest(A,Q,q)}if(Q.aborted)return!1;if(I==="CONNECT"){if(B.ref(),N=B.request(U,{endStream:!1,signal:D}),N.id&&!N.pending)Q.onUpgrade(null,null,N),++B[gB],A[HB][A[HQ]++]=null;else N.once("ready",()=>{Q.onUpgrade(null,null,N),++B[gB],A[HB][A[HQ]++]=null});return N.once("close",()=>{if(B[gB]-=1,B[gB]===0)B.unref()}),!0}U[T$]=E,U[_$]="https";let Z=I==="PUT"||I==="POST"||I==="PATCH";if(Y&&typeof Y.read==="function")Y.read(0);let R=i.bodyLength(Y);if(i.isFormDataLike(Y)){Kw??=cI().extractBody;let[q,a]=Kw(Y);U["content-type"]=a,Y=q.stream,R=q.length}if(R==null)R=Q.contentLength;if(R===0||!Z)R=null;if(b$(I)&&R>0&&Q.contentLength!=null&&Q.contentLength!==R){if(A[K$])return i.errorRequest(A,Q,new qD),!1;process.emitWarning(new qD)}if(R!=null)wQ(Y,"no body must not have content length"),U[j$]=`${R}`;B.ref();let x=I==="GET"||I==="HEAD"||Y===null;if(F)U[x$]="100-continue",N=B.request(U,{endStream:x,signal:D}),N.once("continue",O);else N=B.request(U,{endStream:x,signal:D}),O();return++B[gB],N.once("response",(q)=>{let{[O$]:a,...t}=q;if(Q.onResponseStarted(),Q.aborted){let AA=new Xw;i.errorRequest(A,Q,AA),i.destroy(N,AA);return}if(Q.onHeaders(Number(a),P$(t),N.resume.bind(N),"")===!1)N.pause();N.on("data",(AA)=>{if(Q.onData(AA)===!1)N.pause()})}),N.once("end",()=>{if(N.state?.state==null||N.state.state<6)Q.onComplete([]);if(B[gB]===0)B.unref();S(new yD("HTTP/2: stream half-closed (remote)")),A[HB][A[HQ]++]=null,A[hD]=A[HQ],A[TB]()}),N.once("close",()=>{if(B[gB]-=1,B[gB]===0)B.unref()}),N.once("error",function(q){S(q)}),N.once("frameError",(q,a)=>{S(new yD(`HTTP/2: "frameError" received - type ${q}, code ${a}`))}),!0;function O(){if(!Y||R===0)Sw(S,N,null,A,Q,A[HA],R,Z);else if(i.isBuffer(Y))Sw(S,N,Y,A,Q,A[HA],R,Z);else if(i.isBlobLike(Y))if(typeof Y.stream==="function")$w(S,N,Y.stream(),A,Q,A[HA],R,Z);else c$(S,N,Y,A,Q,A[HA],R,Z);else if(i.isStream(Y))u$(S,A[HA],Z,N,Y,A,Q,R);else if(i.isIterable(Y))$w(S,N,Y,A,Q,A[HA],R,Z);else wQ(!1)}}function Sw(A,Q,B,I,E,C,g,F){try{if(B!=null&&i.isBuffer(B))wQ(g===B.byteLength,"buffer body must have content length"),Q.cork(),Q.write(B),Q.uncork(),Q.end(),E.onBodySent(B);if(!F)C[fg]=!0;E.onRequestSent(),I[TB]()}catch(D){A(D)}}function u$(A,Q,B,I,E,C,g,F){wQ(F!==0||C[vg]===0,"stream body cannot be pipelined");let D=R$(E,I,(Y)=>{if(Y)i.destroy(D,Y),A(Y);else{if(i.removeAllListeners(D),g.onRequestSent(),!B)Q[fg]=!0;C[TB]()}});i.addListener(D,"data",J);function J(Y){g.onBodySent(Y)}}async function c$(A,Q,B,I,E,C,g,F){wQ(g===B.size,"blob body must have content length");try{if(g!=null&&g!==B.size)throw new qD;let D=Buffer.from(await B.arrayBuffer());if(Q.cork(),Q.write(D),Q.uncork(),Q.end(),E.onBodySent(D),E.onRequestSent(),!F)C[fg]=!0;I[TB]()}catch(D){A(D)}}async function $w(A,Q,B,I,E,C,g,F){wQ(g!==0||I[vg]===0,"iterator body cannot be pipelined");let D=null;function J(){if(D){let U=D;D=null,U()}}let Y=()=>new Promise((U,N)=>{if(wQ(D===null),C[_Q])N(C[_Q]);else D=U});Q.on("close",J).on("drain",J);try{for await(let U of B){if(C[_Q])throw C[_Q];let N=Q.write(U);if(E.onBodySent(U),!N)await Y()}if(Q.end(),E.onRequestSent(),!F)C[fg]=!0;I[TB]()}catch(U){A(U)}finally{Q.off("close",J).off("drain",J)}}Tw.exports=q$});var bg=W((fb,Pw)=>{var lQ=p(),{kBodyUsed:pE}=GA(),vD=z("node:assert"),{InvalidArgumentError:d$}=r(),l$=z("node:events"),p$=[300,301,302,303,307,308],jw=Symbol("body");class fD{constructor(A){this[jw]=A,this[pE]=!1}async*[Symbol.asyncIterator](){vD(!this[pE],"disturbed"),this[pE]=!0,yield*this[jw]}}class Ow{constructor(A,Q,B,I){if(Q!=null&&(!Number.isInteger(Q)||Q<0))throw new d$("maxRedirections must be a positive number");if(lQ.validateHandler(I,B.method,B.upgrade),this.dispatch=A,this.location=null,this.abort=null,this.opts={...B,maxRedirections:0},this.maxRedirections=Q,this.handler=I,this.history=[],this.redirectionLimitReached=!1,lQ.isStream(this.opts.body)){if(lQ.bodyLength(this.opts.body)===0)this.opts.body.on("data",function(){vD(!1)});if(typeof this.opts.body.readableDidRead!=="boolean")this.opts.body[pE]=!1,l$.prototype.on.call(this.opts.body,"data",function(){this[pE]=!0})}else if(this.opts.body&&typeof this.opts.body.pipeTo==="function")this.opts.body=new fD(this.opts.body);else if(this.opts.body&&typeof this.opts.body!=="string"&&!ArrayBuffer.isView(this.opts.body)&&lQ.isIterable(this.opts.body))this.opts.body=new fD(this.opts.body)}onConnect(A){this.abort=A,this.handler.onConnect(A,{history:this.history})}onUpgrade(A,Q,B){this.handler.onUpgrade(A,Q,B)}onError(A){this.handler.onError(A)}onHeaders(A,Q,B,I){if(this.location=this.history.length>=this.maxRedirections||lQ.isDisturbed(this.opts.body)?null:i$(A,Q),this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){if(this.request)this.request.abort(Error("max redirects"));this.redirectionLimitReached=!0,this.abort(Error("max redirects"));return}if(this.opts.origin)this.history.push(new URL(this.opts.path,this.opts.origin));if(!this.location)return this.handler.onHeaders(A,Q,B,I);let{origin:E,pathname:C,search:g}=lQ.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),F=g?`${C}${g}`:C;if(this.opts.headers=n$(this.opts.headers,A===303,this.opts.origin!==E),this.opts.path=F,this.opts.origin=E,this.opts.maxRedirections=0,this.opts.query=null,A===303&&this.opts.method!=="HEAD")this.opts.method="GET",this.opts.body=null}onData(A){if(this.location);else return this.handler.onData(A)}onComplete(A){if(this.location)this.location=null,this.abort=null,this.dispatch(this.opts,this);else this.handler.onComplete(A)}onBodySent(A){if(this.handler.onBodySent)this.handler.onBodySent(A)}}function i$(A,Q){if(p$.indexOf(A)===-1)return null;for(let B=0;B{var a$=bg();function s$({maxRedirections:A}){return(Q)=>{return function(I,E){let{maxRedirections:C=A}=I;if(!C)return Q(I,E);let g=new a$(Q,C,I,E);return I={...I,maxRedirections:0},Q(I,g)}}}qw.exports=s$});var sI=W((bb,lw)=>{var FB=z("node:assert"),bw=z("node:net"),o$=z("node:http"),AI=p(),{channels:nI}=jI(),r$=zN(),t$=qI(),{InvalidArgumentError:VA,InformationalError:e$,ClientDestroyedError:A6}=r(),Q6=qE(),{kUrl:pQ,kServerName:_B,kClient:B6,kBusy:bD,kConnect:I6,kResuming:QI,kRunning:oE,kPending:rE,kSize:sE,kQueue:jQ,kConnected:E6,kConnecting:aI,kNeedDrain:xB,kKeepAliveDefaultTimeout:yw,kHostHeader:C6,kPendingIdx:xQ,kRunningIdx:DB,kError:g6,kPipelining:ug,kKeepAliveTimeoutValue:F6,kMaxHeadersSize:D6,kKeepAliveMaxTimeout:Y6,kKeepAliveTimeoutThreshold:J6,kHeadersTimeout:U6,kBodyTimeout:G6,kStrictContentLength:N6,kConnector:iE,kMaxRedirections:M6,kMaxRequests:mD,kCounter:w6,kClose:W6,kDestroy:L6,kDispatch:V6,kInterceptors:hw,kLocalAddress:nE,kMaxResponseSize:Z6,kOnError:R6,kHTTPContext:ZA,kMaxConcurrentStreams:X6,kResume:aE}=GA(),K6=Rw(),z6=_w(),kw=!1,jB=Symbol("kClosedResolve"),fw=()=>{};function mw(A){return A[ug]??A[ZA]?.defaultPipelining??1}class uw extends t${constructor(A,{interceptors:Q,maxHeaderSize:B,headersTimeout:I,socketTimeout:E,requestTimeout:C,connectTimeout:g,bodyTimeout:F,idleTimeout:D,keepAlive:J,keepAliveTimeout:Y,maxKeepAliveTimeout:U,keepAliveMaxTimeout:N,keepAliveTimeoutThreshold:w,socketPath:L,pipelining:S,tls:Z,strictContentLength:R,maxCachedSessions:x,maxRedirections:O,connect:q,maxRequestsPerClient:a,localAddress:t,maxResponseSize:AA,autoSelectFamily:SQ,autoSelectFamilyAttemptTimeout:OA,maxConcurrentStreams:UQ,allowH2:ZB}={}){super();if(J!==void 0)throw new VA("unsupported keepAlive, use pipelining=0 instead");if(E!==void 0)throw new VA("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(C!==void 0)throw new VA("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(D!==void 0)throw new VA("unsupported idleTimeout, use keepAliveTimeout instead");if(U!==void 0)throw new VA("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(B!=null&&!Number.isFinite(B))throw new VA("invalid maxHeaderSize");if(L!=null&&typeof L!=="string")throw new VA("invalid socketPath");if(g!=null&&(!Number.isFinite(g)||g<0))throw new VA("invalid connectTimeout");if(Y!=null&&(!Number.isFinite(Y)||Y<=0))throw new VA("invalid keepAliveTimeout");if(N!=null&&(!Number.isFinite(N)||N<=0))throw new VA("invalid keepAliveMaxTimeout");if(w!=null&&!Number.isFinite(w))throw new VA("invalid keepAliveTimeoutThreshold");if(I!=null&&(!Number.isInteger(I)||I<0))throw new VA("headersTimeout must be a positive integer or zero");if(F!=null&&(!Number.isInteger(F)||F<0))throw new VA("bodyTimeout must be a positive integer or zero");if(q!=null&&typeof q!=="function"&&typeof q!=="object")throw new VA("connect must be a function or an object");if(O!=null&&(!Number.isInteger(O)||O<0))throw new VA("maxRedirections must be a positive number");if(a!=null&&(!Number.isInteger(a)||a<0))throw new VA("maxRequestsPerClient must be a positive number");if(t!=null&&(typeof t!=="string"||bw.isIP(t)===0))throw new VA("localAddress must be valid string IP address");if(AA!=null&&(!Number.isInteger(AA)||AA<-1))throw new VA("maxResponseSize must be a positive number");if(OA!=null&&(!Number.isInteger(OA)||OA<-1))throw new VA("autoSelectFamilyAttemptTimeout must be a positive number");if(ZB!=null&&typeof ZB!=="boolean")throw new VA("allowH2 must be a valid boolean value");if(UQ!=null&&(typeof UQ!=="number"||UQ<1))throw new VA("maxConcurrentStreams must be a positive integer, greater than 0");if(typeof q!=="function")q=Q6({...Z,maxCachedSessions:x,allowH2:ZB,socketPath:L,timeout:g,...SQ?{autoSelectFamily:SQ,autoSelectFamilyAttemptTimeout:OA}:void 0,...q});if(Q?.Client&&Array.isArray(Q.Client)){if(this[hw]=Q.Client,!kw)kw=!0,process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"})}else this[hw]=[S6({maxRedirections:O})];this[pQ]=AI.parseOrigin(A),this[iE]=q,this[ug]=S!=null?S:1,this[D6]=B||o$.maxHeaderSize,this[yw]=Y==null?4000:Y,this[Y6]=N==null?600000:N,this[J6]=w==null?2000:w,this[F6]=this[yw],this[_B]=null,this[nE]=t!=null?t:null,this[QI]=0,this[xB]=0,this[C6]=`host: ${this[pQ].hostname}${this[pQ].port?`:${this[pQ].port}`:""}\r -`,this[G6]=F!=null?F:300000,this[U6]=I!=null?I:300000,this[N6]=R==null?!0:R,this[M6]=O,this[mD]=a,this[jB]=null,this[Z6]=AA>-1?AA:-1,this[X6]=UQ!=null?UQ:100,this[ZA]=null,this[jQ]=[],this[DB]=0,this[xQ]=0,this[aE]=(_A)=>uD(this,_A),this[R6]=(_A)=>cw(this,_A)}get pipelining(){return this[ug]}set pipelining(A){this[ug]=A,this[aE](!0)}get[rE](){return this[jQ].length-this[xQ]}get[oE](){return this[xQ]-this[DB]}get[sE](){return this[jQ].length-this[DB]}get[E6](){return!!this[ZA]&&!this[aI]&&!this[ZA].destroyed}get[bD](){return Boolean(this[ZA]?.busy(null)||this[sE]>=(mw(this)||1)||this[rE]>0)}[I6](A){dw(this),this.once("connect",A)}[V6](A,Q){let B=A.origin||this[pQ].origin,I=new r$(B,A,Q);if(this[jQ].push(I),this[QI]);else if(AI.bodyLength(I.body)==null&&AI.isIterable(I.body))this[QI]=1,queueMicrotask(()=>uD(this));else this[aE](!0);if(this[QI]&&this[xB]!==2&&this[bD])this[xB]=2;return this[xB]<2}async[W6](){return new Promise((A)=>{if(this[sE])this[jB]=A;else A(null)})}async[L6](A){return new Promise((Q)=>{let B=this[jQ].splice(this[xQ]);for(let E=0;E{if(this[jB])this[jB](),this[jB]=null;Q(null)};if(this[ZA])this[ZA].destroy(A,I),this[ZA]=null;else queueMicrotask(I);this[aE]()})}}var S6=mg();function cw(A,Q){if(A[oE]===0&&Q.code!=="UND_ERR_INFO"&&Q.code!=="UND_ERR_SOCKET"){FB(A[xQ]===A[DB]);let B=A[jQ].splice(A[DB]);for(let I=0;I{A[iE]({host:Q,hostname:B,protocol:I,port:E,servername:A[_B],localAddress:A[nE]},(D,J)=>{if(D)F(D);else g(J)})});if(A.destroyed){AI.destroy(C.on("error",fw),new A6);return}FB(C);try{A[ZA]=C.alpnProtocol==="h2"?await z6(A,C):await K6(A,C)}catch(g){throw C.destroy().on("error",fw),g}if(A[aI]=!1,C[w6]=0,C[mD]=A[mD],C[B6]=A,C[g6]=null,nI.connected.hasSubscribers)nI.connected.publish({connectParams:{host:Q,hostname:B,protocol:I,port:E,version:A[ZA]?.version,servername:A[_B],localAddress:A[nE]},connector:A[iE],socket:C});A.emit("connect",A[pQ],[A])}catch(C){if(A.destroyed)return;if(A[aI]=!1,nI.connectError.hasSubscribers)nI.connectError.publish({connectParams:{host:Q,hostname:B,protocol:I,port:E,version:A[ZA]?.version,servername:A[_B],localAddress:A[nE]},connector:A[iE],error:C});if(C.code==="ERR_TLS_CERT_ALTNAME_INVALID"){FB(A[oE]===0);while(A[rE]>0&&A[jQ][A[xQ]].servername===A[_B]){let g=A[jQ][A[xQ]++];AI.errorRequest(A,g,C)}}else cw(A,C);A.emit("connectionError",A[pQ],[A],C)}A[aE]()}function vw(A){A[xB]=0,A.emit("drain",A[pQ],[A])}function uD(A,Q){if(A[QI]===2)return;if(A[QI]=2,$6(A,Q),A[QI]=0,A[DB]>256)A[jQ].splice(0,A[DB]),A[xQ]-=A[DB],A[DB]=0}function $6(A,Q){while(!0){if(A.destroyed){FB(A[rE]===0);return}if(A[jB]&&!A[sE]){A[jB](),A[jB]=null;return}if(A[ZA])A[ZA].resume();if(A[bD])A[xB]=2;else if(A[xB]===2){if(Q)A[xB]=1,queueMicrotask(()=>vw(A));else vw(A);continue}if(A[rE]===0)return;if(A[oE]>=(mw(A)||1))return;let B=A[jQ][A[xQ]];if(A[pQ].protocol==="https:"&&A[_B]!==B.servername){if(A[oE]>0)return;A[_B]=B.servername,A[ZA]?.destroy(new e$("servername changed"),()=>{A[ZA]=null,uD(A)})}if(A[aI])return;if(!A[ZA]){dw(A);return}if(A[ZA].destroyed)return;if(A[ZA].busy(B))return;if(!B.aborted&&A[ZA].write(B))A[xQ]++;else A[jQ].splice(A[xQ],1)}}lw.exports=uw});var dD=W((mb,pw)=>{class cD{constructor(){this.bottom=0,this.top=0,this.list=Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(A){this.list[this.top]=A,this.top=this.top+1&2047}shift(){let A=this.list[this.bottom];if(A===void 0)return null;return this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,A}}pw.exports=class{constructor(){this.head=this.tail=new cD}isEmpty(){return this.head.isEmpty()}push(Q){if(this.head.isFull())this.head=this.head.next=new cD;this.head.push(Q)}shift(){let Q=this.tail,B=Q.shift();if(Q.isEmpty()&&Q.next!==null)this.tail=Q.next;return B}}});var aw=W((ub,nw)=>{var{kFree:H6,kConnected:T6,kPending:_6,kQueued:j6,kRunning:x6,kSize:O6}=GA(),BI=Symbol("pool");class iw{constructor(A){this[BI]=A}get connected(){return this[BI][T6]}get free(){return this[BI][H6]}get pending(){return this[BI][_6]}get queued(){return this[BI][j6]}get running(){return this[BI][x6]}get size(){return this[BI][O6]}}nw.exports=iw});var aD=W((cb,C2)=>{var P6=qI(),q6=dD(),{kConnected:lD,kSize:sw,kRunning:ow,kPending:rw,kQueued:tE,kBusy:y6,kFree:h6,kUrl:k6,kClose:f6,kDestroy:v6,kDispatch:b6}=GA(),m6=aw(),tA=Symbol("clients"),pA=Symbol("needDrain"),eE=Symbol("queue"),pD=Symbol("closed resolve"),iD=Symbol("onDrain"),tw=Symbol("onConnect"),ew=Symbol("onDisconnect"),A2=Symbol("onConnectionError"),nD=Symbol("get dispatcher"),B2=Symbol("add client"),I2=Symbol("remove client"),Q2=Symbol("stats");class E2 extends P6{constructor(){super();this[eE]=new q6,this[tA]=[],this[tE]=0;let A=this;this[iD]=function(B,I){let E=A[eE],C=!1;while(!C){let g=E.shift();if(!g)break;A[tE]--,C=!this.dispatch(g.opts,g.handler)}if(this[pA]=C,!this[pA]&&A[pA])A[pA]=!1,A.emit("drain",B,[A,...I]);if(A[pD]&&E.isEmpty())Promise.all(A[tA].map((g)=>g.close())).then(A[pD])},this[tw]=(Q,B)=>{A.emit("connect",Q,[A,...B])},this[ew]=(Q,B,I)=>{A.emit("disconnect",Q,[A,...B],I)},this[A2]=(Q,B,I)=>{A.emit("connectionError",Q,[A,...B],I)},this[Q2]=new m6(this)}get[y6](){return this[pA]}get[lD](){return this[tA].filter((A)=>A[lD]).length}get[h6](){return this[tA].filter((A)=>A[lD]&&!A[pA]).length}get[rw](){let A=this[tE];for(let{[rw]:Q}of this[tA])A+=Q;return A}get[ow](){let A=0;for(let{[ow]:Q}of this[tA])A+=Q;return A}get[sw](){let A=this[tE];for(let{[sw]:Q}of this[tA])A+=Q;return A}get stats(){return this[Q2]}async[f6](){if(this[eE].isEmpty())await Promise.all(this[tA].map((A)=>A.close()));else await new Promise((A)=>{this[pD]=A})}async[v6](A){while(!0){let Q=this[eE].shift();if(!Q)break;Q.handler.onError(A)}await Promise.all(this[tA].map((Q)=>Q.destroy(A)))}[b6](A,Q){let B=this[nD]();if(!B)this[pA]=!0,this[eE].push({opts:A,handler:Q}),this[tE]++;else if(!B.dispatch(A,Q))B[pA]=!0,this[pA]=!this[nD]();return!this[pA]}[B2](A){if(A.on("drain",this[iD]).on("connect",this[tw]).on("disconnect",this[ew]).on("connectionError",this[A2]),this[tA].push(A),this[pA])queueMicrotask(()=>{if(this[pA])this[iD](A[k6],[this,A])});return this}[I2](A){A.close(()=>{let Q=this[tA].indexOf(A);if(Q!==-1)this[tA].splice(Q,1)}),this[pA]=this[tA].some((Q)=>!Q[pA]&&Q.closed!==!0&&Q.destroyed!==!0)}}C2.exports={PoolBase:E2,kClients:tA,kNeedDrain:pA,kAddClient:B2,kRemoveClient:I2,kGetDispatcher:nD}});var oI=W((db,J2)=>{var{PoolBase:u6,kClients:cg,kNeedDrain:c6,kAddClient:d6,kGetDispatcher:l6}=aD(),p6=sI(),{InvalidArgumentError:sD}=r(),g2=p(),{kUrl:F2,kInterceptors:i6}=GA(),n6=qE(),oD=Symbol("options"),rD=Symbol("connections"),D2=Symbol("factory");function a6(A,Q){return new p6(A,Q)}class Y2 extends u6{constructor(A,{connections:Q,factory:B=a6,connect:I,connectTimeout:E,tls:C,maxCachedSessions:g,socketPath:F,autoSelectFamily:D,autoSelectFamilyAttemptTimeout:J,allowH2:Y,...U}={}){super();if(Q!=null&&(!Number.isFinite(Q)||Q<0))throw new sD("invalid connections");if(typeof B!=="function")throw new sD("factory must be a function.");if(I!=null&&typeof I!=="function"&&typeof I!=="object")throw new sD("connect must be a function or an object");if(typeof I!=="function")I=n6({...C,maxCachedSessions:g,allowH2:Y,socketPath:F,timeout:E,...D?{autoSelectFamily:D,autoSelectFamilyAttemptTimeout:J}:void 0,...I});this[i6]=U.interceptors?.Pool&&Array.isArray(U.interceptors.Pool)?U.interceptors.Pool:[],this[rD]=Q||null,this[F2]=g2.parseOrigin(A),this[oD]={...g2.deepClone(U),connect:I,allowH2:Y},this[oD].interceptors=U.interceptors?{...U.interceptors}:void 0,this[D2]=B,this.on("connectionError",(N,w,L)=>{for(let S of w){let Z=this[cg].indexOf(S);if(Z!==-1)this[cg].splice(Z,1)}})}[l6](){for(let A of this[cg])if(!A[c6])return A;if(!this[rD]||this[cg].length{var{BalancedPoolMissingUpstreamError:s6,InvalidArgumentError:o6}=r(),{PoolBase:r6,kClients:yA,kNeedDrain:AC,kAddClient:t6,kRemoveClient:e6,kGetDispatcher:A3}=aD(),Q3=oI(),{kUrl:tD,kInterceptors:B3}=GA(),{parseOrigin:U2}=p(),G2=Symbol("factory"),dg=Symbol("options"),N2=Symbol("kGreatestCommonDivisor"),II=Symbol("kCurrentWeight"),EI=Symbol("kIndex"),WQ=Symbol("kWeight"),lg=Symbol("kMaxWeightPerServer"),pg=Symbol("kErrorPenalty");function I3(A,Q){if(A===0)return Q;while(Q!==0){let B=Q;Q=A%Q,A=B}return A}function E3(A,Q){return new Q3(A,Q)}class M2 extends r6{constructor(A=[],{factory:Q=E3,...B}={}){super();if(this[dg]=B,this[EI]=-1,this[II]=0,this[lg]=this[dg].maxWeightPerServer||100,this[pg]=this[dg].errorPenalty||15,!Array.isArray(A))A=[A];if(typeof Q!=="function")throw new o6("factory must be a function.");this[B3]=B.interceptors?.BalancedPool&&Array.isArray(B.interceptors.BalancedPool)?B.interceptors.BalancedPool:[],this[G2]=Q;for(let I of A)this.addUpstream(I);this._updateBalancedPoolStats()}addUpstream(A){let Q=U2(A).origin;if(this[yA].find((I)=>I[tD].origin===Q&&I.closed!==!0&&I.destroyed!==!0))return this;let B=this[G2](Q,Object.assign({},this[dg]));this[t6](B),B.on("connect",()=>{B[WQ]=Math.min(this[lg],B[WQ]+this[pg])}),B.on("connectionError",()=>{B[WQ]=Math.max(1,B[WQ]-this[pg]),this._updateBalancedPoolStats()}),B.on("disconnect",(...I)=>{let E=I[2];if(E&&E.code==="UND_ERR_SOCKET")B[WQ]=Math.max(1,B[WQ]-this[pg]),this._updateBalancedPoolStats()});for(let I of this[yA])I[WQ]=this[lg];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let A=0;for(let Q=0;QI[tD].origin===Q&&I.closed!==!0&&I.destroyed!==!0);if(B)this[e6](B);return this}get upstreams(){return this[yA].filter((A)=>A.closed!==!0&&A.destroyed!==!0).map((A)=>A[tD].origin)}[A3](){if(this[yA].length===0)throw new s6;if(!this[yA].find((E)=>!E[AC]&&E.closed!==!0&&E.destroyed!==!0))return;if(this[yA].map((E)=>E[AC]).reduce((E,C)=>E&&C,!0))return;let B=0,I=this[yA].findIndex((E)=>!E[AC]);while(B++this[yA][I][WQ]&&!E[AC])I=this[EI];if(this[EI]===0){if(this[II]=this[II]-this[N2],this[II]<=0)this[II]=this[lg]}if(E[WQ]>=this[II]&&!E[AC])return E}return this[II]=this[yA][I][WQ],this[EI]=I,this[yA][I]}}w2.exports=M2});var rI=W((pb,S2)=>{var{InvalidArgumentError:ig}=r(),{kClients:OB,kRunning:L2,kClose:C3,kDestroy:g3,kDispatch:F3,kInterceptors:D3}=GA(),Y3=qI(),J3=oI(),U3=sI(),G3=p(),N3=mg(),V2=Symbol("onConnect"),Z2=Symbol("onDisconnect"),R2=Symbol("onConnectionError"),M3=Symbol("maxRedirections"),X2=Symbol("onDrain"),K2=Symbol("factory"),eD=Symbol("options");function w3(A,Q){return Q&&Q.connections===1?new U3(A,Q):new J3(A,Q)}class z2 extends Y3{constructor({factory:A=w3,maxRedirections:Q=0,connect:B,...I}={}){super();if(typeof A!=="function")throw new ig("factory must be a function.");if(B!=null&&typeof B!=="function"&&typeof B!=="object")throw new ig("connect must be a function or an object");if(!Number.isInteger(Q)||Q<0)throw new ig("maxRedirections must be a positive number");if(B&&typeof B!=="function")B={...B};this[D3]=I.interceptors?.Agent&&Array.isArray(I.interceptors.Agent)?I.interceptors.Agent:[N3({maxRedirections:Q})],this[eD]={...G3.deepClone(I),connect:B},this[eD].interceptors=I.interceptors?{...I.interceptors}:void 0,this[M3]=Q,this[K2]=A,this[OB]=new Map,this[X2]=(E,C)=>{this.emit("drain",E,[this,...C])},this[V2]=(E,C)=>{this.emit("connect",E,[this,...C])},this[Z2]=(E,C,g)=>{this.emit("disconnect",E,[this,...C],g)},this[R2]=(E,C,g)=>{this.emit("connectionError",E,[this,...C],g)}}get[L2](){let A=0;for(let Q of this[OB].values())A+=Q[L2];return A}[F3](A,Q){let B;if(A.origin&&(typeof A.origin==="string"||A.origin instanceof URL))B=String(A.origin);else throw new ig("opts.origin must be a non-empty string or URL.");let I=this[OB].get(B);if(!I)I=this[K2](A.origin,this[eD]).on("drain",this[X2]).on("connect",this[V2]).on("disconnect",this[Z2]).on("connectionError",this[R2]),this[OB].set(B,I);return I.dispatch(A,Q)}async[C3](){let A=[];for(let Q of this[OB].values())A.push(Q.close());this[OB].clear(),await Promise.all(A)}async[g3](A){let Q=[];for(let B of this[OB].values())Q.push(B.destroy(A));this[OB].clear(),await Promise.all(Q)}}S2.exports=z2});var BY=W((ib,f2)=>{var{kProxy:AY,kClose:x2,kDestroy:O2,kDispatch:$2,kInterceptors:W3}=GA(),{URL:CI}=z("node:url"),L3=rI(),P2=oI(),q2=qI(),{InvalidArgumentError:tI,RequestAbortedError:V3,SecureProxyConnectionError:Z3}=r(),H2=qE(),y2=sI(),ng=Symbol("proxy agent"),ag=Symbol("proxy client"),PB=Symbol("proxy headers"),QY=Symbol("request tls settings"),T2=Symbol("proxy tls settings"),_2=Symbol("connect endpoint function"),j2=Symbol("tunnel proxy");function R3(A){return A==="https:"?443:80}function X3(A,Q){return new P2(A,Q)}var K3=()=>{};function z3(A,Q){if(Q.connections===1)return new y2(A,Q);return new P2(A,Q)}class h2 extends q2{#A;constructor(A,{headers:Q={},connect:B,factory:I}){super();if(!A)throw new tI("Proxy URL is mandatory");if(this[PB]=Q,I)this.#A=I(A,{connect:B});else this.#A=new y2(A,{connect:B})}[$2](A,Q){let B=Q.onHeaders;Q.onHeaders=function(g,F,D){if(g===407){if(typeof Q.onError==="function")Q.onError(new tI("Proxy Authentication Required (407)"));return}if(B)B.call(this,g,F,D)};let{origin:I,path:E="/",headers:C={}}=A;if(A.path=I+E,!("host"in C)&&!("Host"in C)){let{host:g}=new CI(I);C.host=g}return A.headers={...this[PB],...C},this.#A[$2](A,Q)}async[x2](){return this.#A.close()}async[O2](A){return this.#A.destroy(A)}}class k2 extends q2{constructor(A){super();if(!A||typeof A==="object"&&!(A instanceof CI)&&!A.uri)throw new tI("Proxy uri is mandatory");let{clientFactory:Q=X3}=A;if(typeof Q!=="function")throw new tI("Proxy opts.clientFactory must be a function.");let{proxyTunnel:B=!0}=A,I=this.#A(A),{href:E,origin:C,port:g,protocol:F,username:D,password:J,hostname:Y}=I;if(this[AY]={uri:E,protocol:F},this[W3]=A.interceptors?.ProxyAgent&&Array.isArray(A.interceptors.ProxyAgent)?A.interceptors.ProxyAgent:[],this[QY]=A.requestTls,this[T2]=A.proxyTls,this[PB]=A.headers||{},this[j2]=B,A.auth&&A.token)throw new tI("opts.auth cannot be used in combination with opts.token");else if(A.auth)this[PB]["proxy-authorization"]=`Basic ${A.auth}`;else if(A.token)this[PB]["proxy-authorization"]=A.token;else if(D&&J)this[PB]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(D)}:${decodeURIComponent(J)}`).toString("base64")}`;let U=H2({...A.proxyTls});this[_2]=H2({...A.requestTls});let N=A.factory||z3,w=(L,S)=>{let{protocol:Z}=new CI(L);if(!this[j2]&&Z==="http:"&&this[AY].protocol==="http:")return new h2(this[AY].uri,{headers:this[PB],connect:U,factory:N});return N(L,S)};this[ag]=Q(I,{connect:U}),this[ng]=new L3({...A,factory:w,connect:async(L,S)=>{let Z=L.host;if(!L.port)Z+=`:${R3(L.protocol)}`;try{let{socket:R,statusCode:x}=await this[ag].connect({origin:C,port:g,path:Z,signal:L.signal,headers:{...this[PB],host:L.host},servername:this[T2]?.servername||Y});if(x!==200)R.on("error",K3).destroy(),S(new V3(`Proxy response (${x}) !== 200 when HTTP Tunneling`));if(L.protocol!=="https:"){S(null,R);return}let O;if(this[QY])O=this[QY].servername;else O=L.servername;this[_2]({...L,servername:O,httpSocket:R},S)}catch(R){if(R.code==="ERR_TLS_CERT_ALTNAME_INVALID")S(new Z3(R));else S(R)}}})}dispatch(A,Q){let B=S3(A.headers);if($3(B),B&&!("host"in B)&&!("Host"in B)){let{host:I}=new CI(A.origin);B.host=I}return this[ng].dispatch({...A,headers:B},Q)}#A(A){if(typeof A==="string")return new CI(A);else if(A instanceof CI)return A;else return new CI(A.uri)}async[x2](){await this[ng].close(),await this[ag].close()}async[O2](){await this[ng].destroy(),await this[ag].destroy()}}function S3(A){if(Array.isArray(A)){let Q={};for(let B=0;BB.toLowerCase()==="proxy-authorization"))throw new tI("Proxy-Authorization should be sent in ProxyAgent constructor")}f2.exports=k2});var l2=W((nb,d2)=>{var H3=qI(),{kClose:T3,kDestroy:_3,kClosed:v2,kDestroyed:b2,kDispatch:j3,kNoProxyAgent:QC,kHttpProxyAgent:qB,kHttpsProxyAgent:gI}=GA(),m2=BY(),x3=rI(),O3={"http:":80,"https:":443},u2=!1;class c2 extends H3{#A=null;#Q=null;#E=null;constructor(A={}){super();if(this.#E=A,!u2)u2=!0,process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"});let{httpProxy:Q,httpsProxy:B,noProxy:I,...E}=A;this[QC]=new x3(E);let C=Q??process.env.http_proxy??process.env.HTTP_PROXY;if(C)this[qB]=new m2({...E,uri:C});else this[qB]=this[QC];let g=B??process.env.https_proxy??process.env.HTTPS_PROXY;if(g)this[gI]=new m2({...E,uri:g});else this[gI]=this[qB];this.#C()}[j3](A,Q){let B=new URL(A.origin);return this.#I(B).dispatch(A,Q)}async[T3](){if(await this[QC].close(),!this[qB][v2])await this[qB].close();if(!this[gI][v2])await this[gI].close()}async[_3](A){if(await this[QC].destroy(A),!this[qB][b2])await this[qB].destroy(A);if(!this[gI][b2])await this[gI].destroy(A)}#I(A){let{protocol:Q,host:B,port:I}=A;if(B=B.replace(/:\d*$/,"").toLowerCase(),I=Number.parseInt(I,10)||O3[Q]||0,!this.#B(B,I))return this[QC];if(Q==="https:")return this[gI];return this[qB]}#B(A,Q){if(this.#g)this.#C();if(this.#Q.length===0)return!0;if(this.#A==="*")return!1;for(let B=0;B{var eI=z("node:assert"),{kRetryHandlerDefaultRetry:p2}=GA(),{RequestRetryError:BC}=r(),{isDisturbed:i2,parseHeaders:P3,parseRangeHeader:n2,wrapRequestBody:q3}=p();function y3(A){let Q=Date.now();return new Date(A).getTime()-Q}class IY{constructor(A,Q){let{retryOptions:B,...I}=A,{retry:E,maxRetries:C,maxTimeout:g,minTimeout:F,timeoutFactor:D,methods:J,errorCodes:Y,retryAfter:U,statusCodes:N}=B??{};this.dispatch=Q.dispatch,this.handler=Q.handler,this.opts={...I,body:q3(A.body)},this.abort=null,this.aborted=!1,this.retryOpts={retry:E??IY[p2],retryAfter:U??!0,maxTimeout:g??30000,minTimeout:F??500,timeoutFactor:D??2,maxRetries:C??5,methods:J??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:N??[500,502,503,504,429],errorCodes:Y??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]},this.retryCount=0,this.retryCountCheckpoint=0,this.start=0,this.end=null,this.etag=null,this.resume=null,this.handler.onConnect((w)=>{if(this.aborted=!0,this.abort)this.abort(w);else this.reason=w})}onRequestSent(){if(this.handler.onRequestSent)this.handler.onRequestSent()}onUpgrade(A,Q,B){if(this.handler.onUpgrade)this.handler.onUpgrade(A,Q,B)}onConnect(A){if(this.aborted)A(this.reason);else this.abort=A}onBodySent(A){if(this.handler.onBodySent)return this.handler.onBodySent(A)}static[p2](A,{state:Q,opts:B},I){let{statusCode:E,code:C,headers:g}=A,{method:F,retryOptions:D}=B,{maxRetries:J,minTimeout:Y,maxTimeout:U,timeoutFactor:N,statusCodes:w,errorCodes:L,methods:S}=D,{counter:Z}=Q;if(C&&C!=="UND_ERR_REQ_RETRY"&&!L.includes(C)){I(A);return}if(Array.isArray(S)&&!S.includes(F)){I(A);return}if(E!=null&&Array.isArray(w)&&!w.includes(E)){I(A);return}if(Z>J){I(A);return}let R=g?.["retry-after"];if(R)R=Number(R),R=Number.isNaN(R)?y3(R):R*1000;let x=R>0?Math.min(R,U):Math.min(Y*N**(Z-1),U);setTimeout(()=>I(null),x)}onHeaders(A,Q,B,I){let E=P3(Q);if(this.retryCount+=1,A>=300)if(this.retryOpts.statusCodes.includes(A)===!1)return this.handler.onHeaders(A,Q,B,I);else return this.abort(new BC("Request failed",A,{headers:E,data:{count:this.retryCount}})),!1;if(this.resume!=null){if(this.resume=null,A!==206&&(this.start>0||A!==200))return this.abort(new BC("server does not support the range header and the payload was partially consumed",A,{headers:E,data:{count:this.retryCount}})),!1;let g=n2(E["content-range"]);if(!g)return this.abort(new BC("Content-Range mismatch",A,{headers:E,data:{count:this.retryCount}})),!1;if(this.etag!=null&&this.etag!==E.etag)return this.abort(new BC("ETag mismatch",A,{headers:E,data:{count:this.retryCount}})),!1;let{start:F,size:D,end:J=D-1}=g;return eI(this.start===F,"content-range mismatch"),eI(this.end==null||this.end===J,"content-range mismatch"),this.resume=B,!0}if(this.end==null){if(A===206){let g=n2(E["content-range"]);if(g==null)return this.handler.onHeaders(A,Q,B,I);let{start:F,size:D,end:J=D-1}=g;eI(F!=null&&Number.isFinite(F),"content-range mismatch"),eI(J!=null&&Number.isFinite(J),"invalid content-length"),this.start=F,this.end=J}if(this.end==null){let g=E["content-length"];this.end=g!=null?Number(g)-1:null}if(eI(Number.isFinite(this.start)),eI(this.end==null||Number.isFinite(this.end),"invalid content-length"),this.resume=B,this.etag=E.etag!=null?E.etag:null,this.etag!=null&&this.etag.startsWith("W/"))this.etag=null;return this.handler.onHeaders(A,Q,B,I)}let C=new BC("Request failed",A,{headers:E,data:{count:this.retryCount}});return this.abort(C),!1}onData(A){return this.start+=A.length,this.handler.onData(A)}onComplete(A){return this.retryCount=0,this.handler.onComplete(A)}onError(A){if(this.aborted||i2(this.opts.body))return this.handler.onError(A);if(this.retryCount-this.retryCountCheckpoint>0)this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint);else this.retryCount+=1;this.retryOpts.retry(A,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},Q.bind(this));function Q(B){if(B!=null||this.aborted||i2(this.opts.body))return this.handler.onError(B);if(this.start!==0){let I={range:`bytes=${this.start}-${this.end??""}`};if(this.etag!=null)I["if-match"]=this.etag;this.opts={...this.opts,headers:{...this.opts.headers,...I}}}try{this.retryCountCheckpoint=this.retryCount,this.dispatch(this.opts,this)}catch(I){this.handler.onError(I)}}}}a2.exports=IY});var r2=W((sb,o2)=>{var h3=OE(),k3=sg();class s2 extends h3{#A=null;#Q=null;constructor(A,Q={}){super(Q);this.#A=A,this.#Q=Q}dispatch(A,Q){let B=new k3({...A,retryOptions:this.#Q},{dispatch:this.#A.dispatch.bind(this.#A),handler:Q});return this.#A.dispatch(A,B)}close(){return this.#A.close()}destroy(){return this.#A.destroy()}}o2.exports=s2});var DY=W((ob,FW)=>{var BW=z("node:assert"),{Readable:f3}=z("node:stream"),{RequestAbortedError:IW,NotSupportedError:v3,InvalidArgumentError:b3,AbortError:EY}=r(),EW=p(),{ReadableStreamFrom:m3}=p(),IQ=Symbol("kConsume"),IC=Symbol("kReading"),yB=Symbol("kBody"),t2=Symbol("kAbort"),CW=Symbol("kContentType"),e2=Symbol("kContentLength"),u3=()=>{};class gW extends f3{constructor({resume:A,abort:Q,contentType:B="",contentLength:I,highWaterMark:E=65536}){super({autoDestroy:!0,read:A,highWaterMark:E});this._readableState.dataEmitted=!1,this[t2]=Q,this[IQ]=null,this[yB]=null,this[CW]=B,this[e2]=I,this[IC]=!1}destroy(A){if(!A&&!this._readableState.endEmitted)A=new IW;if(A)this[t2]();return super.destroy(A)}_destroy(A,Q){if(!this[IC])setImmediate(()=>{Q(A)});else Q(A)}on(A,...Q){if(A==="data"||A==="readable")this[IC]=!0;return super.on(A,...Q)}addListener(A,...Q){return this.on(A,...Q)}off(A,...Q){let B=super.off(A,...Q);if(A==="data"||A==="readable")this[IC]=this.listenerCount("data")>0||this.listenerCount("readable")>0;return B}removeListener(A,...Q){return this.off(A,...Q)}push(A){if(this[IQ]&&A!==null)return gY(this[IQ],A),this[IC]?super.push(A):!0;return super.push(A)}async text(){return EC(this,"text")}async json(){return EC(this,"json")}async blob(){return EC(this,"blob")}async bytes(){return EC(this,"bytes")}async arrayBuffer(){return EC(this,"arrayBuffer")}async formData(){throw new v3}get bodyUsed(){return EW.isDisturbed(this)}get body(){if(!this[yB]){if(this[yB]=m3(this),this[IQ])this[yB].getReader(),BW(this[yB].locked)}return this[yB]}async dump(A){let Q=Number.isFinite(A?.limit)?A.limit:131072,B=A?.signal;if(B!=null&&(typeof B!=="object"||!("aborted"in B)))throw new b3("signal must be an AbortSignal");if(B?.throwIfAborted(),this._readableState.closeEmitted)return null;return await new Promise((I,E)=>{if(this[e2]>Q)this.destroy(new EY);let C=()=>{this.destroy(B.reason??new EY)};B?.addEventListener("abort",C),this.on("close",function(){if(B?.removeEventListener("abort",C),B?.aborted)E(B.reason??new EY);else I(null)}).on("error",u3).on("data",function(g){if(Q-=g.length,Q<=0)this.destroy()}).resume()})}}function c3(A){return A[yB]&&A[yB].locked===!0||A[IQ]}function d3(A){return EW.isDisturbed(A)||c3(A)}async function EC(A,Q){return BW(!A[IQ]),new Promise((B,I)=>{if(d3(A)){let E=A._readableState;if(E.destroyed&&E.closeEmitted===!1)A.on("error",(C)=>{I(C)}).on("close",()=>{I(TypeError("unusable"))});else I(E.errored??TypeError("unusable"))}else queueMicrotask(()=>{A[IQ]={type:Q,stream:A,resolve:B,reject:I,length:0,body:[]},A.on("error",function(E){FY(this[IQ],E)}).on("close",function(){if(this[IQ].body!==null)FY(this[IQ],new IW)}),l3(A[IQ])})})}function l3(A){if(A.body===null)return;let{_readableState:Q}=A.stream;if(Q.bufferIndex){let B=Q.bufferIndex,I=Q.buffer.length;for(let E=B;E2&&B[0]===239&&B[1]===187&&B[2]===191?3:0;return B.utf8Slice(E,I)}function AW(A,Q){if(A.length===0||Q===0)return new Uint8Array(0);if(A.length===1)return new Uint8Array(A[0]);let B=new Uint8Array(Buffer.allocUnsafeSlow(Q).buffer),I=0;for(let E=0;E{var p3=z("node:assert"),{ResponseStatusCodeError:DW}=r(),{chunksDecode:YW}=DY();async function i3({callback:A,body:Q,contentType:B,statusCode:I,statusMessage:E,headers:C}){p3(Q);let g=[],F=0;try{for await(let U of Q)if(g.push(U),F+=U.length,F>131072){g=[],F=0;break}}catch{g=[],F=0}let D=`Response status code ${I}${E?`: ${E}`:""}`;if(I===204||!B||!F){queueMicrotask(()=>A(new DW(D,I,C)));return}let J=Error.stackTraceLimit;Error.stackTraceLimit=0;let Y;try{if(JW(B))Y=JSON.parse(YW(g,F));else if(UW(B))Y=YW(g,F)}catch{}finally{Error.stackTraceLimit=J}queueMicrotask(()=>A(new DW(D,I,C,Y)))}var JW=(A)=>{return A.length>15&&A[11]==="/"&&A[0]==="a"&&A[1]==="p"&&A[2]==="p"&&A[3]==="l"&&A[4]==="i"&&A[5]==="c"&&A[6]==="a"&&A[7]==="t"&&A[8]==="i"&&A[9]==="o"&&A[10]==="n"&&A[12]==="j"&&A[13]==="s"&&A[14]==="o"&&A[15]==="n"},UW=(A)=>{return A.length>4&&A[4]==="/"&&A[0]==="t"&&A[1]==="e"&&A[2]==="x"&&A[3]==="t"};GW.exports={getResolveErrorBodyCallback:i3,isContentTypeApplicationJson:JW,isContentTypeText:UW}});var wW=W((tb,UY)=>{var n3=z("node:assert"),{Readable:a3}=DY(),{InvalidArgumentError:AE,RequestAbortedError:NW}=r(),EQ=p(),{getResolveErrorBodyCallback:s3}=YY(),{AsyncResource:o3}=z("node:async_hooks");class JY extends o3{constructor(A,Q){if(!A||typeof A!=="object")throw new AE("invalid opts");let{signal:B,method:I,opaque:E,body:C,onInfo:g,responseHeaders:F,throwOnError:D,highWaterMark:J}=A;try{if(typeof Q!=="function")throw new AE("invalid callback");if(J&&(typeof J!=="number"||J<0))throw new AE("invalid highWaterMark");if(B&&typeof B.on!=="function"&&typeof B.addEventListener!=="function")throw new AE("signal must be an EventEmitter or EventTarget");if(I==="CONNECT")throw new AE("invalid method");if(g&&typeof g!=="function")throw new AE("invalid onInfo callback");super("UNDICI_REQUEST")}catch(Y){if(EQ.isStream(C))EQ.destroy(C.on("error",EQ.nop),Y);throw Y}if(this.method=I,this.responseHeaders=F||null,this.opaque=E||null,this.callback=Q,this.res=null,this.abort=null,this.body=C,this.trailers={},this.context=null,this.onInfo=g||null,this.throwOnError=D,this.highWaterMark=J,this.signal=B,this.reason=null,this.removeAbortListener=null,EQ.isStream(C))C.on("error",(Y)=>{this.onError(Y)});if(this.signal)if(this.signal.aborted)this.reason=this.signal.reason??new NW;else this.removeAbortListener=EQ.addAbortListener(this.signal,()=>{if(this.reason=this.signal.reason??new NW,this.res)EQ.destroy(this.res.on("error",EQ.nop),this.reason);else if(this.abort)this.abort(this.reason);if(this.removeAbortListener)this.res?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null})}onConnect(A,Q){if(this.reason){A(this.reason);return}n3(this.callback),this.abort=A,this.context=Q}onHeaders(A,Q,B,I){let{callback:E,opaque:C,abort:g,context:F,responseHeaders:D,highWaterMark:J}=this,Y=D==="raw"?EQ.parseRawHeaders(Q):EQ.parseHeaders(Q);if(A<200){if(this.onInfo)this.onInfo({statusCode:A,headers:Y});return}let U=D==="raw"?EQ.parseHeaders(Q):Y,N=U["content-type"],w=U["content-length"],L=new a3({resume:B,abort:g,contentType:N,contentLength:this.method!=="HEAD"&&w?Number(w):null,highWaterMark:J});if(this.removeAbortListener)L.on("close",this.removeAbortListener);if(this.callback=null,this.res=L,E!==null)if(this.throwOnError&&A>=400)this.runInAsyncScope(s3,null,{callback:E,body:L,contentType:N,statusCode:A,statusMessage:I,headers:Y});else this.runInAsyncScope(E,null,null,{statusCode:A,headers:Y,trailers:this.trailers,opaque:C,body:L,context:F})}onData(A){return this.res.push(A)}onComplete(A){EQ.parseHeaders(A,this.trailers),this.res.push(null)}onError(A){let{res:Q,callback:B,body:I,opaque:E}=this;if(B)this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(B,null,A,{opaque:E})});if(Q)this.res=null,queueMicrotask(()=>{EQ.destroy(Q,A)});if(I)this.body=null,EQ.destroy(I,A);if(this.removeAbortListener)Q?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null}}function MW(A,Q){if(Q===void 0)return new Promise((B,I)=>{MW.call(this,A,(E,C)=>{return E?I(E):B(C)})});try{this.dispatch(A,new JY(A,Q))}catch(B){if(typeof Q!=="function")throw B;let I=A?.opaque;queueMicrotask(()=>Q(B,{opaque:I}))}}UY.exports=MW;UY.exports.RequestHandler=JY});var CC=W((eb,VW)=>{var{addAbortListener:r3}=p(),{RequestAbortedError:t3}=r(),QE=Symbol("kListener"),iQ=Symbol("kSignal");function WW(A){if(A.abort)A.abort(A[iQ]?.reason);else A.reason=A[iQ]?.reason??new t3;LW(A)}function e3(A,Q){if(A.reason=null,A[iQ]=null,A[QE]=null,!Q)return;if(Q.aborted){WW(A);return}A[iQ]=Q,A[QE]=()=>{WW(A)},r3(A[iQ],A[QE])}function LW(A){if(!A[iQ])return;if("removeEventListener"in A[iQ])A[iQ].removeEventListener("abort",A[QE]);else A[iQ].removeListener("abort",A[QE]);A[iQ]=null,A[QE]=null}VW.exports={addSignal:e3,removeSignal:LW}});var zW=W((Am,KW)=>{var A7=z("node:assert"),{finished:Q7,PassThrough:B7}=z("node:stream"),{InvalidArgumentError:BE,InvalidReturnValueError:I7}=r(),OQ=p(),{getResolveErrorBodyCallback:E7}=YY(),{AsyncResource:C7}=z("node:async_hooks"),{addSignal:g7,removeSignal:ZW}=CC();class RW extends C7{constructor(A,Q,B){if(!A||typeof A!=="object")throw new BE("invalid opts");let{signal:I,method:E,opaque:C,body:g,onInfo:F,responseHeaders:D,throwOnError:J}=A;try{if(typeof B!=="function")throw new BE("invalid callback");if(typeof Q!=="function")throw new BE("invalid factory");if(I&&typeof I.on!=="function"&&typeof I.addEventListener!=="function")throw new BE("signal must be an EventEmitter or EventTarget");if(E==="CONNECT")throw new BE("invalid method");if(F&&typeof F!=="function")throw new BE("invalid onInfo callback");super("UNDICI_STREAM")}catch(Y){if(OQ.isStream(g))OQ.destroy(g.on("error",OQ.nop),Y);throw Y}if(this.responseHeaders=D||null,this.opaque=C||null,this.factory=Q,this.callback=B,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=g,this.onInfo=F||null,this.throwOnError=J||!1,OQ.isStream(g))g.on("error",(Y)=>{this.onError(Y)});g7(this,I)}onConnect(A,Q){if(this.reason){A(this.reason);return}A7(this.callback),this.abort=A,this.context=Q}onHeaders(A,Q,B,I){let{factory:E,opaque:C,context:g,callback:F,responseHeaders:D}=this,J=D==="raw"?OQ.parseRawHeaders(Q):OQ.parseHeaders(Q);if(A<200){if(this.onInfo)this.onInfo({statusCode:A,headers:J});return}this.factory=null;let Y;if(this.throwOnError&&A>=400){let w=(D==="raw"?OQ.parseHeaders(Q):J)["content-type"];Y=new B7,this.callback=null,this.runInAsyncScope(E7,null,{callback:F,body:Y,contentType:w,statusCode:A,statusMessage:I,headers:J})}else{if(E===null)return;if(Y=this.runInAsyncScope(E,null,{statusCode:A,headers:J,opaque:C,context:g}),!Y||typeof Y.write!=="function"||typeof Y.end!=="function"||typeof Y.on!=="function")throw new I7("expected Writable");Q7(Y,{readable:!1},(N)=>{let{callback:w,res:L,opaque:S,trailers:Z,abort:R}=this;if(this.res=null,N||!L.readable)OQ.destroy(L,N);if(this.callback=null,this.runInAsyncScope(w,null,N||null,{opaque:S,trailers:Z}),N)R()})}return Y.on("drain",B),this.res=Y,(Y.writableNeedDrain!==void 0?Y.writableNeedDrain:Y._writableState?.needDrain)!==!0}onData(A){let{res:Q}=this;return Q?Q.write(A):!0}onComplete(A){let{res:Q}=this;if(ZW(this),!Q)return;this.trailers=OQ.parseHeaders(A),Q.end()}onError(A){let{res:Q,callback:B,opaque:I,body:E}=this;if(ZW(this),this.factory=null,Q)this.res=null,OQ.destroy(Q,A);else if(B)this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(B,null,A,{opaque:I})});if(E)this.body=null,OQ.destroy(E,A)}}function XW(A,Q,B){if(B===void 0)return new Promise((I,E)=>{XW.call(this,A,Q,(C,g)=>{return C?E(C):I(g)})});try{this.dispatch(A,new RW(A,Q,B))}catch(I){if(typeof B!=="function")throw I;let E=A?.opaque;queueMicrotask(()=>B(I,{opaque:E}))}}KW.exports=XW});var xW=W((Qm,jW)=>{var{Readable:$W,Duplex:F7,PassThrough:D7}=z("node:stream"),{InvalidArgumentError:gC,InvalidReturnValueError:Y7,RequestAbortedError:GY}=r(),LQ=p(),{AsyncResource:J7}=z("node:async_hooks"),{addSignal:U7,removeSignal:G7}=CC(),SW=z("node:assert"),IE=Symbol("resume");class HW extends $W{constructor(){super({autoDestroy:!0});this[IE]=null}_read(){let{[IE]:A}=this;if(A)this[IE]=null,A()}_destroy(A,Q){this._read(),Q(A)}}class TW extends $W{constructor(A){super({autoDestroy:!0});this[IE]=A}_read(){this[IE]()}_destroy(A,Q){if(!A&&!this._readableState.endEmitted)A=new GY;Q(A)}}class _W extends J7{constructor(A,Q){if(!A||typeof A!=="object")throw new gC("invalid opts");if(typeof Q!=="function")throw new gC("invalid handler");let{signal:B,method:I,opaque:E,onInfo:C,responseHeaders:g}=A;if(B&&typeof B.on!=="function"&&typeof B.addEventListener!=="function")throw new gC("signal must be an EventEmitter or EventTarget");if(I==="CONNECT")throw new gC("invalid method");if(C&&typeof C!=="function")throw new gC("invalid onInfo callback");super("UNDICI_PIPELINE");this.opaque=E||null,this.responseHeaders=g||null,this.handler=Q,this.abort=null,this.context=null,this.onInfo=C||null,this.req=new HW().on("error",LQ.nop),this.ret=new F7({readableObjectMode:A.objectMode,autoDestroy:!0,read:()=>{let{body:F}=this;if(F?.resume)F.resume()},write:(F,D,J)=>{let{req:Y}=this;if(Y.push(F,D)||Y._readableState.destroyed)J();else Y[IE]=J},destroy:(F,D)=>{let{body:J,req:Y,res:U,ret:N,abort:w}=this;if(!F&&!N._readableState.endEmitted)F=new GY;if(w&&F)w();LQ.destroy(J,F),LQ.destroy(Y,F),LQ.destroy(U,F),G7(this),D(F)}}).on("prefinish",()=>{let{req:F}=this;F.push(null)}),this.res=null,U7(this,B)}onConnect(A,Q){let{ret:B,res:I}=this;if(this.reason){A(this.reason);return}SW(!I,"pipeline cannot be retried"),SW(!B.destroyed),this.abort=A,this.context=Q}onHeaders(A,Q,B){let{opaque:I,handler:E,context:C}=this;if(A<200){if(this.onInfo){let F=this.responseHeaders==="raw"?LQ.parseRawHeaders(Q):LQ.parseHeaders(Q);this.onInfo({statusCode:A,headers:F})}return}this.res=new TW(B);let g;try{this.handler=null;let F=this.responseHeaders==="raw"?LQ.parseRawHeaders(Q):LQ.parseHeaders(Q);g=this.runInAsyncScope(E,null,{statusCode:A,headers:F,opaque:I,body:this.res,context:C})}catch(F){throw this.res.on("error",LQ.nop),F}if(!g||typeof g.on!=="function")throw new Y7("expected Readable");g.on("data",(F)=>{let{ret:D,body:J}=this;if(!D.push(F)&&J.pause)J.pause()}).on("error",(F)=>{let{ret:D}=this;LQ.destroy(D,F)}).on("end",()=>{let{ret:F}=this;F.push(null)}).on("close",()=>{let{ret:F}=this;if(!F._readableState.ended)LQ.destroy(F,new GY)}),this.body=g}onData(A){let{res:Q}=this;return Q.push(A)}onComplete(A){let{res:Q}=this;Q.push(null)}onError(A){let{ret:Q}=this;this.handler=null,LQ.destroy(Q,A)}}function N7(A,Q){try{let B=new _W(A,Q);return this.dispatch({...A,body:B.req},B),B.ret}catch(B){return new D7().destroy(B)}}jW.exports=N7});var fW=W((Bm,kW)=>{var{InvalidArgumentError:NY,SocketError:M7}=r(),{AsyncResource:w7}=z("node:async_hooks"),OW=p(),{addSignal:W7,removeSignal:PW}=CC(),qW=z("node:assert");class yW extends w7{constructor(A,Q){if(!A||typeof A!=="object")throw new NY("invalid opts");if(typeof Q!=="function")throw new NY("invalid callback");let{signal:B,opaque:I,responseHeaders:E}=A;if(B&&typeof B.on!=="function"&&typeof B.addEventListener!=="function")throw new NY("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE");this.responseHeaders=E||null,this.opaque=I||null,this.callback=Q,this.abort=null,this.context=null,W7(this,B)}onConnect(A,Q){if(this.reason){A(this.reason);return}qW(this.callback),this.abort=A,this.context=null}onHeaders(){throw new M7("bad upgrade",null)}onUpgrade(A,Q,B){qW(A===101);let{callback:I,opaque:E,context:C}=this;PW(this),this.callback=null;let g=this.responseHeaders==="raw"?OW.parseRawHeaders(Q):OW.parseHeaders(Q);this.runInAsyncScope(I,null,null,{headers:g,socket:B,opaque:E,context:C})}onError(A){let{callback:Q,opaque:B}=this;if(PW(this),Q)this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(Q,null,A,{opaque:B})})}}function hW(A,Q){if(Q===void 0)return new Promise((B,I)=>{hW.call(this,A,(E,C)=>{return E?I(E):B(C)})});try{let B=new yW(A,Q);this.dispatch({...A,method:A.method||"GET",upgrade:A.protocol||"Websocket"},B)}catch(B){if(typeof Q!=="function")throw B;let I=A?.opaque;queueMicrotask(()=>Q(B,{opaque:I}))}}kW.exports=hW});var dW=W((Im,cW)=>{var L7=z("node:assert"),{AsyncResource:V7}=z("node:async_hooks"),{InvalidArgumentError:MY,SocketError:Z7}=r(),vW=p(),{addSignal:R7,removeSignal:bW}=CC();class mW extends V7{constructor(A,Q){if(!A||typeof A!=="object")throw new MY("invalid opts");if(typeof Q!=="function")throw new MY("invalid callback");let{signal:B,opaque:I,responseHeaders:E}=A;if(B&&typeof B.on!=="function"&&typeof B.addEventListener!=="function")throw new MY("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT");this.opaque=I||null,this.responseHeaders=E||null,this.callback=Q,this.abort=null,R7(this,B)}onConnect(A,Q){if(this.reason){A(this.reason);return}L7(this.callback),this.abort=A,this.context=Q}onHeaders(){throw new Z7("bad connect",null)}onUpgrade(A,Q,B){let{callback:I,opaque:E,context:C}=this;bW(this),this.callback=null;let g=Q;if(g!=null)g=this.responseHeaders==="raw"?vW.parseRawHeaders(Q):vW.parseHeaders(Q);this.runInAsyncScope(I,null,null,{statusCode:A,headers:g,socket:B,opaque:E,context:C})}onError(A){let{callback:Q,opaque:B}=this;if(bW(this),Q)this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(Q,null,A,{opaque:B})})}}function uW(A,Q){if(Q===void 0)return new Promise((B,I)=>{uW.call(this,A,(E,C)=>{return E?I(E):B(C)})});try{let B=new mW(A,Q);this.dispatch({...A,method:"CONNECT"},B)}catch(B){if(typeof Q!=="function")throw B;let I=A?.opaque;queueMicrotask(()=>Q(B,{opaque:I}))}}cW.exports=uW});var lW=W((X7,EE)=>{X7.request=wW();X7.stream=zW();X7.pipeline=xW();X7.upgrade=fW();X7.connect=dW()});var WY=W((Em,iW)=>{var{UndiciError:T7}=r(),pW=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");class wY extends T7{constructor(A){super(A);Error.captureStackTrace(this,wY),this.name="MockNotMatchedError",this.message=A||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}static[Symbol.hasInstance](A){return A&&A[pW]===!0}[pW]=!0}iW.exports={MockNotMatchedError:wY}});var CE=W((Cm,nW)=>{nW.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}});var FC=W((gm,EL)=>{var{MockNotMatchedError:FI}=WY(),{kDispatches:og,kMockAgent:_7,kOriginalDispatch:j7,kOrigin:x7,kGetNetConnect:O7}=CE(),{buildURL:P7}=p(),{STATUS_CODES:q7}=z("node:http"),{types:{isPromise:y7}}=z("node:util");function YB(A,Q){if(typeof A==="string")return A===Q;if(A instanceof RegExp)return A.test(Q);if(typeof A==="function")return A(Q)===!0;return!1}function sW(A){return Object.fromEntries(Object.entries(A).map(([Q,B])=>{return[Q.toLocaleLowerCase(),B]}))}function oW(A,Q){if(Array.isArray(A)){for(let B=0;B"u")return!0;if(typeof Q!=="object"||typeof A.headers!=="object")return!1;for(let[B,I]of Object.entries(A.headers)){let E=oW(Q,B);if(!YB(I,E))return!1}return!0}function aW(A){if(typeof A!=="string")return A;let Q=A.split("?");if(Q.length!==2)return A;let B=new URLSearchParams(Q.pop());return B.sort(),[...Q,B.toString()].join("?")}function h7(A,{path:Q,method:B,body:I,headers:E}){let C=YB(A.path,Q),g=YB(A.method,B),F=typeof A.body<"u"?YB(A.body,I):!0,D=rW(A,E);return C&&g&&F&&D}function tW(A){if(Buffer.isBuffer(A))return A;else if(A instanceof Uint8Array)return A;else if(A instanceof ArrayBuffer)return A;else if(typeof A==="object")return JSON.stringify(A);else return A.toString()}function eW(A,Q){let B=Q.query?P7(Q.path,Q.query):Q.path,I=typeof B==="string"?aW(B):B,E=A.filter(({consumed:C})=>!C).filter(({path:C})=>YB(aW(C),I));if(E.length===0)throw new FI(`Mock dispatch not matched for path '${I}'`);if(E=E.filter(({method:C})=>YB(C,Q.method)),E.length===0)throw new FI(`Mock dispatch not matched for method '${Q.method}' on path '${I}'`);if(E=E.filter(({body:C})=>typeof C<"u"?YB(C,Q.body):!0),E.length===0)throw new FI(`Mock dispatch not matched for body '${Q.body}' on path '${I}'`);if(E=E.filter((C)=>rW(C,Q.headers)),E.length===0){let C=typeof Q.headers==="object"?JSON.stringify(Q.headers):Q.headers;throw new FI(`Mock dispatch not matched for headers '${C}' on path '${I}'`)}return E[0]}function k7(A,Q,B){let I={timesInvoked:0,times:1,persist:!1,consumed:!1},E=typeof B==="function"?{callback:B}:{...B},C={...I,...Q,pending:!0,data:{error:null,...E}};return A.push(C),C}function LY(A,Q){let B=A.findIndex((I)=>{if(!I.consumed)return!1;return h7(I,Q)});if(B!==-1)A.splice(B,1)}function AL(A){let{path:Q,method:B,body:I,headers:E,query:C}=A;return{path:Q,method:B,body:I,headers:E,query:C}}function VY(A){let Q=Object.keys(A),B=[];for(let I=0;I=N,I.pending=U0)setTimeout(()=>{w(this[og])},J);else w(this[og]);function w(S,Z=C){let R=Array.isArray(A.headers)?ZY(A.headers):A.headers,x=typeof Z==="function"?Z({...A,headers:R}):Z;if(y7(x)){x.then((t)=>w(S,t));return}let O=tW(x),q=VY(g),a=VY(F);Q.onConnect?.((t)=>Q.onError(t),null),Q.onHeaders?.(E,q,L,QL(E)),Q.onData?.(Buffer.from(O)),Q.onComplete?.(a),LY(S,B)}function L(){}return!0}function v7(){let A=this[_7],Q=this[x7],B=this[j7];return function(E,C){if(A.isMockActive)try{BL.call(this,E,C)}catch(g){if(g instanceof FI){let F=A[O7]();if(F===!1)throw new FI(`${g.message}: subsequent request to origin ${Q} was not allowed (net.connect disabled)`);if(IL(F,Q))B.call(this,E,C);else throw new FI(`${g.message}: subsequent request to origin ${Q} was not allowed (net.connect is not enabled for this origin)`)}else throw g}else B.call(this,E,C)}}function IL(A,Q){let B=new URL(Q);if(A===!0)return!0;else if(Array.isArray(A)&&A.some((I)=>YB(I,B.host)))return!0;return!1}function b7(A){if(A){let{agent:Q,...B}=A;return B}}EL.exports={getResponseData:tW,getMockDispatch:eW,addMockDispatch:k7,deleteMockDispatch:LY,buildKey:AL,generateKeyValues:VY,matchValue:YB,getResponse:f7,getStatusText:QL,mockDispatch:BL,buildMockDispatch:v7,checkNetConnect:IL,buildMockOptions:b7,getHeaderByName:oW,buildHeadersFromArray:ZY}});var $Y=W((d7,SY)=>{var{getResponseData:m7,buildKey:u7,addMockDispatch:RY}=FC(),{kDispatches:rg,kDispatchKey:tg,kDefaultHeaders:XY,kDefaultTrailers:KY,kContentLength:zY,kMockDispatch:eg}=CE(),{InvalidArgumentError:nQ}=r(),{buildURL:c7}=p();class DC{constructor(A){this[eg]=A}delay(A){if(typeof A!=="number"||!Number.isInteger(A)||A<=0)throw new nQ("waitInMs must be a valid integer > 0");return this[eg].delay=A,this}persist(){return this[eg].persist=!0,this}times(A){if(typeof A!=="number"||!Number.isInteger(A)||A<=0)throw new nQ("repeatTimes must be a valid integer > 0");return this[eg].times=A,this}}class CL{constructor(A,Q){if(typeof A!=="object")throw new nQ("opts must be an object");if(typeof A.path>"u")throw new nQ("opts.path must be defined");if(typeof A.method>"u")A.method="GET";if(typeof A.path==="string")if(A.query)A.path=c7(A.path,A.query);else{let B=new URL(A.path,"data://");A.path=B.pathname+B.search}if(typeof A.method==="string")A.method=A.method.toUpperCase();this[tg]=u7(A),this[rg]=Q,this[XY]={},this[KY]={},this[zY]=!1}createMockScopeDispatchData({statusCode:A,data:Q,responseOptions:B}){let I=m7(Q),E=this[zY]?{"content-length":I.length}:{},C={...this[XY],...E,...B.headers},g={...this[KY],...B.trailers};return{statusCode:A,data:Q,headers:C,trailers:g}}validateReplyParameters(A){if(typeof A.statusCode>"u")throw new nQ("statusCode must be defined");if(typeof A.responseOptions!=="object"||A.responseOptions===null)throw new nQ("responseOptions must be an object")}reply(A){if(typeof A==="function"){let E=(g)=>{let F=A(g);if(typeof F!=="object"||F===null)throw new nQ("reply options callback must return an object");let D={data:"",responseOptions:{},...F};return this.validateReplyParameters(D),{...this.createMockScopeDispatchData(D)}},C=RY(this[rg],this[tg],E);return new DC(C)}let Q={statusCode:A,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(Q);let B=this.createMockScopeDispatchData(Q),I=RY(this[rg],this[tg],B);return new DC(I)}replyWithError(A){if(typeof A>"u")throw new nQ("error must be defined");let Q=RY(this[rg],this[tg],{error:A});return new DC(Q)}defaultReplyHeaders(A){if(typeof A>"u")throw new nQ("headers must be defined");return this[XY]=A,this}defaultReplyTrailers(A){if(typeof A>"u")throw new nQ("trailers must be defined");return this[KY]=A,this}replyContentLength(){return this[zY]=!0,this}}d7.MockInterceptor=CL;d7.MockScope=DC});var TY=W((Fm,NL)=>{var{promisify:i7}=z("node:util"),n7=sI(),{buildMockDispatch:a7}=FC(),{kDispatches:gL,kMockAgent:FL,kClose:DL,kOriginalClose:YL,kOrigin:JL,kOriginalDispatch:s7,kConnected:HY}=CE(),{MockInterceptor:o7}=$Y(),UL=GA(),{InvalidArgumentError:r7}=r();class GL extends n7{constructor(A,Q){super(A,Q);if(!Q||!Q.agent||typeof Q.agent.dispatch!=="function")throw new r7("Argument opts.agent must implement Agent");this[FL]=Q.agent,this[JL]=A,this[gL]=[],this[HY]=1,this[s7]=this.dispatch,this[YL]=this.close.bind(this),this.dispatch=a7.call(this),this.close=this[DL]}get[UL.kConnected](){return this[HY]}intercept(A){return new o7(A,this[gL])}async[DL](){await i7(this[YL])(),this[HY]=0,this[FL][UL.kClients].delete(this[JL])}}NL.exports=GL});var jY=W((Dm,XL)=>{var{promisify:t7}=z("node:util"),e7=oI(),{buildMockDispatch:AH}=FC(),{kDispatches:ML,kMockAgent:wL,kClose:WL,kOriginalClose:LL,kOrigin:VL,kOriginalDispatch:QH,kConnected:_Y}=CE(),{MockInterceptor:BH}=$Y(),ZL=GA(),{InvalidArgumentError:IH}=r();class RL extends e7{constructor(A,Q){super(A,Q);if(!Q||!Q.agent||typeof Q.agent.dispatch!=="function")throw new IH("Argument opts.agent must implement Agent");this[wL]=Q.agent,this[VL]=A,this[ML]=[],this[_Y]=1,this[QH]=this.dispatch,this[LL]=this.close.bind(this),this.dispatch=AH.call(this),this.close=this[WL]}get[ZL.kConnected](){return this[_Y]}intercept(A){return new BH(A,this[ML])}async[WL](){await t7(this[LL])(),this[_Y]=0,this[wL][ZL.kClients].delete(this[VL])}}XL.exports=RL});var zL=W((Ym,KL)=>{var EH={pronoun:"it",is:"is",was:"was",this:"this"},CH={pronoun:"they",is:"are",was:"were",this:"these"};KL.exports=class{constructor(Q,B){this.singular=Q,this.plural=B}pluralize(Q){let B=Q===1,I=B?EH:CH,E=B?this.singular:this.plural;return{...I,count:Q,noun:E}}}});var $L=W((Jm,SL)=>{var{Transform:gH}=z("node:stream"),{Console:FH}=z("node:console"),DH=process.versions.icu?"✅":"Y ",YH=process.versions.icu?"❌":"N ";SL.exports=class{constructor({disableColors:Q}={}){this.transform=new gH({transform(B,I,E){E(null,B)}}),this.logger=new FH({stdout:this.transform,inspectOptions:{colors:!Q&&!process.env.CI}})}format(Q){let B=Q.map(({method:I,path:E,data:{statusCode:C},persist:g,times:F,timesInvoked:D,origin:J})=>({Method:I,Origin:J,Path:E,"Status code":C,Persistent:g?DH:YH,Invocations:D,Remaining:g?1/0:F-D}));return this.logger.table(B),this.transform.read().toString()}}});var xL=W((Um,jL)=>{var{kClients:DI}=GA(),JH=rI(),{kAgent:xY,kMockAgentSet:AF,kMockAgentGet:HL,kDispatches:OY,kIsMockActive:QF,kNetConnect:YI,kGetNetConnect:UH,kOptions:BF,kFactory:IF}=CE(),GH=TY(),NH=jY(),{matchValue:MH,buildMockOptions:wH}=FC(),{InvalidArgumentError:TL,UndiciError:WH}=r(),LH=OE(),VH=zL(),ZH=$L();class _L extends LH{constructor(A){super(A);if(this[YI]=!0,this[QF]=!0,A?.agent&&typeof A.agent.dispatch!=="function")throw new TL("Argument opts.agent must implement Agent");let Q=A?.agent?A.agent:new JH(A);this[xY]=Q,this[DI]=Q[DI],this[BF]=wH(A)}get(A){let Q=this[HL](A);if(!Q)Q=this[IF](A),this[AF](A,Q);return Q}dispatch(A,Q){return this.get(A.origin),this[xY].dispatch(A,Q)}async close(){await this[xY].close(),this[DI].clear()}deactivate(){this[QF]=!1}activate(){this[QF]=!0}enableNetConnect(A){if(typeof A==="string"||typeof A==="function"||A instanceof RegExp)if(Array.isArray(this[YI]))this[YI].push(A);else this[YI]=[A];else if(typeof A>"u")this[YI]=!0;else throw new TL("Unsupported matcher. Must be one of String|Function|RegExp.")}disableNetConnect(){this[YI]=!1}get isMockActive(){return this[QF]}[AF](A,Q){this[DI].set(A,Q)}[IF](A){let Q=Object.assign({agent:this},this[BF]);return this[BF]&&this[BF].connections===1?new GH(A,Q):new NH(A,Q)}[HL](A){let Q=this[DI].get(A);if(Q)return Q;if(typeof A!=="string"){let B=this[IF]("http://localhost:9999");return this[AF](A,B),B}for(let[B,I]of Array.from(this[DI]))if(I&&typeof B!=="string"&&MH(B,A)){let E=this[IF](A);return this[AF](A,E),E[OY]=I[OY],E}}[UH](){return this[YI]}pendingInterceptors(){let A=this[DI];return Array.from(A.entries()).flatMap(([Q,B])=>B[OY].map((I)=>({...I,origin:Q}))).filter(({pending:Q})=>Q)}assertNoPendingInterceptors({pendingInterceptorsFormatter:A=new ZH}={}){let Q=this.pendingInterceptors();if(Q.length===0)return;let B=new VH("interceptor","interceptors").pluralize(Q.length);throw new WH(` +`,"latin1");if(Q!==null&&I!==Q)if(B[Y6])throw new iY;else process.emitWarning(new iY);if(A[WQ].timeout&&A[WQ].timeoutType===mF){if(A[WQ].timeout.refresh)A[WQ].timeout.refresh()}B[M0]()}destroy(A){let{socket:Q,client:B,abort:I}=this;if(Q[N0]=!1,A)QA(B[EB]<=1,"pipeline should only contain this request"),I(A)}}zT.exports=mHA});var qT=U((yLQ,RT)=>{var _I=M("node:assert"),{pipeline:iHA}=M("node:stream"),NA=$A(),{RequestContentLengthMismatchError:D6,RequestAbortedError:$T,SocketError:KZ,InformationalError:Z6}=TA(),{kUrl:v8,kReset:m8,kClient:dF,kRunning:d8,kPending:nHA,kQueue:j0,kPendingIdx:W6,kRunningIdx:XC,kError:wC,kSocket:bQ,kStrictContentLength:aHA,kOnError:X6,kMaxConcurrentStreams:jT,kHTTP2Session:UC,kResume:R0,kSize:oHA,kHTTPContext:sHA}=eA(),TE=Symbol("open streams"),LT,HT=!1,b8;try{b8=M("node:http2")}catch{b8={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:rHA,HTTP2_HEADER_METHOD:tHA,HTTP2_HEADER_PATH:eHA,HTTP2_HEADER_SCHEME:A2A,HTTP2_HEADER_CONTENT_LENGTH:Q2A,HTTP2_HEADER_EXPECT:B2A,HTTP2_HEADER_STATUS:I2A}}=b8;function C2A(A){let Q=[];for(let[B,I]of Object.entries(A))if(Array.isArray(I))for(let C of I)Q.push(Buffer.from(B),Buffer.from(C));else Q.push(Buffer.from(B),Buffer.from(I));return Q}async function E2A(A,Q){if(A[bQ]=Q,!HT)HT=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"});let B=b8.connect(A[v8],{createConnection:()=>Q,peerMaxConcurrentStreams:A[jT]});B[TE]=0,B[dF]=A,B[bQ]=Q,NA.addListener(B,"error",J2A),NA.addListener(B,"frameError",F2A),NA.addListener(B,"end",G2A),NA.addListener(B,"goaway",D2A),NA.addListener(B,"close",function(){let{[dF]:C}=this,{[bQ]:E}=C,Y=this[bQ][wC]||this[wC]||new KZ("closed",NA.getSocketInfo(E));if(C[UC]=null,C.destroyed){_I(C[nHA]===0);let J=C[j0].splice(C[XC]);for(let F=0;F{I=!0}),{version:"h2",defaultPipelining:1/0,write(...C){return W2A(A,...C)},resume(){Y2A(A)},destroy(C,E){if(I)queueMicrotask(E);else Q.destroy(C).on("close",E)},get destroyed(){return Q.destroyed},busy(){return!1}}}function Y2A(A){let Q=A[bQ];if(Q?.destroyed===!1)if(A[oHA]===0&&A[jT]===0)Q.unref(),A[UC].unref();else Q.ref(),A[UC].ref()}function J2A(A){_I(A.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[bQ][wC]=A,this[dF][X6](A)}function F2A(A,Q,B){if(B===0){let I=new Z6(`HTTP/2: "frameError" received - type ${A}, code ${Q}`);this[bQ][wC]=I,this[dF][X6](I)}}function G2A(){let A=new KZ("other side closed",NA.getSocketInfo(this[bQ]));this.destroy(A),NA.destroy(this[bQ],A)}function D2A(A){let Q=this[wC]||new KZ(`HTTP/2: "GOAWAY" frame received with code ${A}`,NA.getSocketInfo(this)),B=this[dF];if(B[bQ]=null,B[sHA]=null,this[UC]!=null)this[UC].destroy(Q),this[UC]=null;if(NA.destroy(this[bQ],Q),B[XC]{if(Q.aborted||Q.completed)return;if(O=O||new $T,NA.errorRequest(A,Q,O),W!=null)NA.destroy(W,O);NA.destroy(D,O),A[j0][A[XC]++]=null,A[R0]()};try{Q.onConnect(K)}catch(O){NA.errorRequest(A,Q,O)}if(Q.aborted)return!1;if(I==="CONNECT"){if(B.ref(),W=B.request(Z,{endStream:!1,signal:F}),W.id&&!W.pending)Q.onUpgrade(null,null,W),++B[TE],A[j0][A[XC]++]=null;else W.once("ready",()=>{Q.onUpgrade(null,null,W),++B[TE],A[j0][A[XC]++]=null});return W.once("close",()=>{if(B[TE]-=1,B[TE]===0)B.unref()}),!0}Z[eHA]=C,Z[A2A]="https";let z=I==="PUT"||I==="POST"||I==="PATCH";if(D&&typeof D.read==="function")D.read(0);let $=NA.bodyLength(D);if(NA.isFormDataLike(D)){LT??=xF().extractBody;let[O,k]=LT(D);Z["content-type"]=k,D=O.stream,$=O.length}if($==null)$=Q.contentLength;if($===0||!z)$=null;if(Z2A(I)&&$>0&&Q.contentLength!=null&&Q.contentLength!==$){if(A[aHA])return NA.errorRequest(A,Q,new D6),!1;process.emitWarning(new D6)}if($!=null)_I(D,"no body must not have content length"),Z[Q2A]=`${$}`;B.ref();let N=I==="GET"||I==="HEAD"||D===null;if(J)Z[B2A]="100-continue",W=B.request(Z,{endStream:N,signal:F}),W.once("continue",j);else W=B.request(Z,{endStream:N,signal:F}),j();return++B[TE],W.once("response",(O)=>{let{[I2A]:k,...g}=O;if(Q.onResponseStarted(),Q.aborted){let x=new $T;NA.errorRequest(A,Q,x),NA.destroy(W,x);return}if(Q.onHeaders(Number(k),C2A(g),W.resume.bind(W),"")===!1)W.pause();W.on("data",(x)=>{if(Q.onData(x)===!1)W.pause()})}),W.once("end",()=>{if(W.state?.state==null||W.state.state<6)Q.onComplete([]);if(B[TE]===0)B.unref();K(new Z6("HTTP/2: stream half-closed (remote)")),A[j0][A[XC]++]=null,A[W6]=A[XC],A[R0]()}),W.once("close",()=>{if(B[TE]-=1,B[TE]===0)B.unref()}),W.once("error",function(O){K(O)}),W.once("frameError",(O,k)=>{K(new Z6(`HTTP/2: "frameError" received - type ${O}, code ${k}`))}),!0;function j(){if(!D||$===0)MT(K,W,null,A,Q,A[bQ],$,z);else if(NA.isBuffer(D))MT(K,W,D,A,Q,A[bQ],$,z);else if(NA.isBlobLike(D))if(typeof D.stream==="function")NT(K,W,D.stream(),A,Q,A[bQ],$,z);else U2A(K,W,D,A,Q,A[bQ],$,z);else if(NA.isStream(D))X2A(K,A[bQ],z,W,D,A,Q,$);else if(NA.isIterable(D))NT(K,W,D,A,Q,A[bQ],$,z);else _I(!1)}}function MT(A,Q,B,I,C,E,Y,J){try{if(B!=null&&NA.isBuffer(B))_I(Y===B.byteLength,"buffer body must have content length"),Q.cork(),Q.write(B),Q.uncork(),Q.end(),C.onBodySent(B);if(!J)E[m8]=!0;C.onRequestSent(),I[R0]()}catch(F){A(F)}}function X2A(A,Q,B,I,C,E,Y,J){_I(J!==0||E[d8]===0,"stream body cannot be pipelined");let F=iHA(C,I,(D)=>{if(D)NA.destroy(F,D),A(D);else{if(NA.removeAllListeners(F),Y.onRequestSent(),!B)Q[m8]=!0;E[R0]()}});NA.addListener(F,"data",G);function G(D){Y.onBodySent(D)}}async function U2A(A,Q,B,I,C,E,Y,J){_I(Y===B.size,"blob body must have content length");try{if(Y!=null&&Y!==B.size)throw new D6;let F=Buffer.from(await B.arrayBuffer());if(Q.cork(),Q.write(F),Q.uncork(),Q.end(),C.onBodySent(F),C.onRequestSent(),!J)E[m8]=!0;I[R0]()}catch(F){A(F)}}async function NT(A,Q,B,I,C,E,Y,J){_I(Y!==0||I[d8]===0,"iterator body cannot be pipelined");let F=null;function G(){if(F){let Z=F;F=null,Z()}}let D=()=>new Promise((Z,W)=>{if(_I(F===null),E[wC])W(E[wC]);else F=Z});Q.on("close",G).on("drain",G);try{for await(let Z of B){if(E[wC])throw E[wC];let W=Q.write(Z);if(C.onBodySent(Z),!W)await D()}if(Q.end(),C.onRequestSent(),!J)E[m8]=!0;I[R0]()}catch(Z){A(Z)}finally{Q.off("close",G).off("drain",G)}}RT.exports=E2A});var c8=U((_LQ,kT)=>{var oC=$A(),{kBodyUsed:zZ}=eA(),w6=M("node:assert"),{InvalidArgumentError:w2A}=TA(),K2A=M("node:events"),z2A=[300,301,302,303,307,308],OT=Symbol("body");class U6{constructor(A){this[OT]=A,this[zZ]=!1}async*[Symbol.asyncIterator](){w6(!this[zZ],"disturbed"),this[zZ]=!0,yield*this[OT]}}class PT{constructor(A,Q,B,I){if(Q!=null&&(!Number.isInteger(Q)||Q<0))throw new w2A("maxRedirections must be a positive number");if(oC.validateHandler(I,B.method,B.upgrade),this.dispatch=A,this.location=null,this.abort=null,this.opts={...B,maxRedirections:0},this.maxRedirections=Q,this.handler=I,this.history=[],this.redirectionLimitReached=!1,oC.isStream(this.opts.body)){if(oC.bodyLength(this.opts.body)===0)this.opts.body.on("data",function(){w6(!1)});if(typeof this.opts.body.readableDidRead!=="boolean")this.opts.body[zZ]=!1,K2A.prototype.on.call(this.opts.body,"data",function(){this[zZ]=!0})}else if(this.opts.body&&typeof this.opts.body.pipeTo==="function")this.opts.body=new U6(this.opts.body);else if(this.opts.body&&typeof this.opts.body!=="string"&&!ArrayBuffer.isView(this.opts.body)&&oC.isIterable(this.opts.body))this.opts.body=new U6(this.opts.body)}onConnect(A){this.abort=A,this.handler.onConnect(A,{history:this.history})}onUpgrade(A,Q,B){this.handler.onUpgrade(A,Q,B)}onError(A){this.handler.onError(A)}onHeaders(A,Q,B,I){if(this.location=this.history.length>=this.maxRedirections||oC.isDisturbed(this.opts.body)?null:V2A(A,Q),this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){if(this.request)this.request.abort(Error("max redirects"));this.redirectionLimitReached=!0,this.abort(Error("max redirects"));return}if(this.opts.origin)this.history.push(new URL(this.opts.path,this.opts.origin));if(!this.location)return this.handler.onHeaders(A,Q,B,I);let{origin:C,pathname:E,search:Y}=oC.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),J=Y?`${E}${Y}`:E;if(this.opts.headers=$2A(this.opts.headers,A===303,this.opts.origin!==C),this.opts.path=J,this.opts.origin=C,this.opts.maxRedirections=0,this.opts.query=null,A===303&&this.opts.method!=="HEAD")this.opts.method="GET",this.opts.body=null}onData(A){if(this.location);else return this.handler.onData(A)}onComplete(A){if(this.location)this.location=null,this.abort=null,this.dispatch(this.opts,this);else this.handler.onComplete(A)}onBodySent(A){if(this.handler.onBodySent)this.handler.onBodySent(A)}}function V2A(A,Q){if(z2A.indexOf(A)===-1)return null;for(let B=0;B{var L2A=c8();function H2A({maxRedirections:A}){return(Q)=>{return function(I,C){let{maxRedirections:E=A}=I;if(!E)return Q(I,C);let Y=new L2A(Q,E,I,C);return I={...I,maxRedirections:0},Q(I,Y)}}}ST.exports=H2A});var lF=U((gLQ,cT)=>{var PE=M("node:assert"),xT=M("node:net"),M2A=M("node:http"),nY=$A(),{channels:cF}=jF(),N2A=Hq(),j2A=TF(),{InvalidArgumentError:KQ,InformationalError:R2A,ClientDestroyedError:q2A}=TA(),O2A=EZ(),{kUrl:sC,kServerName:q0,kClient:T2A,kBusy:K6,kConnect:P2A,kResuming:aY,kRunning:MZ,kPending:NZ,kSize:HZ,kQueue:KC,kConnected:k2A,kConnecting:uF,kNeedDrain:T0,kKeepAliveDefaultTimeout:yT,kHostHeader:S2A,kPendingIdx:zC,kRunningIdx:kE,kError:y2A,kPipelining:l8,kKeepAliveTimeoutValue:_2A,kMaxHeadersSize:f2A,kKeepAliveMaxTimeout:g2A,kKeepAliveTimeoutThreshold:h2A,kHeadersTimeout:x2A,kBodyTimeout:v2A,kStrictContentLength:b2A,kConnector:VZ,kMaxRedirections:m2A,kMaxRequests:z6,kCounter:d2A,kClose:c2A,kDestroy:u2A,kDispatch:l2A,kInterceptors:_T,kLocalAddress:$Z,kMaxResponseSize:p2A,kOnError:i2A,kHTTPContext:zQ,kMaxConcurrentStreams:n2A,kResume:LZ}=eA(),a2A=VT(),o2A=qT(),fT=!1,O0=Symbol("kClosedResolve"),gT=()=>{};function vT(A){return A[l8]??A[zQ]?.defaultPipelining??1}class bT extends j2A{constructor(A,{interceptors:Q,maxHeaderSize:B,headersTimeout:I,socketTimeout:C,requestTimeout:E,connectTimeout:Y,bodyTimeout:J,idleTimeout:F,keepAlive:G,keepAliveTimeout:D,maxKeepAliveTimeout:Z,keepAliveMaxTimeout:W,keepAliveTimeoutThreshold:X,socketPath:w,pipelining:K,tls:z,strictContentLength:$,maxCachedSessions:N,maxRedirections:j,connect:O,maxRequestsPerClient:k,localAddress:g,maxResponseSize:x,autoSelectFamily:dA,autoSelectFamilyAttemptTimeout:cA,maxConcurrentStreams:qQ,allowH2:IB}={}){super();if(G!==void 0)throw new KQ("unsupported keepAlive, use pipelining=0 instead");if(C!==void 0)throw new KQ("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(E!==void 0)throw new KQ("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(F!==void 0)throw new KQ("unsupported idleTimeout, use keepAliveTimeout instead");if(Z!==void 0)throw new KQ("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(B!=null&&!Number.isFinite(B))throw new KQ("invalid maxHeaderSize");if(w!=null&&typeof w!=="string")throw new KQ("invalid socketPath");if(Y!=null&&(!Number.isFinite(Y)||Y<0))throw new KQ("invalid connectTimeout");if(D!=null&&(!Number.isFinite(D)||D<=0))throw new KQ("invalid keepAliveTimeout");if(W!=null&&(!Number.isFinite(W)||W<=0))throw new KQ("invalid keepAliveMaxTimeout");if(X!=null&&!Number.isFinite(X))throw new KQ("invalid keepAliveTimeoutThreshold");if(I!=null&&(!Number.isInteger(I)||I<0))throw new KQ("headersTimeout must be a positive integer or zero");if(J!=null&&(!Number.isInteger(J)||J<0))throw new KQ("bodyTimeout must be a positive integer or zero");if(O!=null&&typeof O!=="function"&&typeof O!=="object")throw new KQ("connect must be a function or an object");if(j!=null&&(!Number.isInteger(j)||j<0))throw new KQ("maxRedirections must be a positive number");if(k!=null&&(!Number.isInteger(k)||k<0))throw new KQ("maxRequestsPerClient must be a positive number");if(g!=null&&(typeof g!=="string"||xT.isIP(g)===0))throw new KQ("localAddress must be valid string IP address");if(x!=null&&(!Number.isInteger(x)||x<-1))throw new KQ("maxResponseSize must be a positive number");if(cA!=null&&(!Number.isInteger(cA)||cA<-1))throw new KQ("autoSelectFamilyAttemptTimeout must be a positive number");if(IB!=null&&typeof IB!=="boolean")throw new KQ("allowH2 must be a valid boolean value");if(qQ!=null&&(typeof qQ!=="number"||qQ<1))throw new KQ("maxConcurrentStreams must be a positive integer, greater than 0");if(typeof O!=="function")O=O2A({...z,maxCachedSessions:N,allowH2:IB,socketPath:w,timeout:Y,...dA?{autoSelectFamily:dA,autoSelectFamilyAttemptTimeout:cA}:void 0,...O});if(Q?.Client&&Array.isArray(Q.Client)){if(this[_T]=Q.Client,!fT)fT=!0,process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"})}else this[_T]=[s2A({maxRedirections:j})];this[sC]=nY.parseOrigin(A),this[VZ]=O,this[l8]=K!=null?K:1,this[f2A]=B||M2A.maxHeaderSize,this[yT]=D==null?4000:D,this[g2A]=W==null?600000:W,this[h2A]=X==null?2000:X,this[_2A]=this[yT],this[q0]=null,this[$Z]=g!=null?g:null,this[aY]=0,this[T0]=0,this[S2A]=`host: ${this[sC].hostname}${this[sC].port?`:${this[sC].port}`:""}\r +`,this[v2A]=J!=null?J:300000,this[x2A]=I!=null?I:300000,this[b2A]=$==null?!0:$,this[m2A]=j,this[z6]=k,this[O0]=null,this[p2A]=x>-1?x:-1,this[n2A]=qQ!=null?qQ:100,this[zQ]=null,this[KC]=[],this[kE]=0,this[zC]=0,this[LZ]=(ZQ)=>V6(this,ZQ),this[i2A]=(ZQ)=>mT(this,ZQ)}get pipelining(){return this[l8]}set pipelining(A){this[l8]=A,this[LZ](!0)}get[NZ](){return this[KC].length-this[zC]}get[MZ](){return this[zC]-this[kE]}get[HZ](){return this[KC].length-this[kE]}get[k2A](){return!!this[zQ]&&!this[uF]&&!this[zQ].destroyed}get[K6](){return Boolean(this[zQ]?.busy(null)||this[HZ]>=(vT(this)||1)||this[NZ]>0)}[P2A](A){dT(this),this.once("connect",A)}[l2A](A,Q){let B=A.origin||this[sC].origin,I=new N2A(B,A,Q);if(this[KC].push(I),this[aY]);else if(nY.bodyLength(I.body)==null&&nY.isIterable(I.body))this[aY]=1,queueMicrotask(()=>V6(this));else this[LZ](!0);if(this[aY]&&this[T0]!==2&&this[K6])this[T0]=2;return this[T0]<2}async[c2A](){return new Promise((A)=>{if(this[HZ])this[O0]=A;else A(null)})}async[u2A](A){return new Promise((Q)=>{let B=this[KC].splice(this[zC]);for(let C=0;C{if(this[O0])this[O0](),this[O0]=null;Q(null)};if(this[zQ])this[zQ].destroy(A,I),this[zQ]=null;else queueMicrotask(I);this[LZ]()})}}var s2A=u8();function mT(A,Q){if(A[MZ]===0&&Q.code!=="UND_ERR_INFO"&&Q.code!=="UND_ERR_SOCKET"){PE(A[zC]===A[kE]);let B=A[KC].splice(A[kE]);for(let I=0;I{A[VZ]({host:Q,hostname:B,protocol:I,port:C,servername:A[q0],localAddress:A[$Z]},(F,G)=>{if(F)J(F);else Y(G)})});if(A.destroyed){nY.destroy(E.on("error",gT),new q2A);return}PE(E);try{A[zQ]=E.alpnProtocol==="h2"?await o2A(A,E):await a2A(A,E)}catch(Y){throw E.destroy().on("error",gT),Y}if(A[uF]=!1,E[d2A]=0,E[z6]=A[z6],E[T2A]=A,E[y2A]=null,cF.connected.hasSubscribers)cF.connected.publish({connectParams:{host:Q,hostname:B,protocol:I,port:C,version:A[zQ]?.version,servername:A[q0],localAddress:A[$Z]},connector:A[VZ],socket:E});A.emit("connect",A[sC],[A])}catch(E){if(A.destroyed)return;if(A[uF]=!1,cF.connectError.hasSubscribers)cF.connectError.publish({connectParams:{host:Q,hostname:B,protocol:I,port:C,version:A[zQ]?.version,servername:A[q0],localAddress:A[$Z]},connector:A[VZ],error:E});if(E.code==="ERR_TLS_CERT_ALTNAME_INVALID"){PE(A[MZ]===0);while(A[NZ]>0&&A[KC][A[zC]].servername===A[q0]){let Y=A[KC][A[zC]++];nY.errorRequest(A,Y,E)}}else mT(A,E);A.emit("connectionError",A[sC],[A],E)}A[LZ]()}function hT(A){A[T0]=0,A.emit("drain",A[sC],[A])}function V6(A,Q){if(A[aY]===2)return;if(A[aY]=2,r2A(A,Q),A[aY]=0,A[kE]>256)A[KC].splice(0,A[kE]),A[zC]-=A[kE],A[kE]=0}function r2A(A,Q){while(!0){if(A.destroyed){PE(A[NZ]===0);return}if(A[O0]&&!A[HZ]){A[O0](),A[O0]=null;return}if(A[zQ])A[zQ].resume();if(A[K6])A[T0]=2;else if(A[T0]===2){if(Q)A[T0]=1,queueMicrotask(()=>hT(A));else hT(A);continue}if(A[NZ]===0)return;if(A[MZ]>=(vT(A)||1))return;let B=A[KC][A[zC]];if(A[sC].protocol==="https:"&&A[q0]!==B.servername){if(A[MZ]>0)return;A[q0]=B.servername,A[zQ]?.destroy(new R2A("servername changed"),()=>{A[zQ]=null,V6(A)})}if(A[uF])return;if(!A[zQ]){dT(A);return}if(A[zQ].destroyed)return;if(A[zQ].busy(B))return;if(!B.aborted&&A[zQ].write(B))A[zC]++;else A[KC].splice(A[zC],1)}}cT.exports=bT});var L6=U((hLQ,uT)=>{class $6{constructor(){this.bottom=0,this.top=0,this.list=Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(A){this.list[this.top]=A,this.top=this.top+1&2047}shift(){let A=this.list[this.bottom];if(A===void 0)return null;return this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,A}}uT.exports=class{constructor(){this.head=this.tail=new $6}isEmpty(){return this.head.isEmpty()}push(Q){if(this.head.isFull())this.head=this.head.next=new $6;this.head.push(Q)}shift(){let Q=this.tail,B=Q.shift();if(Q.isEmpty()&&Q.next!==null)this.tail=Q.next;return B}}});var iT=U((xLQ,pT)=>{var{kFree:t2A,kConnected:e2A,kPending:AMA,kQueued:QMA,kRunning:BMA,kSize:IMA}=eA(),oY=Symbol("pool");class lT{constructor(A){this[oY]=A}get connected(){return this[oY][e2A]}get free(){return this[oY][t2A]}get pending(){return this[oY][AMA]}get queued(){return this[oY][QMA]}get running(){return this[oY][BMA]}get size(){return this[oY][IMA]}}pT.exports=lT});var R6=U((vLQ,IP)=>{var CMA=TF(),EMA=L6(),{kConnected:H6,kSize:nT,kRunning:aT,kPending:oT,kQueued:jZ,kBusy:YMA,kFree:JMA,kUrl:FMA,kClose:GMA,kDestroy:DMA,kDispatch:ZMA}=eA(),WMA=iT(),uB=Symbol("clients"),HB=Symbol("needDrain"),RZ=Symbol("queue"),M6=Symbol("closed resolve"),N6=Symbol("onDrain"),sT=Symbol("onConnect"),rT=Symbol("onDisconnect"),tT=Symbol("onConnectionError"),j6=Symbol("get dispatcher"),AP=Symbol("add client"),QP=Symbol("remove client"),eT=Symbol("stats");class BP extends CMA{constructor(){super();this[RZ]=new EMA,this[uB]=[],this[jZ]=0;let A=this;this[N6]=function(B,I){let C=A[RZ],E=!1;while(!E){let Y=C.shift();if(!Y)break;A[jZ]--,E=!this.dispatch(Y.opts,Y.handler)}if(this[HB]=E,!this[HB]&&A[HB])A[HB]=!1,A.emit("drain",B,[A,...I]);if(A[M6]&&C.isEmpty())Promise.all(A[uB].map((Y)=>Y.close())).then(A[M6])},this[sT]=(Q,B)=>{A.emit("connect",Q,[A,...B])},this[rT]=(Q,B,I)=>{A.emit("disconnect",Q,[A,...B],I)},this[tT]=(Q,B,I)=>{A.emit("connectionError",Q,[A,...B],I)},this[eT]=new WMA(this)}get[YMA](){return this[HB]}get[H6](){return this[uB].filter((A)=>A[H6]).length}get[JMA](){return this[uB].filter((A)=>A[H6]&&!A[HB]).length}get[oT](){let A=this[jZ];for(let{[oT]:Q}of this[uB])A+=Q;return A}get[aT](){let A=0;for(let{[aT]:Q}of this[uB])A+=Q;return A}get[nT](){let A=this[jZ];for(let{[nT]:Q}of this[uB])A+=Q;return A}get stats(){return this[eT]}async[GMA](){if(this[RZ].isEmpty())await Promise.all(this[uB].map((A)=>A.close()));else await new Promise((A)=>{this[M6]=A})}async[DMA](A){while(!0){let Q=this[RZ].shift();if(!Q)break;Q.handler.onError(A)}await Promise.all(this[uB].map((Q)=>Q.destroy(A)))}[ZMA](A,Q){let B=this[j6]();if(!B)this[HB]=!0,this[RZ].push({opts:A,handler:Q}),this[jZ]++;else if(!B.dispatch(A,Q))B[HB]=!0,this[HB]=!this[j6]();return!this[HB]}[AP](A){if(A.on("drain",this[N6]).on("connect",this[sT]).on("disconnect",this[rT]).on("connectionError",this[tT]),this[uB].push(A),this[HB])queueMicrotask(()=>{if(this[HB])this[N6](A[FMA],[this,A])});return this}[QP](A){A.close(()=>{let Q=this[uB].indexOf(A);if(Q!==-1)this[uB].splice(Q,1)}),this[HB]=this[uB].some((Q)=>!Q[HB]&&Q.closed!==!0&&Q.destroyed!==!0)}}IP.exports={PoolBase:BP,kClients:uB,kNeedDrain:HB,kAddClient:AP,kRemoveClient:QP,kGetDispatcher:j6}});var pF=U((bLQ,FP)=>{var{PoolBase:XMA,kClients:p8,kNeedDrain:UMA,kAddClient:wMA,kGetDispatcher:KMA}=R6(),zMA=lF(),{InvalidArgumentError:q6}=TA(),CP=$A(),{kUrl:EP,kInterceptors:VMA}=eA(),$MA=EZ(),O6=Symbol("options"),T6=Symbol("connections"),YP=Symbol("factory");function LMA(A,Q){return new zMA(A,Q)}class JP extends XMA{constructor(A,{connections:Q,factory:B=LMA,connect:I,connectTimeout:C,tls:E,maxCachedSessions:Y,socketPath:J,autoSelectFamily:F,autoSelectFamilyAttemptTimeout:G,allowH2:D,...Z}={}){super();if(Q!=null&&(!Number.isFinite(Q)||Q<0))throw new q6("invalid connections");if(typeof B!=="function")throw new q6("factory must be a function.");if(I!=null&&typeof I!=="function"&&typeof I!=="object")throw new q6("connect must be a function or an object");if(typeof I!=="function")I=$MA({...E,maxCachedSessions:Y,allowH2:D,socketPath:J,timeout:C,...F?{autoSelectFamily:F,autoSelectFamilyAttemptTimeout:G}:void 0,...I});this[VMA]=Z.interceptors?.Pool&&Array.isArray(Z.interceptors.Pool)?Z.interceptors.Pool:[],this[T6]=Q||null,this[EP]=CP.parseOrigin(A),this[O6]={...CP.deepClone(Z),connect:I,allowH2:D},this[O6].interceptors=Z.interceptors?{...Z.interceptors}:void 0,this[YP]=B,this.on("connectionError",(W,X,w)=>{for(let K of X){let z=this[p8].indexOf(K);if(z!==-1)this[p8].splice(z,1)}})}[KMA](){for(let A of this[p8])if(!A[UMA])return A;if(!this[T6]||this[p8].length{var{BalancedPoolMissingUpstreamError:HMA,InvalidArgumentError:MMA}=TA(),{PoolBase:NMA,kClients:YB,kNeedDrain:qZ,kAddClient:jMA,kRemoveClient:RMA,kGetDispatcher:qMA}=R6(),OMA=pF(),{kUrl:P6,kInterceptors:TMA}=eA(),{parseOrigin:GP}=$A(),DP=Symbol("factory"),i8=Symbol("options"),ZP=Symbol("kGreatestCommonDivisor"),sY=Symbol("kCurrentWeight"),rY=Symbol("kIndex"),fI=Symbol("kWeight"),n8=Symbol("kMaxWeightPerServer"),a8=Symbol("kErrorPenalty");function PMA(A,Q){if(A===0)return Q;while(Q!==0){let B=Q;Q=A%Q,A=B}return A}function kMA(A,Q){return new OMA(A,Q)}class WP extends NMA{constructor(A=[],{factory:Q=kMA,...B}={}){super();if(this[i8]=B,this[rY]=-1,this[sY]=0,this[n8]=this[i8].maxWeightPerServer||100,this[a8]=this[i8].errorPenalty||15,!Array.isArray(A))A=[A];if(typeof Q!=="function")throw new MMA("factory must be a function.");this[TMA]=B.interceptors?.BalancedPool&&Array.isArray(B.interceptors.BalancedPool)?B.interceptors.BalancedPool:[],this[DP]=Q;for(let I of A)this.addUpstream(I);this._updateBalancedPoolStats()}addUpstream(A){let Q=GP(A).origin;if(this[YB].find((I)=>I[P6].origin===Q&&I.closed!==!0&&I.destroyed!==!0))return this;let B=this[DP](Q,Object.assign({},this[i8]));this[jMA](B),B.on("connect",()=>{B[fI]=Math.min(this[n8],B[fI]+this[a8])}),B.on("connectionError",()=>{B[fI]=Math.max(1,B[fI]-this[a8]),this._updateBalancedPoolStats()}),B.on("disconnect",(...I)=>{let C=I[2];if(C&&C.code==="UND_ERR_SOCKET")B[fI]=Math.max(1,B[fI]-this[a8]),this._updateBalancedPoolStats()});for(let I of this[YB])I[fI]=this[n8];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let A=0;for(let Q=0;QI[P6].origin===Q&&I.closed!==!0&&I.destroyed!==!0);if(B)this[RMA](B);return this}get upstreams(){return this[YB].filter((A)=>A.closed!==!0&&A.destroyed!==!0).map((A)=>A[P6].origin)}[qMA](){if(this[YB].length===0)throw new HMA;if(!this[YB].find((C)=>!C[qZ]&&C.closed!==!0&&C.destroyed!==!0))return;if(this[YB].map((C)=>C[qZ]).reduce((C,E)=>C&&E,!0))return;let B=0,I=this[YB].findIndex((C)=>!C[qZ]);while(B++this[YB][I][fI]&&!C[qZ])I=this[rY];if(this[rY]===0){if(this[sY]=this[sY]-this[ZP],this[sY]<=0)this[sY]=this[n8]}if(C[fI]>=this[sY]&&!C[qZ])return C}return this[sY]=this[YB][I][fI],this[rY]=I,this[YB][I]}}XP.exports=WP});var iF=U((dLQ,MP)=>{var{InvalidArgumentError:o8}=TA(),{kClients:P0,kRunning:wP,kClose:SMA,kDestroy:yMA,kDispatch:_MA,kInterceptors:fMA}=eA(),gMA=TF(),hMA=pF(),xMA=lF(),vMA=$A(),bMA=u8(),KP=Symbol("onConnect"),zP=Symbol("onDisconnect"),VP=Symbol("onConnectionError"),mMA=Symbol("maxRedirections"),$P=Symbol("onDrain"),LP=Symbol("factory"),k6=Symbol("options");function dMA(A,Q){return Q&&Q.connections===1?new xMA(A,Q):new hMA(A,Q)}class HP extends gMA{constructor({factory:A=dMA,maxRedirections:Q=0,connect:B,...I}={}){super();if(typeof A!=="function")throw new o8("factory must be a function.");if(B!=null&&typeof B!=="function"&&typeof B!=="object")throw new o8("connect must be a function or an object");if(!Number.isInteger(Q)||Q<0)throw new o8("maxRedirections must be a positive number");if(B&&typeof B!=="function")B={...B};this[fMA]=I.interceptors?.Agent&&Array.isArray(I.interceptors.Agent)?I.interceptors.Agent:[bMA({maxRedirections:Q})],this[k6]={...vMA.deepClone(I),connect:B},this[k6].interceptors=I.interceptors?{...I.interceptors}:void 0,this[mMA]=Q,this[LP]=A,this[P0]=new Map,this[$P]=(C,E)=>{this.emit("drain",C,[this,...E])},this[KP]=(C,E)=>{this.emit("connect",C,[this,...E])},this[zP]=(C,E,Y)=>{this.emit("disconnect",C,[this,...E],Y)},this[VP]=(C,E,Y)=>{this.emit("connectionError",C,[this,...E],Y)}}get[wP](){let A=0;for(let Q of this[P0].values())A+=Q[wP];return A}[_MA](A,Q){let B;if(A.origin&&(typeof A.origin==="string"||A.origin instanceof URL))B=String(A.origin);else throw new o8("opts.origin must be a non-empty string or URL.");let I=this[P0].get(B);if(!I)I=this[LP](A.origin,this[k6]).on("drain",this[$P]).on("connect",this[KP]).on("disconnect",this[zP]).on("connectionError",this[VP]),this[P0].set(B,I);return I.dispatch(A,Q)}async[SMA](){let A=[];for(let Q of this[P0].values())A.push(Q.close());this[P0].clear(),await Promise.all(A)}async[yMA](A){let Q=[];for(let B of this[P0].values())Q.push(B.destroy(A));this[P0].clear(),await Promise.all(Q)}}MP.exports=HP});var _6=U((cLQ,gP)=>{var{kProxy:S6,kClose:TP,kDestroy:PP,kDispatch:NP,kInterceptors:cMA}=eA(),{URL:tY}=M("node:url"),uMA=iF(),kP=pF(),SP=TF(),{InvalidArgumentError:nF,RequestAbortedError:lMA,SecureProxyConnectionError:pMA}=TA(),jP=EZ(),yP=lF(),s8=Symbol("proxy agent"),r8=Symbol("proxy client"),k0=Symbol("proxy headers"),y6=Symbol("request tls settings"),RP=Symbol("proxy tls settings"),qP=Symbol("connect endpoint function"),OP=Symbol("tunnel proxy");function iMA(A){return A==="https:"?443:80}function nMA(A,Q){return new kP(A,Q)}var aMA=()=>{};function oMA(A,Q){if(Q.connections===1)return new yP(A,Q);return new kP(A,Q)}class _P extends SP{#A;constructor(A,{headers:Q={},connect:B,factory:I}){super();if(!A)throw new nF("Proxy URL is mandatory");if(this[k0]=Q,I)this.#A=I(A,{connect:B});else this.#A=new yP(A,{connect:B})}[NP](A,Q){let B=Q.onHeaders;Q.onHeaders=function(Y,J,F){if(Y===407){if(typeof Q.onError==="function")Q.onError(new nF("Proxy Authentication Required (407)"));return}if(B)B.call(this,Y,J,F)};let{origin:I,path:C="/",headers:E={}}=A;if(A.path=I+C,!("host"in E)&&!("Host"in E)){let{host:Y}=new tY(I);E.host=Y}return A.headers={...this[k0],...E},this.#A[NP](A,Q)}async[TP](){return this.#A.close()}async[PP](A){return this.#A.destroy(A)}}class fP extends SP{constructor(A){super();if(!A||typeof A==="object"&&!(A instanceof tY)&&!A.uri)throw new nF("Proxy uri is mandatory");let{clientFactory:Q=nMA}=A;if(typeof Q!=="function")throw new nF("Proxy opts.clientFactory must be a function.");let{proxyTunnel:B=!0}=A,I=this.#A(A),{href:C,origin:E,port:Y,protocol:J,username:F,password:G,hostname:D}=I;if(this[S6]={uri:C,protocol:J},this[cMA]=A.interceptors?.ProxyAgent&&Array.isArray(A.interceptors.ProxyAgent)?A.interceptors.ProxyAgent:[],this[y6]=A.requestTls,this[RP]=A.proxyTls,this[k0]=A.headers||{},this[OP]=B,A.auth&&A.token)throw new nF("opts.auth cannot be used in combination with opts.token");else if(A.auth)this[k0]["proxy-authorization"]=`Basic ${A.auth}`;else if(A.token)this[k0]["proxy-authorization"]=A.token;else if(F&&G)this[k0]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(F)}:${decodeURIComponent(G)}`).toString("base64")}`;let Z=jP({...A.proxyTls});this[qP]=jP({...A.requestTls});let W=A.factory||oMA,X=(w,K)=>{let{protocol:z}=new tY(w);if(!this[OP]&&z==="http:"&&this[S6].protocol==="http:")return new _P(this[S6].uri,{headers:this[k0],connect:Z,factory:W});return W(w,K)};this[r8]=Q(I,{connect:Z}),this[s8]=new uMA({...A,factory:X,connect:async(w,K)=>{let z=w.host;if(!w.port)z+=`:${iMA(w.protocol)}`;try{let{socket:$,statusCode:N}=await this[r8].connect({origin:E,port:Y,path:z,signal:w.signal,headers:{...this[k0],host:w.host},servername:this[RP]?.servername||D});if(N!==200)$.on("error",aMA).destroy(),K(new lMA(`Proxy response (${N}) !== 200 when HTTP Tunneling`));if(w.protocol!=="https:"){K(null,$);return}let j;if(this[y6])j=this[y6].servername;else j=w.servername;this[qP]({...w,servername:j,httpSocket:$},K)}catch($){if($.code==="ERR_TLS_CERT_ALTNAME_INVALID")K(new pMA($));else K($)}}})}dispatch(A,Q){let B=sMA(A.headers);if(rMA(B),B&&!("host"in B)&&!("Host"in B)){let{host:I}=new tY(A.origin);B.host=I}return this[s8].dispatch({...A,headers:B},Q)}#A(A){if(typeof A==="string")return new tY(A);else if(A instanceof tY)return A;else return new tY(A.uri)}async[TP](){await this[s8].close(),await this[r8].close()}async[PP](){await this[s8].destroy(),await this[r8].destroy()}}function sMA(A){if(Array.isArray(A)){let Q={};for(let B=0;BB.toLowerCase()==="proxy-authorization"))throw new nF("Proxy-Authorization should be sent in ProxyAgent constructor")}gP.exports=fP});var cP=U((uLQ,dP)=>{var tMA=TF(),{kClose:eMA,kDestroy:ANA,kClosed:hP,kDestroyed:xP,kDispatch:QNA,kNoProxyAgent:OZ,kHttpProxyAgent:S0,kHttpsProxyAgent:eY}=eA(),vP=_6(),BNA=iF(),INA={"http:":80,"https:":443},bP=!1;class mP extends tMA{#A=null;#Q=null;#C=null;constructor(A={}){super();if(this.#C=A,!bP)bP=!0,process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"});let{httpProxy:Q,httpsProxy:B,noProxy:I,...C}=A;this[OZ]=new BNA(C);let E=Q??process.env.http_proxy??process.env.HTTP_PROXY;if(E)this[S0]=new vP({...C,uri:E});else this[S0]=this[OZ];let Y=B??process.env.https_proxy??process.env.HTTPS_PROXY;if(Y)this[eY]=new vP({...C,uri:Y});else this[eY]=this[S0];this.#E()}[QNA](A,Q){let B=new URL(A.origin);return this.#B(B).dispatch(A,Q)}async[eMA](){if(await this[OZ].close(),!this[S0][hP])await this[S0].close();if(!this[eY][hP])await this[eY].close()}async[ANA](A){if(await this[OZ].destroy(A),!this[S0][xP])await this[S0].destroy(A);if(!this[eY][xP])await this[eY].destroy(A)}#B(A){let{protocol:Q,host:B,port:I}=A;if(B=B.replace(/:\d*$/,"").toLowerCase(),I=Number.parseInt(I,10)||INA[Q]||0,!this.#I(B,I))return this[OZ];if(Q==="https:")return this[eY];return this[S0]}#I(A,Q){if(this.#Y)this.#E();if(this.#Q.length===0)return!0;if(this.#A==="*")return!1;for(let B=0;B{var aF=M("node:assert"),{kRetryHandlerDefaultRetry:uP}=eA(),{RequestRetryError:TZ}=TA(),{isDisturbed:lP,parseHeaders:CNA,parseRangeHeader:pP,wrapRequestBody:ENA}=$A();function YNA(A){let Q=Date.now();return new Date(A).getTime()-Q}class f6{constructor(A,Q){let{retryOptions:B,...I}=A,{retry:C,maxRetries:E,maxTimeout:Y,minTimeout:J,timeoutFactor:F,methods:G,errorCodes:D,retryAfter:Z,statusCodes:W}=B??{};this.dispatch=Q.dispatch,this.handler=Q.handler,this.opts={...I,body:ENA(A.body)},this.abort=null,this.aborted=!1,this.retryOpts={retry:C??f6[uP],retryAfter:Z??!0,maxTimeout:Y??30000,minTimeout:J??500,timeoutFactor:F??2,maxRetries:E??5,methods:G??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:W??[500,502,503,504,429],errorCodes:D??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]},this.retryCount=0,this.retryCountCheckpoint=0,this.start=0,this.end=null,this.etag=null,this.resume=null,this.handler.onConnect((X)=>{if(this.aborted=!0,this.abort)this.abort(X);else this.reason=X})}onRequestSent(){if(this.handler.onRequestSent)this.handler.onRequestSent()}onUpgrade(A,Q,B){if(this.handler.onUpgrade)this.handler.onUpgrade(A,Q,B)}onConnect(A){if(this.aborted)A(this.reason);else this.abort=A}onBodySent(A){if(this.handler.onBodySent)return this.handler.onBodySent(A)}static[uP](A,{state:Q,opts:B},I){let{statusCode:C,code:E,headers:Y}=A,{method:J,retryOptions:F}=B,{maxRetries:G,minTimeout:D,maxTimeout:Z,timeoutFactor:W,statusCodes:X,errorCodes:w,methods:K}=F,{counter:z}=Q;if(E&&E!=="UND_ERR_REQ_RETRY"&&!w.includes(E)){I(A);return}if(Array.isArray(K)&&!K.includes(J)){I(A);return}if(C!=null&&Array.isArray(X)&&!X.includes(C)){I(A);return}if(z>G){I(A);return}let $=Y?.["retry-after"];if($)$=Number($),$=Number.isNaN($)?YNA($):$*1000;let N=$>0?Math.min($,Z):Math.min(D*W**(z-1),Z);setTimeout(()=>I(null),N)}onHeaders(A,Q,B,I){let C=CNA(Q);if(this.retryCount+=1,A>=300)if(this.retryOpts.statusCodes.includes(A)===!1)return this.handler.onHeaders(A,Q,B,I);else return this.abort(new TZ("Request failed",A,{headers:C,data:{count:this.retryCount}})),!1;if(this.resume!=null){if(this.resume=null,A!==206&&(this.start>0||A!==200))return this.abort(new TZ("server does not support the range header and the payload was partially consumed",A,{headers:C,data:{count:this.retryCount}})),!1;let Y=pP(C["content-range"]);if(!Y)return this.abort(new TZ("Content-Range mismatch",A,{headers:C,data:{count:this.retryCount}})),!1;if(this.etag!=null&&this.etag!==C.etag)return this.abort(new TZ("ETag mismatch",A,{headers:C,data:{count:this.retryCount}})),!1;let{start:J,size:F,end:G=F-1}=Y;return aF(this.start===J,"content-range mismatch"),aF(this.end==null||this.end===G,"content-range mismatch"),this.resume=B,!0}if(this.end==null){if(A===206){let Y=pP(C["content-range"]);if(Y==null)return this.handler.onHeaders(A,Q,B,I);let{start:J,size:F,end:G=F-1}=Y;aF(J!=null&&Number.isFinite(J),"content-range mismatch"),aF(G!=null&&Number.isFinite(G),"invalid content-length"),this.start=J,this.end=G}if(this.end==null){let Y=C["content-length"];this.end=Y!=null?Number(Y)-1:null}if(aF(Number.isFinite(this.start)),aF(this.end==null||Number.isFinite(this.end),"invalid content-length"),this.resume=B,this.etag=C.etag!=null?C.etag:null,this.etag!=null&&this.etag.startsWith("W/"))this.etag=null;return this.handler.onHeaders(A,Q,B,I)}let E=new TZ("Request failed",A,{headers:C,data:{count:this.retryCount}});return this.abort(E),!1}onData(A){return this.start+=A.length,this.handler.onData(A)}onComplete(A){return this.retryCount=0,this.handler.onComplete(A)}onError(A){if(this.aborted||lP(this.opts.body))return this.handler.onError(A);if(this.retryCount-this.retryCountCheckpoint>0)this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint);else this.retryCount+=1;this.retryOpts.retry(A,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},Q.bind(this));function Q(B){if(B!=null||this.aborted||lP(this.opts.body))return this.handler.onError(B);if(this.start!==0){let I={range:`bytes=${this.start}-${this.end??""}`};if(this.etag!=null)I["if-match"]=this.etag;this.opts={...this.opts,headers:{...this.opts.headers,...I}}}try{this.retryCountCheckpoint=this.retryCount,this.dispatch(this.opts,this)}catch(I){this.handler.onError(I)}}}}iP.exports=f6});var oP=U((pLQ,aP)=>{var JNA=IZ(),FNA=t8();class nP extends JNA{#A=null;#Q=null;constructor(A,Q={}){super(Q);this.#A=A,this.#Q=Q}dispatch(A,Q){let B=new FNA({...A,retryOptions:this.#Q},{dispatch:this.#A.dispatch.bind(this.#A),handler:Q});return this.#A.dispatch(A,B)}close(){return this.#A.close()}destroy(){return this.#A.destroy()}}aP.exports=nP});var b6=U((iLQ,Ek)=>{var Ak=M("node:assert"),{Readable:GNA}=M("node:stream"),{RequestAbortedError:Qk,NotSupportedError:DNA,InvalidArgumentError:ZNA,AbortError:g6}=TA(),Bk=$A(),{ReadableStreamFrom:WNA}=$A(),EI=Symbol("kConsume"),PZ=Symbol("kReading"),y0=Symbol("kBody"),sP=Symbol("kAbort"),Ik=Symbol("kContentType"),rP=Symbol("kContentLength"),XNA=()=>{};class Ck extends GNA{constructor({resume:A,abort:Q,contentType:B="",contentLength:I,highWaterMark:C=65536}){super({autoDestroy:!0,read:A,highWaterMark:C});this._readableState.dataEmitted=!1,this[sP]=Q,this[EI]=null,this[y0]=null,this[Ik]=B,this[rP]=I,this[PZ]=!1}destroy(A){if(!A&&!this._readableState.endEmitted)A=new Qk;if(A)this[sP]();return super.destroy(A)}_destroy(A,Q){if(!this[PZ])setImmediate(()=>{Q(A)});else Q(A)}on(A,...Q){if(A==="data"||A==="readable")this[PZ]=!0;return super.on(A,...Q)}addListener(A,...Q){return this.on(A,...Q)}off(A,...Q){let B=super.off(A,...Q);if(A==="data"||A==="readable")this[PZ]=this.listenerCount("data")>0||this.listenerCount("readable")>0;return B}removeListener(A,...Q){return this.off(A,...Q)}push(A){if(this[EI]&&A!==null)return x6(this[EI],A),this[PZ]?super.push(A):!0;return super.push(A)}async text(){return kZ(this,"text")}async json(){return kZ(this,"json")}async blob(){return kZ(this,"blob")}async bytes(){return kZ(this,"bytes")}async arrayBuffer(){return kZ(this,"arrayBuffer")}async formData(){throw new DNA}get bodyUsed(){return Bk.isDisturbed(this)}get body(){if(!this[y0]){if(this[y0]=WNA(this),this[EI])this[y0].getReader(),Ak(this[y0].locked)}return this[y0]}async dump(A){let Q=Number.isFinite(A?.limit)?A.limit:131072,B=A?.signal;if(B!=null&&(typeof B!=="object"||!("aborted"in B)))throw new ZNA("signal must be an AbortSignal");if(B?.throwIfAborted(),this._readableState.closeEmitted)return null;return await new Promise((I,C)=>{if(this[rP]>Q)this.destroy(new g6);let E=()=>{this.destroy(B.reason??new g6)};B?.addEventListener("abort",E),this.on("close",function(){if(B?.removeEventListener("abort",E),B?.aborted)C(B.reason??new g6);else I(null)}).on("error",XNA).on("data",function(Y){if(Q-=Y.length,Q<=0)this.destroy()}).resume()})}}function UNA(A){return A[y0]&&A[y0].locked===!0||A[EI]}function wNA(A){return Bk.isDisturbed(A)||UNA(A)}async function kZ(A,Q){return Ak(!A[EI]),new Promise((B,I)=>{if(wNA(A)){let C=A._readableState;if(C.destroyed&&C.closeEmitted===!1)A.on("error",(E)=>{I(E)}).on("close",()=>{I(TypeError("unusable"))});else I(C.errored??TypeError("unusable"))}else queueMicrotask(()=>{A[EI]={type:Q,stream:A,resolve:B,reject:I,length:0,body:[]},A.on("error",function(C){v6(this[EI],C)}).on("close",function(){if(this[EI].body!==null)v6(this[EI],new Qk)}),KNA(A[EI])})})}function KNA(A){if(A.body===null)return;let{_readableState:Q}=A.stream;if(Q.bufferIndex){let B=Q.bufferIndex,I=Q.buffer.length;for(let C=B;C2&&B[0]===239&&B[1]===187&&B[2]===191?3:0;return B.utf8Slice(C,I)}function tP(A,Q){if(A.length===0||Q===0)return new Uint8Array(0);if(A.length===1)return new Uint8Array(A[0]);let B=new Uint8Array(Buffer.allocUnsafeSlow(Q).buffer),I=0;for(let C=0;C{var zNA=M("node:assert"),{ResponseStatusCodeError:Yk}=TA(),{chunksDecode:Jk}=b6();async function VNA({callback:A,body:Q,contentType:B,statusCode:I,statusMessage:C,headers:E}){zNA(Q);let Y=[],J=0;try{for await(let Z of Q)if(Y.push(Z),J+=Z.length,J>131072){Y=[],J=0;break}}catch{Y=[],J=0}let F=`Response status code ${I}${C?`: ${C}`:""}`;if(I===204||!B||!J){queueMicrotask(()=>A(new Yk(F,I,E)));return}let G=Error.stackTraceLimit;Error.stackTraceLimit=0;let D;try{if(Fk(B))D=JSON.parse(Jk(Y,J));else if(Gk(B))D=Jk(Y,J)}catch{}finally{Error.stackTraceLimit=G}queueMicrotask(()=>A(new Yk(F,I,E,D)))}var Fk=(A)=>{return A.length>15&&A[11]==="/"&&A[0]==="a"&&A[1]==="p"&&A[2]==="p"&&A[3]==="l"&&A[4]==="i"&&A[5]==="c"&&A[6]==="a"&&A[7]==="t"&&A[8]==="i"&&A[9]==="o"&&A[10]==="n"&&A[12]==="j"&&A[13]==="s"&&A[14]==="o"&&A[15]==="n"},Gk=(A)=>{return A.length>4&&A[4]==="/"&&A[0]==="t"&&A[1]==="e"&&A[2]==="x"&&A[3]==="t"};Dk.exports={getResolveErrorBodyCallback:VNA,isContentTypeApplicationJson:Fk,isContentTypeText:Gk}});var Xk=U((aLQ,c6)=>{var $NA=M("node:assert"),{Readable:LNA}=b6(),{InvalidArgumentError:oF,RequestAbortedError:Zk}=TA(),YI=$A(),{getResolveErrorBodyCallback:HNA}=m6(),{AsyncResource:MNA}=M("node:async_hooks");class d6 extends MNA{constructor(A,Q){if(!A||typeof A!=="object")throw new oF("invalid opts");let{signal:B,method:I,opaque:C,body:E,onInfo:Y,responseHeaders:J,throwOnError:F,highWaterMark:G}=A;try{if(typeof Q!=="function")throw new oF("invalid callback");if(G&&(typeof G!=="number"||G<0))throw new oF("invalid highWaterMark");if(B&&typeof B.on!=="function"&&typeof B.addEventListener!=="function")throw new oF("signal must be an EventEmitter or EventTarget");if(I==="CONNECT")throw new oF("invalid method");if(Y&&typeof Y!=="function")throw new oF("invalid onInfo callback");super("UNDICI_REQUEST")}catch(D){if(YI.isStream(E))YI.destroy(E.on("error",YI.nop),D);throw D}if(this.method=I,this.responseHeaders=J||null,this.opaque=C||null,this.callback=Q,this.res=null,this.abort=null,this.body=E,this.trailers={},this.context=null,this.onInfo=Y||null,this.throwOnError=F,this.highWaterMark=G,this.signal=B,this.reason=null,this.removeAbortListener=null,YI.isStream(E))E.on("error",(D)=>{this.onError(D)});if(this.signal)if(this.signal.aborted)this.reason=this.signal.reason??new Zk;else this.removeAbortListener=YI.addAbortListener(this.signal,()=>{if(this.reason=this.signal.reason??new Zk,this.res)YI.destroy(this.res.on("error",YI.nop),this.reason);else if(this.abort)this.abort(this.reason);if(this.removeAbortListener)this.res?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null})}onConnect(A,Q){if(this.reason){A(this.reason);return}$NA(this.callback),this.abort=A,this.context=Q}onHeaders(A,Q,B,I){let{callback:C,opaque:E,abort:Y,context:J,responseHeaders:F,highWaterMark:G}=this,D=F==="raw"?YI.parseRawHeaders(Q):YI.parseHeaders(Q);if(A<200){if(this.onInfo)this.onInfo({statusCode:A,headers:D});return}let Z=F==="raw"?YI.parseHeaders(Q):D,W=Z["content-type"],X=Z["content-length"],w=new LNA({resume:B,abort:Y,contentType:W,contentLength:this.method!=="HEAD"&&X?Number(X):null,highWaterMark:G});if(this.removeAbortListener)w.on("close",this.removeAbortListener);if(this.callback=null,this.res=w,C!==null)if(this.throwOnError&&A>=400)this.runInAsyncScope(HNA,null,{callback:C,body:w,contentType:W,statusCode:A,statusMessage:I,headers:D});else this.runInAsyncScope(C,null,null,{statusCode:A,headers:D,trailers:this.trailers,opaque:E,body:w,context:J})}onData(A){return this.res.push(A)}onComplete(A){YI.parseHeaders(A,this.trailers),this.res.push(null)}onError(A){let{res:Q,callback:B,body:I,opaque:C}=this;if(B)this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(B,null,A,{opaque:C})});if(Q)this.res=null,queueMicrotask(()=>{YI.destroy(Q,A)});if(I)this.body=null,YI.destroy(I,A);if(this.removeAbortListener)Q?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null}}function Wk(A,Q){if(Q===void 0)return new Promise((B,I)=>{Wk.call(this,A,(C,E)=>{return C?I(C):B(E)})});try{this.dispatch(A,new d6(A,Q))}catch(B){if(typeof Q!=="function")throw B;let I=A?.opaque;queueMicrotask(()=>Q(B,{opaque:I}))}}c6.exports=Wk;c6.exports.RequestHandler=d6});var SZ=U((oLQ,Kk)=>{var{addAbortListener:NNA}=$A(),{RequestAbortedError:jNA}=TA(),sF=Symbol("kListener"),rC=Symbol("kSignal");function Uk(A){if(A.abort)A.abort(A[rC]?.reason);else A.reason=A[rC]?.reason??new jNA;wk(A)}function RNA(A,Q){if(A.reason=null,A[rC]=null,A[sF]=null,!Q)return;if(Q.aborted){Uk(A);return}A[rC]=Q,A[sF]=()=>{Uk(A)},NNA(A[rC],A[sF])}function wk(A){if(!A[rC])return;if("removeEventListener"in A[rC])A[rC].removeEventListener("abort",A[sF]);else A[rC].removeListener("abort",A[sF]);A[rC]=null,A[sF]=null}Kk.exports={addSignal:RNA,removeSignal:wk}});var Hk=U((sLQ,Lk)=>{var qNA=M("node:assert"),{finished:ONA,PassThrough:TNA}=M("node:stream"),{InvalidArgumentError:rF,InvalidReturnValueError:PNA}=TA(),VC=$A(),{getResolveErrorBodyCallback:kNA}=m6(),{AsyncResource:SNA}=M("node:async_hooks"),{addSignal:yNA,removeSignal:zk}=SZ();class Vk extends SNA{constructor(A,Q,B){if(!A||typeof A!=="object")throw new rF("invalid opts");let{signal:I,method:C,opaque:E,body:Y,onInfo:J,responseHeaders:F,throwOnError:G}=A;try{if(typeof B!=="function")throw new rF("invalid callback");if(typeof Q!=="function")throw new rF("invalid factory");if(I&&typeof I.on!=="function"&&typeof I.addEventListener!=="function")throw new rF("signal must be an EventEmitter or EventTarget");if(C==="CONNECT")throw new rF("invalid method");if(J&&typeof J!=="function")throw new rF("invalid onInfo callback");super("UNDICI_STREAM")}catch(D){if(VC.isStream(Y))VC.destroy(Y.on("error",VC.nop),D);throw D}if(this.responseHeaders=F||null,this.opaque=E||null,this.factory=Q,this.callback=B,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=Y,this.onInfo=J||null,this.throwOnError=G||!1,VC.isStream(Y))Y.on("error",(D)=>{this.onError(D)});yNA(this,I)}onConnect(A,Q){if(this.reason){A(this.reason);return}qNA(this.callback),this.abort=A,this.context=Q}onHeaders(A,Q,B,I){let{factory:C,opaque:E,context:Y,callback:J,responseHeaders:F}=this,G=F==="raw"?VC.parseRawHeaders(Q):VC.parseHeaders(Q);if(A<200){if(this.onInfo)this.onInfo({statusCode:A,headers:G});return}this.factory=null;let D;if(this.throwOnError&&A>=400){let X=(F==="raw"?VC.parseHeaders(Q):G)["content-type"];D=new TNA,this.callback=null,this.runInAsyncScope(kNA,null,{callback:J,body:D,contentType:X,statusCode:A,statusMessage:I,headers:G})}else{if(C===null)return;if(D=this.runInAsyncScope(C,null,{statusCode:A,headers:G,opaque:E,context:Y}),!D||typeof D.write!=="function"||typeof D.end!=="function"||typeof D.on!=="function")throw new PNA("expected Writable");ONA(D,{readable:!1},(W)=>{let{callback:X,res:w,opaque:K,trailers:z,abort:$}=this;if(this.res=null,W||!w.readable)VC.destroy(w,W);if(this.callback=null,this.runInAsyncScope(X,null,W||null,{opaque:K,trailers:z}),W)$()})}return D.on("drain",B),this.res=D,(D.writableNeedDrain!==void 0?D.writableNeedDrain:D._writableState?.needDrain)!==!0}onData(A){let{res:Q}=this;return Q?Q.write(A):!0}onComplete(A){let{res:Q}=this;if(zk(this),!Q)return;this.trailers=VC.parseHeaders(A),Q.end()}onError(A){let{res:Q,callback:B,opaque:I,body:C}=this;if(zk(this),this.factory=null,Q)this.res=null,VC.destroy(Q,A);else if(B)this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(B,null,A,{opaque:I})});if(C)this.body=null,VC.destroy(C,A)}}function $k(A,Q,B){if(B===void 0)return new Promise((I,C)=>{$k.call(this,A,Q,(E,Y)=>{return E?C(E):I(Y)})});try{this.dispatch(A,new Vk(A,Q,B))}catch(I){if(typeof B!=="function")throw I;let C=A?.opaque;queueMicrotask(()=>B(I,{opaque:C}))}}Lk.exports=$k});var Tk=U((rLQ,Ok)=>{var{Readable:Nk,Duplex:_NA,PassThrough:fNA}=M("node:stream"),{InvalidArgumentError:yZ,InvalidReturnValueError:gNA,RequestAbortedError:u6}=TA(),gI=$A(),{AsyncResource:hNA}=M("node:async_hooks"),{addSignal:xNA,removeSignal:vNA}=SZ(),Mk=M("node:assert"),tF=Symbol("resume");class jk extends Nk{constructor(){super({autoDestroy:!0});this[tF]=null}_read(){let{[tF]:A}=this;if(A)this[tF]=null,A()}_destroy(A,Q){this._read(),Q(A)}}class Rk extends Nk{constructor(A){super({autoDestroy:!0});this[tF]=A}_read(){this[tF]()}_destroy(A,Q){if(!A&&!this._readableState.endEmitted)A=new u6;Q(A)}}class qk extends hNA{constructor(A,Q){if(!A||typeof A!=="object")throw new yZ("invalid opts");if(typeof Q!=="function")throw new yZ("invalid handler");let{signal:B,method:I,opaque:C,onInfo:E,responseHeaders:Y}=A;if(B&&typeof B.on!=="function"&&typeof B.addEventListener!=="function")throw new yZ("signal must be an EventEmitter or EventTarget");if(I==="CONNECT")throw new yZ("invalid method");if(E&&typeof E!=="function")throw new yZ("invalid onInfo callback");super("UNDICI_PIPELINE");this.opaque=C||null,this.responseHeaders=Y||null,this.handler=Q,this.abort=null,this.context=null,this.onInfo=E||null,this.req=new jk().on("error",gI.nop),this.ret=new _NA({readableObjectMode:A.objectMode,autoDestroy:!0,read:()=>{let{body:J}=this;if(J?.resume)J.resume()},write:(J,F,G)=>{let{req:D}=this;if(D.push(J,F)||D._readableState.destroyed)G();else D[tF]=G},destroy:(J,F)=>{let{body:G,req:D,res:Z,ret:W,abort:X}=this;if(!J&&!W._readableState.endEmitted)J=new u6;if(X&&J)X();gI.destroy(G,J),gI.destroy(D,J),gI.destroy(Z,J),vNA(this),F(J)}}).on("prefinish",()=>{let{req:J}=this;J.push(null)}),this.res=null,xNA(this,B)}onConnect(A,Q){let{ret:B,res:I}=this;if(this.reason){A(this.reason);return}Mk(!I,"pipeline cannot be retried"),Mk(!B.destroyed),this.abort=A,this.context=Q}onHeaders(A,Q,B){let{opaque:I,handler:C,context:E}=this;if(A<200){if(this.onInfo){let J=this.responseHeaders==="raw"?gI.parseRawHeaders(Q):gI.parseHeaders(Q);this.onInfo({statusCode:A,headers:J})}return}this.res=new Rk(B);let Y;try{this.handler=null;let J=this.responseHeaders==="raw"?gI.parseRawHeaders(Q):gI.parseHeaders(Q);Y=this.runInAsyncScope(C,null,{statusCode:A,headers:J,opaque:I,body:this.res,context:E})}catch(J){throw this.res.on("error",gI.nop),J}if(!Y||typeof Y.on!=="function")throw new gNA("expected Readable");Y.on("data",(J)=>{let{ret:F,body:G}=this;if(!F.push(J)&&G.pause)G.pause()}).on("error",(J)=>{let{ret:F}=this;gI.destroy(F,J)}).on("end",()=>{let{ret:J}=this;J.push(null)}).on("close",()=>{let{ret:J}=this;if(!J._readableState.ended)gI.destroy(J,new u6)}),this.body=Y}onData(A){let{res:Q}=this;return Q.push(A)}onComplete(A){let{res:Q}=this;Q.push(null)}onError(A){let{ret:Q}=this;this.handler=null,gI.destroy(Q,A)}}function bNA(A,Q){try{let B=new qk(A,Q);return this.dispatch({...A,body:B.req},B),B.ret}catch(B){return new fNA().destroy(B)}}Ok.exports=bNA});var gk=U((tLQ,fk)=>{var{InvalidArgumentError:l6,SocketError:mNA}=TA(),{AsyncResource:dNA}=M("node:async_hooks"),Pk=$A(),{addSignal:cNA,removeSignal:kk}=SZ(),Sk=M("node:assert");class yk extends dNA{constructor(A,Q){if(!A||typeof A!=="object")throw new l6("invalid opts");if(typeof Q!=="function")throw new l6("invalid callback");let{signal:B,opaque:I,responseHeaders:C}=A;if(B&&typeof B.on!=="function"&&typeof B.addEventListener!=="function")throw new l6("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE");this.responseHeaders=C||null,this.opaque=I||null,this.callback=Q,this.abort=null,this.context=null,cNA(this,B)}onConnect(A,Q){if(this.reason){A(this.reason);return}Sk(this.callback),this.abort=A,this.context=null}onHeaders(){throw new mNA("bad upgrade",null)}onUpgrade(A,Q,B){Sk(A===101);let{callback:I,opaque:C,context:E}=this;kk(this),this.callback=null;let Y=this.responseHeaders==="raw"?Pk.parseRawHeaders(Q):Pk.parseHeaders(Q);this.runInAsyncScope(I,null,null,{headers:Y,socket:B,opaque:C,context:E})}onError(A){let{callback:Q,opaque:B}=this;if(kk(this),Q)this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(Q,null,A,{opaque:B})})}}function _k(A,Q){if(Q===void 0)return new Promise((B,I)=>{_k.call(this,A,(C,E)=>{return C?I(C):B(E)})});try{let B=new yk(A,Q);this.dispatch({...A,method:A.method||"GET",upgrade:A.protocol||"Websocket"},B)}catch(B){if(typeof Q!=="function")throw B;let I=A?.opaque;queueMicrotask(()=>Q(B,{opaque:I}))}}fk.exports=_k});var dk=U((eLQ,mk)=>{var uNA=M("node:assert"),{AsyncResource:lNA}=M("node:async_hooks"),{InvalidArgumentError:p6,SocketError:pNA}=TA(),hk=$A(),{addSignal:iNA,removeSignal:xk}=SZ();class vk extends lNA{constructor(A,Q){if(!A||typeof A!=="object")throw new p6("invalid opts");if(typeof Q!=="function")throw new p6("invalid callback");let{signal:B,opaque:I,responseHeaders:C}=A;if(B&&typeof B.on!=="function"&&typeof B.addEventListener!=="function")throw new p6("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT");this.opaque=I||null,this.responseHeaders=C||null,this.callback=Q,this.abort=null,iNA(this,B)}onConnect(A,Q){if(this.reason){A(this.reason);return}uNA(this.callback),this.abort=A,this.context=Q}onHeaders(){throw new pNA("bad connect",null)}onUpgrade(A,Q,B){let{callback:I,opaque:C,context:E}=this;xk(this),this.callback=null;let Y=Q;if(Y!=null)Y=this.responseHeaders==="raw"?hk.parseRawHeaders(Q):hk.parseHeaders(Q);this.runInAsyncScope(I,null,null,{statusCode:A,headers:Y,socket:B,opaque:C,context:E})}onError(A){let{callback:Q,opaque:B}=this;if(xk(this),Q)this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(Q,null,A,{opaque:B})})}}function bk(A,Q){if(Q===void 0)return new Promise((B,I)=>{bk.call(this,A,(C,E)=>{return C?I(C):B(E)})});try{let B=new vk(A,Q);this.dispatch({...A,method:"CONNECT"},B)}catch(B){if(typeof Q!=="function")throw B;let I=A?.opaque;queueMicrotask(()=>Q(B,{opaque:I}))}}mk.exports=bk});var ck=U((nNA,eF)=>{nNA.request=Xk();nNA.stream=Hk();nNA.pipeline=Tk();nNA.upgrade=gk();nNA.connect=dk()});var n6=U((AHQ,lk)=>{var{UndiciError:eNA}=TA(),uk=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");class i6 extends eNA{constructor(A){super(A);Error.captureStackTrace(this,i6),this.name="MockNotMatchedError",this.message=A||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}static[Symbol.hasInstance](A){return A&&A[uk]===!0}[uk]=!0}lk.exports={MockNotMatchedError:i6}});var AG=U((QHQ,pk)=>{pk.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}});var _Z=U((BHQ,BS)=>{var{MockNotMatchedError:AJ}=n6(),{kDispatches:e8,kMockAgent:AjA,kOriginalDispatch:QjA,kOrigin:BjA,kGetNetConnect:IjA}=AG(),{buildURL:CjA}=$A(),{STATUS_CODES:EjA}=M("node:http"),{types:{isPromise:YjA}}=M("node:util");function SE(A,Q){if(typeof A==="string")return A===Q;if(A instanceof RegExp)return A.test(Q);if(typeof A==="function")return A(Q)===!0;return!1}function nk(A){return Object.fromEntries(Object.entries(A).map(([Q,B])=>{return[Q.toLocaleLowerCase(),B]}))}function ak(A,Q){if(Array.isArray(A)){for(let B=0;B"u")return!0;if(typeof Q!=="object"||typeof A.headers!=="object")return!1;for(let[B,I]of Object.entries(A.headers)){let C=ak(Q,B);if(!SE(I,C))return!1}return!0}function ik(A){if(typeof A!=="string")return A;let Q=A.split("?");if(Q.length!==2)return A;let B=new URLSearchParams(Q.pop());return B.sort(),[...Q,B.toString()].join("?")}function JjA(A,{path:Q,method:B,body:I,headers:C}){let E=SE(A.path,Q),Y=SE(A.method,B),J=typeof A.body<"u"?SE(A.body,I):!0,F=ok(A,C);return E&&Y&&J&&F}function sk(A){if(Buffer.isBuffer(A))return A;else if(A instanceof Uint8Array)return A;else if(A instanceof ArrayBuffer)return A;else if(typeof A==="object")return JSON.stringify(A);else return A.toString()}function rk(A,Q){let B=Q.query?CjA(Q.path,Q.query):Q.path,I=typeof B==="string"?ik(B):B,C=A.filter(({consumed:E})=>!E).filter(({path:E})=>SE(ik(E),I));if(C.length===0)throw new AJ(`Mock dispatch not matched for path '${I}'`);if(C=C.filter(({method:E})=>SE(E,Q.method)),C.length===0)throw new AJ(`Mock dispatch not matched for method '${Q.method}' on path '${I}'`);if(C=C.filter(({body:E})=>typeof E<"u"?SE(E,Q.body):!0),C.length===0)throw new AJ(`Mock dispatch not matched for body '${Q.body}' on path '${I}'`);if(C=C.filter((E)=>ok(E,Q.headers)),C.length===0){let E=typeof Q.headers==="object"?JSON.stringify(Q.headers):Q.headers;throw new AJ(`Mock dispatch not matched for headers '${E}' on path '${I}'`)}return C[0]}function FjA(A,Q,B){let I={timesInvoked:0,times:1,persist:!1,consumed:!1},C=typeof B==="function"?{callback:B}:{...B},E={...I,...Q,pending:!0,data:{error:null,...C}};return A.push(E),E}function a6(A,Q){let B=A.findIndex((I)=>{if(!I.consumed)return!1;return JjA(I,Q)});if(B!==-1)A.splice(B,1)}function tk(A){let{path:Q,method:B,body:I,headers:C,query:E}=A;return{path:Q,method:B,body:I,headers:C,query:E}}function o6(A){let Q=Object.keys(A),B=[];for(let I=0;I=W,I.pending=Z0)setTimeout(()=>{X(this[e8])},G);else X(this[e8]);function X(K,z=E){let $=Array.isArray(A.headers)?s6(A.headers):A.headers,N=typeof z==="function"?z({...A,headers:$}):z;if(YjA(N)){N.then((g)=>X(K,g));return}let j=sk(N),O=o6(Y),k=o6(J);Q.onConnect?.((g)=>Q.onError(g),null),Q.onHeaders?.(C,O,w,ek(C)),Q.onData?.(Buffer.from(j)),Q.onComplete?.(k),a6(K,B)}function w(){}return!0}function DjA(){let A=this[AjA],Q=this[BjA],B=this[QjA];return function(C,E){if(A.isMockActive)try{AS.call(this,C,E)}catch(Y){if(Y instanceof AJ){let J=A[IjA]();if(J===!1)throw new AJ(`${Y.message}: subsequent request to origin ${Q} was not allowed (net.connect disabled)`);if(QS(J,Q))B.call(this,C,E);else throw new AJ(`${Y.message}: subsequent request to origin ${Q} was not allowed (net.connect is not enabled for this origin)`)}else throw Y}else B.call(this,C,E)}}function QS(A,Q){let B=new URL(Q);if(A===!0)return!0;else if(Array.isArray(A)&&A.some((I)=>SE(I,B.host)))return!0;return!1}function ZjA(A){if(A){let{agent:Q,...B}=A;return B}}BS.exports={getResponseData:sk,getMockDispatch:rk,addMockDispatch:FjA,deleteMockDispatch:a6,buildKey:tk,generateKeyValues:o6,matchValue:SE,getResponse:GjA,getStatusText:ek,mockDispatch:AS,buildMockDispatch:DjA,checkNetConnect:QS,buildMockOptions:ZjA,getHeaderByName:ak,buildHeadersFromArray:s6}});var B7=U((wjA,Q7)=>{var{getResponseData:WjA,buildKey:XjA,addMockDispatch:r6}=_Z(),{kDispatches:AX,kDispatchKey:QX,kDefaultHeaders:t6,kDefaultTrailers:e6,kContentLength:A7,kMockDispatch:BX}=AG(),{InvalidArgumentError:tC}=TA(),{buildURL:UjA}=$A();class fZ{constructor(A){this[BX]=A}delay(A){if(typeof A!=="number"||!Number.isInteger(A)||A<=0)throw new tC("waitInMs must be a valid integer > 0");return this[BX].delay=A,this}persist(){return this[BX].persist=!0,this}times(A){if(typeof A!=="number"||!Number.isInteger(A)||A<=0)throw new tC("repeatTimes must be a valid integer > 0");return this[BX].times=A,this}}class IS{constructor(A,Q){if(typeof A!=="object")throw new tC("opts must be an object");if(typeof A.path>"u")throw new tC("opts.path must be defined");if(typeof A.method>"u")A.method="GET";if(typeof A.path==="string")if(A.query)A.path=UjA(A.path,A.query);else{let B=new URL(A.path,"data://");A.path=B.pathname+B.search}if(typeof A.method==="string")A.method=A.method.toUpperCase();this[QX]=XjA(A),this[AX]=Q,this[t6]={},this[e6]={},this[A7]=!1}createMockScopeDispatchData({statusCode:A,data:Q,responseOptions:B}){let I=WjA(Q),C=this[A7]?{"content-length":I.length}:{},E={...this[t6],...C,...B.headers},Y={...this[e6],...B.trailers};return{statusCode:A,data:Q,headers:E,trailers:Y}}validateReplyParameters(A){if(typeof A.statusCode>"u")throw new tC("statusCode must be defined");if(typeof A.responseOptions!=="object"||A.responseOptions===null)throw new tC("responseOptions must be an object")}reply(A){if(typeof A==="function"){let C=(Y)=>{let J=A(Y);if(typeof J!=="object"||J===null)throw new tC("reply options callback must return an object");let F={data:"",responseOptions:{},...J};return this.validateReplyParameters(F),{...this.createMockScopeDispatchData(F)}},E=r6(this[AX],this[QX],C);return new fZ(E)}let Q={statusCode:A,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(Q);let B=this.createMockScopeDispatchData(Q),I=r6(this[AX],this[QX],B);return new fZ(I)}replyWithError(A){if(typeof A>"u")throw new tC("error must be defined");let Q=r6(this[AX],this[QX],{error:A});return new fZ(Q)}defaultReplyHeaders(A){if(typeof A>"u")throw new tC("headers must be defined");return this[t6]=A,this}defaultReplyTrailers(A){if(typeof A>"u")throw new tC("trailers must be defined");return this[e6]=A,this}replyContentLength(){return this[A7]=!0,this}}wjA.MockInterceptor=IS;wjA.MockScope=fZ});var C7=U((IHQ,ZS)=>{var{promisify:VjA}=M("node:util"),$jA=lF(),{buildMockDispatch:LjA}=_Z(),{kDispatches:CS,kMockAgent:ES,kClose:YS,kOriginalClose:JS,kOrigin:FS,kOriginalDispatch:HjA,kConnected:I7}=AG(),{MockInterceptor:MjA}=B7(),GS=eA(),{InvalidArgumentError:NjA}=TA();class DS extends $jA{constructor(A,Q){super(A,Q);if(!Q||!Q.agent||typeof Q.agent.dispatch!=="function")throw new NjA("Argument opts.agent must implement Agent");this[ES]=Q.agent,this[FS]=A,this[CS]=[],this[I7]=1,this[HjA]=this.dispatch,this[JS]=this.close.bind(this),this.dispatch=LjA.call(this),this.close=this[YS]}get[GS.kConnected](){return this[I7]}intercept(A){return new MjA(A,this[CS])}async[YS](){await VjA(this[JS])(),this[I7]=0,this[ES][GS.kClients].delete(this[FS])}}ZS.exports=DS});var Y7=U((CHQ,$S)=>{var{promisify:jjA}=M("node:util"),RjA=pF(),{buildMockDispatch:qjA}=_Z(),{kDispatches:WS,kMockAgent:XS,kClose:US,kOriginalClose:wS,kOrigin:KS,kOriginalDispatch:OjA,kConnected:E7}=AG(),{MockInterceptor:TjA}=B7(),zS=eA(),{InvalidArgumentError:PjA}=TA();class VS extends RjA{constructor(A,Q){super(A,Q);if(!Q||!Q.agent||typeof Q.agent.dispatch!=="function")throw new PjA("Argument opts.agent must implement Agent");this[XS]=Q.agent,this[KS]=A,this[WS]=[],this[E7]=1,this[OjA]=this.dispatch,this[wS]=this.close.bind(this),this.dispatch=qjA.call(this),this.close=this[US]}get[zS.kConnected](){return this[E7]}intercept(A){return new TjA(A,this[WS])}async[US](){await jjA(this[wS])(),this[E7]=0,this[XS][zS.kClients].delete(this[KS])}}$S.exports=VS});var HS=U((EHQ,LS)=>{var kjA={pronoun:"it",is:"is",was:"was",this:"this"},SjA={pronoun:"they",is:"are",was:"were",this:"these"};LS.exports=class{constructor(Q,B){this.singular=Q,this.plural=B}pluralize(Q){let B=Q===1,I=B?kjA:SjA,C=B?this.singular:this.plural;return{...I,count:Q,noun:C}}}});var NS=U((YHQ,MS)=>{var{Transform:yjA}=M("node:stream"),{Console:_jA}=M("node:console"),fjA=process.versions.icu?"✅":"Y ",gjA=process.versions.icu?"❌":"N ";MS.exports=class{constructor({disableColors:Q}={}){this.transform=new yjA({transform(B,I,C){C(null,B)}}),this.logger=new _jA({stdout:this.transform,inspectOptions:{colors:!Q&&!process.env.CI}})}format(Q){let B=Q.map(({method:I,path:C,data:{statusCode:E},persist:Y,times:J,timesInvoked:F,origin:G})=>({Method:I,Origin:G,Path:C,"Status code":E,Persistent:Y?fjA:gjA,Invocations:F,Remaining:Y?1/0:J-F}));return this.logger.table(B),this.transform.read().toString()}}});var TS=U((JHQ,OS)=>{var{kClients:QJ}=eA(),hjA=iF(),{kAgent:J7,kMockAgentSet:IX,kMockAgentGet:jS,kDispatches:F7,kIsMockActive:CX,kNetConnect:BJ,kGetNetConnect:xjA,kOptions:EX,kFactory:YX}=AG(),vjA=C7(),bjA=Y7(),{matchValue:mjA,buildMockOptions:djA}=_Z(),{InvalidArgumentError:RS,UndiciError:cjA}=TA(),ujA=IZ(),ljA=HS(),pjA=NS();class qS extends ujA{constructor(A){super(A);if(this[BJ]=!0,this[CX]=!0,A?.agent&&typeof A.agent.dispatch!=="function")throw new RS("Argument opts.agent must implement Agent");let Q=A?.agent?A.agent:new hjA(A);this[J7]=Q,this[QJ]=Q[QJ],this[EX]=djA(A)}get(A){let Q=this[jS](A);if(!Q)Q=this[YX](A),this[IX](A,Q);return Q}dispatch(A,Q){return this.get(A.origin),this[J7].dispatch(A,Q)}async close(){await this[J7].close(),this[QJ].clear()}deactivate(){this[CX]=!1}activate(){this[CX]=!0}enableNetConnect(A){if(typeof A==="string"||typeof A==="function"||A instanceof RegExp)if(Array.isArray(this[BJ]))this[BJ].push(A);else this[BJ]=[A];else if(typeof A>"u")this[BJ]=!0;else throw new RS("Unsupported matcher. Must be one of String|Function|RegExp.")}disableNetConnect(){this[BJ]=!1}get isMockActive(){return this[CX]}[IX](A,Q){this[QJ].set(A,Q)}[YX](A){let Q=Object.assign({agent:this},this[EX]);return this[EX]&&this[EX].connections===1?new vjA(A,Q):new bjA(A,Q)}[jS](A){let Q=this[QJ].get(A);if(Q)return Q;if(typeof A!=="string"){let B=this[YX]("http://localhost:9999");return this[IX](A,B),B}for(let[B,I]of Array.from(this[QJ]))if(I&&typeof B!=="string"&&mjA(B,A)){let C=this[YX](A);return this[IX](A,C),C[F7]=I[F7],C}}[xjA](){return this[BJ]}pendingInterceptors(){let A=this[QJ];return Array.from(A.entries()).flatMap(([Q,B])=>B[F7].map((I)=>({...I,origin:Q}))).filter(({pending:Q})=>Q)}assertNoPendingInterceptors({pendingInterceptorsFormatter:A=new pjA}={}){let Q=this.pendingInterceptors();if(Q.length===0)return;let B=new ljA("interceptor","interceptors").pluralize(Q.length);throw new cjA(` ${B.count} ${B.noun} ${B.is} pending: ${A.format(Q)} -`.trim())}}jL.exports=_L});var EF=W((Gm,yL)=>{var OL=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:RH}=r(),XH=rI();if(qL()===void 0)PL(new XH);function PL(A){if(!A||typeof A.dispatch!=="function")throw new RH("Argument agent must implement Agent");Object.defineProperty(globalThis,OL,{value:A,writable:!0,enumerable:!1,configurable:!1})}function qL(){return globalThis[OL]}yL.exports={setGlobalDispatcher:PL,getGlobalDispatcher:qL}});var CF=W((Nm,hL)=>{hL.exports=class{#A;constructor(Q){if(typeof Q!=="object"||Q===null)throw TypeError("handler must be an object");this.#A=Q}onConnect(...Q){return this.#A.onConnect?.(...Q)}onError(...Q){return this.#A.onError?.(...Q)}onUpgrade(...Q){return this.#A.onUpgrade?.(...Q)}onResponseStarted(...Q){return this.#A.onResponseStarted?.(...Q)}onHeaders(...Q){return this.#A.onHeaders?.(...Q)}onData(...Q){return this.#A.onData?.(...Q)}onComplete(...Q){return this.#A.onComplete?.(...Q)}onBodySent(...Q){return this.#A.onBodySent?.(...Q)}}});var fL=W((Mm,kL)=>{var KH=bg();kL.exports=(A)=>{let Q=A?.maxRedirections;return(B)=>{return function(E,C){let{maxRedirections:g=Q,...F}=E;if(!g)return B(E,C);let D=new KH(B,g,E,C);return B(F,D)}}}});var bL=W((wm,vL)=>{var zH=sg();vL.exports=(A)=>{return(Q)=>{return function(I,E){return Q(I,new zH({...I,retryOptions:{...A,...I.retryOptions}},{handler:E,dispatch:Q}))}}}});var cL=W((Wm,uL)=>{var SH=p(),{InvalidArgumentError:$H,RequestAbortedError:HH}=r(),TH=CF();class mL extends TH{#A=1048576;#Q=null;#E=!1;#I=!1;#B=0;#C=null;#g=null;constructor({maxSize:A},Q){super(Q);if(A!=null&&(!Number.isFinite(A)||A<1))throw new $H("maxSize must be a number greater than 0");this.#A=A??this.#A,this.#g=Q}onConnect(A){this.#Q=A,this.#g.onConnect(this.#F.bind(this))}#F(A){this.#I=!0,this.#C=A}onHeaders(A,Q,B,I){let C=SH.parseHeaders(Q)["content-length"];if(C!=null&&C>this.#A)throw new HH(`Response size (${C}) larger than maxSize (${this.#A})`);if(this.#I)return!0;return this.#g.onHeaders(A,Q,B,I)}onError(A){if(this.#E)return;A=this.#C??A,this.#g.onError(A)}onData(A){if(this.#B=this.#B+A.length,this.#B>=this.#A)if(this.#E=!0,this.#I)this.#g.onError(this.#C);else this.#g.onComplete([]);return!0}onComplete(A){if(this.#E)return;if(this.#I){this.#g.onError(this.reason);return}this.#g.onComplete(A)}}function _H({maxSize:A}={maxSize:1048576}){return(Q)=>{return function(I,E){let{dumpMaxSize:C=A}=I,g=new mL({maxSize:C},E);return Q(I,g)}}}uL.exports=_H});var nL=W((Lm,iL)=>{var{isIP:jH}=z("node:net"),{lookup:xH}=z("node:dns"),OH=CF(),{InvalidArgumentError:gE,InformationalError:PH}=r(),dL=Math.pow(2,31)-1;class lL{#A=0;#Q=0;#E=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(A){this.#A=A.maxTTL,this.#Q=A.maxItems,this.dualStack=A.dualStack,this.affinity=A.affinity,this.lookup=A.lookup??this.#I,this.pick=A.pick??this.#B}get full(){return this.#E.size===this.#Q}runLookup(A,Q,B){let I=this.#E.get(A.hostname);if(I==null&&this.full){B(null,A.origin);return}let E={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...Q.dns,maxTTL:this.#A,maxItems:this.#Q};if(I==null)this.lookup(A,E,(C,g)=>{if(C||g==null||g.length===0){B(C??new PH("No DNS entries found"));return}this.setRecords(A,g);let F=this.#E.get(A.hostname),D=this.pick(A,F,E.affinity),J;if(typeof D.port==="number")J=`:${D.port}`;else if(A.port!=="")J=`:${A.port}`;else J="";B(null,`${A.protocol}//${D.family===6?`[${D.address}]`:D.address}${J}`)});else{let C=this.pick(A,I,E.affinity);if(C==null){this.#E.delete(A.hostname),this.runLookup(A,Q,B);return}let g;if(typeof C.port==="number")g=`:${C.port}`;else if(A.port!=="")g=`:${A.port}`;else g="";B(null,`${A.protocol}//${C.family===6?`[${C.address}]`:C.address}${g}`)}}#I(A,Q,B){xH(A.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(I,E)=>{if(I)return B(I);let C=new Map;for(let g of E)C.set(`${g.address}:${g.family}`,g);B(null,C.values())})}#B(A,Q,B){let I=null,{records:E,offset:C}=Q,g;if(this.dualStack){if(B==null)if(C==null||C===dL)Q.offset=0,B=4;else Q.offset++,B=(Q.offset&1)===1?6:4;if(E[B]!=null&&E[B].ips.length>0)g=E[B];else g=E[B===4?6:4]}else g=E[B];if(g==null||g.ips.length===0)return I;if(g.offset==null||g.offset===dL)g.offset=0;else g.offset++;let F=g.offset%g.ips.length;if(I=g.ips[F]??null,I==null)return I;if(Date.now()-I.timestamp>I.ttl)return g.ips.splice(F,1),this.pick(A,Q,B);return I}setRecords(A,Q){let B=Date.now(),I={records:{4:null,6:null}};for(let E of Q){if(E.timestamp=B,typeof E.ttl==="number")E.ttl=Math.min(E.ttl,this.#A);else E.ttl=this.#A;let C=I.records[E.family]??{ips:[]};C.ips.push(E),I.records[E.family]=C}this.#E.set(A.hostname,I)}getHandler(A,Q){return new pL(this,A,Q)}}class pL extends OH{#A=null;#Q=null;#E=null;#I=null;#B=null;constructor(A,{origin:Q,handler:B,dispatch:I},E){super(B);this.#B=Q,this.#I=B,this.#Q={...E},this.#A=A,this.#E=I}onError(A){switch(A.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#A.dualStack){this.#A.runLookup(this.#B,this.#Q,(Q,B)=>{if(Q)return this.#I.onError(Q);let I={...this.#Q,origin:B};this.#E(I,this)});return}this.#I.onError(A);return}case"ENOTFOUND":this.#A.deleteRecord(this.#B);default:this.#I.onError(A);break}}}iL.exports=(A)=>{if(A?.maxTTL!=null&&(typeof A?.maxTTL!=="number"||A?.maxTTL<0))throw new gE("Invalid maxTTL. Must be a positive number");if(A?.maxItems!=null&&(typeof A?.maxItems!=="number"||A?.maxItems<1))throw new gE("Invalid maxItems. Must be a positive number and greater than zero");if(A?.affinity!=null&&A?.affinity!==4&&A?.affinity!==6)throw new gE("Invalid affinity. Must be either 4 or 6");if(A?.dualStack!=null&&typeof A?.dualStack!=="boolean")throw new gE("Invalid dualStack. Must be a boolean");if(A?.lookup!=null&&typeof A?.lookup!=="function")throw new gE("Invalid lookup. Must be a function");if(A?.pick!=null&&typeof A?.pick!=="function")throw new gE("Invalid pick. Must be a function");let Q=A?.dualStack??!0,B;if(Q)B=A?.affinity??null;else B=A?.affinity??4;let I={maxTTL:A?.maxTTL??1e4,lookup:A?.lookup??null,pick:A?.pick??null,dualStack:Q,affinity:B,maxItems:A?.maxItems??1/0},E=new lL(I);return(C)=>{return function(F,D){let J=F.origin.constructor===URL?F.origin:new URL(F.origin);if(jH(J.hostname)!==0)return C(F,D);return E.runLookup(J,F,(Y,U)=>{if(Y)return D.onError(Y);let N=null;N={...F,servername:J.hostname,origin:U,headers:{host:J.hostname,...F.headers}},C(N,E.getHandler({origin:J,dispatch:C,handler:D},F))}),!0}}}});var JI=W((Vm,AV)=>{var{kConstruct:qH}=GA(),{kEnumerableProperty:FE}=p(),{iteratorMixin:yH,isValidHeaderName:YC,isValidHeaderValue:sL}=BQ(),{webidl:s}=jA(),PY=z("node:assert"),gF=z("node:util"),KA=Symbol("headers map"),CQ=Symbol("headers map sorted");function aL(A){return A===10||A===13||A===9||A===32}function oL(A){let Q=0,B=A.length;while(B>Q&&aL(A.charCodeAt(B-1)))--B;while(B>Q&&aL(A.charCodeAt(Q)))++Q;return Q===0&&B===A.length?A:A.substring(Q,B)}function rL(A,Q){if(Array.isArray(Q))for(let B=0;B>","record"]})}function qY(A,Q,B){if(B=oL(B),!YC(Q))throw s.errors.invalidArgument({prefix:"Headers.append",value:Q,type:"header name"});else if(!sL(B))throw s.errors.invalidArgument({prefix:"Headers.append",value:B,type:"header value"});if(eL(A)==="immutable")throw TypeError("immutable");return yY(A).append(Q,B,!1)}function tL(A,Q){return A[0]>1),Q[D][0]<=J[0])F=D+1;else g=D;if(E!==D){C=E;while(C>F)Q[C]=Q[--C];Q[F]=J}}if(!B.next().done)throw TypeError("Unreachable");return Q}else{let B=0;for(let{0:I,1:{value:E}}of this[KA])Q[B++]=[I,E],PY(E!==null);return Q.sort(tL)}}}class hA{#A;#Q;constructor(A=void 0){if(s.util.markAsUncloneable(this),A===qH)return;if(this.#Q=new FF,this.#A="none",A!==void 0)A=s.converters.HeadersInit(A,"Headers contructor","init"),rL(this,A)}append(A,Q){s.brandCheck(this,hA),s.argumentLengthCheck(arguments,2,"Headers.append");let B="Headers.append";return A=s.converters.ByteString(A,B,"name"),Q=s.converters.ByteString(Q,B,"value"),qY(this,A,Q)}delete(A){s.brandCheck(this,hA),s.argumentLengthCheck(arguments,1,"Headers.delete");let Q="Headers.delete";if(A=s.converters.ByteString(A,Q,"name"),!YC(A))throw s.errors.invalidArgument({prefix:"Headers.delete",value:A,type:"header name"});if(this.#A==="immutable")throw TypeError("immutable");if(!this.#Q.contains(A,!1))return;this.#Q.delete(A,!1)}get(A){s.brandCheck(this,hA),s.argumentLengthCheck(arguments,1,"Headers.get");let Q="Headers.get";if(A=s.converters.ByteString(A,Q,"name"),!YC(A))throw s.errors.invalidArgument({prefix:Q,value:A,type:"header name"});return this.#Q.get(A,!1)}has(A){s.brandCheck(this,hA),s.argumentLengthCheck(arguments,1,"Headers.has");let Q="Headers.has";if(A=s.converters.ByteString(A,Q,"name"),!YC(A))throw s.errors.invalidArgument({prefix:Q,value:A,type:"header name"});return this.#Q.contains(A,!1)}set(A,Q){s.brandCheck(this,hA),s.argumentLengthCheck(arguments,2,"Headers.set");let B="Headers.set";if(A=s.converters.ByteString(A,B,"name"),Q=s.converters.ByteString(Q,B,"value"),Q=oL(Q),!YC(A))throw s.errors.invalidArgument({prefix:B,value:A,type:"header name"});else if(!sL(Q))throw s.errors.invalidArgument({prefix:B,value:Q,type:"header value"});if(this.#A==="immutable")throw TypeError("immutable");this.#Q.set(A,Q,!1)}getSetCookie(){s.brandCheck(this,hA);let A=this.#Q.cookies;if(A)return[...A];return[]}get[CQ](){if(this.#Q[CQ])return this.#Q[CQ];let A=[],Q=this.#Q.toSortedArray(),B=this.#Q.cookies;if(B===null||B.length===1)return this.#Q[CQ]=Q;for(let I=0;I>"](A,Q,B,I.bind(A));return s.converters["record"](A,Q,B)}throw s.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};AV.exports={fill:rL,compareHeaderName:tL,Headers:hA,HeadersList:FF,getHeadersGuard:eL,setHeadersGuard:hH,setHeadersList:kH,getHeadersList:yY}});var UC=W((Zm,GV)=>{var{Headers:gV,HeadersList:QV,fill:fH,getHeadersGuard:vH,setHeadersGuard:FV,setHeadersList:DV}=JI(),{extractBody:BV,cloneBody:bH,mixinBody:mH,hasFinalizationRegistry:YV,streamRegistry:JV,bodyUnusable:uH}=cI(),hY=p(),IV=z("node:util"),{kEnumerableProperty:gQ}=hY,{isValidReasonPhrase:cH,isCancelled:dH,isAborted:lH,isBlobLike:pH,serializeJavascriptValueToJSONString:iH,isErrorLike:nH,isomorphicEncode:aH,environmentSettingsObject:sH}=BQ(),{redirectStatusSet:oH,nullBodyStatus:rH}=yE(),{kState:NA,kHeaders:JB}=zB(),{webidl:l}=jA(),{FormData:tH}=bE(),{URLSerializer:EV}=oA(),{kConstruct:YF}=GA(),kY=z("node:assert"),{types:eH}=z("node:util"),AT=new TextEncoder("utf-8");class kA{static error(){return JC(JF(),"immutable")}static json(A,Q={}){if(l.argumentLengthCheck(arguments,1,"Response.json"),Q!==null)Q=l.converters.ResponseInit(Q);let B=AT.encode(iH(A)),I=BV(B),E=JC(DE({}),"response");return CV(E,Q,{body:I[0],type:"application/json"}),E}static redirect(A,Q=302){l.argumentLengthCheck(arguments,1,"Response.redirect"),A=l.converters.USVString(A),Q=l.converters["unsigned short"](Q);let B;try{B=new URL(A,sH.settingsObject.baseUrl)}catch(C){throw TypeError(`Failed to parse URL from ${A}`,{cause:C})}if(!oH.has(Q))throw RangeError(`Invalid status code ${Q}`);let I=JC(DE({}),"immutable");I[NA].status=Q;let E=aH(EV(B));return I[NA].headersList.append("location",E,!0),I}constructor(A=null,Q={}){if(l.util.markAsUncloneable(this),A===YF)return;if(A!==null)A=l.converters.BodyInit(A);Q=l.converters.ResponseInit(Q),this[NA]=DE({}),this[JB]=new gV(YF),FV(this[JB],"response"),DV(this[JB],this[NA].headersList);let B=null;if(A!=null){let[I,E]=BV(A);B={body:I,type:E}}CV(this,Q,B)}get type(){return l.brandCheck(this,kA),this[NA].type}get url(){l.brandCheck(this,kA);let A=this[NA].urlList,Q=A[A.length-1]??null;if(Q===null)return"";return EV(Q,!0)}get redirected(){return l.brandCheck(this,kA),this[NA].urlList.length>1}get status(){return l.brandCheck(this,kA),this[NA].status}get ok(){return l.brandCheck(this,kA),this[NA].status>=200&&this[NA].status<=299}get statusText(){return l.brandCheck(this,kA),this[NA].statusText}get headers(){return l.brandCheck(this,kA),this[JB]}get body(){return l.brandCheck(this,kA),this[NA].body?this[NA].body.stream:null}get bodyUsed(){return l.brandCheck(this,kA),!!this[NA].body&&hY.isDisturbed(this[NA].body.stream)}clone(){if(l.brandCheck(this,kA),uH(this))throw l.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let A=fY(this[NA]);if(YV&&this[NA].body?.stream)JV.register(this,new WeakRef(this[NA].body.stream));return JC(A,vH(this[JB]))}[IV.inspect.custom](A,Q){if(Q.depth===null)Q.depth=2;Q.colors??=!0;let B={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${IV.formatWithOptions(Q,B)}`}}mH(kA);Object.defineProperties(kA.prototype,{type:gQ,url:gQ,status:gQ,ok:gQ,redirected:gQ,statusText:gQ,headers:gQ,clone:gQ,body:gQ,bodyUsed:gQ,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(kA,{json:gQ,redirect:gQ,error:gQ});function fY(A){if(A.internalResponse)return UV(fY(A.internalResponse),A.type);let Q=DE({...A,body:null});if(A.body!=null)Q.body=bH(Q,A.body);return Q}function DE(A){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...A,headersList:A?.headersList?new QV(A?.headersList):new QV,urlList:A?.urlList?[...A.urlList]:[]}}function JF(A){let Q=nH(A);return DE({type:"error",status:0,error:Q?A:Error(A?String(A):A),aborted:A&&A.name==="AbortError"})}function QT(A){return A.type==="error"&&A.status===0}function DF(A,Q){return Q={internalResponse:A,...Q},new Proxy(A,{get(B,I){return I in Q?Q[I]:B[I]},set(B,I,E){return kY(!(I in Q)),B[I]=E,!0}})}function UV(A,Q){if(Q==="basic")return DF(A,{type:"basic",headersList:A.headersList});else if(Q==="cors")return DF(A,{type:"cors",headersList:A.headersList});else if(Q==="opaque")return DF(A,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});else if(Q==="opaqueredirect")return DF(A,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});else kY(!1)}function BT(A,Q=null){return kY(dH(A)),lH(A)?JF(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:Q})):JF(Object.assign(new DOMException("Request was cancelled."),{cause:Q}))}function CV(A,Q,B){if(Q.status!==null&&(Q.status<200||Q.status>599))throw RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in Q&&Q.statusText!=null){if(!cH(String(Q.statusText)))throw TypeError("Invalid statusText")}if("status"in Q&&Q.status!=null)A[NA].status=Q.status;if("statusText"in Q&&Q.statusText!=null)A[NA].statusText=Q.statusText;if("headers"in Q&&Q.headers!=null)fH(A[JB],Q.headers);if(B){if(rH.includes(A.status))throw l.errors.exception({header:"Response constructor",message:`Invalid response status code ${A.status}`});if(A[NA].body=B.body,B.type!=null&&!A[NA].headersList.contains("content-type",!0))A[NA].headersList.append("content-type",B.type,!0)}}function JC(A,Q){let B=new kA(YF);if(B[NA]=A,B[JB]=new gV(YF),DV(B[JB],A.headersList),FV(B[JB],Q),YV&&A.body?.stream)JV.register(B,new WeakRef(A.body.stream));return B}l.converters.ReadableStream=l.interfaceConverter(ReadableStream);l.converters.FormData=l.interfaceConverter(tH);l.converters.URLSearchParams=l.interfaceConverter(URLSearchParams);l.converters.XMLHttpRequestBodyInit=function(A,Q,B){if(typeof A==="string")return l.converters.USVString(A,Q,B);if(pH(A))return l.converters.Blob(A,Q,B,{strict:!1});if(ArrayBuffer.isView(A)||eH.isArrayBuffer(A))return l.converters.BufferSource(A,Q,B);if(hY.isFormDataLike(A))return l.converters.FormData(A,Q,B,{strict:!1});if(A instanceof URLSearchParams)return l.converters.URLSearchParams(A,Q,B);return l.converters.DOMString(A,Q,B)};l.converters.BodyInit=function(A,Q,B){if(A instanceof ReadableStream)return l.converters.ReadableStream(A,Q,B);if(A?.[Symbol.asyncIterator])return A;return l.converters.XMLHttpRequestBodyInit(A,Q,B)};l.converters.ResponseInit=l.dictionaryConverter([{key:"status",converter:l.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:l.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:l.converters.HeadersInit}]);GV.exports={isNetworkError:QT,makeNetworkError:JF,makeResponse:DE,makeAppropriateNetworkError:BT,filterResponse:UV,Response:kA,cloneResponse:fY,fromInnerResponse:JC}});var VV=W((Rm,LV)=>{var{kConnected:NV,kSize:MV}=GA();class wV{constructor(A){this.value=A}deref(){return this.value[NV]===0&&this.value[MV]===0?void 0:this.value}}class WV{constructor(A){this.finalizer=A}register(A,Q){if(A.on)A.on("disconnect",()=>{if(A[NV]===0&&A[MV]===0)this.finalizer(Q)})}unregister(A){}}LV.exports=function(){if(process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18"))return process._rawDebug("Using compatibility WeakRef and FinalizationRegistry"),{WeakRef:wV,FinalizationRegistry:WV};return{WeakRef,FinalizationRegistry}}});var YE=W((Xm,qV)=>{var{extractBody:IT,mixinBody:ET,cloneBody:CT,bodyUnusable:ZV}=cI(),{Headers:_V,fill:gT,HeadersList:MF,setHeadersGuard:bY,getHeadersGuard:FT,setHeadersList:jV,getHeadersList:RV}=JI(),{FinalizationRegistry:DT}=VV()(),GF=p(),XV=z("node:util"),{isValidHTTPToken:YT,sameOrigin:KV,environmentSettingsObject:UF}=BQ(),{forbiddenMethodsSet:JT,corsSafeListedMethodsSet:UT,referrerPolicy:GT,requestRedirect:NT,requestMode:MT,requestCredentials:wT,requestCache:WT,requestDuplex:LT}=yE(),{kEnumerableProperty:zA,normalizedMethodRecordsBase:VT,normalizedMethodRecords:ZT}=GF,{kHeaders:FQ,kSignal:NF,kState:YA,kDispatcher:vY}=zB(),{webidl:v}=jA(),{URLSerializer:RT}=oA(),{kConstruct:wF}=GA(),XT=z("node:assert"),{getMaxListeners:zV,setMaxListeners:SV,getEventListeners:KT,defaultMaxListeners:$V}=z("node:events"),zT=Symbol("abortController"),xV=new DT(({signal:A,abort:Q})=>{A.removeEventListener("abort",Q)}),WF=new WeakMap;function HV(A){return Q;function Q(){let B=A.deref();if(B!==void 0){xV.unregister(Q),this.removeEventListener("abort",Q),B.abort(this.reason);let I=WF.get(B.signal);if(I!==void 0){if(I.size!==0){for(let E of I){let C=E.deref();if(C!==void 0)C.abort(this.reason)}I.clear()}WF.delete(B.signal)}}}}var TV=!1;class gA{constructor(A,Q={}){if(v.util.markAsUncloneable(this),A===wF)return;let B="Request constructor";v.argumentLengthCheck(arguments,1,B),A=v.converters.RequestInfo(A,B,"input"),Q=v.converters.RequestInit(Q,B,"init");let I=null,E=null,C=UF.settingsObject.baseUrl,g=null;if(typeof A==="string"){this[vY]=Q.dispatcher;let Z;try{Z=new URL(A,C)}catch(R){throw TypeError("Failed to parse URL from "+A,{cause:R})}if(Z.username||Z.password)throw TypeError("Request cannot be constructed from a URL that includes credentials: "+A);I=LF({urlList:[Z]}),E="cors"}else this[vY]=Q.dispatcher||A[vY],XT(A instanceof gA),I=A[YA],g=A[NF];let F=UF.settingsObject.origin,D="client";if(I.window?.constructor?.name==="EnvironmentSettingsObject"&&KV(I.window,F))D=I.window;if(Q.window!=null)throw TypeError(`'window' option '${D}' must be null`);if("window"in Q)D="no-window";I=LF({method:I.method,headersList:I.headersList,unsafeRequest:I.unsafeRequest,client:UF.settingsObject,window:D,priority:I.priority,origin:I.origin,referrer:I.referrer,referrerPolicy:I.referrerPolicy,mode:I.mode,credentials:I.credentials,cache:I.cache,redirect:I.redirect,integrity:I.integrity,keepalive:I.keepalive,reloadNavigation:I.reloadNavigation,historyNavigation:I.historyNavigation,urlList:[...I.urlList]});let J=Object.keys(Q).length!==0;if(J){if(I.mode==="navigate")I.mode="same-origin";I.reloadNavigation=!1,I.historyNavigation=!1,I.origin="client",I.referrer="client",I.referrerPolicy="",I.url=I.urlList[I.urlList.length-1],I.urlList=[I.url]}if(Q.referrer!==void 0){let Z=Q.referrer;if(Z==="")I.referrer="no-referrer";else{let R;try{R=new URL(Z,C)}catch(x){throw TypeError(`Referrer "${Z}" is not a valid URL.`,{cause:x})}if(R.protocol==="about:"&&R.hostname==="client"||F&&!KV(R,UF.settingsObject.baseUrl))I.referrer="client";else I.referrer=R}}if(Q.referrerPolicy!==void 0)I.referrerPolicy=Q.referrerPolicy;let Y;if(Q.mode!==void 0)Y=Q.mode;else Y=E;if(Y==="navigate")throw v.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(Y!=null)I.mode=Y;if(Q.credentials!==void 0)I.credentials=Q.credentials;if(Q.cache!==void 0)I.cache=Q.cache;if(I.cache==="only-if-cached"&&I.mode!=="same-origin")throw TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(Q.redirect!==void 0)I.redirect=Q.redirect;if(Q.integrity!=null)I.integrity=String(Q.integrity);if(Q.keepalive!==void 0)I.keepalive=Boolean(Q.keepalive);if(Q.method!==void 0){let Z=Q.method,R=ZT[Z];if(R!==void 0)I.method=R;else{if(!YT(Z))throw TypeError(`'${Z}' is not a valid HTTP method.`);let x=Z.toUpperCase();if(JT.has(x))throw TypeError(`'${Z}' HTTP method is unsupported.`);Z=VT[x]??Z,I.method=Z}if(!TV&&I.method==="patch")process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),TV=!0}if(Q.signal!==void 0)g=Q.signal;this[YA]=I;let U=new AbortController;if(this[NF]=U.signal,g!=null){if(!g||typeof g.aborted!=="boolean"||typeof g.addEventListener!=="function")throw TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(g.aborted)U.abort(g.reason);else{this[zT]=U;let Z=new WeakRef(U),R=HV(Z);try{if(typeof zV==="function"&&zV(g)===$V)SV(1500,g);else if(KT(g,"abort").length>=$V)SV(1500,g)}catch{}GF.addAbortListener(g,R),xV.register(U,{signal:g,abort:R},R)}}if(this[FQ]=new _V(wF),jV(this[FQ],I.headersList),bY(this[FQ],"request"),Y==="no-cors"){if(!UT.has(I.method))throw TypeError(`'${I.method} is unsupported in no-cors mode.`);bY(this[FQ],"request-no-cors")}if(J){let Z=RV(this[FQ]),R=Q.headers!==void 0?Q.headers:new MF(Z);if(Z.clear(),R instanceof MF){for(let{name:x,value:O}of R.rawValues())Z.append(x,O,!1);Z.cookies=R.cookies}else gT(this[FQ],R)}let N=A instanceof gA?A[YA].body:null;if((Q.body!=null||N!=null)&&(I.method==="GET"||I.method==="HEAD"))throw TypeError("Request with GET/HEAD method cannot have body.");let w=null;if(Q.body!=null){let[Z,R]=IT(Q.body,I.keepalive);if(w=Z,R&&!RV(this[FQ]).contains("content-type",!0))this[FQ].append("content-type",R)}let L=w??N;if(L!=null&&L.source==null){if(w!=null&&Q.duplex==null)throw TypeError("RequestInit: duplex option is required when sending a body.");if(I.mode!=="same-origin"&&I.mode!=="cors")throw TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');I.useCORSPreflightFlag=!0}let S=L;if(w==null&&N!=null){if(ZV(A))throw TypeError("Cannot construct a Request with a Request object that has already been used.");let Z=new TransformStream;N.stream.pipeThrough(Z),S={source:N.source,length:N.length,stream:Z.readable}}this[YA].body=S}get method(){return v.brandCheck(this,gA),this[YA].method}get url(){return v.brandCheck(this,gA),RT(this[YA].url)}get headers(){return v.brandCheck(this,gA),this[FQ]}get destination(){return v.brandCheck(this,gA),this[YA].destination}get referrer(){if(v.brandCheck(this,gA),this[YA].referrer==="no-referrer")return"";if(this[YA].referrer==="client")return"about:client";return this[YA].referrer.toString()}get referrerPolicy(){return v.brandCheck(this,gA),this[YA].referrerPolicy}get mode(){return v.brandCheck(this,gA),this[YA].mode}get credentials(){return this[YA].credentials}get cache(){return v.brandCheck(this,gA),this[YA].cache}get redirect(){return v.brandCheck(this,gA),this[YA].redirect}get integrity(){return v.brandCheck(this,gA),this[YA].integrity}get keepalive(){return v.brandCheck(this,gA),this[YA].keepalive}get isReloadNavigation(){return v.brandCheck(this,gA),this[YA].reloadNavigation}get isHistoryNavigation(){return v.brandCheck(this,gA),this[YA].historyNavigation}get signal(){return v.brandCheck(this,gA),this[NF]}get body(){return v.brandCheck(this,gA),this[YA].body?this[YA].body.stream:null}get bodyUsed(){return v.brandCheck(this,gA),!!this[YA].body&&GF.isDisturbed(this[YA].body.stream)}get duplex(){return v.brandCheck(this,gA),"half"}clone(){if(v.brandCheck(this,gA),ZV(this))throw TypeError("unusable");let A=OV(this[YA]),Q=new AbortController;if(this.signal.aborted)Q.abort(this.signal.reason);else{let B=WF.get(this.signal);if(B===void 0)B=new Set,WF.set(this.signal,B);let I=new WeakRef(Q);B.add(I),GF.addAbortListener(Q.signal,HV(I))}return PV(A,Q.signal,FT(this[FQ]))}[XV.inspect.custom](A,Q){if(Q.depth===null)Q.depth=2;Q.colors??=!0;let B={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${XV.formatWithOptions(Q,B)}`}}ET(gA);function LF(A){return{method:A.method??"GET",localURLsOnly:A.localURLsOnly??!1,unsafeRequest:A.unsafeRequest??!1,body:A.body??null,client:A.client??null,reservedClient:A.reservedClient??null,replacesClientId:A.replacesClientId??"",window:A.window??"client",keepalive:A.keepalive??!1,serviceWorkers:A.serviceWorkers??"all",initiator:A.initiator??"",destination:A.destination??"",priority:A.priority??null,origin:A.origin??"client",policyContainer:A.policyContainer??"client",referrer:A.referrer??"client",referrerPolicy:A.referrerPolicy??"",mode:A.mode??"no-cors",useCORSPreflightFlag:A.useCORSPreflightFlag??!1,credentials:A.credentials??"same-origin",useCredentials:A.useCredentials??!1,cache:A.cache??"default",redirect:A.redirect??"follow",integrity:A.integrity??"",cryptoGraphicsNonceMetadata:A.cryptoGraphicsNonceMetadata??"",parserMetadata:A.parserMetadata??"",reloadNavigation:A.reloadNavigation??!1,historyNavigation:A.historyNavigation??!1,userActivation:A.userActivation??!1,taintedOrigin:A.taintedOrigin??!1,redirectCount:A.redirectCount??0,responseTainting:A.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:A.preventNoCacheCacheControlHeaderModification??!1,done:A.done??!1,timingAllowFailed:A.timingAllowFailed??!1,urlList:A.urlList,url:A.urlList[0],headersList:A.headersList?new MF(A.headersList):new MF}}function OV(A){let Q=LF({...A,body:null});if(A.body!=null)Q.body=CT(Q,A.body);return Q}function PV(A,Q,B){let I=new gA(wF);return I[YA]=A,I[NF]=Q,I[FQ]=new _V(wF),jV(I[FQ],A.headersList),bY(I[FQ],B),I}Object.defineProperties(gA.prototype,{method:zA,url:zA,headers:zA,redirect:zA,clone:zA,signal:zA,duplex:zA,destination:zA,body:zA,bodyUsed:zA,isHistoryNavigation:zA,isReloadNavigation:zA,keepalive:zA,integrity:zA,cache:zA,credentials:zA,attribute:zA,referrerPolicy:zA,referrer:zA,mode:zA,[Symbol.toStringTag]:{value:"Request",configurable:!0}});v.converters.Request=v.interfaceConverter(gA);v.converters.RequestInfo=function(A,Q,B){if(typeof A==="string")return v.converters.USVString(A,Q,B);if(A instanceof gA)return v.converters.Request(A,Q,B);return v.converters.USVString(A,Q,B)};v.converters.AbortSignal=v.interfaceConverter(AbortSignal);v.converters.RequestInit=v.dictionaryConverter([{key:"method",converter:v.converters.ByteString},{key:"headers",converter:v.converters.HeadersInit},{key:"body",converter:v.nullableConverter(v.converters.BodyInit)},{key:"referrer",converter:v.converters.USVString},{key:"referrerPolicy",converter:v.converters.DOMString,allowedValues:GT},{key:"mode",converter:v.converters.DOMString,allowedValues:MT},{key:"credentials",converter:v.converters.DOMString,allowedValues:wT},{key:"cache",converter:v.converters.DOMString,allowedValues:WT},{key:"redirect",converter:v.converters.DOMString,allowedValues:NT},{key:"integrity",converter:v.converters.DOMString},{key:"keepalive",converter:v.converters.boolean},{key:"signal",converter:v.nullableConverter((A)=>v.converters.AbortSignal(A,"RequestInit","signal",{strict:!1}))},{key:"window",converter:v.converters.any},{key:"duplex",converter:v.converters.DOMString,allowedValues:LT},{key:"dispatcher",converter:v.converters.any}]);qV.exports={Request:gA,makeRequest:LF,fromInnerRequest:PV,cloneRequest:OV}});var NC=W((Km,aV)=>{var{makeNetworkError:IA,makeAppropriateNetworkError:VF,filterResponse:mY,makeResponse:ZF,fromInnerResponse:ST}=UC(),{HeadersList:yV}=JI(),{Request:$T,cloneRequest:HT}=YE(),hB=z("node:zlib"),{bytesMatch:TT,makePolicyContainer:_T,clonePolicyContainer:jT,requestBadPort:xT,TAOCheck:OT,appendRequestOriginHeader:PT,responseLocationURL:qT,requestCurrentURL:aQ,setRequestReferrerPolicyOnRedirect:yT,tryUpgradeRequestToAPotentiallyTrustworthyURL:hT,createOpaqueTimingInfo:pY,appendFetchMetadata:kT,corsCheck:fT,crossOriginResourcePolicyCheck:vT,determineRequestsReferrer:bT,coarsenedSharedCurrentTime:GC,createDeferredPromise:mT,isBlobLike:uT,sameOrigin:lY,isCancelled:UI,isAborted:hV,isErrorLike:cT,fullyReadBody:dT,readableStreamClose:lT,isomorphicEncode:RF,urlIsLocal:pT,urlIsHttpHttpsScheme:iY,urlHasHttpsScheme:iT,clampAndCoarsenConnectionTimingInfo:nT,simpleRangeHeaderValue:aT,buildContentRange:sT,createInflate:oT,extractMimeType:rT}=BQ(),{kState:bV,kDispatcher:tT}=zB(),GI=z("node:assert"),{safelyExtractBody:nY,extractBody:kV}=cI(),{redirectStatusSet:mV,nullBodyStatus:uV,safeMethodsSet:eT,requestBodyHeader:A_,subresourceSet:Q_}=yE(),B_=z("node:events"),{Readable:I_,pipeline:E_,finished:C_}=z("node:stream"),{addAbortListener:g_,isErrored:F_,isReadable:XF,bufferToLowerCasedHeaderName:fV}=p(),{dataURLProcessor:D_,serializeAMimeType:Y_,minimizeSupportedMimeType:J_}=oA(),{getGlobalDispatcher:U_}=EF(),{webidl:G_}=jA(),{STATUS_CODES:N_}=z("node:http"),M_=["GET","HEAD"],w_=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",uY;class aY extends B_{constructor(A){super();this.dispatcher=A,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(A){if(this.state!=="ongoing")return;this.state="terminated",this.connection?.destroy(A),this.emit("terminated",A)}abort(A){if(this.state!=="ongoing")return;if(this.state="aborted",!A)A=new DOMException("The operation was aborted.","AbortError");this.serializedAbortReason=A,this.connection?.destroy(A),this.emit("terminated",A)}}function W_(A){cV(A,"fetch")}function L_(A,Q=void 0){G_.argumentLengthCheck(arguments,1,"globalThis.fetch");let B=mT(),I;try{I=new $T(A,Q)}catch(Y){return B.reject(Y),B.promise}let E=I[bV];if(I.signal.aborted)return cY(B,E,null,I.signal.reason),B.promise;if(E.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope")E.serviceWorkers="none";let g=null,F=!1,D=null;return g_(I.signal,()=>{F=!0,GI(D!=null),D.abort(I.signal.reason);let Y=g?.deref();cY(B,E,Y,I.signal.reason)}),D=lV({request:E,processResponseEndOfBody:W_,processResponse:(Y)=>{if(F)return;if(Y.aborted){cY(B,E,g,D.serializedAbortReason);return}if(Y.type==="error"){B.reject(TypeError("fetch failed",{cause:Y.error}));return}g=new WeakRef(ST(Y,"immutable")),B.resolve(g.deref()),B=null},dispatcher:I[tT]}),B.promise}function cV(A,Q="other"){if(A.type==="error"&&A.aborted)return;if(!A.urlList?.length)return;let B=A.urlList[0],I=A.timingInfo,E=A.cacheState;if(!iY(B))return;if(I===null)return;if(!A.timingAllowPassed)I=pY({startTime:I.startTime}),E="";I.endTime=GC(),A.timingInfo=I,dV(I,B.href,Q,globalThis,E)}var dV=performance.markResourceTiming;function cY(A,Q,B,I){if(A)A.reject(I);if(Q.body!=null&&XF(Q.body?.stream))Q.body.stream.cancel(I).catch((C)=>{if(C.code==="ERR_INVALID_STATE")return;throw C});if(B==null)return;let E=B[bV];if(E.body!=null&&XF(E.body?.stream))E.body.stream.cancel(I).catch((C)=>{if(C.code==="ERR_INVALID_STATE")return;throw C})}function lV({request:A,processRequestBodyChunkLength:Q,processRequestEndOfBody:B,processResponse:I,processResponseEndOfBody:E,processResponseConsumeBody:C,useParallelQueue:g=!1,dispatcher:F=U_()}){GI(F);let D=null,J=!1;if(A.client!=null)D=A.client.globalObject,J=A.client.crossOriginIsolatedCapability;let Y=GC(J),U=pY({startTime:Y}),N={controller:new aY(F),request:A,timingInfo:U,processRequestBodyChunkLength:Q,processRequestEndOfBody:B,processResponse:I,processResponseConsumeBody:C,processResponseEndOfBody:E,taskDestination:D,crossOriginIsolatedCapability:J};if(GI(!A.body||A.body.stream),A.window==="client")A.window=A.client?.globalObject?.constructor?.name==="Window"?A.client:"no-window";if(A.origin==="client")A.origin=A.client.origin;if(A.policyContainer==="client")if(A.client!=null)A.policyContainer=jT(A.client.policyContainer);else A.policyContainer=_T();if(!A.headersList.contains("accept",!0))A.headersList.append("accept","*/*",!0);if(!A.headersList.contains("accept-language",!0))A.headersList.append("accept-language","*",!0);if(A.priority===null);if(Q_.has(A.destination));return pV(N).catch((w)=>{N.controller.terminate(w)}),N.controller}async function pV(A,Q=!1){let B=A.request,I=null;if(B.localURLsOnly&&!pT(aQ(B)))I=IA("local URLs only");if(hT(B),xT(B)==="blocked")I=IA("bad port");if(B.referrerPolicy==="")B.referrerPolicy=B.policyContainer.referrerPolicy;if(B.referrer!=="no-referrer")B.referrer=bT(B);if(I===null)I=await(async()=>{let C=aQ(B);if(lY(C,B.url)&&B.responseTainting==="basic"||C.protocol==="data:"||(B.mode==="navigate"||B.mode==="websocket"))return B.responseTainting="basic",await vV(A);if(B.mode==="same-origin")return IA('request mode cannot be "same-origin"');if(B.mode==="no-cors"){if(B.redirect!=="follow")return IA('redirect mode cannot be "follow" for "no-cors" request');return B.responseTainting="opaque",await vV(A)}if(!iY(aQ(B)))return IA("URL scheme must be a HTTP(S) scheme");return B.responseTainting="cors",await iV(A)})();if(Q)return I;if(I.status!==0&&!I.internalResponse){if(B.responseTainting==="cors");if(B.responseTainting==="basic")I=mY(I,"basic");else if(B.responseTainting==="cors")I=mY(I,"cors");else if(B.responseTainting==="opaque")I=mY(I,"opaque");else GI(!1)}let E=I.status===0?I:I.internalResponse;if(E.urlList.length===0)E.urlList.push(...B.urlList);if(!B.timingAllowFailed)I.timingAllowPassed=!0;if(I.type==="opaque"&&E.status===206&&E.rangeRequested&&!B.headers.contains("range",!0))I=E=IA();if(I.status!==0&&(B.method==="HEAD"||B.method==="CONNECT"||uV.includes(E.status)))E.body=null,A.controller.dump=!0;if(B.integrity){let C=(F)=>dY(A,IA(F));if(B.responseTainting==="opaque"||I.body==null){C(I.error);return}let g=(F)=>{if(!TT(F,B.integrity)){C("integrity mismatch");return}I.body=nY(F)[0],dY(A,I)};await dT(I.body,g,C)}else dY(A,I)}function vV(A){if(UI(A)&&A.request.redirectCount===0)return Promise.resolve(VF(A));let{request:Q}=A,{protocol:B}=aQ(Q);switch(B){case"about:":return Promise.resolve(IA("about scheme is not supported"));case"blob:":{if(!uY)uY=z("node:buffer").resolveObjectURL;let I=aQ(Q);if(I.search.length!==0)return Promise.resolve(IA("NetworkError when attempting to fetch resource."));let E=uY(I.toString());if(Q.method!=="GET"||!uT(E))return Promise.resolve(IA("invalid method"));let C=ZF(),g=E.size,F=RF(`${g}`),D=E.type;if(!Q.headersList.contains("range",!0)){let J=kV(E);C.statusText="OK",C.body=J[0],C.headersList.set("content-length",F,!0),C.headersList.set("content-type",D,!0)}else{C.rangeRequested=!0;let J=Q.headersList.get("range",!0),Y=aT(J,!0);if(Y==="failure")return Promise.resolve(IA("failed to fetch the data URL"));let{rangeStartValue:U,rangeEndValue:N}=Y;if(U===null)U=g-N,N=U+N-1;else{if(U>=g)return Promise.resolve(IA("Range start is greater than the blob's size."));if(N===null||N>=g)N=g-1}let w=E.slice(U,N,D),L=kV(w);C.body=L[0];let S=RF(`${w.size}`),Z=sT(U,N,g);C.status=206,C.statusText="Partial Content",C.headersList.set("content-length",S,!0),C.headersList.set("content-type",D,!0),C.headersList.set("content-range",Z,!0)}return Promise.resolve(C)}case"data:":{let I=aQ(Q),E=D_(I);if(E==="failure")return Promise.resolve(IA("failed to fetch the data URL"));let C=Y_(E.mimeType);return Promise.resolve(ZF({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:C}]],body:nY(E.body)[0]}))}case"file:":return Promise.resolve(IA("not implemented... yet..."));case"http:":case"https:":return iV(A).catch((I)=>IA(I));default:return Promise.resolve(IA("unknown scheme"))}}function V_(A,Q){if(A.request.done=!0,A.processResponseDone!=null)queueMicrotask(()=>A.processResponseDone(Q))}function dY(A,Q){let B=A.timingInfo,I=()=>{let C=Date.now();if(A.request.destination==="document")A.controller.fullTimingInfo=B;A.controller.reportTimingSteps=()=>{if(A.request.url.protocol!=="https:")return;B.endTime=C;let{cacheState:F,bodyInfo:D}=Q;if(!Q.timingAllowPassed)B=pY(B),F="";let J=0;if(A.request.mode!=="navigator"||!Q.hasCrossOriginRedirects){J=Q.status;let Y=rT(Q.headersList);if(Y!=="failure")D.contentType=J_(Y)}if(A.request.initiatorType!=null)dV(B,A.request.url.href,A.request.initiatorType,globalThis,F,D,J)};let g=()=>{if(A.request.done=!0,A.processResponseEndOfBody!=null)queueMicrotask(()=>A.processResponseEndOfBody(Q));if(A.request.initiatorType!=null)A.controller.reportTimingSteps()};queueMicrotask(()=>g())};if(A.processResponse!=null)queueMicrotask(()=>{A.processResponse(Q),A.processResponse=null});let E=Q.type==="error"?Q:Q.internalResponse??Q;if(E.body==null)I();else C_(E.body.stream,()=>{I()})}async function iV(A){let Q=A.request,B=null,I=null,E=A.timingInfo;if(Q.serviceWorkers==="all");if(B===null){if(Q.redirect==="follow")Q.serviceWorkers="none";if(I=B=await nV(A),Q.responseTainting==="cors"&&fT(Q,B)==="failure")return IA("cors failure");if(OT(Q,B)==="failure")Q.timingAllowFailed=!0}if((Q.responseTainting==="opaque"||B.type==="opaque")&&vT(Q.origin,Q.client,Q.destination,I)==="blocked")return IA("blocked");if(mV.has(I.status)){if(Q.redirect!=="manual")A.controller.connection.destroy(void 0,!1);if(Q.redirect==="error")B=IA("unexpected redirect");else if(Q.redirect==="manual")B=I;else if(Q.redirect==="follow")B=await Z_(A,B);else GI(!1)}return B.timingInfo=E,B}function Z_(A,Q){let B=A.request,I=Q.internalResponse?Q.internalResponse:Q,E;try{if(E=qT(I,aQ(B).hash),E==null)return Q}catch(g){return Promise.resolve(IA(g))}if(!iY(E))return Promise.resolve(IA("URL scheme must be a HTTP(S) scheme"));if(B.redirectCount===20)return Promise.resolve(IA("redirect count exceeded"));if(B.redirectCount+=1,B.mode==="cors"&&(E.username||E.password)&&!lY(B,E))return Promise.resolve(IA('cross origin not allowed for request mode "cors"'));if(B.responseTainting==="cors"&&(E.username||E.password))return Promise.resolve(IA('URL cannot contain credentials for request mode "cors"'));if(I.status!==303&&B.body!=null&&B.body.source==null)return Promise.resolve(IA());if([301,302].includes(I.status)&&B.method==="POST"||I.status===303&&!M_.includes(B.method)){B.method="GET",B.body=null;for(let g of A_)B.headersList.delete(g)}if(!lY(aQ(B),E))B.headersList.delete("authorization",!0),B.headersList.delete("proxy-authorization",!0),B.headersList.delete("cookie",!0),B.headersList.delete("host",!0);if(B.body!=null)GI(B.body.source!=null),B.body=nY(B.body.source)[0];let C=A.timingInfo;if(C.redirectEndTime=C.postRedirectStartTime=GC(A.crossOriginIsolatedCapability),C.redirectStartTime===0)C.redirectStartTime=C.startTime;return B.urlList.push(E),yT(B,I),pV(A,!0)}async function nV(A,Q=!1,B=!1){let I=A.request,E=null,C=null,g=null,F=null,D=!1;if(I.window==="no-window"&&I.redirect==="error")E=A,C=I;else C=HT(I),E={...A},E.request=C;let J=I.credentials==="include"||I.credentials==="same-origin"&&I.responseTainting==="basic",Y=C.body?C.body.length:null,U=null;if(C.body==null&&["POST","PUT"].includes(C.method))U="0";if(Y!=null)U=RF(`${Y}`);if(U!=null)C.headersList.append("content-length",U,!0);if(Y!=null&&C.keepalive);if(C.referrer instanceof URL)C.headersList.append("referer",RF(C.referrer.href),!0);if(PT(C),kT(C),!C.headersList.contains("user-agent",!0))C.headersList.append("user-agent",w_);if(C.cache==="default"&&(C.headersList.contains("if-modified-since",!0)||C.headersList.contains("if-none-match",!0)||C.headersList.contains("if-unmodified-since",!0)||C.headersList.contains("if-match",!0)||C.headersList.contains("if-range",!0)))C.cache="no-store";if(C.cache==="no-cache"&&!C.preventNoCacheCacheControlHeaderModification&&!C.headersList.contains("cache-control",!0))C.headersList.append("cache-control","max-age=0",!0);if(C.cache==="no-store"||C.cache==="reload"){if(!C.headersList.contains("pragma",!0))C.headersList.append("pragma","no-cache",!0);if(!C.headersList.contains("cache-control",!0))C.headersList.append("cache-control","no-cache",!0)}if(C.headersList.contains("range",!0))C.headersList.append("accept-encoding","identity",!0);if(!C.headersList.contains("accept-encoding",!0))if(iT(aQ(C)))C.headersList.append("accept-encoding","br, gzip, deflate",!0);else C.headersList.append("accept-encoding","gzip, deflate",!0);if(C.headersList.delete("host",!0),F==null)C.cache="no-store";if(C.cache!=="no-store"&&C.cache!=="reload");if(g==null){if(C.cache==="only-if-cached")return IA("only if cached");let N=await R_(E,J,B);if(!eT.has(C.method)&&N.status>=200&&N.status<=399);if(D&&N.status===304);if(g==null)g=N}if(g.urlList=[...C.urlList],C.headersList.contains("range",!0))g.rangeRequested=!0;if(g.requestIncludesCredentials=J,g.status===407){if(I.window==="no-window")return IA();if(UI(A))return VF(A);return IA("proxy authentication required")}if(g.status===421&&!B&&(I.body==null||I.body.source!=null)){if(UI(A))return VF(A);A.controller.connection.destroy(),g=await nV(A,Q,!0)}return g}async function R_(A,Q=!1,B=!1){GI(!A.controller.connection||A.controller.connection.destroyed),A.controller.connection={abort:null,destroyed:!1,destroy(L,S=!0){if(!this.destroyed){if(this.destroyed=!0,S)this.abort?.(L??new DOMException("The operation was aborted.","AbortError"))}}};let I=A.request,E=null,C=A.timingInfo;if(!0)I.cache="no-store";let F=B?"yes":"no";if(I.mode==="websocket");let D=null;if(I.body==null&&A.processRequestEndOfBody)queueMicrotask(()=>A.processRequestEndOfBody());else if(I.body!=null){let L=async function*(R){if(UI(A))return;yield R,A.processRequestBodyChunkLength?.(R.byteLength)},S=()=>{if(UI(A))return;if(A.processRequestEndOfBody)A.processRequestEndOfBody()},Z=(R)=>{if(UI(A))return;if(R.name==="AbortError")A.controller.abort();else A.controller.terminate(R)};D=async function*(){try{for await(let R of I.body.stream)yield*L(R);S()}catch(R){Z(R)}}()}try{let{body:L,status:S,statusText:Z,headersList:R,socket:x}=await w({body:D});if(x)E=ZF({status:S,statusText:Z,headersList:R,socket:x});else{let O=L[Symbol.asyncIterator]();A.controller.next=()=>O.next(),E=ZF({status:S,statusText:Z,headersList:R})}}catch(L){if(L.name==="AbortError")return A.controller.connection.destroy(),VF(A,L);return IA(L)}let J=async()=>{await A.controller.resume()},Y=(L)=>{if(!UI(A))A.controller.abort(L)},U=new ReadableStream({async start(L){A.controller.controller=L},async pull(L){await J(L)},async cancel(L){await Y(L)},type:"bytes"});E.body={stream:U,source:null,length:null},A.controller.onAborted=N,A.controller.on("terminated",N),A.controller.resume=async()=>{while(!0){let L,S;try{let{done:R,value:x}=await A.controller.next();if(hV(A))break;L=R?void 0:x}catch(R){if(A.controller.ended&&!C.encodedBodySize)L=void 0;else L=R,S=!0}if(L===void 0){lT(A.controller.controller),V_(A,E);return}if(C.decodedBodySize+=L?.byteLength??0,S){A.controller.terminate(L);return}let Z=new Uint8Array(L);if(Z.byteLength)A.controller.controller.enqueue(Z);if(F_(U)){A.controller.terminate();return}if(A.controller.controller.desiredSize<=0)return}};function N(L){if(hV(A)){if(E.aborted=!0,XF(U))A.controller.controller.error(A.controller.serializedAbortReason)}else if(XF(U))A.controller.controller.error(TypeError("terminated",{cause:cT(L)?L:void 0}));A.controller.connection.destroy()}return E;function w({body:L}){let S=aQ(I),Z=A.controller.dispatcher;return new Promise((R,x)=>Z.dispatch({path:S.pathname+S.search,origin:S.origin,method:I.method,body:Z.isMockActive?I.body&&(I.body.source||I.body.stream):L,headers:I.headersList.entries,maxRedirections:0,upgrade:I.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(O){let{connection:q}=A.controller;if(C.finalConnectionTimingInfo=nT(void 0,C.postRedirectStartTime,A.crossOriginIsolatedCapability),q.destroyed)O(new DOMException("The operation was aborted.","AbortError"));else A.controller.on("terminated",O),this.abort=q.abort=O;C.finalNetworkRequestStartTime=GC(A.crossOriginIsolatedCapability)},onResponseStarted(){C.finalNetworkResponseStartTime=GC(A.crossOriginIsolatedCapability)},onHeaders(O,q,a,t){if(O<200)return;let AA="",SQ=new yV;for(let _A=0;_A5)return x(Error(`too many content-encodings in response: ${nB.length}, maximum allowed is 5`)),!0;for(let SI=nB.length-1;SI>=0;--SI){let $I=nB[SI].trim();if($I==="x-gzip"||$I==="gzip")OA.push(hB.createGunzip({flush:hB.constants.Z_SYNC_FLUSH,finishFlush:hB.constants.Z_SYNC_FLUSH}));else if($I==="deflate")OA.push(oT({flush:hB.constants.Z_SYNC_FLUSH,finishFlush:hB.constants.Z_SYNC_FLUSH}));else if($I==="br")OA.push(hB.createBrotliDecompress({flush:hB.constants.BROTLI_OPERATION_FLUSH,finishFlush:hB.constants.BROTLI_OPERATION_FLUSH}));else{OA.length=0;break}}}let ZB=this.onError.bind(this);return R({status:O,statusText:t,headersList:SQ,body:OA.length?E_(this.body,...OA,(_A)=>{if(_A)this.onError(_A)}).on("error",ZB):this.body.on("error",ZB)}),!0},onData(O){if(A.controller.dump)return;let q=O;return C.encodedBodySize+=q.byteLength,this.body.push(q)},onComplete(){if(this.abort)A.controller.off("terminated",this.abort);if(A.controller.onAborted)A.controller.off("terminated",A.controller.onAborted);A.controller.ended=!0,this.body.push(null)},onError(O){if(this.abort)A.controller.off("terminated",this.abort);this.body?.destroy(O),A.controller.terminate(O),x(O)},onUpgrade(O,q,a){if(O!==101)return;let t=new yV;for(let AA=0;AA{sV.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}});var rV=W((Sm,oV)=>{var{webidl:DQ}=jA(),KF=Symbol("ProgressEvent state");class MC extends Event{constructor(A,Q={}){A=DQ.converters.DOMString(A,"ProgressEvent constructor","type"),Q=DQ.converters.ProgressEventInit(Q??{});super(A,Q);this[KF]={lengthComputable:Q.lengthComputable,loaded:Q.loaded,total:Q.total}}get lengthComputable(){return DQ.brandCheck(this,MC),this[KF].lengthComputable}get loaded(){return DQ.brandCheck(this,MC),this[KF].loaded}get total(){return DQ.brandCheck(this,MC),this[KF].total}}DQ.converters.ProgressEventInit=DQ.dictionaryConverter([{key:"lengthComputable",converter:DQ.converters.boolean,defaultValue:()=>!1},{key:"loaded",converter:DQ.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:DQ.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:DQ.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:DQ.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:DQ.converters.boolean,defaultValue:()=>!1}]);oV.exports={ProgressEvent:MC}});var eV=W(($m,tV)=>{function X_(A){if(!A)return"failure";switch(A.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}tV.exports={getEncoding:X_}});var FZ=W((Hm,gZ)=>{var{kState:JE,kError:oY,kResult:AZ,kAborted:wC,kLastProgressEventFired:rY}=sY(),{ProgressEvent:K_}=rV(),{getEncoding:QZ}=eV(),{serializeAMimeType:z_,parseMIMEType:BZ}=oA(),{types:S_}=z("node:util"),{StringDecoder:IZ}=z("string_decoder"),{btoa:EZ}=z("node:buffer"),$_={enumerable:!0,writable:!1,configurable:!1};function H_(A,Q,B,I){if(A[JE]==="loading")throw new DOMException("Invalid state","InvalidStateError");A[JE]="loading",A[AZ]=null,A[oY]=null;let C=Q.stream().getReader(),g=[],F=C.read(),D=!0;(async()=>{while(!A[wC])try{let{done:J,value:Y}=await F;if(D&&!A[wC])queueMicrotask(()=>{kB("loadstart",A)});if(D=!1,!J&&S_.isUint8Array(Y)){if(g.push(Y),(A[rY]===void 0||Date.now()-A[rY]>=50)&&!A[wC])A[rY]=Date.now(),queueMicrotask(()=>{kB("progress",A)});F=C.read()}else if(J){queueMicrotask(()=>{A[JE]="done";try{let U=T_(g,B,Q.type,I);if(A[wC])return;A[AZ]=U,kB("load",A)}catch(U){A[oY]=U,kB("error",A)}if(A[JE]!=="loading")kB("loadend",A)});break}}catch(J){if(A[wC])return;queueMicrotask(()=>{if(A[JE]="done",A[oY]=J,kB("error",A),A[JE]!=="loading")kB("loadend",A)});break}})()}function kB(A,Q){let B=new K_(A,{bubbles:!1,cancelable:!1});Q.dispatchEvent(B)}function T_(A,Q,B,I){switch(Q){case"DataURL":{let E="data:",C=BZ(B||"application/octet-stream");if(C!=="failure")E+=z_(C);E+=";base64,";let g=new IZ("latin1");for(let F of A)E+=EZ(g.write(F));return E+=EZ(g.end()),E}case"Text":{let E="failure";if(I)E=QZ(I);if(E==="failure"&&B){let C=BZ(B);if(C!=="failure")E=QZ(C.parameters.get("charset"))}if(E==="failure")E="UTF-8";return __(A,E)}case"ArrayBuffer":return CZ(A).buffer;case"BinaryString":{let E="",C=new IZ("latin1");for(let g of A)E+=C.write(g);return E+=C.end(),E}}}function __(A,Q){let B=CZ(A),I=j_(B),E=0;if(I!==null)Q=I,E=I==="UTF-8"?3:2;let C=B.slice(E);return new TextDecoder(Q).decode(C)}function j_(A){let[Q,B,I]=A;if(Q===239&&B===187&&I===191)return"UTF-8";else if(Q===254&&B===255)return"UTF-16BE";else if(Q===255&&B===254)return"UTF-16LE";return null}function CZ(A){let Q=A.reduce((I,E)=>{return I+E.byteLength},0),B=0;return A.reduce((I,E)=>{return I.set(E,B),B+=E.byteLength,I},new Uint8Array(Q))}gZ.exports={staticPropertyDescriptors:$_,readOperation:H_,fireAProgressEvent:kB}});var UZ=W((Tm,JZ)=>{var{staticPropertyDescriptors:UE,readOperation:zF,fireAProgressEvent:DZ}=FZ(),{kState:NI,kError:YZ,kResult:SF,kEvents:e,kAborted:x_}=sY(),{webidl:CA}=jA(),{kEnumerableProperty:eA}=p();class EA extends EventTarget{constructor(){super();this[NI]="empty",this[SF]=null,this[YZ]=null,this[e]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(A){CA.brandCheck(this,EA),CA.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer"),A=CA.converters.Blob(A,{strict:!1}),zF(this,A,"ArrayBuffer")}readAsBinaryString(A){CA.brandCheck(this,EA),CA.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString"),A=CA.converters.Blob(A,{strict:!1}),zF(this,A,"BinaryString")}readAsText(A,Q=void 0){if(CA.brandCheck(this,EA),CA.argumentLengthCheck(arguments,1,"FileReader.readAsText"),A=CA.converters.Blob(A,{strict:!1}),Q!==void 0)Q=CA.converters.DOMString(Q,"FileReader.readAsText","encoding");zF(this,A,"Text",Q)}readAsDataURL(A){CA.brandCheck(this,EA),CA.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL"),A=CA.converters.Blob(A,{strict:!1}),zF(this,A,"DataURL")}abort(){if(this[NI]==="empty"||this[NI]==="done"){this[SF]=null;return}if(this[NI]==="loading")this[NI]="done",this[SF]=null;if(this[x_]=!0,DZ("abort",this),this[NI]!=="loading")DZ("loadend",this)}get readyState(){switch(CA.brandCheck(this,EA),this[NI]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return CA.brandCheck(this,EA),this[SF]}get error(){return CA.brandCheck(this,EA),this[YZ]}get onloadend(){return CA.brandCheck(this,EA),this[e].loadend}set onloadend(A){if(CA.brandCheck(this,EA),this[e].loadend)this.removeEventListener("loadend",this[e].loadend);if(typeof A==="function")this[e].loadend=A,this.addEventListener("loadend",A);else this[e].loadend=null}get onerror(){return CA.brandCheck(this,EA),this[e].error}set onerror(A){if(CA.brandCheck(this,EA),this[e].error)this.removeEventListener("error",this[e].error);if(typeof A==="function")this[e].error=A,this.addEventListener("error",A);else this[e].error=null}get onloadstart(){return CA.brandCheck(this,EA),this[e].loadstart}set onloadstart(A){if(CA.brandCheck(this,EA),this[e].loadstart)this.removeEventListener("loadstart",this[e].loadstart);if(typeof A==="function")this[e].loadstart=A,this.addEventListener("loadstart",A);else this[e].loadstart=null}get onprogress(){return CA.brandCheck(this,EA),this[e].progress}set onprogress(A){if(CA.brandCheck(this,EA),this[e].progress)this.removeEventListener("progress",this[e].progress);if(typeof A==="function")this[e].progress=A,this.addEventListener("progress",A);else this[e].progress=null}get onload(){return CA.brandCheck(this,EA),this[e].load}set onload(A){if(CA.brandCheck(this,EA),this[e].load)this.removeEventListener("load",this[e].load);if(typeof A==="function")this[e].load=A,this.addEventListener("load",A);else this[e].load=null}get onabort(){return CA.brandCheck(this,EA),this[e].abort}set onabort(A){if(CA.brandCheck(this,EA),this[e].abort)this.removeEventListener("abort",this[e].abort);if(typeof A==="function")this[e].abort=A,this.addEventListener("abort",A);else this[e].abort=null}}EA.EMPTY=EA.prototype.EMPTY=0;EA.LOADING=EA.prototype.LOADING=1;EA.DONE=EA.prototype.DONE=2;Object.defineProperties(EA.prototype,{EMPTY:UE,LOADING:UE,DONE:UE,readAsArrayBuffer:eA,readAsBinaryString:eA,readAsText:eA,readAsDataURL:eA,abort:eA,readyState:eA,result:eA,error:eA,onloadstart:eA,onprogress:eA,onload:eA,onabort:eA,onerror:eA,onloadend:eA,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(EA,{EMPTY:UE,LOADING:UE,DONE:UE});JZ.exports={FileReader:EA}});var $F=W((_m,GZ)=>{GZ.exports={kConstruct:GA().kConstruct}});var wZ=W((jm,MZ)=>{var O_=z("node:assert"),{URLSerializer:NZ}=oA(),{isValidHeaderName:P_}=BQ();function q_(A,Q,B=!1){let I=NZ(A,B),E=NZ(Q,B);return I===E}function y_(A){O_(A!==null);let Q=[];for(let B of A.split(","))if(B=B.trim(),P_(B))Q.push(B);return Q}MZ.exports={urlEquals:q_,getFieldValues:y_}});var VZ=W((xm,LZ)=>{var{kConstruct:h_}=$F(),{urlEquals:k_,getFieldValues:tY}=wZ(),{kEnumerableProperty:MI,isDisturbed:f_}=p(),{webidl:h}=jA(),{Response:v_,cloneResponse:b_,fromInnerResponse:m_}=UC(),{Request:UB,fromInnerRequest:u_}=YE(),{kState:PQ}=zB(),{fetching:c_}=NC(),{urlIsHttpHttpsScheme:HF,createDeferredPromise:GE,readAllBytes:d_}=BQ(),eY=z("node:assert");class sQ{#A;constructor(){if(arguments[0]!==h_)h.illegalConstructor();h.util.markAsUncloneable(this),this.#A=arguments[1]}async match(A,Q={}){h.brandCheck(this,sQ);let B="Cache.match";h.argumentLengthCheck(arguments,1,B),A=h.converters.RequestInfo(A,B,"request"),Q=h.converters.CacheQueryOptions(Q,B,"options");let I=this.#B(A,Q,1);if(I.length===0)return;return I[0]}async matchAll(A=void 0,Q={}){h.brandCheck(this,sQ);let B="Cache.matchAll";if(A!==void 0)A=h.converters.RequestInfo(A,B,"request");return Q=h.converters.CacheQueryOptions(Q,B,"options"),this.#B(A,Q)}async add(A){h.brandCheck(this,sQ);let Q="Cache.add";h.argumentLengthCheck(arguments,1,Q),A=h.converters.RequestInfo(A,Q,"request");let B=[A];return await this.addAll(B)}async addAll(A){h.brandCheck(this,sQ);let Q="Cache.addAll";h.argumentLengthCheck(arguments,1,Q);let B=[],I=[];for(let U of A){if(U===void 0)throw h.errors.conversionFailed({prefix:Q,argument:"Argument 1",types:["undefined is not allowed"]});if(U=h.converters.RequestInfo(U),typeof U==="string")continue;let N=U[PQ];if(!HF(N.url)||N.method!=="GET")throw h.errors.exception({header:Q,message:"Expected http/s scheme when method is not GET."})}let E=[];for(let U of A){let N=new UB(U)[PQ];if(!HF(N.url))throw h.errors.exception({header:Q,message:"Expected http/s scheme."});N.initiator="fetch",N.destination="subresource",I.push(N);let w=GE();E.push(c_({request:N,processResponse(L){if(L.type==="error"||L.status===206||L.status<200||L.status>299)w.reject(h.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(L.headersList.contains("vary")){let S=tY(L.headersList.get("vary"));for(let Z of S)if(Z==="*"){w.reject(h.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let R of E)R.abort();return}}},processResponseEndOfBody(L){if(L.aborted){w.reject(new DOMException("aborted","AbortError"));return}w.resolve(L)}})),B.push(w.promise)}let g=await Promise.all(B),F=[],D=0;for(let U of g){let N={type:"put",request:I[D],response:U};F.push(N),D++}let J=GE(),Y=null;try{this.#Q(F)}catch(U){Y=U}return queueMicrotask(()=>{if(Y===null)J.resolve(void 0);else J.reject(Y)}),J.promise}async put(A,Q){h.brandCheck(this,sQ);let B="Cache.put";h.argumentLengthCheck(arguments,2,B),A=h.converters.RequestInfo(A,B,"request"),Q=h.converters.Response(Q,B,"response");let I=null;if(A instanceof UB)I=A[PQ];else I=new UB(A)[PQ];if(!HF(I.url)||I.method!=="GET")throw h.errors.exception({header:B,message:"Expected an http/s scheme when method is not GET"});let E=Q[PQ];if(E.status===206)throw h.errors.exception({header:B,message:"Got 206 status"});if(E.headersList.contains("vary")){let N=tY(E.headersList.get("vary"));for(let w of N)if(w==="*")throw h.errors.exception({header:B,message:"Got * vary field value"})}if(E.body&&(f_(E.body.stream)||E.body.stream.locked))throw h.errors.exception({header:B,message:"Response body is locked or disturbed"});let C=b_(E),g=GE();if(E.body!=null){let w=E.body.stream.getReader();d_(w).then(g.resolve,g.reject)}else g.resolve(void 0);let F=[],D={type:"put",request:I,response:C};F.push(D);let J=await g.promise;if(C.body!=null)C.body.source=J;let Y=GE(),U=null;try{this.#Q(F)}catch(N){U=N}return queueMicrotask(()=>{if(U===null)Y.resolve();else Y.reject(U)}),Y.promise}async delete(A,Q={}){h.brandCheck(this,sQ);let B="Cache.delete";h.argumentLengthCheck(arguments,1,B),A=h.converters.RequestInfo(A,B,"request"),Q=h.converters.CacheQueryOptions(Q,B,"options");let I=null;if(A instanceof UB){if(I=A[PQ],I.method!=="GET"&&!Q.ignoreMethod)return!1}else eY(typeof A==="string"),I=new UB(A)[PQ];let E=[],C={type:"delete",request:I,options:Q};E.push(C);let g=GE(),F=null,D;try{D=this.#Q(E)}catch(J){F=J}return queueMicrotask(()=>{if(F===null)g.resolve(!!D?.length);else g.reject(F)}),g.promise}async keys(A=void 0,Q={}){h.brandCheck(this,sQ);let B="Cache.keys";if(A!==void 0)A=h.converters.RequestInfo(A,B,"request");Q=h.converters.CacheQueryOptions(Q,B,"options");let I=null;if(A!==void 0){if(A instanceof UB){if(I=A[PQ],I.method!=="GET"&&!Q.ignoreMethod)return[]}else if(typeof A==="string")I=new UB(A)[PQ]}let E=GE(),C=[];if(A===void 0)for(let g of this.#A)C.push(g[0]);else{let g=this.#E(I,Q);for(let F of g)C.push(F[0])}return queueMicrotask(()=>{let g=[];for(let F of C){let D=u_(F,new AbortController().signal,"immutable");g.push(D)}E.resolve(Object.freeze(g))}),E.promise}#Q(A){let Q=this.#A,B=[...Q],I=[],E=[];try{for(let C of A){if(C.type!=="delete"&&C.type!=="put")throw h.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(C.type==="delete"&&C.response!=null)throw h.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#E(C.request,C.options,I).length)throw new DOMException("???","InvalidStateError");let g;if(C.type==="delete"){if(g=this.#E(C.request,C.options),g.length===0)return[];for(let F of g){let D=Q.indexOf(F);eY(D!==-1),Q.splice(D,1)}}else if(C.type==="put"){if(C.response==null)throw h.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let F=C.request;if(!HF(F.url))throw h.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(F.method!=="GET")throw h.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(C.options!=null)throw h.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});g=this.#E(C.request);for(let D of g){let J=Q.indexOf(D);eY(J!==-1),Q.splice(J,1)}Q.push([C.request,C.response]),I.push([C.request,C.response])}E.push([C.request,C.response])}return E}catch(C){throw this.#A.length=0,this.#A=B,C}}#E(A,Q,B){let I=[],E=B??this.#A;for(let C of E){let[g,F]=C;if(this.#I(A,g,F,Q))I.push(C)}return I}#I(A,Q,B=null,I){let E=new URL(A.url),C=new URL(Q.url);if(I?.ignoreSearch)C.search="",E.search="";if(!k_(E,C,!0))return!1;if(B==null||I?.ignoreVary||!B.headersList.contains("vary"))return!0;let g=tY(B.headersList.get("vary"));for(let F of g){if(F==="*")return!1;let D=Q.headersList.get(F),J=A.headersList.get(F);if(D!==J)return!1}return!0}#B(A,Q,B=1/0){let I=null;if(A!==void 0){if(A instanceof UB){if(I=A[PQ],I.method!=="GET"&&!Q.ignoreMethod)return[]}else if(typeof A==="string")I=new UB(A)[PQ]}let E=[];if(A===void 0)for(let g of this.#A)E.push(g[1]);else{let g=this.#E(I,Q);for(let F of g)E.push(F[1])}let C=[];for(let g of E){let F=m_(g,"immutable");if(C.push(F.clone()),C.length>=B)break}return Object.freeze(C)}}Object.defineProperties(sQ.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:MI,matchAll:MI,add:MI,addAll:MI,put:MI,delete:MI,keys:MI});var WZ=[{key:"ignoreSearch",converter:h.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:h.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:h.converters.boolean,defaultValue:()=>!1}];h.converters.CacheQueryOptions=h.dictionaryConverter(WZ);h.converters.MultiCacheQueryOptions=h.dictionaryConverter([...WZ,{key:"cacheName",converter:h.converters.DOMString}]);h.converters.Response=h.interfaceConverter(v_);h.converters["sequence"]=h.sequenceConverter(h.converters.RequestInfo);LZ.exports={Cache:sQ}});var RZ=W((Om,ZZ)=>{var{kConstruct:WC}=$F(),{Cache:TF}=VZ(),{webidl:fA}=jA(),{kEnumerableProperty:LC}=p();class fB{#A=new Map;constructor(){if(arguments[0]!==WC)fA.illegalConstructor();fA.util.markAsUncloneable(this)}async match(A,Q={}){if(fA.brandCheck(this,fB),fA.argumentLengthCheck(arguments,1,"CacheStorage.match"),A=fA.converters.RequestInfo(A),Q=fA.converters.MultiCacheQueryOptions(Q),Q.cacheName!=null){if(this.#A.has(Q.cacheName)){let B=this.#A.get(Q.cacheName);return await new TF(WC,B).match(A,Q)}}else for(let B of this.#A.values()){let E=await new TF(WC,B).match(A,Q);if(E!==void 0)return E}}async has(A){fA.brandCheck(this,fB);let Q="CacheStorage.has";return fA.argumentLengthCheck(arguments,1,Q),A=fA.converters.DOMString(A,Q,"cacheName"),this.#A.has(A)}async open(A){fA.brandCheck(this,fB);let Q="CacheStorage.open";if(fA.argumentLengthCheck(arguments,1,Q),A=fA.converters.DOMString(A,Q,"cacheName"),this.#A.has(A)){let I=this.#A.get(A);return new TF(WC,I)}let B=[];return this.#A.set(A,B),new TF(WC,B)}async delete(A){fA.brandCheck(this,fB);let Q="CacheStorage.delete";return fA.argumentLengthCheck(arguments,1,Q),A=fA.converters.DOMString(A,Q,"cacheName"),this.#A.delete(A)}async keys(){return fA.brandCheck(this,fB),[...this.#A.keys()]}}Object.defineProperties(fB.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:LC,has:LC,open:LC,delete:LC,keys:LC});ZZ.exports={CacheStorage:fB}});var KZ=W((Pm,XZ)=>{XZ.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var AJ=W((qm,TZ)=>{function l_(A){for(let Q=0;Q=0&&B<=8||B>=10&&B<=31||B===127)return!0}return!1}function zZ(A){for(let Q=0;Q126||B===34||B===40||B===41||B===60||B===62||B===64||B===44||B===59||B===58||B===92||B===47||B===91||B===93||B===63||B===61||B===123||B===125)throw Error("Invalid cookie name")}}function SZ(A){let Q=A.length,B=0;if(A[0]==='"'){if(Q===1||A[Q-1]!=='"')throw Error("Invalid cookie value");--Q,++B}while(B126||I===34||I===44||I===59||I===92)throw Error("Invalid cookie value")}}function $Z(A){for(let Q=0;QQ.toString().padStart(2,"0"));function HZ(A){if(typeof A==="number")A=new Date(A);return`${i_[A.getUTCDay()]}, ${_F[A.getUTCDate()]} ${n_[A.getUTCMonth()]} ${A.getUTCFullYear()} ${_F[A.getUTCHours()]}:${_F[A.getUTCMinutes()]}:${_F[A.getUTCSeconds()]} GMT`}function a_(A){if(A<0)throw Error("Invalid cookie max-age")}function s_(A){if(A.name.length===0)return null;zZ(A.name),SZ(A.value);let Q=[`${A.name}=${A.value}`];if(A.name.startsWith("__Secure-"))A.secure=!0;if(A.name.startsWith("__Host-"))A.secure=!0,A.domain=null,A.path="/";if(A.secure)Q.push("Secure");if(A.httpOnly)Q.push("HttpOnly");if(typeof A.maxAge==="number")a_(A.maxAge),Q.push(`Max-Age=${A.maxAge}`);if(A.domain)p_(A.domain),Q.push(`Domain=${A.domain}`);if(A.path)$Z(A.path),Q.push(`Path=${A.path}`);if(A.expires&&A.expires.toString()!=="Invalid Date")Q.push(`Expires=${HZ(A.expires)}`);if(A.sameSite)Q.push(`SameSite=${A.sameSite}`);for(let B of A.unparsed){if(!B.includes("="))throw Error("Invalid unparsed");let[I,...E]=B.split("=");Q.push(`${I.trim()}=${E.join("=")}`)}return Q.join("; ")}TZ.exports={isCTLExcludingHtab:l_,validateCookieName:zZ,validateCookiePath:$Z,validateCookieValue:SZ,toIMFDate:HZ,stringify:s_}});var jZ=W((ym,_Z)=>{var{maxNameValuePairSize:o_,maxAttributeValueSize:r_}=KZ(),{isCTLExcludingHtab:t_}=AJ(),{collectASequenceOfCodePointsFast:jF}=oA(),e_=z("node:assert");function Aj(A){if(t_(A))return null;let Q="",B="",I="",E="";if(A.includes(";")){let C={position:0};Q=jF(";",A,C),B=A.slice(C.position)}else Q=A;if(!Q.includes("="))E=Q;else{let C={position:0};I=jF("=",Q,C),E=Q.slice(C.position+1)}if(I=I.trim(),E=E.trim(),I.length+E.length>o_)return null;return{name:I,value:E,...NE(B)}}function NE(A,Q={}){if(A.length===0)return Q;e_(A[0]===";"),A=A.slice(1);let B="";if(A.includes(";"))B=jF(";",A,{position:0}),A=A.slice(B.length);else B=A,A="";let I="",E="";if(B.includes("=")){let g={position:0};I=jF("=",B,g),E=B.slice(g.position+1)}else I=B;if(I=I.trim(),E=E.trim(),E.length>r_)return NE(A,Q);let C=I.toLowerCase();if(C==="expires"){let g=new Date(E);Q.expires=g}else if(C==="max-age"){let g=E.charCodeAt(0);if((g<48||g>57)&&E[0]!=="-")return NE(A,Q);if(!/^\d+$/.test(E))return NE(A,Q);let F=Number(E);Q.maxAge=F}else if(C==="domain"){let g=E;if(g[0]===".")g=g.slice(1);g=g.toLowerCase(),Q.domain=g}else if(C==="path"){let g="";if(E.length===0||E[0]!=="/")g="/";else g=E;Q.path=g}else if(C==="secure")Q.secure=!0;else if(C==="httponly")Q.httpOnly=!0;else if(C==="samesite"){let g="Default",F=E.toLowerCase();if(F.includes("none"))g="None";if(F.includes("strict"))g="Strict";if(F.includes("lax"))g="Lax";Q.sameSite=g}else Q.unparsed??=[],Q.unparsed.push(`${I}=${E}`);return NE(A,Q)}_Z.exports={parseSetCookie:Aj,parseUnparsedAttributes:NE}});var PZ=W((hm,OZ)=>{var{parseSetCookie:Qj}=jZ(),{stringify:Bj}=AJ(),{webidl:n}=jA(),{Headers:xF}=JI();function Ij(A){n.argumentLengthCheck(arguments,1,"getCookies"),n.brandCheck(A,xF,{strict:!1});let Q=A.get("cookie"),B={};if(!Q)return B;for(let I of Q.split(";")){let[E,...C]=I.split("=");B[E.trim()]=C.join("=")}return B}function Ej(A,Q,B){n.brandCheck(A,xF,{strict:!1});let I="deleteCookie";n.argumentLengthCheck(arguments,2,I),Q=n.converters.DOMString(Q,I,"name"),B=n.converters.DeleteCookieAttributes(B),xZ(A,{name:Q,value:"",expires:new Date(0),...B})}function Cj(A){n.argumentLengthCheck(arguments,1,"getSetCookies"),n.brandCheck(A,xF,{strict:!1});let Q=A.getSetCookie();if(!Q)return[];return Q.map((B)=>Qj(B))}function xZ(A,Q){n.argumentLengthCheck(arguments,2,"setCookie"),n.brandCheck(A,xF,{strict:!1}),Q=n.converters.Cookie(Q);let B=Bj(Q);if(B)A.append("Set-Cookie",B)}n.converters.DeleteCookieAttributes=n.dictionaryConverter([{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:()=>null}]);n.converters.Cookie=n.dictionaryConverter([{converter:n.converters.DOMString,key:"name"},{converter:n.converters.DOMString,key:"value"},{converter:n.nullableConverter((A)=>{if(typeof A==="number")return n.converters["unsigned long long"](A);return new Date(A)}),key:"expires",defaultValue:()=>null},{converter:n.nullableConverter(n.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.boolean),key:"secure",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:n.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:n.sequenceConverter(n.converters.DOMString),key:"unparsed",defaultValue:()=>[]}]);OZ.exports={getCookies:Ij,deleteCookie:Ej,getSetCookies:Cj,setCookie:xZ}});var wE=W((km,yZ)=>{var{webidl:P}=jA(),{kEnumerableProperty:AQ}=p(),{kConstruct:qZ}=GA(),{MessagePort:gj}=z("node:worker_threads");class YQ extends Event{#A;constructor(A,Q={}){if(A===qZ){super(arguments[1],arguments[2]);P.util.markAsUncloneable(this);return}let B="MessageEvent constructor";P.argumentLengthCheck(arguments,1,B),A=P.converters.DOMString(A,B,"type"),Q=P.converters.MessageEventInit(Q,B,"eventInitDict");super(A,Q);this.#A=Q,P.util.markAsUncloneable(this)}get data(){return P.brandCheck(this,YQ),this.#A.data}get origin(){return P.brandCheck(this,YQ),this.#A.origin}get lastEventId(){return P.brandCheck(this,YQ),this.#A.lastEventId}get source(){return P.brandCheck(this,YQ),this.#A.source}get ports(){if(P.brandCheck(this,YQ),!Object.isFrozen(this.#A.ports))Object.freeze(this.#A.ports);return this.#A.ports}initMessageEvent(A,Q=!1,B=!1,I=null,E="",C="",g=null,F=[]){return P.brandCheck(this,YQ),P.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new YQ(A,{bubbles:Q,cancelable:B,data:I,origin:E,lastEventId:C,source:g,ports:F})}static createFastMessageEvent(A,Q){let B=new YQ(qZ,A,Q);return B.#A=Q,B.#A.data??=null,B.#A.origin??="",B.#A.lastEventId??="",B.#A.source??=null,B.#A.ports??=[],B}}var{createFastMessageEvent:Fj}=YQ;delete YQ.createFastMessageEvent;class ME extends Event{#A;constructor(A,Q={}){P.argumentLengthCheck(arguments,1,"CloseEvent constructor"),A=P.converters.DOMString(A,"CloseEvent constructor","type"),Q=P.converters.CloseEventInit(Q);super(A,Q);this.#A=Q,P.util.markAsUncloneable(this)}get wasClean(){return P.brandCheck(this,ME),this.#A.wasClean}get code(){return P.brandCheck(this,ME),this.#A.code}get reason(){return P.brandCheck(this,ME),this.#A.reason}}class vB extends Event{#A;constructor(A,Q){P.argumentLengthCheck(arguments,1,"ErrorEvent constructor");super(A,Q);P.util.markAsUncloneable(this),A=P.converters.DOMString(A,"ErrorEvent constructor","type"),Q=P.converters.ErrorEventInit(Q??{}),this.#A=Q}get message(){return P.brandCheck(this,vB),this.#A.message}get filename(){return P.brandCheck(this,vB),this.#A.filename}get lineno(){return P.brandCheck(this,vB),this.#A.lineno}get colno(){return P.brandCheck(this,vB),this.#A.colno}get error(){return P.brandCheck(this,vB),this.#A.error}}Object.defineProperties(YQ.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:AQ,origin:AQ,lastEventId:AQ,source:AQ,ports:AQ,initMessageEvent:AQ});Object.defineProperties(ME.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:AQ,code:AQ,wasClean:AQ});Object.defineProperties(vB.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:AQ,filename:AQ,lineno:AQ,colno:AQ,error:AQ});P.converters.MessagePort=P.interfaceConverter(gj);P.converters["sequence"]=P.sequenceConverter(P.converters.MessagePort);var QJ=[{key:"bubbles",converter:P.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:P.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:P.converters.boolean,defaultValue:()=>!1}];P.converters.MessageEventInit=P.dictionaryConverter([...QJ,{key:"data",converter:P.converters.any,defaultValue:()=>null},{key:"origin",converter:P.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:P.converters.DOMString,defaultValue:()=>""},{key:"source",converter:P.nullableConverter(P.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:P.converters["sequence"],defaultValue:()=>[]}]);P.converters.CloseEventInit=P.dictionaryConverter([...QJ,{key:"wasClean",converter:P.converters.boolean,defaultValue:()=>!1},{key:"code",converter:P.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:P.converters.USVString,defaultValue:()=>""}]);P.converters.ErrorEventInit=P.dictionaryConverter([...QJ,{key:"message",converter:P.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:P.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:P.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:P.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:P.converters.any}]);yZ.exports={MessageEvent:YQ,CloseEvent:ME,ErrorEvent:vB,createFastMessageEvent:Fj}});var wI=W((fm,hZ)=>{var Dj={enumerable:!0,writable:!1,configurable:!1},Yj={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},Jj={NOT_SENT:0,PROCESSING:1,SENT:2},Uj={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},Gj={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},Nj=Buffer.allocUnsafe(0),Mj={string:1,typedArray:2,arrayBuffer:3,blob:4};hZ.exports={uid:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",sentCloseFrameState:Jj,staticPropertyDescriptors:Dj,states:Yj,opcodes:Uj,maxUnsigned16Bit:65535,parserStates:Gj,emptyBuffer:Nj,sendHints:Mj}});var VC=W((vm,kZ)=>{kZ.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}});var XC=W((bm,pZ)=>{var{kReadyState:ZC,kController:wj,kResponse:Wj,kBinaryType:Lj,kWebSocketURL:Vj}=VC(),{states:RC,opcodes:bB}=wI(),{ErrorEvent:Zj,createFastMessageEvent:Rj}=wE(),{isUtf8:Xj}=z("node:buffer"),{collectASequenceOfCodePointsFast:Kj,removeHTTPWhitespace:fZ}=oA();function zj(A){return A[ZC]===RC.CONNECTING}function Sj(A){return A[ZC]===RC.OPEN}function $j(A){return A[ZC]===RC.CLOSING}function Hj(A){return A[ZC]===RC.CLOSED}function BJ(A,Q,B=(E,C)=>new Event(E,C),I={}){let E=B(A,I);Q.dispatchEvent(E)}function Tj(A,Q,B){if(A[ZC]!==RC.OPEN)return;let I;if(Q===bB.TEXT)try{I=lZ(B)}catch{bZ(A,"Received invalid UTF-8 in text frame.");return}else if(Q===bB.BINARY)if(A[Lj]==="blob")I=new Blob([B]);else I=_j(B);BJ("message",A,Rj,{origin:A[Vj].origin,data:I})}function _j(A){if(A.byteLength===A.buffer.byteLength)return A.buffer;return A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength)}function jj(A){if(A.length===0)return!1;for(let Q=0;Q126||B===34||B===40||B===41||B===44||B===47||B===58||B===59||B===60||B===61||B===62||B===63||B===64||B===91||B===92||B===93||B===123||B===125)return!1}return!0}function xj(A){if(A>=1000&&A<1015)return A!==1004&&A!==1005&&A!==1006;return A>=3000&&A<=4999}function bZ(A,Q){let{[wj]:B,[Wj]:I}=A;if(B.abort(),I?.socket&&!I.socket.destroyed)I.socket.destroy();if(Q)BJ("error",A,(E,C)=>new Zj(E,C),{error:Error(Q),message:Q})}function mZ(A){return A===bB.CLOSE||A===bB.PING||A===bB.PONG}function uZ(A){return A===bB.CONTINUATION}function cZ(A){return A===bB.TEXT||A===bB.BINARY}function Oj(A){return cZ(A)||uZ(A)||mZ(A)}function Pj(A){let Q={position:0},B=new Map;while(Q.position57)return!1}let Q=Number.parseInt(A,10);return Q>=8&&Q<=15}var dZ=typeof process.versions.icu==="string",vZ=dZ?new TextDecoder("utf-8",{fatal:!0}):void 0,lZ=dZ?vZ.decode.bind(vZ):function(A){if(Xj(A))return A.toString("utf-8");throw TypeError("Invalid utf-8 received.")};pZ.exports={isConnecting:zj,isEstablished:Sj,isClosing:$j,isClosed:Hj,fireEvent:BJ,isValidSubprotocol:jj,isValidStatusCode:xj,failWebsocketConnection:bZ,websocketMessageReceived:Tj,utf8Decode:lZ,isControlFrame:mZ,isContinuationFrame:uZ,isTextBinaryFrame:cZ,isValidOpcode:Oj,parseExtensions:Pj,isValidClientWindowBits:qj}});var OF=W((mm,nZ)=>{var{maxUnsigned16Bit:yj}=wI(),IJ,KC=null,WE=16386;try{IJ=z("node:crypto")}catch{IJ={randomFillSync:function(Q,B,I){for(let E=0;Eyj)C+=8,E=127;else if(I>125)C+=2,E=126;let g=Buffer.allocUnsafe(I+C);g[0]=g[1]=0,g[0]|=128,g[0]=(g[0]&240)+A;/*! ws. MIT License. Einar Otto Stangvik */if(g[C-4]=B[0],g[C-3]=B[1],g[C-2]=B[2],g[C-1]=B[3],g[1]=E,E===126)g.writeUInt16BE(I,2);else if(E===127)g[2]=g[3]=0,g.writeUIntBE(I,4,6);g[1]|=128;for(let F=0;F{var{uid:kj,states:zC,sentCloseFrameState:PF,emptyBuffer:fj,opcodes:vj}=wI(),{kReadyState:SC,kSentClose:qF,kByteParser:sZ,kReceivedClose:aZ,kResponse:oZ}=VC(),{fireEvent:bj,failWebsocketConnection:mB,isClosing:mj,isClosed:uj,isEstablished:cj,parseExtensions:dj}=XC(),{channels:LE}=jI(),{CloseEvent:lj}=wE(),{makeRequest:pj}=YE(),{fetching:ij}=NC(),{Headers:nj,getHeadersList:aj}=JI(),{getDecodeSplit:sj}=BQ(),{WebsocketFrameSend:oj}=OF(),EJ;try{EJ=z("node:crypto")}catch{}function rj(A,Q,B,I,E,C){let g=A;g.protocol=A.protocol==="ws:"?"http:":"https:";let F=pj({urlList:[g],client:B,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(C.headers){let U=aj(new nj(C.headers));F.headersList=U}let D=EJ.randomBytes(16).toString("base64");F.headersList.append("sec-websocket-key",D),F.headersList.append("sec-websocket-version","13");for(let U of Q)F.headersList.append("sec-websocket-protocol",U);let J="permessage-deflate; client_max_window_bits";return F.headersList.append("sec-websocket-extensions",J),ij({request:F,useParallelQueue:!0,dispatcher:C.dispatcher,processResponse(U){if(U.type==="error"||U.status!==101){mB(I,"Received network error or non-101 status code.");return}if(Q.length!==0&&!U.headersList.get("Sec-WebSocket-Protocol")){mB(I,"Server did not respond with sent protocols.");return}if(U.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){mB(I,'Server did not set Upgrade header to "websocket".');return}if(U.headersList.get("Connection")?.toLowerCase()!=="upgrade"){mB(I,'Server did not set Connection header to "upgrade".');return}let N=U.headersList.get("Sec-WebSocket-Accept"),w=EJ.createHash("sha1").update(D+kj).digest("base64");if(N!==w){mB(I,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let L=U.headersList.get("Sec-WebSocket-Extensions"),S;if(L!==null){if(S=dj(L),!S.has("permessage-deflate")){mB(I,"Sec-WebSocket-Extensions header does not match.");return}}let Z=U.headersList.get("Sec-WebSocket-Protocol");if(Z!==null){if(!sj("sec-websocket-protocol",F.headersList).includes(Z)){mB(I,"Protocol was not set in the opening handshake.");return}}if(U.socket.on("data",rZ),U.socket.on("close",tZ),U.socket.on("error",eZ),LE.open.hasSubscribers)LE.open.publish({address:U.socket.address(),protocol:Z,extensions:L});E(U,S)}})}function tj(A,Q,B,I){if(mj(A)||uj(A));else if(!cj(A))mB(A,"Connection was closed before it was established."),A[SC]=zC.CLOSING;else if(A[qF]===PF.NOT_SENT){A[qF]=PF.PROCESSING;let E=new oj;if(Q!==void 0&&B===void 0)E.frameData=Buffer.allocUnsafe(2),E.frameData.writeUInt16BE(Q,0);else if(Q!==void 0&&B!==void 0)E.frameData=Buffer.allocUnsafe(2+I),E.frameData.writeUInt16BE(Q,0),E.frameData.write(B,2,"utf-8");else E.frameData=fj;A[oZ].socket.write(E.createFrame(vj.CLOSE)),A[qF]=PF.SENT,A[SC]=zC.CLOSING}else A[SC]=zC.CLOSING}function rZ(A){if(!this.ws[sZ].write(A))this.pause()}function tZ(){let{ws:A}=this,{[oZ]:Q}=A;Q.socket.off("data",rZ),Q.socket.off("close",tZ),Q.socket.off("error",eZ);let B=A[qF]===PF.SENT&&A[aZ],I=1005,E="",C=A[sZ].closingInfo;if(C&&!C.error)I=C.code??1005,E=C.reason;else if(!A[aZ])I=1006;if(A[SC]=zC.CLOSED,bj("close",A,(g,F)=>new lj(g,F),{wasClean:B,code:I,reason:E}),LE.close.hasSubscribers)LE.close.publish({websocket:A,code:I,reason:E})}function eZ(A){let{ws:Q}=this;if(Q[SC]=zC.CLOSING,LE.socketError.hasSubscribers)LE.socketError.publish(A);this.destroy()}AR.exports={establishWebSocketConnection:rj,closeWebSocketConnection:tj}});var ER=W((cm,IR)=>{var{createInflateRaw:ej,Z_DEFAULT_WINDOWBITS:Ax}=z("node:zlib"),{isValidClientWindowBits:Qx}=XC(),{MessageSizeExceededError:QR}=r(),Bx=Buffer.from([0,0,255,255]),yF=Symbol("kBuffer"),$C=Symbol("kLength");class BR{#A;#Q={};#E=!1;#I=null;constructor(A){this.#Q.serverNoContextTakeover=A.has("server_no_context_takeover"),this.#Q.serverMaxWindowBits=A.get("server_max_window_bits")}decompress(A,Q,B){if(this.#E){B(new QR);return}if(!this.#A){let I=Ax;if(this.#Q.serverMaxWindowBits){if(!Qx(this.#Q.serverMaxWindowBits)){B(Error("Invalid server_max_window_bits"));return}I=Number.parseInt(this.#Q.serverMaxWindowBits)}try{this.#A=ej({windowBits:I})}catch(E){B(E);return}this.#A[yF]=[],this.#A[$C]=0,this.#A.on("data",(E)=>{if(this.#E)return;if(this.#A[$C]+=E.length,this.#A[$C]>4194304){if(this.#E=!0,this.#A.removeAllListeners(),this.#A.destroy(),this.#A=null,this.#I){let C=this.#I;this.#I=null,C(new QR)}return}this.#A[yF].push(E)}),this.#A.on("error",(E)=>{this.#A=null,B(E)})}if(this.#I=B,this.#A.write(A),Q)this.#A.write(Bx);this.#A.flush(()=>{if(this.#E||!this.#A)return;let I=Buffer.concat(this.#A[yF],this.#A[$C]);this.#A[yF].length=0,this.#A[$C]=0,this.#I=null,B(null,I)})}}IR.exports={PerMessageDeflate:BR}});var wR=W((dm,MR)=>{var{Writable:Ix}=z("node:stream"),Ex=z("node:assert"),{parserStates:QQ,opcodes:VE,states:Cx,emptyBuffer:CR,sentCloseFrameState:gR}=wI(),{kReadyState:gx,kSentClose:FR,kResponse:DR,kReceivedClose:YR}=VC(),{channels:hF}=jI(),{isValidStatusCode:Fx,isValidOpcode:Dx,failWebsocketConnection:JQ,websocketMessageReceived:JR,utf8Decode:Yx,isControlFrame:UR,isTextBinaryFrame:gJ,isContinuationFrame:Jx}=XC(),{WebsocketFrameSend:GR}=OF(),{closeWebSocketConnection:Ux}=CJ(),{PerMessageDeflate:Gx}=ER();class NR extends Ix{#A=[];#Q=0;#E=!1;#I=QQ.INFO;#B={};#C=[];#g;constructor(A,Q){super();if(this.ws=A,this.#g=Q==null?new Map:Q,this.#g.has("permessage-deflate"))this.#g.set("permessage-deflate",new Gx(Q))}_write(A,Q,B){this.#A.push(A),this.#Q+=A.length,this.#E=!0,this.run(B)}run(A){while(this.#E)if(this.#I===QQ.INFO){if(this.#Q<2)return A();let Q=this.consume(2),B=(Q[0]&128)!==0,I=Q[0]&15,E=(Q[1]&128)===128,C=!B&&I!==VE.CONTINUATION,g=Q[1]&127,F=Q[0]&64,D=Q[0]&32,J=Q[0]&16;if(!Dx(I))return JQ(this.ws,"Invalid opcode received"),A();if(E)return JQ(this.ws,"Frame cannot be masked"),A();if(F!==0&&!this.#g.has("permessage-deflate")){JQ(this.ws,"Expected RSV1 to be clear.");return}if(D!==0||J!==0){JQ(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(C&&!gJ(I)){JQ(this.ws,"Invalid frame type was fragmented.");return}if(gJ(I)&&this.#C.length>0){JQ(this.ws,"Expected continuation frame");return}if(this.#B.fragmented&&C){JQ(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((g>125||C)&&UR(I)){JQ(this.ws,"Control frame either too large or fragmented");return}if(Jx(I)&&this.#C.length===0&&!this.#B.compressed){JQ(this.ws,"Unexpected continuation frame");return}if(g<=125)this.#B.payloadLength=g,this.#I=QQ.READ_DATA;else if(g===126)this.#I=QQ.PAYLOADLENGTH_16;else if(g===127)this.#I=QQ.PAYLOADLENGTH_64;if(gJ(I))this.#B.binaryType=I,this.#B.compressed=F!==0;this.#B.opcode=I,this.#B.masked=E,this.#B.fin=B,this.#B.fragmented=C}else if(this.#I===QQ.PAYLOADLENGTH_16){if(this.#Q<2)return A();let Q=this.consume(2);this.#B.payloadLength=Q.readUInt16BE(0),this.#I=QQ.READ_DATA}else if(this.#I===QQ.PAYLOADLENGTH_64){if(this.#Q<8)return A();let Q=this.consume(8),B=Q.readUInt32BE(0),I=Q.readUInt32BE(4);if(B!==0||I>2147483647){JQ(this.ws,"Received payload length > 2^31 bytes.");return}this.#B.payloadLength=I,this.#I=QQ.READ_DATA}else if(this.#I===QQ.READ_DATA){if(this.#Q{if(B){JQ(this.ws,B.message);return}if(this.#C.push(I),!this.#B.fin){this.#I=QQ.INFO,this.#E=!0,this.run(A);return}JR(this.ws,this.#B.binaryType,Buffer.concat(this.#C)),this.#E=!0,this.#I=QQ.INFO,this.#C.length=0,this.run(A)}),this.#E=!1;break}}}consume(A){if(A>this.#Q)throw Error("Called consume() before buffers satiated.");else if(A===0)return CR;if(this.#A[0].length===A)return this.#Q-=this.#A[0].length,this.#A.shift();let Q=Buffer.allocUnsafe(A),B=0;while(B!==A){let I=this.#A[0],{length:E}=I;if(E+B===A){Q.set(this.#A.shift(),B);break}else if(E+B>A){Q.set(I.subarray(0,A-B),B),this.#A[0]=I.subarray(A-B);break}else Q.set(this.#A.shift(),B),B+=I.length}return this.#Q-=A,Q}parseCloseBody(A){Ex(A.length!==1);let Q;if(A.length>=2)Q=A.readUInt16BE(0);if(Q!==void 0&&!Fx(Q))return{code:1002,reason:"Invalid status code",error:!0};let B=A.subarray(2);if(B[0]===239&&B[1]===187&&B[2]===191)B=B.subarray(3);try{B=Yx(B)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:Q,reason:B,error:!1}}parseControlFrame(A){let{opcode:Q,payloadLength:B}=this.#B;if(Q===VE.CLOSE){if(B===1)return JQ(this.ws,"Received close frame with a 1-byte body."),!1;if(this.#B.closeInfo=this.parseCloseBody(A),this.#B.closeInfo.error){let{code:I,reason:E}=this.#B.closeInfo;return Ux(this.ws,I,E,E.length),JQ(this.ws,E),!1}if(this.ws[FR]!==gR.SENT){let I=CR;if(this.#B.closeInfo.code)I=Buffer.allocUnsafe(2),I.writeUInt16BE(this.#B.closeInfo.code,0);let E=new GR(I);this.ws[DR].socket.write(E.createFrame(VE.CLOSE),(C)=>{if(!C)this.ws[FR]=gR.SENT})}return this.ws[gx]=Cx.CLOSING,this.ws[YR]=!0,!1}else if(Q===VE.PING){if(!this.ws[YR]){let I=new GR(A);if(this.ws[DR].socket.write(I.createFrame(VE.PONG)),hF.ping.hasSubscribers)hF.ping.publish({payload:A})}}else if(Q===VE.PONG){if(hF.pong.hasSubscribers)hF.pong.publish({payload:A})}return!0}get closingInfo(){return this.#B.closeInfo}}MR.exports={ByteParser:NR}});var XR=W((lm,RR)=>{var{WebsocketFrameSend:Nx}=OF(),{opcodes:WR,sendHints:ZE}=wI(),Mx=dD(),LR=Buffer[Symbol.species];class ZR{#A=new Mx;#Q=!1;#E;constructor(A){this.#E=A}add(A,Q,B){if(B!==ZE.blob){let E=VR(A,B);if(!this.#Q)this.#E.write(E,Q);else{let C={promise:null,callback:Q,frame:E};this.#A.push(C)}return}let I={promise:A.arrayBuffer().then((E)=>{I.promise=null,I.frame=VR(E,B)}),callback:Q,frame:null};if(this.#A.push(I),!this.#Q)this.#I()}async#I(){this.#Q=!0;let A=this.#A;while(!A.isEmpty()){let Q=A.shift();if(Q.promise!==null)await Q.promise;this.#E.write(Q.frame,Q.callback),Q.callback=Q.frame=null}this.#Q=!1}}function VR(A,Q){return new Nx(wx(A,Q)).createFrame(Q===ZE.string?WR.TEXT:WR.BINARY)}function wx(A,Q){switch(Q){case ZE.string:return Buffer.from(A);case ZE.arrayBuffer:case ZE.blob:return new LR(A);case ZE.typedArray:return new LR(A.buffer,A.byteOffset,A.byteLength)}}RR.exports={SendQueue:ZR}});var xR=W((pm,jR)=>{var{webidl:m}=jA(),{URLSerializer:Wx}=oA(),{environmentSettingsObject:KR}=BQ(),{staticPropertyDescriptors:uB,states:HC,sentCloseFrameState:Lx,sendHints:kF}=wI(),{kWebSocketURL:zR,kReadyState:FJ,kController:Vx,kBinaryType:fF,kResponse:SR,kSentClose:Zx,kByteParser:Rx}=VC(),{isConnecting:Xx,isEstablished:Kx,isClosing:zx,isValidSubprotocol:Sx,fireEvent:$R}=XC(),{establishWebSocketConnection:$x,closeWebSocketConnection:HR}=CJ(),{ByteParser:Hx}=wR(),{kEnumerableProperty:VQ,isBlobLike:TR}=p(),{getGlobalDispatcher:Tx}=EF(),{types:_R}=z("node:util"),{ErrorEvent:_x,CloseEvent:jx}=wE(),{SendQueue:xx}=XR();class BA extends EventTarget{#A={open:null,error:null,close:null,message:null};#Q=0;#E="";#I="";#B;constructor(A,Q=[]){super();m.util.markAsUncloneable(this);let B="WebSocket constructor";m.argumentLengthCheck(arguments,1,B);let I=m.converters["DOMString or sequence or WebSocketInit"](Q,B,"options");A=m.converters.USVString(A,B,"url"),Q=I.protocols;let E=KR.settingsObject.baseUrl,C;try{C=new URL(A,E)}catch(F){throw new DOMException(F,"SyntaxError")}if(C.protocol==="http:")C.protocol="ws:";else if(C.protocol==="https:")C.protocol="wss:";if(C.protocol!=="ws:"&&C.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${C.protocol}`,"SyntaxError");if(C.hash||C.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof Q==="string")Q=[Q];if(Q.length!==new Set(Q.map((F)=>F.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(Q.length>0&&!Q.every((F)=>Sx(F)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[zR]=new URL(C.href);let g=KR.settingsObject;this[Vx]=$x(C,Q,g,this,(F,D)=>this.#C(F,D),I),this[FJ]=BA.CONNECTING,this[Zx]=Lx.NOT_SENT,this[fF]="blob"}close(A=void 0,Q=void 0){m.brandCheck(this,BA);let B="WebSocket.close";if(A!==void 0)A=m.converters["unsigned short"](A,B,"code",{clamp:!0});if(Q!==void 0)Q=m.converters.USVString(Q,B,"reason");if(A!==void 0){if(A!==1000&&(A<3000||A>4999))throw new DOMException("invalid code","InvalidAccessError")}let I=0;if(Q!==void 0){if(I=Buffer.byteLength(Q),I>123)throw new DOMException(`Reason must be less than 123 bytes; received ${I}`,"SyntaxError")}HR(this,A,Q,I)}send(A){m.brandCheck(this,BA);let Q="WebSocket.send";if(m.argumentLengthCheck(arguments,1,Q),A=m.converters.WebSocketSendData(A,Q,"data"),Xx(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!Kx(this)||zx(this))return;if(typeof A==="string"){let B=Buffer.byteLength(A);this.#Q+=B,this.#B.add(A,()=>{this.#Q-=B},kF.string)}else if(_R.isArrayBuffer(A))this.#Q+=A.byteLength,this.#B.add(A,()=>{this.#Q-=A.byteLength},kF.arrayBuffer);else if(ArrayBuffer.isView(A))this.#Q+=A.byteLength,this.#B.add(A,()=>{this.#Q-=A.byteLength},kF.typedArray);else if(TR(A))this.#Q+=A.size,this.#B.add(A,()=>{this.#Q-=A.size},kF.blob)}get readyState(){return m.brandCheck(this,BA),this[FJ]}get bufferedAmount(){return m.brandCheck(this,BA),this.#Q}get url(){return m.brandCheck(this,BA),Wx(this[zR])}get extensions(){return m.brandCheck(this,BA),this.#I}get protocol(){return m.brandCheck(this,BA),this.#E}get onopen(){return m.brandCheck(this,BA),this.#A.open}set onopen(A){if(m.brandCheck(this,BA),this.#A.open)this.removeEventListener("open",this.#A.open);if(typeof A==="function")this.#A.open=A,this.addEventListener("open",A);else this.#A.open=null}get onerror(){return m.brandCheck(this,BA),this.#A.error}set onerror(A){if(m.brandCheck(this,BA),this.#A.error)this.removeEventListener("error",this.#A.error);if(typeof A==="function")this.#A.error=A,this.addEventListener("error",A);else this.#A.error=null}get onclose(){return m.brandCheck(this,BA),this.#A.close}set onclose(A){if(m.brandCheck(this,BA),this.#A.close)this.removeEventListener("close",this.#A.close);if(typeof A==="function")this.#A.close=A,this.addEventListener("close",A);else this.#A.close=null}get onmessage(){return m.brandCheck(this,BA),this.#A.message}set onmessage(A){if(m.brandCheck(this,BA),this.#A.message)this.removeEventListener("message",this.#A.message);if(typeof A==="function")this.#A.message=A,this.addEventListener("message",A);else this.#A.message=null}get binaryType(){return m.brandCheck(this,BA),this[fF]}set binaryType(A){if(m.brandCheck(this,BA),A!=="blob"&&A!=="arraybuffer")this[fF]="blob";else this[fF]=A}#C(A,Q){this[SR]=A;let B=new Hx(this,Q);B.on("drain",Ox),B.on("error",Px.bind(this)),A.socket.ws=this,this[Rx]=B,this.#B=new xx(A.socket),this[FJ]=HC.OPEN;let I=A.headersList.get("sec-websocket-extensions");if(I!==null)this.#I=I;let E=A.headersList.get("sec-websocket-protocol");if(E!==null)this.#E=E;$R("open",this)}}BA.CONNECTING=BA.prototype.CONNECTING=HC.CONNECTING;BA.OPEN=BA.prototype.OPEN=HC.OPEN;BA.CLOSING=BA.prototype.CLOSING=HC.CLOSING;BA.CLOSED=BA.prototype.CLOSED=HC.CLOSED;Object.defineProperties(BA.prototype,{CONNECTING:uB,OPEN:uB,CLOSING:uB,CLOSED:uB,url:VQ,readyState:VQ,bufferedAmount:VQ,onopen:VQ,onerror:VQ,onclose:VQ,close:VQ,onmessage:VQ,binaryType:VQ,send:VQ,extensions:VQ,protocol:VQ,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(BA,{CONNECTING:uB,OPEN:uB,CLOSING:uB,CLOSED:uB});m.converters["sequence"]=m.sequenceConverter(m.converters.DOMString);m.converters["DOMString or sequence"]=function(A,Q,B){if(m.util.Type(A)==="Object"&&Symbol.iterator in A)return m.converters["sequence"](A);return m.converters.DOMString(A,Q,B)};m.converters.WebSocketInit=m.dictionaryConverter([{key:"protocols",converter:m.converters["DOMString or sequence"],defaultValue:()=>[]},{key:"dispatcher",converter:m.converters.any,defaultValue:()=>Tx()},{key:"headers",converter:m.nullableConverter(m.converters.HeadersInit)}]);m.converters["DOMString or sequence or WebSocketInit"]=function(A){if(m.util.Type(A)==="Object"&&!(Symbol.iterator in A))return m.converters.WebSocketInit(A);return{protocols:m.converters["DOMString or sequence"](A)}};m.converters.WebSocketSendData=function(A){if(m.util.Type(A)==="Object"){if(TR(A))return m.converters.Blob(A,{strict:!1});if(ArrayBuffer.isView(A)||_R.isArrayBuffer(A))return m.converters.BufferSource(A)}return m.converters.USVString(A)};function Ox(){this.ws[SR].socket.resume()}function Px(A){let Q,B;if(A instanceof jx)Q=A.reason,B=A.code;else Q=A.message;$R("error",this,()=>new _x("error",{error:A,message:Q})),HR(this,B)}jR.exports={WebSocket:BA}});var DJ=W((im,OR)=>{function qx(A){return A.indexOf("\x00")===-1}function yx(A){if(A.length===0)return!1;for(let Q=0;Q57)return!1;return!0}function hx(A){return new Promise((Q)=>{setTimeout(Q,A).unref()})}OR.exports={isValidLastEventId:qx,isASCIINumber:yx,delay:hx}});var kR=W((nm,hR)=>{var{Transform:kx}=z("node:stream"),{isASCIINumber:PR,isValidLastEventId:qR}=DJ(),GB=[239,187,191];class yR extends kx{state=null;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;buffer=null;pos=0;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(A={}){A.readableObjectMode=!0;super(A);if(this.state=A.eventSourceSettings||{},A.push)this.push=A.push}_transform(A,Q,B){if(A.length===0){B();return}if(this.buffer)this.buffer=Buffer.concat([this.buffer,A]);else this.buffer=A;if(this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===GB[0]){B();return}this.checkBOM=!1,B();return;case 2:if(this.buffer[0]===GB[0]&&this.buffer[1]===GB[1]){B();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===GB[0]&&this.buffer[1]===GB[1]&&this.buffer[2]===GB[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,B();return}this.checkBOM=!1;break;default:if(this.buffer[0]===GB[0]&&this.buffer[1]===GB[1]&&this.buffer[2]===GB[2])this.buffer=this.buffer.subarray(3);this.checkBOM=!1;break}while(this.pos0)Q[I]=E;break}}processEvent(A){if(A.retry&&PR(A.retry))this.state.reconnectionTime=parseInt(A.retry,10);if(A.id&&qR(A.id))this.state.lastEventId=A.id;if(A.data!==void 0)this.push({type:A.event||"message",options:{data:A.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}}hR.exports={EventSourceStream:yR}});var lR=W((am,dR)=>{var{pipeline:fx}=z("node:stream"),{fetching:vx}=NC(),{makeRequest:bx}=YE(),{webidl:NB}=jA(),{EventSourceStream:mx}=kR(),{parseMIMEType:ux}=oA(),{createFastMessageEvent:cx}=wE(),{isNetworkError:fR}=UC(),{delay:dx}=DJ(),{kEnumerableProperty:WI}=p(),{environmentSettingsObject:vR}=BQ(),bR=!1,mR=3000,TC=0,uR=1,_C=2,lx="anonymous",px="use-credentials";class RE extends EventTarget{#A={open:null,error:null,message:null};#Q=null;#E=!1;#I=TC;#B=null;#C=null;#g;#F;constructor(A,Q={}){super();NB.util.markAsUncloneable(this);let B="EventSource constructor";if(NB.argumentLengthCheck(arguments,1,B),!bR)bR=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"});A=NB.converters.USVString(A,B,"url"),Q=NB.converters.EventSourceInitDict(Q,B,"eventSourceInitDict"),this.#g=Q.dispatcher,this.#F={lastEventId:"",reconnectionTime:mR};let I=vR,E;try{E=new URL(A,I.settingsObject.baseUrl),this.#F.origin=E.origin}catch(F){throw new DOMException(F,"SyntaxError")}this.#Q=E.href;let C=lx;if(Q.withCredentials)C=px,this.#E=!0;let g={redirect:"follow",keepalive:!0,mode:"cors",credentials:C==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};g.client=vR.settingsObject,g.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],g.cache="no-store",g.initiator="other",g.urlList=[new URL(this.#Q)],this.#B=bx(g),this.#D()}get readyState(){return this.#I}get url(){return this.#Q}get withCredentials(){return this.#E}#D(){if(this.#I===_C)return;this.#I=TC;let A={request:this.#B,dispatcher:this.#g},Q=(B)=>{if(fR(B))this.dispatchEvent(new Event("error")),this.close();this.#Y()};A.processResponseEndOfBody=Q,A.processResponse=(B)=>{if(fR(B))if(B.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#Y();return}let I=B.headersList.get("content-type",!0),E=I!==null?ux(I):"failure",C=E!=="failure"&&E.essence==="text/event-stream";if(B.status!==200||C===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#I=uR,this.dispatchEvent(new Event("open")),this.#F.origin=B.urlList[B.urlList.length-1].origin;let g=new mx({eventSourceSettings:this.#F,push:(F)=>{this.dispatchEvent(cx(F.type,F.options))}});fx(B.body.stream,g,(F)=>{if(F?.aborted===!1)this.close(),this.dispatchEvent(new Event("error"))})},this.#C=vx(A)}async#Y(){if(this.#I===_C)return;if(this.#I=TC,this.dispatchEvent(new Event("error")),await dx(this.#F.reconnectionTime),this.#I!==TC)return;if(this.#F.lastEventId.length)this.#B.headersList.set("last-event-id",this.#F.lastEventId,!0);this.#D()}close(){if(NB.brandCheck(this,RE),this.#I===_C)return;this.#I=_C,this.#C.abort(),this.#B=null}get onopen(){return this.#A.open}set onopen(A){if(this.#A.open)this.removeEventListener("open",this.#A.open);if(typeof A==="function")this.#A.open=A,this.addEventListener("open",A);else this.#A.open=null}get onmessage(){return this.#A.message}set onmessage(A){if(this.#A.message)this.removeEventListener("message",this.#A.message);if(typeof A==="function")this.#A.message=A,this.addEventListener("message",A);else this.#A.message=null}get onerror(){return this.#A.error}set onerror(A){if(this.#A.error)this.removeEventListener("error",this.#A.error);if(typeof A==="function")this.#A.error=A,this.addEventListener("error",A);else this.#A.error=null}}var cR={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:TC,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:uR,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:_C,writable:!1}};Object.defineProperties(RE,cR);Object.defineProperties(RE.prototype,cR);Object.defineProperties(RE.prototype,{close:WI,onerror:WI,onmessage:WI,onopen:WI,readyState:WI,url:WI,withCredentials:WI});NB.converters.EventSourceInitDict=NB.dictionaryConverter([{key:"withCredentials",converter:NB.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:NB.converters.any}]);dR.exports={EventSource:RE,defaultReconnectionTime:mR}});var mF=W((SO,b)=>{var ix=sI(),pR=OE(),nx=oI(),ax=W2(),sx=rI(),ox=BY(),rx=l2(),tx=r2(),iR=r(),bF=p(),{InvalidArgumentError:vF}=iR,XE=lW(),ex=qE(),AO=TY(),QO=xL(),BO=jY(),IO=WY(),EO=sg(),{getGlobalDispatcher:nR,setGlobalDispatcher:CO}=EF(),gO=CF(),FO=bg(),DO=mg();Object.assign(pR.prototype,XE);SO.Dispatcher=pR;SO.Client=ix;SO.Pool=nx;SO.BalancedPool=ax;SO.Agent=sx;SO.ProxyAgent=ox;SO.EnvHttpProxyAgent=rx;SO.RetryAgent=tx;SO.RetryHandler=EO;SO.DecoratorHandler=gO;SO.RedirectHandler=FO;SO.createRedirectInterceptor=DO;SO.interceptors={redirect:fL(),retry:bL(),dump:cL(),dns:nL()};SO.buildConnector=ex;SO.errors=iR;SO.util={parseHeaders:bF.parseHeaders,headerNameToString:bF.headerNameToString};function jC(A){return(Q,B,I)=>{if(typeof B==="function")I=B,B=null;if(!Q||typeof Q!=="string"&&typeof Q!=="object"&&!(Q instanceof URL))throw new vF("invalid url");if(B!=null&&typeof B!=="object")throw new vF("invalid opts");if(B&&B.path!=null){if(typeof B.path!=="string")throw new vF("invalid opts.path");let g=B.path;if(!B.path.startsWith("/"))g=`/${g}`;Q=new URL(bF.parseOrigin(Q).origin+g)}else{if(!B)B=typeof Q==="object"?Q:{};Q=bF.parseURL(Q)}let{agent:E,dispatcher:C=nR()}=B;if(E)throw new vF("unsupported opts.agent. Did you mean opts.client?");return A.call(C,{...B,origin:Q.origin,path:Q.search?`${Q.pathname}${Q.search}`:Q.pathname,method:B.method||(B.body?"PUT":"GET")},I)}}SO.setGlobalDispatcher=CO;SO.getGlobalDispatcher=nR;var YO=NC().fetch;SO.fetch=async function(Q,B=void 0){try{return await YO(Q,B)}catch(I){if(I&&typeof I==="object")Error.captureStackTrace(I);throw I}};SO.Headers=JI().Headers;SO.Response=UC().Response;SO.Request=YE().Request;SO.FormData=bE().FormData;SO.File=globalThis.File??z("node:buffer").File;SO.FileReader=UZ().FileReader;var{setGlobalOrigin:JO,getGlobalOrigin:UO}=MD();SO.setGlobalOrigin=JO;SO.getGlobalOrigin=UO;var{CacheStorage:GO}=RZ(),{kConstruct:NO}=$F();SO.caches=new GO(NO);var{deleteCookie:MO,getCookies:wO,getSetCookies:WO,setCookie:LO}=PZ();SO.deleteCookie=MO;SO.getCookies=wO;SO.getSetCookies=WO;SO.setCookie=LO;var{parseMIMEType:VO,serializeAMimeType:ZO}=oA();SO.parseMIMEType=VO;SO.serializeAMimeType=ZO;var{CloseEvent:RO,ErrorEvent:XO,MessageEvent:KO}=wE();SO.WebSocket=xR().WebSocket;SO.CloseEvent=RO;SO.ErrorEvent=XO;SO.MessageEvent=KO;SO.request=jC(XE.request);SO.stream=jC(XE.stream);SO.pipeline=jC(XE.pipeline);SO.connect=jC(XE.connect);SO.upgrade=jC(XE.upgrade);SO.MockClient=AO;SO.MockPool=BO;SO.MockAgent=QO;SO.mockErrors=IO;var{EventSource:zO}=lR();SO.EventSource=zO});var uJ=W((bJ,mJ)=>{(function(A,Q){typeof bJ==="object"&&typeof mJ<"u"?mJ.exports=Q():typeof define==="function"&&define.amd?define(Q):A.Bottleneck=Q()})(bJ,function(){var A=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Q(H){return H&&H.default||H}var B=function(H,G,M={}){var V,K,X;for(V in G)X=G[V],M[V]=(K=H[V])!=null?K:X;return M},I=function(H,G,M={}){var V,K;for(V in H)if(K=H[V],G[V]!==void 0)M[V]=K;return M},E={load:B,overwrite:I},C;C=class{constructor(G,M){this.incr=G,this.decr=M,this._first=null,this._last=null,this.length=0}push(G){var M;if(this.length++,typeof this.incr==="function")this.incr();if(M={value:G,prev:this._last,next:null},this._last!=null)this._last.next=M,this._last=M;else this._first=this._last=M;return}shift(){var G;if(this._first==null)return;else if(this.length--,typeof this.decr==="function")this.decr();if(G=this._first.value,(this._first=this._first.next)!=null)this._first.prev=null;else this._last=null;return G}first(){if(this._first!=null)return this._first.value}getArray(){var G,M,V;G=this._first,V=[];while(G!=null)V.push((M=G,G=G.next,M.value));return V}forEachShift(G){var M=this.shift();while(M!=null)G(M),M=this.shift();return}debug(){var G,M,V,K,X;G=this._first,X=[];while(G!=null)X.push((M=G,G=G.next,{value:M.value,prev:(V=M.prev)!=null?V.value:void 0,next:(K=M.next)!=null?K.value:void 0}));return X}};var g=C,F;F=class{constructor(G){if(this.instance=G,this._events={},this.instance.on!=null||this.instance.once!=null||this.instance.removeAllListeners!=null)throw Error("An Emitter already exists for this object");this.instance.on=(M,V)=>{return this._addListener(M,"many",V)},this.instance.once=(M,V)=>{return this._addListener(M,"once",V)},this.instance.removeAllListeners=(M=null)=>{if(M!=null)return delete this._events[M];else return this._events={}}}_addListener(G,M,V){var K;if((K=this._events)[G]==null)K[G]=[];return this._events[G].push({cb:V,status:M}),this.instance}listenerCount(G){if(this._events[G]!=null)return this._events[G].length;else return 0}async trigger(G,...M){var V,K;try{if(G!=="debug")this.trigger("debug",`Event triggered: ${G}`,M);if(this._events[G]==null)return;return this._events[G]=this._events[G].filter(function(X){return X.status!=="none"}),K=this._events[G].map(async(X)=>{var j,d;if(X.status==="none")return;if(X.status==="once")X.status="none";try{if(d=typeof X.cb==="function"?X.cb(...M):void 0,typeof(d!=null?d.then:void 0)==="function")return await d;else return d}catch(wA){return j=wA,this.trigger("error",j),null}}),(await Promise.all(K)).find(function(X){return X!=null})}catch(X){return V=X,this.trigger("error",V),null}}};var D=F,J,Y,U;J=g,Y=D,U=class{constructor(G){var M;this.Events=new Y(this),this._length=0,this._lists=function(){var V,K,X;X=[];for(M=V=1,K=G;1<=K?V<=K:V>=K;M=1<=K?++V:--V)X.push(new J(()=>{return this.incr()},()=>{return this.decr()}));return X}.call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(G){return this._lists[G.options.priority].push(G)}queued(G){if(G!=null)return this._lists[G].length;else return this._length}shiftAll(G){return this._lists.forEach(function(M){return M.forEachShift(G)})}getFirst(G=this._lists){var M,V,K;for(M=0,V=G.length;M0)return K;return[]}shiftLastFrom(G){return this.getFirst(this._lists.slice(G).reverse()).shift()}};var N=U,w;w=class extends Error{};var L=w,S,Z,R,x,O;x=10,Z=5,O=E,S=L,R=class{constructor(G,M,V,K,X,j,d,wA){if(this.task=G,this.args=M,this.rejectOnDrop=X,this.Events=j,this._states=d,this.Promise=wA,this.options=O.load(V,K),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===K.id)this.options.id=`${this.options.id}-${this._randomIndex()}`;this.promise=new this.Promise((PA,aB)=>{this._resolve=PA,this._reject=aB}),this.retryCount=0}_sanitizePriority(G){var M=~~G!==G?Z:G;if(M<0)return 0;else if(M>x-1)return x-1;else return M}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:G,message:M="This job has been dropped by Bottleneck"}={}){if(this._states.remove(this.options.id)){if(this.rejectOnDrop)this._reject(G!=null?G:new S(M));return this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0}else return!1}_assertStatus(G){var M=this._states.jobStatus(this.options.id);if(!(M===G||G==="DONE"&&M===null))throw new S(`Invalid job status ${M}, expected ${G}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(G,M){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:G,blocked:M})}doRun(){if(this.retryCount===0)this._assertStatus("QUEUED"),this._states.next(this.options.id);else this._assertStatus("EXECUTING");return this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(G,M,V,K){var X,j,d;if(this.retryCount===0)this._assertStatus("RUNNING"),this._states.next(this.options.id);else this._assertStatus("EXECUTING");j={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",j);try{if(d=await(G!=null?G.schedule(this.options,this.task,...this.args):this.task(...this.args)),M())return this.doDone(j),await K(this.options,j),this._assertStatus("DONE"),this._resolve(d)}catch(wA){return X=wA,this._onFailure(X,j,M,V,K)}}doExpire(G,M,V){var K,X;if(this._states.jobStatus(this.options.id==="RUNNING"))this._states.next(this.options.id);return this._assertStatus("EXECUTING"),X={args:this.args,options:this.options,retryCount:this.retryCount},K=new S(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(K,X,G,M,V)}async _onFailure(G,M,V,K,X){var j,d;if(V())if(j=await this.Events.trigger("failed",G,M),j!=null)return d=~~j,this.Events.trigger("retry",`Retrying ${this.options.id} after ${d} ms`,M),this.retryCount++,K(d);else return this.doDone(M),await X(this.options,M),this._assertStatus("DONE"),this._reject(G)}doDone(G){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",G)}};var q=R,a,t,AA;AA=E,a=L,t=class{constructor(G,M,V){this.instance=G,this.storeOptions=M,this.clientId=this.instance._randomIndex(),AA.load(V,V,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var G;if(this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null))return typeof(G=this.heartbeat=setInterval(()=>{var M,V,K,X,j;if(X=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&X>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval)this._lastReservoirRefresh=X,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity());if(this.storeOptions.reservoirIncreaseInterval!=null&&X>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval){if({reservoirIncreaseAmount:M,reservoirIncreaseMaximum:K,reservoir:j}=this.storeOptions,this._lastReservoirIncrease=X,V=K!=null?Math.min(M,K-j):M,V>0)return this.storeOptions.reservoir+=V,this.instance._drainAll(this.computeCapacity())}},this.heartbeatInterval)).unref==="function"?G.unref():void 0;else return clearInterval(this.heartbeat)}async __publish__(G){return await this.yieldLoop(),this.instance.Events.trigger("message",G.toString())}async __disconnect__(G){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(G=0){return new this.Promise(function(M,V){return setTimeout(M,G)})}computePenalty(){var G;return(G=this.storeOptions.penalty)!=null?G:15*this.storeOptions.minTime||5000}async __updateSettings__(G){return await this.yieldLoop(),AA.overwrite(G,G,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(G){return await this.yieldLoop(),this._nextRequest+this.timeout=G}check(G,M){return this.conditionsCheck(G)&&this._nextRequest-M<=0}async __check__(G){var M;return await this.yieldLoop(),M=Date.now(),this.check(G,M)}async __register__(G,M,V){var K,X;if(await this.yieldLoop(),K=Date.now(),this.conditionsCheck(M)){if(this._running+=M,this.storeOptions.reservoir!=null)this.storeOptions.reservoir-=M;return X=Math.max(this._nextRequest-K,0),this._nextRequest=K+X+this.storeOptions.minTime,{success:!0,wait:X,reservoir:this.storeOptions.reservoir}}else return{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(G,M){var V,K,X;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&M>this.storeOptions.maxConcurrent)throw new a(`Impossible to add a job having a weight of ${M} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);if(K=Date.now(),X=this.storeOptions.highWater!=null&&G===this.storeOptions.highWater&&!this.check(M,K),V=this.strategyIsBlock()&&(X||this.isBlocked(K)),V)this._unblockTime=K+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued();return{reachedHWM:X,blocked:V,strategy:this.storeOptions.strategy}}async __free__(G,M){return await this.yieldLoop(),this._running-=M,this._done+=M,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var SQ=t,OA,UQ;OA=L,UQ=class{constructor(G){this.status=G,this._jobs={},this.counts=this.status.map(function(){return 0})}next(G){var M,V;if(M=this._jobs[G],V=M+1,M!=null&&V{return G[this.status[V]]=M,G},{})}};var ZB=UQ,_A,nB;_A=g,nB=class{constructor(G,M){this.schedule=this.schedule.bind(this),this.name=G,this.Promise=M,this._running=0,this._queue=new _A}isEmpty(){return this._queue.length===0}async _tryToRun(){var G,M,V,K,X,j,d;if(this._running<1&&this._queue.length>0)return this._running++,{task:d,args:G,resolve:X,reject:K}=this._queue.shift(),M=await async function(){try{return j=await d(...G),function(){return X(j)}}catch(wA){return V=wA,function(){return K(V)}}}(),this._running--,this._tryToRun(),M()}schedule(G,...M){var V,K,X;return X=K=null,V=new this.Promise(function(j,d){return X=j,K=d}),this._queue.push({task:G,args:M,resolve:X,reject:K}),this._tryToRun(),V}};var TU=nB,SI="2.19.5",$I={version:SI},K8=Object.freeze({version:SI,default:$I}),_U=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),jU=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),z8=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),xU,OU,PU,qU,yU,Eg;Eg=E,xU=D,qU=_U,PU=jU,yU=z8,OU=function(){class H{constructor(G={}){if(this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=G,Eg.load(this.limiterOptions,this.defaults,this),this.Events=new xU(this),this.instances={},this.Bottleneck=pU,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null){if(this.limiterOptions.datastore==="redis")this.connection=new qU(Object.assign({},this.limiterOptions,{Events:this.Events}));else if(this.limiterOptions.datastore==="ioredis")this.connection=new PU(Object.assign({},this.limiterOptions,{Events:this.Events}))}}key(G=""){var M;return(M=this.instances[G])!=null?M:(()=>{var V=this.instances[G]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${G}`,timeout:this.timeout,connection:this.connection}));return this.Events.trigger("created",V,G),V})()}async deleteKey(G=""){var M,V;if(V=this.instances[G],this.connection)M=await this.connection.__runCommand__(["del",...yU.allKeys(`${this.id}-${G}`)]);if(V!=null)delete this.instances[G],await V.disconnect();return V!=null||M>0}limiters(){var G,M,V,K;M=this.instances,V=[];for(G in M)K=M[G],V.push({key:G,limiter:K});return V}keys(){return Object.keys(this.instances)}async clusterKeys(){var G,M,V,K,X,j,d,wA,PA;if(this.connection==null)return this.Promise.resolve(this.keys());j=[],G=null,PA=`b_${this.id}-`.length,M=9;while(G!==0){[wA,V]=await this.connection.__runCommand__(["scan",G!=null?G:0,"match",`b_${this.id}-*_settings`,"count",1e4]),G=~~wA;for(K=0,d=V.length;K{var M,V,K,X,j,d;j=Date.now(),K=this.instances,X=[];for(V in K){d=K[V];try{if(await d._store.__groupCheck__(j))X.push(this.deleteKey(V));else X.push(void 0)}catch(wA){M=wA,X.push(d.Events.trigger("error",M))}}return X},this.timeout/2)).unref==="function"?G.unref():void 0}updateSettings(G={}){if(Eg.overwrite(G,this.defaults,this),Eg.overwrite(G,G,this.limiterOptions),G.timeout!=null)return this._startAutoCleanup()}disconnect(G=!0){var M;if(!this.sharedConnection)return(M=this.connection)!=null?M.disconnect(G):void 0}}return H.prototype.defaults={timeout:300000,connection:null,Promise,id:"group-key"},H}.call(A);var S8=OU,hU,kU,fU;fU=E,kU=D,hU=function(){class H{constructor(G={}){this.options=G,fU.load(this.options,this.defaults,this),this.Events=new kU(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((G,M)=>{return this._resolve=G})}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(G){var M;if(this._arr.push(G),M=this._promise,this._arr.length===this.maxSize)this._flush();else if(this.maxTime!=null&&this._arr.length===1)this._timeout=setTimeout(()=>{return this._flush()},this.maxTime);return M}}return H.prototype.defaults={maxTime:null,maxSize:null,Promise},H}.call(A);var $8=hU,H8=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),T8=Q(K8),vU,bU,x0,O0,mU,P0,uU,cU,dU,q0,hQ,lU=[].splice;P0=10,bU=5,hQ=E,uU=N,O0=q,mU=SQ,cU=H8,x0=D,dU=ZB,q0=TU,vU=function(){class H{constructor(G={},...M){var V,K;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(G,M),hQ.load(G,this.instanceDefaults,this),this._queues=new uU(P0),this._scheduled={},this._states=new dU(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new x0(this),this._submitLock=new q0("submit",this.Promise),this._registerLock=new q0("register",this.Promise),K=hQ.load(G,this.storeDefaults,{}),this._store=function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return V=hQ.load(G,this.redisStoreDefaults,{}),new cU(this,K,V);else if(this.datastore==="local")return V=hQ.load(G,this.localStoreDefaults,{}),new mU(this,K,V);else throw new H.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}.call(this),this._queues.on("leftzero",()=>{var X;return(X=this._store.heartbeat)!=null?typeof X.ref==="function"?X.ref():void 0:void 0}),this._queues.on("zero",()=>{var X;return(X=this._store.heartbeat)!=null?typeof X.unref==="function"?X.unref():void 0:void 0})}_validateOptions(G,M){if(!(G!=null&&typeof G==="object"&&M.length===0))throw new H.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(G){return this._store.__publish__(G)}disconnect(G=!0){return this._store.__disconnect__(G)}chain(G){return this._limiter=G,this}queued(G){return this._queues.queued(G)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(G){return this._states.jobStatus(G)}jobs(G){return this._states.statusJobs(G)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(G=1){return this._store.__check__(G)}_clearGlobalState(G){if(this._scheduled[G]!=null)return clearTimeout(this._scheduled[G].expiration),delete this._scheduled[G],!0;else return!1}async _free(G,M,V,K){var X,j;try{if({running:j}=await this._store.__free__(G,V.weight),this.Events.trigger("debug",`Freed ${V.id}`,K),j===0&&this.empty())return this.Events.trigger("idle")}catch(d){return X=d,this.Events.trigger("error",X)}}_run(G,M,V){var K,X,j;return M.doRun(),K=this._clearGlobalState.bind(this,G),j=this._run.bind(this,G,M),X=this._free.bind(this,G,M),this._scheduled[G]={timeout:setTimeout(()=>{return M.doExecute(this._limiter,K,j,X)},V),expiration:M.options.expiration!=null?setTimeout(function(){return M.doExpire(K,j,X)},V+M.options.expiration):void 0,job:M}}_drainOne(G){return this._registerLock.schedule(()=>{var M,V,K,X,j;if(this.queued()===0)return this.Promise.resolve(null);if(j=this._queues.getFirst(),{options:X,args:M}=K=j.first(),G!=null&&X.weight>G)return this.Promise.resolve(null);return this.Events.trigger("debug",`Draining ${X.id}`,{args:M,options:X}),V=this._randomIndex(),this._store.__register__(V,X.weight,X.expiration).then(({success:d,wait:wA,reservoir:PA})=>{var aB;if(this.Events.trigger("debug",`Drained ${X.id}`,{success:d,args:M,options:X}),d){if(j.shift(),aB=this.empty(),aB)this.Events.trigger("empty");if(PA===0)this.Events.trigger("depleted",aB);return this._run(V,K,wA),this.Promise.resolve(X.weight)}else return this.Promise.resolve(null)})})}_drainAll(G,M=0){return this._drainOne(G).then((V)=>{var K;if(V!=null)return K=G!=null?G-V:G,this._drainAll(K,M+V);else return this.Promise.resolve(M)}).catch((V)=>{return this.Events.trigger("error",V)})}_dropAllQueued(G){return this._queues.shiftAll(function(M){return M.doDrop({message:G})})}stop(G={}){var M,V;return G=hQ.load(G,this.stopDefaults),V=(K)=>{var X=()=>{var j=this._states.counts;return j[0]+j[1]+j[2]+j[3]===K};return new this.Promise((j,d)=>{if(X())return j();else return this.on("done",()=>{if(X())return this.removeAllListeners("done"),j()})})},M=G.dropWaitingJobs?(this._run=function(K,X){return X.doDrop({message:G.dropErrorMessage})},this._drainOne=()=>{return this.Promise.resolve(null)},this._registerLock.schedule(()=>{return this._submitLock.schedule(()=>{var K,X,j;X=this._scheduled;for(K in X)if(j=X[K],this.jobStatus(j.job.options.id)==="RUNNING")clearTimeout(j.timeout),clearTimeout(j.expiration),j.job.doDrop({message:G.dropErrorMessage});return this._dropAllQueued(G.dropErrorMessage),V(0)})})):this.schedule({priority:P0-1,weight:0},()=>{return V(1)}),this._receive=function(K){return K._reject(new H.prototype.BottleneckError(G.enqueueErrorMessage))},this.stop=()=>{return this.Promise.reject(new H.prototype.BottleneckError("stop() has already been called"))},M}async _addToQueue(G){var M,V,K,X,j,d,wA;({args:M,options:X}=G);try{({reachedHWM:j,blocked:V,strategy:wA}=await this._store.__submit__(this.queued(),X.weight))}catch(PA){return K=PA,this.Events.trigger("debug",`Could not queue ${X.id}`,{args:M,options:X,error:K}),G.doDrop({error:K}),!1}if(V)return G.doDrop(),!0;else if(j){if(d=wA===H.prototype.strategy.LEAK?this._queues.shiftLastFrom(X.priority):wA===H.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(X.priority+1):wA===H.prototype.strategy.OVERFLOW?G:void 0,d!=null)d.doDrop();if(d==null||wA===H.prototype.strategy.OVERFLOW){if(d==null)G.doDrop();return j}}return G.doQueue(j,V),this._queues.push(G),await this._drainAll(),j}_receive(G){if(this._states.jobStatus(G.options.id)!=null)return G._reject(new H.prototype.BottleneckError(`A job with the same id already exists (id=${G.options.id})`)),!1;else return G.doReceive(),this._submitLock.schedule(this._addToQueue,G)}submit(...G){var M,V,K,X,j,d,wA;if(typeof G[0]==="function")j=G,[V,...G]=j,[M]=lU.call(G,-1),X=hQ.load({},this.jobDefaults);else d=G,[X,V,...G]=d,[M]=lU.call(G,-1),X=hQ.load(X,this.jobDefaults);return wA=(...PA)=>{return new this.Promise(function(aB,j8){return V(...PA,function(...iU){return(iU[0]!=null?j8:aB)(iU)})})},K=new O0(wA,G,X,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),K.promise.then(function(PA){return typeof M==="function"?M(...PA):void 0}).catch(function(PA){if(Array.isArray(PA))return typeof M==="function"?M(...PA):void 0;else return typeof M==="function"?M(PA):void 0}),this._receive(K)}schedule(...G){var M,V,K;if(typeof G[0]==="function")[K,...G]=G,V={};else[V,K,...G]=G;return M=new O0(K,G,V,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(M),M.promise}wrap(G){var M,V;return M=this.schedule.bind(this),V=function(...K){return M(G.bind(this),...K)},V.withOptions=function(K,...X){return M(K,G,...X)},V}async updateSettings(G={}){return await this._store.__updateSettings__(hQ.overwrite(G,this.storeDefaults)),hQ.overwrite(G,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(G=0){return this._store.__incrementReservoir__(G)}}return H.default=H,H.Events=x0,H.version=H.prototype.version=T8.version,H.strategy=H.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},H.BottleneckError=H.prototype.BottleneckError=L,H.Group=H.prototype.Group=S8,H.RedisConnection=H.prototype.RedisConnection=_U,H.IORedisConnection=H.prototype.IORedisConnection=jU,H.Batcher=H.prototype.Batcher=$8,H.prototype.jobDefaults={priority:bU,weight:1,expiration:null,id:""},H.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:H.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},H.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},H.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5000,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},H.prototype.instanceDefaults={datastore:"local",connection:null,id:"",rejectOnDrop:!0,trackDoneStatus:!1,Promise},H.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},H}.call(A);var pU=vU,_8=pU;return _8})});var nC=W((Ml,AX)=>{var Gh=Number.MAX_SAFE_INTEGER||9007199254740991,Nh=["major","premajor","minor","preminor","patch","prepatch","prerelease"];AX.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Gh,RELEASE_TYPES:Nh,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var aC=W((wl,QX)=>{var Mh=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...A)=>console.error("SEMVER",...A):()=>{};QX.exports=Mh});var jE=W((tQ,BX)=>{var{MAX_SAFE_COMPONENT_LENGTH:eJ,MAX_SAFE_BUILD_LENGTH:wh,MAX_LENGTH:Wh}=nC(),Lh=aC();tQ=BX.exports={};var Vh=tQ.re=[],Zh=tQ.safeRe=[],T=tQ.src=[],Rh=tQ.safeSrc=[],_=tQ.t={},Xh=0,AU="[a-zA-Z0-9-]",Kh=[["\\s",1],["\\d",Wh],[AU,wh]],zh=(A)=>{for(let[Q,B]of Kh)A=A.split(`${Q}*`).join(`${Q}{0,${B}}`).split(`${Q}+`).join(`${Q}{1,${B}}`);return A},c=(A,Q,B)=>{let I=zh(Q),E=Xh++;Lh(A,E,Q),_[A]=E,T[E]=Q,Rh[E]=I,Vh[E]=new RegExp(Q,B?"g":void 0),Zh[E]=new RegExp(I,B?"g":void 0)};c("NUMERICIDENTIFIER","0|[1-9]\\d*");c("NUMERICIDENTIFIERLOOSE","\\d+");c("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${AU}*`);c("MAINVERSION",`(${T[_.NUMERICIDENTIFIER]})\\.(${T[_.NUMERICIDENTIFIER]})\\.(${T[_.NUMERICIDENTIFIER]})`);c("MAINVERSIONLOOSE",`(${T[_.NUMERICIDENTIFIERLOOSE]})\\.(${T[_.NUMERICIDENTIFIERLOOSE]})\\.(${T[_.NUMERICIDENTIFIERLOOSE]})`);c("PRERELEASEIDENTIFIER",`(?:${T[_.NONNUMERICIDENTIFIER]}|${T[_.NUMERICIDENTIFIER]})`);c("PRERELEASEIDENTIFIERLOOSE",`(?:${T[_.NONNUMERICIDENTIFIER]}|${T[_.NUMERICIDENTIFIERLOOSE]})`);c("PRERELEASE",`(?:-(${T[_.PRERELEASEIDENTIFIER]}(?:\\.${T[_.PRERELEASEIDENTIFIER]})*))`);c("PRERELEASELOOSE",`(?:-?(${T[_.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${T[_.PRERELEASEIDENTIFIERLOOSE]})*))`);c("BUILDIDENTIFIER",`${AU}+`);c("BUILD",`(?:\\+(${T[_.BUILDIDENTIFIER]}(?:\\.${T[_.BUILDIDENTIFIER]})*))`);c("FULLPLAIN",`v?${T[_.MAINVERSION]}${T[_.PRERELEASE]}?${T[_.BUILD]}?`);c("FULL",`^${T[_.FULLPLAIN]}$`);c("LOOSEPLAIN",`[v=\\s]*${T[_.MAINVERSIONLOOSE]}${T[_.PRERELEASELOOSE]}?${T[_.BUILD]}?`);c("LOOSE",`^${T[_.LOOSEPLAIN]}$`);c("GTLT","((?:<|>)?=?)");c("XRANGEIDENTIFIERLOOSE",`${T[_.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);c("XRANGEIDENTIFIER",`${T[_.NUMERICIDENTIFIER]}|x|X|\\*`);c("XRANGEPLAIN",`[v=\\s]*(${T[_.XRANGEIDENTIFIER]})(?:\\.(${T[_.XRANGEIDENTIFIER]})(?:\\.(${T[_.XRANGEIDENTIFIER]})(?:${T[_.PRERELEASE]})?${T[_.BUILD]}?)?)?`);c("XRANGEPLAINLOOSE",`[v=\\s]*(${T[_.XRANGEIDENTIFIERLOOSE]})(?:\\.(${T[_.XRANGEIDENTIFIERLOOSE]})(?:\\.(${T[_.XRANGEIDENTIFIERLOOSE]})(?:${T[_.PRERELEASELOOSE]})?${T[_.BUILD]}?)?)?`);c("XRANGE",`^${T[_.GTLT]}\\s*${T[_.XRANGEPLAIN]}$`);c("XRANGELOOSE",`^${T[_.GTLT]}\\s*${T[_.XRANGEPLAINLOOSE]}$`);c("COERCEPLAIN",`(^|[^\\d])(\\d{1,${eJ}})(?:\\.(\\d{1,${eJ}}))?(?:\\.(\\d{1,${eJ}}))?`);c("COERCE",`${T[_.COERCEPLAIN]}(?:$|[^\\d])`);c("COERCEFULL",T[_.COERCEPLAIN]+`(?:${T[_.PRERELEASE]})?(?:${T[_.BUILD]})?(?:$|[^\\d])`);c("COERCERTL",T[_.COERCE],!0);c("COERCERTLFULL",T[_.COERCEFULL],!0);c("LONETILDE","(?:~>?)");c("TILDETRIM",`(\\s*)${T[_.LONETILDE]}\\s+`,!0);tQ.tildeTrimReplace="$1~";c("TILDE",`^${T[_.LONETILDE]}${T[_.XRANGEPLAIN]}$`);c("TILDELOOSE",`^${T[_.LONETILDE]}${T[_.XRANGEPLAINLOOSE]}$`);c("LONECARET","(?:\\^)");c("CARETTRIM",`(\\s*)${T[_.LONECARET]}\\s+`,!0);tQ.caretTrimReplace="$1^";c("CARET",`^${T[_.LONECARET]}${T[_.XRANGEPLAIN]}$`);c("CARETLOOSE",`^${T[_.LONECARET]}${T[_.XRANGEPLAINLOOSE]}$`);c("COMPARATORLOOSE",`^${T[_.GTLT]}\\s*(${T[_.LOOSEPLAIN]})$|^$`);c("COMPARATOR",`^${T[_.GTLT]}\\s*(${T[_.FULLPLAIN]})$|^$`);c("COMPARATORTRIM",`(\\s*)${T[_.GTLT]}\\s*(${T[_.LOOSEPLAIN]}|${T[_.XRANGEPLAIN]})`,!0);tQ.comparatorTrimReplace="$1$2$3";c("HYPHENRANGE",`^\\s*(${T[_.XRANGEPLAIN]})\\s+-\\s+(${T[_.XRANGEPLAIN]})\\s*$`);c("HYPHENRANGELOOSE",`^\\s*(${T[_.XRANGEPLAINLOOSE]})\\s+-\\s+(${T[_.XRANGEPLAINLOOSE]})\\s*$`);c("STAR","(<|>)?=?\\s*\\*");c("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");c("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var U0=W((Wl,IX)=>{var Sh=Object.freeze({loose:!0}),$h=Object.freeze({}),Hh=(A)=>{if(!A)return $h;if(typeof A!=="object")return Sh;return A};IX.exports=Hh});var QU=W((Ll,gX)=>{var EX=/^[0-9]+$/,CX=(A,Q)=>{if(typeof A==="number"&&typeof Q==="number")return A===Q?0:ACX(Q,A);gX.exports={compareIdentifiers:CX,rcompareIdentifiers:Th}});var uA=W((Vl,DX)=>{var G0=aC(),{MAX_LENGTH:FX,MAX_SAFE_INTEGER:N0}=nC(),{safeRe:M0,t:w0}=jE(),_h=U0(),{compareIdentifiers:BU}=QU();class qQ{constructor(A,Q){if(Q=_h(Q),A instanceof qQ)if(A.loose===!!Q.loose&&A.includePrerelease===!!Q.includePrerelease)return A;else A=A.version;else if(typeof A!=="string")throw TypeError(`Invalid version. Must be a string. Got type "${typeof A}".`);if(A.length>FX)throw TypeError(`version is longer than ${FX} characters`);G0("SemVer",A,Q),this.options=Q,this.loose=!!Q.loose,this.includePrerelease=!!Q.includePrerelease;let B=A.trim().match(Q.loose?M0[w0.LOOSE]:M0[w0.FULL]);if(!B)throw TypeError(`Invalid Version: ${A}`);if(this.raw=A,this.major=+B[1],this.minor=+B[2],this.patch=+B[3],this.major>N0||this.major<0)throw TypeError("Invalid major version");if(this.minor>N0||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>N0||this.patch<0)throw TypeError("Invalid patch version");if(!B[4])this.prerelease=[];else this.prerelease=B[4].split(".").map((I)=>{if(/^[0-9]+$/.test(I)){let E=+I;if(E>=0&&EA.major)return 1;if(this.minorA.minor)return 1;if(this.patchA.patch)return 1;return 0}comparePre(A){if(!(A instanceof qQ))A=new qQ(A,this.options);if(this.prerelease.length&&!A.prerelease.length)return-1;else if(!this.prerelease.length&&A.prerelease.length)return 1;else if(!this.prerelease.length&&!A.prerelease.length)return 0;let Q=0;do{let B=this.prerelease[Q],I=A.prerelease[Q];if(G0("prerelease compare",Q,B,I),B===void 0&&I===void 0)return 0;else if(I===void 0)return 1;else if(B===void 0)return-1;else if(B===I)continue;else return BU(B,I)}while(++Q)}compareBuild(A){if(!(A instanceof qQ))A=new qQ(A,this.options);let Q=0;do{let B=this.build[Q],I=A.build[Q];if(G0("build compare",Q,B,I),B===void 0&&I===void 0)return 0;else if(I===void 0)return 1;else if(B===void 0)return-1;else if(B===I)continue;else return BU(B,I)}while(++Q)}inc(A,Q,B){if(A.startsWith("pre")){if(!Q&&B===!1)throw Error("invalid increment argument: identifier is empty");if(Q){let I=`-${Q}`.match(this.options.loose?M0[w0.PRERELEASELOOSE]:M0[w0.PRERELEASE]);if(!I||I[1]!==Q)throw Error(`invalid identifier: ${Q}`)}}switch(A){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",Q,B);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",Q,B);break;case"prepatch":this.prerelease.length=0,this.inc("patch",Q,B),this.inc("pre",Q,B);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",Q,B);this.inc("pre",Q,B);break;case"release":if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0,this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":{let I=Number(B)?1:0;if(this.prerelease.length===0)this.prerelease=[I];else{let E=this.prerelease.length;while(--E>=0)if(typeof this.prerelease[E]==="number")this.prerelease[E]++,E=-2;if(E===-1){if(Q===this.prerelease.join(".")&&B===!1)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(I)}}if(Q){let E=[Q,I];if(B===!1)E=[Q];if(BU(this.prerelease[0],Q)===0){if(isNaN(this.prerelease[1]))this.prerelease=E}else this.prerelease=E}break}default:throw Error(`invalid increment argument: ${A}`)}if(this.raw=this.format(),this.build.length)this.raw+=`+${this.build.join(".")}`;return this}}DX.exports=qQ});var KI=W((Zl,JX)=>{var YX=uA(),jh=(A,Q,B=!1)=>{if(A instanceof YX)return A;try{return new YX(A,Q)}catch(I){if(!B)return null;throw I}};JX.exports=jh});var GX=W((Rl,UX)=>{var xh=KI(),Oh=(A,Q)=>{let B=xh(A,Q);return B?B.version:null};UX.exports=Oh});var MX=W((Xl,NX)=>{var Ph=KI(),qh=(A,Q)=>{let B=Ph(A.trim().replace(/^[=v]+/,""),Q);return B?B.version:null};NX.exports=qh});var LX=W((Kl,WX)=>{var wX=uA(),yh=(A,Q,B,I,E)=>{if(typeof B==="string")E=I,I=B,B=void 0;try{return new wX(A instanceof wX?A.version:A,B).inc(Q,I,E).version}catch(C){return null}};WX.exports=yh});var RX=W((zl,ZX)=>{var VX=KI(),hh=(A,Q)=>{let B=VX(A,null,!0),I=VX(Q,null,!0),E=B.compare(I);if(E===0)return null;let C=E>0,g=C?B:I,F=C?I:B,D=!!g.prerelease.length;if(!!F.prerelease.length&&!D){if(!F.patch&&!F.minor)return"major";if(F.compareMain(g)===0){if(F.minor&&!F.patch)return"minor";return"patch"}}let Y=D?"pre":"";if(B.major!==I.major)return Y+"major";if(B.minor!==I.minor)return Y+"minor";if(B.patch!==I.patch)return Y+"patch";return"prerelease"};ZX.exports=hh});var KX=W((Sl,XX)=>{var kh=uA(),fh=(A,Q)=>new kh(A,Q).major;XX.exports=fh});var SX=W(($l,zX)=>{var vh=uA(),bh=(A,Q)=>new vh(A,Q).minor;zX.exports=bh});var HX=W((Hl,$X)=>{var mh=uA(),uh=(A,Q)=>new mh(A,Q).patch;$X.exports=uh});var _X=W((Tl,TX)=>{var ch=KI(),dh=(A,Q)=>{let B=ch(A,Q);return B&&B.prerelease.length?B.prerelease:null};TX.exports=dh});var RQ=W((_l,xX)=>{var jX=uA(),lh=(A,Q,B)=>new jX(A,B).compare(new jX(Q,B));xX.exports=lh});var PX=W((jl,OX)=>{var ph=RQ(),ih=(A,Q,B)=>ph(Q,A,B);OX.exports=ih});var yX=W((xl,qX)=>{var nh=RQ(),ah=(A,Q)=>nh(A,Q,!0);qX.exports=ah});var W0=W((Ol,kX)=>{var hX=uA(),sh=(A,Q,B)=>{let I=new hX(A,B),E=new hX(Q,B);return I.compare(E)||I.compareBuild(E)};kX.exports=sh});var vX=W((Pl,fX)=>{var oh=W0(),rh=(A,Q)=>A.sort((B,I)=>oh(B,I,Q));fX.exports=rh});var mX=W((ql,bX)=>{var th=W0(),eh=(A,Q)=>A.sort((B,I)=>th(I,B,Q));bX.exports=eh});var sC=W((yl,uX)=>{var Ak=RQ(),Qk=(A,Q,B)=>Ak(A,Q,B)>0;uX.exports=Qk});var L0=W((hl,cX)=>{var Bk=RQ(),Ik=(A,Q,B)=>Bk(A,Q,B)<0;cX.exports=Ik});var IU=W((kl,dX)=>{var Ek=RQ(),Ck=(A,Q,B)=>Ek(A,Q,B)===0;dX.exports=Ck});var EU=W((fl,lX)=>{var gk=RQ(),Fk=(A,Q,B)=>gk(A,Q,B)!==0;lX.exports=Fk});var V0=W((vl,pX)=>{var Dk=RQ(),Yk=(A,Q,B)=>Dk(A,Q,B)>=0;pX.exports=Yk});var Z0=W((bl,iX)=>{var Jk=RQ(),Uk=(A,Q,B)=>Jk(A,Q,B)<=0;iX.exports=Uk});var CU=W((ml,nX)=>{var Gk=IU(),Nk=EU(),Mk=sC(),wk=V0(),Wk=L0(),Lk=Z0(),Vk=(A,Q,B,I)=>{switch(Q){case"===":if(typeof A==="object")A=A.version;if(typeof B==="object")B=B.version;return A===B;case"!==":if(typeof A==="object")A=A.version;if(typeof B==="object")B=B.version;return A!==B;case"":case"=":case"==":return Gk(A,B,I);case"!=":return Nk(A,B,I);case">":return Mk(A,B,I);case">=":return wk(A,B,I);case"<":return Wk(A,B,I);case"<=":return Lk(A,B,I);default:throw TypeError(`Invalid operator: ${Q}`)}};nX.exports=Vk});var sX=W((ul,aX)=>{var Zk=uA(),Rk=KI(),{safeRe:R0,t:X0}=jE(),Xk=(A,Q)=>{if(A instanceof Zk)return A;if(typeof A==="number")A=String(A);if(typeof A!=="string")return null;Q=Q||{};let B=null;if(!Q.rtl)B=A.match(Q.includePrerelease?R0[X0.COERCEFULL]:R0[X0.COERCE]);else{let D=Q.includePrerelease?R0[X0.COERCERTLFULL]:R0[X0.COERCERTL],J;while((J=D.exec(A))&&(!B||B.index+B[0].length!==A.length)){if(!B||J.index+J[0].length!==B.index+B[0].length)B=J;D.lastIndex=J.index+J[1].length+J[2].length}D.lastIndex=-1}if(B===null)return null;let I=B[2],E=B[3]||"0",C=B[4]||"0",g=Q.includePrerelease&&B[5]?`-${B[5]}`:"",F=Q.includePrerelease&&B[6]?`+${B[6]}`:"";return Rk(`${I}.${E}.${C}${g}${F}`,Q)};aX.exports=Xk});var tX=W((cl,rX)=>{class oX{constructor(){this.max=1000,this.map=new Map}get(A){let Q=this.map.get(A);if(Q===void 0)return;else return this.map.delete(A),this.map.set(A,Q),Q}delete(A){return this.map.delete(A)}set(A,Q){if(!this.delete(A)&&Q!==void 0){if(this.map.size>=this.max){let I=this.map.keys().next().value;this.delete(I)}this.map.set(A,Q)}return this}}rX.exports=oX});var XQ=W((dl,BK)=>{var Kk=/\s+/g;class oC{constructor(A,Q){if(Q=Sk(Q),A instanceof oC)if(A.loose===!!Q.loose&&A.includePrerelease===!!Q.includePrerelease)return A;else return new oC(A.raw,Q);if(A instanceof gU)return this.raw=A.value,this.set=[[A]],this.formatted=void 0,this;if(this.options=Q,this.loose=!!Q.loose,this.includePrerelease=!!Q.includePrerelease,this.raw=A.trim().replace(Kk," "),this.set=this.raw.split("||").map((B)=>this.parseRange(B.trim())).filter((B)=>B.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let B=this.set[0];if(this.set=this.set.filter((I)=>!AK(I[0])),this.set.length===0)this.set=[B];else if(this.set.length>1){for(let I of this.set)if(I.length===1&&Ok(I[0])){this.set=[I];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let A=0;A0)this.formatted+="||";let Q=this.set[A];for(let B=0;B0)this.formatted+=" ";this.formatted+=Q[B].toString().trim()}}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(A){let B=((this.options.includePrerelease&&jk)|(this.options.loose&&xk))+":"+A,I=eX.get(B);if(I)return I;let E=this.options.loose,C=E?nA[cA.HYPHENRANGELOOSE]:nA[cA.HYPHENRANGE];A=A.replace(C,uk(this.options.includePrerelease)),UA("hyphen replace",A),A=A.replace(nA[cA.COMPARATORTRIM],Hk),UA("comparator trim",A),A=A.replace(nA[cA.TILDETRIM],Tk),UA("tilde trim",A),A=A.replace(nA[cA.CARETTRIM],_k),UA("caret trim",A);let g=A.split(" ").map((Y)=>Pk(Y,this.options)).join(" ").split(/\s+/).map((Y)=>mk(Y,this.options));if(E)g=g.filter((Y)=>{return UA("loose invalid filter",Y,this.options),!!Y.match(nA[cA.COMPARATORLOOSE])});UA("range list",g);let F=new Map,D=g.map((Y)=>new gU(Y,this.options));for(let Y of D){if(AK(Y))return[Y];F.set(Y.value,Y)}if(F.size>1&&F.has(""))F.delete("");let J=[...F.values()];return eX.set(B,J),J}intersects(A,Q){if(!(A instanceof oC))throw TypeError("a Range is required");return this.set.some((B)=>{return QK(B,Q)&&A.set.some((I)=>{return QK(I,Q)&&B.every((E)=>{return I.every((C)=>{return E.intersects(C,Q)})})})})}test(A){if(!A)return!1;if(typeof A==="string")try{A=new $k(A,this.options)}catch(Q){return!1}for(let Q=0;QA.value==="<0.0.0-0",Ok=(A)=>A.value==="",QK=(A,Q)=>{let B=!0,I=A.slice(),E=I.pop();while(B&&I.length)B=I.every((C)=>{return E.intersects(C,Q)}),E=I.pop();return B},Pk=(A,Q)=>{return A=A.replace(nA[cA.BUILD],""),UA("comp",A,Q),A=hk(A,Q),UA("caret",A),A=qk(A,Q),UA("tildes",A),A=fk(A,Q),UA("xrange",A),A=bk(A,Q),UA("stars",A),A},aA=(A)=>!A||A.toLowerCase()==="x"||A==="*",qk=(A,Q)=>{return A.trim().split(/\s+/).map((B)=>yk(B,Q)).join(" ")},yk=(A,Q)=>{let B=Q.loose?nA[cA.TILDELOOSE]:nA[cA.TILDE];return A.replace(B,(I,E,C,g,F)=>{UA("tilde",A,I,E,C,g,F);let D;if(aA(E))D="";else if(aA(C))D=`>=${E}.0.0 <${+E+1}.0.0-0`;else if(aA(g))D=`>=${E}.${C}.0 <${E}.${+C+1}.0-0`;else if(F)UA("replaceTilde pr",F),D=`>=${E}.${C}.${g}-${F} <${E}.${+C+1}.0-0`;else D=`>=${E}.${C}.${g} <${E}.${+C+1}.0-0`;return UA("tilde return",D),D})},hk=(A,Q)=>{return A.trim().split(/\s+/).map((B)=>kk(B,Q)).join(" ")},kk=(A,Q)=>{UA("caret",A,Q);let B=Q.loose?nA[cA.CARETLOOSE]:nA[cA.CARET],I=Q.includePrerelease?"-0":"";return A.replace(B,(E,C,g,F,D)=>{UA("caret",A,E,C,g,F,D);let J;if(aA(C))J="";else if(aA(g))J=`>=${C}.0.0${I} <${+C+1}.0.0-0`;else if(aA(F))if(C==="0")J=`>=${C}.${g}.0${I} <${C}.${+g+1}.0-0`;else J=`>=${C}.${g}.0${I} <${+C+1}.0.0-0`;else if(D)if(UA("replaceCaret pr",D),C==="0")if(g==="0")J=`>=${C}.${g}.${F}-${D} <${C}.${g}.${+F+1}-0`;else J=`>=${C}.${g}.${F}-${D} <${C}.${+g+1}.0-0`;else J=`>=${C}.${g}.${F}-${D} <${+C+1}.0.0-0`;else if(UA("no pr"),C==="0")if(g==="0")J=`>=${C}.${g}.${F}${I} <${C}.${g}.${+F+1}-0`;else J=`>=${C}.${g}.${F}${I} <${C}.${+g+1}.0-0`;else J=`>=${C}.${g}.${F} <${+C+1}.0.0-0`;return UA("caret return",J),J})},fk=(A,Q)=>{return UA("replaceXRanges",A,Q),A.split(/\s+/).map((B)=>vk(B,Q)).join(" ")},vk=(A,Q)=>{A=A.trim();let B=Q.loose?nA[cA.XRANGELOOSE]:nA[cA.XRANGE];return A.replace(B,(I,E,C,g,F,D)=>{UA("xRange",A,I,E,C,g,F,D);let J=aA(C),Y=J||aA(g),U=Y||aA(F),N=U;if(E==="="&&N)E="";if(D=Q.includePrerelease?"-0":"",J)if(E===">"||E==="<")I="<0.0.0-0";else I="*";else if(E&&N){if(Y)g=0;if(F=0,E===">")if(E=">=",Y)C=+C+1,g=0,F=0;else g=+g+1,F=0;else if(E==="<=")if(E="<",Y)C=+C+1;else g=+g+1;if(E==="<")D="-0";I=`${E+C}.${g}.${F}${D}`}else if(Y)I=`>=${C}.0.0${D} <${+C+1}.0.0-0`;else if(U)I=`>=${C}.${g}.0${D} <${C}.${+g+1}.0-0`;return UA("xRange return",I),I})},bk=(A,Q)=>{return UA("replaceStars",A,Q),A.trim().replace(nA[cA.STAR],"")},mk=(A,Q)=>{return UA("replaceGTE0",A,Q),A.trim().replace(nA[Q.includePrerelease?cA.GTE0PRE:cA.GTE0],"")},uk=(A)=>(Q,B,I,E,C,g,F,D,J,Y,U,N)=>{if(aA(I))B="";else if(aA(E))B=`>=${I}.0.0${A?"-0":""}`;else if(aA(C))B=`>=${I}.${E}.0${A?"-0":""}`;else if(g)B=`>=${B}`;else B=`>=${B}${A?"-0":""}`;if(aA(J))D="";else if(aA(Y))D=`<${+J+1}.0.0-0`;else if(aA(U))D=`<${J}.${+Y+1}.0-0`;else if(N)D=`<=${J}.${Y}.${U}-${N}`;else if(A)D=`<${J}.${Y}.${+U+1}-0`;else D=`<=${D}`;return`${B} ${D}`.trim()},ck=(A,Q,B)=>{for(let I=0;I0){let E=A[I].semver;if(E.major===Q.major&&E.minor===Q.minor&&E.patch===Q.patch)return!0}}return!1}return!0}});var rC=W((ll,DK)=>{var tC=Symbol("SemVer ANY");class K0{static get ANY(){return tC}constructor(A,Q){if(Q=IK(Q),A instanceof K0)if(A.loose===!!Q.loose)return A;else A=A.value;if(A=A.trim().split(/\s+/).join(" "),DU("comparator",A,Q),this.options=Q,this.loose=!!Q.loose,this.parse(A),this.semver===tC)this.value="";else this.value=this.operator+this.semver.version;DU("comp",this)}parse(A){let Q=this.options.loose?EK[CK.COMPARATORLOOSE]:EK[CK.COMPARATOR],B=A.match(Q);if(!B)throw TypeError(`Invalid comparator: ${A}`);if(this.operator=B[1]!==void 0?B[1]:"",this.operator==="=")this.operator="";if(!B[2])this.semver=tC;else this.semver=new gK(B[2],this.options.loose)}toString(){return this.value}test(A){if(DU("Comparator.test",A,this.options.loose),this.semver===tC||A===tC)return!0;if(typeof A==="string")try{A=new gK(A,this.options)}catch(Q){return!1}return FU(A,this.operator,this.semver,this.options)}intersects(A,Q){if(!(A instanceof K0))throw TypeError("a Comparator is required");if(this.operator===""){if(this.value==="")return!0;return new FK(A.value,Q).test(this.value)}else if(A.operator===""){if(A.value==="")return!0;return new FK(this.value,Q).test(A.semver)}if(Q=IK(Q),Q.includePrerelease&&(this.value==="<0.0.0-0"||A.value==="<0.0.0-0"))return!1;if(!Q.includePrerelease&&(this.value.startsWith("<0.0.0")||A.value.startsWith("<0.0.0")))return!1;if(this.operator.startsWith(">")&&A.operator.startsWith(">"))return!0;if(this.operator.startsWith("<")&&A.operator.startsWith("<"))return!0;if(this.semver.version===A.semver.version&&this.operator.includes("=")&&A.operator.includes("="))return!0;if(FU(this.semver,"<",A.semver,Q)&&this.operator.startsWith(">")&&A.operator.startsWith("<"))return!0;if(FU(this.semver,">",A.semver,Q)&&this.operator.startsWith("<")&&A.operator.startsWith(">"))return!0;return!1}}DK.exports=K0;var IK=U0(),{safeRe:EK,t:CK}=jE(),FU=CU(),DU=aC(),gK=uA(),FK=XQ()});var eC=W((pl,YK)=>{var dk=XQ(),lk=(A,Q,B)=>{try{Q=new dk(Q,B)}catch(I){return!1}return Q.test(A)};YK.exports=lk});var UK=W((il,JK)=>{var pk=XQ(),ik=(A,Q)=>new pk(A,Q).set.map((B)=>B.map((I)=>I.value).join(" ").trim().split(" "));JK.exports=ik});var NK=W((nl,GK)=>{var nk=uA(),ak=XQ(),sk=(A,Q,B)=>{let I=null,E=null,C=null;try{C=new ak(Q,B)}catch(g){return null}return A.forEach((g)=>{if(C.test(g)){if(!I||E.compare(g)===-1)I=g,E=new nk(I,B)}}),I};GK.exports=sk});var wK=W((al,MK)=>{var ok=uA(),rk=XQ(),tk=(A,Q,B)=>{let I=null,E=null,C=null;try{C=new rk(Q,B)}catch(g){return null}return A.forEach((g)=>{if(C.test(g)){if(!I||E.compare(g)===1)I=g,E=new ok(I,B)}}),I};MK.exports=tk});var VK=W((sl,LK)=>{var YU=uA(),ek=XQ(),WK=sC(),Af=(A,Q)=>{A=new ek(A,Q);let B=new YU("0.0.0");if(A.test(B))return B;if(B=new YU("0.0.0-0"),A.test(B))return B;B=null;for(let I=0;I{let F=new YU(g.semver.version);switch(g.operator){case">":if(F.prerelease.length===0)F.patch++;else F.prerelease.push(0);F.raw=F.format();case"":case">=":if(!C||WK(F,C))C=F;break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${g.operator}`)}}),C&&(!B||WK(B,C)))B=C}if(B&&A.test(B))return B;return null};LK.exports=Af});var RK=W((ol,ZK)=>{var Qf=XQ(),Bf=(A,Q)=>{try{return new Qf(A,Q).range||"*"}catch(B){return null}};ZK.exports=Bf});var z0=W((rl,SK)=>{var If=uA(),zK=rC(),{ANY:Ef}=zK,Cf=XQ(),gf=eC(),XK=sC(),KK=L0(),Ff=Z0(),Df=V0(),Yf=(A,Q,B,I)=>{A=new If(A,I),Q=new Cf(Q,I);let E,C,g,F,D;switch(B){case">":E=XK,C=Ff,g=KK,F=">",D=">=";break;case"<":E=KK,C=Df,g=XK,F="<",D="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(gf(A,Q,I))return!1;for(let J=0;J{if(w.semver===Ef)w=new zK(">=0.0.0");if(U=U||w,N=N||w,E(w.semver,U.semver,I))U=w;else if(g(w.semver,N.semver,I))N=w}),U.operator===F||U.operator===D)return!1;if((!N.operator||N.operator===F)&&C(A,N.semver))return!1;else if(N.operator===D&&g(A,N.semver))return!1}return!0};SK.exports=Yf});var HK=W((tl,$K)=>{var Jf=z0(),Uf=(A,Q,B)=>Jf(A,Q,">",B);$K.exports=Uf});var _K=W((el,TK)=>{var Gf=z0(),Nf=(A,Q,B)=>Gf(A,Q,"<",B);TK.exports=Nf});var OK=W((Ap,xK)=>{var jK=XQ(),Mf=(A,Q,B)=>{return A=new jK(A,B),Q=new jK(Q,B),A.intersects(Q,B)};xK.exports=Mf});var qK=W((Qp,PK)=>{var wf=eC(),Wf=RQ();PK.exports=(A,Q,B)=>{let I=[],E=null,C=null,g=A.sort((Y,U)=>Wf(Y,U,B));for(let Y of g)if(wf(Y,Q,B)){if(C=Y,!E)E=Y}else{if(C)I.push([E,C]);C=null,E=null}if(E)I.push([E,null]);let F=[];for(let[Y,U]of I)if(Y===U)F.push(Y);else if(!U&&Y===g[0])F.push("*");else if(!U)F.push(`>=${Y}`);else if(Y===g[0])F.push(`<=${U}`);else F.push(`${Y} - ${U}`);let D=F.join(" || "),J=typeof Q.raw==="string"?Q.raw:String(Q);return D.length{var yK=XQ(),UU=rC(),{ANY:JU}=UU,Ag=eC(),GU=RQ(),Lf=(A,Q,B={})=>{if(A===Q)return!0;A=new yK(A,B),Q=new yK(Q,B);let I=!1;A:for(let E of A.set){for(let C of Q.set){let g=Zf(E,C,B);if(I=I||g!==null,g)continue A}if(I)return!1}return!0},Vf=[new UU(">=0.0.0-0")],hK=[new UU(">=0.0.0")],Zf=(A,Q,B)=>{if(A===Q)return!0;if(A.length===1&&A[0].semver===JU)if(Q.length===1&&Q[0].semver===JU)return!0;else if(B.includePrerelease)A=Vf;else A=hK;if(Q.length===1&&Q[0].semver===JU)if(B.includePrerelease)return!0;else Q=hK;let I=new Set,E,C;for(let w of A)if(w.operator===">"||w.operator===">=")E=kK(E,w,B);else if(w.operator==="<"||w.operator==="<=")C=fK(C,w,B);else I.add(w.semver);if(I.size>1)return null;let g;if(E&&C){if(g=GU(E.semver,C.semver,B),g>0)return null;else if(g===0&&(E.operator!==">="||C.operator!=="<="))return null}for(let w of I){if(E&&!Ag(w,String(E),B))return null;if(C&&!Ag(w,String(C),B))return null;for(let L of Q)if(!Ag(w,String(L),B))return!1;return!0}let F,D,J,Y,U=C&&!B.includePrerelease&&C.semver.prerelease.length?C.semver:!1,N=E&&!B.includePrerelease&&E.semver.prerelease.length?E.semver:!1;if(U&&U.prerelease.length===1&&C.operator==="<"&&U.prerelease[0]===0)U=!1;for(let w of Q){if(Y=Y||w.operator===">"||w.operator===">=",J=J||w.operator==="<"||w.operator==="<=",E){if(N){if(w.semver.prerelease&&w.semver.prerelease.length&&w.semver.major===N.major&&w.semver.minor===N.minor&&w.semver.patch===N.patch)N=!1}if(w.operator===">"||w.operator===">="){if(F=kK(E,w,B),F===w&&F!==E)return!1}else if(E.operator===">="&&!Ag(E.semver,String(w),B))return!1}if(C){if(U){if(w.semver.prerelease&&w.semver.prerelease.length&&w.semver.major===U.major&&w.semver.minor===U.minor&&w.semver.patch===U.patch)U=!1}if(w.operator==="<"||w.operator==="<="){if(D=fK(C,w,B),D===w&&D!==C)return!1}else if(C.operator==="<="&&!Ag(C.semver,String(w),B))return!1}if(!w.operator&&(C||E)&&g!==0)return!1}if(E&&J&&!C&&g!==0)return!1;if(C&&Y&&!E&&g!==0)return!1;if(N||U)return!1;return!0},kK=(A,Q,B)=>{if(!A)return Q;let I=GU(A.semver,Q.semver,B);return I>0?A:I<0?Q:Q.operator===">"&&A.operator===">="?Q:A},fK=(A,Q,B)=>{if(!A)return Q;let I=GU(A.semver,Q.semver,B);return I<0?A:I>0?Q:Q.operator==="<"&&A.operator==="<="?Q:A};vK.exports=Lf});var MU=W((Ip,cK)=>{var NU=jE(),mK=nC(),Rf=uA(),uK=QU(),Xf=KI(),Kf=GX(),zf=MX(),Sf=LX(),$f=RX(),Hf=KX(),Tf=SX(),_f=HX(),jf=_X(),xf=RQ(),Of=PX(),Pf=yX(),qf=W0(),yf=vX(),hf=mX(),kf=sC(),ff=L0(),vf=IU(),bf=EU(),mf=V0(),uf=Z0(),cf=CU(),df=sX(),lf=rC(),pf=XQ(),nf=eC(),af=UK(),sf=NK(),of=wK(),rf=VK(),tf=RK(),ef=z0(),Av=HK(),Qv=_K(),Bv=OK(),Iv=qK(),Ev=bK();cK.exports={parse:Xf,valid:Kf,clean:zf,inc:Sf,diff:$f,major:Hf,minor:Tf,patch:_f,prerelease:jf,compare:xf,rcompare:Of,compareLoose:Pf,compareBuild:qf,sort:yf,rsort:hf,gt:kf,lt:ff,eq:vf,neq:bf,gte:mf,lte:uf,cmp:cf,coerce:df,Comparator:lf,Range:pf,satisfies:nf,toComparators:af,maxSatisfying:sf,minSatisfying:of,minVersion:rf,validRange:tf,outside:ef,gtr:Av,ltr:Qv,intersects:Bv,simplifyRange:Iv,subset:Ev,SemVer:Rf,re:NU.re,src:NU.src,tokens:NU.t,SEMVER_SPEC_VERSION:mK.SEMVER_SPEC_VERSION,RELEASE_TYPES:mK.RELEASE_TYPES,compareIdentifiers:uK.compareIdentifiers,rcompareIdentifiers:uK.rcompareIdentifiers}});var I8=W((B8)=>{Object.defineProperty(B8,"__esModule",{value:!0});B8.getProxyUrl=Vv;B8.checkBypass=Q8;function Vv(A){let Q=A.protocol==="https:";if(Q8(A))return;let B=(()=>{if(Q)return process.env.https_proxy||process.env.HTTPS_PROXY;else return process.env.http_proxy||process.env.HTTP_PROXY})();if(B)try{return new XU(B)}catch(I){if(!B.startsWith("http://")&&!B.startsWith("https://"))return new XU(`http://${B}`)}else return}function Q8(A){if(!A.hostname)return!1;let Q=A.hostname;if(Zv(Q))return!0;let B=process.env.no_proxy||process.env.NO_PROXY||"";if(!B)return!1;let I;if(A.port)I=Number(A.port);else if(A.protocol==="http:")I=80;else if(A.protocol==="https:")I=443;let E=[A.hostname.toUpperCase()];if(typeof I==="number")E.push(`${E[0]}:${I}`);for(let C of B.split(",").map((g)=>g.trim().toUpperCase()).filter((g)=>g))if(C==="*"||E.some((g)=>g===C||g.endsWith(`.${C}`)||C.startsWith(".")&&g.endsWith(`${C}`)))return!0;return!1}function Zv(A){let Q=A.toLowerCase();return Q==="localhost"||Q.startsWith("127.")||Q.startsWith("[::1]")||Q.startsWith("[0:0:0:0:0:0:0:1]")}class XU extends URL{constructor(A,Q){super(A,Q);this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}});var g8=W((MA)=>{var Kv=MA&&MA.__createBinding||(Object.create?function(A,Q,B,I){if(I===void 0)I=B;var E=Object.getOwnPropertyDescriptor(Q,B);if(!E||("get"in E?!Q.__esModule:E.writable||E.configurable))E={enumerable:!0,get:function(){return Q[B]}};Object.defineProperty(A,I,E)}:function(A,Q,B,I){if(I===void 0)I=B;A[I]=Q[B]}),zv=MA&&MA.__setModuleDefault||(Object.create?function(A,Q){Object.defineProperty(A,"default",{enumerable:!0,value:Q})}:function(A,Q){A.default=Q}),T0=MA&&MA.__importStar||function(){var A=function(Q){return A=Object.getOwnPropertyNames||function(B){var I=[];for(var E in B)if(Object.prototype.hasOwnProperty.call(B,E))I[I.length]=E;return I},A(Q)};return function(Q){if(Q&&Q.__esModule)return Q;var B={};if(Q!=null){for(var I=A(Q),E=0;EXA(this,void 0,void 0,function*(){let Q=Buffer.alloc(0);this.message.on("data",(B)=>{Q=Buffer.concat([Q,B])}),this.message.on("end",()=>{A(Q.toString())})}))})}readBodyBuffer(){return XA(this,void 0,void 0,function*(){return new Promise((A)=>XA(this,void 0,void 0,function*(){let Q=[];this.message.on("data",(B)=>{Q.push(B)}),this.message.on("end",()=>{A(Buffer.concat(Q))})}))})}}MA.HttpClientResponse=SU;function Ov(A){return new URL(A).protocol==="https:"}class C8{constructor(A,Q,B){if(this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=this._getUserAgentWithOrchestrationId(A),this.handlers=Q||[],this.requestOptions=B,B){if(B.ignoreSslError!=null)this._ignoreSslError=B.ignoreSslError;if(this._socketTimeout=B.socketTimeout,B.allowRedirects!=null)this._allowRedirects=B.allowRedirects;if(B.allowRedirectDowngrade!=null)this._allowRedirectDowngrade=B.allowRedirectDowngrade;if(B.maxRedirects!=null)this._maxRedirects=Math.max(B.maxRedirects,0);if(B.keepAlive!=null)this._keepAlive=B.keepAlive;if(B.allowRetries!=null)this._allowRetries=B.allowRetries;if(B.maxRetries!=null)this._maxRetries=B.maxRetries}}options(A,Q){return XA(this,void 0,void 0,function*(){return this.request("OPTIONS",A,null,Q||{})})}get(A,Q){return XA(this,void 0,void 0,function*(){return this.request("GET",A,null,Q||{})})}del(A,Q){return XA(this,void 0,void 0,function*(){return this.request("DELETE",A,null,Q||{})})}post(A,Q,B){return XA(this,void 0,void 0,function*(){return this.request("POST",A,Q,B||{})})}patch(A,Q,B){return XA(this,void 0,void 0,function*(){return this.request("PATCH",A,Q,B||{})})}put(A,Q,B){return XA(this,void 0,void 0,function*(){return this.request("PUT",A,Q,B||{})})}head(A,Q){return XA(this,void 0,void 0,function*(){return this.request("HEAD",A,null,Q||{})})}sendStream(A,Q,B,I){return XA(this,void 0,void 0,function*(){return this.request(A,Q,B,I)})}getJson(A){return XA(this,arguments,void 0,function*(Q,B={}){B[sA.Accept]=this._getExistingOrDefaultHeader(B,sA.Accept,VB.ApplicationJson);let I=yield this.get(Q,B);return this._processResponse(I,this.requestOptions)})}postJson(A,Q){return XA(this,arguments,void 0,function*(B,I,E={}){let C=JSON.stringify(I,null,2);E[sA.Accept]=this._getExistingOrDefaultHeader(E,sA.Accept,VB.ApplicationJson),E[sA.ContentType]=this._getExistingOrDefaultContentTypeHeader(E,VB.ApplicationJson);let g=yield this.post(B,C,E);return this._processResponse(g,this.requestOptions)})}putJson(A,Q){return XA(this,arguments,void 0,function*(B,I,E={}){let C=JSON.stringify(I,null,2);E[sA.Accept]=this._getExistingOrDefaultHeader(E,sA.Accept,VB.ApplicationJson),E[sA.ContentType]=this._getExistingOrDefaultContentTypeHeader(E,VB.ApplicationJson);let g=yield this.put(B,C,E);return this._processResponse(g,this.requestOptions)})}patchJson(A,Q){return XA(this,arguments,void 0,function*(B,I,E={}){let C=JSON.stringify(I,null,2);E[sA.Accept]=this._getExistingOrDefaultHeader(E,sA.Accept,VB.ApplicationJson),E[sA.ContentType]=this._getExistingOrDefaultContentTypeHeader(E,VB.ApplicationJson);let g=yield this.patch(B,C,E);return this._processResponse(g,this.requestOptions)})}request(A,Q,B,I){return XA(this,void 0,void 0,function*(){if(this._disposed)throw Error("Client has already been disposed.");let E=new URL(Q),C=this._prepareRequest(A,E,I),g=this._allowRetries&&_v.includes(A)?this._maxRetries+1:1,F=0,D;do{if(D=yield this.requestRaw(C,B),D&&D.message&&D.message.statusCode===zQ.Unauthorized){let Y;for(let U of this.handlers)if(U.canHandleAuthentication(D)){Y=U;break}if(Y)return Y.handleAuthentication(this,C,B);else return D}let J=this._maxRedirects;while(D.message.statusCode&&Hv.includes(D.message.statusCode)&&this._allowRedirects&&J>0){let Y=D.message.headers.location;if(!Y)break;let U=new URL(Y);if(E.protocol==="https:"&&E.protocol!==U.protocol&&!this._allowRedirectDowngrade)throw Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.");if(yield D.readBody(),U.hostname!==E.hostname){for(let N in I)if(N.toLowerCase()==="authorization")delete I[N]}C=this._prepareRequest(A,U,I),D=yield this.requestRaw(C,B),J--}if(!D.message.statusCode||!Tv.includes(D.message.statusCode))return D;if(F+=1,F{function E(C,g){if(C)I(C);else if(!g)I(Error("Unknown error"));else B(g)}this.requestRawWithCallback(A,Q,E)})})}requestRawWithCallback(A,Q,B){if(typeof Q==="string"){if(!A.options.headers)A.options.headers={};A.options.headers["Content-Length"]=Buffer.byteLength(Q,"utf8")}let I=!1;function E(F,D){if(!I)I=!0,B(F,D)}let C=A.httpModule.request(A.options,(F)=>{let D=new SU(F);E(void 0,D)}),g;if(C.on("socket",(F)=>{g=F}),C.setTimeout(this._socketTimeout||180000,()=>{if(g)g.end();E(Error(`Request timeout: ${A.options.path}`))}),C.on("error",function(F){E(F)}),Q&&typeof Q==="string")C.write(Q,"utf8");if(Q&&typeof Q!=="string")Q.on("close",function(){C.end()}),Q.pipe(C);else C.end()}getAgent(A){let Q=new URL(A);return this._getAgent(Q)}getAgentDispatcher(A){let Q=new URL(A),B=zU.getProxyUrl(Q);if(!(B&&B.hostname))return;return this._getProxyAgentDispatcher(Q,B)}_prepareRequest(A,Q,B){let I={};I.parsedUrl=Q;let E=I.parsedUrl.protocol==="https:";I.httpModule=E?E8:KU;let C=E?443:80;if(I.options={},I.options.host=I.parsedUrl.hostname,I.options.port=I.parsedUrl.port?parseInt(I.parsedUrl.port):C,I.options.path=(I.parsedUrl.pathname||"")+(I.parsedUrl.search||""),I.options.method=A,I.options.headers=this._mergeHeaders(B),this.userAgent!=null)I.options.headers["user-agent"]=this.userAgent;if(I.options.agent=this._getAgent(I.parsedUrl),this.handlers)for(let g of this.handlers)g.prepareRequest(I.options);return I}_mergeHeaders(A){if(this.requestOptions&&this.requestOptions.headers)return Object.assign({},Ig(this.requestOptions.headers),Ig(A||{}));return Ig(A||{})}_getExistingOrDefaultHeader(A,Q,B){let I;if(this.requestOptions&&this.requestOptions.headers){let C=Ig(this.requestOptions.headers)[Q];if(C)I=typeof C==="number"?C.toString():C}let E=A[Q];if(E!==void 0)return typeof E==="number"?E.toString():E;if(I!==void 0)return I;return B}_getExistingOrDefaultContentTypeHeader(A,Q){let B;if(this.requestOptions&&this.requestOptions.headers){let E=Ig(this.requestOptions.headers)[sA.ContentType];if(E)if(typeof E==="number")B=String(E);else if(Array.isArray(E))B=E.join(", ");else B=E}let I=A[sA.ContentType];if(I!==void 0)if(typeof I==="number")return String(I);else if(Array.isArray(I))return I.join(", ");else return I;if(B!==void 0)return B;return Q}_getAgent(A){let Q,B=zU.getProxyUrl(A),I=B&&B.hostname;if(this._keepAlive&&I)Q=this._proxyAgent;if(!I)Q=this._agent;if(Q)return Q;let E=A.protocol==="https:",C=100;if(this.requestOptions)C=this.requestOptions.maxSockets||KU.globalAgent.maxSockets;if(B&&B.hostname){let g={maxSockets:C,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(B.username||B.password)&&{proxyAuth:`${B.username}:${B.password}`}),{host:B.hostname,port:B.port})},F,D=B.protocol==="https:";if(E)F=D?H0.httpsOverHttps:H0.httpsOverHttp;else F=D?H0.httpOverHttps:H0.httpOverHttp;Q=F(g),this._proxyAgent=Q}if(!Q){let g={keepAlive:this._keepAlive,maxSockets:C};Q=E?new E8.Agent(g):new KU.Agent(g),this._agent=Q}if(E&&this._ignoreSslError)Q.options=Object.assign(Q.options||{},{rejectUnauthorized:!1});return Q}_getProxyAgentDispatcher(A,Q){let B;if(this._keepAlive)B=this._proxyAgentDispatcher;if(B)return B;let I=A.protocol==="https:";if(B=new Sv.ProxyAgent(Object.assign({uri:Q.href,pipelining:!this._keepAlive?0:1},(Q.username||Q.password)&&{token:`Basic ${Buffer.from(`${Q.username}:${Q.password}`).toString("base64")}`})),this._proxyAgentDispatcher=B,I&&this._ignoreSslError)B.options=Object.assign(B.options.requestTls||{},{rejectUnauthorized:!1});return B}_getUserAgentWithOrchestrationId(A){let Q=A||"actions/http-client",B=process.env.ACTIONS_ORCHESTRATION_ID;if(B){let I=B.replace(/[^a-z0-9_.-]/gi,"_");return`${Q} actions_orchestration_id/${I}`}return Q}_performExponentialBackoff(A){return XA(this,void 0,void 0,function*(){A=Math.min(jv,A);let Q=xv*Math.pow(2,A);return new Promise((B)=>setTimeout(()=>B(),Q))})}_processResponse(A,Q){return XA(this,void 0,void 0,function*(){return new Promise((B,I)=>XA(this,void 0,void 0,function*(){let E=A.message.statusCode||0,C={statusCode:E,result:null,headers:{}};if(E===zQ.NotFound)B(C);function g(J,Y){if(typeof Y==="string"){let U=new Date(Y);if(!isNaN(U.valueOf()))return U}return Y}let F,D;try{if(D=yield A.readBody(),D&&D.length>0){if(Q&&Q.deserializeDates)F=JSON.parse(D,g);else F=JSON.parse(D);C.result=F}C.headers=A.message.headers}catch(J){}if(E>299){let J;if(F&&F.message)J=F.message;else if(D&&D.length>0)J=D;else J=`Failed request: (${E})`;let Y=new _0(J,E);Y.result=C.result,I(Y)}else B(C)}))})}}MA.HttpClient=C8;var Ig=(A)=>Object.keys(A).reduce((Q,B)=>(Q[B.toLowerCase()]=A[B],Q),{})});import*as sU from"os";function XB(A){if(A===null||A===void 0)return"";else if(typeof A==="string"||A instanceof String)return A;return JSON.stringify(A)}function y0(A){if(!Object.keys(A).length)return{};return{title:A.title,file:A.file,line:A.startLine,endLine:A.endLine,col:A.startColumn,endColumn:A.endColumn}}function HI(A,Q,B){let I=new oU(A,Q,B);process.stdout.write(I.toString()+sU.EOL)}var aU="::";class oU{constructor(A,Q,B){if(!A)A="missing.command";this.command=A,this.properties=Q,this.message=B}toString(){let A=aU+this.command;if(this.properties&&Object.keys(this.properties).length>0){A+=" ";let Q=!0;for(let B in this.properties)if(this.properties.hasOwnProperty(B)){let I=this.properties[B];if(I){if(Q)Q=!1;else A+=",";A+=`${B}=${b8(I)}`}}}return A+=`${aU}${v8(this.message)}`,A}}function v8(A){return XB(A).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function b8(A){return XB(A).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}import*as rU from"crypto";import*as gg from"fs";import*as Cg from"os";function h0(A,Q){let B=process.env[`GITHUB_${A}`];if(!B)throw Error(`Unable to find environment variable for file command ${A}`);if(!gg.existsSync(B))throw Error(`Missing file at path: ${B}`);gg.appendFileSync(B,`${XB(Q)}${Cg.EOL}`,{encoding:"utf8"})}function tU(A,Q){let B=`ghadelimiter_${rU.randomUUID()}`,I=XB(Q);if(A.includes(B))throw Error(`Unexpected input: name should not contain the delimiter "${B}"`);if(I.includes(B))throw Error(`Unexpected input: value should not contain the delimiter "${B}"`);return`${A}<<${B}${Cg.EOL}${I}${Cg.EOL}${B}`}import*as KJ from"os";import*as Z1 from"path";import*as OC from"http";import*as YJ from"https";function f0(A){let Q=A.protocol==="https:";if(m8(A))return;let B=(()=>{if(Q)return process.env.https_proxy||process.env.HTTPS_PROXY;else return process.env.http_proxy||process.env.HTTP_PROXY})();if(B)try{return new k0(B)}catch(I){if(!B.startsWith("http://")&&!B.startsWith("https://"))return new k0(`http://${B}`)}else return}function m8(A){if(!A.hostname)return!1;let Q=A.hostname;if(u8(Q))return!0;let B=process.env.no_proxy||process.env.NO_PROXY||"";if(!B)return!1;let I;if(A.port)I=Number(A.port);else if(A.protocol==="http:")I=80;else if(A.protocol==="https:")I=443;let E=[A.hostname.toUpperCase()];if(typeof I==="number")E.push(`${E[0]}:${I}`);for(let C of B.split(",").map((g)=>g.trim().toUpperCase()).filter((g)=>g))if(C==="*"||E.some((g)=>g===C||g.endsWith(`.${C}`)||C.startsWith(".")&&g.endsWith(`${C}`)))return!0;return!1}function u8(A){let Q=A.toLowerCase();return Q==="localhost"||Q.startsWith("127.")||Q.startsWith("[::1]")||Q.startsWith("[0:0:0:0:0:0:0:1]")}class k0 extends URL{constructor(A,Q){super(A,Q);this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}var cB=RB(m0(),1),aR=RB(mF(),1),RA=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})},ZQ;(function(A){A[A.OK=200]="OK",A[A.MultipleChoices=300]="MultipleChoices",A[A.MovedPermanently=301]="MovedPermanently",A[A.ResourceMoved=302]="ResourceMoved",A[A.SeeOther=303]="SeeOther",A[A.NotModified=304]="NotModified",A[A.UseProxy=305]="UseProxy",A[A.SwitchProxy=306]="SwitchProxy",A[A.TemporaryRedirect=307]="TemporaryRedirect",A[A.PermanentRedirect=308]="PermanentRedirect",A[A.BadRequest=400]="BadRequest",A[A.Unauthorized=401]="Unauthorized",A[A.PaymentRequired=402]="PaymentRequired",A[A.Forbidden=403]="Forbidden",A[A.NotFound=404]="NotFound",A[A.MethodNotAllowed=405]="MethodNotAllowed",A[A.NotAcceptable=406]="NotAcceptable",A[A.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",A[A.RequestTimeout=408]="RequestTimeout",A[A.Conflict=409]="Conflict",A[A.Gone=410]="Gone",A[A.TooManyRequests=429]="TooManyRequests",A[A.InternalServerError=500]="InternalServerError",A[A.NotImplemented=501]="NotImplemented",A[A.BadGateway=502]="BadGateway",A[A.ServiceUnavailable=503]="ServiceUnavailable",A[A.GatewayTimeout=504]="GatewayTimeout"})(ZQ||(ZQ={}));var iA;(function(A){A.Accept="accept",A.ContentType="content-type"})(iA||(iA={}));var MB;(function(A){A.ApplicationJson="application/json"})(MB||(MB={}));var ZP=[ZQ.MovedPermanently,ZQ.ResourceMoved,ZQ.SeeOther,ZQ.TemporaryRedirect,ZQ.PermanentRedirect],RP=[ZQ.BadGateway,ZQ.ServiceUnavailable,ZQ.GatewayTimeout],XP=["OPTIONS","GET","DELETE","HEAD"],KP=10,zP=5;class JJ extends Error{constructor(A,Q){super(A);this.name="HttpClientError",this.statusCode=Q,Object.setPrototypeOf(this,JJ.prototype)}}class sR{constructor(A){this.message=A}readBody(){return RA(this,void 0,void 0,function*(){return new Promise((A)=>RA(this,void 0,void 0,function*(){let Q=Buffer.alloc(0);this.message.on("data",(B)=>{Q=Buffer.concat([Q,B])}),this.message.on("end",()=>{A(Q.toString())})}))})}readBodyBuffer(){return RA(this,void 0,void 0,function*(){return new Promise((A)=>RA(this,void 0,void 0,function*(){let Q=[];this.message.on("data",(B)=>{Q.push(B)}),this.message.on("end",()=>{A(Buffer.concat(Q))})}))})}}class uF{constructor(A,Q,B){if(this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=this._getUserAgentWithOrchestrationId(A),this.handlers=Q||[],this.requestOptions=B,B){if(B.ignoreSslError!=null)this._ignoreSslError=B.ignoreSslError;if(this._socketTimeout=B.socketTimeout,B.allowRedirects!=null)this._allowRedirects=B.allowRedirects;if(B.allowRedirectDowngrade!=null)this._allowRedirectDowngrade=B.allowRedirectDowngrade;if(B.maxRedirects!=null)this._maxRedirects=Math.max(B.maxRedirects,0);if(B.keepAlive!=null)this._keepAlive=B.keepAlive;if(B.allowRetries!=null)this._allowRetries=B.allowRetries;if(B.maxRetries!=null)this._maxRetries=B.maxRetries}}options(A,Q){return RA(this,void 0,void 0,function*(){return this.request("OPTIONS",A,null,Q||{})})}get(A,Q){return RA(this,void 0,void 0,function*(){return this.request("GET",A,null,Q||{})})}del(A,Q){return RA(this,void 0,void 0,function*(){return this.request("DELETE",A,null,Q||{})})}post(A,Q,B){return RA(this,void 0,void 0,function*(){return this.request("POST",A,Q,B||{})})}patch(A,Q,B){return RA(this,void 0,void 0,function*(){return this.request("PATCH",A,Q,B||{})})}put(A,Q,B){return RA(this,void 0,void 0,function*(){return this.request("PUT",A,Q,B||{})})}head(A,Q){return RA(this,void 0,void 0,function*(){return this.request("HEAD",A,null,Q||{})})}sendStream(A,Q,B,I){return RA(this,void 0,void 0,function*(){return this.request(A,Q,B,I)})}getJson(A){return RA(this,arguments,void 0,function*(Q,B={}){B[iA.Accept]=this._getExistingOrDefaultHeader(B,iA.Accept,MB.ApplicationJson);let I=yield this.get(Q,B);return this._processResponse(I,this.requestOptions)})}postJson(A,Q){return RA(this,arguments,void 0,function*(B,I,E={}){let C=JSON.stringify(I,null,2);E[iA.Accept]=this._getExistingOrDefaultHeader(E,iA.Accept,MB.ApplicationJson),E[iA.ContentType]=this._getExistingOrDefaultContentTypeHeader(E,MB.ApplicationJson);let g=yield this.post(B,C,E);return this._processResponse(g,this.requestOptions)})}putJson(A,Q){return RA(this,arguments,void 0,function*(B,I,E={}){let C=JSON.stringify(I,null,2);E[iA.Accept]=this._getExistingOrDefaultHeader(E,iA.Accept,MB.ApplicationJson),E[iA.ContentType]=this._getExistingOrDefaultContentTypeHeader(E,MB.ApplicationJson);let g=yield this.put(B,C,E);return this._processResponse(g,this.requestOptions)})}patchJson(A,Q){return RA(this,arguments,void 0,function*(B,I,E={}){let C=JSON.stringify(I,null,2);E[iA.Accept]=this._getExistingOrDefaultHeader(E,iA.Accept,MB.ApplicationJson),E[iA.ContentType]=this._getExistingOrDefaultContentTypeHeader(E,MB.ApplicationJson);let g=yield this.patch(B,C,E);return this._processResponse(g,this.requestOptions)})}request(A,Q,B,I){return RA(this,void 0,void 0,function*(){if(this._disposed)throw Error("Client has already been disposed.");let E=new URL(Q),C=this._prepareRequest(A,E,I),g=this._allowRetries&&XP.includes(A)?this._maxRetries+1:1,F=0,D;do{if(D=yield this.requestRaw(C,B),D&&D.message&&D.message.statusCode===ZQ.Unauthorized){let Y;for(let U of this.handlers)if(U.canHandleAuthentication(D)){Y=U;break}if(Y)return Y.handleAuthentication(this,C,B);else return D}let J=this._maxRedirects;while(D.message.statusCode&&ZP.includes(D.message.statusCode)&&this._allowRedirects&&J>0){let Y=D.message.headers.location;if(!Y)break;let U=new URL(Y);if(E.protocol==="https:"&&E.protocol!==U.protocol&&!this._allowRedirectDowngrade)throw Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.");if(yield D.readBody(),U.hostname!==E.hostname){for(let N in I)if(N.toLowerCase()==="authorization")delete I[N]}C=this._prepareRequest(A,U,I),D=yield this.requestRaw(C,B),J--}if(!D.message.statusCode||!RP.includes(D.message.statusCode))return D;if(F+=1,F{function E(C,g){if(C)I(C);else if(!g)I(Error("Unknown error"));else B(g)}this.requestRawWithCallback(A,Q,E)})})}requestRawWithCallback(A,Q,B){if(typeof Q==="string"){if(!A.options.headers)A.options.headers={};A.options.headers["Content-Length"]=Buffer.byteLength(Q,"utf8")}let I=!1;function E(F,D){if(!I)I=!0,B(F,D)}let C=A.httpModule.request(A.options,(F)=>{let D=new sR(F);E(void 0,D)}),g;if(C.on("socket",(F)=>{g=F}),C.setTimeout(this._socketTimeout||180000,()=>{if(g)g.end();E(Error(`Request timeout: ${A.options.path}`))}),C.on("error",function(F){E(F)}),Q&&typeof Q==="string")C.write(Q,"utf8");if(Q&&typeof Q!=="string")Q.on("close",function(){C.end()}),Q.pipe(C);else C.end()}getAgent(A){let Q=new URL(A);return this._getAgent(Q)}getAgentDispatcher(A){let Q=new URL(A),B=f0(Q);if(!(B&&B.hostname))return;return this._getProxyAgentDispatcher(Q,B)}_prepareRequest(A,Q,B){let I={};I.parsedUrl=Q;let E=I.parsedUrl.protocol==="https:";I.httpModule=E?YJ:OC;let C=E?443:80;if(I.options={},I.options.host=I.parsedUrl.hostname,I.options.port=I.parsedUrl.port?parseInt(I.parsedUrl.port):C,I.options.path=(I.parsedUrl.pathname||"")+(I.parsedUrl.search||""),I.options.method=A,I.options.headers=this._mergeHeaders(B),this.userAgent!=null)I.options.headers["user-agent"]=this.userAgent;if(I.options.agent=this._getAgent(I.parsedUrl),this.handlers)for(let g of this.handlers)g.prepareRequest(I.options);return I}_mergeHeaders(A){if(this.requestOptions&&this.requestOptions.headers)return Object.assign({},xC(this.requestOptions.headers),xC(A||{}));return xC(A||{})}_getExistingOrDefaultHeader(A,Q,B){let I;if(this.requestOptions&&this.requestOptions.headers){let C=xC(this.requestOptions.headers)[Q];if(C)I=typeof C==="number"?C.toString():C}let E=A[Q];if(E!==void 0)return typeof E==="number"?E.toString():E;if(I!==void 0)return I;return B}_getExistingOrDefaultContentTypeHeader(A,Q){let B;if(this.requestOptions&&this.requestOptions.headers){let E=xC(this.requestOptions.headers)[iA.ContentType];if(E)if(typeof E==="number")B=String(E);else if(Array.isArray(E))B=E.join(", ");else B=E}let I=A[iA.ContentType];if(I!==void 0)if(typeof I==="number")return String(I);else if(Array.isArray(I))return I.join(", ");else return I;if(B!==void 0)return B;return Q}_getAgent(A){let Q,B=f0(A),I=B&&B.hostname;if(this._keepAlive&&I)Q=this._proxyAgent;if(!I)Q=this._agent;if(Q)return Q;let E=A.protocol==="https:",C=100;if(this.requestOptions)C=this.requestOptions.maxSockets||OC.globalAgent.maxSockets;if(B&&B.hostname){let g={maxSockets:C,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(B.username||B.password)&&{proxyAuth:`${B.username}:${B.password}`}),{host:B.hostname,port:B.port})},F,D=B.protocol==="https:";if(E)F=D?cB.httpsOverHttps:cB.httpsOverHttp;else F=D?cB.httpOverHttps:cB.httpOverHttp;Q=F(g),this._proxyAgent=Q}if(!Q){let g={keepAlive:this._keepAlive,maxSockets:C};Q=E?new YJ.Agent(g):new OC.Agent(g),this._agent=Q}if(E&&this._ignoreSslError)Q.options=Object.assign(Q.options||{},{rejectUnauthorized:!1});return Q}_getProxyAgentDispatcher(A,Q){let B;if(this._keepAlive)B=this._proxyAgentDispatcher;if(B)return B;let I=A.protocol==="https:";if(B=new aR.ProxyAgent(Object.assign({uri:Q.href,pipelining:!this._keepAlive?0:1},(Q.username||Q.password)&&{token:`Basic ${Buffer.from(`${Q.username}:${Q.password}`).toString("base64")}`})),this._proxyAgentDispatcher=B,I&&this._ignoreSslError)B.options=Object.assign(B.options.requestTls||{},{rejectUnauthorized:!1});return B}_getUserAgentWithOrchestrationId(A){let Q=A||"actions/http-client",B=process.env.ACTIONS_ORCHESTRATION_ID;if(B){let I=B.replace(/[^a-z0-9_.-]/gi,"_");return`${Q} actions_orchestration_id/${I}`}return Q}_performExponentialBackoff(A){return RA(this,void 0,void 0,function*(){A=Math.min(KP,A);let Q=zP*Math.pow(2,A);return new Promise((B)=>setTimeout(()=>B(),Q))})}_processResponse(A,Q){return RA(this,void 0,void 0,function*(){return new Promise((B,I)=>RA(this,void 0,void 0,function*(){let E=A.message.statusCode||0,C={statusCode:E,result:null,headers:{}};if(E===ZQ.NotFound)B(C);function g(J,Y){if(typeof Y==="string"){let U=new Date(Y);if(!isNaN(U.valueOf()))return U}return Y}let F,D;try{if(D=yield A.readBody(),D&&D.length>0){if(Q&&Q.deserializeDates)F=JSON.parse(D,g);else F=JSON.parse(D);C.result=F}C.headers=A.message.headers}catch(J){}if(E>299){let J;if(F&&F.message)J=F.message;else if(D&&D.length>0)J=D;else J=`Failed request: (${E})`;let Y=new JJ(J,E);Y.result=C.result,I(Y)}else B(C)}))})}}var xC=(A)=>Object.keys(A).reduce((Q,B)=>(Q[B.toLowerCase()]=A[B],Q),{});import{EOL as $P}from"os";import{constants as oR,promises as HP}from"fs";var UJ=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})},{access:TP,appendFile:_P,writeFile:jP}=HP,rR="GITHUB_STEP_SUMMARY";class tR{constructor(){this._buffer=""}filePath(){return UJ(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let A=process.env[rR];if(!A)throw Error(`Unable to find environment variable for $${rR}. Check if your runtime environment supports job summaries.`);try{yield TP(A,oR.R_OK|oR.W_OK)}catch(Q){throw Error(`Unable to access summary file: '${A}'. Check if the file has correct read/write permissions.`)}return this._filePath=A,this._filePath})}wrap(A,Q,B={}){let I=Object.entries(B).map(([E,C])=>` ${E}="${C}"`).join("");if(!Q)return`<${A}${I}>`;return`<${A}${I}>${Q}`}write(A){return UJ(this,void 0,void 0,function*(){let Q=!!(A===null||A===void 0?void 0:A.overwrite),B=yield this.filePath();return yield(Q?jP:_P)(B,this._buffer,{encoding:"utf8"}),this.emptyBuffer()})}clear(){return UJ(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return this._buffer="",this}addRaw(A,Q=!1){return this._buffer+=A,Q?this.addEOL():this}addEOL(){return this.addRaw($P)}addCodeBlock(A,Q){let B=Object.assign({},Q&&{lang:Q}),I=this.wrap("pre",this.wrap("code",A),B);return this.addRaw(I).addEOL()}addList(A,Q=!1){let B=Q?"ol":"ul",I=A.map((C)=>this.wrap("li",C)).join(""),E=this.wrap(B,I);return this.addRaw(E).addEOL()}addTable(A){let Q=A.map((I)=>{let E=I.map((C)=>{if(typeof C==="string")return this.wrap("td",C);let{header:g,data:F,colspan:D,rowspan:J}=C,Y=g?"th":"td",U=Object.assign(Object.assign({},D&&{colspan:D}),J&&{rowspan:J});return this.wrap(Y,F,U)}).join("");return this.wrap("tr",E)}).join(""),B=this.wrap("table",Q);return this.addRaw(B).addEOL()}addDetails(A,Q){let B=this.wrap("details",this.wrap("summary",A)+Q);return this.addRaw(B).addEOL()}addImage(A,Q,B){let{width:I,height:E}=B||{},C=Object.assign(Object.assign({},I&&{width:I}),E&&{height:E}),g=this.wrap("img",null,Object.assign({src:A,alt:Q},C));return this.addRaw(g).addEOL()}addHeading(A,Q){let B=`h${Q}`,I=["h1","h2","h3","h4","h5","h6"].includes(B)?B:"h1",E=this.wrap(I,A);return this.addRaw(E).addEOL()}addSeparator(){let A=this.wrap("hr",null);return this.addRaw(A).addEOL()}addBreak(){let A=this.wrap("br",null);return this.addRaw(A).addEOL()}addQuote(A,Q){let B=Object.assign({},Q&&{cite:Q}),I=this.wrap("blockquote",A,B);return this.addRaw(I).addEOL()}addLink(A,Q){let B=this.wrap("a",A,{href:Q});return this.addRaw(B).addEOL()}}var Eu=new tR;import V1 from"os";import{StringDecoder as W1}from"string_decoder";import*as hC from"os";import*as LJ from"events";import*as N1 from"child_process";import*as M1 from"path";import{ok as OP}from"assert";import*as vA from"path";import*as PC from"fs";import*as lB from"path";var cF=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})},{chmod:GJ,copyFile:A1,lstat:qC,mkdir:Q1,open:Fu,readdir:NJ,rename:B1,rm:I1,rmdir:Du,stat:dB,symlink:E1,unlink:MJ}=PC.promises,oQ=process.platform==="win32";function C1(A){return cF(this,void 0,void 0,function*(){let Q=yield PC.promises.readlink(A);if(oQ&&!Q.endsWith("\\"))return`${Q}\\`;return Q})}var Yu=PC.constants.O_RDONLY;function pB(A){return cF(this,void 0,void 0,function*(){try{yield dB(A)}catch(Q){if(Q.code==="ENOENT")return!1;throw Q}return!0})}function g1(A){return cF(this,arguments,void 0,function*(Q,B=!1){return(B?yield dB(Q):yield qC(Q)).isDirectory()})}function dF(A){if(A=xP(A),!A)throw Error('isRooted() parameter "p" cannot be empty');if(oQ)return A.startsWith("\\")||/^[A-Z]:/i.test(A);return A.startsWith("/")}function wJ(A,Q){return cF(this,void 0,void 0,function*(){let B=void 0;try{B=yield dB(A)}catch(E){if(E.code!=="ENOENT")console.log(`Unexpected error attempting to determine if executable file exists '${A}': ${E}`)}if(B&&B.isFile()){if(oQ){let E=lB.extname(A).toUpperCase();if(Q.some((C)=>C.toUpperCase()===E))return A}else if(eR(B))return A}let I=A;for(let E of Q){A=I+E,B=void 0;try{B=yield dB(A)}catch(C){if(C.code!=="ENOENT")console.log(`Unexpected error attempting to determine if executable file exists '${A}': ${C}`)}if(B&&B.isFile()){if(oQ){try{let C=lB.dirname(A),g=lB.basename(A).toUpperCase();for(let F of yield NJ(C))if(g===F.toUpperCase()){A=lB.join(C,F);break}}catch(C){console.log(`Unexpected error attempting to determine the actual case of the file '${A}': ${C}`)}return A}else if(eR(B))return A}}return""})}function xP(A){if(A=A||"",oQ)return A=A.replace(/\//g,"\\"),A.replace(/\\\\+/g,"\\");return A.replace(/\/\/+/g,"/")}function eR(A){return(A.mode&1)>0||(A.mode&8)>0&&process.getgid!==void 0&&A.gid===process.getgid()||(A.mode&64)>0&&process.getuid!==void 0&&A.uid===process.getuid()}var iB=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})};function D1(A,Q){return iB(this,arguments,void 0,function*(B,I,E={}){let{force:C,recursive:g,copySourceDirectory:F}=qP(E),D=(yield pB(I))?yield dB(I):null;if(D&&D.isFile()&&!C)return;let J=D&&D.isDirectory()&&F?vA.join(I,vA.basename(B)):I;if(!(yield pB(B)))throw Error(`no such file or directory: ${B}`);if((yield dB(B)).isDirectory())if(!g)throw Error(`Failed to copy. ${B} is a directory, but tried to copy without recursive flag.`);else yield J1(B,J,0,C);else{if(vA.relative(B,J)==="")throw Error(`'${J}' and '${B}' are the same file`);yield U1(B,J,C)}})}function Y1(A,Q){return iB(this,arguments,void 0,function*(B,I,E={}){if(yield pB(I)){let C=!0;if(yield g1(I))I=vA.join(I,vA.basename(B)),C=yield pB(I);if(C)if(E.force==null||E.force)yield yC(I);else throw Error("Destination already exists")}yield KE(vA.dirname(I)),yield B1(B,I)})}function yC(A){return iB(this,void 0,void 0,function*(){if(oQ){if(/[*"<>|]/.test(A))throw Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}try{yield I1(A,{force:!0,maxRetries:3,recursive:!0,retryDelay:300})}catch(Q){throw Error(`File was unable to be removed ${Q}`)}})}function KE(A){return iB(this,void 0,void 0,function*(){OP(A,"a path argument must be provided"),yield Q1(A,{recursive:!0})})}function xA(A,Q){return iB(this,void 0,void 0,function*(){if(!A)throw Error("parameter 'tool' is required");if(Q){let I=yield xA(A,!1);if(!I)if(oQ)throw Error(`Unable to locate executable file: ${A}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);else throw Error(`Unable to locate executable file: ${A}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);return I}let B=yield PP(A);if(B&&B.length>0)return B[0];return""})}function PP(A){return iB(this,void 0,void 0,function*(){if(!A)throw Error("parameter 'tool' is required");let Q=[];if(oQ&&process.env.PATHEXT){for(let E of process.env.PATHEXT.split(vA.delimiter))if(E)Q.push(E)}if(dF(A)){let E=yield wJ(A,Q);if(E)return[E];return[]}if(A.includes(vA.sep))return[];let B=[];if(process.env.PATH){for(let E of process.env.PATH.split(vA.delimiter))if(E)B.push(E)}let I=[];for(let E of B){let C=yield wJ(vA.join(E,A),Q);if(C)I.push(C)}return I})}function qP(A){let Q=A.force==null?!0:A.force,B=Boolean(A.recursive),I=A.copySourceDirectory==null?!0:Boolean(A.copySourceDirectory);return{force:Q,recursive:B,copySourceDirectory:I}}function J1(A,Q,B,I){return iB(this,void 0,void 0,function*(){if(B>=255)return;B++,yield KE(Q);let E=yield NJ(A);for(let C of E){let g=`${A}/${C}`,F=`${Q}/${C}`;if((yield qC(g)).isDirectory())yield J1(g,F,B,I);else yield U1(g,F,I)}yield GJ(Q,(yield dB(A)).mode)})}function U1(A,Q,B){return iB(this,void 0,void 0,function*(){if((yield qC(A)).isSymbolicLink()){try{yield qC(Q),yield MJ(Q)}catch(E){if(E.code==="EPERM")yield GJ(Q,"0666"),yield MJ(Q)}let I=yield C1(A);yield E1(I,Q,oQ?"junction":null)}else if(!(yield pB(Q))||B)yield A1(A,Q)})}import{setTimeout as yP}from"timers";var G1=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})},lF=process.platform==="win32";class VJ extends LJ.EventEmitter{constructor(A,Q,B){super();if(!A)throw Error("Parameter 'toolPath' cannot be null or empty.");this.toolPath=A,this.args=Q||[],this.options=B||{}}_debug(A){if(this.options.listeners&&this.options.listeners.debug)this.options.listeners.debug(A)}_getCommandString(A,Q){let B=this._getSpawnFileName(),I=this._getSpawnArgs(A),E=Q?"":"[command]";if(lF)if(this._isCmdFile()){E+=B;for(let C of I)E+=` ${C}`}else if(A.windowsVerbatimArguments){E+=`"${B}"`;for(let C of I)E+=` ${C}`}else{E+=this._windowsQuoteCmdArg(B);for(let C of I)E+=` ${this._windowsQuoteCmdArg(C)}`}else{E+=B;for(let C of I)E+=` ${C}`}return E}_processLineBuffer(A,Q,B){try{let I=Q+A.toString(),E=I.indexOf(hC.EOL);while(E>-1){let C=I.substring(0,E);B(C),I=I.substring(E+hC.EOL.length),E=I.indexOf(hC.EOL)}return I}catch(I){return this._debug(`error processing line. Failed with error ${I}`),""}}_getSpawnFileName(){if(lF){if(this._isCmdFile())return process.env.COMSPEC||"cmd.exe"}return this.toolPath}_getSpawnArgs(A){if(lF){if(this._isCmdFile()){let Q=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(let B of this.args)Q+=" ",Q+=A.windowsVerbatimArguments?B:this._windowsQuoteCmdArg(B);return Q+='"',[Q]}}return this.args}_endsWith(A,Q){return A.endsWith(Q)}_isCmdFile(){let A=this.toolPath.toUpperCase();return this._endsWith(A,".CMD")||this._endsWith(A,".BAT")}_windowsQuoteCmdArg(A){if(!this._isCmdFile())return this._uvQuoteCmdArg(A);if(!A)return'""';let Q=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'],B=!1;for(let C of A)if(Q.some((g)=>g===C)){B=!0;break}if(!B)return A;let I='"',E=!0;for(let C=A.length;C>0;C--)if(I+=A[C-1],E&&A[C-1]==="\\")I+="\\";else if(A[C-1]==='"')E=!0,I+='"';else E=!1;return I+='"',I.split("").reverse().join("")}_uvQuoteCmdArg(A){if(!A)return'""';if(!A.includes(" ")&&!A.includes("\t")&&!A.includes('"'))return A;if(!A.includes('"')&&!A.includes("\\"))return`"${A}"`;let Q='"',B=!0;for(let I=A.length;I>0;I--)if(Q+=A[I-1],B&&A[I-1]==="\\")Q+="\\";else if(A[I-1]==='"')B=!0,Q+="\\";else B=!1;return Q+='"',Q.split("").reverse().join("")}_cloneExecOptions(A){A=A||{};let Q={cwd:A.cwd||process.cwd(),env:A.env||process.env,silent:A.silent||!1,windowsVerbatimArguments:A.windowsVerbatimArguments||!1,failOnStdErr:A.failOnStdErr||!1,ignoreReturnCode:A.ignoreReturnCode||!1,delay:A.delay||1e4};return Q.outStream=A.outStream||process.stdout,Q.errStream=A.errStream||process.stderr,Q}_getSpawnOptions(A,Q){A=A||{};let B={};if(B.cwd=A.cwd,B.env=A.env,B.windowsVerbatimArguments=A.windowsVerbatimArguments||this._isCmdFile(),A.windowsVerbatimArguments)B.argv0=`"${Q}"`;return B}exec(){return G1(this,void 0,void 0,function*(){if(!dF(this.toolPath)&&(this.toolPath.includes("/")||lF&&this.toolPath.includes("\\")))this.toolPath=M1.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath);return this.toolPath=yield xA(this.toolPath,!0),new Promise((A,Q)=>G1(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`),this._debug("arguments:");for(let D of this.args)this._debug(` ${D}`);let B=this._cloneExecOptions(this.options);if(!B.silent&&B.outStream)B.outStream.write(this._getCommandString(B)+hC.EOL);let I=new ZJ(B,this.toolPath);if(I.on("debug",(D)=>{this._debug(D)}),this.options.cwd&&!(yield pB(this.options.cwd)))return Q(Error(`The cwd: ${this.options.cwd} does not exist!`));let E=this._getSpawnFileName(),C=N1.spawn(E,this._getSpawnArgs(B),this._getSpawnOptions(this.options,E)),g="";if(C.stdout)C.stdout.on("data",(D)=>{if(this.options.listeners&&this.options.listeners.stdout)this.options.listeners.stdout(D);if(!B.silent&&B.outStream)B.outStream.write(D);g=this._processLineBuffer(D,g,(J)=>{if(this.options.listeners&&this.options.listeners.stdline)this.options.listeners.stdline(J)})});let F="";if(C.stderr)C.stderr.on("data",(D)=>{if(I.processStderr=!0,this.options.listeners&&this.options.listeners.stderr)this.options.listeners.stderr(D);if(!B.silent&&B.errStream&&B.outStream)(B.failOnStdErr?B.errStream:B.outStream).write(D);F=this._processLineBuffer(D,F,(J)=>{if(this.options.listeners&&this.options.listeners.errline)this.options.listeners.errline(J)})});if(C.on("error",(D)=>{I.processError=D.message,I.processExited=!0,I.processClosed=!0,I.CheckComplete()}),C.on("exit",(D)=>{I.processExitCode=D,I.processExited=!0,this._debug(`Exit code ${D} received from tool '${this.toolPath}'`),I.CheckComplete()}),C.on("close",(D)=>{I.processExitCode=D,I.processExited=!0,I.processClosed=!0,this._debug(`STDIO streams have closed for tool '${this.toolPath}'`),I.CheckComplete()}),I.on("done",(D,J)=>{if(g.length>0)this.emit("stdline",g);if(F.length>0)this.emit("errline",F);if(C.removeAllListeners(),D)Q(D);else A(J)}),this.options.input){if(!C.stdin)throw Error("child process missing stdin");C.stdin.end(this.options.input)}}))})}}function w1(A){let Q=[],B=!1,I=!1,E="";function C(g){if(I&&g!=='"')E+="\\";E+=g,I=!1}for(let g=0;g0)Q.push(E),E="";continue}C(F)}if(E.length>0)Q.push(E.trim());return Q}class ZJ extends LJ.EventEmitter{constructor(A,Q){super();if(this.processClosed=!1,this.processError="",this.processExitCode=0,this.processExited=!1,this.processStderr=!1,this.delay=1e4,this.done=!1,this.timeout=null,!Q)throw Error("toolPath must not be empty");if(this.options=A,this.toolPath=Q,A.delay)this.delay=A.delay}CheckComplete(){if(this.done)return;if(this.processClosed)this._setResult();else if(this.processExited)this.timeout=yP(ZJ.HandleTimeout,this.delay,this)}_debug(A){this.emit("debug",A)}_setResult(){let A;if(this.processExited){if(this.processError)A=Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);else if(this.processExitCode!==0&&!this.options.ignoreReturnCode)A=Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);else if(this.processStderr&&this.options.failOnStdErr)A=Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}if(this.timeout)clearTimeout(this.timeout),this.timeout=null;this.done=!0,this.emit("done",A,this.processExitCode)}static HandleTimeout(A){if(A.done)return;if(!A.processClosed&&A.processExited){let Q=`The STDIO streams did not close within ${A.delay/1000} seconds of the exit event from process '${A.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;A._debug(Q)}A._setResult()}}var L1=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})};function bA(A,Q,B){return L1(this,void 0,void 0,function*(){let I=w1(A);if(I.length===0)throw Error("Parameter 'commandLine' cannot be null or empty.");let E=I[0];return Q=I.slice(1).concat(Q||[]),new VJ(E,Q,B).exec()})}function RJ(A,Q,B){return L1(this,void 0,void 0,function*(){var I,E;let C="",g="",F=new W1("utf8"),D=new W1("utf8"),J=(I=B===null||B===void 0?void 0:B.listeners)===null||I===void 0?void 0:I.stdout,Y=(E=B===null||B===void 0?void 0:B.listeners)===null||E===void 0?void 0:E.stderr,U=(S)=>{if(g+=D.write(S),Y)Y(S)},N=(S)=>{if(C+=F.write(S),J)J(S)},w=Object.assign(Object.assign({},B===null||B===void 0?void 0:B.listeners),{stdout:N,stderr:U}),L=yield bA(A,Q,Object.assign(Object.assign({},B),{listeners:w}));return C+=F.end(),g+=D.end(),{exitCode:L,stdout:C,stderr:g}})}var Mu=V1.platform(),wu=V1.arch();var XJ;(function(A){A[A.Success=0]="Success",A[A.Failure=1]="Failure"})(XJ||(XJ={}));function iF(A){if(process.env.GITHUB_PATH||"")h0("PATH",A);else HI("add-path",{},A);process.env.PATH=`${A}${Z1.delimiter}${process.env.PATH}`}function zJ(A,Q){let B=process.env[`INPUT_${A.replace(/ /g,"_").toUpperCase()}`]||"";if(Q&&Q.required&&!B)throw Error(`Input required and not supplied: ${A}`);if(Q&&Q.trimWhitespace===!1)return B;return B.trim()}function kC(A,Q){if(process.env.GITHUB_OUTPUT||"")return h0("OUTPUT",tU(A,Q));process.stdout.write(KJ.EOL),HI("set-output",{name:A},XB(Q))}function zE(A){process.exitCode=XJ.Failure,SE(A)}function SJ(){return process.env.RUNNER_DEBUG==="1"}function y(A){HI("debug",{},A)}function SE(A,Q={}){HI("error",y0(Q),A instanceof Error?A.toString():A)}function nF(A,Q={}){HI("warning",y0(Q),A instanceof Error?A.toString():A)}function JA(A){process.stdout.write(A+KJ.EOL)}async function R1(A,Q){y(`Executing: bin=${A}, args=${Q}`),await bA(`"${A}"`,Q)}async function X1(A){return JA(`Prewarming Elide at bin: ${A}`),R1(A,["info"])}async function K1(A){return y(`Printing runtime info at bin: ${A}`),R1(A,["info"])}async function wB(A){return y(`Obtaining version of Elide binary at: ${A}`),(await RJ(`"${A}"`,["--version"])).stdout.trim().replaceAll("%0A","")}import z1 from"node:os";import S1 from"node:path";var fP="C:\\Elide",vP=S1.resolve(z1.homedir(),"elide"),yu=S1.resolve(z1.homedir(),".elide"),bP=process.platform==="win32"?fP:vP,fC={version:"latest",no_cache:!1,export_path:!0,force:!1,prewarm:!0,os:aF(process.platform),arch:sF(process.arch),install_path:bP};function aF(A){switch(A.trim().toLowerCase()){case"macos":return"darwin";case"mac":return"darwin";case"darwin":return"darwin";case"windows":return"windows";case"win":return"windows";case"win32":return"windows";case"linux":return"linux"}throw Error(`Unrecognized OS: ${A}`)}function sF(A){switch(A.trim().toLowerCase()){case"x64":return"amd64";case"amd64":return"amd64";case"x86_64":return"amd64";case"aarch64":return"aarch64";case"arm64":return"aarch64"}throw Error(`Unrecognized architecture: ${A}`)}function oF(A){return{...fC,...A,os:aF(A?.os||fC.os),arch:sF(A?.arch||fC.arch)}}function TA(){if(typeof navigator==="object"&&"userAgent"in navigator)return navigator.userAgent;if(typeof process==="object"&&process.version!==void 0)return`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;return""}function rF(A,Q,B,I){if(typeof B!=="function")throw Error("method for before hook must be a function");if(!I)I={};if(Array.isArray(Q))return Q.reverse().reduce((E,C)=>{return rF.bind(null,A,C,E,I)},B)();return Promise.resolve().then(()=>{if(!A.registry[Q])return B(I);return A.registry[Q].reduce((E,C)=>{return C.hook.bind(null,E,I)},B)()})}function $1(A,Q,B,I){let E=I;if(!A.registry[B])A.registry[B]=[];if(Q==="before")I=(C,g)=>{return Promise.resolve().then(E.bind(null,g)).then(C.bind(null,g))};if(Q==="after")I=(C,g)=>{let F;return Promise.resolve().then(C.bind(null,g)).then((D)=>{return F=D,E(F,g)}).then(()=>{return F})};if(Q==="error")I=(C,g)=>{return Promise.resolve().then(C.bind(null,g)).catch((F)=>{return E(F,g)})};A.registry[B].push({hook:I,orig:E})}function H1(A,Q,B){if(!A.registry[Q])return;let I=A.registry[Q].map((E)=>{return E.orig}).indexOf(B);if(I===-1)return;A.registry[Q].splice(I,1)}var T1=Function.bind,_1=T1.bind(T1);function j1(A,Q,B){let I=_1(H1,null).apply(null,B?[Q,B]:[Q]);A.api={remove:I},A.remove=I,["before","error","after","wrap"].forEach((E)=>{let C=B?[Q,E,B]:[Q,E];A[E]=A.api[E]=_1($1,null).apply(null,C)})}function mP(){let A=Symbol("Singular"),Q={registry:{}},B=rF.bind(null,Q,A);return j1(B,Q,A),B}function uP(){let A={registry:{}},Q=rF.bind(null,A);return j1(Q,A),Q}var x1={Singular:mP,Collection:uP};var cP="0.0.0-development",dP=`octokit-endpoint.js/${cP} ${TA()}`,lP={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":dP},mediaType:{format:""}};function pP(A){if(!A)return{};return Object.keys(A).reduce((Q,B)=>{return Q[B.toLowerCase()]=A[B],Q},{})}function iP(A){if(typeof A!=="object"||A===null)return!1;if(Object.prototype.toString.call(A)!=="[object Object]")return!1;let Q=Object.getPrototypeOf(A);if(Q===null)return!0;let B=Object.prototype.hasOwnProperty.call(Q,"constructor")&&Q.constructor;return typeof B==="function"&&B instanceof B&&Function.prototype.call(B)===Function.prototype.call(A)}function q1(A,Q){let B=Object.assign({},A);return Object.keys(Q).forEach((I)=>{if(iP(Q[I]))if(!(I in A))Object.assign(B,{[I]:Q[I]});else B[I]=q1(A[I],Q[I]);else Object.assign(B,{[I]:Q[I]})}),B}function O1(A){for(let Q in A)if(A[Q]===void 0)delete A[Q];return A}function HJ(A,Q,B){if(typeof Q==="string"){let[E,C]=Q.split(" ");B=Object.assign(C?{method:E,url:C}:{url:E},B)}else B=Object.assign({},Q);B.headers=pP(B.headers),O1(B),O1(B.headers);let I=q1(A||{},B);if(B.url==="/graphql"){if(A&&A.mediaType.previews?.length)I.mediaType.previews=A.mediaType.previews.filter((E)=>!I.mediaType.previews.includes(E)).concat(I.mediaType.previews);I.mediaType.previews=(I.mediaType.previews||[]).map((E)=>E.replace(/-preview/,""))}return I}function nP(A,Q){let B=/\?/.test(A)?"&":"?",I=Object.keys(Q);if(I.length===0)return A;return A+B+I.map((E)=>{if(E==="q")return"q="+Q.q.split("+").map(encodeURIComponent).join("+");return`${E}=${encodeURIComponent(Q[E])}`}).join("&")}var aP=/\{[^{}}]+\}/g;function sP(A){return A.replace(/(?:^\W+)|(?:(?B.concat(I),[])}function P1(A,Q){let B={__proto__:null};for(let I of Object.keys(A))if(Q.indexOf(I)===-1)B[I]=A[I];return B}function y1(A){return A.split(/(%[0-9A-Fa-f]{2})/g).map(function(Q){if(!/%[0-9A-Fa-f]/.test(Q))Q=encodeURI(Q).replace(/%5B/g,"[").replace(/%5D/g,"]");return Q}).join("")}function HE(A){return encodeURIComponent(A).replace(/[!'()*]/g,function(Q){return"%"+Q.charCodeAt(0).toString(16).toUpperCase()})}function vC(A,Q,B){if(Q=A==="+"||A==="#"?y1(Q):HE(Q),B)return HE(B)+"="+Q;else return Q}function $E(A){return A!==void 0&&A!==null}function $J(A){return A===";"||A==="&"||A==="?"}function rP(A,Q,B,I){var E=A[B],C=[];if($E(E)&&E!=="")if(typeof E==="string"||typeof E==="number"||typeof E==="bigint"||typeof E==="boolean"){if(E=E.toString(),I&&I!=="*")E=E.substring(0,parseInt(I,10));C.push(vC(Q,E,$J(Q)?B:""))}else if(I==="*")if(Array.isArray(E))E.filter($E).forEach(function(g){C.push(vC(Q,g,$J(Q)?B:""))});else Object.keys(E).forEach(function(g){if($E(E[g]))C.push(vC(Q,E[g],g))});else{let g=[];if(Array.isArray(E))E.filter($E).forEach(function(F){g.push(vC(Q,F))});else Object.keys(E).forEach(function(F){if($E(E[F]))g.push(HE(F)),g.push(vC(Q,E[F].toString()))});if($J(Q))C.push(HE(B)+"="+g.join(","));else if(g.length!==0)C.push(g.join(","))}else if(Q===";"){if($E(E))C.push(HE(B))}else if(E===""&&(Q==="&"||Q==="?"))C.push(HE(B)+"=");else if(E==="")C.push("");return C}function tP(A){return{expand:eP.bind(null,A)}}function eP(A,Q){var B=["+","#",".","/",";","?","&"];if(A=A.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(I,E,C){if(E){let F="",D=[];if(B.indexOf(E.charAt(0))!==-1)F=E.charAt(0),E=E.substr(1);if(E.split(/,/g).forEach(function(J){var Y=/([^:\*]*)(?::(\d+)|(\*))?/.exec(J);D.push(rP(Q,F,Y[1],Y[2]||Y[3]))}),F&&F!=="+"){var g=",";if(F==="?")g="&";else if(F!=="#")g=F;return(D.length!==0?F:"")+D.join(g)}else return D.join(",")}else return y1(C)}),A==="/")return A;else return A.replace(/\/$/,"")}function h1(A){let Q=A.method.toUpperCase(),B=(A.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),I=Object.assign({},A.headers),E,C=P1(A,["method","baseUrl","url","headers","request","mediaType"]),g=oP(B);if(B=tP(B).expand(C),!/^http/.test(B))B=A.baseUrl+B;let F=Object.keys(A).filter((Y)=>g.includes(Y)).concat("baseUrl"),D=P1(C,F);if(!/application\/octet-stream/i.test(I.accept)){if(A.mediaType.format)I.accept=I.accept.split(/,/).map((Y)=>Y.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${A.mediaType.format}`)).join(",");if(B.endsWith("/graphql")){if(A.mediaType.previews?.length){let Y=I.accept.match(/(?{let N=A.mediaType.format?`.${A.mediaType.format}`:"+json";return`application/vnd.github.${U}-preview${N}`}).join(",")}}}if(["GET","HEAD"].includes(Q))B=nP(B,D);else if("data"in D)E=D.data;else if(Object.keys(D).length)E=D;if(!I["content-type"]&&typeof E<"u")I["content-type"]="application/json; charset=utf-8";if(["PATCH","PUT"].includes(Q)&&typeof E>"u")E="";return Object.assign({method:Q,url:B,headers:I},typeof E<"u"?{body:E}:null,A.request?{request:A.request}:null)}function Aq(A,Q,B){return h1(HJ(A,Q,B))}function k1(A,Q){let B=HJ(A,Q),I=Aq.bind(null,B);return Object.assign(I,{DEFAULTS:B,defaults:k1.bind(null,B),merge:HJ.bind(null,B),parse:h1})}var f1=k1(null,lP);var TJ=function(){};TJ.prototype=Object.create(null);var v1=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,b1=/\\([\v\u0020-\u00ff])/gu,Qq=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,TE={type:"",parameters:new TJ};Object.freeze(TE.parameters);Object.freeze(TE);function Bq(A){if(typeof A!=="string")return TE;let Q=A.indexOf(";"),B=Q!==-1?A.slice(0,Q).trim():A.trim();if(Qq.test(B)===!1)return TE;let I={type:B.toLowerCase(),parameters:new TJ};if(Q===-1)return I;let E,C,g;v1.lastIndex=Q;while(C=v1.exec(A)){if(C.index!==Q)return TE;if(Q+=C[0].length,E=C[1].toLowerCase(),g=C[2],g[0]==='"')g=g.slice(1,g.length-1),b1.test(g)&&(g=g.replace(b1,"$1"));I.parameters[E]=g}if(Q!==A.length)return TE;return I}var _J=Bq;var Eq=/^-?\d+$/,c1=/^-?\d+n+$/,jJ=JSON.stringify,m1=JSON.parse,Cq=/^-?\d+n$/,gq=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Fq=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,d1=(A,Q,B)=>{if("rawJSON"in JSON)return jJ(A,(g,F)=>{if(typeof F==="bigint")return JSON.rawJSON(F.toString());if(typeof Q==="function")return Q(g,F);if(Array.isArray(Q)&&Q.includes(g))return F;return F},B);if(!A)return jJ(A,Q,B);return jJ(A,(g,F)=>{if(typeof F==="string"&&c1.test(F))return F.toString()+"n";if(typeof F==="bigint")return F.toString()+"n";if(typeof Q==="function")return Q(g,F);if(Array.isArray(Q)&&Q.includes(g))return F;return F},B).replace(gq,"$1$2$3").replace(Fq,"$1$2$3")},tF=new Map,Dq=()=>{let A=JSON.parse.toString();if(tF.has(A))return tF.get(A);try{let Q=JSON.parse("1",(B,I,E)=>!!E?.source&&E.source==="1");return tF.set(A,Q),Q}catch{return tF.set(A,!1),!1}},Yq=(A,Q,B,I)=>{if(typeof Q==="string"&&Cq.test(Q))return BigInt(Q.slice(0,-1));if(typeof Q==="string"&&c1.test(Q))return Q.slice(0,-1);if(typeof I!=="function")return Q;return I(A,Q,B)},Jq=(A,Q)=>{return JSON.parse(A,(B,I,E)=>{let C=typeof I==="number"&&(I>Number.MAX_SAFE_INTEGER||I{if(!A)return m1(A,Q);if(Dq())return Jq(A,Q);let B=A.replace(Uq,(I,E,C,g)=>{let F=I[0]==='"';if(F&&Gq.test(I))return I.substring(0,I.length-1)+'n"';let J=C||g,Y=E&&(E.lengthYq(I,E,C,Q))};class rQ extends Error{name;status;request;response;constructor(A,Q,B){super(A,{cause:B.cause});if(this.name="HttpError",this.status=Number.parseInt(Q),Number.isNaN(this.status))this.status=0;if("response"in B)this.response=B.response;let I=Object.assign({},B.request);if(B.request.headers.authorization)I.headers=Object.assign({},B.request.headers,{authorization:B.request.headers.authorization.replace(/(?"";async function n1(A){let Q=A.request?.fetch||globalThis.fetch;if(!Q)throw Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");let B=A.request?.log||console,I=A.request?.parseSuccessResponseBody!==!1,E=wq(A.body)||Array.isArray(A.body)?d1(A.body):A.body,C=Object.fromEntries(Object.entries(A.headers).map(([U,N])=>[U,String(N)])),g;try{g=await Q(A.url,{method:A.method,body:E,redirect:A.request?.redirect,headers:C,signal:A.request?.signal,...A.body&&{duplex:"half"}})}catch(U){let N="Unknown Error";if(U instanceof Error){if(U.name==="AbortError")throw U.status=500,U;if(N=U.message,U.name==="TypeError"&&"cause"in U){if(U.cause instanceof Error)N=U.cause.message;else if(typeof U.cause==="string")N=U.cause}}let w=new rQ(N,500,{request:A});throw w.cause=U,w}let{status:F,url:D}=g,J={};for(let[U,N]of g.headers)J[U]=N;let Y={url:D,status:F,headers:J,data:""};if("deprecation"in J){let U=J.link&&J.link.match(/<([^<>]+)>; rel="deprecation"/),N=U&&U.pop();B.warn(`[@octokit/request] "${A.method} ${A.url}" is deprecated. It is scheduled to be removed on ${J.sunset}${N?`. See ${N}`:""}`)}if(F===204||F===205)return Y;if(A.method==="HEAD"){if(F<400)return Y;throw new rQ(g.statusText,F,{response:Y,request:A})}if(F===304)throw Y.data=await xJ(g),new rQ("Not modified",F,{response:Y,request:A});if(F>=400)throw Y.data=await xJ(g),new rQ(Lq(Y.data),F,{response:Y,request:A});return Y.data=I?await xJ(g):g.body,Y}async function xJ(A){let Q=A.headers.get("content-type");if(!Q)return A.text().catch(i1);let B=_J(Q);if(Wq(B)){let I="";try{return I=await A.text(),p1(I)}catch(E){return I}}else if(B.type.startsWith("text/")||B.parameters.charset?.toLowerCase()==="utf-8")return A.text().catch(i1);else return A.arrayBuffer().catch(()=>new ArrayBuffer(0))}function Wq(A){return A.type==="application/json"||A.type==="application/scim+json"}function Lq(A){if(typeof A==="string")return A;if(A instanceof ArrayBuffer)return"Unknown error";if("message"in A){let Q="documentation_url"in A?` - ${A.documentation_url}`:"";return Array.isArray(A.errors)?`${A.message}: ${A.errors.map((B)=>JSON.stringify(B)).join(", ")}${Q}`:`${A.message}${Q}`}return`Unknown error: ${JSON.stringify(A)}`}function OJ(A,Q){let B=A.defaults(Q);return Object.assign(function(E,C){let g=B.merge(E,C);if(!g.request||!g.request.hook)return n1(B.parse(g));let F=(D,J)=>{return n1(B.parse(B.merge(D,J)))};return Object.assign(F,{endpoint:B,defaults:OJ.bind(null,B)}),g.request.hook(F,g)},{endpoint:B,defaults:OJ.bind(null,B)})}var o=OJ(f1,Mq);var Vq="0.0.0-development";function Zq(A){return`Request failed due to following response errors: +`.trim())}}OS.exports=qS});var JX=U((FHQ,yS)=>{var PS=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:ijA}=TA(),njA=iF();if(SS()===void 0)kS(new njA);function kS(A){if(!A||typeof A.dispatch!=="function")throw new ijA("Argument agent must implement Agent");Object.defineProperty(globalThis,PS,{value:A,writable:!0,enumerable:!1,configurable:!1})}function SS(){return globalThis[PS]}yS.exports={setGlobalDispatcher:kS,getGlobalDispatcher:SS}});var FX=U((GHQ,_S)=>{_S.exports=class{#A;constructor(Q){if(typeof Q!=="object"||Q===null)throw TypeError("handler must be an object");this.#A=Q}onConnect(...Q){return this.#A.onConnect?.(...Q)}onError(...Q){return this.#A.onError?.(...Q)}onUpgrade(...Q){return this.#A.onUpgrade?.(...Q)}onResponseStarted(...Q){return this.#A.onResponseStarted?.(...Q)}onHeaders(...Q){return this.#A.onHeaders?.(...Q)}onData(...Q){return this.#A.onData?.(...Q)}onComplete(...Q){return this.#A.onComplete?.(...Q)}onBodySent(...Q){return this.#A.onBodySent?.(...Q)}}});var gS=U((DHQ,fS)=>{var ajA=c8();fS.exports=(A)=>{let Q=A?.maxRedirections;return(B)=>{return function(C,E){let{maxRedirections:Y=Q,...J}=C;if(!Y)return B(C,E);let F=new ajA(B,Y,C,E);return B(J,F)}}}});var xS=U((ZHQ,hS)=>{var ojA=t8();hS.exports=(A)=>{return(Q)=>{return function(I,C){return Q(I,new ojA({...I,retryOptions:{...A,...I.retryOptions}},{handler:C,dispatch:Q}))}}}});var mS=U((WHQ,bS)=>{var sjA=$A(),{InvalidArgumentError:rjA,RequestAbortedError:tjA}=TA(),ejA=FX();class vS extends ejA{#A=1048576;#Q=null;#C=!1;#B=!1;#I=0;#E=null;#Y=null;constructor({maxSize:A},Q){super(Q);if(A!=null&&(!Number.isFinite(A)||A<1))throw new rjA("maxSize must be a number greater than 0");this.#A=A??this.#A,this.#Y=Q}onConnect(A){this.#Q=A,this.#Y.onConnect(this.#J.bind(this))}#J(A){this.#B=!0,this.#E=A}onHeaders(A,Q,B,I){let E=sjA.parseHeaders(Q)["content-length"];if(E!=null&&E>this.#A)throw new tjA(`Response size (${E}) larger than maxSize (${this.#A})`);if(this.#B)return!0;return this.#Y.onHeaders(A,Q,B,I)}onError(A){if(this.#C)return;A=this.#E??A,this.#Y.onError(A)}onData(A){if(this.#I=this.#I+A.length,this.#I>=this.#A)if(this.#C=!0,this.#B)this.#Y.onError(this.#E);else this.#Y.onComplete([]);return!0}onComplete(A){if(this.#C)return;if(this.#B){this.#Y.onError(this.reason);return}this.#Y.onComplete(A)}}function ARA({maxSize:A}={maxSize:1048576}){return(Q)=>{return function(I,C){let{dumpMaxSize:E=A}=I,Y=new vS({maxSize:E},C);return Q(I,Y)}}}bS.exports=ARA});var pS=U((XHQ,lS)=>{var{isIP:QRA}=M("node:net"),{lookup:BRA}=M("node:dns"),IRA=FX(),{InvalidArgumentError:QG,InformationalError:CRA}=TA(),dS=Math.pow(2,31)-1;class cS{#A=0;#Q=0;#C=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(A){this.#A=A.maxTTL,this.#Q=A.maxItems,this.dualStack=A.dualStack,this.affinity=A.affinity,this.lookup=A.lookup??this.#B,this.pick=A.pick??this.#I}get full(){return this.#C.size===this.#Q}runLookup(A,Q,B){let I=this.#C.get(A.hostname);if(I==null&&this.full){B(null,A.origin);return}let C={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...Q.dns,maxTTL:this.#A,maxItems:this.#Q};if(I==null)this.lookup(A,C,(E,Y)=>{if(E||Y==null||Y.length===0){B(E??new CRA("No DNS entries found"));return}this.setRecords(A,Y);let J=this.#C.get(A.hostname),F=this.pick(A,J,C.affinity),G;if(typeof F.port==="number")G=`:${F.port}`;else if(A.port!=="")G=`:${A.port}`;else G="";B(null,`${A.protocol}//${F.family===6?`[${F.address}]`:F.address}${G}`)});else{let E=this.pick(A,I,C.affinity);if(E==null){this.#C.delete(A.hostname),this.runLookup(A,Q,B);return}let Y;if(typeof E.port==="number")Y=`:${E.port}`;else if(A.port!=="")Y=`:${A.port}`;else Y="";B(null,`${A.protocol}//${E.family===6?`[${E.address}]`:E.address}${Y}`)}}#B(A,Q,B){BRA(A.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(I,C)=>{if(I)return B(I);let E=new Map;for(let Y of C)E.set(`${Y.address}:${Y.family}`,Y);B(null,E.values())})}#I(A,Q,B){let I=null,{records:C,offset:E}=Q,Y;if(this.dualStack){if(B==null)if(E==null||E===dS)Q.offset=0,B=4;else Q.offset++,B=(Q.offset&1)===1?6:4;if(C[B]!=null&&C[B].ips.length>0)Y=C[B];else Y=C[B===4?6:4]}else Y=C[B];if(Y==null||Y.ips.length===0)return I;if(Y.offset==null||Y.offset===dS)Y.offset=0;else Y.offset++;let J=Y.offset%Y.ips.length;if(I=Y.ips[J]??null,I==null)return I;if(Date.now()-I.timestamp>I.ttl)return Y.ips.splice(J,1),this.pick(A,Q,B);return I}setRecords(A,Q){let B=Date.now(),I={records:{4:null,6:null}};for(let C of Q){if(C.timestamp=B,typeof C.ttl==="number")C.ttl=Math.min(C.ttl,this.#A);else C.ttl=this.#A;let E=I.records[C.family]??{ips:[]};E.ips.push(C),I.records[C.family]=E}this.#C.set(A.hostname,I)}getHandler(A,Q){return new uS(this,A,Q)}}class uS extends IRA{#A=null;#Q=null;#C=null;#B=null;#I=null;constructor(A,{origin:Q,handler:B,dispatch:I},C){super(B);this.#I=Q,this.#B=B,this.#Q={...C},this.#A=A,this.#C=I}onError(A){switch(A.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#A.dualStack){this.#A.runLookup(this.#I,this.#Q,(Q,B)=>{if(Q)return this.#B.onError(Q);let I={...this.#Q,origin:B};this.#C(I,this)});return}this.#B.onError(A);return}case"ENOTFOUND":this.#A.deleteRecord(this.#I);default:this.#B.onError(A);break}}}lS.exports=(A)=>{if(A?.maxTTL!=null&&(typeof A?.maxTTL!=="number"||A?.maxTTL<0))throw new QG("Invalid maxTTL. Must be a positive number");if(A?.maxItems!=null&&(typeof A?.maxItems!=="number"||A?.maxItems<1))throw new QG("Invalid maxItems. Must be a positive number and greater than zero");if(A?.affinity!=null&&A?.affinity!==4&&A?.affinity!==6)throw new QG("Invalid affinity. Must be either 4 or 6");if(A?.dualStack!=null&&typeof A?.dualStack!=="boolean")throw new QG("Invalid dualStack. Must be a boolean");if(A?.lookup!=null&&typeof A?.lookup!=="function")throw new QG("Invalid lookup. Must be a function");if(A?.pick!=null&&typeof A?.pick!=="function")throw new QG("Invalid pick. Must be a function");let Q=A?.dualStack??!0,B;if(Q)B=A?.affinity??null;else B=A?.affinity??4;let I={maxTTL:A?.maxTTL??1e4,lookup:A?.lookup??null,pick:A?.pick??null,dualStack:Q,affinity:B,maxItems:A?.maxItems??1/0},C=new cS(I);return(E)=>{return function(J,F){let G=J.origin.constructor===URL?J.origin:new URL(J.origin);if(QRA(G.hostname)!==0)return E(J,F);return C.runLookup(G,J,(D,Z)=>{if(D)return F.onError(D);let W=null;W={...J,servername:G.hostname,origin:Z,headers:{host:G.hostname,...J.headers}},E(W,C.getHandler({origin:G,dispatch:E,handler:F},J))}),!0}}}});var IJ=U((UHQ,tS)=>{var{kConstruct:ERA}=eA(),{kEnumerableProperty:BG}=$A(),{iteratorMixin:YRA,isValidHeaderName:gZ,isValidHeaderValue:nS}=CI(),{webidl:qA}=nQ(),G7=M("node:assert"),GX=M("node:util"),OQ=Symbol("headers map"),JI=Symbol("headers map sorted");function iS(A){return A===10||A===13||A===9||A===32}function aS(A){let Q=0,B=A.length;while(B>Q&&iS(A.charCodeAt(B-1)))--B;while(B>Q&&iS(A.charCodeAt(Q)))++Q;return Q===0&&B===A.length?A:A.substring(Q,B)}function oS(A,Q){if(Array.isArray(Q))for(let B=0;B>","record"]})}function D7(A,Q,B){if(B=aS(B),!gZ(Q))throw qA.errors.invalidArgument({prefix:"Headers.append",value:Q,type:"header name"});else if(!nS(B))throw qA.errors.invalidArgument({prefix:"Headers.append",value:B,type:"header value"});if(rS(A)==="immutable")throw TypeError("immutable");return Z7(A).append(Q,B,!1)}function sS(A,Q){return A[0]>1),Q[F][0]<=G[0])J=F+1;else Y=F;if(C!==F){E=C;while(E>J)Q[E]=Q[--E];Q[J]=G}}if(!B.next().done)throw TypeError("Unreachable");return Q}else{let B=0;for(let{0:I,1:{value:C}}of this[OQ])Q[B++]=[I,C],G7(C!==null);return Q.sort(sS)}}}class JB{#A;#Q;constructor(A=void 0){if(qA.util.markAsUncloneable(this),A===ERA)return;if(this.#Q=new DX,this.#A="none",A!==void 0)A=qA.converters.HeadersInit(A,"Headers contructor","init"),oS(this,A)}append(A,Q){qA.brandCheck(this,JB),qA.argumentLengthCheck(arguments,2,"Headers.append");let B="Headers.append";return A=qA.converters.ByteString(A,B,"name"),Q=qA.converters.ByteString(Q,B,"value"),D7(this,A,Q)}delete(A){qA.brandCheck(this,JB),qA.argumentLengthCheck(arguments,1,"Headers.delete");let Q="Headers.delete";if(A=qA.converters.ByteString(A,Q,"name"),!gZ(A))throw qA.errors.invalidArgument({prefix:"Headers.delete",value:A,type:"header name"});if(this.#A==="immutable")throw TypeError("immutable");if(!this.#Q.contains(A,!1))return;this.#Q.delete(A,!1)}get(A){qA.brandCheck(this,JB),qA.argumentLengthCheck(arguments,1,"Headers.get");let Q="Headers.get";if(A=qA.converters.ByteString(A,Q,"name"),!gZ(A))throw qA.errors.invalidArgument({prefix:Q,value:A,type:"header name"});return this.#Q.get(A,!1)}has(A){qA.brandCheck(this,JB),qA.argumentLengthCheck(arguments,1,"Headers.has");let Q="Headers.has";if(A=qA.converters.ByteString(A,Q,"name"),!gZ(A))throw qA.errors.invalidArgument({prefix:Q,value:A,type:"header name"});return this.#Q.contains(A,!1)}set(A,Q){qA.brandCheck(this,JB),qA.argumentLengthCheck(arguments,2,"Headers.set");let B="Headers.set";if(A=qA.converters.ByteString(A,B,"name"),Q=qA.converters.ByteString(Q,B,"value"),Q=aS(Q),!gZ(A))throw qA.errors.invalidArgument({prefix:B,value:A,type:"header name"});else if(!nS(Q))throw qA.errors.invalidArgument({prefix:B,value:Q,type:"header value"});if(this.#A==="immutable")throw TypeError("immutable");this.#Q.set(A,Q,!1)}getSetCookie(){qA.brandCheck(this,JB);let A=this.#Q.cookies;if(A)return[...A];return[]}get[JI](){if(this.#Q[JI])return this.#Q[JI];let A=[],Q=this.#Q.toSortedArray(),B=this.#Q.cookies;if(B===null||B.length===1)return this.#Q[JI]=Q;for(let I=0;I>"](A,Q,B,I.bind(A));return qA.converters["record"](A,Q,B)}throw qA.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};tS.exports={fill:oS,compareHeaderName:sS,Headers:JB,HeadersList:DX,getHeadersGuard:rS,setHeadersGuard:JRA,setHeadersList:FRA,getHeadersList:Z7}});var xZ=U((wHQ,Dy)=>{var{Headers:Cy,HeadersList:eS,fill:GRA,getHeadersGuard:DRA,setHeadersGuard:Ey,setHeadersList:Yy}=IJ(),{extractBody:Ay,cloneBody:ZRA,mixinBody:WRA,hasFinalizationRegistry:Jy,streamRegistry:Fy,bodyUnusable:XRA}=xF(),W7=$A(),Qy=M("node:util"),{kEnumerableProperty:FI}=W7,{isValidReasonPhrase:URA,isCancelled:wRA,isAborted:KRA,isBlobLike:zRA,serializeJavascriptValueToJSONString:VRA,isErrorLike:$RA,isomorphicEncode:LRA,environmentSettingsObject:HRA}=CI(),{redirectStatusSet:MRA,nullBodyStatus:NRA}=YZ(),{kState:AQ,kHeaders:yE}=H0(),{webidl:KA}=nQ(),{FormData:jRA}=ZZ(),{URLSerializer:By}=dB(),{kConstruct:WX}=eA(),X7=M("node:assert"),{types:RRA}=M("node:util"),qRA=new TextEncoder("utf-8");class FB{static error(){return hZ(XX(),"immutable")}static json(A,Q={}){if(KA.argumentLengthCheck(arguments,1,"Response.json"),Q!==null)Q=KA.converters.ResponseInit(Q);let B=qRA.encode(VRA(A)),I=Ay(B),C=hZ(IG({}),"response");return Iy(C,Q,{body:I[0],type:"application/json"}),C}static redirect(A,Q=302){KA.argumentLengthCheck(arguments,1,"Response.redirect"),A=KA.converters.USVString(A),Q=KA.converters["unsigned short"](Q);let B;try{B=new URL(A,HRA.settingsObject.baseUrl)}catch(E){throw TypeError(`Failed to parse URL from ${A}`,{cause:E})}if(!MRA.has(Q))throw RangeError(`Invalid status code ${Q}`);let I=hZ(IG({}),"immutable");I[AQ].status=Q;let C=LRA(By(B));return I[AQ].headersList.append("location",C,!0),I}constructor(A=null,Q={}){if(KA.util.markAsUncloneable(this),A===WX)return;if(A!==null)A=KA.converters.BodyInit(A);Q=KA.converters.ResponseInit(Q),this[AQ]=IG({}),this[yE]=new Cy(WX),Ey(this[yE],"response"),Yy(this[yE],this[AQ].headersList);let B=null;if(A!=null){let[I,C]=Ay(A);B={body:I,type:C}}Iy(this,Q,B)}get type(){return KA.brandCheck(this,FB),this[AQ].type}get url(){KA.brandCheck(this,FB);let A=this[AQ].urlList,Q=A[A.length-1]??null;if(Q===null)return"";return By(Q,!0)}get redirected(){return KA.brandCheck(this,FB),this[AQ].urlList.length>1}get status(){return KA.brandCheck(this,FB),this[AQ].status}get ok(){return KA.brandCheck(this,FB),this[AQ].status>=200&&this[AQ].status<=299}get statusText(){return KA.brandCheck(this,FB),this[AQ].statusText}get headers(){return KA.brandCheck(this,FB),this[yE]}get body(){return KA.brandCheck(this,FB),this[AQ].body?this[AQ].body.stream:null}get bodyUsed(){return KA.brandCheck(this,FB),!!this[AQ].body&&W7.isDisturbed(this[AQ].body.stream)}clone(){if(KA.brandCheck(this,FB),XRA(this))throw KA.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let A=U7(this[AQ]);if(Jy&&this[AQ].body?.stream)Fy.register(this,new WeakRef(this[AQ].body.stream));return hZ(A,DRA(this[yE]))}[Qy.inspect.custom](A,Q){if(Q.depth===null)Q.depth=2;Q.colors??=!0;let B={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${Qy.formatWithOptions(Q,B)}`}}WRA(FB);Object.defineProperties(FB.prototype,{type:FI,url:FI,status:FI,ok:FI,redirected:FI,statusText:FI,headers:FI,clone:FI,body:FI,bodyUsed:FI,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(FB,{json:FI,redirect:FI,error:FI});function U7(A){if(A.internalResponse)return Gy(U7(A.internalResponse),A.type);let Q=IG({...A,body:null});if(A.body!=null)Q.body=ZRA(Q,A.body);return Q}function IG(A){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...A,headersList:A?.headersList?new eS(A?.headersList):new eS,urlList:A?.urlList?[...A.urlList]:[]}}function XX(A){let Q=$RA(A);return IG({type:"error",status:0,error:Q?A:Error(A?String(A):A),aborted:A&&A.name==="AbortError"})}function ORA(A){return A.type==="error"&&A.status===0}function ZX(A,Q){return Q={internalResponse:A,...Q},new Proxy(A,{get(B,I){return I in Q?Q[I]:B[I]},set(B,I,C){return X7(!(I in Q)),B[I]=C,!0}})}function Gy(A,Q){if(Q==="basic")return ZX(A,{type:"basic",headersList:A.headersList});else if(Q==="cors")return ZX(A,{type:"cors",headersList:A.headersList});else if(Q==="opaque")return ZX(A,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});else if(Q==="opaqueredirect")return ZX(A,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});else X7(!1)}function TRA(A,Q=null){return X7(wRA(A)),KRA(A)?XX(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:Q})):XX(Object.assign(new DOMException("Request was cancelled."),{cause:Q}))}function Iy(A,Q,B){if(Q.status!==null&&(Q.status<200||Q.status>599))throw RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in Q&&Q.statusText!=null){if(!URA(String(Q.statusText)))throw TypeError("Invalid statusText")}if("status"in Q&&Q.status!=null)A[AQ].status=Q.status;if("statusText"in Q&&Q.statusText!=null)A[AQ].statusText=Q.statusText;if("headers"in Q&&Q.headers!=null)GRA(A[yE],Q.headers);if(B){if(NRA.includes(A.status))throw KA.errors.exception({header:"Response constructor",message:`Invalid response status code ${A.status}`});if(A[AQ].body=B.body,B.type!=null&&!A[AQ].headersList.contains("content-type",!0))A[AQ].headersList.append("content-type",B.type,!0)}}function hZ(A,Q){let B=new FB(WX);if(B[AQ]=A,B[yE]=new Cy(WX),Yy(B[yE],A.headersList),Ey(B[yE],Q),Jy&&A.body?.stream)Fy.register(B,new WeakRef(A.body.stream));return B}KA.converters.ReadableStream=KA.interfaceConverter(ReadableStream);KA.converters.FormData=KA.interfaceConverter(jRA);KA.converters.URLSearchParams=KA.interfaceConverter(URLSearchParams);KA.converters.XMLHttpRequestBodyInit=function(A,Q,B){if(typeof A==="string")return KA.converters.USVString(A,Q,B);if(zRA(A))return KA.converters.Blob(A,Q,B,{strict:!1});if(ArrayBuffer.isView(A)||RRA.isArrayBuffer(A))return KA.converters.BufferSource(A,Q,B);if(W7.isFormDataLike(A))return KA.converters.FormData(A,Q,B,{strict:!1});if(A instanceof URLSearchParams)return KA.converters.URLSearchParams(A,Q,B);return KA.converters.DOMString(A,Q,B)};KA.converters.BodyInit=function(A,Q,B){if(A instanceof ReadableStream)return KA.converters.ReadableStream(A,Q,B);if(A?.[Symbol.asyncIterator])return A;return KA.converters.XMLHttpRequestBodyInit(A,Q,B)};KA.converters.ResponseInit=KA.dictionaryConverter([{key:"status",converter:KA.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:KA.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:KA.converters.HeadersInit}]);Dy.exports={isNetworkError:ORA,makeNetworkError:XX,makeResponse:IG,makeAppropriateNetworkError:TRA,filterResponse:Gy,Response:FB,cloneResponse:U7,fromInnerResponse:hZ}});var Ky=U((KHQ,wy)=>{var{kConnected:Zy,kSize:Wy}=eA();class Xy{constructor(A){this.value=A}deref(){return this.value[Zy]===0&&this.value[Wy]===0?void 0:this.value}}class Uy{constructor(A){this.finalizer=A}register(A,Q){if(A.on)A.on("disconnect",()=>{if(A[Zy]===0&&A[Wy]===0)this.finalizer(Q)})}unregister(A){}}wy.exports=function(){if(process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18"))return process._rawDebug("Using compatibility WeakRef and FinalizationRegistry"),{WeakRef:Xy,FinalizationRegistry:Uy};return{WeakRef,FinalizationRegistry}}});var CG=U((zHQ,Sy)=>{var{extractBody:PRA,mixinBody:kRA,cloneBody:SRA,bodyUnusable:zy}=xF(),{Headers:qy,fill:yRA,HeadersList:zX,setHeadersGuard:K7,getHeadersGuard:_RA,setHeadersList:Oy,getHeadersList:Vy}=IJ(),{FinalizationRegistry:fRA}=Ky()(),wX=$A(),$y=M("node:util"),{isValidHTTPToken:gRA,sameOrigin:Ly,environmentSettingsObject:UX}=CI(),{forbiddenMethodsSet:hRA,corsSafeListedMethodsSet:xRA,referrerPolicy:vRA,requestRedirect:bRA,requestMode:mRA,requestCredentials:dRA,requestCache:cRA,requestDuplex:uRA}=YZ(),{kEnumerableProperty:TQ,normalizedMethodRecordsBase:lRA,normalizedMethodRecords:pRA}=wX,{kHeaders:GI,kSignal:KX,kState:iA,kDispatcher:w7}=H0(),{webidl:BA}=nQ(),{URLSerializer:iRA}=dB(),{kConstruct:VX}=eA(),nRA=M("node:assert"),{getMaxListeners:Hy,setMaxListeners:My,getEventListeners:aRA,defaultMaxListeners:Ny}=M("node:events"),oRA=Symbol("abortController"),Ty=new fRA(({signal:A,abort:Q})=>{A.removeEventListener("abort",Q)}),$X=new WeakMap;function jy(A){return Q;function Q(){let B=A.deref();if(B!==void 0){Ty.unregister(Q),this.removeEventListener("abort",Q),B.abort(this.reason);let I=$X.get(B.signal);if(I!==void 0){if(I.size!==0){for(let C of I){let E=C.deref();if(E!==void 0)E.abort(this.reason)}I.clear()}$X.delete(B.signal)}}}}var Ry=!1;class uA{constructor(A,Q={}){if(BA.util.markAsUncloneable(this),A===VX)return;let B="Request constructor";BA.argumentLengthCheck(arguments,1,B),A=BA.converters.RequestInfo(A,B,"input"),Q=BA.converters.RequestInit(Q,B,"init");let I=null,C=null,E=UX.settingsObject.baseUrl,Y=null;if(typeof A==="string"){this[w7]=Q.dispatcher;let z;try{z=new URL(A,E)}catch($){throw TypeError("Failed to parse URL from "+A,{cause:$})}if(z.username||z.password)throw TypeError("Request cannot be constructed from a URL that includes credentials: "+A);I=LX({urlList:[z]}),C="cors"}else this[w7]=Q.dispatcher||A[w7],nRA(A instanceof uA),I=A[iA],Y=A[KX];let J=UX.settingsObject.origin,F="client";if(I.window?.constructor?.name==="EnvironmentSettingsObject"&&Ly(I.window,J))F=I.window;if(Q.window!=null)throw TypeError(`'window' option '${F}' must be null`);if("window"in Q)F="no-window";I=LX({method:I.method,headersList:I.headersList,unsafeRequest:I.unsafeRequest,client:UX.settingsObject,window:F,priority:I.priority,origin:I.origin,referrer:I.referrer,referrerPolicy:I.referrerPolicy,mode:I.mode,credentials:I.credentials,cache:I.cache,redirect:I.redirect,integrity:I.integrity,keepalive:I.keepalive,reloadNavigation:I.reloadNavigation,historyNavigation:I.historyNavigation,urlList:[...I.urlList]});let G=Object.keys(Q).length!==0;if(G){if(I.mode==="navigate")I.mode="same-origin";I.reloadNavigation=!1,I.historyNavigation=!1,I.origin="client",I.referrer="client",I.referrerPolicy="",I.url=I.urlList[I.urlList.length-1],I.urlList=[I.url]}if(Q.referrer!==void 0){let z=Q.referrer;if(z==="")I.referrer="no-referrer";else{let $;try{$=new URL(z,E)}catch(N){throw TypeError(`Referrer "${z}" is not a valid URL.`,{cause:N})}if($.protocol==="about:"&&$.hostname==="client"||J&&!Ly($,UX.settingsObject.baseUrl))I.referrer="client";else I.referrer=$}}if(Q.referrerPolicy!==void 0)I.referrerPolicy=Q.referrerPolicy;let D;if(Q.mode!==void 0)D=Q.mode;else D=C;if(D==="navigate")throw BA.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(D!=null)I.mode=D;if(Q.credentials!==void 0)I.credentials=Q.credentials;if(Q.cache!==void 0)I.cache=Q.cache;if(I.cache==="only-if-cached"&&I.mode!=="same-origin")throw TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(Q.redirect!==void 0)I.redirect=Q.redirect;if(Q.integrity!=null)I.integrity=String(Q.integrity);if(Q.keepalive!==void 0)I.keepalive=Boolean(Q.keepalive);if(Q.method!==void 0){let z=Q.method,$=pRA[z];if($!==void 0)I.method=$;else{if(!gRA(z))throw TypeError(`'${z}' is not a valid HTTP method.`);let N=z.toUpperCase();if(hRA.has(N))throw TypeError(`'${z}' HTTP method is unsupported.`);z=lRA[N]??z,I.method=z}if(!Ry&&I.method==="patch")process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),Ry=!0}if(Q.signal!==void 0)Y=Q.signal;this[iA]=I;let Z=new AbortController;if(this[KX]=Z.signal,Y!=null){if(!Y||typeof Y.aborted!=="boolean"||typeof Y.addEventListener!=="function")throw TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(Y.aborted)Z.abort(Y.reason);else{this[oRA]=Z;let z=new WeakRef(Z),$=jy(z);try{if(typeof Hy==="function"&&Hy(Y)===Ny)My(1500,Y);else if(aRA(Y,"abort").length>=Ny)My(1500,Y)}catch{}wX.addAbortListener(Y,$),Ty.register(Z,{signal:Y,abort:$},$)}}if(this[GI]=new qy(VX),Oy(this[GI],I.headersList),K7(this[GI],"request"),D==="no-cors"){if(!xRA.has(I.method))throw TypeError(`'${I.method} is unsupported in no-cors mode.`);K7(this[GI],"request-no-cors")}if(G){let z=Vy(this[GI]),$=Q.headers!==void 0?Q.headers:new zX(z);if(z.clear(),$ instanceof zX){for(let{name:N,value:j}of $.rawValues())z.append(N,j,!1);z.cookies=$.cookies}else yRA(this[GI],$)}let W=A instanceof uA?A[iA].body:null;if((Q.body!=null||W!=null)&&(I.method==="GET"||I.method==="HEAD"))throw TypeError("Request with GET/HEAD method cannot have body.");let X=null;if(Q.body!=null){let[z,$]=PRA(Q.body,I.keepalive);if(X=z,$&&!Vy(this[GI]).contains("content-type",!0))this[GI].append("content-type",$)}let w=X??W;if(w!=null&&w.source==null){if(X!=null&&Q.duplex==null)throw TypeError("RequestInit: duplex option is required when sending a body.");if(I.mode!=="same-origin"&&I.mode!=="cors")throw TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');I.useCORSPreflightFlag=!0}let K=w;if(X==null&&W!=null){if(zy(A))throw TypeError("Cannot construct a Request with a Request object that has already been used.");let z=new TransformStream;W.stream.pipeThrough(z),K={source:W.source,length:W.length,stream:z.readable}}this[iA].body=K}get method(){return BA.brandCheck(this,uA),this[iA].method}get url(){return BA.brandCheck(this,uA),iRA(this[iA].url)}get headers(){return BA.brandCheck(this,uA),this[GI]}get destination(){return BA.brandCheck(this,uA),this[iA].destination}get referrer(){if(BA.brandCheck(this,uA),this[iA].referrer==="no-referrer")return"";if(this[iA].referrer==="client")return"about:client";return this[iA].referrer.toString()}get referrerPolicy(){return BA.brandCheck(this,uA),this[iA].referrerPolicy}get mode(){return BA.brandCheck(this,uA),this[iA].mode}get credentials(){return this[iA].credentials}get cache(){return BA.brandCheck(this,uA),this[iA].cache}get redirect(){return BA.brandCheck(this,uA),this[iA].redirect}get integrity(){return BA.brandCheck(this,uA),this[iA].integrity}get keepalive(){return BA.brandCheck(this,uA),this[iA].keepalive}get isReloadNavigation(){return BA.brandCheck(this,uA),this[iA].reloadNavigation}get isHistoryNavigation(){return BA.brandCheck(this,uA),this[iA].historyNavigation}get signal(){return BA.brandCheck(this,uA),this[KX]}get body(){return BA.brandCheck(this,uA),this[iA].body?this[iA].body.stream:null}get bodyUsed(){return BA.brandCheck(this,uA),!!this[iA].body&&wX.isDisturbed(this[iA].body.stream)}get duplex(){return BA.brandCheck(this,uA),"half"}clone(){if(BA.brandCheck(this,uA),zy(this))throw TypeError("unusable");let A=Py(this[iA]),Q=new AbortController;if(this.signal.aborted)Q.abort(this.signal.reason);else{let B=$X.get(this.signal);if(B===void 0)B=new Set,$X.set(this.signal,B);let I=new WeakRef(Q);B.add(I),wX.addAbortListener(Q.signal,jy(I))}return ky(A,Q.signal,_RA(this[GI]))}[$y.inspect.custom](A,Q){if(Q.depth===null)Q.depth=2;Q.colors??=!0;let B={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${$y.formatWithOptions(Q,B)}`}}kRA(uA);function LX(A){return{method:A.method??"GET",localURLsOnly:A.localURLsOnly??!1,unsafeRequest:A.unsafeRequest??!1,body:A.body??null,client:A.client??null,reservedClient:A.reservedClient??null,replacesClientId:A.replacesClientId??"",window:A.window??"client",keepalive:A.keepalive??!1,serviceWorkers:A.serviceWorkers??"all",initiator:A.initiator??"",destination:A.destination??"",priority:A.priority??null,origin:A.origin??"client",policyContainer:A.policyContainer??"client",referrer:A.referrer??"client",referrerPolicy:A.referrerPolicy??"",mode:A.mode??"no-cors",useCORSPreflightFlag:A.useCORSPreflightFlag??!1,credentials:A.credentials??"same-origin",useCredentials:A.useCredentials??!1,cache:A.cache??"default",redirect:A.redirect??"follow",integrity:A.integrity??"",cryptoGraphicsNonceMetadata:A.cryptoGraphicsNonceMetadata??"",parserMetadata:A.parserMetadata??"",reloadNavigation:A.reloadNavigation??!1,historyNavigation:A.historyNavigation??!1,userActivation:A.userActivation??!1,taintedOrigin:A.taintedOrigin??!1,redirectCount:A.redirectCount??0,responseTainting:A.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:A.preventNoCacheCacheControlHeaderModification??!1,done:A.done??!1,timingAllowFailed:A.timingAllowFailed??!1,urlList:A.urlList,url:A.urlList[0],headersList:A.headersList?new zX(A.headersList):new zX}}function Py(A){let Q=LX({...A,body:null});if(A.body!=null)Q.body=SRA(Q,A.body);return Q}function ky(A,Q,B){let I=new uA(VX);return I[iA]=A,I[KX]=Q,I[GI]=new qy(VX),Oy(I[GI],A.headersList),K7(I[GI],B),I}Object.defineProperties(uA.prototype,{method:TQ,url:TQ,headers:TQ,redirect:TQ,clone:TQ,signal:TQ,duplex:TQ,destination:TQ,body:TQ,bodyUsed:TQ,isHistoryNavigation:TQ,isReloadNavigation:TQ,keepalive:TQ,integrity:TQ,cache:TQ,credentials:TQ,attribute:TQ,referrerPolicy:TQ,referrer:TQ,mode:TQ,[Symbol.toStringTag]:{value:"Request",configurable:!0}});BA.converters.Request=BA.interfaceConverter(uA);BA.converters.RequestInfo=function(A,Q,B){if(typeof A==="string")return BA.converters.USVString(A,Q,B);if(A instanceof uA)return BA.converters.Request(A,Q,B);return BA.converters.USVString(A,Q,B)};BA.converters.AbortSignal=BA.interfaceConverter(AbortSignal);BA.converters.RequestInit=BA.dictionaryConverter([{key:"method",converter:BA.converters.ByteString},{key:"headers",converter:BA.converters.HeadersInit},{key:"body",converter:BA.nullableConverter(BA.converters.BodyInit)},{key:"referrer",converter:BA.converters.USVString},{key:"referrerPolicy",converter:BA.converters.DOMString,allowedValues:vRA},{key:"mode",converter:BA.converters.DOMString,allowedValues:mRA},{key:"credentials",converter:BA.converters.DOMString,allowedValues:dRA},{key:"cache",converter:BA.converters.DOMString,allowedValues:cRA},{key:"redirect",converter:BA.converters.DOMString,allowedValues:bRA},{key:"integrity",converter:BA.converters.DOMString},{key:"keepalive",converter:BA.converters.boolean},{key:"signal",converter:BA.nullableConverter((A)=>BA.converters.AbortSignal(A,"RequestInit","signal",{strict:!1}))},{key:"window",converter:BA.converters.any},{key:"duplex",converter:BA.converters.DOMString,allowedValues:uRA},{key:"dispatcher",converter:BA.converters.any}]);Sy.exports={Request:uA,makeRequest:LX,fromInnerRequest:ky,cloneRequest:Py}});var bZ=U((VHQ,iy)=>{var{makeNetworkError:_A,makeAppropriateNetworkError:HX,filterResponse:z7,makeResponse:MX,fromInnerResponse:sRA}=xZ(),{HeadersList:yy}=IJ(),{Request:rRA,cloneRequest:tRA}=CG(),_0=M("node:zlib"),{bytesMatch:eRA,makePolicyContainer:AqA,clonePolicyContainer:QqA,requestBadPort:BqA,TAOCheck:IqA,appendRequestOriginHeader:CqA,responseLocationURL:EqA,requestCurrentURL:eC,setRequestReferrerPolicyOnRedirect:YqA,tryUpgradeRequestToAPotentiallyTrustworthyURL:JqA,createOpaqueTimingInfo:M7,appendFetchMetadata:FqA,corsCheck:GqA,crossOriginResourcePolicyCheck:DqA,determineRequestsReferrer:ZqA,coarsenedSharedCurrentTime:vZ,createDeferredPromise:WqA,isBlobLike:XqA,sameOrigin:H7,isCancelled:CJ,isAborted:_y,isErrorLike:UqA,fullyReadBody:wqA,readableStreamClose:KqA,isomorphicEncode:NX,urlIsLocal:zqA,urlIsHttpHttpsScheme:N7,urlHasHttpsScheme:VqA,clampAndCoarsenConnectionTimingInfo:$qA,simpleRangeHeaderValue:LqA,buildContentRange:HqA,createInflate:MqA,extractMimeType:NqA}=CI(),{kState:xy,kDispatcher:jqA}=H0(),EJ=M("node:assert"),{safelyExtractBody:j7,extractBody:fy}=xF(),{redirectStatusSet:vy,nullBodyStatus:by,safeMethodsSet:RqA,requestBodyHeader:qqA,subresourceSet:OqA}=YZ(),TqA=M("node:events"),{Readable:PqA,pipeline:kqA,finished:SqA}=M("node:stream"),{addAbortListener:yqA,isErrored:_qA,isReadable:jX,bufferToLowerCasedHeaderName:gy}=$A(),{dataURLProcessor:fqA,serializeAMimeType:gqA,minimizeSupportedMimeType:hqA}=dB(),{getGlobalDispatcher:xqA}=JX(),{webidl:vqA}=nQ(),{STATUS_CODES:bqA}=M("node:http"),mqA=["GET","HEAD"],dqA=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",V7;class R7 extends TqA{constructor(A){super();this.dispatcher=A,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(A){if(this.state!=="ongoing")return;this.state="terminated",this.connection?.destroy(A),this.emit("terminated",A)}abort(A){if(this.state!=="ongoing")return;if(this.state="aborted",!A)A=new DOMException("The operation was aborted.","AbortError");this.serializedAbortReason=A,this.connection?.destroy(A),this.emit("terminated",A)}}function cqA(A){my(A,"fetch")}function uqA(A,Q=void 0){vqA.argumentLengthCheck(arguments,1,"globalThis.fetch");let B=WqA(),I;try{I=new rRA(A,Q)}catch(D){return B.reject(D),B.promise}let C=I[xy];if(I.signal.aborted)return $7(B,C,null,I.signal.reason),B.promise;if(C.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope")C.serviceWorkers="none";let Y=null,J=!1,F=null;return yqA(I.signal,()=>{J=!0,EJ(F!=null),F.abort(I.signal.reason);let D=Y?.deref();$7(B,C,D,I.signal.reason)}),F=cy({request:C,processResponseEndOfBody:cqA,processResponse:(D)=>{if(J)return;if(D.aborted){$7(B,C,Y,F.serializedAbortReason);return}if(D.type==="error"){B.reject(TypeError("fetch failed",{cause:D.error}));return}Y=new WeakRef(sRA(D,"immutable")),B.resolve(Y.deref()),B=null},dispatcher:I[jqA]}),B.promise}function my(A,Q="other"){if(A.type==="error"&&A.aborted)return;if(!A.urlList?.length)return;let B=A.urlList[0],I=A.timingInfo,C=A.cacheState;if(!N7(B))return;if(I===null)return;if(!A.timingAllowPassed)I=M7({startTime:I.startTime}),C="";I.endTime=vZ(),A.timingInfo=I,dy(I,B.href,Q,globalThis,C)}var dy=performance.markResourceTiming;function $7(A,Q,B,I){if(A)A.reject(I);if(Q.body!=null&&jX(Q.body?.stream))Q.body.stream.cancel(I).catch((E)=>{if(E.code==="ERR_INVALID_STATE")return;throw E});if(B==null)return;let C=B[xy];if(C.body!=null&&jX(C.body?.stream))C.body.stream.cancel(I).catch((E)=>{if(E.code==="ERR_INVALID_STATE")return;throw E})}function cy({request:A,processRequestBodyChunkLength:Q,processRequestEndOfBody:B,processResponse:I,processResponseEndOfBody:C,processResponseConsumeBody:E,useParallelQueue:Y=!1,dispatcher:J=xqA()}){EJ(J);let F=null,G=!1;if(A.client!=null)F=A.client.globalObject,G=A.client.crossOriginIsolatedCapability;let D=vZ(G),Z=M7({startTime:D}),W={controller:new R7(J),request:A,timingInfo:Z,processRequestBodyChunkLength:Q,processRequestEndOfBody:B,processResponse:I,processResponseConsumeBody:E,processResponseEndOfBody:C,taskDestination:F,crossOriginIsolatedCapability:G};if(EJ(!A.body||A.body.stream),A.window==="client")A.window=A.client?.globalObject?.constructor?.name==="Window"?A.client:"no-window";if(A.origin==="client")A.origin=A.client.origin;if(A.policyContainer==="client")if(A.client!=null)A.policyContainer=QqA(A.client.policyContainer);else A.policyContainer=AqA();if(!A.headersList.contains("accept",!0))A.headersList.append("accept","*/*",!0);if(!A.headersList.contains("accept-language",!0))A.headersList.append("accept-language","*",!0);if(A.priority===null);if(OqA.has(A.destination));return uy(W).catch((X)=>{W.controller.terminate(X)}),W.controller}async function uy(A,Q=!1){let B=A.request,I=null;if(B.localURLsOnly&&!zqA(eC(B)))I=_A("local URLs only");if(JqA(B),BqA(B)==="blocked")I=_A("bad port");if(B.referrerPolicy==="")B.referrerPolicy=B.policyContainer.referrerPolicy;if(B.referrer!=="no-referrer")B.referrer=ZqA(B);if(I===null)I=await(async()=>{let E=eC(B);if(H7(E,B.url)&&B.responseTainting==="basic"||E.protocol==="data:"||(B.mode==="navigate"||B.mode==="websocket"))return B.responseTainting="basic",await hy(A);if(B.mode==="same-origin")return _A('request mode cannot be "same-origin"');if(B.mode==="no-cors"){if(B.redirect!=="follow")return _A('redirect mode cannot be "follow" for "no-cors" request');return B.responseTainting="opaque",await hy(A)}if(!N7(eC(B)))return _A("URL scheme must be a HTTP(S) scheme");return B.responseTainting="cors",await ly(A)})();if(Q)return I;if(I.status!==0&&!I.internalResponse){if(B.responseTainting==="cors");if(B.responseTainting==="basic")I=z7(I,"basic");else if(B.responseTainting==="cors")I=z7(I,"cors");else if(B.responseTainting==="opaque")I=z7(I,"opaque");else EJ(!1)}let C=I.status===0?I:I.internalResponse;if(C.urlList.length===0)C.urlList.push(...B.urlList);if(!B.timingAllowFailed)I.timingAllowPassed=!0;if(I.type==="opaque"&&C.status===206&&C.rangeRequested&&!B.headers.contains("range",!0))I=C=_A();if(I.status!==0&&(B.method==="HEAD"||B.method==="CONNECT"||by.includes(C.status)))C.body=null,A.controller.dump=!0;if(B.integrity){let E=(J)=>L7(A,_A(J));if(B.responseTainting==="opaque"||I.body==null){E(I.error);return}let Y=(J)=>{if(!eRA(J,B.integrity)){E("integrity mismatch");return}I.body=j7(J)[0],L7(A,I)};await wqA(I.body,Y,E)}else L7(A,I)}function hy(A){if(CJ(A)&&A.request.redirectCount===0)return Promise.resolve(HX(A));let{request:Q}=A,{protocol:B}=eC(Q);switch(B){case"about:":return Promise.resolve(_A("about scheme is not supported"));case"blob:":{if(!V7)V7=M("node:buffer").resolveObjectURL;let I=eC(Q);if(I.search.length!==0)return Promise.resolve(_A("NetworkError when attempting to fetch resource."));let C=V7(I.toString());if(Q.method!=="GET"||!XqA(C))return Promise.resolve(_A("invalid method"));let E=MX(),Y=C.size,J=NX(`${Y}`),F=C.type;if(!Q.headersList.contains("range",!0)){let G=fy(C);E.statusText="OK",E.body=G[0],E.headersList.set("content-length",J,!0),E.headersList.set("content-type",F,!0)}else{E.rangeRequested=!0;let G=Q.headersList.get("range",!0),D=LqA(G,!0);if(D==="failure")return Promise.resolve(_A("failed to fetch the data URL"));let{rangeStartValue:Z,rangeEndValue:W}=D;if(Z===null)Z=Y-W,W=Z+W-1;else{if(Z>=Y)return Promise.resolve(_A("Range start is greater than the blob's size."));if(W===null||W>=Y)W=Y-1}let X=C.slice(Z,W,F),w=fy(X);E.body=w[0];let K=NX(`${X.size}`),z=HqA(Z,W,Y);E.status=206,E.statusText="Partial Content",E.headersList.set("content-length",K,!0),E.headersList.set("content-type",F,!0),E.headersList.set("content-range",z,!0)}return Promise.resolve(E)}case"data:":{let I=eC(Q),C=fqA(I);if(C==="failure")return Promise.resolve(_A("failed to fetch the data URL"));let E=gqA(C.mimeType);return Promise.resolve(MX({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:E}]],body:j7(C.body)[0]}))}case"file:":return Promise.resolve(_A("not implemented... yet..."));case"http:":case"https:":return ly(A).catch((I)=>_A(I));default:return Promise.resolve(_A("unknown scheme"))}}function lqA(A,Q){if(A.request.done=!0,A.processResponseDone!=null)queueMicrotask(()=>A.processResponseDone(Q))}function L7(A,Q){let B=A.timingInfo,I=()=>{let E=Date.now();if(A.request.destination==="document")A.controller.fullTimingInfo=B;A.controller.reportTimingSteps=()=>{if(A.request.url.protocol!=="https:")return;B.endTime=E;let{cacheState:J,bodyInfo:F}=Q;if(!Q.timingAllowPassed)B=M7(B),J="";let G=0;if(A.request.mode!=="navigator"||!Q.hasCrossOriginRedirects){G=Q.status;let D=NqA(Q.headersList);if(D!=="failure")F.contentType=hqA(D)}if(A.request.initiatorType!=null)dy(B,A.request.url.href,A.request.initiatorType,globalThis,J,F,G)};let Y=()=>{if(A.request.done=!0,A.processResponseEndOfBody!=null)queueMicrotask(()=>A.processResponseEndOfBody(Q));if(A.request.initiatorType!=null)A.controller.reportTimingSteps()};queueMicrotask(()=>Y())};if(A.processResponse!=null)queueMicrotask(()=>{A.processResponse(Q),A.processResponse=null});let C=Q.type==="error"?Q:Q.internalResponse??Q;if(C.body==null)I();else SqA(C.body.stream,()=>{I()})}async function ly(A){let Q=A.request,B=null,I=null,C=A.timingInfo;if(Q.serviceWorkers==="all");if(B===null){if(Q.redirect==="follow")Q.serviceWorkers="none";if(I=B=await py(A),Q.responseTainting==="cors"&&GqA(Q,B)==="failure")return _A("cors failure");if(IqA(Q,B)==="failure")Q.timingAllowFailed=!0}if((Q.responseTainting==="opaque"||B.type==="opaque")&&DqA(Q.origin,Q.client,Q.destination,I)==="blocked")return _A("blocked");if(vy.has(I.status)){if(Q.redirect!=="manual")A.controller.connection.destroy(void 0,!1);if(Q.redirect==="error")B=_A("unexpected redirect");else if(Q.redirect==="manual")B=I;else if(Q.redirect==="follow")B=await pqA(A,B);else EJ(!1)}return B.timingInfo=C,B}function pqA(A,Q){let B=A.request,I=Q.internalResponse?Q.internalResponse:Q,C;try{if(C=EqA(I,eC(B).hash),C==null)return Q}catch(Y){return Promise.resolve(_A(Y))}if(!N7(C))return Promise.resolve(_A("URL scheme must be a HTTP(S) scheme"));if(B.redirectCount===20)return Promise.resolve(_A("redirect count exceeded"));if(B.redirectCount+=1,B.mode==="cors"&&(C.username||C.password)&&!H7(B,C))return Promise.resolve(_A('cross origin not allowed for request mode "cors"'));if(B.responseTainting==="cors"&&(C.username||C.password))return Promise.resolve(_A('URL cannot contain credentials for request mode "cors"'));if(I.status!==303&&B.body!=null&&B.body.source==null)return Promise.resolve(_A());if([301,302].includes(I.status)&&B.method==="POST"||I.status===303&&!mqA.includes(B.method)){B.method="GET",B.body=null;for(let Y of qqA)B.headersList.delete(Y)}if(!H7(eC(B),C))B.headersList.delete("authorization",!0),B.headersList.delete("proxy-authorization",!0),B.headersList.delete("cookie",!0),B.headersList.delete("host",!0);if(B.body!=null)EJ(B.body.source!=null),B.body=j7(B.body.source)[0];let E=A.timingInfo;if(E.redirectEndTime=E.postRedirectStartTime=vZ(A.crossOriginIsolatedCapability),E.redirectStartTime===0)E.redirectStartTime=E.startTime;return B.urlList.push(C),YqA(B,I),uy(A,!0)}async function py(A,Q=!1,B=!1){let I=A.request,C=null,E=null,Y=null,J=null,F=!1;if(I.window==="no-window"&&I.redirect==="error")C=A,E=I;else E=tRA(I),C={...A},C.request=E;let G=I.credentials==="include"||I.credentials==="same-origin"&&I.responseTainting==="basic",D=E.body?E.body.length:null,Z=null;if(E.body==null&&["POST","PUT"].includes(E.method))Z="0";if(D!=null)Z=NX(`${D}`);if(Z!=null)E.headersList.append("content-length",Z,!0);if(D!=null&&E.keepalive);if(E.referrer instanceof URL)E.headersList.append("referer",NX(E.referrer.href),!0);if(CqA(E),FqA(E),!E.headersList.contains("user-agent",!0))E.headersList.append("user-agent",dqA);if(E.cache==="default"&&(E.headersList.contains("if-modified-since",!0)||E.headersList.contains("if-none-match",!0)||E.headersList.contains("if-unmodified-since",!0)||E.headersList.contains("if-match",!0)||E.headersList.contains("if-range",!0)))E.cache="no-store";if(E.cache==="no-cache"&&!E.preventNoCacheCacheControlHeaderModification&&!E.headersList.contains("cache-control",!0))E.headersList.append("cache-control","max-age=0",!0);if(E.cache==="no-store"||E.cache==="reload"){if(!E.headersList.contains("pragma",!0))E.headersList.append("pragma","no-cache",!0);if(!E.headersList.contains("cache-control",!0))E.headersList.append("cache-control","no-cache",!0)}if(E.headersList.contains("range",!0))E.headersList.append("accept-encoding","identity",!0);if(!E.headersList.contains("accept-encoding",!0))if(VqA(eC(E)))E.headersList.append("accept-encoding","br, gzip, deflate",!0);else E.headersList.append("accept-encoding","gzip, deflate",!0);if(E.headersList.delete("host",!0),J==null)E.cache="no-store";if(E.cache!=="no-store"&&E.cache!=="reload");if(Y==null){if(E.cache==="only-if-cached")return _A("only if cached");let W=await iqA(C,G,B);if(!RqA.has(E.method)&&W.status>=200&&W.status<=399);if(F&&W.status===304);if(Y==null)Y=W}if(Y.urlList=[...E.urlList],E.headersList.contains("range",!0))Y.rangeRequested=!0;if(Y.requestIncludesCredentials=G,Y.status===407){if(I.window==="no-window")return _A();if(CJ(A))return HX(A);return _A("proxy authentication required")}if(Y.status===421&&!B&&(I.body==null||I.body.source!=null)){if(CJ(A))return HX(A);A.controller.connection.destroy(),Y=await py(A,Q,!0)}return Y}async function iqA(A,Q=!1,B=!1){EJ(!A.controller.connection||A.controller.connection.destroyed),A.controller.connection={abort:null,destroyed:!1,destroy(w,K=!0){if(!this.destroyed){if(this.destroyed=!0,K)this.abort?.(w??new DOMException("The operation was aborted.","AbortError"))}}};let I=A.request,C=null,E=A.timingInfo;if(!0)I.cache="no-store";let J=B?"yes":"no";if(I.mode==="websocket");let F=null;if(I.body==null&&A.processRequestEndOfBody)queueMicrotask(()=>A.processRequestEndOfBody());else if(I.body!=null){let w=async function*($){if(CJ(A))return;yield $,A.processRequestBodyChunkLength?.($.byteLength)},K=()=>{if(CJ(A))return;if(A.processRequestEndOfBody)A.processRequestEndOfBody()},z=($)=>{if(CJ(A))return;if($.name==="AbortError")A.controller.abort();else A.controller.terminate($)};F=async function*(){try{for await(let $ of I.body.stream)yield*w($);K()}catch($){z($)}}()}try{let{body:w,status:K,statusText:z,headersList:$,socket:N}=await X({body:F});if(N)C=MX({status:K,statusText:z,headersList:$,socket:N});else{let j=w[Symbol.asyncIterator]();A.controller.next=()=>j.next(),C=MX({status:K,statusText:z,headersList:$})}}catch(w){if(w.name==="AbortError")return A.controller.connection.destroy(),HX(A,w);return _A(w)}let G=async()=>{await A.controller.resume()},D=(w)=>{if(!CJ(A))A.controller.abort(w)},Z=new ReadableStream({async start(w){A.controller.controller=w},async pull(w){await G(w)},async cancel(w){await D(w)},type:"bytes"});C.body={stream:Z,source:null,length:null},A.controller.onAborted=W,A.controller.on("terminated",W),A.controller.resume=async()=>{while(!0){let w,K;try{let{done:$,value:N}=await A.controller.next();if(_y(A))break;w=$?void 0:N}catch($){if(A.controller.ended&&!E.encodedBodySize)w=void 0;else w=$,K=!0}if(w===void 0){KqA(A.controller.controller),lqA(A,C);return}if(E.decodedBodySize+=w?.byteLength??0,K){A.controller.terminate(w);return}let z=new Uint8Array(w);if(z.byteLength)A.controller.controller.enqueue(z);if(_qA(Z)){A.controller.terminate();return}if(A.controller.controller.desiredSize<=0)return}};function W(w){if(_y(A)){if(C.aborted=!0,jX(Z))A.controller.controller.error(A.controller.serializedAbortReason)}else if(jX(Z))A.controller.controller.error(TypeError("terminated",{cause:UqA(w)?w:void 0}));A.controller.connection.destroy()}return C;function X({body:w}){let K=eC(I),z=A.controller.dispatcher;return new Promise(($,N)=>z.dispatch({path:K.pathname+K.search,origin:K.origin,method:I.method,body:z.isMockActive?I.body&&(I.body.source||I.body.stream):w,headers:I.headersList.entries,maxRedirections:0,upgrade:I.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(j){let{connection:O}=A.controller;if(E.finalConnectionTimingInfo=$qA(void 0,E.postRedirectStartTime,A.crossOriginIsolatedCapability),O.destroyed)j(new DOMException("The operation was aborted.","AbortError"));else A.controller.on("terminated",j),this.abort=O.abort=j;E.finalNetworkRequestStartTime=vZ(A.crossOriginIsolatedCapability)},onResponseStarted(){E.finalNetworkResponseStartTime=vZ(A.crossOriginIsolatedCapability)},onHeaders(j,O,k,g){if(j<200)return;let x="",dA=new yy;for(let ZQ=0;ZQ5)return N(Error(`too many content-encodings in response: ${tA.length}, maximum allowed is 5`)),!0;for(let ZC=tA.length-1;ZC>=0;--ZC){let HE=tA[ZC].trim();if(HE==="x-gzip"||HE==="gzip")cA.push(_0.createGunzip({flush:_0.constants.Z_SYNC_FLUSH,finishFlush:_0.constants.Z_SYNC_FLUSH}));else if(HE==="deflate")cA.push(MqA({flush:_0.constants.Z_SYNC_FLUSH,finishFlush:_0.constants.Z_SYNC_FLUSH}));else if(HE==="br")cA.push(_0.createBrotliDecompress({flush:_0.constants.BROTLI_OPERATION_FLUSH,finishFlush:_0.constants.BROTLI_OPERATION_FLUSH}));else{cA.length=0;break}}}let IB=this.onError.bind(this);return $({status:j,statusText:g,headersList:dA,body:cA.length?kqA(this.body,...cA,(ZQ)=>{if(ZQ)this.onError(ZQ)}).on("error",IB):this.body.on("error",IB)}),!0},onData(j){if(A.controller.dump)return;let O=j;return E.encodedBodySize+=O.byteLength,this.body.push(O)},onComplete(){if(this.abort)A.controller.off("terminated",this.abort);if(A.controller.onAborted)A.controller.off("terminated",A.controller.onAborted);A.controller.ended=!0,this.body.push(null)},onError(j){if(this.abort)A.controller.off("terminated",this.abort);this.body?.destroy(j),A.controller.terminate(j),N(j)},onUpgrade(j,O,k){if(j!==101)return;let g=new yy;for(let x=0;x{ny.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}});var oy=U((LHQ,ay)=>{var{webidl:DI}=nQ(),RX=Symbol("ProgressEvent state");class mZ extends Event{constructor(A,Q={}){A=DI.converters.DOMString(A,"ProgressEvent constructor","type"),Q=DI.converters.ProgressEventInit(Q??{});super(A,Q);this[RX]={lengthComputable:Q.lengthComputable,loaded:Q.loaded,total:Q.total}}get lengthComputable(){return DI.brandCheck(this,mZ),this[RX].lengthComputable}get loaded(){return DI.brandCheck(this,mZ),this[RX].loaded}get total(){return DI.brandCheck(this,mZ),this[RX].total}}DI.converters.ProgressEventInit=DI.dictionaryConverter([{key:"lengthComputable",converter:DI.converters.boolean,defaultValue:()=>!1},{key:"loaded",converter:DI.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:DI.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:DI.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:DI.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:DI.converters.boolean,defaultValue:()=>!1}]);ay.exports={ProgressEvent:mZ}});var ry=U((HHQ,sy)=>{function nqA(A){if(!A)return"failure";switch(A.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}sy.exports={getEncoding:nqA}});var E_=U((MHQ,C_)=>{var{kState:EG,kError:O7,kResult:ty,kAborted:dZ,kLastProgressEventFired:T7}=q7(),{ProgressEvent:aqA}=oy(),{getEncoding:ey}=ry(),{serializeAMimeType:oqA,parseMIMEType:A_}=dB(),{types:sqA}=M("node:util"),{StringDecoder:Q_}=M("string_decoder"),{btoa:B_}=M("node:buffer"),rqA={enumerable:!0,writable:!1,configurable:!1};function tqA(A,Q,B,I){if(A[EG]==="loading")throw new DOMException("Invalid state","InvalidStateError");A[EG]="loading",A[ty]=null,A[O7]=null;let E=Q.stream().getReader(),Y=[],J=E.read(),F=!0;(async()=>{while(!A[dZ])try{let{done:G,value:D}=await J;if(F&&!A[dZ])queueMicrotask(()=>{f0("loadstart",A)});if(F=!1,!G&&sqA.isUint8Array(D)){if(Y.push(D),(A[T7]===void 0||Date.now()-A[T7]>=50)&&!A[dZ])A[T7]=Date.now(),queueMicrotask(()=>{f0("progress",A)});J=E.read()}else if(G){queueMicrotask(()=>{A[EG]="done";try{let Z=eqA(Y,B,Q.type,I);if(A[dZ])return;A[ty]=Z,f0("load",A)}catch(Z){A[O7]=Z,f0("error",A)}if(A[EG]!=="loading")f0("loadend",A)});break}}catch(G){if(A[dZ])return;queueMicrotask(()=>{if(A[EG]="done",A[O7]=G,f0("error",A),A[EG]!=="loading")f0("loadend",A)});break}})()}function f0(A,Q){let B=new aqA(A,{bubbles:!1,cancelable:!1});Q.dispatchEvent(B)}function eqA(A,Q,B,I){switch(Q){case"DataURL":{let C="data:",E=A_(B||"application/octet-stream");if(E!=="failure")C+=oqA(E);C+=";base64,";let Y=new Q_("latin1");for(let J of A)C+=B_(Y.write(J));return C+=B_(Y.end()),C}case"Text":{let C="failure";if(I)C=ey(I);if(C==="failure"&&B){let E=A_(B);if(E!=="failure")C=ey(E.parameters.get("charset"))}if(C==="failure")C="UTF-8";return AOA(A,C)}case"ArrayBuffer":return I_(A).buffer;case"BinaryString":{let C="",E=new Q_("latin1");for(let Y of A)C+=E.write(Y);return C+=E.end(),C}}}function AOA(A,Q){let B=I_(A),I=QOA(B),C=0;if(I!==null)Q=I,C=I==="UTF-8"?3:2;let E=B.slice(C);return new TextDecoder(Q).decode(E)}function QOA(A){let[Q,B,I]=A;if(Q===239&&B===187&&I===191)return"UTF-8";else if(Q===254&&B===255)return"UTF-16BE";else if(Q===255&&B===254)return"UTF-16LE";return null}function I_(A){let Q=A.reduce((I,C)=>{return I+C.byteLength},0),B=0;return A.reduce((I,C)=>{return I.set(C,B),B+=C.byteLength,I},new Uint8Array(Q))}C_.exports={staticPropertyDescriptors:rqA,readOperation:tqA,fireAProgressEvent:f0}});var G_=U((NHQ,F_)=>{var{staticPropertyDescriptors:YG,readOperation:qX,fireAProgressEvent:Y_}=E_(),{kState:YJ,kError:J_,kResult:OX,kEvents:PA,kAborted:BOA}=q7(),{webidl:xA}=nQ(),{kEnumerableProperty:lB}=$A();class fA extends EventTarget{constructor(){super();this[YJ]="empty",this[OX]=null,this[J_]=null,this[PA]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(A){xA.brandCheck(this,fA),xA.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer"),A=xA.converters.Blob(A,{strict:!1}),qX(this,A,"ArrayBuffer")}readAsBinaryString(A){xA.brandCheck(this,fA),xA.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString"),A=xA.converters.Blob(A,{strict:!1}),qX(this,A,"BinaryString")}readAsText(A,Q=void 0){if(xA.brandCheck(this,fA),xA.argumentLengthCheck(arguments,1,"FileReader.readAsText"),A=xA.converters.Blob(A,{strict:!1}),Q!==void 0)Q=xA.converters.DOMString(Q,"FileReader.readAsText","encoding");qX(this,A,"Text",Q)}readAsDataURL(A){xA.brandCheck(this,fA),xA.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL"),A=xA.converters.Blob(A,{strict:!1}),qX(this,A,"DataURL")}abort(){if(this[YJ]==="empty"||this[YJ]==="done"){this[OX]=null;return}if(this[YJ]==="loading")this[YJ]="done",this[OX]=null;if(this[BOA]=!0,Y_("abort",this),this[YJ]!=="loading")Y_("loadend",this)}get readyState(){switch(xA.brandCheck(this,fA),this[YJ]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return xA.brandCheck(this,fA),this[OX]}get error(){return xA.brandCheck(this,fA),this[J_]}get onloadend(){return xA.brandCheck(this,fA),this[PA].loadend}set onloadend(A){if(xA.brandCheck(this,fA),this[PA].loadend)this.removeEventListener("loadend",this[PA].loadend);if(typeof A==="function")this[PA].loadend=A,this.addEventListener("loadend",A);else this[PA].loadend=null}get onerror(){return xA.brandCheck(this,fA),this[PA].error}set onerror(A){if(xA.brandCheck(this,fA),this[PA].error)this.removeEventListener("error",this[PA].error);if(typeof A==="function")this[PA].error=A,this.addEventListener("error",A);else this[PA].error=null}get onloadstart(){return xA.brandCheck(this,fA),this[PA].loadstart}set onloadstart(A){if(xA.brandCheck(this,fA),this[PA].loadstart)this.removeEventListener("loadstart",this[PA].loadstart);if(typeof A==="function")this[PA].loadstart=A,this.addEventListener("loadstart",A);else this[PA].loadstart=null}get onprogress(){return xA.brandCheck(this,fA),this[PA].progress}set onprogress(A){if(xA.brandCheck(this,fA),this[PA].progress)this.removeEventListener("progress",this[PA].progress);if(typeof A==="function")this[PA].progress=A,this.addEventListener("progress",A);else this[PA].progress=null}get onload(){return xA.brandCheck(this,fA),this[PA].load}set onload(A){if(xA.brandCheck(this,fA),this[PA].load)this.removeEventListener("load",this[PA].load);if(typeof A==="function")this[PA].load=A,this.addEventListener("load",A);else this[PA].load=null}get onabort(){return xA.brandCheck(this,fA),this[PA].abort}set onabort(A){if(xA.brandCheck(this,fA),this[PA].abort)this.removeEventListener("abort",this[PA].abort);if(typeof A==="function")this[PA].abort=A,this.addEventListener("abort",A);else this[PA].abort=null}}fA.EMPTY=fA.prototype.EMPTY=0;fA.LOADING=fA.prototype.LOADING=1;fA.DONE=fA.prototype.DONE=2;Object.defineProperties(fA.prototype,{EMPTY:YG,LOADING:YG,DONE:YG,readAsArrayBuffer:lB,readAsBinaryString:lB,readAsText:lB,readAsDataURL:lB,abort:lB,readyState:lB,result:lB,error:lB,onloadstart:lB,onprogress:lB,onload:lB,onabort:lB,onerror:lB,onloadend:lB,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(fA,{EMPTY:YG,LOADING:YG,DONE:YG});F_.exports={FileReader:fA}});var TX=U((jHQ,D_)=>{D_.exports={kConstruct:eA().kConstruct}});var X_=U((RHQ,W_)=>{var IOA=M("node:assert"),{URLSerializer:Z_}=dB(),{isValidHeaderName:COA}=CI();function EOA(A,Q,B=!1){let I=Z_(A,B),C=Z_(Q,B);return I===C}function YOA(A){IOA(A!==null);let Q=[];for(let B of A.split(","))if(B=B.trim(),COA(B))Q.push(B);return Q}W_.exports={urlEquals:EOA,getFieldValues:YOA}});var K_=U((qHQ,w_)=>{var{kConstruct:JOA}=TX(),{urlEquals:FOA,getFieldValues:P7}=X_(),{kEnumerableProperty:JJ,isDisturbed:GOA}=$A(),{webidl:s}=nQ(),{Response:DOA,cloneResponse:ZOA,fromInnerResponse:WOA}=xZ(),{Request:_E,fromInnerRequest:XOA}=CG(),{kState:$C}=H0(),{fetching:UOA}=bZ(),{urlIsHttpHttpsScheme:PX,createDeferredPromise:JG,readAllBytes:wOA}=CI(),k7=M("node:assert");class AE{#A;constructor(){if(arguments[0]!==JOA)s.illegalConstructor();s.util.markAsUncloneable(this),this.#A=arguments[1]}async match(A,Q={}){s.brandCheck(this,AE);let B="Cache.match";s.argumentLengthCheck(arguments,1,B),A=s.converters.RequestInfo(A,B,"request"),Q=s.converters.CacheQueryOptions(Q,B,"options");let I=this.#I(A,Q,1);if(I.length===0)return;return I[0]}async matchAll(A=void 0,Q={}){s.brandCheck(this,AE);let B="Cache.matchAll";if(A!==void 0)A=s.converters.RequestInfo(A,B,"request");return Q=s.converters.CacheQueryOptions(Q,B,"options"),this.#I(A,Q)}async add(A){s.brandCheck(this,AE);let Q="Cache.add";s.argumentLengthCheck(arguments,1,Q),A=s.converters.RequestInfo(A,Q,"request");let B=[A];return await this.addAll(B)}async addAll(A){s.brandCheck(this,AE);let Q="Cache.addAll";s.argumentLengthCheck(arguments,1,Q);let B=[],I=[];for(let Z of A){if(Z===void 0)throw s.errors.conversionFailed({prefix:Q,argument:"Argument 1",types:["undefined is not allowed"]});if(Z=s.converters.RequestInfo(Z),typeof Z==="string")continue;let W=Z[$C];if(!PX(W.url)||W.method!=="GET")throw s.errors.exception({header:Q,message:"Expected http/s scheme when method is not GET."})}let C=[];for(let Z of A){let W=new _E(Z)[$C];if(!PX(W.url))throw s.errors.exception({header:Q,message:"Expected http/s scheme."});W.initiator="fetch",W.destination="subresource",I.push(W);let X=JG();C.push(UOA({request:W,processResponse(w){if(w.type==="error"||w.status===206||w.status<200||w.status>299)X.reject(s.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(w.headersList.contains("vary")){let K=P7(w.headersList.get("vary"));for(let z of K)if(z==="*"){X.reject(s.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let $ of C)$.abort();return}}},processResponseEndOfBody(w){if(w.aborted){X.reject(new DOMException("aborted","AbortError"));return}X.resolve(w)}})),B.push(X.promise)}let Y=await Promise.all(B),J=[],F=0;for(let Z of Y){let W={type:"put",request:I[F],response:Z};J.push(W),F++}let G=JG(),D=null;try{this.#Q(J)}catch(Z){D=Z}return queueMicrotask(()=>{if(D===null)G.resolve(void 0);else G.reject(D)}),G.promise}async put(A,Q){s.brandCheck(this,AE);let B="Cache.put";s.argumentLengthCheck(arguments,2,B),A=s.converters.RequestInfo(A,B,"request"),Q=s.converters.Response(Q,B,"response");let I=null;if(A instanceof _E)I=A[$C];else I=new _E(A)[$C];if(!PX(I.url)||I.method!=="GET")throw s.errors.exception({header:B,message:"Expected an http/s scheme when method is not GET"});let C=Q[$C];if(C.status===206)throw s.errors.exception({header:B,message:"Got 206 status"});if(C.headersList.contains("vary")){let W=P7(C.headersList.get("vary"));for(let X of W)if(X==="*")throw s.errors.exception({header:B,message:"Got * vary field value"})}if(C.body&&(GOA(C.body.stream)||C.body.stream.locked))throw s.errors.exception({header:B,message:"Response body is locked or disturbed"});let E=ZOA(C),Y=JG();if(C.body!=null){let X=C.body.stream.getReader();wOA(X).then(Y.resolve,Y.reject)}else Y.resolve(void 0);let J=[],F={type:"put",request:I,response:E};J.push(F);let G=await Y.promise;if(E.body!=null)E.body.source=G;let D=JG(),Z=null;try{this.#Q(J)}catch(W){Z=W}return queueMicrotask(()=>{if(Z===null)D.resolve();else D.reject(Z)}),D.promise}async delete(A,Q={}){s.brandCheck(this,AE);let B="Cache.delete";s.argumentLengthCheck(arguments,1,B),A=s.converters.RequestInfo(A,B,"request"),Q=s.converters.CacheQueryOptions(Q,B,"options");let I=null;if(A instanceof _E){if(I=A[$C],I.method!=="GET"&&!Q.ignoreMethod)return!1}else k7(typeof A==="string"),I=new _E(A)[$C];let C=[],E={type:"delete",request:I,options:Q};C.push(E);let Y=JG(),J=null,F;try{F=this.#Q(C)}catch(G){J=G}return queueMicrotask(()=>{if(J===null)Y.resolve(!!F?.length);else Y.reject(J)}),Y.promise}async keys(A=void 0,Q={}){s.brandCheck(this,AE);let B="Cache.keys";if(A!==void 0)A=s.converters.RequestInfo(A,B,"request");Q=s.converters.CacheQueryOptions(Q,B,"options");let I=null;if(A!==void 0){if(A instanceof _E){if(I=A[$C],I.method!=="GET"&&!Q.ignoreMethod)return[]}else if(typeof A==="string")I=new _E(A)[$C]}let C=JG(),E=[];if(A===void 0)for(let Y of this.#A)E.push(Y[0]);else{let Y=this.#C(I,Q);for(let J of Y)E.push(J[0])}return queueMicrotask(()=>{let Y=[];for(let J of E){let F=XOA(J,new AbortController().signal,"immutable");Y.push(F)}C.resolve(Object.freeze(Y))}),C.promise}#Q(A){let Q=this.#A,B=[...Q],I=[],C=[];try{for(let E of A){if(E.type!=="delete"&&E.type!=="put")throw s.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(E.type==="delete"&&E.response!=null)throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#C(E.request,E.options,I).length)throw new DOMException("???","InvalidStateError");let Y;if(E.type==="delete"){if(Y=this.#C(E.request,E.options),Y.length===0)return[];for(let J of Y){let F=Q.indexOf(J);k7(F!==-1),Q.splice(F,1)}}else if(E.type==="put"){if(E.response==null)throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let J=E.request;if(!PX(J.url))throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(J.method!=="GET")throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(E.options!=null)throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});Y=this.#C(E.request);for(let F of Y){let G=Q.indexOf(F);k7(G!==-1),Q.splice(G,1)}Q.push([E.request,E.response]),I.push([E.request,E.response])}C.push([E.request,E.response])}return C}catch(E){throw this.#A.length=0,this.#A=B,E}}#C(A,Q,B){let I=[],C=B??this.#A;for(let E of C){let[Y,J]=E;if(this.#B(A,Y,J,Q))I.push(E)}return I}#B(A,Q,B=null,I){let C=new URL(A.url),E=new URL(Q.url);if(I?.ignoreSearch)E.search="",C.search="";if(!FOA(C,E,!0))return!1;if(B==null||I?.ignoreVary||!B.headersList.contains("vary"))return!0;let Y=P7(B.headersList.get("vary"));for(let J of Y){if(J==="*")return!1;let F=Q.headersList.get(J),G=A.headersList.get(J);if(F!==G)return!1}return!0}#I(A,Q,B=1/0){let I=null;if(A!==void 0){if(A instanceof _E){if(I=A[$C],I.method!=="GET"&&!Q.ignoreMethod)return[]}else if(typeof A==="string")I=new _E(A)[$C]}let C=[];if(A===void 0)for(let Y of this.#A)C.push(Y[1]);else{let Y=this.#C(I,Q);for(let J of Y)C.push(J[1])}let E=[];for(let Y of C){let J=WOA(Y,"immutable");if(E.push(J.clone()),E.length>=B)break}return Object.freeze(E)}}Object.defineProperties(AE.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:JJ,matchAll:JJ,add:JJ,addAll:JJ,put:JJ,delete:JJ,keys:JJ});var U_=[{key:"ignoreSearch",converter:s.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:s.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:s.converters.boolean,defaultValue:()=>!1}];s.converters.CacheQueryOptions=s.dictionaryConverter(U_);s.converters.MultiCacheQueryOptions=s.dictionaryConverter([...U_,{key:"cacheName",converter:s.converters.DOMString}]);s.converters.Response=s.interfaceConverter(DOA);s.converters["sequence"]=s.sequenceConverter(s.converters.RequestInfo);w_.exports={Cache:AE}});var V_=U((OHQ,z_)=>{var{kConstruct:cZ}=TX(),{Cache:kX}=K_(),{webidl:GB}=nQ(),{kEnumerableProperty:uZ}=$A();class g0{#A=new Map;constructor(){if(arguments[0]!==cZ)GB.illegalConstructor();GB.util.markAsUncloneable(this)}async match(A,Q={}){if(GB.brandCheck(this,g0),GB.argumentLengthCheck(arguments,1,"CacheStorage.match"),A=GB.converters.RequestInfo(A),Q=GB.converters.MultiCacheQueryOptions(Q),Q.cacheName!=null){if(this.#A.has(Q.cacheName)){let B=this.#A.get(Q.cacheName);return await new kX(cZ,B).match(A,Q)}}else for(let B of this.#A.values()){let C=await new kX(cZ,B).match(A,Q);if(C!==void 0)return C}}async has(A){GB.brandCheck(this,g0);let Q="CacheStorage.has";return GB.argumentLengthCheck(arguments,1,Q),A=GB.converters.DOMString(A,Q,"cacheName"),this.#A.has(A)}async open(A){GB.brandCheck(this,g0);let Q="CacheStorage.open";if(GB.argumentLengthCheck(arguments,1,Q),A=GB.converters.DOMString(A,Q,"cacheName"),this.#A.has(A)){let I=this.#A.get(A);return new kX(cZ,I)}let B=[];return this.#A.set(A,B),new kX(cZ,B)}async delete(A){GB.brandCheck(this,g0);let Q="CacheStorage.delete";return GB.argumentLengthCheck(arguments,1,Q),A=GB.converters.DOMString(A,Q,"cacheName"),this.#A.delete(A)}async keys(){return GB.brandCheck(this,g0),[...this.#A.keys()]}}Object.defineProperties(g0.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:uZ,has:uZ,open:uZ,delete:uZ,keys:uZ});z_.exports={CacheStorage:g0}});var L_=U((THQ,$_)=>{$_.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var S7=U((PHQ,R_)=>{function KOA(A){for(let Q=0;Q=0&&B<=8||B>=10&&B<=31||B===127)return!0}return!1}function H_(A){for(let Q=0;Q126||B===34||B===40||B===41||B===60||B===62||B===64||B===44||B===59||B===58||B===92||B===47||B===91||B===93||B===63||B===61||B===123||B===125)throw Error("Invalid cookie name")}}function M_(A){let Q=A.length,B=0;if(A[0]==='"'){if(Q===1||A[Q-1]!=='"')throw Error("Invalid cookie value");--Q,++B}while(B126||I===34||I===44||I===59||I===92)throw Error("Invalid cookie value")}}function N_(A){for(let Q=0;QQ.toString().padStart(2,"0"));function j_(A){if(typeof A==="number")A=new Date(A);return`${VOA[A.getUTCDay()]}, ${SX[A.getUTCDate()]} ${$OA[A.getUTCMonth()]} ${A.getUTCFullYear()} ${SX[A.getUTCHours()]}:${SX[A.getUTCMinutes()]}:${SX[A.getUTCSeconds()]} GMT`}function LOA(A){if(A<0)throw Error("Invalid cookie max-age")}function HOA(A){if(A.name.length===0)return null;H_(A.name),M_(A.value);let Q=[`${A.name}=${A.value}`];if(A.name.startsWith("__Secure-"))A.secure=!0;if(A.name.startsWith("__Host-"))A.secure=!0,A.domain=null,A.path="/";if(A.secure)Q.push("Secure");if(A.httpOnly)Q.push("HttpOnly");if(typeof A.maxAge==="number")LOA(A.maxAge),Q.push(`Max-Age=${A.maxAge}`);if(A.domain)zOA(A.domain),Q.push(`Domain=${A.domain}`);if(A.path)N_(A.path),Q.push(`Path=${A.path}`);if(A.expires&&A.expires.toString()!=="Invalid Date")Q.push(`Expires=${j_(A.expires)}`);if(A.sameSite)Q.push(`SameSite=${A.sameSite}`);for(let B of A.unparsed){if(!B.includes("="))throw Error("Invalid unparsed");let[I,...C]=B.split("=");Q.push(`${I.trim()}=${C.join("=")}`)}return Q.join("; ")}R_.exports={isCTLExcludingHtab:KOA,validateCookieName:H_,validateCookiePath:N_,validateCookieValue:M_,toIMFDate:j_,stringify:HOA}});var O_=U((kHQ,q_)=>{var{maxNameValuePairSize:MOA,maxAttributeValueSize:NOA}=L_(),{isCTLExcludingHtab:jOA}=S7(),{collectASequenceOfCodePointsFast:yX}=dB(),ROA=M("node:assert");function qOA(A){if(jOA(A))return null;let Q="",B="",I="",C="";if(A.includes(";")){let E={position:0};Q=yX(";",A,E),B=A.slice(E.position)}else Q=A;if(!Q.includes("="))C=Q;else{let E={position:0};I=yX("=",Q,E),C=Q.slice(E.position+1)}if(I=I.trim(),C=C.trim(),I.length+C.length>MOA)return null;return{name:I,value:C,...FG(B)}}function FG(A,Q={}){if(A.length===0)return Q;ROA(A[0]===";"),A=A.slice(1);let B="";if(A.includes(";"))B=yX(";",A,{position:0}),A=A.slice(B.length);else B=A,A="";let I="",C="";if(B.includes("=")){let Y={position:0};I=yX("=",B,Y),C=B.slice(Y.position+1)}else I=B;if(I=I.trim(),C=C.trim(),C.length>NOA)return FG(A,Q);let E=I.toLowerCase();if(E==="expires"){let Y=new Date(C);Q.expires=Y}else if(E==="max-age"){let Y=C.charCodeAt(0);if((Y<48||Y>57)&&C[0]!=="-")return FG(A,Q);if(!/^\d+$/.test(C))return FG(A,Q);let J=Number(C);Q.maxAge=J}else if(E==="domain"){let Y=C;if(Y[0]===".")Y=Y.slice(1);Y=Y.toLowerCase(),Q.domain=Y}else if(E==="path"){let Y="";if(C.length===0||C[0]!=="/")Y="/";else Y=C;Q.path=Y}else if(E==="secure")Q.secure=!0;else if(E==="httponly")Q.httpOnly=!0;else if(E==="samesite"){let Y="Default",J=C.toLowerCase();if(J.includes("none"))Y="None";if(J.includes("strict"))Y="Strict";if(J.includes("lax"))Y="Lax";Q.sameSite=Y}else Q.unparsed??=[],Q.unparsed.push(`${I}=${C}`);return FG(A,Q)}q_.exports={parseSetCookie:qOA,parseUnparsedAttributes:FG}});var k_=U((SHQ,P_)=>{var{parseSetCookie:OOA}=O_(),{stringify:TOA}=S7(),{webidl:jA}=nQ(),{Headers:_X}=IJ();function POA(A){jA.argumentLengthCheck(arguments,1,"getCookies"),jA.brandCheck(A,_X,{strict:!1});let Q=A.get("cookie"),B={};if(!Q)return B;for(let I of Q.split(";")){let[C,...E]=I.split("=");B[C.trim()]=E.join("=")}return B}function kOA(A,Q,B){jA.brandCheck(A,_X,{strict:!1});let I="deleteCookie";jA.argumentLengthCheck(arguments,2,I),Q=jA.converters.DOMString(Q,I,"name"),B=jA.converters.DeleteCookieAttributes(B),T_(A,{name:Q,value:"",expires:new Date(0),...B})}function SOA(A){jA.argumentLengthCheck(arguments,1,"getSetCookies"),jA.brandCheck(A,_X,{strict:!1});let Q=A.getSetCookie();if(!Q)return[];return Q.map((B)=>OOA(B))}function T_(A,Q){jA.argumentLengthCheck(arguments,2,"setCookie"),jA.brandCheck(A,_X,{strict:!1}),Q=jA.converters.Cookie(Q);let B=TOA(Q);if(B)A.append("Set-Cookie",B)}jA.converters.DeleteCookieAttributes=jA.dictionaryConverter([{converter:jA.nullableConverter(jA.converters.DOMString),key:"path",defaultValue:()=>null},{converter:jA.nullableConverter(jA.converters.DOMString),key:"domain",defaultValue:()=>null}]);jA.converters.Cookie=jA.dictionaryConverter([{converter:jA.converters.DOMString,key:"name"},{converter:jA.converters.DOMString,key:"value"},{converter:jA.nullableConverter((A)=>{if(typeof A==="number")return jA.converters["unsigned long long"](A);return new Date(A)}),key:"expires",defaultValue:()=>null},{converter:jA.nullableConverter(jA.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:jA.nullableConverter(jA.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:jA.nullableConverter(jA.converters.DOMString),key:"path",defaultValue:()=>null},{converter:jA.nullableConverter(jA.converters.boolean),key:"secure",defaultValue:()=>null},{converter:jA.nullableConverter(jA.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:jA.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:jA.sequenceConverter(jA.converters.DOMString),key:"unparsed",defaultValue:()=>[]}]);P_.exports={getCookies:POA,deleteCookie:kOA,getSetCookies:SOA,setCookie:T_}});var DG=U((yHQ,y_)=>{var{webidl:a}=nQ(),{kEnumerableProperty:pB}=$A(),{kConstruct:S_}=eA(),{MessagePort:yOA}=M("node:worker_threads");class ZI extends Event{#A;constructor(A,Q={}){if(A===S_){super(arguments[1],arguments[2]);a.util.markAsUncloneable(this);return}let B="MessageEvent constructor";a.argumentLengthCheck(arguments,1,B),A=a.converters.DOMString(A,B,"type"),Q=a.converters.MessageEventInit(Q,B,"eventInitDict");super(A,Q);this.#A=Q,a.util.markAsUncloneable(this)}get data(){return a.brandCheck(this,ZI),this.#A.data}get origin(){return a.brandCheck(this,ZI),this.#A.origin}get lastEventId(){return a.brandCheck(this,ZI),this.#A.lastEventId}get source(){return a.brandCheck(this,ZI),this.#A.source}get ports(){if(a.brandCheck(this,ZI),!Object.isFrozen(this.#A.ports))Object.freeze(this.#A.ports);return this.#A.ports}initMessageEvent(A,Q=!1,B=!1,I=null,C="",E="",Y=null,J=[]){return a.brandCheck(this,ZI),a.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new ZI(A,{bubbles:Q,cancelable:B,data:I,origin:C,lastEventId:E,source:Y,ports:J})}static createFastMessageEvent(A,Q){let B=new ZI(S_,A,Q);return B.#A=Q,B.#A.data??=null,B.#A.origin??="",B.#A.lastEventId??="",B.#A.source??=null,B.#A.ports??=[],B}}var{createFastMessageEvent:_OA}=ZI;delete ZI.createFastMessageEvent;class GG extends Event{#A;constructor(A,Q={}){a.argumentLengthCheck(arguments,1,"CloseEvent constructor"),A=a.converters.DOMString(A,"CloseEvent constructor","type"),Q=a.converters.CloseEventInit(Q);super(A,Q);this.#A=Q,a.util.markAsUncloneable(this)}get wasClean(){return a.brandCheck(this,GG),this.#A.wasClean}get code(){return a.brandCheck(this,GG),this.#A.code}get reason(){return a.brandCheck(this,GG),this.#A.reason}}class h0 extends Event{#A;constructor(A,Q){a.argumentLengthCheck(arguments,1,"ErrorEvent constructor");super(A,Q);a.util.markAsUncloneable(this),A=a.converters.DOMString(A,"ErrorEvent constructor","type"),Q=a.converters.ErrorEventInit(Q??{}),this.#A=Q}get message(){return a.brandCheck(this,h0),this.#A.message}get filename(){return a.brandCheck(this,h0),this.#A.filename}get lineno(){return a.brandCheck(this,h0),this.#A.lineno}get colno(){return a.brandCheck(this,h0),this.#A.colno}get error(){return a.brandCheck(this,h0),this.#A.error}}Object.defineProperties(ZI.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:pB,origin:pB,lastEventId:pB,source:pB,ports:pB,initMessageEvent:pB});Object.defineProperties(GG.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:pB,code:pB,wasClean:pB});Object.defineProperties(h0.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:pB,filename:pB,lineno:pB,colno:pB,error:pB});a.converters.MessagePort=a.interfaceConverter(yOA);a.converters["sequence"]=a.sequenceConverter(a.converters.MessagePort);var y7=[{key:"bubbles",converter:a.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:a.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:a.converters.boolean,defaultValue:()=>!1}];a.converters.MessageEventInit=a.dictionaryConverter([...y7,{key:"data",converter:a.converters.any,defaultValue:()=>null},{key:"origin",converter:a.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:a.converters.DOMString,defaultValue:()=>""},{key:"source",converter:a.nullableConverter(a.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:a.converters["sequence"],defaultValue:()=>[]}]);a.converters.CloseEventInit=a.dictionaryConverter([...y7,{key:"wasClean",converter:a.converters.boolean,defaultValue:()=>!1},{key:"code",converter:a.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:a.converters.USVString,defaultValue:()=>""}]);a.converters.ErrorEventInit=a.dictionaryConverter([...y7,{key:"message",converter:a.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:a.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:a.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:a.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:a.converters.any}]);y_.exports={MessageEvent:ZI,CloseEvent:GG,ErrorEvent:h0,createFastMessageEvent:_OA}});var FJ=U((_HQ,__)=>{var fOA={enumerable:!0,writable:!1,configurable:!1},gOA={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},hOA={NOT_SENT:0,PROCESSING:1,SENT:2},xOA={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},vOA={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},bOA=Buffer.allocUnsafe(0),mOA={string:1,typedArray:2,arrayBuffer:3,blob:4};__.exports={uid:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",sentCloseFrameState:hOA,staticPropertyDescriptors:fOA,states:gOA,opcodes:xOA,maxUnsigned16Bit:65535,parserStates:vOA,emptyBuffer:bOA,sendHints:mOA}});var lZ=U((fHQ,f_)=>{f_.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}});var nZ=U((gHQ,u_)=>{var{kReadyState:pZ,kController:dOA,kResponse:cOA,kBinaryType:uOA,kWebSocketURL:lOA}=lZ(),{states:iZ,opcodes:x0}=FJ(),{ErrorEvent:pOA,createFastMessageEvent:iOA}=DG(),{isUtf8:nOA}=M("node:buffer"),{collectASequenceOfCodePointsFast:aOA,removeHTTPWhitespace:g_}=dB();function oOA(A){return A[pZ]===iZ.CONNECTING}function sOA(A){return A[pZ]===iZ.OPEN}function rOA(A){return A[pZ]===iZ.CLOSING}function tOA(A){return A[pZ]===iZ.CLOSED}function _7(A,Q,B=(C,E)=>new Event(C,E),I={}){let C=B(A,I);Q.dispatchEvent(C)}function eOA(A,Q,B){if(A[pZ]!==iZ.OPEN)return;let I;if(Q===x0.TEXT)try{I=c_(B)}catch{x_(A,"Received invalid UTF-8 in text frame.");return}else if(Q===x0.BINARY)if(A[uOA]==="blob")I=new Blob([B]);else I=ATA(B);_7("message",A,iOA,{origin:A[lOA].origin,data:I})}function ATA(A){if(A.byteLength===A.buffer.byteLength)return A.buffer;return A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength)}function QTA(A){if(A.length===0)return!1;for(let Q=0;Q126||B===34||B===40||B===41||B===44||B===47||B===58||B===59||B===60||B===61||B===62||B===63||B===64||B===91||B===92||B===93||B===123||B===125)return!1}return!0}function BTA(A){if(A>=1000&&A<1015)return A!==1004&&A!==1005&&A!==1006;return A>=3000&&A<=4999}function x_(A,Q){let{[dOA]:B,[cOA]:I}=A;if(B.abort(),I?.socket&&!I.socket.destroyed)I.socket.destroy();if(Q)_7("error",A,(C,E)=>new pOA(C,E),{error:Error(Q),message:Q})}function v_(A){return A===x0.CLOSE||A===x0.PING||A===x0.PONG}function b_(A){return A===x0.CONTINUATION}function m_(A){return A===x0.TEXT||A===x0.BINARY}function ITA(A){return m_(A)||b_(A)||v_(A)}function CTA(A){let Q={position:0},B=new Map;while(Q.position57)return!1}let Q=Number.parseInt(A,10);return Q>=8&&Q<=15}var d_=typeof process.versions.icu==="string",h_=d_?new TextDecoder("utf-8",{fatal:!0}):void 0,c_=d_?h_.decode.bind(h_):function(A){if(nOA(A))return A.toString("utf-8");throw TypeError("Invalid utf-8 received.")};u_.exports={isConnecting:oOA,isEstablished:sOA,isClosing:rOA,isClosed:tOA,fireEvent:_7,isValidSubprotocol:QTA,isValidStatusCode:BTA,failWebsocketConnection:x_,websocketMessageReceived:eOA,utf8Decode:c_,isControlFrame:v_,isContinuationFrame:b_,isTextBinaryFrame:m_,isValidOpcode:ITA,parseExtensions:CTA,isValidClientWindowBits:ETA}});var fX=U((hHQ,p_)=>{var{maxUnsigned16Bit:YTA}=FJ(),f7,aZ=null,ZG=16386;try{f7=M("node:crypto")}catch{f7={randomFillSync:function(Q,B,I){for(let C=0;CYTA)E+=8,C=127;else if(I>125)E+=2,C=126;let Y=Buffer.allocUnsafe(I+E);Y[0]=Y[1]=0,Y[0]|=128,Y[0]=(Y[0]&240)+A;/*! ws. MIT License. Einar Otto Stangvik */if(Y[E-4]=B[0],Y[E-3]=B[1],Y[E-2]=B[2],Y[E-1]=B[3],Y[1]=C,C===126)Y.writeUInt16BE(I,2);else if(C===127)Y[2]=Y[3]=0,Y.writeUIntBE(I,4,6);Y[1]|=128;for(let J=0;J{var{uid:FTA,states:oZ,sentCloseFrameState:gX,emptyBuffer:GTA,opcodes:DTA}=FJ(),{kReadyState:sZ,kSentClose:hX,kByteParser:n_,kReceivedClose:i_,kResponse:a_}=lZ(),{fireEvent:ZTA,failWebsocketConnection:v0,isClosing:WTA,isClosed:XTA,isEstablished:UTA,parseExtensions:wTA}=nZ(),{channels:WG}=jF(),{CloseEvent:KTA}=DG(),{makeRequest:zTA}=CG(),{fetching:VTA}=bZ(),{Headers:$TA,getHeadersList:LTA}=IJ(),{getDecodeSplit:HTA}=CI(),{WebsocketFrameSend:MTA}=fX(),g7;try{g7=M("node:crypto")}catch{}function NTA(A,Q,B,I,C,E){let Y=A;Y.protocol=A.protocol==="ws:"?"http:":"https:";let J=zTA({urlList:[Y],client:B,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(E.headers){let Z=LTA(new $TA(E.headers));J.headersList=Z}let F=g7.randomBytes(16).toString("base64");J.headersList.append("sec-websocket-key",F),J.headersList.append("sec-websocket-version","13");for(let Z of Q)J.headersList.append("sec-websocket-protocol",Z);let G="permessage-deflate; client_max_window_bits";return J.headersList.append("sec-websocket-extensions",G),VTA({request:J,useParallelQueue:!0,dispatcher:E.dispatcher,processResponse(Z){if(Z.type==="error"||Z.status!==101){v0(I,"Received network error or non-101 status code.");return}if(Q.length!==0&&!Z.headersList.get("Sec-WebSocket-Protocol")){v0(I,"Server did not respond with sent protocols.");return}if(Z.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){v0(I,'Server did not set Upgrade header to "websocket".');return}if(Z.headersList.get("Connection")?.toLowerCase()!=="upgrade"){v0(I,'Server did not set Connection header to "upgrade".');return}let W=Z.headersList.get("Sec-WebSocket-Accept"),X=g7.createHash("sha1").update(F+FTA).digest("base64");if(W!==X){v0(I,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let w=Z.headersList.get("Sec-WebSocket-Extensions"),K;if(w!==null){if(K=wTA(w),!K.has("permessage-deflate")){v0(I,"Sec-WebSocket-Extensions header does not match.");return}}let z=Z.headersList.get("Sec-WebSocket-Protocol");if(z!==null){if(!HTA("sec-websocket-protocol",J.headersList).includes(z)){v0(I,"Protocol was not set in the opening handshake.");return}}if(Z.socket.on("data",o_),Z.socket.on("close",s_),Z.socket.on("error",r_),WG.open.hasSubscribers)WG.open.publish({address:Z.socket.address(),protocol:z,extensions:w});C(Z,K)}})}function jTA(A,Q,B,I){if(WTA(A)||XTA(A));else if(!UTA(A))v0(A,"Connection was closed before it was established."),A[sZ]=oZ.CLOSING;else if(A[hX]===gX.NOT_SENT){A[hX]=gX.PROCESSING;let C=new MTA;if(Q!==void 0&&B===void 0)C.frameData=Buffer.allocUnsafe(2),C.frameData.writeUInt16BE(Q,0);else if(Q!==void 0&&B!==void 0)C.frameData=Buffer.allocUnsafe(2+I),C.frameData.writeUInt16BE(Q,0),C.frameData.write(B,2,"utf-8");else C.frameData=GTA;A[a_].socket.write(C.createFrame(DTA.CLOSE)),A[hX]=gX.SENT,A[sZ]=oZ.CLOSING}else A[sZ]=oZ.CLOSING}function o_(A){if(!this.ws[n_].write(A))this.pause()}function s_(){let{ws:A}=this,{[a_]:Q}=A;Q.socket.off("data",o_),Q.socket.off("close",s_),Q.socket.off("error",r_);let B=A[hX]===gX.SENT&&A[i_],I=1005,C="",E=A[n_].closingInfo;if(E&&!E.error)I=E.code??1005,C=E.reason;else if(!A[i_])I=1006;if(A[sZ]=oZ.CLOSED,ZTA("close",A,(Y,J)=>new KTA(Y,J),{wasClean:B,code:I,reason:C}),WG.close.hasSubscribers)WG.close.publish({websocket:A,code:I,reason:C})}function r_(A){let{ws:Q}=this;if(Q[sZ]=oZ.CLOSING,WG.socketError.hasSubscribers)WG.socketError.publish(A);this.destroy()}t_.exports={establishWebSocketConnection:NTA,closeWebSocketConnection:jTA}});var Bf=U((vHQ,Qf)=>{var{createInflateRaw:RTA,Z_DEFAULT_WINDOWBITS:qTA}=M("node:zlib"),{isValidClientWindowBits:OTA}=nZ(),{MessageSizeExceededError:e_}=TA(),TTA=Buffer.from([0,0,255,255]),xX=Symbol("kBuffer"),rZ=Symbol("kLength");class Af{#A;#Q={};#C=!1;#B=null;constructor(A){this.#Q.serverNoContextTakeover=A.has("server_no_context_takeover"),this.#Q.serverMaxWindowBits=A.get("server_max_window_bits")}decompress(A,Q,B){if(this.#C){B(new e_);return}if(!this.#A){let I=qTA;if(this.#Q.serverMaxWindowBits){if(!OTA(this.#Q.serverMaxWindowBits)){B(Error("Invalid server_max_window_bits"));return}I=Number.parseInt(this.#Q.serverMaxWindowBits)}try{this.#A=RTA({windowBits:I})}catch(C){B(C);return}this.#A[xX]=[],this.#A[rZ]=0,this.#A.on("data",(C)=>{if(this.#C)return;if(this.#A[rZ]+=C.length,this.#A[rZ]>4194304){if(this.#C=!0,this.#A.removeAllListeners(),this.#A.destroy(),this.#A=null,this.#B){let E=this.#B;this.#B=null,E(new e_)}return}this.#A[xX].push(C)}),this.#A.on("error",(C)=>{this.#A=null,B(C)})}if(this.#B=B,this.#A.write(A),Q)this.#A.write(TTA);this.#A.flush(()=>{if(this.#C||!this.#A)return;let I=Buffer.concat(this.#A[xX],this.#A[rZ]);this.#A[xX].length=0,this.#A[rZ]=0,this.#B=null,B(null,I)})}}Qf.exports={PerMessageDeflate:Af}});var Xf=U((bHQ,Wf)=>{var{Writable:PTA}=M("node:stream"),kTA=M("node:assert"),{parserStates:iB,opcodes:XG,states:STA,emptyBuffer:If,sentCloseFrameState:Cf}=FJ(),{kReadyState:yTA,kSentClose:Ef,kResponse:Yf,kReceivedClose:Jf}=lZ(),{channels:vX}=jF(),{isValidStatusCode:_TA,isValidOpcode:fTA,failWebsocketConnection:WI,websocketMessageReceived:Ff,utf8Decode:gTA,isControlFrame:Gf,isTextBinaryFrame:x7,isContinuationFrame:hTA}=nZ(),{WebsocketFrameSend:Df}=fX(),{closeWebSocketConnection:xTA}=h7(),{PerMessageDeflate:vTA}=Bf();class Zf extends PTA{#A=[];#Q=0;#C=!1;#B=iB.INFO;#I={};#E=[];#Y;constructor(A,Q){super();if(this.ws=A,this.#Y=Q==null?new Map:Q,this.#Y.has("permessage-deflate"))this.#Y.set("permessage-deflate",new vTA(Q))}_write(A,Q,B){this.#A.push(A),this.#Q+=A.length,this.#C=!0,this.run(B)}run(A){while(this.#C)if(this.#B===iB.INFO){if(this.#Q<2)return A();let Q=this.consume(2),B=(Q[0]&128)!==0,I=Q[0]&15,C=(Q[1]&128)===128,E=!B&&I!==XG.CONTINUATION,Y=Q[1]&127,J=Q[0]&64,F=Q[0]&32,G=Q[0]&16;if(!fTA(I))return WI(this.ws,"Invalid opcode received"),A();if(C)return WI(this.ws,"Frame cannot be masked"),A();if(J!==0&&!this.#Y.has("permessage-deflate")){WI(this.ws,"Expected RSV1 to be clear.");return}if(F!==0||G!==0){WI(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(E&&!x7(I)){WI(this.ws,"Invalid frame type was fragmented.");return}if(x7(I)&&this.#E.length>0){WI(this.ws,"Expected continuation frame");return}if(this.#I.fragmented&&E){WI(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((Y>125||E)&&Gf(I)){WI(this.ws,"Control frame either too large or fragmented");return}if(hTA(I)&&this.#E.length===0&&!this.#I.compressed){WI(this.ws,"Unexpected continuation frame");return}if(Y<=125)this.#I.payloadLength=Y,this.#B=iB.READ_DATA;else if(Y===126)this.#B=iB.PAYLOADLENGTH_16;else if(Y===127)this.#B=iB.PAYLOADLENGTH_64;if(x7(I))this.#I.binaryType=I,this.#I.compressed=J!==0;this.#I.opcode=I,this.#I.masked=C,this.#I.fin=B,this.#I.fragmented=E}else if(this.#B===iB.PAYLOADLENGTH_16){if(this.#Q<2)return A();let Q=this.consume(2);this.#I.payloadLength=Q.readUInt16BE(0),this.#B=iB.READ_DATA}else if(this.#B===iB.PAYLOADLENGTH_64){if(this.#Q<8)return A();let Q=this.consume(8),B=Q.readUInt32BE(0),I=Q.readUInt32BE(4);if(B!==0||I>2147483647){WI(this.ws,"Received payload length > 2^31 bytes.");return}this.#I.payloadLength=I,this.#B=iB.READ_DATA}else if(this.#B===iB.READ_DATA){if(this.#Q{if(B){WI(this.ws,B.message);return}if(this.#E.push(I),!this.#I.fin){this.#B=iB.INFO,this.#C=!0,this.run(A);return}Ff(this.ws,this.#I.binaryType,Buffer.concat(this.#E)),this.#C=!0,this.#B=iB.INFO,this.#E.length=0,this.run(A)}),this.#C=!1;break}}}consume(A){if(A>this.#Q)throw Error("Called consume() before buffers satiated.");else if(A===0)return If;if(this.#A[0].length===A)return this.#Q-=this.#A[0].length,this.#A.shift();let Q=Buffer.allocUnsafe(A),B=0;while(B!==A){let I=this.#A[0],{length:C}=I;if(C+B===A){Q.set(this.#A.shift(),B);break}else if(C+B>A){Q.set(I.subarray(0,A-B),B),this.#A[0]=I.subarray(A-B);break}else Q.set(this.#A.shift(),B),B+=I.length}return this.#Q-=A,Q}parseCloseBody(A){kTA(A.length!==1);let Q;if(A.length>=2)Q=A.readUInt16BE(0);if(Q!==void 0&&!_TA(Q))return{code:1002,reason:"Invalid status code",error:!0};let B=A.subarray(2);if(B[0]===239&&B[1]===187&&B[2]===191)B=B.subarray(3);try{B=gTA(B)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:Q,reason:B,error:!1}}parseControlFrame(A){let{opcode:Q,payloadLength:B}=this.#I;if(Q===XG.CLOSE){if(B===1)return WI(this.ws,"Received close frame with a 1-byte body."),!1;if(this.#I.closeInfo=this.parseCloseBody(A),this.#I.closeInfo.error){let{code:I,reason:C}=this.#I.closeInfo;return xTA(this.ws,I,C,C.length),WI(this.ws,C),!1}if(this.ws[Ef]!==Cf.SENT){let I=If;if(this.#I.closeInfo.code)I=Buffer.allocUnsafe(2),I.writeUInt16BE(this.#I.closeInfo.code,0);let C=new Df(I);this.ws[Yf].socket.write(C.createFrame(XG.CLOSE),(E)=>{if(!E)this.ws[Ef]=Cf.SENT})}return this.ws[yTA]=STA.CLOSING,this.ws[Jf]=!0,!1}else if(Q===XG.PING){if(!this.ws[Jf]){let I=new Df(A);if(this.ws[Yf].socket.write(I.createFrame(XG.PONG)),vX.ping.hasSubscribers)vX.ping.publish({payload:A})}}else if(Q===XG.PONG){if(vX.pong.hasSubscribers)vX.pong.publish({payload:A})}return!0}get closingInfo(){return this.#I.closeInfo}}Wf.exports={ByteParser:Zf}});var $f=U((mHQ,Vf)=>{var{WebsocketFrameSend:bTA}=fX(),{opcodes:Uf,sendHints:UG}=FJ(),mTA=L6(),wf=Buffer[Symbol.species];class zf{#A=new mTA;#Q=!1;#C;constructor(A){this.#C=A}add(A,Q,B){if(B!==UG.blob){let C=Kf(A,B);if(!this.#Q)this.#C.write(C,Q);else{let E={promise:null,callback:Q,frame:C};this.#A.push(E)}return}let I={promise:A.arrayBuffer().then((C)=>{I.promise=null,I.frame=Kf(C,B)}),callback:Q,frame:null};if(this.#A.push(I),!this.#Q)this.#B()}async#B(){this.#Q=!0;let A=this.#A;while(!A.isEmpty()){let Q=A.shift();if(Q.promise!==null)await Q.promise;this.#C.write(Q.frame,Q.callback),Q.callback=Q.frame=null}this.#Q=!1}}function Kf(A,Q){return new bTA(dTA(A,Q)).createFrame(Q===UG.string?Uf.TEXT:Uf.BINARY)}function dTA(A,Q){switch(Q){case UG.string:return Buffer.from(A);case UG.arrayBuffer:case UG.blob:return new wf(A);case UG.typedArray:return new wf(A.buffer,A.byteOffset,A.byteLength)}}Vf.exports={SendQueue:zf}});var Tf=U((dHQ,Of)=>{var{webidl:YA}=nQ(),{URLSerializer:cTA}=dB(),{environmentSettingsObject:Lf}=CI(),{staticPropertyDescriptors:b0,states:tZ,sentCloseFrameState:uTA,sendHints:bX}=FJ(),{kWebSocketURL:Hf,kReadyState:v7,kController:lTA,kBinaryType:mX,kResponse:Mf,kSentClose:pTA,kByteParser:iTA}=lZ(),{isConnecting:nTA,isEstablished:aTA,isClosing:oTA,isValidSubprotocol:sTA,fireEvent:Nf}=nZ(),{establishWebSocketConnection:rTA,closeWebSocketConnection:jf}=h7(),{ByteParser:tTA}=Xf(),{kEnumerableProperty:hI,isBlobLike:Rf}=$A(),{getGlobalDispatcher:eTA}=JX(),{types:qf}=M("node:util"),{ErrorEvent:APA,CloseEvent:QPA}=DG(),{SendQueue:BPA}=$f();class yA extends EventTarget{#A={open:null,error:null,close:null,message:null};#Q=0;#C="";#B="";#I;constructor(A,Q=[]){super();YA.util.markAsUncloneable(this);let B="WebSocket constructor";YA.argumentLengthCheck(arguments,1,B);let I=YA.converters["DOMString or sequence or WebSocketInit"](Q,B,"options");A=YA.converters.USVString(A,B,"url"),Q=I.protocols;let C=Lf.settingsObject.baseUrl,E;try{E=new URL(A,C)}catch(J){throw new DOMException(J,"SyntaxError")}if(E.protocol==="http:")E.protocol="ws:";else if(E.protocol==="https:")E.protocol="wss:";if(E.protocol!=="ws:"&&E.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${E.protocol}`,"SyntaxError");if(E.hash||E.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof Q==="string")Q=[Q];if(Q.length!==new Set(Q.map((J)=>J.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(Q.length>0&&!Q.every((J)=>sTA(J)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[Hf]=new URL(E.href);let Y=Lf.settingsObject;this[lTA]=rTA(E,Q,Y,this,(J,F)=>this.#E(J,F),I),this[v7]=yA.CONNECTING,this[pTA]=uTA.NOT_SENT,this[mX]="blob"}close(A=void 0,Q=void 0){YA.brandCheck(this,yA);let B="WebSocket.close";if(A!==void 0)A=YA.converters["unsigned short"](A,B,"code",{clamp:!0});if(Q!==void 0)Q=YA.converters.USVString(Q,B,"reason");if(A!==void 0){if(A!==1000&&(A<3000||A>4999))throw new DOMException("invalid code","InvalidAccessError")}let I=0;if(Q!==void 0){if(I=Buffer.byteLength(Q),I>123)throw new DOMException(`Reason must be less than 123 bytes; received ${I}`,"SyntaxError")}jf(this,A,Q,I)}send(A){YA.brandCheck(this,yA);let Q="WebSocket.send";if(YA.argumentLengthCheck(arguments,1,Q),A=YA.converters.WebSocketSendData(A,Q,"data"),nTA(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!aTA(this)||oTA(this))return;if(typeof A==="string"){let B=Buffer.byteLength(A);this.#Q+=B,this.#I.add(A,()=>{this.#Q-=B},bX.string)}else if(qf.isArrayBuffer(A))this.#Q+=A.byteLength,this.#I.add(A,()=>{this.#Q-=A.byteLength},bX.arrayBuffer);else if(ArrayBuffer.isView(A))this.#Q+=A.byteLength,this.#I.add(A,()=>{this.#Q-=A.byteLength},bX.typedArray);else if(Rf(A))this.#Q+=A.size,this.#I.add(A,()=>{this.#Q-=A.size},bX.blob)}get readyState(){return YA.brandCheck(this,yA),this[v7]}get bufferedAmount(){return YA.brandCheck(this,yA),this.#Q}get url(){return YA.brandCheck(this,yA),cTA(this[Hf])}get extensions(){return YA.brandCheck(this,yA),this.#B}get protocol(){return YA.brandCheck(this,yA),this.#C}get onopen(){return YA.brandCheck(this,yA),this.#A.open}set onopen(A){if(YA.brandCheck(this,yA),this.#A.open)this.removeEventListener("open",this.#A.open);if(typeof A==="function")this.#A.open=A,this.addEventListener("open",A);else this.#A.open=null}get onerror(){return YA.brandCheck(this,yA),this.#A.error}set onerror(A){if(YA.brandCheck(this,yA),this.#A.error)this.removeEventListener("error",this.#A.error);if(typeof A==="function")this.#A.error=A,this.addEventListener("error",A);else this.#A.error=null}get onclose(){return YA.brandCheck(this,yA),this.#A.close}set onclose(A){if(YA.brandCheck(this,yA),this.#A.close)this.removeEventListener("close",this.#A.close);if(typeof A==="function")this.#A.close=A,this.addEventListener("close",A);else this.#A.close=null}get onmessage(){return YA.brandCheck(this,yA),this.#A.message}set onmessage(A){if(YA.brandCheck(this,yA),this.#A.message)this.removeEventListener("message",this.#A.message);if(typeof A==="function")this.#A.message=A,this.addEventListener("message",A);else this.#A.message=null}get binaryType(){return YA.brandCheck(this,yA),this[mX]}set binaryType(A){if(YA.brandCheck(this,yA),A!=="blob"&&A!=="arraybuffer")this[mX]="blob";else this[mX]=A}#E(A,Q){this[Mf]=A;let B=new tTA(this,Q);B.on("drain",IPA),B.on("error",CPA.bind(this)),A.socket.ws=this,this[iTA]=B,this.#I=new BPA(A.socket),this[v7]=tZ.OPEN;let I=A.headersList.get("sec-websocket-extensions");if(I!==null)this.#B=I;let C=A.headersList.get("sec-websocket-protocol");if(C!==null)this.#C=C;Nf("open",this)}}yA.CONNECTING=yA.prototype.CONNECTING=tZ.CONNECTING;yA.OPEN=yA.prototype.OPEN=tZ.OPEN;yA.CLOSING=yA.prototype.CLOSING=tZ.CLOSING;yA.CLOSED=yA.prototype.CLOSED=tZ.CLOSED;Object.defineProperties(yA.prototype,{CONNECTING:b0,OPEN:b0,CLOSING:b0,CLOSED:b0,url:hI,readyState:hI,bufferedAmount:hI,onopen:hI,onerror:hI,onclose:hI,close:hI,onmessage:hI,binaryType:hI,send:hI,extensions:hI,protocol:hI,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(yA,{CONNECTING:b0,OPEN:b0,CLOSING:b0,CLOSED:b0});YA.converters["sequence"]=YA.sequenceConverter(YA.converters.DOMString);YA.converters["DOMString or sequence"]=function(A,Q,B){if(YA.util.Type(A)==="Object"&&Symbol.iterator in A)return YA.converters["sequence"](A);return YA.converters.DOMString(A,Q,B)};YA.converters.WebSocketInit=YA.dictionaryConverter([{key:"protocols",converter:YA.converters["DOMString or sequence"],defaultValue:()=>[]},{key:"dispatcher",converter:YA.converters.any,defaultValue:()=>eTA()},{key:"headers",converter:YA.nullableConverter(YA.converters.HeadersInit)}]);YA.converters["DOMString or sequence or WebSocketInit"]=function(A){if(YA.util.Type(A)==="Object"&&!(Symbol.iterator in A))return YA.converters.WebSocketInit(A);return{protocols:YA.converters["DOMString or sequence"](A)}};YA.converters.WebSocketSendData=function(A){if(YA.util.Type(A)==="Object"){if(Rf(A))return YA.converters.Blob(A,{strict:!1});if(ArrayBuffer.isView(A)||qf.isArrayBuffer(A))return YA.converters.BufferSource(A)}return YA.converters.USVString(A)};function IPA(){this.ws[Mf].socket.resume()}function CPA(A){let Q,B;if(A instanceof QPA)Q=A.reason,B=A.code;else Q=A.message;Nf("error",this,()=>new APA("error",{error:A,message:Q})),jf(this,B)}Of.exports={WebSocket:yA}});var b7=U((cHQ,Pf)=>{function EPA(A){return A.indexOf("\x00")===-1}function YPA(A){if(A.length===0)return!1;for(let Q=0;Q57)return!1;return!0}function JPA(A){return new Promise((Q)=>{setTimeout(Q,A).unref()})}Pf.exports={isValidLastEventId:EPA,isASCIINumber:YPA,delay:JPA}});var ff=U((uHQ,_f)=>{var{Transform:FPA}=M("node:stream"),{isASCIINumber:kf,isValidLastEventId:Sf}=b7(),fE=[239,187,191];class yf extends FPA{state=null;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;buffer=null;pos=0;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(A={}){A.readableObjectMode=!0;super(A);if(this.state=A.eventSourceSettings||{},A.push)this.push=A.push}_transform(A,Q,B){if(A.length===0){B();return}if(this.buffer)this.buffer=Buffer.concat([this.buffer,A]);else this.buffer=A;if(this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===fE[0]){B();return}this.checkBOM=!1,B();return;case 2:if(this.buffer[0]===fE[0]&&this.buffer[1]===fE[1]){B();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===fE[0]&&this.buffer[1]===fE[1]&&this.buffer[2]===fE[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,B();return}this.checkBOM=!1;break;default:if(this.buffer[0]===fE[0]&&this.buffer[1]===fE[1]&&this.buffer[2]===fE[2])this.buffer=this.buffer.subarray(3);this.checkBOM=!1;break}while(this.pos0)Q[I]=C;break}}processEvent(A){if(A.retry&&kf(A.retry))this.state.reconnectionTime=parseInt(A.retry,10);if(A.id&&Sf(A.id))this.state.lastEventId=A.id;if(A.data!==void 0)this.push({type:A.event||"message",options:{data:A.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}}_f.exports={EventSourceStream:yf}});var cf=U((lHQ,df)=>{var{pipeline:GPA}=M("node:stream"),{fetching:DPA}=bZ(),{makeRequest:ZPA}=CG(),{webidl:gE}=nQ(),{EventSourceStream:WPA}=ff(),{parseMIMEType:XPA}=dB(),{createFastMessageEvent:UPA}=DG(),{isNetworkError:gf}=xZ(),{delay:wPA}=b7(),{kEnumerableProperty:GJ}=$A(),{environmentSettingsObject:hf}=CI(),xf=!1,vf=3000,eZ=0,bf=1,A1=2,KPA="anonymous",zPA="use-credentials";class wG extends EventTarget{#A={open:null,error:null,message:null};#Q=null;#C=!1;#B=eZ;#I=null;#E=null;#Y;#J;constructor(A,Q={}){super();gE.util.markAsUncloneable(this);let B="EventSource constructor";if(gE.argumentLengthCheck(arguments,1,B),!xf)xf=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"});A=gE.converters.USVString(A,B,"url"),Q=gE.converters.EventSourceInitDict(Q,B,"eventSourceInitDict"),this.#Y=Q.dispatcher,this.#J={lastEventId:"",reconnectionTime:vf};let I=hf,C;try{C=new URL(A,I.settingsObject.baseUrl),this.#J.origin=C.origin}catch(J){throw new DOMException(J,"SyntaxError")}this.#Q=C.href;let E=KPA;if(Q.withCredentials)E=zPA,this.#C=!0;let Y={redirect:"follow",keepalive:!0,mode:"cors",credentials:E==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};Y.client=hf.settingsObject,Y.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],Y.cache="no-store",Y.initiator="other",Y.urlList=[new URL(this.#Q)],this.#I=ZPA(Y),this.#F()}get readyState(){return this.#B}get url(){return this.#Q}get withCredentials(){return this.#C}#F(){if(this.#B===A1)return;this.#B=eZ;let A={request:this.#I,dispatcher:this.#Y},Q=(B)=>{if(gf(B))this.dispatchEvent(new Event("error")),this.close();this.#G()};A.processResponseEndOfBody=Q,A.processResponse=(B)=>{if(gf(B))if(B.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#G();return}let I=B.headersList.get("content-type",!0),C=I!==null?XPA(I):"failure",E=C!=="failure"&&C.essence==="text/event-stream";if(B.status!==200||E===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#B=bf,this.dispatchEvent(new Event("open")),this.#J.origin=B.urlList[B.urlList.length-1].origin;let Y=new WPA({eventSourceSettings:this.#J,push:(J)=>{this.dispatchEvent(UPA(J.type,J.options))}});GPA(B.body.stream,Y,(J)=>{if(J?.aborted===!1)this.close(),this.dispatchEvent(new Event("error"))})},this.#E=DPA(A)}async#G(){if(this.#B===A1)return;if(this.#B=eZ,this.dispatchEvent(new Event("error")),await wPA(this.#J.reconnectionTime),this.#B!==eZ)return;if(this.#J.lastEventId.length)this.#I.headersList.set("last-event-id",this.#J.lastEventId,!0);this.#F()}close(){if(gE.brandCheck(this,wG),this.#B===A1)return;this.#B=A1,this.#E.abort(),this.#I=null}get onopen(){return this.#A.open}set onopen(A){if(this.#A.open)this.removeEventListener("open",this.#A.open);if(typeof A==="function")this.#A.open=A,this.addEventListener("open",A);else this.#A.open=null}get onmessage(){return this.#A.message}set onmessage(A){if(this.#A.message)this.removeEventListener("message",this.#A.message);if(typeof A==="function")this.#A.message=A,this.addEventListener("message",A);else this.#A.message=null}get onerror(){return this.#A.error}set onerror(A){if(this.#A.error)this.removeEventListener("error",this.#A.error);if(typeof A==="function")this.#A.error=A,this.addEventListener("error",A);else this.#A.error=null}}var mf={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:eZ,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:bf,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:A1,writable:!1}};Object.defineProperties(wG,mf);Object.defineProperties(wG.prototype,mf);Object.defineProperties(wG.prototype,{close:GJ,onerror:GJ,onmessage:GJ,onopen:GJ,readyState:GJ,url:GJ,withCredentials:GJ});gE.converters.EventSourceInitDict=gE.dictionaryConverter([{key:"withCredentials",converter:gE.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:gE.converters.any}]);df.exports={EventSource:wG,defaultReconnectionTime:vf}});var uX=U((sPA,CA)=>{var VPA=lF(),uf=IZ(),$PA=pF(),LPA=UP(),HPA=iF(),MPA=_6(),NPA=cP(),jPA=oP(),lf=TA(),cX=$A(),{InvalidArgumentError:dX}=lf,KG=ck(),RPA=EZ(),qPA=C7(),OPA=TS(),TPA=Y7(),PPA=n6(),kPA=t8(),{getGlobalDispatcher:pf,setGlobalDispatcher:SPA}=JX(),yPA=FX(),_PA=c8(),fPA=u8();Object.assign(uf.prototype,KG);sPA.Dispatcher=uf;sPA.Client=VPA;sPA.Pool=$PA;sPA.BalancedPool=LPA;sPA.Agent=HPA;sPA.ProxyAgent=MPA;sPA.EnvHttpProxyAgent=NPA;sPA.RetryAgent=jPA;sPA.RetryHandler=kPA;sPA.DecoratorHandler=yPA;sPA.RedirectHandler=_PA;sPA.createRedirectInterceptor=fPA;sPA.interceptors={redirect:gS(),retry:xS(),dump:mS(),dns:pS()};sPA.buildConnector=RPA;sPA.errors=lf;sPA.util={parseHeaders:cX.parseHeaders,headerNameToString:cX.headerNameToString};function Q1(A){return(Q,B,I)=>{if(typeof B==="function")I=B,B=null;if(!Q||typeof Q!=="string"&&typeof Q!=="object"&&!(Q instanceof URL))throw new dX("invalid url");if(B!=null&&typeof B!=="object")throw new dX("invalid opts");if(B&&B.path!=null){if(typeof B.path!=="string")throw new dX("invalid opts.path");let Y=B.path;if(!B.path.startsWith("/"))Y=`/${Y}`;Q=new URL(cX.parseOrigin(Q).origin+Y)}else{if(!B)B=typeof Q==="object"?Q:{};Q=cX.parseURL(Q)}let{agent:C,dispatcher:E=pf()}=B;if(C)throw new dX("unsupported opts.agent. Did you mean opts.client?");return A.call(E,{...B,origin:Q.origin,path:Q.search?`${Q.pathname}${Q.search}`:Q.pathname,method:B.method||(B.body?"PUT":"GET")},I)}}sPA.setGlobalDispatcher=SPA;sPA.getGlobalDispatcher=pf;var gPA=bZ().fetch;sPA.fetch=async function(Q,B=void 0){try{return await gPA(Q,B)}catch(I){if(I&&typeof I==="object")Error.captureStackTrace(I);throw I}};sPA.Headers=IJ().Headers;sPA.Response=xZ().Response;sPA.Request=CG().Request;sPA.FormData=ZZ().FormData;sPA.File=globalThis.File??M("node:buffer").File;sPA.FileReader=G_().FileReader;var{setGlobalOrigin:hPA,getGlobalOrigin:xPA}=pK();sPA.setGlobalOrigin=hPA;sPA.getGlobalOrigin=xPA;var{CacheStorage:vPA}=V_(),{kConstruct:bPA}=TX();sPA.caches=new vPA(bPA);var{deleteCookie:mPA,getCookies:dPA,getSetCookies:cPA,setCookie:uPA}=k_();sPA.deleteCookie=mPA;sPA.getCookies=dPA;sPA.getSetCookies=cPA;sPA.setCookie=uPA;var{parseMIMEType:lPA,serializeAMimeType:pPA}=dB();sPA.parseMIMEType=lPA;sPA.serializeAMimeType=pPA;var{CloseEvent:iPA,ErrorEvent:nPA,MessageEvent:aPA}=DG();sPA.WebSocket=Tf().WebSocket;sPA.CloseEvent=iPA;sPA.ErrorEvent=nPA;sPA.MessageEvent=aPA;sPA.request=Q1(KG.request);sPA.stream=Q1(KG.stream);sPA.pipeline=Q1(KG.pipeline);sPA.connect=Q1(KG.connect);sPA.upgrade=Q1(KG.upgrade);sPA.MockClient=qPA;sPA.MockPool=TPA;sPA.MockAgent=OPA;sPA.mockErrors=PPA;var{EventSource:oPA}=cf();sPA.EventSource=oPA});var Iz=U((Hg)=>{Object.defineProperty(Hg,"__esModule",{value:!0});Hg.VERSION=void 0;Hg.VERSION="1.9.1"});var Og=U((Rg)=>{Object.defineProperty(Rg,"__esModule",{value:!0});Rg.isCompatible=Rg._makeCompatibilityCheck=void 0;var USA=Iz(),Ng=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function jg(A){let Q=new Set([A]),B=new Set,I=A.match(Ng);if(!I)return()=>!1;let C={major:+I[1],minor:+I[2],patch:+I[3],prerelease:I[4]};if(C.prerelease!=null)return function(F){return F===A};function E(J){return B.add(J),!1}function Y(J){return Q.add(J),!0}return function(F){if(Q.has(F))return!0;if(B.has(F))return!1;let G=F.match(Ng);if(!G)return E(F);let D={major:+G[1],minor:+G[2],patch:+G[3],prerelease:G[4]};if(D.prerelease!=null)return E(F);if(C.major!==D.major)return E(F);if(C.major===0){if(C.minor===D.minor&&C.patch<=D.patch)return Y(F);return E(F)}if(C.minor<=D.minor)return Y(F);return E(F)}}Rg._makeCompatibilityCheck=jg;Rg.isCompatible=jg(USA.VERSION)});var WJ=U((Tg)=>{Object.defineProperty(Tg,"__esModule",{value:!0});Tg.unregisterGlobal=Tg.getGlobal=Tg.registerGlobal=void 0;var $G=Iz(),KSA=Og(),zSA=$G.VERSION.split(".")[0],F1=Symbol.for(`opentelemetry.js.api.${zSA}`),G1=typeof globalThis==="object"?globalThis:typeof self==="object"?self:typeof window==="object"?window:typeof global==="object"?global:{};function VSA(A,Q,B,I=!1){var C;let E=G1[F1]=(C=G1[F1])!==null&&C!==void 0?C:{version:$G.VERSION};if(!I&&E[A]){let Y=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${A}`);return B.error(Y.stack||Y.message),!1}if(E.version!==$G.VERSION){let Y=Error(`@opentelemetry/api: Registration of version v${E.version} for ${A} does not match previously registered API v${$G.VERSION}`);return B.error(Y.stack||Y.message),!1}return E[A]=Q,B.debug(`@opentelemetry/api: Registered a global for ${A} v${$G.VERSION}.`),!0}Tg.registerGlobal=VSA;function $SA(A){var Q,B;let I=(Q=G1[F1])===null||Q===void 0?void 0:Q.version;if(!I||!(0,KSA.isCompatible)(I))return;return(B=G1[F1])===null||B===void 0?void 0:B[A]}Tg.getGlobal=$SA;function LSA(A,Q){Q.debug(`@opentelemetry/api: Unregistering a global for ${A} v${$G.VERSION}.`);let B=G1[F1];if(B)delete B[A]}Tg.unregisterGlobal=LSA});var _g=U((Sg)=>{Object.defineProperty(Sg,"__esModule",{value:!0});Sg.DiagComponentLogger=void 0;var NSA=WJ();class kg{constructor(A){this._namespace=A.namespace||"DiagComponentLogger"}debug(...A){return D1("debug",this._namespace,A)}error(...A){return D1("error",this._namespace,A)}info(...A){return D1("info",this._namespace,A)}warn(...A){return D1("warn",this._namespace,A)}verbose(...A){return D1("verbose",this._namespace,A)}}Sg.DiagComponentLogger=kg;function D1(A,Q,B){let I=(0,NSA.getGlobal)("diag");if(!I)return;return I[A](Q,...B)}});var rX=U((fg)=>{Object.defineProperty(fg,"__esModule",{value:!0});fg.DiagLogLevel=void 0;var jSA;(function(A){A[A.NONE=0]="NONE",A[A.ERROR=30]="ERROR",A[A.WARN=50]="WARN",A[A.INFO=60]="INFO",A[A.DEBUG=70]="DEBUG",A[A.VERBOSE=80]="VERBOSE",A[A.ALL=9999]="ALL"})(jSA=fg.DiagLogLevel||(fg.DiagLogLevel={}))});var xg=U((gg)=>{Object.defineProperty(gg,"__esModule",{value:!0});gg.createLogLevelDiagLogger=void 0;var vE=rX();function RSA(A,Q){if(AvE.DiagLogLevel.ALL)A=vE.DiagLogLevel.ALL;Q=Q||{};function B(I,C){let E=Q[I];if(typeof E==="function"&&A>=C)return E.bind(Q);return function(){}}return{error:B("error",vE.DiagLogLevel.ERROR),warn:B("warn",vE.DiagLogLevel.WARN),info:B("info",vE.DiagLogLevel.INFO),debug:B("debug",vE.DiagLogLevel.DEBUG),verbose:B("verbose",vE.DiagLogLevel.VERBOSE)}}gg.createLogLevelDiagLogger=RSA});var XJ=U((bg)=>{Object.defineProperty(bg,"__esModule",{value:!0});bg.DiagAPI=void 0;var qSA=_g(),OSA=xg(),vg=rX(),tX=WJ(),TSA="diag";class Ez{static instance(){if(!this._instance)this._instance=new Ez;return this._instance}constructor(){function A(I){return function(...C){let E=(0,tX.getGlobal)("diag");if(!E)return;return E[I](...C)}}let Q=this,B=(I,C={logLevel:vg.DiagLogLevel.INFO})=>{var E,Y,J;if(I===Q){let D=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return Q.error((E=D.stack)!==null&&E!==void 0?E:D.message),!1}if(typeof C==="number")C={logLevel:C};let F=(0,tX.getGlobal)("diag"),G=(0,OSA.createLogLevelDiagLogger)((Y=C.logLevel)!==null&&Y!==void 0?Y:vg.DiagLogLevel.INFO,I);if(F&&!C.suppressOverrideMessage){let D=(J=Error().stack)!==null&&J!==void 0?J:"";F.warn(`Current logger will be overwritten from ${D}`),G.warn(`Current logger will overwrite one already registered from ${D}`)}return(0,tX.registerGlobal)("diag",G,Q,!0)};Q.setLogger=B,Q.disable=()=>{(0,tX.unregisterGlobal)(TSA,Q)},Q.createComponentLogger=(I)=>{return new qSA.DiagComponentLogger(I)},Q.verbose=A("verbose"),Q.debug=A("debug"),Q.info=A("info"),Q.warn=A("warn"),Q.error=A("error")}}bg.DiagAPI=Ez});var ug=U((dg)=>{Object.defineProperty(dg,"__esModule",{value:!0});dg.BaggageImpl=void 0;class LG{constructor(A){this._entries=A?new Map(A):new Map}getEntry(A){let Q=this._entries.get(A);if(!Q)return;return Object.assign({},Q)}getAllEntries(){return Array.from(this._entries.entries())}setEntry(A,Q){let B=new LG(this._entries);return B._entries.set(A,Q),B}removeEntry(A){let Q=new LG(this._entries);return Q._entries.delete(A),Q}removeEntries(...A){let Q=new LG(this._entries);for(let B of A)Q._entries.delete(B);return Q}clear(){return new LG}}dg.BaggageImpl=LG});var ig=U((lg)=>{Object.defineProperty(lg,"__esModule",{value:!0});lg.baggageEntryMetadataSymbol=void 0;lg.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")});var Yz=U((ng)=>{Object.defineProperty(ng,"__esModule",{value:!0});ng.baggageEntryMetadataFromString=ng.createBaggage=void 0;var PSA=XJ(),kSA=ug(),SSA=ig(),ySA=PSA.DiagAPI.instance();function _SA(A={}){return new kSA.BaggageImpl(new Map(Object.entries(A)))}ng.createBaggage=_SA;function fSA(A){if(typeof A!=="string")ySA.error(`Cannot create baggage metadata from unknown type: ${typeof A}`),A="";return{__TYPE__:SSA.baggageEntryMetadataSymbol,toString(){return A}}}ng.baggageEntryMetadataFromString=fSA});var Z1=U((og)=>{Object.defineProperty(og,"__esModule",{value:!0});og.ROOT_CONTEXT=og.createContextKey=void 0;function hSA(A){return Symbol.for(A)}og.createContextKey=hSA;class eX{constructor(A){let Q=this;Q._currentContext=A?new Map(A):new Map,Q.getValue=(B)=>Q._currentContext.get(B),Q.setValue=(B,I)=>{let C=new eX(Q._currentContext);return C._currentContext.set(B,I),C},Q.deleteValue=(B)=>{let I=new eX(Q._currentContext);return I._currentContext.delete(B),I}}}og.ROOT_CONTEXT=new eX});var Ah=U((tg)=>{Object.defineProperty(tg,"__esModule",{value:!0});tg.DiagConsoleLogger=tg._originalConsoleMethods=void 0;var Jz=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];tg._originalConsoleMethods={};if(typeof console<"u"){let A=["error","warn","info","debug","trace","log"];for(let Q of A)if(typeof console[Q]==="function")tg._originalConsoleMethods[Q]=console[Q]}class rg{constructor(){function A(Q){return function(...B){let I=tg._originalConsoleMethods[Q];if(typeof I!=="function")I=tg._originalConsoleMethods.log;if(typeof I!=="function"&&console){if(I=console[Q],typeof I!=="function")I=console.log}if(typeof I==="function")return I.apply(console,B)}}for(let Q=0;Q{Object.defineProperty(Qh,"__esModule",{value:!0});Qh.createNoopMeter=Qh.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=Qh.NOOP_OBSERVABLE_GAUGE_METRIC=Qh.NOOP_OBSERVABLE_COUNTER_METRIC=Qh.NOOP_UP_DOWN_COUNTER_METRIC=Qh.NOOP_HISTOGRAM_METRIC=Qh.NOOP_GAUGE_METRIC=Qh.NOOP_COUNTER_METRIC=Qh.NOOP_METER=Qh.NoopObservableUpDownCounterMetric=Qh.NoopObservableGaugeMetric=Qh.NoopObservableCounterMetric=Qh.NoopObservableMetric=Qh.NoopHistogramMetric=Qh.NoopGaugeMetric=Qh.NoopUpDownCounterMetric=Qh.NoopCounterMetric=Qh.NoopMetric=Qh.NoopMeter=void 0;class Fz{constructor(){}createGauge(A,Q){return Qh.NOOP_GAUGE_METRIC}createHistogram(A,Q){return Qh.NOOP_HISTOGRAM_METRIC}createCounter(A,Q){return Qh.NOOP_COUNTER_METRIC}createUpDownCounter(A,Q){return Qh.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(A,Q){return Qh.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(A,Q){return Qh.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(A,Q){return Qh.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(A,Q){}removeBatchObservableCallback(A){}}Qh.NoopMeter=Fz;class HG{}Qh.NoopMetric=HG;class Gz extends HG{add(A,Q){}}Qh.NoopCounterMetric=Gz;class Dz extends HG{add(A,Q){}}Qh.NoopUpDownCounterMetric=Dz;class Zz extends HG{record(A,Q){}}Qh.NoopGaugeMetric=Zz;class Wz extends HG{record(A,Q){}}Qh.NoopHistogramMetric=Wz;class W1{addCallback(A){}removeCallback(A){}}Qh.NoopObservableMetric=W1;class Xz extends W1{}Qh.NoopObservableCounterMetric=Xz;class Uz extends W1{}Qh.NoopObservableGaugeMetric=Uz;class wz extends W1{}Qh.NoopObservableUpDownCounterMetric=wz;Qh.NOOP_METER=new Fz;Qh.NOOP_COUNTER_METRIC=new Gz;Qh.NOOP_GAUGE_METRIC=new Zz;Qh.NOOP_HISTOGRAM_METRIC=new Wz;Qh.NOOP_UP_DOWN_COUNTER_METRIC=new Dz;Qh.NOOP_OBSERVABLE_COUNTER_METRIC=new Xz;Qh.NOOP_OBSERVABLE_GAUGE_METRIC=new Uz;Qh.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new wz;function vSA(){return Qh.NOOP_METER}Qh.createNoopMeter=vSA});var Wh=U((Zh)=>{Object.defineProperty(Zh,"__esModule",{value:!0});Zh.ValueType=void 0;var oSA;(function(A){A[A.INT=0]="INT",A[A.DOUBLE=1]="DOUBLE"})(oSA=Zh.ValueType||(Zh.ValueType={}))});var Vz=U((Xh)=>{Object.defineProperty(Xh,"__esModule",{value:!0});Xh.defaultTextMapSetter=Xh.defaultTextMapGetter=void 0;Xh.defaultTextMapGetter={get(A,Q){if(A==null)return;return A[Q]},keys(A){if(A==null)return[];return Object.keys(A)}};Xh.defaultTextMapSetter={set(A,Q,B){if(A==null)return;A[Q]=B}}});var Vh=U((Kh)=>{Object.defineProperty(Kh,"__esModule",{value:!0});Kh.NoopContextManager=void 0;var rSA=Z1();class wh{active(){return rSA.ROOT_CONTEXT}with(A,Q,B,...I){return Q.call(B,...I)}bind(A,Q){return Q}enable(){return this}disable(){return this}}Kh.NoopContextManager=wh});var X1=U((Lh)=>{Object.defineProperty(Lh,"__esModule",{value:!0});Lh.ContextAPI=void 0;var tSA=Vh(),$z=WJ(),$h=XJ(),Lz="context",eSA=new tSA.NoopContextManager;class Hz{constructor(){}static getInstance(){if(!this._instance)this._instance=new Hz;return this._instance}setGlobalContextManager(A){return(0,$z.registerGlobal)(Lz,A,$h.DiagAPI.instance())}active(){return this._getContextManager().active()}with(A,Q,B,...I){return this._getContextManager().with(A,Q,B,...I)}bind(A,Q){return this._getContextManager().bind(A,Q)}_getContextManager(){return(0,$z.getGlobal)(Lz)||eSA}disable(){this._getContextManager().disable(),(0,$z.unregisterGlobal)(Lz,$h.DiagAPI.instance())}}Lh.ContextAPI=Hz});var Nz=U((Mh)=>{Object.defineProperty(Mh,"__esModule",{value:!0});Mh.TraceFlags=void 0;var AyA;(function(A){A[A.NONE=0]="NONE",A[A.SAMPLED=1]="SAMPLED"})(AyA=Mh.TraceFlags||(Mh.TraceFlags={}))});var QU=U((Nh)=>{Object.defineProperty(Nh,"__esModule",{value:!0});Nh.INVALID_SPAN_CONTEXT=Nh.INVALID_TRACEID=Nh.INVALID_SPANID=void 0;var QyA=Nz();Nh.INVALID_SPANID="0000000000000000";Nh.INVALID_TRACEID="00000000000000000000000000000000";Nh.INVALID_SPAN_CONTEXT={traceId:Nh.INVALID_TRACEID,spanId:Nh.INVALID_SPANID,traceFlags:QyA.TraceFlags.NONE}});var BU=U((Th)=>{Object.defineProperty(Th,"__esModule",{value:!0});Th.NonRecordingSpan=void 0;var ByA=QU();class Oh{constructor(A=ByA.INVALID_SPAN_CONTEXT){this._spanContext=A}spanContext(){return this._spanContext}setAttribute(A,Q){return this}setAttributes(A){return this}addEvent(A,Q){return this}addLink(A){return this}addLinks(A){return this}setStatus(A){return this}updateName(A){return this}end(A){}isRecording(){return!1}recordException(A,Q){}}Th.NonRecordingSpan=Oh});var qz=U((Sh)=>{Object.defineProperty(Sh,"__esModule",{value:!0});Sh.getSpanContext=Sh.setSpanContext=Sh.deleteSpan=Sh.setSpan=Sh.getActiveSpan=Sh.getSpan=void 0;var IyA=Z1(),CyA=BU(),EyA=X1(),jz=(0,IyA.createContextKey)("OpenTelemetry Context Key SPAN");function Rz(A){return A.getValue(jz)||void 0}Sh.getSpan=Rz;function YyA(){return Rz(EyA.ContextAPI.getInstance().active())}Sh.getActiveSpan=YyA;function kh(A,Q){return A.setValue(jz,Q)}Sh.setSpan=kh;function JyA(A){return A.deleteValue(jz)}Sh.deleteSpan=JyA;function FyA(A,Q){return kh(A,new CyA.NonRecordingSpan(Q))}Sh.setSpanContext=FyA;function GyA(A){var Q;return(Q=Rz(A))===null||Q===void 0?void 0:Q.spanContext()}Sh.getSpanContext=GyA});var CU=U((xh)=>{Object.defineProperty(xh,"__esModule",{value:!0});xh.wrapSpanContext=xh.isSpanContextValid=xh.isValidSpanId=xh.isValidTraceId=void 0;var _h=QU(),wyA=BU(),IU=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1]);function fh(A,Q){if(typeof A!=="string"||A.length!==Q)return!1;let B=0;for(let I=0;I{Object.defineProperty(dh,"__esModule",{value:!0});dh.NoopTracer=void 0;var HyA=X1(),bh=qz(),Oz=BU(),MyA=CU(),Tz=HyA.ContextAPI.getInstance();class mh{startSpan(A,Q,B=Tz.active()){if(Boolean(Q===null||Q===void 0?void 0:Q.root))return new Oz.NonRecordingSpan;let C=B&&(0,bh.getSpanContext)(B);if(NyA(C)&&(0,MyA.isSpanContextValid)(C))return new Oz.NonRecordingSpan(C);else return new Oz.NonRecordingSpan}startActiveSpan(A,Q,B,I){let C,E,Y;if(arguments.length<2)return;else if(arguments.length===2)Y=Q;else if(arguments.length===3)C=Q,Y=B;else C=Q,E=B,Y=I;let J=E!==null&&E!==void 0?E:Tz.active(),F=this.startSpan(A,C,J),G=(0,bh.setSpan)(J,F);return Tz.with(G,Y,void 0,F)}}dh.NoopTracer=mh;function NyA(A){return A!==null&&typeof A==="object"&&"spanId"in A&&typeof A.spanId==="string"&&"traceId"in A&&typeof A.traceId==="string"&&"traceFlags"in A&&typeof A.traceFlags==="number"}});var kz=U((lh)=>{Object.defineProperty(lh,"__esModule",{value:!0});lh.ProxyTracer=void 0;var jyA=Pz(),RyA=new jyA.NoopTracer;class uh{constructor(A,Q,B,I){this._provider=A,this.name=Q,this.version=B,this.options=I}startSpan(A,Q,B){return this._getTracer().startSpan(A,Q,B)}startActiveSpan(A,Q,B,I){let C=this._getTracer();return Reflect.apply(C.startActiveSpan,C,arguments)}_getTracer(){if(this._delegate)return this._delegate;let A=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!A)return RyA;return this._delegate=A,this._delegate}}lh.ProxyTracer=uh});var oh=U((nh)=>{Object.defineProperty(nh,"__esModule",{value:!0});nh.NoopTracerProvider=void 0;var qyA=Pz();class ih{getTracer(A,Q,B){return new qyA.NoopTracer}}nh.NoopTracerProvider=ih});var Sz=U((rh)=>{Object.defineProperty(rh,"__esModule",{value:!0});rh.ProxyTracerProvider=void 0;var OyA=kz(),TyA=oh(),PyA=new TyA.NoopTracerProvider;class sh{getTracer(A,Q,B){var I;return(I=this.getDelegateTracer(A,Q,B))!==null&&I!==void 0?I:new OyA.ProxyTracer(this,A,Q,B)}getDelegate(){var A;return(A=this._delegate)!==null&&A!==void 0?A:PyA}setDelegate(A){this._delegate=A}getDelegateTracer(A,Q,B){var I;return(I=this._delegate)===null||I===void 0?void 0:I.getTracer(A,Q,B)}}rh.ProxyTracerProvider=sh});var Ax=U((eh)=>{Object.defineProperty(eh,"__esModule",{value:!0});eh.SamplingDecision=void 0;var kyA;(function(A){A[A.NOT_RECORD=0]="NOT_RECORD",A[A.RECORD=1]="RECORD",A[A.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(kyA=eh.SamplingDecision||(eh.SamplingDecision={}))});var Bx=U((Qx)=>{Object.defineProperty(Qx,"__esModule",{value:!0});Qx.SpanKind=void 0;var SyA;(function(A){A[A.INTERNAL=0]="INTERNAL",A[A.SERVER=1]="SERVER",A[A.CLIENT=2]="CLIENT",A[A.PRODUCER=3]="PRODUCER",A[A.CONSUMER=4]="CONSUMER"})(SyA=Qx.SpanKind||(Qx.SpanKind={}))});var Cx=U((Ix)=>{Object.defineProperty(Ix,"__esModule",{value:!0});Ix.SpanStatusCode=void 0;var yyA;(function(A){A[A.UNSET=0]="UNSET",A[A.OK=1]="OK",A[A.ERROR=2]="ERROR"})(yyA=Ix.SpanStatusCode||(Ix.SpanStatusCode={}))});var Jx=U((Ex)=>{Object.defineProperty(Ex,"__esModule",{value:!0});Ex.validateValue=Ex.validateKey=void 0;var gz="[_0-9a-z-*/]",_yA=`[a-z]${gz}{0,255}`,fyA=`[a-z0-9]${gz}{0,240}@[a-z]${gz}{0,13}`,gyA=new RegExp(`^(?:${_yA}|${fyA})$`),hyA=/^[ -~]{0,255}[!-~]$/,xyA=/,|=/;function vyA(A){return gyA.test(A)}Ex.validateKey=vyA;function byA(A){return hyA.test(A)&&!xyA.test(A)}Ex.validateValue=byA});var Ux=U((Wx)=>{Object.defineProperty(Wx,"__esModule",{value:!0});Wx.TraceStateImpl=void 0;var Fx=Jx(),Gx=32,dyA=512,Dx=",",Zx="=";class hz{constructor(A){if(this._internalState=new Map,A)this._parse(A)}set(A,Q){let B=this._clone();if(B._internalState.has(A))B._internalState.delete(A);return B._internalState.set(A,Q),B}unset(A){let Q=this._clone();return Q._internalState.delete(A),Q}get(A){return this._internalState.get(A)}serialize(){return Array.from(this._internalState.keys()).reduceRight((A,Q)=>{return A.push(Q+Zx+this.get(Q)),A},[]).join(Dx)}_parse(A){if(A.length>dyA)return;if(this._internalState=A.split(Dx).reduceRight((Q,B)=>{let I=B.trim(),C=I.indexOf(Zx);if(C!==-1){let E=I.slice(0,C),Y=I.slice(C+1,B.length);if((0,Fx.validateKey)(E)&&(0,Fx.validateValue)(Y))Q.set(E,Y)}return Q},new Map),this._internalState.size>Gx)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,Gx))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let A=new hz;return A._internalState=new Map(this._internalState),A}}Wx.TraceStateImpl=hz});var zx=U((wx)=>{Object.defineProperty(wx,"__esModule",{value:!0});wx.createTraceState=void 0;var cyA=Ux();function uyA(A){return new cyA.TraceStateImpl(A)}wx.createTraceState=uyA});var Lx=U((Vx)=>{Object.defineProperty(Vx,"__esModule",{value:!0});Vx.context=void 0;var lyA=X1();Vx.context=lyA.ContextAPI.getInstance()});var Nx=U((Hx)=>{Object.defineProperty(Hx,"__esModule",{value:!0});Hx.diag=void 0;var pyA=XJ();Hx.diag=pyA.DiagAPI.instance()});var qx=U((jx)=>{Object.defineProperty(jx,"__esModule",{value:!0});jx.NOOP_METER_PROVIDER=jx.NoopMeterProvider=void 0;var iyA=Kz();class xz{getMeter(A,Q,B){return iyA.NOOP_METER}}jx.NoopMeterProvider=xz;jx.NOOP_METER_PROVIDER=new xz});var kx=U((Tx)=>{Object.defineProperty(Tx,"__esModule",{value:!0});Tx.MetricsAPI=void 0;var ayA=qx(),vz=WJ(),Ox=XJ(),bz="metrics";class mz{constructor(){}static getInstance(){if(!this._instance)this._instance=new mz;return this._instance}setGlobalMeterProvider(A){return(0,vz.registerGlobal)(bz,A,Ox.DiagAPI.instance())}getMeterProvider(){return(0,vz.getGlobal)(bz)||ayA.NOOP_METER_PROVIDER}getMeter(A,Q,B){return this.getMeterProvider().getMeter(A,Q,B)}disable(){(0,vz.unregisterGlobal)(bz,Ox.DiagAPI.instance())}}Tx.MetricsAPI=mz});var _x=U((Sx)=>{Object.defineProperty(Sx,"__esModule",{value:!0});Sx.metrics=void 0;var oyA=kx();Sx.metrics=oyA.MetricsAPI.getInstance()});var xx=U((gx)=>{Object.defineProperty(gx,"__esModule",{value:!0});gx.NoopTextMapPropagator=void 0;class fx{inject(A,Q){}extract(A,Q){return A}fields(){return[]}}gx.NoopTextMapPropagator=fx});var dx=U((bx)=>{Object.defineProperty(bx,"__esModule",{value:!0});bx.deleteBaggage=bx.setBaggage=bx.getActiveBaggage=bx.getBaggage=void 0;var syA=X1(),ryA=Z1(),dz=(0,ryA.createContextKey)("OpenTelemetry Baggage Key");function vx(A){return A.getValue(dz)||void 0}bx.getBaggage=vx;function tyA(){return vx(syA.ContextAPI.getInstance().active())}bx.getActiveBaggage=tyA;function eyA(A,Q){return A.setValue(dz,Q)}bx.setBaggage=eyA;function A_A(A){return A.deleteValue(dz)}bx.deleteBaggage=A_A});var ix=U((lx)=>{Object.defineProperty(lx,"__esModule",{value:!0});lx.PropagationAPI=void 0;var cz=WJ(),C_A=xx(),cx=Vz(),EU=dx(),E_A=Yz(),ux=XJ(),uz="propagation",Y_A=new C_A.NoopTextMapPropagator;class lz{constructor(){this.createBaggage=E_A.createBaggage,this.getBaggage=EU.getBaggage,this.getActiveBaggage=EU.getActiveBaggage,this.setBaggage=EU.setBaggage,this.deleteBaggage=EU.deleteBaggage}static getInstance(){if(!this._instance)this._instance=new lz;return this._instance}setGlobalPropagator(A){return(0,cz.registerGlobal)(uz,A,ux.DiagAPI.instance())}inject(A,Q,B=cx.defaultTextMapSetter){return this._getGlobalPropagator().inject(A,Q,B)}extract(A,Q,B=cx.defaultTextMapGetter){return this._getGlobalPropagator().extract(A,Q,B)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,cz.unregisterGlobal)(uz,ux.DiagAPI.instance())}_getGlobalPropagator(){return(0,cz.getGlobal)(uz)||Y_A}}lx.PropagationAPI=lz});var ox=U((nx)=>{Object.defineProperty(nx,"__esModule",{value:!0});nx.propagation=void 0;var J_A=ix();nx.propagation=J_A.PropagationAPI.getInstance()});var Qv=U((ex)=>{Object.defineProperty(ex,"__esModule",{value:!0});ex.TraceAPI=void 0;var pz=WJ(),sx=Sz(),rx=CU(),MG=qz(),tx=XJ(),iz="trace";class nz{constructor(){this._proxyTracerProvider=new sx.ProxyTracerProvider,this.wrapSpanContext=rx.wrapSpanContext,this.isSpanContextValid=rx.isSpanContextValid,this.deleteSpan=MG.deleteSpan,this.getSpan=MG.getSpan,this.getActiveSpan=MG.getActiveSpan,this.getSpanContext=MG.getSpanContext,this.setSpan=MG.setSpan,this.setSpanContext=MG.setSpanContext}static getInstance(){if(!this._instance)this._instance=new nz;return this._instance}setGlobalTracerProvider(A){let Q=(0,pz.registerGlobal)(iz,this._proxyTracerProvider,tx.DiagAPI.instance());if(Q)this._proxyTracerProvider.setDelegate(A);return Q}getTracerProvider(){return(0,pz.getGlobal)(iz)||this._proxyTracerProvider}getTracer(A,Q){return this.getTracerProvider().getTracer(A,Q)}disable(){(0,pz.unregisterGlobal)(iz,tx.DiagAPI.instance()),this._proxyTracerProvider=new sx.ProxyTracerProvider}}ex.TraceAPI=nz});var Cv=U((Bv)=>{Object.defineProperty(Bv,"__esModule",{value:!0});Bv.trace=void 0;var F_A=Qv();Bv.trace=F_A.TraceAPI.getInstance()});var P=U((gA)=>{Object.defineProperty(gA,"__esModule",{value:!0});gA.trace=gA.propagation=gA.metrics=gA.diag=gA.context=gA.INVALID_SPAN_CONTEXT=gA.INVALID_TRACEID=gA.INVALID_SPANID=gA.isValidSpanId=gA.isValidTraceId=gA.isSpanContextValid=gA.createTraceState=gA.TraceFlags=gA.SpanStatusCode=gA.SpanKind=gA.SamplingDecision=gA.ProxyTracerProvider=gA.ProxyTracer=gA.defaultTextMapSetter=gA.defaultTextMapGetter=gA.ValueType=gA.createNoopMeter=gA.DiagLogLevel=gA.DiagConsoleLogger=gA.ROOT_CONTEXT=gA.createContextKey=gA.baggageEntryMetadataFromString=void 0;var G_A=Yz();Object.defineProperty(gA,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return G_A.baggageEntryMetadataFromString}});var Ev=Z1();Object.defineProperty(gA,"createContextKey",{enumerable:!0,get:function(){return Ev.createContextKey}});Object.defineProperty(gA,"ROOT_CONTEXT",{enumerable:!0,get:function(){return Ev.ROOT_CONTEXT}});var D_A=Ah();Object.defineProperty(gA,"DiagConsoleLogger",{enumerable:!0,get:function(){return D_A.DiagConsoleLogger}});var Z_A=rX();Object.defineProperty(gA,"DiagLogLevel",{enumerable:!0,get:function(){return Z_A.DiagLogLevel}});var W_A=Kz();Object.defineProperty(gA,"createNoopMeter",{enumerable:!0,get:function(){return W_A.createNoopMeter}});var X_A=Wh();Object.defineProperty(gA,"ValueType",{enumerable:!0,get:function(){return X_A.ValueType}});var Yv=Vz();Object.defineProperty(gA,"defaultTextMapGetter",{enumerable:!0,get:function(){return Yv.defaultTextMapGetter}});Object.defineProperty(gA,"defaultTextMapSetter",{enumerable:!0,get:function(){return Yv.defaultTextMapSetter}});var U_A=kz();Object.defineProperty(gA,"ProxyTracer",{enumerable:!0,get:function(){return U_A.ProxyTracer}});var w_A=Sz();Object.defineProperty(gA,"ProxyTracerProvider",{enumerable:!0,get:function(){return w_A.ProxyTracerProvider}});var K_A=Ax();Object.defineProperty(gA,"SamplingDecision",{enumerable:!0,get:function(){return K_A.SamplingDecision}});var z_A=Bx();Object.defineProperty(gA,"SpanKind",{enumerable:!0,get:function(){return z_A.SpanKind}});var V_A=Cx();Object.defineProperty(gA,"SpanStatusCode",{enumerable:!0,get:function(){return V_A.SpanStatusCode}});var $_A=Nz();Object.defineProperty(gA,"TraceFlags",{enumerable:!0,get:function(){return $_A.TraceFlags}});var L_A=zx();Object.defineProperty(gA,"createTraceState",{enumerable:!0,get:function(){return L_A.createTraceState}});var az=CU();Object.defineProperty(gA,"isSpanContextValid",{enumerable:!0,get:function(){return az.isSpanContextValid}});Object.defineProperty(gA,"isValidTraceId",{enumerable:!0,get:function(){return az.isValidTraceId}});Object.defineProperty(gA,"isValidSpanId",{enumerable:!0,get:function(){return az.isValidSpanId}});var oz=QU();Object.defineProperty(gA,"INVALID_SPANID",{enumerable:!0,get:function(){return oz.INVALID_SPANID}});Object.defineProperty(gA,"INVALID_TRACEID",{enumerable:!0,get:function(){return oz.INVALID_TRACEID}});Object.defineProperty(gA,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return oz.INVALID_SPAN_CONTEXT}});var Jv=Lx();Object.defineProperty(gA,"context",{enumerable:!0,get:function(){return Jv.context}});var Fv=Nx();Object.defineProperty(gA,"diag",{enumerable:!0,get:function(){return Fv.diag}});var Gv=_x();Object.defineProperty(gA,"metrics",{enumerable:!0,get:function(){return Gv.metrics}});var Dv=ox();Object.defineProperty(gA,"propagation",{enumerable:!0,get:function(){return Dv.propagation}});var Zv=Cv();Object.defineProperty(gA,"trace",{enumerable:!0,get:function(){return Zv.trace}});gA.default={context:Jv.context,diag:Fv.diag,metrics:Gv.metrics,propagation:Dv.propagation,trace:Zv.trace}});var U1=U((Wv)=>{Object.defineProperty(Wv,"__esModule",{value:!0});Wv.isTracingSuppressed=Wv.unsuppressTracing=Wv.suppressTracing=void 0;var N_A=P(),sz=(0,N_A.createContextKey)("OpenTelemetry SDK Context Key SUPPRESS_TRACING");function j_A(A){return A.setValue(sz,!0)}Wv.suppressTracing=j_A;function R_A(A){return A.deleteValue(sz)}Wv.unsuppressTracing=R_A;function q_A(A){return A.getValue(sz)===!0}Wv.isTracingSuppressed=q_A});var rz=U((Uv)=>{Object.defineProperty(Uv,"__esModule",{value:!0});Uv.BAGGAGE_MAX_TOTAL_LENGTH=Uv.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=Uv.BAGGAGE_MAX_NAME_VALUE_PAIRS=Uv.BAGGAGE_HEADER=Uv.BAGGAGE_ITEMS_SEPARATOR=Uv.BAGGAGE_PROPERTIES_SEPARATOR=Uv.BAGGAGE_KEY_PAIR_SEPARATOR=void 0;Uv.BAGGAGE_KEY_PAIR_SEPARATOR="=";Uv.BAGGAGE_PROPERTIES_SEPARATOR=";";Uv.BAGGAGE_ITEMS_SEPARATOR=",";Uv.BAGGAGE_HEADER="baggage";Uv.BAGGAGE_MAX_NAME_VALUE_PAIRS=180;Uv.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=4096;Uv.BAGGAGE_MAX_TOTAL_LENGTH=8192});var tz=U((zv)=>{Object.defineProperty(zv,"__esModule",{value:!0});zv.parseKeyPairsIntoRecord=zv.parsePairKeyValue=zv.getKeyPairs=zv.serializeKeyPairs=void 0;var g_A=P(),NG=rz();function h_A(A){return A.reduce((Q,B)=>{let I=`${Q}${Q!==""?NG.BAGGAGE_ITEMS_SEPARATOR:""}${B}`;return I.length>NG.BAGGAGE_MAX_TOTAL_LENGTH?Q:I},"")}zv.serializeKeyPairs=h_A;function x_A(A){return A.getAllEntries().map(([Q,B])=>{let I=`${encodeURIComponent(Q)}=${encodeURIComponent(B.value)}`;if(B.metadata!==void 0)I+=NG.BAGGAGE_PROPERTIES_SEPARATOR+B.metadata.toString();return I})}zv.getKeyPairs=x_A;function Kv(A){if(!A)return;let Q=A.indexOf(NG.BAGGAGE_PROPERTIES_SEPARATOR),B=Q===-1?A:A.substring(0,Q),I=B.indexOf(NG.BAGGAGE_KEY_PAIR_SEPARATOR);if(I<=0)return;let C=B.substring(0,I).trim(),E=B.substring(I+1).trim();if(!C||!E)return;let Y,J;try{Y=decodeURIComponent(C),J=decodeURIComponent(E)}catch{return}let F;if(Q!==-1&&Q0)A.split(NG.BAGGAGE_ITEMS_SEPARATOR).forEach((B)=>{let I=Kv(B);if(I!==void 0&&I.value.length>0)Q[I.key]=I.value});return Q}zv.parseKeyPairsIntoRecord=v_A});var Mv=U((Lv)=>{Object.defineProperty(Lv,"__esModule",{value:!0});Lv.W3CBaggagePropagator=void 0;var ez=P(),c_A=U1(),UJ=rz(),AV=tz();class $v{inject(A,Q,B){let I=ez.propagation.getBaggage(A);if(!I||(0,c_A.isTracingSuppressed)(A))return;let C=(0,AV.getKeyPairs)(I).filter((Y)=>{return Y.length<=UJ.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS}).slice(0,UJ.BAGGAGE_MAX_NAME_VALUE_PAIRS),E=(0,AV.serializeKeyPairs)(C);if(E.length>0)B.set(Q,UJ.BAGGAGE_HEADER,E)}extract(A,Q,B){let I=B.get(Q,UJ.BAGGAGE_HEADER),C=Array.isArray(I)?I.join(UJ.BAGGAGE_ITEMS_SEPARATOR):I;if(!C)return A;let E={};if(C.length===0)return A;if(C.split(UJ.BAGGAGE_ITEMS_SEPARATOR).forEach((J)=>{let F=(0,AV.parsePairKeyValue)(J);if(F){let G={value:F.value};if(F.metadata)G.metadata=F.metadata;E[F.key]=G}}),Object.entries(E).length===0)return A;return ez.propagation.setBaggage(A,ez.propagation.createBaggage(E))}fields(){return[UJ.BAGGAGE_HEADER]}}Lv.W3CBaggagePropagator=$v});var qv=U((jv)=>{Object.defineProperty(jv,"__esModule",{value:!0});jv.AnchoredClock=void 0;class Nv{_monotonicClock;_epochMillis;_performanceMillis;constructor(A,Q){this._monotonicClock=Q,this._epochMillis=A.now(),this._performanceMillis=Q.now()}now(){let A=this._monotonicClock.now()-this._performanceMillis;return this._epochMillis+A}}jv.AnchoredClock=Nv});var _v=U((Sv)=>{Object.defineProperty(Sv,"__esModule",{value:!0});Sv.isAttributeValue=Sv.isAttributeKey=Sv.sanitizeAttributes=void 0;var Ov=P();function u_A(A){let Q={};if(typeof A!=="object"||A==null)return Q;for(let B in A){if(!Object.prototype.hasOwnProperty.call(A,B))continue;if(!Tv(B)){Ov.diag.warn(`Invalid attribute key: ${B}`);continue}let I=A[B];if(!Pv(I)){Ov.diag.warn(`Invalid attribute value set for key: ${B}`);continue}if(Array.isArray(I))Q[B]=I.slice();else Q[B]=I}return Q}Sv.sanitizeAttributes=u_A;function Tv(A){return typeof A==="string"&&A!==""}Sv.isAttributeKey=Tv;function Pv(A){if(A==null)return!0;if(Array.isArray(A))return l_A(A);return kv(typeof A)}Sv.isAttributeValue=Pv;function l_A(A){let Q;for(let B of A){if(B==null)continue;let I=typeof B;if(I===Q)continue;if(!Q){if(kv(I)){Q=I;continue}return!1}return!1}return!0}function kv(A){switch(A){case"number":case"boolean":case"string":return!0}return!1}});var QV=U((fv)=>{Object.defineProperty(fv,"__esModule",{value:!0});fv.loggingErrorHandler=void 0;var n_A=P();function a_A(){return(A)=>{n_A.diag.error(o_A(A))}}fv.loggingErrorHandler=a_A;function o_A(A){if(typeof A==="string")return A;else return JSON.stringify(s_A(A))}function s_A(A){let Q={},B=A;while(B!==null)Object.getOwnPropertyNames(B).forEach((I)=>{if(Q[I])return;let C=B[I];if(C)Q[I]=String(C)}),B=Object.getPrototypeOf(B);return Q}});var bv=U((xv)=>{Object.defineProperty(xv,"__esModule",{value:!0});xv.globalErrorHandler=xv.setGlobalErrorHandler=void 0;var r_A=QV(),hv=(0,r_A.loggingErrorHandler)();function t_A(A){hv=A}xv.setGlobalErrorHandler=t_A;function e_A(A){try{hv(A)}catch{}}xv.globalErrorHandler=e_A});var pv=U((uv)=>{Object.defineProperty(uv,"__esModule",{value:!0});uv.getStringListFromEnv=uv.getBooleanFromEnv=uv.getStringFromEnv=uv.getNumberFromEnv=void 0;var mv=P(),dv=M("util");function QfA(A){let Q=process.env[A];if(Q==null||Q.trim()==="")return;let B=Number(Q);if(isNaN(B)){mv.diag.warn(`Unknown value ${(0,dv.inspect)(Q)} for ${A}, expected a number, using defaults`);return}return B}uv.getNumberFromEnv=QfA;function cv(A){let Q=process.env[A];if(Q==null||Q.trim()==="")return;return Q}uv.getStringFromEnv=cv;function BfA(A){let Q=process.env[A]?.trim().toLowerCase();if(Q==null||Q==="")return!1;if(Q==="true")return!0;else if(Q==="false")return!1;else return mv.diag.warn(`Unknown value ${(0,dv.inspect)(Q)} for ${A}, expected 'true' or 'false', falling back to 'false' (default)`),!1}uv.getBooleanFromEnv=BfA;function IfA(A){return cv(A)?.split(",").map((Q)=>Q.trim()).filter((Q)=>Q!=="")}uv.getStringListFromEnv=IfA});var av=U((iv)=>{Object.defineProperty(iv,"__esModule",{value:!0});iv._globalThis=void 0;iv._globalThis=globalThis});var rv=U((ov)=>{Object.defineProperty(ov,"__esModule",{value:!0});ov.VERSION=void 0;ov.VERSION="2.6.0"});var BV=U((tv)=>{Object.defineProperty(tv,"__esModule",{value:!0});tv.createConstMap=void 0;function JfA(A){let Q={},B=A.length;for(let I=0;I{Object.defineProperty(uu,"__esModule",{value:!0});uu.SEMATTRS_NET_HOST_CARRIER_ICC=uu.SEMATTRS_NET_HOST_CARRIER_MNC=uu.SEMATTRS_NET_HOST_CARRIER_MCC=uu.SEMATTRS_NET_HOST_CARRIER_NAME=uu.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE=uu.SEMATTRS_NET_HOST_CONNECTION_TYPE=uu.SEMATTRS_NET_HOST_NAME=uu.SEMATTRS_NET_HOST_PORT=uu.SEMATTRS_NET_HOST_IP=uu.SEMATTRS_NET_PEER_NAME=uu.SEMATTRS_NET_PEER_PORT=uu.SEMATTRS_NET_PEER_IP=uu.SEMATTRS_NET_TRANSPORT=uu.SEMATTRS_FAAS_INVOKED_REGION=uu.SEMATTRS_FAAS_INVOKED_PROVIDER=uu.SEMATTRS_FAAS_INVOKED_NAME=uu.SEMATTRS_FAAS_COLDSTART=uu.SEMATTRS_FAAS_CRON=uu.SEMATTRS_FAAS_TIME=uu.SEMATTRS_FAAS_DOCUMENT_NAME=uu.SEMATTRS_FAAS_DOCUMENT_TIME=uu.SEMATTRS_FAAS_DOCUMENT_OPERATION=uu.SEMATTRS_FAAS_DOCUMENT_COLLECTION=uu.SEMATTRS_FAAS_EXECUTION=uu.SEMATTRS_FAAS_TRIGGER=uu.SEMATTRS_EXCEPTION_ESCAPED=uu.SEMATTRS_EXCEPTION_STACKTRACE=uu.SEMATTRS_EXCEPTION_MESSAGE=uu.SEMATTRS_EXCEPTION_TYPE=uu.SEMATTRS_DB_SQL_TABLE=uu.SEMATTRS_DB_MONGODB_COLLECTION=uu.SEMATTRS_DB_REDIS_DATABASE_INDEX=uu.SEMATTRS_DB_HBASE_NAMESPACE=uu.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC=uu.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID=uu.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT=uu.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE=uu.SEMATTRS_DB_CASSANDRA_TABLE=uu.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL=uu.SEMATTRS_DB_CASSANDRA_PAGE_SIZE=uu.SEMATTRS_DB_CASSANDRA_KEYSPACE=uu.SEMATTRS_DB_MSSQL_INSTANCE_NAME=uu.SEMATTRS_DB_OPERATION=uu.SEMATTRS_DB_STATEMENT=uu.SEMATTRS_DB_NAME=uu.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME=uu.SEMATTRS_DB_USER=uu.SEMATTRS_DB_CONNECTION_STRING=uu.SEMATTRS_DB_SYSTEM=uu.SEMATTRS_AWS_LAMBDA_INVOKED_ARN=void 0;uu.SEMATTRS_MESSAGING_DESTINATION_KIND=uu.SEMATTRS_MESSAGING_DESTINATION=uu.SEMATTRS_MESSAGING_SYSTEM=uu.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES=uu.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS=uu.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT=uu.SEMATTRS_AWS_DYNAMODB_COUNT=uu.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS=uu.SEMATTRS_AWS_DYNAMODB_SEGMENT=uu.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD=uu.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT=uu.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE=uu.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES=uu.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES=uu.SEMATTRS_AWS_DYNAMODB_SELECT=uu.SEMATTRS_AWS_DYNAMODB_INDEX_NAME=uu.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET=uu.SEMATTRS_AWS_DYNAMODB_LIMIT=uu.SEMATTRS_AWS_DYNAMODB_PROJECTION=uu.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ=uu.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY=uu.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY=uu.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS=uu.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY=uu.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES=uu.SEMATTRS_HTTP_CLIENT_IP=uu.SEMATTRS_HTTP_ROUTE=uu.SEMATTRS_HTTP_SERVER_NAME=uu.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED=uu.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH=uu.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED=uu.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH=uu.SEMATTRS_HTTP_USER_AGENT=uu.SEMATTRS_HTTP_FLAVOR=uu.SEMATTRS_HTTP_STATUS_CODE=uu.SEMATTRS_HTTP_SCHEME=uu.SEMATTRS_HTTP_HOST=uu.SEMATTRS_HTTP_TARGET=uu.SEMATTRS_HTTP_URL=uu.SEMATTRS_HTTP_METHOD=uu.SEMATTRS_CODE_LINENO=uu.SEMATTRS_CODE_FILEPATH=uu.SEMATTRS_CODE_NAMESPACE=uu.SEMATTRS_CODE_FUNCTION=uu.SEMATTRS_THREAD_NAME=uu.SEMATTRS_THREAD_ID=uu.SEMATTRS_ENDUSER_SCOPE=uu.SEMATTRS_ENDUSER_ROLE=uu.SEMATTRS_ENDUSER_ID=uu.SEMATTRS_PEER_SERVICE=void 0;uu.DBSYSTEMVALUES_FILEMAKER=uu.DBSYSTEMVALUES_DERBY=uu.DBSYSTEMVALUES_FIREBIRD=uu.DBSYSTEMVALUES_ADABAS=uu.DBSYSTEMVALUES_CACHE=uu.DBSYSTEMVALUES_EDB=uu.DBSYSTEMVALUES_FIRSTSQL=uu.DBSYSTEMVALUES_INGRES=uu.DBSYSTEMVALUES_HANADB=uu.DBSYSTEMVALUES_MAXDB=uu.DBSYSTEMVALUES_PROGRESS=uu.DBSYSTEMVALUES_HSQLDB=uu.DBSYSTEMVALUES_CLOUDSCAPE=uu.DBSYSTEMVALUES_HIVE=uu.DBSYSTEMVALUES_REDSHIFT=uu.DBSYSTEMVALUES_POSTGRESQL=uu.DBSYSTEMVALUES_DB2=uu.DBSYSTEMVALUES_ORACLE=uu.DBSYSTEMVALUES_MYSQL=uu.DBSYSTEMVALUES_MSSQL=uu.DBSYSTEMVALUES_OTHER_SQL=uu.SemanticAttributes=uu.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE=uu.SEMATTRS_MESSAGE_COMPRESSED_SIZE=uu.SEMATTRS_MESSAGE_ID=uu.SEMATTRS_MESSAGE_TYPE=uu.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE=uu.SEMATTRS_RPC_JSONRPC_ERROR_CODE=uu.SEMATTRS_RPC_JSONRPC_REQUEST_ID=uu.SEMATTRS_RPC_JSONRPC_VERSION=uu.SEMATTRS_RPC_GRPC_STATUS_CODE=uu.SEMATTRS_RPC_METHOD=uu.SEMATTRS_RPC_SERVICE=uu.SEMATTRS_RPC_SYSTEM=uu.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE=uu.SEMATTRS_MESSAGING_KAFKA_PARTITION=uu.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID=uu.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP=uu.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY=uu.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY=uu.SEMATTRS_MESSAGING_CONSUMER_ID=uu.SEMATTRS_MESSAGING_OPERATION=uu.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES=uu.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES=uu.SEMATTRS_MESSAGING_CONVERSATION_ID=uu.SEMATTRS_MESSAGING_MESSAGE_ID=uu.SEMATTRS_MESSAGING_URL=uu.SEMATTRS_MESSAGING_PROTOCOL_VERSION=uu.SEMATTRS_MESSAGING_PROTOCOL=uu.SEMATTRS_MESSAGING_TEMP_DESTINATION=void 0;uu.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD=uu.FaasDocumentOperationValues=uu.FAASDOCUMENTOPERATIONVALUES_DELETE=uu.FAASDOCUMENTOPERATIONVALUES_EDIT=uu.FAASDOCUMENTOPERATIONVALUES_INSERT=uu.FaasTriggerValues=uu.FAASTRIGGERVALUES_OTHER=uu.FAASTRIGGERVALUES_TIMER=uu.FAASTRIGGERVALUES_PUBSUB=uu.FAASTRIGGERVALUES_HTTP=uu.FAASTRIGGERVALUES_DATASOURCE=uu.DbCassandraConsistencyLevelValues=uu.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL=uu.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL=uu.DBCASSANDRACONSISTENCYLEVELVALUES_ANY=uu.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE=uu.DBCASSANDRACONSISTENCYLEVELVALUES_THREE=uu.DBCASSANDRACONSISTENCYLEVELVALUES_TWO=uu.DBCASSANDRACONSISTENCYLEVELVALUES_ONE=uu.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM=uu.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM=uu.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM=uu.DBCASSANDRACONSISTENCYLEVELVALUES_ALL=uu.DbSystemValues=uu.DBSYSTEMVALUES_COCKROACHDB=uu.DBSYSTEMVALUES_MEMCACHED=uu.DBSYSTEMVALUES_ELASTICSEARCH=uu.DBSYSTEMVALUES_GEODE=uu.DBSYSTEMVALUES_NEO4J=uu.DBSYSTEMVALUES_DYNAMODB=uu.DBSYSTEMVALUES_COSMOSDB=uu.DBSYSTEMVALUES_COUCHDB=uu.DBSYSTEMVALUES_COUCHBASE=uu.DBSYSTEMVALUES_REDIS=uu.DBSYSTEMVALUES_MONGODB=uu.DBSYSTEMVALUES_HBASE=uu.DBSYSTEMVALUES_CASSANDRA=uu.DBSYSTEMVALUES_COLDFUSION=uu.DBSYSTEMVALUES_H2=uu.DBSYSTEMVALUES_VERTICA=uu.DBSYSTEMVALUES_TERADATA=uu.DBSYSTEMVALUES_SYBASE=uu.DBSYSTEMVALUES_SQLITE=uu.DBSYSTEMVALUES_POINTBASE=uu.DBSYSTEMVALUES_PERVASIVE=uu.DBSYSTEMVALUES_NETEZZA=uu.DBSYSTEMVALUES_MARIADB=uu.DBSYSTEMVALUES_INTERBASE=uu.DBSYSTEMVALUES_INSTANTDB=uu.DBSYSTEMVALUES_INFORMIX=void 0;uu.MESSAGINGOPERATIONVALUES_RECEIVE=uu.MessagingDestinationKindValues=uu.MESSAGINGDESTINATIONKINDVALUES_TOPIC=uu.MESSAGINGDESTINATIONKINDVALUES_QUEUE=uu.HttpFlavorValues=uu.HTTPFLAVORVALUES_QUIC=uu.HTTPFLAVORVALUES_SPDY=uu.HTTPFLAVORVALUES_HTTP_2_0=uu.HTTPFLAVORVALUES_HTTP_1_1=uu.HTTPFLAVORVALUES_HTTP_1_0=uu.NetHostConnectionSubtypeValues=uu.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA=uu.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA=uu.NETHOSTCONNECTIONSUBTYPEVALUES_NR=uu.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN=uu.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA=uu.NETHOSTCONNECTIONSUBTYPEVALUES_GSM=uu.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP=uu.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD=uu.NETHOSTCONNECTIONSUBTYPEVALUES_LTE=uu.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B=uu.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN=uu.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA=uu.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA=uu.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA=uu.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT=uu.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A=uu.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0=uu.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA=uu.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS=uu.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE=uu.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS=uu.NetHostConnectionTypeValues=uu.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN=uu.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE=uu.NETHOSTCONNECTIONTYPEVALUES_CELL=uu.NETHOSTCONNECTIONTYPEVALUES_WIRED=uu.NETHOSTCONNECTIONTYPEVALUES_WIFI=uu.NetTransportValues=uu.NETTRANSPORTVALUES_OTHER=uu.NETTRANSPORTVALUES_INPROC=uu.NETTRANSPORTVALUES_PIPE=uu.NETTRANSPORTVALUES_UNIX=uu.NETTRANSPORTVALUES_IP=uu.NETTRANSPORTVALUES_IP_UDP=uu.NETTRANSPORTVALUES_IP_TCP=uu.FaasInvokedProviderValues=uu.FAASINVOKEDPROVIDERVALUES_GCP=uu.FAASINVOKEDPROVIDERVALUES_AZURE=uu.FAASINVOKEDPROVIDERVALUES_AWS=void 0;uu.MessageTypeValues=uu.MESSAGETYPEVALUES_RECEIVED=uu.MESSAGETYPEVALUES_SENT=uu.RpcGrpcStatusCodeValues=uu.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED=uu.RPCGRPCSTATUSCODEVALUES_DATA_LOSS=uu.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE=uu.RPCGRPCSTATUSCODEVALUES_INTERNAL=uu.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED=uu.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE=uu.RPCGRPCSTATUSCODEVALUES_ABORTED=uu.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION=uu.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED=uu.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED=uu.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS=uu.RPCGRPCSTATUSCODEVALUES_NOT_FOUND=uu.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED=uu.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT=uu.RPCGRPCSTATUSCODEVALUES_UNKNOWN=uu.RPCGRPCSTATUSCODEVALUES_CANCELLED=uu.RPCGRPCSTATUSCODEVALUES_OK=uu.MessagingOperationValues=uu.MESSAGINGOPERATIONVALUES_PROCESS=void 0;var vI=BV(),Ab="aws.lambda.invoked_arn",Qb="db.system",Bb="db.connection_string",Ib="db.user",Cb="db.jdbc.driver_classname",Eb="db.name",Yb="db.statement",Jb="db.operation",Fb="db.mssql.instance_name",Gb="db.cassandra.keyspace",Db="db.cassandra.page_size",Zb="db.cassandra.consistency_level",Wb="db.cassandra.table",Xb="db.cassandra.idempotence",Ub="db.cassandra.speculative_execution_count",wb="db.cassandra.coordinator.id",Kb="db.cassandra.coordinator.dc",zb="db.hbase.namespace",Vb="db.redis.database_index",$b="db.mongodb.collection",Lb="db.sql.table",Hb="exception.type",Mb="exception.message",Nb="exception.stacktrace",jb="exception.escaped",Rb="faas.trigger",qb="faas.execution",Ob="faas.document.collection",Tb="faas.document.operation",Pb="faas.document.time",kb="faas.document.name",Sb="faas.time",yb="faas.cron",_b="faas.coldstart",fb="faas.invoked_name",gb="faas.invoked_provider",hb="faas.invoked_region",xb="net.transport",vb="net.peer.ip",bb="net.peer.port",mb="net.peer.name",db="net.host.ip",cb="net.host.port",ub="net.host.name",lb="net.host.connection.type",pb="net.host.connection.subtype",ib="net.host.carrier.name",nb="net.host.carrier.mcc",ab="net.host.carrier.mnc",ob="net.host.carrier.icc",sb="peer.service",rb="enduser.id",tb="enduser.role",eb="enduser.scope",Am="thread.id",Qm="thread.name",Bm="code.function",Im="code.namespace",Cm="code.filepath",Em="code.lineno",Ym="http.method",Jm="http.url",Fm="http.target",Gm="http.host",Dm="http.scheme",Zm="http.status_code",Wm="http.flavor",Xm="http.user_agent",Um="http.request_content_length",wm="http.request_content_length_uncompressed",Km="http.response_content_length",zm="http.response_content_length_uncompressed",Vm="http.server_name",$m="http.route",Lm="http.client_ip",Hm="aws.dynamodb.table_names",Mm="aws.dynamodb.consumed_capacity",Nm="aws.dynamodb.item_collection_metrics",jm="aws.dynamodb.provisioned_read_capacity",Rm="aws.dynamodb.provisioned_write_capacity",qm="aws.dynamodb.consistent_read",Om="aws.dynamodb.projection",Tm="aws.dynamodb.limit",Pm="aws.dynamodb.attributes_to_get",km="aws.dynamodb.index_name",Sm="aws.dynamodb.select",ym="aws.dynamodb.global_secondary_indexes",_m="aws.dynamodb.local_secondary_indexes",fm="aws.dynamodb.exclusive_start_table",gm="aws.dynamodb.table_count",hm="aws.dynamodb.scan_forward",xm="aws.dynamodb.segment",vm="aws.dynamodb.total_segments",bm="aws.dynamodb.count",mm="aws.dynamodb.scanned_count",dm="aws.dynamodb.attribute_definitions",cm="aws.dynamodb.global_secondary_index_updates",um="messaging.system",lm="messaging.destination",pm="messaging.destination_kind",im="messaging.temp_destination",nm="messaging.protocol",am="messaging.protocol_version",om="messaging.url",sm="messaging.message_id",rm="messaging.conversation_id",tm="messaging.message_payload_size_bytes",em="messaging.message_payload_compressed_size_bytes",Ad="messaging.operation",Qd="messaging.consumer_id",Bd="messaging.rabbitmq.routing_key",Id="messaging.kafka.message_key",Cd="messaging.kafka.consumer_group",Ed="messaging.kafka.client_id",Yd="messaging.kafka.partition",Jd="messaging.kafka.tombstone",Fd="rpc.system",Gd="rpc.service",Dd="rpc.method",Zd="rpc.grpc.status_code",Wd="rpc.jsonrpc.version",Xd="rpc.jsonrpc.request_id",Ud="rpc.jsonrpc.error_code",wd="rpc.jsonrpc.error_message",Kd="message.type",zd="message.id",Vd="message.compressed_size",$d="message.uncompressed_size";uu.SEMATTRS_AWS_LAMBDA_INVOKED_ARN=Ab;uu.SEMATTRS_DB_SYSTEM=Qb;uu.SEMATTRS_DB_CONNECTION_STRING=Bb;uu.SEMATTRS_DB_USER=Ib;uu.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME=Cb;uu.SEMATTRS_DB_NAME=Eb;uu.SEMATTRS_DB_STATEMENT=Yb;uu.SEMATTRS_DB_OPERATION=Jb;uu.SEMATTRS_DB_MSSQL_INSTANCE_NAME=Fb;uu.SEMATTRS_DB_CASSANDRA_KEYSPACE=Gb;uu.SEMATTRS_DB_CASSANDRA_PAGE_SIZE=Db;uu.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL=Zb;uu.SEMATTRS_DB_CASSANDRA_TABLE=Wb;uu.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE=Xb;uu.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT=Ub;uu.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID=wb;uu.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC=Kb;uu.SEMATTRS_DB_HBASE_NAMESPACE=zb;uu.SEMATTRS_DB_REDIS_DATABASE_INDEX=Vb;uu.SEMATTRS_DB_MONGODB_COLLECTION=$b;uu.SEMATTRS_DB_SQL_TABLE=Lb;uu.SEMATTRS_EXCEPTION_TYPE=Hb;uu.SEMATTRS_EXCEPTION_MESSAGE=Mb;uu.SEMATTRS_EXCEPTION_STACKTRACE=Nb;uu.SEMATTRS_EXCEPTION_ESCAPED=jb;uu.SEMATTRS_FAAS_TRIGGER=Rb;uu.SEMATTRS_FAAS_EXECUTION=qb;uu.SEMATTRS_FAAS_DOCUMENT_COLLECTION=Ob;uu.SEMATTRS_FAAS_DOCUMENT_OPERATION=Tb;uu.SEMATTRS_FAAS_DOCUMENT_TIME=Pb;uu.SEMATTRS_FAAS_DOCUMENT_NAME=kb;uu.SEMATTRS_FAAS_TIME=Sb;uu.SEMATTRS_FAAS_CRON=yb;uu.SEMATTRS_FAAS_COLDSTART=_b;uu.SEMATTRS_FAAS_INVOKED_NAME=fb;uu.SEMATTRS_FAAS_INVOKED_PROVIDER=gb;uu.SEMATTRS_FAAS_INVOKED_REGION=hb;uu.SEMATTRS_NET_TRANSPORT=xb;uu.SEMATTRS_NET_PEER_IP=vb;uu.SEMATTRS_NET_PEER_PORT=bb;uu.SEMATTRS_NET_PEER_NAME=mb;uu.SEMATTRS_NET_HOST_IP=db;uu.SEMATTRS_NET_HOST_PORT=cb;uu.SEMATTRS_NET_HOST_NAME=ub;uu.SEMATTRS_NET_HOST_CONNECTION_TYPE=lb;uu.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE=pb;uu.SEMATTRS_NET_HOST_CARRIER_NAME=ib;uu.SEMATTRS_NET_HOST_CARRIER_MCC=nb;uu.SEMATTRS_NET_HOST_CARRIER_MNC=ab;uu.SEMATTRS_NET_HOST_CARRIER_ICC=ob;uu.SEMATTRS_PEER_SERVICE=sb;uu.SEMATTRS_ENDUSER_ID=rb;uu.SEMATTRS_ENDUSER_ROLE=tb;uu.SEMATTRS_ENDUSER_SCOPE=eb;uu.SEMATTRS_THREAD_ID=Am;uu.SEMATTRS_THREAD_NAME=Qm;uu.SEMATTRS_CODE_FUNCTION=Bm;uu.SEMATTRS_CODE_NAMESPACE=Im;uu.SEMATTRS_CODE_FILEPATH=Cm;uu.SEMATTRS_CODE_LINENO=Em;uu.SEMATTRS_HTTP_METHOD=Ym;uu.SEMATTRS_HTTP_URL=Jm;uu.SEMATTRS_HTTP_TARGET=Fm;uu.SEMATTRS_HTTP_HOST=Gm;uu.SEMATTRS_HTTP_SCHEME=Dm;uu.SEMATTRS_HTTP_STATUS_CODE=Zm;uu.SEMATTRS_HTTP_FLAVOR=Wm;uu.SEMATTRS_HTTP_USER_AGENT=Xm;uu.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH=Um;uu.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED=wm;uu.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH=Km;uu.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED=zm;uu.SEMATTRS_HTTP_SERVER_NAME=Vm;uu.SEMATTRS_HTTP_ROUTE=$m;uu.SEMATTRS_HTTP_CLIENT_IP=Lm;uu.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES=Hm;uu.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY=Mm;uu.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS=Nm;uu.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY=jm;uu.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY=Rm;uu.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ=qm;uu.SEMATTRS_AWS_DYNAMODB_PROJECTION=Om;uu.SEMATTRS_AWS_DYNAMODB_LIMIT=Tm;uu.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET=Pm;uu.SEMATTRS_AWS_DYNAMODB_INDEX_NAME=km;uu.SEMATTRS_AWS_DYNAMODB_SELECT=Sm;uu.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES=ym;uu.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES=_m;uu.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE=fm;uu.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT=gm;uu.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD=hm;uu.SEMATTRS_AWS_DYNAMODB_SEGMENT=xm;uu.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS=vm;uu.SEMATTRS_AWS_DYNAMODB_COUNT=bm;uu.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT=mm;uu.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS=dm;uu.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES=cm;uu.SEMATTRS_MESSAGING_SYSTEM=um;uu.SEMATTRS_MESSAGING_DESTINATION=lm;uu.SEMATTRS_MESSAGING_DESTINATION_KIND=pm;uu.SEMATTRS_MESSAGING_TEMP_DESTINATION=im;uu.SEMATTRS_MESSAGING_PROTOCOL=nm;uu.SEMATTRS_MESSAGING_PROTOCOL_VERSION=am;uu.SEMATTRS_MESSAGING_URL=om;uu.SEMATTRS_MESSAGING_MESSAGE_ID=sm;uu.SEMATTRS_MESSAGING_CONVERSATION_ID=rm;uu.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES=tm;uu.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES=em;uu.SEMATTRS_MESSAGING_OPERATION=Ad;uu.SEMATTRS_MESSAGING_CONSUMER_ID=Qd;uu.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY=Bd;uu.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY=Id;uu.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP=Cd;uu.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID=Ed;uu.SEMATTRS_MESSAGING_KAFKA_PARTITION=Yd;uu.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE=Jd;uu.SEMATTRS_RPC_SYSTEM=Fd;uu.SEMATTRS_RPC_SERVICE=Gd;uu.SEMATTRS_RPC_METHOD=Dd;uu.SEMATTRS_RPC_GRPC_STATUS_CODE=Zd;uu.SEMATTRS_RPC_JSONRPC_VERSION=Wd;uu.SEMATTRS_RPC_JSONRPC_REQUEST_ID=Xd;uu.SEMATTRS_RPC_JSONRPC_ERROR_CODE=Ud;uu.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE=wd;uu.SEMATTRS_MESSAGE_TYPE=Kd;uu.SEMATTRS_MESSAGE_ID=zd;uu.SEMATTRS_MESSAGE_COMPRESSED_SIZE=Vd;uu.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE=$d;uu.SemanticAttributes=(0,vI.createConstMap)([Ab,Qb,Bb,Ib,Cb,Eb,Yb,Jb,Fb,Gb,Db,Zb,Wb,Xb,Ub,wb,Kb,zb,Vb,$b,Lb,Hb,Mb,Nb,jb,Rb,qb,Ob,Tb,Pb,kb,Sb,yb,_b,fb,gb,hb,xb,vb,bb,mb,db,cb,ub,lb,pb,ib,nb,ab,ob,sb,rb,tb,eb,Am,Qm,Bm,Im,Cm,Em,Ym,Jm,Fm,Gm,Dm,Zm,Wm,Xm,Um,wm,Km,zm,Vm,$m,Lm,Hm,Mm,Nm,jm,Rm,qm,Om,Tm,Pm,km,Sm,ym,_m,fm,gm,hm,xm,vm,bm,mm,dm,cm,um,lm,pm,im,nm,am,om,sm,rm,tm,em,Ad,Qd,Bd,Id,Cd,Ed,Yd,Jd,Fd,Gd,Dd,Zd,Wd,Xd,Ud,wd,Kd,zd,Vd,$d]);var Ld="other_sql",Hd="mssql",Md="mysql",Nd="oracle",jd="db2",Rd="postgresql",qd="redshift",Od="hive",Td="cloudscape",Pd="hsqldb",kd="progress",Sd="maxdb",yd="hanadb",_d="ingres",fd="firstsql",gd="edb",hd="cache",xd="adabas",vd="firebird",bd="derby",md="filemaker",dd="informix",cd="instantdb",ud="interbase",ld="mariadb",pd="netezza",id="pervasive",nd="pointbase",ad="sqlite",od="sybase",sd="teradata",rd="vertica",td="h2",ed="coldfusion",Ac="cassandra",Qc="hbase",Bc="mongodb",Ic="redis",Cc="couchbase",Ec="couchdb",Yc="cosmosdb",Jc="dynamodb",Fc="neo4j",Gc="geode",Dc="elasticsearch",Zc="memcached",Wc="cockroachdb";uu.DBSYSTEMVALUES_OTHER_SQL=Ld;uu.DBSYSTEMVALUES_MSSQL=Hd;uu.DBSYSTEMVALUES_MYSQL=Md;uu.DBSYSTEMVALUES_ORACLE=Nd;uu.DBSYSTEMVALUES_DB2=jd;uu.DBSYSTEMVALUES_POSTGRESQL=Rd;uu.DBSYSTEMVALUES_REDSHIFT=qd;uu.DBSYSTEMVALUES_HIVE=Od;uu.DBSYSTEMVALUES_CLOUDSCAPE=Td;uu.DBSYSTEMVALUES_HSQLDB=Pd;uu.DBSYSTEMVALUES_PROGRESS=kd;uu.DBSYSTEMVALUES_MAXDB=Sd;uu.DBSYSTEMVALUES_HANADB=yd;uu.DBSYSTEMVALUES_INGRES=_d;uu.DBSYSTEMVALUES_FIRSTSQL=fd;uu.DBSYSTEMVALUES_EDB=gd;uu.DBSYSTEMVALUES_CACHE=hd;uu.DBSYSTEMVALUES_ADABAS=xd;uu.DBSYSTEMVALUES_FIREBIRD=vd;uu.DBSYSTEMVALUES_DERBY=bd;uu.DBSYSTEMVALUES_FILEMAKER=md;uu.DBSYSTEMVALUES_INFORMIX=dd;uu.DBSYSTEMVALUES_INSTANTDB=cd;uu.DBSYSTEMVALUES_INTERBASE=ud;uu.DBSYSTEMVALUES_MARIADB=ld;uu.DBSYSTEMVALUES_NETEZZA=pd;uu.DBSYSTEMVALUES_PERVASIVE=id;uu.DBSYSTEMVALUES_POINTBASE=nd;uu.DBSYSTEMVALUES_SQLITE=ad;uu.DBSYSTEMVALUES_SYBASE=od;uu.DBSYSTEMVALUES_TERADATA=sd;uu.DBSYSTEMVALUES_VERTICA=rd;uu.DBSYSTEMVALUES_H2=td;uu.DBSYSTEMVALUES_COLDFUSION=ed;uu.DBSYSTEMVALUES_CASSANDRA=Ac;uu.DBSYSTEMVALUES_HBASE=Qc;uu.DBSYSTEMVALUES_MONGODB=Bc;uu.DBSYSTEMVALUES_REDIS=Ic;uu.DBSYSTEMVALUES_COUCHBASE=Cc;uu.DBSYSTEMVALUES_COUCHDB=Ec;uu.DBSYSTEMVALUES_COSMOSDB=Yc;uu.DBSYSTEMVALUES_DYNAMODB=Jc;uu.DBSYSTEMVALUES_NEO4J=Fc;uu.DBSYSTEMVALUES_GEODE=Gc;uu.DBSYSTEMVALUES_ELASTICSEARCH=Dc;uu.DBSYSTEMVALUES_MEMCACHED=Zc;uu.DBSYSTEMVALUES_COCKROACHDB=Wc;uu.DbSystemValues=(0,vI.createConstMap)([Ld,Hd,Md,Nd,jd,Rd,qd,Od,Td,Pd,kd,Sd,yd,_d,fd,gd,hd,xd,vd,bd,md,dd,cd,ud,ld,pd,id,nd,ad,od,sd,rd,td,ed,Ac,Qc,Bc,Ic,Cc,Ec,Yc,Jc,Fc,Gc,Dc,Zc,Wc]);var Xc="all",Uc="each_quorum",wc="quorum",Kc="local_quorum",zc="one",Vc="two",$c="three",Lc="local_one",Hc="any",Mc="serial",Nc="local_serial";uu.DBCASSANDRACONSISTENCYLEVELVALUES_ALL=Xc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM=Uc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM=wc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM=Kc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_ONE=zc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_TWO=Vc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_THREE=$c;uu.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE=Lc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_ANY=Hc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL=Mc;uu.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL=Nc;uu.DbCassandraConsistencyLevelValues=(0,vI.createConstMap)([Xc,Uc,wc,Kc,zc,Vc,$c,Lc,Hc,Mc,Nc]);var jc="datasource",Rc="http",qc="pubsub",Oc="timer",Tc="other";uu.FAASTRIGGERVALUES_DATASOURCE=jc;uu.FAASTRIGGERVALUES_HTTP=Rc;uu.FAASTRIGGERVALUES_PUBSUB=qc;uu.FAASTRIGGERVALUES_TIMER=Oc;uu.FAASTRIGGERVALUES_OTHER=Tc;uu.FaasTriggerValues=(0,vI.createConstMap)([jc,Rc,qc,Oc,Tc]);var Pc="insert",kc="edit",Sc="delete";uu.FAASDOCUMENTOPERATIONVALUES_INSERT=Pc;uu.FAASDOCUMENTOPERATIONVALUES_EDIT=kc;uu.FAASDOCUMENTOPERATIONVALUES_DELETE=Sc;uu.FaasDocumentOperationValues=(0,vI.createConstMap)([Pc,kc,Sc]);var yc="alibaba_cloud",_c="aws",fc="azure",gc="gcp";uu.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD=yc;uu.FAASINVOKEDPROVIDERVALUES_AWS=_c;uu.FAASINVOKEDPROVIDERVALUES_AZURE=fc;uu.FAASINVOKEDPROVIDERVALUES_GCP=gc;uu.FaasInvokedProviderValues=(0,vI.createConstMap)([yc,_c,fc,gc]);var hc="ip_tcp",xc="ip_udp",vc="ip",bc="unix",mc="pipe",dc="inproc",cc="other";uu.NETTRANSPORTVALUES_IP_TCP=hc;uu.NETTRANSPORTVALUES_IP_UDP=xc;uu.NETTRANSPORTVALUES_IP=vc;uu.NETTRANSPORTVALUES_UNIX=bc;uu.NETTRANSPORTVALUES_PIPE=mc;uu.NETTRANSPORTVALUES_INPROC=dc;uu.NETTRANSPORTVALUES_OTHER=cc;uu.NetTransportValues=(0,vI.createConstMap)([hc,xc,vc,bc,mc,dc,cc]);var uc="wifi",lc="wired",pc="cell",ic="unavailable",nc="unknown";uu.NETHOSTCONNECTIONTYPEVALUES_WIFI=uc;uu.NETHOSTCONNECTIONTYPEVALUES_WIRED=lc;uu.NETHOSTCONNECTIONTYPEVALUES_CELL=pc;uu.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE=ic;uu.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN=nc;uu.NetHostConnectionTypeValues=(0,vI.createConstMap)([uc,lc,pc,ic,nc]);var ac="gprs",oc="edge",sc="umts",rc="cdma",tc="evdo_0",ec="evdo_a",Au="cdma2000_1xrtt",Qu="hsdpa",Bu="hsupa",Iu="hspa",Cu="iden",Eu="evdo_b",Yu="lte",Ju="ehrpd",Fu="hspap",Gu="gsm",Du="td_scdma",Zu="iwlan",Wu="nr",Xu="nrnsa",Uu="lte_ca";uu.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS=ac;uu.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE=oc;uu.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS=sc;uu.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA=rc;uu.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0=tc;uu.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A=ec;uu.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT=Au;uu.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA=Qu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA=Bu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA=Iu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN=Cu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B=Eu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_LTE=Yu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD=Ju;uu.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP=Fu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_GSM=Gu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA=Du;uu.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN=Zu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_NR=Wu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA=Xu;uu.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA=Uu;uu.NetHostConnectionSubtypeValues=(0,vI.createConstMap)([ac,oc,sc,rc,tc,ec,Au,Qu,Bu,Iu,Cu,Eu,Yu,Ju,Fu,Gu,Du,Zu,Wu,Xu,Uu]);var wu="1.0",Ku="1.1",zu="2.0",Vu="SPDY",$u="QUIC";uu.HTTPFLAVORVALUES_HTTP_1_0=wu;uu.HTTPFLAVORVALUES_HTTP_1_1=Ku;uu.HTTPFLAVORVALUES_HTTP_2_0=zu;uu.HTTPFLAVORVALUES_SPDY=Vu;uu.HTTPFLAVORVALUES_QUIC=$u;uu.HttpFlavorValues={HTTP_1_0:wu,HTTP_1_1:Ku,HTTP_2_0:zu,SPDY:Vu,QUIC:$u};var Lu="queue",Hu="topic";uu.MESSAGINGDESTINATIONKINDVALUES_QUEUE=Lu;uu.MESSAGINGDESTINATIONKINDVALUES_TOPIC=Hu;uu.MessagingDestinationKindValues=(0,vI.createConstMap)([Lu,Hu]);var Mu="receive",Nu="process";uu.MESSAGINGOPERATIONVALUES_RECEIVE=Mu;uu.MESSAGINGOPERATIONVALUES_PROCESS=Nu;uu.MessagingOperationValues=(0,vI.createConstMap)([Mu,Nu]);var ju=0,Ru=1,qu=2,Ou=3,Tu=4,Pu=5,ku=6,Su=7,yu=8,_u=9,fu=10,gu=11,hu=12,xu=13,vu=14,bu=15,mu=16;uu.RPCGRPCSTATUSCODEVALUES_OK=ju;uu.RPCGRPCSTATUSCODEVALUES_CANCELLED=Ru;uu.RPCGRPCSTATUSCODEVALUES_UNKNOWN=qu;uu.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT=Ou;uu.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED=Tu;uu.RPCGRPCSTATUSCODEVALUES_NOT_FOUND=Pu;uu.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS=ku;uu.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED=Su;uu.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED=yu;uu.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION=_u;uu.RPCGRPCSTATUSCODEVALUES_ABORTED=fu;uu.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE=gu;uu.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED=hu;uu.RPCGRPCSTATUSCODEVALUES_INTERNAL=xu;uu.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE=vu;uu.RPCGRPCSTATUSCODEVALUES_DATA_LOSS=bu;uu.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED=mu;uu.RpcGrpcStatusCodeValues={OK:ju,CANCELLED:Ru,UNKNOWN:qu,INVALID_ARGUMENT:Ou,DEADLINE_EXCEEDED:Tu,NOT_FOUND:Pu,ALREADY_EXISTS:ku,PERMISSION_DENIED:Su,RESOURCE_EXHAUSTED:yu,FAILED_PRECONDITION:_u,ABORTED:fu,OUT_OF_RANGE:gu,UNIMPLEMENTED:hu,INTERNAL:xu,UNAVAILABLE:vu,DATA_LOSS:bu,UNAUTHENTICATED:mu};var du="SENT",cu="RECEIVED";uu.MESSAGETYPEVALUES_SENT=du;uu.MESSAGETYPEVALUES_RECEIVED=cu;uu.MessageTypeValues=(0,vI.createConstMap)([du,cu])});var ru=U((wJ)=>{var EbA=wJ&&wJ.__createBinding||(Object.create?function(A,Q,B,I){if(I===void 0)I=B;var C=Object.getOwnPropertyDescriptor(Q,B);if(!C||("get"in C?!Q.__esModule:C.writable||C.configurable))C={enumerable:!0,get:function(){return Q[B]}};Object.defineProperty(A,I,C)}:function(A,Q,B,I){if(I===void 0)I=B;A[I]=Q[B]}),YbA=wJ&&wJ.__exportStar||function(A,Q){for(var B in A)if(B!=="default"&&!Object.prototype.hasOwnProperty.call(Q,B))EbA(Q,A,B)};Object.defineProperty(wJ,"__esModule",{value:!0});YbA(su(),wJ)});var qi=U((Mi)=>{Object.defineProperty(Mi,"__esModule",{value:!0});Mi.SEMRESATTRS_K8S_STATEFULSET_NAME=Mi.SEMRESATTRS_K8S_STATEFULSET_UID=Mi.SEMRESATTRS_K8S_DEPLOYMENT_NAME=Mi.SEMRESATTRS_K8S_DEPLOYMENT_UID=Mi.SEMRESATTRS_K8S_REPLICASET_NAME=Mi.SEMRESATTRS_K8S_REPLICASET_UID=Mi.SEMRESATTRS_K8S_CONTAINER_NAME=Mi.SEMRESATTRS_K8S_POD_NAME=Mi.SEMRESATTRS_K8S_POD_UID=Mi.SEMRESATTRS_K8S_NAMESPACE_NAME=Mi.SEMRESATTRS_K8S_NODE_UID=Mi.SEMRESATTRS_K8S_NODE_NAME=Mi.SEMRESATTRS_K8S_CLUSTER_NAME=Mi.SEMRESATTRS_HOST_IMAGE_VERSION=Mi.SEMRESATTRS_HOST_IMAGE_ID=Mi.SEMRESATTRS_HOST_IMAGE_NAME=Mi.SEMRESATTRS_HOST_ARCH=Mi.SEMRESATTRS_HOST_TYPE=Mi.SEMRESATTRS_HOST_NAME=Mi.SEMRESATTRS_HOST_ID=Mi.SEMRESATTRS_FAAS_MAX_MEMORY=Mi.SEMRESATTRS_FAAS_INSTANCE=Mi.SEMRESATTRS_FAAS_VERSION=Mi.SEMRESATTRS_FAAS_ID=Mi.SEMRESATTRS_FAAS_NAME=Mi.SEMRESATTRS_DEVICE_MODEL_NAME=Mi.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER=Mi.SEMRESATTRS_DEVICE_ID=Mi.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT=Mi.SEMRESATTRS_CONTAINER_IMAGE_TAG=Mi.SEMRESATTRS_CONTAINER_IMAGE_NAME=Mi.SEMRESATTRS_CONTAINER_RUNTIME=Mi.SEMRESATTRS_CONTAINER_ID=Mi.SEMRESATTRS_CONTAINER_NAME=Mi.SEMRESATTRS_AWS_LOG_STREAM_ARNS=Mi.SEMRESATTRS_AWS_LOG_STREAM_NAMES=Mi.SEMRESATTRS_AWS_LOG_GROUP_ARNS=Mi.SEMRESATTRS_AWS_LOG_GROUP_NAMES=Mi.SEMRESATTRS_AWS_EKS_CLUSTER_ARN=Mi.SEMRESATTRS_AWS_ECS_TASK_REVISION=Mi.SEMRESATTRS_AWS_ECS_TASK_FAMILY=Mi.SEMRESATTRS_AWS_ECS_TASK_ARN=Mi.SEMRESATTRS_AWS_ECS_LAUNCHTYPE=Mi.SEMRESATTRS_AWS_ECS_CLUSTER_ARN=Mi.SEMRESATTRS_AWS_ECS_CONTAINER_ARN=Mi.SEMRESATTRS_CLOUD_PLATFORM=Mi.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE=Mi.SEMRESATTRS_CLOUD_REGION=Mi.SEMRESATTRS_CLOUD_ACCOUNT_ID=Mi.SEMRESATTRS_CLOUD_PROVIDER=void 0;Mi.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE=Mi.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE=Mi.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS=Mi.CLOUDPLATFORMVALUES_AZURE_AKS=Mi.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES=Mi.CLOUDPLATFORMVALUES_AZURE_VM=Mi.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK=Mi.CLOUDPLATFORMVALUES_AWS_LAMBDA=Mi.CLOUDPLATFORMVALUES_AWS_EKS=Mi.CLOUDPLATFORMVALUES_AWS_ECS=Mi.CLOUDPLATFORMVALUES_AWS_EC2=Mi.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC=Mi.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS=Mi.CloudProviderValues=Mi.CLOUDPROVIDERVALUES_GCP=Mi.CLOUDPROVIDERVALUES_AZURE=Mi.CLOUDPROVIDERVALUES_AWS=Mi.CLOUDPROVIDERVALUES_ALIBABA_CLOUD=Mi.SemanticResourceAttributes=Mi.SEMRESATTRS_WEBENGINE_DESCRIPTION=Mi.SEMRESATTRS_WEBENGINE_VERSION=Mi.SEMRESATTRS_WEBENGINE_NAME=Mi.SEMRESATTRS_TELEMETRY_AUTO_VERSION=Mi.SEMRESATTRS_TELEMETRY_SDK_VERSION=Mi.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE=Mi.SEMRESATTRS_TELEMETRY_SDK_NAME=Mi.SEMRESATTRS_SERVICE_VERSION=Mi.SEMRESATTRS_SERVICE_INSTANCE_ID=Mi.SEMRESATTRS_SERVICE_NAMESPACE=Mi.SEMRESATTRS_SERVICE_NAME=Mi.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION=Mi.SEMRESATTRS_PROCESS_RUNTIME_VERSION=Mi.SEMRESATTRS_PROCESS_RUNTIME_NAME=Mi.SEMRESATTRS_PROCESS_OWNER=Mi.SEMRESATTRS_PROCESS_COMMAND_ARGS=Mi.SEMRESATTRS_PROCESS_COMMAND_LINE=Mi.SEMRESATTRS_PROCESS_COMMAND=Mi.SEMRESATTRS_PROCESS_EXECUTABLE_PATH=Mi.SEMRESATTRS_PROCESS_EXECUTABLE_NAME=Mi.SEMRESATTRS_PROCESS_PID=Mi.SEMRESATTRS_OS_VERSION=Mi.SEMRESATTRS_OS_NAME=Mi.SEMRESATTRS_OS_DESCRIPTION=Mi.SEMRESATTRS_OS_TYPE=Mi.SEMRESATTRS_K8S_CRONJOB_NAME=Mi.SEMRESATTRS_K8S_CRONJOB_UID=Mi.SEMRESATTRS_K8S_JOB_NAME=Mi.SEMRESATTRS_K8S_JOB_UID=Mi.SEMRESATTRS_K8S_DAEMONSET_NAME=Mi.SEMRESATTRS_K8S_DAEMONSET_UID=void 0;Mi.TelemetrySdkLanguageValues=Mi.TELEMETRYSDKLANGUAGEVALUES_WEBJS=Mi.TELEMETRYSDKLANGUAGEVALUES_RUBY=Mi.TELEMETRYSDKLANGUAGEVALUES_PYTHON=Mi.TELEMETRYSDKLANGUAGEVALUES_PHP=Mi.TELEMETRYSDKLANGUAGEVALUES_NODEJS=Mi.TELEMETRYSDKLANGUAGEVALUES_JAVA=Mi.TELEMETRYSDKLANGUAGEVALUES_GO=Mi.TELEMETRYSDKLANGUAGEVALUES_ERLANG=Mi.TELEMETRYSDKLANGUAGEVALUES_DOTNET=Mi.TELEMETRYSDKLANGUAGEVALUES_CPP=Mi.OsTypeValues=Mi.OSTYPEVALUES_Z_OS=Mi.OSTYPEVALUES_SOLARIS=Mi.OSTYPEVALUES_AIX=Mi.OSTYPEVALUES_HPUX=Mi.OSTYPEVALUES_DRAGONFLYBSD=Mi.OSTYPEVALUES_OPENBSD=Mi.OSTYPEVALUES_NETBSD=Mi.OSTYPEVALUES_FREEBSD=Mi.OSTYPEVALUES_DARWIN=Mi.OSTYPEVALUES_LINUX=Mi.OSTYPEVALUES_WINDOWS=Mi.HostArchValues=Mi.HOSTARCHVALUES_X86=Mi.HOSTARCHVALUES_PPC64=Mi.HOSTARCHVALUES_PPC32=Mi.HOSTARCHVALUES_IA64=Mi.HOSTARCHVALUES_ARM64=Mi.HOSTARCHVALUES_ARM32=Mi.HOSTARCHVALUES_AMD64=Mi.AwsEcsLaunchtypeValues=Mi.AWSECSLAUNCHTYPEVALUES_FARGATE=Mi.AWSECSLAUNCHTYPEVALUES_EC2=Mi.CloudPlatformValues=Mi.CLOUDPLATFORMVALUES_GCP_APP_ENGINE=Mi.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS=Mi.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE=Mi.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN=void 0;var KJ=BV(),tu="cloud.provider",eu="cloud.account.id",Al="cloud.region",Ql="cloud.availability_zone",Bl="cloud.platform",Il="aws.ecs.container.arn",Cl="aws.ecs.cluster.arn",El="aws.ecs.launchtype",Yl="aws.ecs.task.arn",Jl="aws.ecs.task.family",Fl="aws.ecs.task.revision",Gl="aws.eks.cluster.arn",Dl="aws.log.group.names",Zl="aws.log.group.arns",Wl="aws.log.stream.names",Xl="aws.log.stream.arns",Ul="container.name",wl="container.id",Kl="container.runtime",zl="container.image.name",Vl="container.image.tag",$l="deployment.environment",Ll="device.id",Hl="device.model.identifier",Ml="device.model.name",Nl="faas.name",jl="faas.id",Rl="faas.version",ql="faas.instance",Ol="faas.max_memory",Tl="host.id",Pl="host.name",kl="host.type",Sl="host.arch",yl="host.image.name",_l="host.image.id",fl="host.image.version",gl="k8s.cluster.name",hl="k8s.node.name",xl="k8s.node.uid",vl="k8s.namespace.name",bl="k8s.pod.uid",ml="k8s.pod.name",dl="k8s.container.name",cl="k8s.replicaset.uid",ul="k8s.replicaset.name",ll="k8s.deployment.uid",pl="k8s.deployment.name",il="k8s.statefulset.uid",nl="k8s.statefulset.name",al="k8s.daemonset.uid",ol="k8s.daemonset.name",sl="k8s.job.uid",rl="k8s.job.name",tl="k8s.cronjob.uid",el="k8s.cronjob.name",Ap="os.type",Qp="os.description",Bp="os.name",Ip="os.version",Cp="process.pid",Ep="process.executable.name",Yp="process.executable.path",Jp="process.command",Fp="process.command_line",Gp="process.command_args",Dp="process.owner",Zp="process.runtime.name",Wp="process.runtime.version",Xp="process.runtime.description",Up="service.name",wp="service.namespace",Kp="service.instance.id",zp="service.version",Vp="telemetry.sdk.name",$p="telemetry.sdk.language",Lp="telemetry.sdk.version",Hp="telemetry.auto.version",Mp="webengine.name",Np="webengine.version",jp="webengine.description";Mi.SEMRESATTRS_CLOUD_PROVIDER=tu;Mi.SEMRESATTRS_CLOUD_ACCOUNT_ID=eu;Mi.SEMRESATTRS_CLOUD_REGION=Al;Mi.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE=Ql;Mi.SEMRESATTRS_CLOUD_PLATFORM=Bl;Mi.SEMRESATTRS_AWS_ECS_CONTAINER_ARN=Il;Mi.SEMRESATTRS_AWS_ECS_CLUSTER_ARN=Cl;Mi.SEMRESATTRS_AWS_ECS_LAUNCHTYPE=El;Mi.SEMRESATTRS_AWS_ECS_TASK_ARN=Yl;Mi.SEMRESATTRS_AWS_ECS_TASK_FAMILY=Jl;Mi.SEMRESATTRS_AWS_ECS_TASK_REVISION=Fl;Mi.SEMRESATTRS_AWS_EKS_CLUSTER_ARN=Gl;Mi.SEMRESATTRS_AWS_LOG_GROUP_NAMES=Dl;Mi.SEMRESATTRS_AWS_LOG_GROUP_ARNS=Zl;Mi.SEMRESATTRS_AWS_LOG_STREAM_NAMES=Wl;Mi.SEMRESATTRS_AWS_LOG_STREAM_ARNS=Xl;Mi.SEMRESATTRS_CONTAINER_NAME=Ul;Mi.SEMRESATTRS_CONTAINER_ID=wl;Mi.SEMRESATTRS_CONTAINER_RUNTIME=Kl;Mi.SEMRESATTRS_CONTAINER_IMAGE_NAME=zl;Mi.SEMRESATTRS_CONTAINER_IMAGE_TAG=Vl;Mi.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT=$l;Mi.SEMRESATTRS_DEVICE_ID=Ll;Mi.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER=Hl;Mi.SEMRESATTRS_DEVICE_MODEL_NAME=Ml;Mi.SEMRESATTRS_FAAS_NAME=Nl;Mi.SEMRESATTRS_FAAS_ID=jl;Mi.SEMRESATTRS_FAAS_VERSION=Rl;Mi.SEMRESATTRS_FAAS_INSTANCE=ql;Mi.SEMRESATTRS_FAAS_MAX_MEMORY=Ol;Mi.SEMRESATTRS_HOST_ID=Tl;Mi.SEMRESATTRS_HOST_NAME=Pl;Mi.SEMRESATTRS_HOST_TYPE=kl;Mi.SEMRESATTRS_HOST_ARCH=Sl;Mi.SEMRESATTRS_HOST_IMAGE_NAME=yl;Mi.SEMRESATTRS_HOST_IMAGE_ID=_l;Mi.SEMRESATTRS_HOST_IMAGE_VERSION=fl;Mi.SEMRESATTRS_K8S_CLUSTER_NAME=gl;Mi.SEMRESATTRS_K8S_NODE_NAME=hl;Mi.SEMRESATTRS_K8S_NODE_UID=xl;Mi.SEMRESATTRS_K8S_NAMESPACE_NAME=vl;Mi.SEMRESATTRS_K8S_POD_UID=bl;Mi.SEMRESATTRS_K8S_POD_NAME=ml;Mi.SEMRESATTRS_K8S_CONTAINER_NAME=dl;Mi.SEMRESATTRS_K8S_REPLICASET_UID=cl;Mi.SEMRESATTRS_K8S_REPLICASET_NAME=ul;Mi.SEMRESATTRS_K8S_DEPLOYMENT_UID=ll;Mi.SEMRESATTRS_K8S_DEPLOYMENT_NAME=pl;Mi.SEMRESATTRS_K8S_STATEFULSET_UID=il;Mi.SEMRESATTRS_K8S_STATEFULSET_NAME=nl;Mi.SEMRESATTRS_K8S_DAEMONSET_UID=al;Mi.SEMRESATTRS_K8S_DAEMONSET_NAME=ol;Mi.SEMRESATTRS_K8S_JOB_UID=sl;Mi.SEMRESATTRS_K8S_JOB_NAME=rl;Mi.SEMRESATTRS_K8S_CRONJOB_UID=tl;Mi.SEMRESATTRS_K8S_CRONJOB_NAME=el;Mi.SEMRESATTRS_OS_TYPE=Ap;Mi.SEMRESATTRS_OS_DESCRIPTION=Qp;Mi.SEMRESATTRS_OS_NAME=Bp;Mi.SEMRESATTRS_OS_VERSION=Ip;Mi.SEMRESATTRS_PROCESS_PID=Cp;Mi.SEMRESATTRS_PROCESS_EXECUTABLE_NAME=Ep;Mi.SEMRESATTRS_PROCESS_EXECUTABLE_PATH=Yp;Mi.SEMRESATTRS_PROCESS_COMMAND=Jp;Mi.SEMRESATTRS_PROCESS_COMMAND_LINE=Fp;Mi.SEMRESATTRS_PROCESS_COMMAND_ARGS=Gp;Mi.SEMRESATTRS_PROCESS_OWNER=Dp;Mi.SEMRESATTRS_PROCESS_RUNTIME_NAME=Zp;Mi.SEMRESATTRS_PROCESS_RUNTIME_VERSION=Wp;Mi.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION=Xp;Mi.SEMRESATTRS_SERVICE_NAME=Up;Mi.SEMRESATTRS_SERVICE_NAMESPACE=wp;Mi.SEMRESATTRS_SERVICE_INSTANCE_ID=Kp;Mi.SEMRESATTRS_SERVICE_VERSION=zp;Mi.SEMRESATTRS_TELEMETRY_SDK_NAME=Vp;Mi.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE=$p;Mi.SEMRESATTRS_TELEMETRY_SDK_VERSION=Lp;Mi.SEMRESATTRS_TELEMETRY_AUTO_VERSION=Hp;Mi.SEMRESATTRS_WEBENGINE_NAME=Mp;Mi.SEMRESATTRS_WEBENGINE_VERSION=Np;Mi.SEMRESATTRS_WEBENGINE_DESCRIPTION=jp;Mi.SemanticResourceAttributes=(0,KJ.createConstMap)([tu,eu,Al,Ql,Bl,Il,Cl,El,Yl,Jl,Fl,Gl,Dl,Zl,Wl,Xl,Ul,wl,Kl,zl,Vl,$l,Ll,Hl,Ml,Nl,jl,Rl,ql,Ol,Tl,Pl,kl,Sl,yl,_l,fl,gl,hl,xl,vl,bl,ml,dl,cl,ul,ll,pl,il,nl,al,ol,sl,rl,tl,el,Ap,Qp,Bp,Ip,Cp,Ep,Yp,Jp,Fp,Gp,Dp,Zp,Wp,Xp,Up,wp,Kp,zp,Vp,$p,Lp,Hp,Mp,Np,jp]);var Rp="alibaba_cloud",qp="aws",Op="azure",Tp="gcp";Mi.CLOUDPROVIDERVALUES_ALIBABA_CLOUD=Rp;Mi.CLOUDPROVIDERVALUES_AWS=qp;Mi.CLOUDPROVIDERVALUES_AZURE=Op;Mi.CLOUDPROVIDERVALUES_GCP=Tp;Mi.CloudProviderValues=(0,KJ.createConstMap)([Rp,qp,Op,Tp]);var Pp="alibaba_cloud_ecs",kp="alibaba_cloud_fc",Sp="aws_ec2",yp="aws_ecs",_p="aws_eks",fp="aws_lambda",gp="aws_elastic_beanstalk",hp="azure_vm",xp="azure_container_instances",vp="azure_aks",bp="azure_functions",mp="azure_app_service",dp="gcp_compute_engine",cp="gcp_cloud_run",up="gcp_kubernetes_engine",lp="gcp_cloud_functions",pp="gcp_app_engine";Mi.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS=Pp;Mi.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC=kp;Mi.CLOUDPLATFORMVALUES_AWS_EC2=Sp;Mi.CLOUDPLATFORMVALUES_AWS_ECS=yp;Mi.CLOUDPLATFORMVALUES_AWS_EKS=_p;Mi.CLOUDPLATFORMVALUES_AWS_LAMBDA=fp;Mi.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK=gp;Mi.CLOUDPLATFORMVALUES_AZURE_VM=hp;Mi.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES=xp;Mi.CLOUDPLATFORMVALUES_AZURE_AKS=vp;Mi.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS=bp;Mi.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE=mp;Mi.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE=dp;Mi.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN=cp;Mi.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE=up;Mi.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS=lp;Mi.CLOUDPLATFORMVALUES_GCP_APP_ENGINE=pp;Mi.CloudPlatformValues=(0,KJ.createConstMap)([Pp,kp,Sp,yp,_p,fp,gp,hp,xp,vp,bp,mp,dp,cp,up,lp,pp]);var ip="ec2",np="fargate";Mi.AWSECSLAUNCHTYPEVALUES_EC2=ip;Mi.AWSECSLAUNCHTYPEVALUES_FARGATE=np;Mi.AwsEcsLaunchtypeValues=(0,KJ.createConstMap)([ip,np]);var ap="amd64",op="arm32",sp="arm64",rp="ia64",tp="ppc32",ep="ppc64",Ai="x86";Mi.HOSTARCHVALUES_AMD64=ap;Mi.HOSTARCHVALUES_ARM32=op;Mi.HOSTARCHVALUES_ARM64=sp;Mi.HOSTARCHVALUES_IA64=rp;Mi.HOSTARCHVALUES_PPC32=tp;Mi.HOSTARCHVALUES_PPC64=ep;Mi.HOSTARCHVALUES_X86=Ai;Mi.HostArchValues=(0,KJ.createConstMap)([ap,op,sp,rp,tp,ep,Ai]);var Qi="windows",Bi="linux",Ii="darwin",Ci="freebsd",Ei="netbsd",Yi="openbsd",Ji="dragonflybsd",Fi="hpux",Gi="aix",Di="solaris",Zi="z_os";Mi.OSTYPEVALUES_WINDOWS=Qi;Mi.OSTYPEVALUES_LINUX=Bi;Mi.OSTYPEVALUES_DARWIN=Ii;Mi.OSTYPEVALUES_FREEBSD=Ci;Mi.OSTYPEVALUES_NETBSD=Ei;Mi.OSTYPEVALUES_OPENBSD=Yi;Mi.OSTYPEVALUES_DRAGONFLYBSD=Ji;Mi.OSTYPEVALUES_HPUX=Fi;Mi.OSTYPEVALUES_AIX=Gi;Mi.OSTYPEVALUES_SOLARIS=Di;Mi.OSTYPEVALUES_Z_OS=Zi;Mi.OsTypeValues=(0,KJ.createConstMap)([Qi,Bi,Ii,Ci,Ei,Yi,Ji,Fi,Gi,Di,Zi]);var Wi="cpp",Xi="dotnet",Ui="erlang",wi="go",Ki="java",zi="nodejs",Vi="php",$i="python",Li="ruby",Hi="webjs";Mi.TELEMETRYSDKLANGUAGEVALUES_CPP=Wi;Mi.TELEMETRYSDKLANGUAGEVALUES_DOTNET=Xi;Mi.TELEMETRYSDKLANGUAGEVALUES_ERLANG=Ui;Mi.TELEMETRYSDKLANGUAGEVALUES_GO=wi;Mi.TELEMETRYSDKLANGUAGEVALUES_JAVA=Ki;Mi.TELEMETRYSDKLANGUAGEVALUES_NODEJS=zi;Mi.TELEMETRYSDKLANGUAGEVALUES_PHP=Vi;Mi.TELEMETRYSDKLANGUAGEVALUES_PYTHON=$i;Mi.TELEMETRYSDKLANGUAGEVALUES_RUBY=Li;Mi.TELEMETRYSDKLANGUAGEVALUES_WEBJS=Hi;Mi.TelemetrySdkLanguageValues=(0,KJ.createConstMap)([Wi,Xi,Ui,wi,Ki,zi,Vi,$i,Li,Hi])});var Oi=U((zJ)=>{var gdA=zJ&&zJ.__createBinding||(Object.create?function(A,Q,B,I){if(I===void 0)I=B;var C=Object.getOwnPropertyDescriptor(Q,B);if(!C||("get"in C?!Q.__esModule:C.writable||C.configurable))C={enumerable:!0,get:function(){return Q[B]}};Object.defineProperty(A,I,C)}:function(A,Q,B,I){if(I===void 0)I=B;A[I]=Q[B]}),hdA=zJ&&zJ.__exportStar||function(A,Q){for(var B in A)if(B!=="default"&&!Object.prototype.hasOwnProperty.call(Q,B))gdA(Q,A,B)};Object.defineProperty(zJ,"__esModule",{value:!0});hdA(qi(),zJ)});var yi=U((Ti)=>{Object.defineProperty(Ti,"__esModule",{value:!0});Ti.ATTR_EXCEPTION_TYPE=Ti.ATTR_EXCEPTION_STACKTRACE=Ti.ATTR_EXCEPTION_MESSAGE=Ti.ATTR_EXCEPTION_ESCAPED=Ti.ERROR_TYPE_VALUE_OTHER=Ti.ATTR_ERROR_TYPE=Ti.DOTNET_GC_HEAP_GENERATION_VALUE_POH=Ti.DOTNET_GC_HEAP_GENERATION_VALUE_LOH=Ti.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2=Ti.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1=Ti.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0=Ti.ATTR_DOTNET_GC_HEAP_GENERATION=Ti.DB_SYSTEM_NAME_VALUE_POSTGRESQL=Ti.DB_SYSTEM_NAME_VALUE_MYSQL=Ti.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER=Ti.DB_SYSTEM_NAME_VALUE_MARIADB=Ti.ATTR_DB_SYSTEM_NAME=Ti.ATTR_DB_STORED_PROCEDURE_NAME=Ti.ATTR_DB_RESPONSE_STATUS_CODE=Ti.ATTR_DB_QUERY_TEXT=Ti.ATTR_DB_QUERY_SUMMARY=Ti.ATTR_DB_OPERATION_NAME=Ti.ATTR_DB_OPERATION_BATCH_SIZE=Ti.ATTR_DB_NAMESPACE=Ti.ATTR_DB_COLLECTION_NAME=Ti.ATTR_CODE_STACKTRACE=Ti.ATTR_CODE_LINE_NUMBER=Ti.ATTR_CODE_FUNCTION_NAME=Ti.ATTR_CODE_FILE_PATH=Ti.ATTR_CODE_COLUMN_NUMBER=Ti.ATTR_CLIENT_PORT=Ti.ATTR_CLIENT_ADDRESS=Ti.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED=Ti.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS=Ti.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE=Ti.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS=Ti.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK=Ti.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED=Ti.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED=Ti.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER=Ti.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER=Ti.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED=Ti.ATTR_ASPNETCORE_RATE_LIMITING_RESULT=Ti.ATTR_ASPNETCORE_RATE_LIMITING_POLICY=Ti.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE=Ti.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED=Ti.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED=Ti.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED=Ti.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED=Ti.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT=void 0;Ti.OTEL_STATUS_CODE_VALUE_ERROR=Ti.ATTR_OTEL_STATUS_CODE=Ti.ATTR_OTEL_SCOPE_VERSION=Ti.ATTR_OTEL_SCOPE_NAME=Ti.NETWORK_TYPE_VALUE_IPV6=Ti.NETWORK_TYPE_VALUE_IPV4=Ti.ATTR_NETWORK_TYPE=Ti.NETWORK_TRANSPORT_VALUE_UNIX=Ti.NETWORK_TRANSPORT_VALUE_UDP=Ti.NETWORK_TRANSPORT_VALUE_TCP=Ti.NETWORK_TRANSPORT_VALUE_QUIC=Ti.NETWORK_TRANSPORT_VALUE_PIPE=Ti.ATTR_NETWORK_TRANSPORT=Ti.ATTR_NETWORK_PROTOCOL_VERSION=Ti.ATTR_NETWORK_PROTOCOL_NAME=Ti.ATTR_NETWORK_PEER_PORT=Ti.ATTR_NETWORK_PEER_ADDRESS=Ti.ATTR_NETWORK_LOCAL_PORT=Ti.ATTR_NETWORK_LOCAL_ADDRESS=Ti.JVM_THREAD_STATE_VALUE_WAITING=Ti.JVM_THREAD_STATE_VALUE_TIMED_WAITING=Ti.JVM_THREAD_STATE_VALUE_TERMINATED=Ti.JVM_THREAD_STATE_VALUE_RUNNABLE=Ti.JVM_THREAD_STATE_VALUE_NEW=Ti.JVM_THREAD_STATE_VALUE_BLOCKED=Ti.ATTR_JVM_THREAD_STATE=Ti.ATTR_JVM_THREAD_DAEMON=Ti.JVM_MEMORY_TYPE_VALUE_NON_HEAP=Ti.JVM_MEMORY_TYPE_VALUE_HEAP=Ti.ATTR_JVM_MEMORY_TYPE=Ti.ATTR_JVM_MEMORY_POOL_NAME=Ti.ATTR_JVM_GC_NAME=Ti.ATTR_JVM_GC_ACTION=Ti.ATTR_HTTP_ROUTE=Ti.ATTR_HTTP_RESPONSE_STATUS_CODE=Ti.ATTR_HTTP_RESPONSE_HEADER=Ti.ATTR_HTTP_REQUEST_RESEND_COUNT=Ti.ATTR_HTTP_REQUEST_METHOD_ORIGINAL=Ti.HTTP_REQUEST_METHOD_VALUE_TRACE=Ti.HTTP_REQUEST_METHOD_VALUE_PUT=Ti.HTTP_REQUEST_METHOD_VALUE_POST=Ti.HTTP_REQUEST_METHOD_VALUE_PATCH=Ti.HTTP_REQUEST_METHOD_VALUE_OPTIONS=Ti.HTTP_REQUEST_METHOD_VALUE_HEAD=Ti.HTTP_REQUEST_METHOD_VALUE_GET=Ti.HTTP_REQUEST_METHOD_VALUE_DELETE=Ti.HTTP_REQUEST_METHOD_VALUE_CONNECT=Ti.HTTP_REQUEST_METHOD_VALUE_OTHER=Ti.ATTR_HTTP_REQUEST_METHOD=Ti.ATTR_HTTP_REQUEST_HEADER=void 0;Ti.ATTR_USER_AGENT_ORIGINAL=Ti.ATTR_URL_SCHEME=Ti.ATTR_URL_QUERY=Ti.ATTR_URL_PATH=Ti.ATTR_URL_FULL=Ti.ATTR_URL_FRAGMENT=Ti.ATTR_TELEMETRY_SDK_VERSION=Ti.ATTR_TELEMETRY_SDK_NAME=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_RUST=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_PHP=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_GO=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET=Ti.TELEMETRY_SDK_LANGUAGE_VALUE_CPP=Ti.ATTR_TELEMETRY_SDK_LANGUAGE=Ti.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS=Ti.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS=Ti.SIGNALR_TRANSPORT_VALUE_LONG_POLLING=Ti.ATTR_SIGNALR_TRANSPORT=Ti.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT=Ti.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE=Ti.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN=Ti.ATTR_SIGNALR_CONNECTION_STATUS=Ti.ATTR_SERVICE_VERSION=Ti.ATTR_SERVICE_NAMESPACE=Ti.ATTR_SERVICE_NAME=Ti.ATTR_SERVICE_INSTANCE_ID=Ti.ATTR_SERVER_PORT=Ti.ATTR_SERVER_ADDRESS=Ti.ATTR_OTEL_STATUS_DESCRIPTION=Ti.OTEL_STATUS_CODE_VALUE_OK=void 0;Ti.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT="aspnetcore.diagnostics.exception.result";Ti.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED="aborted";Ti.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED="handled";Ti.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED="skipped";Ti.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED="unhandled";Ti.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE="aspnetcore.diagnostics.handler.type";Ti.ATTR_ASPNETCORE_RATE_LIMITING_POLICY="aspnetcore.rate_limiting.policy";Ti.ATTR_ASPNETCORE_RATE_LIMITING_RESULT="aspnetcore.rate_limiting.result";Ti.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED="acquired";Ti.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER="endpoint_limiter";Ti.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER="global_limiter";Ti.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED="request_canceled";Ti.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED="aspnetcore.request.is_unhandled";Ti.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK="aspnetcore.routing.is_fallback";Ti.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS="aspnetcore.routing.match_status";Ti.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE="failure";Ti.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS="success";Ti.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED="aspnetcore.user.is_authenticated";Ti.ATTR_CLIENT_ADDRESS="client.address";Ti.ATTR_CLIENT_PORT="client.port";Ti.ATTR_CODE_COLUMN_NUMBER="code.column.number";Ti.ATTR_CODE_FILE_PATH="code.file.path";Ti.ATTR_CODE_FUNCTION_NAME="code.function.name";Ti.ATTR_CODE_LINE_NUMBER="code.line.number";Ti.ATTR_CODE_STACKTRACE="code.stacktrace";Ti.ATTR_DB_COLLECTION_NAME="db.collection.name";Ti.ATTR_DB_NAMESPACE="db.namespace";Ti.ATTR_DB_OPERATION_BATCH_SIZE="db.operation.batch.size";Ti.ATTR_DB_OPERATION_NAME="db.operation.name";Ti.ATTR_DB_QUERY_SUMMARY="db.query.summary";Ti.ATTR_DB_QUERY_TEXT="db.query.text";Ti.ATTR_DB_RESPONSE_STATUS_CODE="db.response.status_code";Ti.ATTR_DB_STORED_PROCEDURE_NAME="db.stored_procedure.name";Ti.ATTR_DB_SYSTEM_NAME="db.system.name";Ti.DB_SYSTEM_NAME_VALUE_MARIADB="mariadb";Ti.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER="microsoft.sql_server";Ti.DB_SYSTEM_NAME_VALUE_MYSQL="mysql";Ti.DB_SYSTEM_NAME_VALUE_POSTGRESQL="postgresql";Ti.ATTR_DOTNET_GC_HEAP_GENERATION="dotnet.gc.heap.generation";Ti.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0="gen0";Ti.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1="gen1";Ti.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2="gen2";Ti.DOTNET_GC_HEAP_GENERATION_VALUE_LOH="loh";Ti.DOTNET_GC_HEAP_GENERATION_VALUE_POH="poh";Ti.ATTR_ERROR_TYPE="error.type";Ti.ERROR_TYPE_VALUE_OTHER="_OTHER";Ti.ATTR_EXCEPTION_ESCAPED="exception.escaped";Ti.ATTR_EXCEPTION_MESSAGE="exception.message";Ti.ATTR_EXCEPTION_STACKTRACE="exception.stacktrace";Ti.ATTR_EXCEPTION_TYPE="exception.type";var xdA=(A)=>`http.request.header.${A}`;Ti.ATTR_HTTP_REQUEST_HEADER=xdA;Ti.ATTR_HTTP_REQUEST_METHOD="http.request.method";Ti.HTTP_REQUEST_METHOD_VALUE_OTHER="_OTHER";Ti.HTTP_REQUEST_METHOD_VALUE_CONNECT="CONNECT";Ti.HTTP_REQUEST_METHOD_VALUE_DELETE="DELETE";Ti.HTTP_REQUEST_METHOD_VALUE_GET="GET";Ti.HTTP_REQUEST_METHOD_VALUE_HEAD="HEAD";Ti.HTTP_REQUEST_METHOD_VALUE_OPTIONS="OPTIONS";Ti.HTTP_REQUEST_METHOD_VALUE_PATCH="PATCH";Ti.HTTP_REQUEST_METHOD_VALUE_POST="POST";Ti.HTTP_REQUEST_METHOD_VALUE_PUT="PUT";Ti.HTTP_REQUEST_METHOD_VALUE_TRACE="TRACE";Ti.ATTR_HTTP_REQUEST_METHOD_ORIGINAL="http.request.method_original";Ti.ATTR_HTTP_REQUEST_RESEND_COUNT="http.request.resend_count";var vdA=(A)=>`http.response.header.${A}`;Ti.ATTR_HTTP_RESPONSE_HEADER=vdA;Ti.ATTR_HTTP_RESPONSE_STATUS_CODE="http.response.status_code";Ti.ATTR_HTTP_ROUTE="http.route";Ti.ATTR_JVM_GC_ACTION="jvm.gc.action";Ti.ATTR_JVM_GC_NAME="jvm.gc.name";Ti.ATTR_JVM_MEMORY_POOL_NAME="jvm.memory.pool.name";Ti.ATTR_JVM_MEMORY_TYPE="jvm.memory.type";Ti.JVM_MEMORY_TYPE_VALUE_HEAP="heap";Ti.JVM_MEMORY_TYPE_VALUE_NON_HEAP="non_heap";Ti.ATTR_JVM_THREAD_DAEMON="jvm.thread.daemon";Ti.ATTR_JVM_THREAD_STATE="jvm.thread.state";Ti.JVM_THREAD_STATE_VALUE_BLOCKED="blocked";Ti.JVM_THREAD_STATE_VALUE_NEW="new";Ti.JVM_THREAD_STATE_VALUE_RUNNABLE="runnable";Ti.JVM_THREAD_STATE_VALUE_TERMINATED="terminated";Ti.JVM_THREAD_STATE_VALUE_TIMED_WAITING="timed_waiting";Ti.JVM_THREAD_STATE_VALUE_WAITING="waiting";Ti.ATTR_NETWORK_LOCAL_ADDRESS="network.local.address";Ti.ATTR_NETWORK_LOCAL_PORT="network.local.port";Ti.ATTR_NETWORK_PEER_ADDRESS="network.peer.address";Ti.ATTR_NETWORK_PEER_PORT="network.peer.port";Ti.ATTR_NETWORK_PROTOCOL_NAME="network.protocol.name";Ti.ATTR_NETWORK_PROTOCOL_VERSION="network.protocol.version";Ti.ATTR_NETWORK_TRANSPORT="network.transport";Ti.NETWORK_TRANSPORT_VALUE_PIPE="pipe";Ti.NETWORK_TRANSPORT_VALUE_QUIC="quic";Ti.NETWORK_TRANSPORT_VALUE_TCP="tcp";Ti.NETWORK_TRANSPORT_VALUE_UDP="udp";Ti.NETWORK_TRANSPORT_VALUE_UNIX="unix";Ti.ATTR_NETWORK_TYPE="network.type";Ti.NETWORK_TYPE_VALUE_IPV4="ipv4";Ti.NETWORK_TYPE_VALUE_IPV6="ipv6";Ti.ATTR_OTEL_SCOPE_NAME="otel.scope.name";Ti.ATTR_OTEL_SCOPE_VERSION="otel.scope.version";Ti.ATTR_OTEL_STATUS_CODE="otel.status_code";Ti.OTEL_STATUS_CODE_VALUE_ERROR="ERROR";Ti.OTEL_STATUS_CODE_VALUE_OK="OK";Ti.ATTR_OTEL_STATUS_DESCRIPTION="otel.status_description";Ti.ATTR_SERVER_ADDRESS="server.address";Ti.ATTR_SERVER_PORT="server.port";Ti.ATTR_SERVICE_INSTANCE_ID="service.instance.id";Ti.ATTR_SERVICE_NAME="service.name";Ti.ATTR_SERVICE_NAMESPACE="service.namespace";Ti.ATTR_SERVICE_VERSION="service.version";Ti.ATTR_SIGNALR_CONNECTION_STATUS="signalr.connection.status";Ti.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN="app_shutdown";Ti.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE="normal_closure";Ti.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT="timeout";Ti.ATTR_SIGNALR_TRANSPORT="signalr.transport";Ti.SIGNALR_TRANSPORT_VALUE_LONG_POLLING="long_polling";Ti.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS="server_sent_events";Ti.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS="web_sockets";Ti.ATTR_TELEMETRY_SDK_LANGUAGE="telemetry.sdk.language";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_CPP="cpp";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET="dotnet";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG="erlang";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_GO="go";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA="java";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS="nodejs";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_PHP="php";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON="python";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY="ruby";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_RUST="rust";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT="swift";Ti.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS="webjs";Ti.ATTR_TELEMETRY_SDK_NAME="telemetry.sdk.name";Ti.ATTR_TELEMETRY_SDK_VERSION="telemetry.sdk.version";Ti.ATTR_URL_FRAGMENT="url.fragment";Ti.ATTR_URL_FULL="url.full";Ti.ATTR_URL_PATH="url.path";Ti.ATTR_URL_QUERY="url.query";Ti.ATTR_URL_SCHEME="url.scheme";Ti.ATTR_USER_AGENT_ORIGINAL="user_agent.original"});var hi=U((_i)=>{Object.defineProperty(_i,"__esModule",{value:!0});_i.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS=_i.METRIC_KESTREL_UPGRADED_CONNECTIONS=_i.METRIC_KESTREL_TLS_HANDSHAKE_DURATION=_i.METRIC_KESTREL_REJECTED_CONNECTIONS=_i.METRIC_KESTREL_QUEUED_REQUESTS=_i.METRIC_KESTREL_QUEUED_CONNECTIONS=_i.METRIC_KESTREL_CONNECTION_DURATION=_i.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES=_i.METRIC_KESTREL_ACTIVE_CONNECTIONS=_i.METRIC_JVM_THREAD_COUNT=_i.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC=_i.METRIC_JVM_MEMORY_USED=_i.METRIC_JVM_MEMORY_LIMIT=_i.METRIC_JVM_MEMORY_COMMITTED=_i.METRIC_JVM_GC_DURATION=_i.METRIC_JVM_CPU_TIME=_i.METRIC_JVM_CPU_RECENT_UTILIZATION=_i.METRIC_JVM_CPU_COUNT=_i.METRIC_JVM_CLASS_UNLOADED=_i.METRIC_JVM_CLASS_LOADED=_i.METRIC_JVM_CLASS_COUNT=_i.METRIC_HTTP_SERVER_REQUEST_DURATION=_i.METRIC_HTTP_CLIENT_REQUEST_DURATION=_i.METRIC_DOTNET_TIMER_COUNT=_i.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT=_i.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT=_i.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH=_i.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET=_i.METRIC_DOTNET_PROCESS_CPU_TIME=_i.METRIC_DOTNET_PROCESS_CPU_COUNT=_i.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS=_i.METRIC_DOTNET_JIT_COMPILED_METHODS=_i.METRIC_DOTNET_JIT_COMPILED_IL_SIZE=_i.METRIC_DOTNET_JIT_COMPILATION_TIME=_i.METRIC_DOTNET_GC_PAUSE_TIME=_i.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE=_i.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE=_i.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE=_i.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED=_i.METRIC_DOTNET_GC_COLLECTIONS=_i.METRIC_DOTNET_EXCEPTIONS=_i.METRIC_DOTNET_ASSEMBLY_COUNT=_i.METRIC_DB_CLIENT_OPERATION_DURATION=_i.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS=_i.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS=_i.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION=_i.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE=_i.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS=_i.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES=_i.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS=void 0;_i.METRIC_SIGNALR_SERVER_CONNECTION_DURATION=void 0;_i.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS="aspnetcore.diagnostics.exceptions";_i.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES="aspnetcore.rate_limiting.active_request_leases";_i.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS="aspnetcore.rate_limiting.queued_requests";_i.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE="aspnetcore.rate_limiting.request.time_in_queue";_i.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION="aspnetcore.rate_limiting.request_lease.duration";_i.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS="aspnetcore.rate_limiting.requests";_i.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS="aspnetcore.routing.match_attempts";_i.METRIC_DB_CLIENT_OPERATION_DURATION="db.client.operation.duration";_i.METRIC_DOTNET_ASSEMBLY_COUNT="dotnet.assembly.count";_i.METRIC_DOTNET_EXCEPTIONS="dotnet.exceptions";_i.METRIC_DOTNET_GC_COLLECTIONS="dotnet.gc.collections";_i.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED="dotnet.gc.heap.total_allocated";_i.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE="dotnet.gc.last_collection.heap.fragmentation.size";_i.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE="dotnet.gc.last_collection.heap.size";_i.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE="dotnet.gc.last_collection.memory.committed_size";_i.METRIC_DOTNET_GC_PAUSE_TIME="dotnet.gc.pause.time";_i.METRIC_DOTNET_JIT_COMPILATION_TIME="dotnet.jit.compilation.time";_i.METRIC_DOTNET_JIT_COMPILED_IL_SIZE="dotnet.jit.compiled_il.size";_i.METRIC_DOTNET_JIT_COMPILED_METHODS="dotnet.jit.compiled_methods";_i.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS="dotnet.monitor.lock_contentions";_i.METRIC_DOTNET_PROCESS_CPU_COUNT="dotnet.process.cpu.count";_i.METRIC_DOTNET_PROCESS_CPU_TIME="dotnet.process.cpu.time";_i.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET="dotnet.process.memory.working_set";_i.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH="dotnet.thread_pool.queue.length";_i.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT="dotnet.thread_pool.thread.count";_i.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT="dotnet.thread_pool.work_item.count";_i.METRIC_DOTNET_TIMER_COUNT="dotnet.timer.count";_i.METRIC_HTTP_CLIENT_REQUEST_DURATION="http.client.request.duration";_i.METRIC_HTTP_SERVER_REQUEST_DURATION="http.server.request.duration";_i.METRIC_JVM_CLASS_COUNT="jvm.class.count";_i.METRIC_JVM_CLASS_LOADED="jvm.class.loaded";_i.METRIC_JVM_CLASS_UNLOADED="jvm.class.unloaded";_i.METRIC_JVM_CPU_COUNT="jvm.cpu.count";_i.METRIC_JVM_CPU_RECENT_UTILIZATION="jvm.cpu.recent_utilization";_i.METRIC_JVM_CPU_TIME="jvm.cpu.time";_i.METRIC_JVM_GC_DURATION="jvm.gc.duration";_i.METRIC_JVM_MEMORY_COMMITTED="jvm.memory.committed";_i.METRIC_JVM_MEMORY_LIMIT="jvm.memory.limit";_i.METRIC_JVM_MEMORY_USED="jvm.memory.used";_i.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC="jvm.memory.used_after_last_gc";_i.METRIC_JVM_THREAD_COUNT="jvm.thread.count";_i.METRIC_KESTREL_ACTIVE_CONNECTIONS="kestrel.active_connections";_i.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES="kestrel.active_tls_handshakes";_i.METRIC_KESTREL_CONNECTION_DURATION="kestrel.connection.duration";_i.METRIC_KESTREL_QUEUED_CONNECTIONS="kestrel.queued_connections";_i.METRIC_KESTREL_QUEUED_REQUESTS="kestrel.queued_requests";_i.METRIC_KESTREL_REJECTED_CONNECTIONS="kestrel.rejected_connections";_i.METRIC_KESTREL_TLS_HANDSHAKE_DURATION="kestrel.tls_handshake.duration";_i.METRIC_KESTREL_UPGRADED_CONNECTIONS="kestrel.upgraded_connections";_i.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS="signalr.server.active_connections";_i.METRIC_SIGNALR_SERVER_CONNECTION_DURATION="signalr.server.connection.duration"});var bi=U((xi)=>{Object.defineProperty(xi,"__esModule",{value:!0});xi.EVENT_EXCEPTION=void 0;xi.EVENT_EXCEPTION="exception"});var HA=U((HC)=>{var YpA=HC&&HC.__createBinding||(Object.create?function(A,Q,B,I){if(I===void 0)I=B;var C=Object.getOwnPropertyDescriptor(Q,B);if(!C||("get"in C?!Q.__esModule:C.writable||C.configurable))C={enumerable:!0,get:function(){return Q[B]}};Object.defineProperty(A,I,C)}:function(A,Q,B,I){if(I===void 0)I=B;A[I]=Q[B]}),w1=HC&&HC.__exportStar||function(A,Q){for(var B in A)if(B!=="default"&&!Object.prototype.hasOwnProperty.call(Q,B))YpA(Q,A,B)};Object.defineProperty(HC,"__esModule",{value:!0});w1(ru(),HC);w1(Oi(),HC);w1(yi(),HC);w1(hi(),HC);w1(bi(),HC)});var ci=U((mi)=>{Object.defineProperty(mi,"__esModule",{value:!0});mi.ATTR_PROCESS_RUNTIME_NAME=void 0;mi.ATTR_PROCESS_RUNTIME_NAME="process.runtime.name"});var pi=U((ui)=>{Object.defineProperty(ui,"__esModule",{value:!0});ui.SDK_INFO=void 0;var JpA=rv(),YU=HA(),FpA=ci();ui.SDK_INFO={[YU.ATTR_TELEMETRY_SDK_NAME]:"opentelemetry",[FpA.ATTR_PROCESS_RUNTIME_NAME]:"node",[YU.ATTR_TELEMETRY_SDK_LANGUAGE]:YU.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,[YU.ATTR_TELEMETRY_SDK_VERSION]:JpA.VERSION}});var ni=U((i0)=>{Object.defineProperty(i0,"__esModule",{value:!0});i0.otperformance=i0.SDK_INFO=i0._globalThis=i0.getStringListFromEnv=i0.getNumberFromEnv=i0.getBooleanFromEnv=i0.getStringFromEnv=void 0;var JU=pv();Object.defineProperty(i0,"getStringFromEnv",{enumerable:!0,get:function(){return JU.getStringFromEnv}});Object.defineProperty(i0,"getBooleanFromEnv",{enumerable:!0,get:function(){return JU.getBooleanFromEnv}});Object.defineProperty(i0,"getNumberFromEnv",{enumerable:!0,get:function(){return JU.getNumberFromEnv}});Object.defineProperty(i0,"getStringListFromEnv",{enumerable:!0,get:function(){return JU.getStringListFromEnv}});var GpA=av();Object.defineProperty(i0,"_globalThis",{enumerable:!0,get:function(){return GpA._globalThis}});var DpA=pi();Object.defineProperty(i0,"SDK_INFO",{enumerable:!0,get:function(){return DpA.SDK_INFO}});i0.otperformance=performance});var IV=U((bE)=>{Object.defineProperty(bE,"__esModule",{value:!0});bE.getStringListFromEnv=bE.getNumberFromEnv=bE.getStringFromEnv=bE.getBooleanFromEnv=bE.otperformance=bE._globalThis=bE.SDK_INFO=void 0;var VJ=ni();Object.defineProperty(bE,"SDK_INFO",{enumerable:!0,get:function(){return VJ.SDK_INFO}});Object.defineProperty(bE,"_globalThis",{enumerable:!0,get:function(){return VJ._globalThis}});Object.defineProperty(bE,"otperformance",{enumerable:!0,get:function(){return VJ.otperformance}});Object.defineProperty(bE,"getBooleanFromEnv",{enumerable:!0,get:function(){return VJ.getBooleanFromEnv}});Object.defineProperty(bE,"getStringFromEnv",{enumerable:!0,get:function(){return VJ.getStringFromEnv}});Object.defineProperty(bE,"getNumberFromEnv",{enumerable:!0,get:function(){return VJ.getNumberFromEnv}});Object.defineProperty(bE,"getStringListFromEnv",{enumerable:!0,get:function(){return VJ.getStringListFromEnv}})});var ei=U((ri)=>{Object.defineProperty(ri,"__esModule",{value:!0});ri.addHrTimes=ri.isTimeInput=ri.isTimeInputHrTime=ri.hrTimeToMicroseconds=ri.hrTimeToMilliseconds=ri.hrTimeToNanoseconds=ri.hrTimeToTimeStamp=ri.hrTimeDuration=ri.timeInputToHrTime=ri.hrTime=ri.getTimeOrigin=ri.millisToHrTime=void 0;var FU=IV(),ai=9,WpA=6,XpA=Math.pow(10,WpA),GU=Math.pow(10,ai);function K1(A){let Q=A/1000,B=Math.trunc(Q),I=Math.round(A%1000*XpA);return[B,I]}ri.millisToHrTime=K1;function UpA(){return FU.otperformance.timeOrigin}ri.getTimeOrigin=UpA;function oi(A){let Q=K1(FU.otperformance.timeOrigin),B=K1(typeof A==="number"?A:FU.otperformance.now());return si(Q,B)}ri.hrTime=oi;function wpA(A){if(CV(A))return A;else if(typeof A==="number")if(A=GU)B[1]-=GU,B[0]+=1;return B}ri.addHrTimes=si});var Bn=U((An)=>{Object.defineProperty(An,"__esModule",{value:!0});An.unrefTimer=void 0;function _pA(A){if(typeof A!=="number")A.unref()}An.unrefTimer=_pA});var Cn=U((In)=>{Object.defineProperty(In,"__esModule",{value:!0});In.ExportResultCode=void 0;var fpA;(function(A){A[A.SUCCESS=0]="SUCCESS",A[A.FAILED=1]="FAILED"})(fpA=In.ExportResultCode||(In.ExportResultCode={}))});var Gn=U((Jn)=>{Object.defineProperty(Jn,"__esModule",{value:!0});Jn.CompositePropagator=void 0;var En=P();class Yn{_propagators;_fields;constructor(A={}){this._propagators=A.propagators??[],this._fields=Array.from(new Set(this._propagators.map((Q)=>typeof Q.fields==="function"?Q.fields():[]).reduce((Q,B)=>Q.concat(B),[])))}inject(A,Q,B){for(let I of this._propagators)try{I.inject(A,Q,B)}catch(C){En.diag.warn(`Failed to inject with ${I.constructor.name}. Err: ${C.message}`)}}extract(A,Q,B){return this._propagators.reduce((I,C)=>{try{return C.extract(I,Q,B)}catch(E){En.diag.warn(`Failed to extract with ${C.constructor.name}. Err: ${E.message}`)}return I},A)}fields(){return this._fields.slice()}}Jn.CompositePropagator=Yn});var Wn=U((Dn)=>{Object.defineProperty(Dn,"__esModule",{value:!0});Dn.validateValue=Dn.validateKey=void 0;var YV="[_0-9a-z-*/]",gpA=`[a-z]${YV}{0,255}`,hpA=`[a-z0-9]${YV}{0,240}@[a-z]${YV}{0,13}`,xpA=new RegExp(`^(?:${gpA}|${hpA})$`),vpA=/^[ -~]{0,255}[!-~]$/,bpA=/,|=/;function mpA(A){return xpA.test(A)}Dn.validateKey=mpA;function dpA(A){return vpA.test(A)&&!bpA.test(A)}Dn.validateValue=dpA});var FV=U((zn)=>{Object.defineProperty(zn,"__esModule",{value:!0});zn.TraceState=void 0;var Xn=Wn(),Un=32,upA=512,wn=",",Kn="=";class JV{_internalState=new Map;constructor(A){if(A)this._parse(A)}set(A,Q){let B=this._clone();if(B._internalState.has(A))B._internalState.delete(A);return B._internalState.set(A,Q),B}unset(A){let Q=this._clone();return Q._internalState.delete(A),Q}get(A){return this._internalState.get(A)}serialize(){return this._keys().reduce((A,Q)=>{return A.push(Q+Kn+this.get(Q)),A},[]).join(wn)}_parse(A){if(A.length>upA)return;if(this._internalState=A.split(wn).reverse().reduce((Q,B)=>{let I=B.trim(),C=I.indexOf(Kn);if(C!==-1){let E=I.slice(0,C),Y=I.slice(C+1,B.length);if((0,Xn.validateKey)(E)&&(0,Xn.validateValue)(Y))Q.set(E,Y)}return Q},new Map),this._internalState.size>Un)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,Un))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let A=new JV;return A._internalState=new Map(this._internalState),A}}zn.TraceState=JV});var Nn=U((Hn)=>{Object.defineProperty(Hn,"__esModule",{value:!0});Hn.W3CTraceContextPropagator=Hn.parseTraceParent=Hn.TRACE_STATE_HEADER=Hn.TRACE_PARENT_HEADER=void 0;var DU=P(),lpA=U1(),ppA=FV();Hn.TRACE_PARENT_HEADER="traceparent";Hn.TRACE_STATE_HEADER="tracestate";var ipA="00",npA="(?!ff)[\\da-f]{2}",apA="(?![0]{32})[\\da-f]{32}",opA="(?![0]{16})[\\da-f]{16}",spA="[\\da-f]{2}",rpA=new RegExp(`^\\s?(${npA})-(${apA})-(${opA})-(${spA})(-.*)?\\s?$`);function $n(A){let Q=rpA.exec(A);if(!Q)return null;if(Q[1]==="00"&&Q[5])return null;return{traceId:Q[2],spanId:Q[3],traceFlags:parseInt(Q[4],16)}}Hn.parseTraceParent=$n;class Ln{inject(A,Q,B){let I=DU.trace.getSpanContext(A);if(!I||(0,lpA.isTracingSuppressed)(A)||!(0,DU.isSpanContextValid)(I))return;let C=`${ipA}-${I.traceId}-${I.spanId}-0${Number(I.traceFlags||DU.TraceFlags.NONE).toString(16)}`;if(B.set(Q,Hn.TRACE_PARENT_HEADER,C),I.traceState)B.set(Q,Hn.TRACE_STATE_HEADER,I.traceState.serialize())}extract(A,Q,B){let I=B.get(Q,Hn.TRACE_PARENT_HEADER);if(!I)return A;let C=Array.isArray(I)?I[0]:I;if(typeof C!=="string")return A;let E=$n(C);if(!E)return A;E.isRemote=!0;let Y=B.get(Q,Hn.TRACE_STATE_HEADER);if(Y){let J=Array.isArray(Y)?Y.join(","):Y;E.traceState=new ppA.TraceState(typeof J==="string"?J:void 0)}return DU.trace.setSpanContext(A,E)}fields(){return[Hn.TRACE_PARENT_HEADER,Hn.TRACE_STATE_HEADER]}}Hn.W3CTraceContextPropagator=Ln});var On=U((Rn)=>{Object.defineProperty(Rn,"__esModule",{value:!0});Rn.getRPCMetadata=Rn.deleteRPCMetadata=Rn.setRPCMetadata=Rn.RPCType=void 0;var epA=P(),GV=(0,epA.createContextKey)("OpenTelemetry SDK Context Key RPC_METADATA"),AiA;(function(A){A.HTTP="http"})(AiA=Rn.RPCType||(Rn.RPCType={}));function QiA(A,Q){return A.setValue(GV,Q)}Rn.setRPCMetadata=QiA;function BiA(A){return A.deleteValue(GV)}Rn.deleteRPCMetadata=BiA;function IiA(A){return A.getValue(GV)}Rn.getRPCMetadata=IiA});var fn=U((yn)=>{Object.defineProperty(yn,"__esModule",{value:!0});yn.isPlainObject=void 0;var YiA="[object Object]",JiA="[object Null]",FiA="[object Undefined]",GiA=Function.prototype,Tn=GiA.toString,DiA=Tn.call(Object),ZiA=Object.getPrototypeOf,Pn=Object.prototype,kn=Pn.hasOwnProperty,$J=Symbol?Symbol.toStringTag:void 0,Sn=Pn.toString;function WiA(A){if(!XiA(A)||UiA(A)!==YiA)return!1;let Q=ZiA(A);if(Q===null)return!0;let B=kn.call(Q,"constructor")&&Q.constructor;return typeof B=="function"&&B instanceof B&&Tn.call(B)===DiA}yn.isPlainObject=WiA;function XiA(A){return A!=null&&typeof A=="object"}function UiA(A){if(A==null)return A===void 0?FiA:JiA;return $J&&$J in Object(A)?wiA(A):KiA(A)}function wiA(A){let Q=kn.call(A,$J),B=A[$J],I=!1;try{A[$J]=void 0,I=!0}catch{}let C=Sn.call(A);if(I)if(Q)A[$J]=B;else delete A[$J];return C}function KiA(A){return Sn.call(A)}});var dn=U((bn)=>{Object.defineProperty(bn,"__esModule",{value:!0});bn.merge=void 0;var gn=fn(),ziA=20;function ViA(...A){let Q=A.shift(),B=new WeakMap;while(A.length>0)Q=xn(Q,A.shift(),0,B);return Q}bn.merge=ViA;function DV(A){if(UU(A))return A.slice();return A}function xn(A,Q,B=0,I){let C;if(B>ziA)return;if(B++,XU(A)||XU(Q)||vn(Q))C=DV(Q);else if(UU(A)){if(C=A.slice(),UU(Q))for(let E=0,Y=Q.length;E"u")delete C[F];else C[F]=G;else{let D=C[F],Z=G;if(hn(A,F,I)||hn(Q,F,I))delete C[F];else{if(z1(D)&&z1(Z)){let W=I.get(D)||[],X=I.get(Z)||[];W.push({obj:A,key:F}),X.push({obj:Q,key:F}),I.set(D,W),I.set(Z,X)}C[F]=xn(C[F],G,B,I)}}}}else C=Q;return C}function hn(A,Q,B){let I=B.get(A[Q])||[];for(let C=0,E=I.length;C"u"||A instanceof Date||A instanceof RegExp||A===null}function $iA(A,Q){if(!(0,gn.isPlainObject)(A)||!(0,gn.isPlainObject)(Q))return!1;return!0}});var ln=U((cn)=>{Object.defineProperty(cn,"__esModule",{value:!0});cn.callWithTimeout=cn.TimeoutError=void 0;class wU extends Error{constructor(A){super(A);Object.setPrototypeOf(this,wU.prototype)}}cn.TimeoutError=wU;function LiA(A,Q){let B,I=new Promise(function(E,Y){B=setTimeout(function(){Y(new wU("Operation timed out."))},Q)});return Promise.race([A,I]).then((C)=>{return clearTimeout(B),C},(C)=>{throw clearTimeout(B),C})}cn.callWithTimeout=LiA});var on=U((nn)=>{Object.defineProperty(nn,"__esModule",{value:!0});nn.isUrlIgnored=nn.urlMatches=void 0;function pn(A,Q){if(typeof Q==="string")return A===Q;else return!!A.match(Q)}nn.urlMatches=pn;function MiA(A,Q){if(!Q)return!1;for(let B of Q)if(pn(A,B))return!0;return!1}nn.isUrlIgnored=MiA});var en=U((rn)=>{Object.defineProperty(rn,"__esModule",{value:!0});rn.Deferred=void 0;class sn{_promise;_resolve;_reject;constructor(){this._promise=new Promise((A,Q)=>{this._resolve=A,this._reject=Q})}get promise(){return this._promise}resolve(A){this._resolve(A)}reject(A){this._reject(A)}}rn.Deferred=sn});var Ia=U((Qa)=>{Object.defineProperty(Qa,"__esModule",{value:!0});Qa.BindOnceFuture=void 0;var jiA=en();class Aa{_isCalled=!1;_deferred=new jiA.Deferred;_callback;_that;constructor(A,Q){this._callback=A,this._that=Q}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...A){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...A)).then((Q)=>this._deferred.resolve(Q),(Q)=>this._deferred.reject(Q))}catch(Q){this._deferred.reject(Q)}}return this._deferred.promise}}Qa.BindOnceFuture=Aa});var Ja=U((Ea)=>{Object.defineProperty(Ea,"__esModule",{value:!0});Ea.diagLogLevelFromString=void 0;var mE=P(),Ca={ALL:mE.DiagLogLevel.ALL,VERBOSE:mE.DiagLogLevel.VERBOSE,DEBUG:mE.DiagLogLevel.DEBUG,INFO:mE.DiagLogLevel.INFO,WARN:mE.DiagLogLevel.WARN,ERROR:mE.DiagLogLevel.ERROR,NONE:mE.DiagLogLevel.NONE};function RiA(A){if(A==null)return;let Q=Ca[A.toUpperCase()];if(Q==null)return mE.diag.warn(`Unknown log level "${A}", expected one of ${Object.keys(Ca)}, using default`),mE.DiagLogLevel.INFO;return Q}Ea.diagLogLevelFromString=RiA});var Za=U((Ga)=>{Object.defineProperty(Ga,"__esModule",{value:!0});Ga._export=void 0;var Fa=P(),qiA=U1();function OiA(A,Q){return new Promise((B)=>{Fa.context.with((0,qiA.suppressTracing)(Fa.context.active()),()=>{A.export(Q,B)})})}Ga._export=OiA});var WV=U((t)=>{Object.defineProperty(t,"__esModule",{value:!0});t.internal=t.diagLogLevelFromString=t.BindOnceFuture=t.urlMatches=t.isUrlIgnored=t.callWithTimeout=t.TimeoutError=t.merge=t.TraceState=t.unsuppressTracing=t.suppressTracing=t.isTracingSuppressed=t.setRPCMetadata=t.getRPCMetadata=t.deleteRPCMetadata=t.RPCType=t.parseTraceParent=t.W3CTraceContextPropagator=t.TRACE_STATE_HEADER=t.TRACE_PARENT_HEADER=t.CompositePropagator=t.otperformance=t.getStringListFromEnv=t.getNumberFromEnv=t.getBooleanFromEnv=t.getStringFromEnv=t._globalThis=t.SDK_INFO=t.parseKeyPairsIntoRecord=t.ExportResultCode=t.unrefTimer=t.timeInputToHrTime=t.millisToHrTime=t.isTimeInputHrTime=t.isTimeInput=t.hrTimeToTimeStamp=t.hrTimeToNanoseconds=t.hrTimeToMilliseconds=t.hrTimeToMicroseconds=t.hrTimeDuration=t.hrTime=t.getTimeOrigin=t.addHrTimes=t.loggingErrorHandler=t.setGlobalErrorHandler=t.globalErrorHandler=t.sanitizeAttributes=t.isAttributeValue=t.AnchoredClock=t.W3CBaggagePropagator=void 0;var TiA=Mv();Object.defineProperty(t,"W3CBaggagePropagator",{enumerable:!0,get:function(){return TiA.W3CBaggagePropagator}});var PiA=qv();Object.defineProperty(t,"AnchoredClock",{enumerable:!0,get:function(){return PiA.AnchoredClock}});var Wa=_v();Object.defineProperty(t,"isAttributeValue",{enumerable:!0,get:function(){return Wa.isAttributeValue}});Object.defineProperty(t,"sanitizeAttributes",{enumerable:!0,get:function(){return Wa.sanitizeAttributes}});var Xa=bv();Object.defineProperty(t,"globalErrorHandler",{enumerable:!0,get:function(){return Xa.globalErrorHandler}});Object.defineProperty(t,"setGlobalErrorHandler",{enumerable:!0,get:function(){return Xa.setGlobalErrorHandler}});var kiA=QV();Object.defineProperty(t,"loggingErrorHandler",{enumerable:!0,get:function(){return kiA.loggingErrorHandler}});var bI=ei();Object.defineProperty(t,"addHrTimes",{enumerable:!0,get:function(){return bI.addHrTimes}});Object.defineProperty(t,"getTimeOrigin",{enumerable:!0,get:function(){return bI.getTimeOrigin}});Object.defineProperty(t,"hrTime",{enumerable:!0,get:function(){return bI.hrTime}});Object.defineProperty(t,"hrTimeDuration",{enumerable:!0,get:function(){return bI.hrTimeDuration}});Object.defineProperty(t,"hrTimeToMicroseconds",{enumerable:!0,get:function(){return bI.hrTimeToMicroseconds}});Object.defineProperty(t,"hrTimeToMilliseconds",{enumerable:!0,get:function(){return bI.hrTimeToMilliseconds}});Object.defineProperty(t,"hrTimeToNanoseconds",{enumerable:!0,get:function(){return bI.hrTimeToNanoseconds}});Object.defineProperty(t,"hrTimeToTimeStamp",{enumerable:!0,get:function(){return bI.hrTimeToTimeStamp}});Object.defineProperty(t,"isTimeInput",{enumerable:!0,get:function(){return bI.isTimeInput}});Object.defineProperty(t,"isTimeInputHrTime",{enumerable:!0,get:function(){return bI.isTimeInputHrTime}});Object.defineProperty(t,"millisToHrTime",{enumerable:!0,get:function(){return bI.millisToHrTime}});Object.defineProperty(t,"timeInputToHrTime",{enumerable:!0,get:function(){return bI.timeInputToHrTime}});var SiA=Bn();Object.defineProperty(t,"unrefTimer",{enumerable:!0,get:function(){return SiA.unrefTimer}});var yiA=Cn();Object.defineProperty(t,"ExportResultCode",{enumerable:!0,get:function(){return yiA.ExportResultCode}});var _iA=tz();Object.defineProperty(t,"parseKeyPairsIntoRecord",{enumerable:!0,get:function(){return _iA.parseKeyPairsIntoRecord}});var LJ=IV();Object.defineProperty(t,"SDK_INFO",{enumerable:!0,get:function(){return LJ.SDK_INFO}});Object.defineProperty(t,"_globalThis",{enumerable:!0,get:function(){return LJ._globalThis}});Object.defineProperty(t,"getStringFromEnv",{enumerable:!0,get:function(){return LJ.getStringFromEnv}});Object.defineProperty(t,"getBooleanFromEnv",{enumerable:!0,get:function(){return LJ.getBooleanFromEnv}});Object.defineProperty(t,"getNumberFromEnv",{enumerable:!0,get:function(){return LJ.getNumberFromEnv}});Object.defineProperty(t,"getStringListFromEnv",{enumerable:!0,get:function(){return LJ.getStringListFromEnv}});Object.defineProperty(t,"otperformance",{enumerable:!0,get:function(){return LJ.otperformance}});var fiA=Gn();Object.defineProperty(t,"CompositePropagator",{enumerable:!0,get:function(){return fiA.CompositePropagator}});var KU=Nn();Object.defineProperty(t,"TRACE_PARENT_HEADER",{enumerable:!0,get:function(){return KU.TRACE_PARENT_HEADER}});Object.defineProperty(t,"TRACE_STATE_HEADER",{enumerable:!0,get:function(){return KU.TRACE_STATE_HEADER}});Object.defineProperty(t,"W3CTraceContextPropagator",{enumerable:!0,get:function(){return KU.W3CTraceContextPropagator}});Object.defineProperty(t,"parseTraceParent",{enumerable:!0,get:function(){return KU.parseTraceParent}});var zU=On();Object.defineProperty(t,"RPCType",{enumerable:!0,get:function(){return zU.RPCType}});Object.defineProperty(t,"deleteRPCMetadata",{enumerable:!0,get:function(){return zU.deleteRPCMetadata}});Object.defineProperty(t,"getRPCMetadata",{enumerable:!0,get:function(){return zU.getRPCMetadata}});Object.defineProperty(t,"setRPCMetadata",{enumerable:!0,get:function(){return zU.setRPCMetadata}});var ZV=U1();Object.defineProperty(t,"isTracingSuppressed",{enumerable:!0,get:function(){return ZV.isTracingSuppressed}});Object.defineProperty(t,"suppressTracing",{enumerable:!0,get:function(){return ZV.suppressTracing}});Object.defineProperty(t,"unsuppressTracing",{enumerable:!0,get:function(){return ZV.unsuppressTracing}});var giA=FV();Object.defineProperty(t,"TraceState",{enumerable:!0,get:function(){return giA.TraceState}});var hiA=dn();Object.defineProperty(t,"merge",{enumerable:!0,get:function(){return hiA.merge}});var Ua=ln();Object.defineProperty(t,"TimeoutError",{enumerable:!0,get:function(){return Ua.TimeoutError}});Object.defineProperty(t,"callWithTimeout",{enumerable:!0,get:function(){return Ua.callWithTimeout}});var wa=on();Object.defineProperty(t,"isUrlIgnored",{enumerable:!0,get:function(){return wa.isUrlIgnored}});Object.defineProperty(t,"urlMatches",{enumerable:!0,get:function(){return wa.urlMatches}});var xiA=Ia();Object.defineProperty(t,"BindOnceFuture",{enumerable:!0,get:function(){return xiA.BindOnceFuture}});var viA=Ja();Object.defineProperty(t,"diagLogLevelFromString",{enumerable:!0,get:function(){return viA.diagLogLevelFromString}});var biA=Za();t.internal={_export:biA._export}});var $a=U((za)=>{Object.defineProperty(za,"__esModule",{value:!0});za.VERSION=void 0;za.VERSION="0.213.0"});var Ha=U((La)=>{Object.defineProperty(La,"__esModule",{value:!0});La.SeverityNumber=void 0;var miA;(function(A){A[A.UNSPECIFIED=0]="UNSPECIFIED",A[A.TRACE=1]="TRACE",A[A.TRACE2=2]="TRACE2",A[A.TRACE3=3]="TRACE3",A[A.TRACE4=4]="TRACE4",A[A.DEBUG=5]="DEBUG",A[A.DEBUG2=6]="DEBUG2",A[A.DEBUG3=7]="DEBUG3",A[A.DEBUG4=8]="DEBUG4",A[A.INFO=9]="INFO",A[A.INFO2=10]="INFO2",A[A.INFO3=11]="INFO3",A[A.INFO4=12]="INFO4",A[A.WARN=13]="WARN",A[A.WARN2=14]="WARN2",A[A.WARN3=15]="WARN3",A[A.WARN4=16]="WARN4",A[A.ERROR=17]="ERROR",A[A.ERROR2=18]="ERROR2",A[A.ERROR3=19]="ERROR3",A[A.ERROR4=20]="ERROR4",A[A.FATAL=21]="FATAL",A[A.FATAL2=22]="FATAL2",A[A.FATAL3=23]="FATAL3",A[A.FATAL4=24]="FATAL4"})(miA=La.SeverityNumber||(La.SeverityNumber={}))});var VU=U((Ma)=>{Object.defineProperty(Ma,"__esModule",{value:!0});Ma.NOOP_LOGGER=Ma.NoopLogger=void 0;class UV{emit(A){}}Ma.NoopLogger=UV;Ma.NOOP_LOGGER=new UV});var qa=U((ja)=>{Object.defineProperty(ja,"__esModule",{value:!0});ja.API_BACKWARDS_COMPATIBILITY_VERSION=ja.makeGetter=ja._global=ja.GLOBAL_LOGS_API_KEY=void 0;ja.GLOBAL_LOGS_API_KEY=Symbol.for("io.opentelemetry.js.api.logs");ja._global=globalThis;function ciA(A,Q,B){return(I)=>I===A?Q:B}ja.makeGetter=ciA;ja.API_BACKWARDS_COMPATIBILITY_VERSION=1});var KV=U((Oa)=>{Object.defineProperty(Oa,"__esModule",{value:!0});Oa.NOOP_LOGGER_PROVIDER=Oa.NoopLoggerProvider=void 0;var iiA=VU();class wV{getLogger(A,Q,B){return new iiA.NoopLogger}}Oa.NoopLoggerProvider=wV;Oa.NOOP_LOGGER_PROVIDER=new wV});var ya=U((ka)=>{Object.defineProperty(ka,"__esModule",{value:!0});ka.ProxyLogger=void 0;var aiA=VU();class Pa{constructor(A,Q,B,I){this._provider=A,this.name=Q,this.version=B,this.options=I}emit(A){this._getLogger().emit(A)}_getLogger(){if(this._delegate)return this._delegate;let A=this._provider._getDelegateLogger(this.name,this.version,this.options);if(!A)return aiA.NOOP_LOGGER;return this._delegate=A,this._delegate}}ka.ProxyLogger=Pa});var ha=U((fa)=>{Object.defineProperty(fa,"__esModule",{value:!0});fa.ProxyLoggerProvider=void 0;var oiA=KV(),siA=ya();class _a{getLogger(A,Q,B){var I;return(I=this._getDelegateLogger(A,Q,B))!==null&&I!==void 0?I:new siA.ProxyLogger(this,A,Q,B)}_getDelegate(){var A;return(A=this._delegate)!==null&&A!==void 0?A:oiA.NOOP_LOGGER_PROVIDER}_setDelegate(A){this._delegate=A}_getDelegateLogger(A,Q,B){var I;return(I=this._delegate)===null||I===void 0?void 0:I.getLogger(A,Q,B)}}fa.ProxyLoggerProvider=_a});var ma=U((va)=>{Object.defineProperty(va,"__esModule",{value:!0});va.LogsAPI=void 0;var mI=qa(),riA=KV(),xa=ha();class zV{constructor(){this._proxyLoggerProvider=new xa.ProxyLoggerProvider}static getInstance(){if(!this._instance)this._instance=new zV;return this._instance}setGlobalLoggerProvider(A){if(mI._global[mI.GLOBAL_LOGS_API_KEY])return this.getLoggerProvider();return mI._global[mI.GLOBAL_LOGS_API_KEY]=(0,mI.makeGetter)(mI.API_BACKWARDS_COMPATIBILITY_VERSION,A,riA.NOOP_LOGGER_PROVIDER),this._proxyLoggerProvider._setDelegate(A),A}getLoggerProvider(){var A,Q;return(Q=(A=mI._global[mI.GLOBAL_LOGS_API_KEY])===null||A===void 0?void 0:A.call(mI._global,mI.API_BACKWARDS_COMPATIBILITY_VERSION))!==null&&Q!==void 0?Q:this._proxyLoggerProvider}getLogger(A,Q,B){return this.getLoggerProvider().getLogger(A,Q,B)}disable(){delete mI._global[mI.GLOBAL_LOGS_API_KEY],this._proxyLoggerProvider=new xa.ProxyLoggerProvider}}va.LogsAPI=zV});var VV=U((V1)=>{Object.defineProperty(V1,"__esModule",{value:!0});V1.logs=V1.NoopLogger=V1.NOOP_LOGGER=V1.SeverityNumber=void 0;var tiA=Ha();Object.defineProperty(V1,"SeverityNumber",{enumerable:!0,get:function(){return tiA.SeverityNumber}});var da=VU();Object.defineProperty(V1,"NOOP_LOGGER",{enumerable:!0,get:function(){return da.NOOP_LOGGER}});Object.defineProperty(V1,"NoopLogger",{enumerable:!0,get:function(){return da.NoopLogger}});var eiA=ma();V1.logs=eiA.LogsAPI.getInstance()});var pa=U((ua)=>{Object.defineProperty(ua,"__esModule",{value:!0});ua.disableInstrumentations=ua.enableInstrumentations=void 0;function AnA(A,Q,B,I){for(let C=0,E=A.length;CQ.disable())}ua.disableInstrumentations=QnA});var sa=U((aa)=>{Object.defineProperty(aa,"__esModule",{value:!0});aa.registerInstrumentations=void 0;var ia=P(),InA=VV(),na=pa();function CnA(A){let Q=A.tracerProvider||ia.trace.getTracerProvider(),B=A.meterProvider||ia.metrics.getMeterProvider(),I=A.loggerProvider||InA.logs.getLoggerProvider(),C=A.instrumentations?.flat()??[];return(0,na.enableInstrumentations)(C,Q,B,I),()=>{(0,na.disableInstrumentations)(C)}}aa.registerInstrumentations=CnA});var Jo=U((Eo)=>{Object.defineProperty(Eo,"__esModule",{value:!0});Eo.satisfies=void 0;var MV=P(),Qo=/^(?:v)?(?(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*))(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,EnA=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|0|[1-9]\d*))?)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,YnA={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function JnA(A,Q,B){if(!FnA(A))return MV.diag.error(`Invalid version: ${A}`),!1;if(!Q)return!0;Q=Q.replace(/([<>=~^]+)\s+/g,"$1");let I=WnA(A);if(!I)return!1;let C=[],E=Bo(I,Q,C,B);if(E&&!B?.includePrerelease)return DnA(I,C);return E}Eo.satisfies=JnA;function FnA(A){return typeof A==="string"&&Qo.test(A)}function Bo(A,Q,B,I){if(Q.includes("||")){let C=Q.trim().split("||");for(let E of C)if($V(A,E,B,I))return!0;return!1}else if(Q.includes(" - "))Q=_nA(Q,I);else if(Q.includes(" ")){let C=Q.trim().replace(/\s{2,}/g," ").split(" ");for(let E of C)if(!$V(A,E,B,I))return!1;return!0}return $V(A,Q,B,I)}function $V(A,Q,B,I){if(Q=ZnA(Q,I),Q.includes(" "))return Bo(A,Q,B,I);else{let C=XnA(Q);return B.push(C),GnA(A,C)}}function GnA(A,Q){if(Q.invalid)return!1;if(!Q.version||HV(Q.version))return!0;let B=ta(A.versionSegments||[],Q.versionSegments||[]);if(B===0){let I=A.prereleaseSegments||[],C=Q.prereleaseSegments||[];if(!I.length&&!C.length)B=0;else if(!I.length&&C.length)B=1;else if(I.length&&!C.length)B=-1;else B=ta(I,C)}return YnA[Q.op]?.includes(B)}function DnA(A,Q){if(A.prerelease)return Q.some((B)=>B.prerelease&&B.version===A.version);return!0}function ZnA(A,Q){return A=A.trim(),A=SnA(A,Q),A=knA(A),A=ynA(A,Q),A=A.trim(),A}function NB(A){return!A||A.toLowerCase()==="x"||A==="*"}function WnA(A){let Q=A.match(Qo);if(!Q){MV.diag.error(`Invalid version: ${A}`);return}let B=Q.groups.version,I=Q.groups.prerelease,C=Q.groups.build,E=B.split("."),Y=I?.split(".");return{op:void 0,version:B,versionSegments:E,versionSegmentCount:E.length,prerelease:I,prereleaseSegments:Y,prereleaseSegmentCount:Y?Y.length:0,build:C}}function XnA(A){if(!A)return{};let Q=A.match(EnA);if(!Q)return MV.diag.error(`Invalid range: ${A}`),{invalid:!0};let B=Q.groups.op,I=Q.groups.version,C=Q.groups.prerelease,E=Q.groups.build,Y=I.split("."),J=C?.split(".");if(B==="==")B="=";return{op:B||"=",version:I,versionSegments:Y,versionSegmentCount:Y.length,prerelease:C,prereleaseSegments:J,prereleaseSegmentCount:J?J.length:0,build:E}}function HV(A){return A==="*"||A==="x"||A==="X"}function ra(A){let Q=parseInt(A,10);return isNaN(Q)?A:Q}function UnA(A,Q){if(typeof A===typeof Q)if(typeof A==="number")return[A,Q];else if(typeof A==="string")return[A,Q];else throw Error("Version segments can only be strings or numbers");else return[String(A),String(Q)]}function wnA(A,Q){if(HV(A)||HV(Q))return 0;let[B,I]=UnA(ra(A),ra(Q));if(B>I)return 1;else if(B)?=?)",ea=`(?:${Co}|${KnA})`,VnA=`(?:-(${ea}(?:\\.${ea})*))`,Ao=`${Io}+`,$nA=`(?:\\+(${Ao}(?:\\.${Ao})*))`,LV=`${Co}|x|X|\\*`,$1=`[v=\\s]*(${LV})(?:\\.(${LV})(?:\\.(${LV})(?:${VnA})?${$nA}?)?)?`,LnA=`^${znA}\\s*${$1}$`,HnA=new RegExp(LnA),MnA=`^\\s*(${$1})\\s+-\\s+(${$1})\\s*$`,NnA=new RegExp(MnA),jnA="(?:~>?)",RnA=`^${jnA}${$1}$`,qnA=new RegExp(RnA),OnA="(?:\\^)",TnA=`^${OnA}${$1}$`,PnA=new RegExp(TnA);function knA(A){let Q=qnA;return A.replace(Q,(B,I,C,E,Y)=>{let J;if(NB(I))J="";else if(NB(C))J=`>=${I}.0.0 <${+I+1}.0.0-0`;else if(NB(E))J=`>=${I}.${C}.0 <${I}.${+C+1}.0-0`;else if(Y)J=`>=${I}.${C}.${E}-${Y} <${I}.${+C+1}.0-0`;else J=`>=${I}.${C}.${E} <${I}.${+C+1}.0-0`;return J})}function SnA(A,Q){let B=PnA,I=Q?.includePrerelease?"-0":"";return A.replace(B,(C,E,Y,J,F)=>{let G;if(NB(E))G="";else if(NB(Y))G=`>=${E}.0.0${I} <${+E+1}.0.0-0`;else if(NB(J))if(E==="0")G=`>=${E}.${Y}.0${I} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.0${I} <${+E+1}.0.0-0`;else if(F)if(E==="0")if(Y==="0")G=`>=${E}.${Y}.${J}-${F} <${E}.${Y}.${+J+1}-0`;else G=`>=${E}.${Y}.${J}-${F} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.${J}-${F} <${+E+1}.0.0-0`;else if(E==="0")if(Y==="0")G=`>=${E}.${Y}.${J}${I} <${E}.${Y}.${+J+1}-0`;else G=`>=${E}.${Y}.${J}${I} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.${J} <${+E+1}.0.0-0`;return G})}function ynA(A,Q){let B=HnA;return A.replace(B,(I,C,E,Y,J,F)=>{let G=NB(E),D=G||NB(Y),Z=D||NB(J),W=Z;if(C==="="&&W)C="";if(F=Q?.includePrerelease?"-0":"",G)if(C===">"||C==="<")I="<0.0.0-0";else I="*";else if(C&&W){if(D)Y=0;if(J=0,C===">")if(C=">=",D)E=+E+1,Y=0,J=0;else Y=+Y+1,J=0;else if(C==="<=")if(C="<",D)E=+E+1;else Y=+Y+1;if(C==="<")F="-0";I=`${C+E}.${Y}.${J}${F}`}else if(D)I=`>=${E}.0.0${F} <${+E+1}.0.0-0`;else if(Z)I=`>=${E}.${Y}.0${F} <${E}.${+Y+1}.0-0`;return I})}function _nA(A,Q){let B=NnA;return A.replace(B,(I,C,E,Y,J,F,G,D,Z,W,X,w)=>{if(NB(E))C="";else if(NB(Y))C=`>=${E}.0.0${Q?.includePrerelease?"-0":""}`;else if(NB(J))C=`>=${E}.${Y}.0${Q?.includePrerelease?"-0":""}`;else if(F)C=`>=${C}`;else C=`>=${C}${Q?.includePrerelease?"-0":""}`;if(NB(Z))D="";else if(NB(W))D=`<${+Z+1}.0.0-0`;else if(NB(X))D=`<${Z}.${+W+1}.0-0`;else if(w)D=`<=${Z}.${W}.${X}-${w}`;else if(Q?.includePrerelease)D=`<${Z}.${W}.${+X+1}-0`;else D=`<=${D}`;return`${C} ${D}`.trim()})}});var qV=U((Fo)=>{Object.defineProperty(Fo,"__esModule",{value:!0});Fo.massUnwrap=Fo.unwrap=Fo.massWrap=Fo.wrap=void 0;var jB=console.error.bind(console);function L1(A,Q,B){let I=!!A[Q]&&Object.prototype.propertyIsEnumerable.call(A,Q);Object.defineProperty(A,Q,{configurable:!0,enumerable:I,writable:!0,value:B})}var fnA=(A,Q,B)=>{if(!A||!A[Q]){jB("no original function "+String(Q)+" to wrap");return}if(!B){jB("no wrapper function"),jB(Error().stack);return}let I=A[Q];if(typeof I!=="function"||typeof B!=="function"){jB("original object and wrapper must be functions");return}let C=B(I,Q);return L1(C,"__original",I),L1(C,"__unwrap",()=>{if(A[Q]===C)L1(A,Q,I)}),L1(C,"__wrapped",!0),L1(A,Q,C),C};Fo.wrap=fnA;var gnA=(A,Q,B)=>{if(!A){jB("must provide one or more modules to patch"),jB(Error().stack);return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){jB("must provide one or more functions to wrap on modules");return}A.forEach((I)=>{Q.forEach((C)=>{Fo.wrap(I,C,B)})})};Fo.massWrap=gnA;var hnA=(A,Q)=>{if(!A||!A[Q]){jB("no function to unwrap."),jB(Error().stack);return}let B=A[Q];if(!B.__unwrap)jB("no original to unwrap to -- has "+String(Q)+" already been unwrapped?");else{B.__unwrap();return}};Fo.unwrap=hnA;var xnA=(A,Q)=>{if(!A){jB("must provide one or more modules to patch"),jB(Error().stack);return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){jB("must provide one or more functions to unwrap on modules");return}A.forEach((B)=>{Q.forEach((I)=>{Fo.unwrap(B,I)})})};Fo.massUnwrap=xnA;function H1(A){if(A&&A.logger)if(typeof A.logger!=="function")jB("new logger isn't a function, not replacing");else jB=A.logger}Fo.default=H1;H1.wrap=Fo.wrap;H1.massWrap=Fo.massWrap;H1.unwrap=Fo.unwrap;H1.massUnwrap=Fo.massUnwrap});var Xo=U((Zo)=>{Object.defineProperty(Zo,"__esModule",{value:!0});Zo.InstrumentationAbstract=void 0;var OV=P(),bnA=VV(),$U=qV();class Do{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(A,Q,B){this.instrumentationName=A,this.instrumentationVersion=Q,this.setConfig(B),this._diag=OV.diag.createComponentLogger({namespace:A}),this._tracer=OV.trace.getTracer(A,Q),this._meter=OV.metrics.getMeter(A,Q),this._logger=bnA.logs.getLogger(A,Q),this._updateMetricInstruments()}_wrap=$U.wrap;_unwrap=$U.unwrap;_massWrap=$U.massWrap;_massUnwrap=$U.massUnwrap;get meter(){return this._meter}setMeterProvider(A){this._meter=A.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(A){this._logger=A.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let A=this.init()??[];if(!Array.isArray(A))return[A];return A}_updateMetricInstruments(){return}getConfig(){return this._config}setConfig(A){this._config={enabled:!0,...A}}setTracerProvider(A){this._tracer=A.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(A,Q,B,I){if(!A)return;try{A(B,I)}catch(C){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:Q},C)}}}Zo.InstrumentationAbstract=Do});var wo=U((rjQ,Uo)=>{var jG=1000,RG=jG*60,qG=RG*60,HJ=qG*24,mnA=HJ*7,dnA=HJ*365.25;Uo.exports=function(A,Q){Q=Q||{};var B=typeof A;if(B==="string"&&A.length>0)return cnA(A);else if(B==="number"&&isFinite(A))return Q.long?lnA(A):unA(A);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(A))};function cnA(A){if(A=String(A),A.length>100)return;var Q=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(A);if(!Q)return;var B=parseFloat(Q[1]),I=(Q[2]||"ms").toLowerCase();switch(I){case"years":case"year":case"yrs":case"yr":case"y":return B*dnA;case"weeks":case"week":case"w":return B*mnA;case"days":case"day":case"d":return B*HJ;case"hours":case"hour":case"hrs":case"hr":case"h":return B*qG;case"minutes":case"minute":case"mins":case"min":case"m":return B*RG;case"seconds":case"second":case"secs":case"sec":case"s":return B*jG;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return B;default:return}}function unA(A){var Q=Math.abs(A);if(Q>=HJ)return Math.round(A/HJ)+"d";if(Q>=qG)return Math.round(A/qG)+"h";if(Q>=RG)return Math.round(A/RG)+"m";if(Q>=jG)return Math.round(A/jG)+"s";return A+"ms"}function lnA(A){var Q=Math.abs(A);if(Q>=HJ)return LU(A,Q,HJ,"day");if(Q>=qG)return LU(A,Q,qG,"hour");if(Q>=RG)return LU(A,Q,RG,"minute");if(Q>=jG)return LU(A,Q,jG,"second");return A+" ms"}function LU(A,Q,B,I){var C=Q>=B*1.5;return Math.round(A/B)+" "+I+(C?"s":"")}});var TV=U((tjQ,Ko)=>{function pnA(A){B.debug=B,B.default=B,B.coerce=F,B.disable=Y,B.enable=C,B.enabled=J,B.humanize=wo(),B.destroy=G,Object.keys(A).forEach((D)=>{B[D]=A[D]}),B.names=[],B.skips=[],B.formatters={};function Q(D){let Z=0;for(let W=0;W{if(g==="%%")return"%";O++;let dA=B.formatters[x];if(typeof dA==="function"){let cA=z[O];g=dA.call($,cA),z.splice(O,1),O--}return g}),B.formatArgs.call($,z),($.log||B.log).apply($,z)}if(K.namespace=D,K.useColors=B.useColors(),K.color=B.selectColor(D),K.extend=I,K.destroy=B.destroy,Object.defineProperty(K,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(W!==null)return W;if(X!==B.namespaces)X=B.namespaces,w=B.enabled(D);return w},set:(z)=>{W=z}}),typeof B.init==="function")B.init(K);return K}function I(D,Z){let W=B(this.namespace+(typeof Z>"u"?":":Z)+D);return W.log=this.log,W}function C(D){B.save(D),B.namespaces=D,B.names=[],B.skips=[];let Z=(typeof D==="string"?D:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let W of Z)if(W[0]==="-")B.skips.push(W.slice(1));else B.names.push(W)}function E(D,Z){let W=0,X=0,w=-1,K=0;while(W"-"+Z)].join(",");return B.enable(""),D}function J(D){for(let Z of B.skips)if(E(D,Z))return!1;for(let Z of B.names)if(E(D,Z))return!0;return!1}function F(D){if(D instanceof Error)return D.stack||D.message;return D}function G(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return B.enable(B.load()),B}Ko.exports=pnA});var Vo=U((zo,HU)=>{zo.formatArgs=nnA;zo.save=anA;zo.load=onA;zo.useColors=inA;zo.storage=snA();zo.destroy=(()=>{let A=!1;return()=>{if(!A)A=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}})();zo.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function inA(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let A;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(A=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(A[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function nnA(A){if(A[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+A[0]+(this.useColors?"%c ":" ")+"+"+HU.exports.humanize(this.diff),!this.useColors)return;let Q="color: "+this.color;A.splice(1,0,Q,"color: inherit");let B=0,I=0;A[0].replace(/%[a-zA-Z%]/g,(C)=>{if(C==="%%")return;if(B++,C==="%c")I=B}),A.splice(I,0,Q)}zo.log=console.debug||console.log||(()=>{});function anA(A){try{if(A)zo.storage.setItem("debug",A);else zo.storage.removeItem("debug")}catch(Q){}}function onA(){let A;try{A=zo.storage.getItem("debug")||zo.storage.getItem("DEBUG")}catch(Q){}if(!A&&typeof process<"u"&&"env"in process)A=process.env.DEBUG;return A}function snA(){try{return localStorage}catch(A){}}HU.exports=TV()(zo);var{formatters:rnA}=HU.exports;rnA.j=function(A){try{return JSON.stringify(A)}catch(Q){return"[UnexpectedJSONParseError]: "+Q.message}}});var Lo=U((ARQ,$o)=>{$o.exports=(A,Q=process.argv)=>{let B=A.startsWith("-")?"":A.length===1?"-":"--",I=Q.indexOf(B+A),C=Q.indexOf("--");return I!==-1&&(C===-1||I{var EaA=M("os"),Ho=M("tty"),dI=Lo(),{env:mQ}=process,n0;if(dI("no-color")||dI("no-colors")||dI("color=false")||dI("color=never"))n0=0;else if(dI("color")||dI("colors")||dI("color=true")||dI("color=always"))n0=1;if("FORCE_COLOR"in mQ)if(mQ.FORCE_COLOR==="true")n0=1;else if(mQ.FORCE_COLOR==="false")n0=0;else n0=mQ.FORCE_COLOR.length===0?1:Math.min(parseInt(mQ.FORCE_COLOR,10),3);function PV(A){if(A===0)return!1;return{level:A,hasBasic:!0,has256:A>=2,has16m:A>=3}}function kV(A,Q){if(n0===0)return 0;if(dI("color=16m")||dI("color=full")||dI("color=truecolor"))return 3;if(dI("color=256"))return 2;if(A&&!Q&&n0===void 0)return 0;let B=n0||0;if(mQ.TERM==="dumb")return B;if(process.platform==="win32"){let I=EaA.release().split(".");if(Number(I[0])>=10&&Number(I[2])>=10586)return Number(I[2])>=14931?3:2;return 1}if("CI"in mQ){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((I)=>(I in mQ))||mQ.CI_NAME==="codeship")return 1;return B}if("TEAMCITY_VERSION"in mQ)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(mQ.TEAMCITY_VERSION)?1:0;if(mQ.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in mQ){let I=parseInt((mQ.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(mQ.TERM_PROGRAM){case"iTerm.app":return I>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(mQ.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(mQ.TERM))return 1;if("COLORTERM"in mQ)return 1;return B}function YaA(A){let Q=kV(A,A&&A.isTTY);return PV(Q)}Mo.exports={supportsColor:YaA,stdout:PV(kV(!0,Ho.isatty(1))),stderr:PV(kV(!0,Ho.isatty(2)))}});var Oo=U((Ro,NU)=>{var JaA=M("tty"),MU=M("util");Ro.init=UaA;Ro.log=ZaA;Ro.formatArgs=GaA;Ro.save=WaA;Ro.load=XaA;Ro.useColors=FaA;Ro.destroy=MU.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");Ro.colors=[6,2,3,4,5,1];try{let A=No();if(A&&(A.stderr||A).level>=2)Ro.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}catch(A){}Ro.inspectOpts=Object.keys(process.env).filter((A)=>{return/^debug_/i.test(A)}).reduce((A,Q)=>{let B=Q.substring(6).toLowerCase().replace(/_([a-z])/g,(C,E)=>{return E.toUpperCase()}),I=process.env[Q];if(/^(yes|on|true|enabled)$/i.test(I))I=!0;else if(/^(no|off|false|disabled)$/i.test(I))I=!1;else if(I==="null")I=null;else I=Number(I);return A[B]=I,A},{});function FaA(){return"colors"in Ro.inspectOpts?Boolean(Ro.inspectOpts.colors):JaA.isatty(process.stderr.fd)}function GaA(A){let{namespace:Q,useColors:B}=this;if(B){let I=this.color,C="\x1B[3"+(I<8?I:"8;5;"+I),E=` ${C};1m${Q} \x1B[0m`;A[0]=E+A[0].split(` +`).join(` +`+E),A.push(C+"m+"+NU.exports.humanize(this.diff)+"\x1B[0m")}else A[0]=DaA()+Q+" "+A[0]}function DaA(){if(Ro.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function ZaA(...A){return process.stderr.write(MU.formatWithOptions(Ro.inspectOpts,...A)+` +`)}function WaA(A){if(A)process.env.DEBUG=A;else delete process.env.DEBUG}function XaA(){return process.env.DEBUG}function UaA(A){A.inspectOpts={};let Q=Object.keys(Ro.inspectOpts);for(let B=0;BQ.trim()).join(" ")};jo.O=function(A){return this.inspectOpts.colors=this.useColors,MU.inspect(A,this.inspectOpts)}});var To=U((IRQ,SV)=>{if(typeof process>"u"||process.type==="renderer"||!1||process.__nwjs)SV.exports=Vo();else SV.exports=Oo()});var N1=U((CRQ,Po)=>{var yV=M("path").sep;Po.exports=function(A){var Q=A.split(yV),B=Q.lastIndexOf("node_modules");if(B===-1)return;if(!Q[B+1])return;var I=Q[B+1][0]==="@",C=I?Q[B+1]+"/"+Q[B+2]:Q[B+1],E=I?3:2,Y="",J=B+E-1;for(var F=0;F<=J;F++)if(F===J)Y+=Q[F];else Y+=Q[F]+yV;var G="",D=Q.length-1;for(var Z=B+E;Z<=D;Z++)if(Z===D)G+=Q[Z];else G+=Q[Z]+yV;return{name:C,basedir:Y,path:G}}});var NJ=U((ERQ,fV)=>{var OG=M("path"),MC=M("module"),$Q=To()("require-in-the-middle"),MaA=N1();fV.exports=j1;fV.exports.Hook=j1;var _V,jU;if(MC.isBuiltin)jU=MC.isBuiltin;else if(MC.builtinModules)jU=(A)=>{if(A.startsWith("node:"))return!0;if(_V===void 0)_V=new Set(MC.builtinModules);return _V.has(A)};else throw Error("'require-in-the-middle' requires Node.js >=v9.3.0 or >=v8.10.0");var NaA=/([/\\]index)?(\.js)?$/;class ko{constructor(){this._localCache=new Map,this._kRitmExports=Symbol("RitmExports")}has(A,Q){if(this._localCache.has(A))return!0;else if(!Q){let B=M.cache[A];return!!(B&&(this._kRitmExports in B))}else return!1}get(A,Q){let B=this._localCache.get(A);if(B!==void 0)return B;else if(!Q){let I=M.cache[A];return I&&I[this._kRitmExports]}}set(A,Q,B){if(B)this._localCache.set(A,Q);else if(A in M.cache)M.cache[A][this._kRitmExports]=Q;else $Q('non-core module is unexpectedly not in require.cache: "%s"',A),this._localCache.set(A,Q)}}function j1(A,Q,B){if(this instanceof j1===!1)return new j1(A,Q,B);if(typeof A==="function")B=A,A=null,Q=null;else if(typeof Q==="function")B=Q,Q=null;if(typeof MC._resolveFilename!=="function"){console.error("Error: Expected Module._resolveFilename to be a function (was: %s) - aborting!",typeof MC._resolveFilename),console.error("Please report this error as an issue related to Node.js %s at https://github.com/nodejs/require-in-the-middle/issues",process.version);return}this._cache=new ko,this._unhooked=!1,this._origRequire=MC.prototype.require;let I=this,C=new Set,E=Q?Q.internals===!0:!1,Y=Array.isArray(A);if($Q("registering require hook"),this._require=MC.prototype.require=function(F){if(I._unhooked===!0)return $Q("ignoring require call - module is soft-unhooked"),I._origRequire.apply(this,arguments);return J.call(this,arguments,!1)},typeof process.getBuiltinModule==="function")this._origGetBuiltinModule=process.getBuiltinModule,this._getBuiltinModule=process.getBuiltinModule=function(F){if(I._unhooked===!0)return $Q("ignoring process.getBuiltinModule call - module is soft-unhooked"),I._origGetBuiltinModule.apply(this,arguments);return J.call(this,arguments,!0)};function J(F,G){let D=F[0],Z=jU(D),W;if(Z){if(W=D,D.startsWith("node:")){let N=D.slice(5);if(jU(N))W=N}}else if(G)return $Q("call to process.getBuiltinModule with unknown built-in id"),I._origGetBuiltinModule.apply(this,F);else try{W=MC._resolveFilename(D,this)}catch(N){return $Q('Module._resolveFilename("%s") threw %j, calling original Module.require',D,N.message),I._origRequire.apply(this,F)}let X,w;if($Q("processing %s module require('%s'): %s",Z===!0?"core":"non-core",D,W),I._cache.has(W,Z)===!0)return $Q("returning already patched cached module: %s",W),I._cache.get(W,Z);let K=C.has(W);if(K===!1)C.add(W);let z=G?I._origGetBuiltinModule.apply(this,F):I._origRequire.apply(this,F);if(K===!0)return $Q("module is in the process of being patched already - ignoring: %s",W),z;if(C.delete(W),Z===!0){if(Y===!0&&A.includes(W)===!1)return $Q("ignoring core module not on whitelist: %s",W),z;X=W}else if(Y===!0&&A.includes(W)){let N=OG.parse(W);X=N.name,w=N.dir}else{let N=MaA(W);if(N===void 0)return $Q("could not parse filename: %s",W),z;X=N.name,w=N.basedir;let j=jaA(N);$Q("resolved filename to module: %s (id: %s, resolved: %s, basedir: %s)",X,D,j,w);let O=!1;if(Y){if(!D.startsWith(".")&&A.includes(D))X=D,O=!0;if(!A.includes(X)&&!A.includes(j))return z;if(A.includes(j)&&j!==X)X=j,O=!0}if(!O){let k;try{k=M.resolve(X,{paths:[w]})}catch(g){return $Q("could not resolve module: %s",X),I._cache.set(W,z,Z),z}if(k!==W)if(E===!0)X=X+OG.sep+OG.relative(w,W),$Q("preparing to process require of internal file: %s",X);else return $Q("ignoring require of non-main module file: %s",k),I._cache.set(W,z,Z),z}}I._cache.set(W,z,Z),$Q("calling require hook: %s",X);let $=B(z,X,w);return I._cache.set(W,$,Z),$Q("returning module: %s",X),$}}j1.prototype.unhook=function(){if(this._unhooked=!0,this._require===MC.prototype.require)MC.prototype.require=this._origRequire,$Q("require unhook successful");else $Q("require unhook unsuccessful");if(process.getBuiltinModule!==void 0)if(this._getBuiltinModule===process.getBuiltinModule)process.getBuiltinModule=this._origGetBuiltinModule,$Q("process.getBuiltinModule unhook successful");else $Q("process.getBuiltinModule unhook unsuccessful")};function jaA(A){let Q=OG.sep!=="/"?A.path.split(OG.sep).join("/"):A.path;return OG.posix.join(A.name,Q).replace(NaA,"")}});var fo=U((yo)=>{Object.defineProperty(yo,"__esModule",{value:!0});yo.ModuleNameTrie=yo.ModuleNameSeparator=void 0;yo.ModuleNameSeparator="/";class gV{hooks=[];children=new Map}class So{_trie=new gV;_counter=0;insert(A){let Q=this._trie;for(let B of A.moduleName.split(yo.ModuleNameSeparator)){let I=Q.children.get(B);if(!I)I=new gV,Q.children.set(B,I);Q=I}Q.hooks.push({hook:A,insertedId:this._counter++})}search(A,{maintainInsertionOrder:Q,fullOnly:B}={}){let I=this._trie,C=[],E=!0;for(let Y of A.split(yo.ModuleNameSeparator)){let J=I.children.get(Y);if(!J){E=!1;break}if(!B)C.push(...J.hooks);I=J}if(B&&E)C.push(...I.hooks);if(C.length===0)return[];if(C.length===1)return[C[0].hook];if(Q)C.sort((Y,J)=>Y.insertedId-J.insertedId);return C.map(({hook:Y})=>Y)}}yo.ModuleNameTrie=So});var vo=U((ho)=>{Object.defineProperty(ho,"__esModule",{value:!0});ho.RequireInTheMiddleSingleton=void 0;var RaA=NJ(),go=M("path"),xV=fo(),qaA=["afterEach","after","beforeEach","before","describe","it"].every((A)=>{return typeof global[A]==="function"});class RU{_moduleNameTrie=new xV.ModuleNameTrie;static _instance;constructor(){this._initialize()}_initialize(){new RaA.Hook(null,{internals:!0},(A,Q,B)=>{let I=OaA(Q),C=this._moduleNameTrie.search(I,{maintainInsertionOrder:!0,fullOnly:B===void 0});for(let{onRequire:E}of C)A=E(A,Q,B);return A})}register(A,Q){let B={moduleName:A,onRequire:Q};return this._moduleNameTrie.insert(B),B}static getInstance(){if(qaA)return new RU;return this._instance=this._instance??new RU}}ho.RequireInTheMiddleSingleton=RU;function OaA(A){return go.sep!==xV.ModuleNameSeparator?A.split(go.sep).join(xV.ModuleNameSeparator):A}});var lo=U((kaA)=>{var bo=[],vV=new WeakMap,mo=new WeakMap,co=new Map,uo=[],TaA={set(A,Q,B){let I=vV.get(A),C=I&&I[Q];if(typeof C==="function")return C(B);return!0},get(A,Q){if(Q===Symbol.toStringTag)return"Module";let B=mo.get(A)[Q];if(typeof B==="function")return B()},defineProperty(A,Q,B){if(!("value"in B))throw Error("Getters/setters are not supported for exports property descriptors.");let I=vV.get(A),C=I&&I[Q];if(typeof C==="function")return C(B.value);return!0}};function PaA(A,Q,B,I,C){co.set(A,C),vV.set(Q,B),mo.set(Q,I);let E=new Proxy(Q,TaA);bo.forEach((Y)=>Y(A,E,C)),uo.push([A,E,C])}kaA.register=PaA;kaA.importHooks=bo;kaA.specifiers=co;kaA.toHook=uo});var cV=U((DRQ,PG)=>{var po=M("path"),gaA=N1(),{fileURLToPath:haA}=M("url"),{MessageChannel:xaA}=M("worker_threads"),{isBuiltin:bV}=M("module");if(!bV)bV=()=>!0;var{importHooks:mV,specifiers:vaA,toHook:baA}=lo();function io(A){mV.push(A),baA.forEach(([Q,B,I])=>A(Q,B,I))}function no(A){let Q=mV.indexOf(A);if(Q>-1)mV.splice(Q,1)}function TG(A,Q,B,I){let C=A(Q,B,I);if(C&&C!==Q){if("default"in Q)Q.default=C}}var dV;function maA(){let{port1:A,port2:Q}=new xaA,B=0,I;dV=(J)=>{B++,A.postMessage(J)},A.on("message",()=>{if(B--,I&&B<=0)I()}).unref();function C(){let J=setInterval(()=>{},1000),F=new Promise((G)=>{I=G}).then(()=>{clearInterval(J)});if(B===0)I();return F}let E=Q;return{registerOptions:{data:{addHookMessagePort:E,include:[]},transferList:[E]},addHookMessagePort:E,waitForAllMessagesAcknowledged:C}}function R1(A,Q,B){if(this instanceof R1===!1)return new R1(A,Q,B);if(typeof A==="function")B=A,A=null,Q=null;else if(typeof Q==="function")B=Q,Q=null;let I=Q?Q.internals===!0:!1;if(dV&&Array.isArray(A))dV(A);this._iitmHook=(C,E,Y)=>{let J=C,F=J.startsWith("node:"),G,D;if(F){let Z=C.slice(5);if(bV(Z))C=Z}else if(J.startsWith("file://")){let Z=Error.stackTraceLimit;Error.stackTraceLimit=0;try{G=haA(C),C=G}catch(W){}if(Error.stackTraceLimit=Z,G){let W=gaA(G);if(W)C=W.name,D=W.basedir}}if(A){for(let Z of A)if(G&&Z===G)TG(B,E,G,void 0);else if(Z===C){if(!D)TG(B,E,C,D);else if(D.endsWith(vaA.get(J)))TG(B,E,C,D);else if(I){let W=C+po.sep+po.relative(D,G);TG(B,E,W,D)}}else if(Z===Y)TG(B,E,Y,D)}else TG(B,E,C,D)},io(this._iitmHook)}R1.prototype.unhook=function(){no(this._iitmHook)};PG.exports=R1;PG.exports.Hook=R1;PG.exports.addHook=io;PG.exports.removeHook=no;PG.exports.createAddHookMessageChannel=maA});var uV=U((ao)=>{Object.defineProperty(ao,"__esModule",{value:!0});ao.isWrapped=ao.safeExecuteInTheMiddleAsync=ao.safeExecuteInTheMiddle=void 0;function daA(A,Q,B){let I,C;try{C=A()}catch(E){I=E}finally{if(Q(I,C),I&&!B)throw I;return C}}ao.safeExecuteInTheMiddle=daA;async function caA(A,Q,B){let I,C;try{C=await A()}catch(E){I=E}finally{if(await Q(I,C),I&&!B)throw I;return C}}ao.safeExecuteInTheMiddleAsync=caA;function uaA(A){return typeof A==="function"&&typeof A.__original==="function"&&typeof A.__unwrap==="function"&&A.__wrapped===!0}ao.isWrapped=uaA});var Qs=U((eo)=>{Object.defineProperty(eo,"__esModule",{value:!0});eo.InstrumentationBase=void 0;var q1=M("path"),so=M("util"),iaA=Jo(),lV=qV(),naA=Xo(),aaA=vo(),oaA=cV(),O1=P(),saA=NJ(),raA=M("fs"),taA=uV();class to extends naA.InstrumentationAbstract{_modules;_hooks=[];_requireInTheMiddleSingleton=aaA.RequireInTheMiddleSingleton.getInstance();_enabled=!1;constructor(A,Q,B){super(A,Q,B);let I=this.init();if(I&&!Array.isArray(I))I=[I];if(this._modules=I||[],this._config.enabled)this.enable()}_wrap=(A,Q,B)=>{if((0,taA.isWrapped)(A[Q]))this._unwrap(A,Q);if(!so.types.isProxy(A))return(0,lV.wrap)(A,Q,B);else{let I=(0,lV.wrap)(Object.assign({},A),Q,B);return Object.defineProperty(A,Q,{value:I}),I}};_unwrap=(A,Q)=>{if(!so.types.isProxy(A))return(0,lV.unwrap)(A,Q);else return Object.defineProperty(A,Q,{value:A[Q]})};_massWrap=(A,Q,B)=>{if(!A){O1.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){O1.diag.error("must provide one or more functions to wrap on modules");return}A.forEach((I)=>{Q.forEach((C)=>{this._wrap(I,C,B)})})};_massUnwrap=(A,Q)=>{if(!A){O1.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){O1.diag.error("must provide one or more functions to wrap on modules");return}A.forEach((B)=>{Q.forEach((I)=>{this._unwrap(B,I)})})};_warnOnPreloadedModules(){this._modules.forEach((A)=>{let{name:Q}=A;try{let B=M.resolve(Q);if(M.cache[B])this._diag.warn(`Module ${Q} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${Q}`)}catch{}})}_extractPackageVersion(A){try{let Q=(0,raA.readFileSync)(q1.join(A,"package.json"),{encoding:"utf8"}),B=JSON.parse(Q).version;return typeof B==="string"?B:void 0}catch{O1.diag.warn("Failed extracting version",A)}return}_onRequire(A,Q,B,I){if(!I){if(typeof A.patch==="function"){if(A.moduleExports=Q,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:A.name}),A.patch(Q)}return Q}let C=this._extractPackageVersion(I);if(A.moduleVersion=C,A.name===B){if(ro(A.supportedVersions,C,A.includePrerelease)){if(typeof A.patch==="function"){if(A.moduleExports=Q,this._enabled)return this._diag.debug("Applying instrumentation patch for module on require hook",{module:A.name,version:A.moduleVersion,baseDir:I}),A.patch(Q,A.moduleVersion)}}return Q}let E=A.files??[],Y=q1.normalize(B);return E.filter((F)=>F.name===Y&&ro(F.supportedVersions,C,A.includePrerelease)).reduce((F,G)=>{if(G.moduleExports=F,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:A.name,version:A.moduleVersion,fileName:G.name,baseDir:I}),G.patch(F,A.moduleVersion);return F},Q)}enable(){if(this._enabled)return;if(this._enabled=!0,this._hooks.length>0){for(let A of this._modules){if(typeof A.patch==="function"&&A.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:A.name,version:A.moduleVersion}),A.patch(A.moduleExports,A.moduleVersion);for(let Q of A.files)if(Q.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:A.name,version:A.moduleVersion,fileName:Q.name}),Q.patch(Q.moduleExports,A.moduleVersion)}return}this._warnOnPreloadedModules();for(let A of this._modules){let Q=(E,Y,J)=>{if(!J&&q1.isAbsolute(Y)){let F=q1.parse(Y);Y=F.name,J=F.dir}return this._onRequire(A,E,Y,J)},B=(E,Y,J)=>{return this._onRequire(A,E,Y,J)},I=q1.isAbsolute(A.name)?new saA.Hook([A.name],{internals:!0},B):this._requireInTheMiddleSingleton.register(A.name,B);this._hooks.push(I);let C=new oaA.Hook([A.name],{internals:!0},Q);this._hooks.push(C)}}disable(){if(!this._enabled)return;this._enabled=!1;for(let A of this._modules){if(typeof A.unpatch==="function"&&A.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:A.name,version:A.moduleVersion}),A.unpatch(A.moduleExports,A.moduleVersion);for(let Q of A.files)if(Q.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:A.name,version:A.moduleVersion,fileName:Q.name}),Q.unpatch(Q.moduleExports,A.moduleVersion)}}isEnabled(){return this._enabled}}eo.InstrumentationBase=to;function ro(A,Q,B){if(typeof Q>"u")return A.includes("*");return A.some((I)=>{return(0,iaA.satisfies)(Q,I,{includePrerelease:B})})}});var Bs=U((pV)=>{Object.defineProperty(pV,"__esModule",{value:!0});pV.normalize=void 0;var eaA=M("path");Object.defineProperty(pV,"normalize",{enumerable:!0,get:function(){return eaA.normalize}})});var Is=U((qU)=>{Object.defineProperty(qU,"__esModule",{value:!0});qU.normalize=qU.InstrumentationBase=void 0;var QoA=Qs();Object.defineProperty(qU,"InstrumentationBase",{enumerable:!0,get:function(){return QoA.InstrumentationBase}});var BoA=Bs();Object.defineProperty(qU,"normalize",{enumerable:!0,get:function(){return BoA.normalize}})});var iV=U((OU)=>{Object.defineProperty(OU,"__esModule",{value:!0});OU.normalize=OU.InstrumentationBase=void 0;var Cs=Is();Object.defineProperty(OU,"InstrumentationBase",{enumerable:!0,get:function(){return Cs.InstrumentationBase}});Object.defineProperty(OU,"normalize",{enumerable:!0,get:function(){return Cs.normalize}})});var Fs=U((Ys)=>{Object.defineProperty(Ys,"__esModule",{value:!0});Ys.InstrumentationNodeModuleDefinition=void 0;class Es{files;name;supportedVersions;patch;unpatch;constructor(A,Q,B,I,C){this.files=C||[],this.name=A,this.supportedVersions=Q,this.patch=B,this.unpatch=I}}Ys.InstrumentationNodeModuleDefinition=Es});var Ws=U((Ds)=>{Object.defineProperty(Ds,"__esModule",{value:!0});Ds.InstrumentationNodeModuleFile=void 0;var EoA=iV();class Gs{name;supportedVersions;patch;unpatch;constructor(A,Q,B,I){this.name=(0,EoA.normalize)(A),this.supportedVersions=Q,this.patch=B,this.unpatch=I}}Ds.InstrumentationNodeModuleFile=Gs});var Ks=U((Us)=>{Object.defineProperty(Us,"__esModule",{value:!0});Us.semconvStabilityFromStr=Us.SemconvStability=void 0;var TU;(function(A){A[A.STABLE=1]="STABLE",A[A.OLD=2]="OLD",A[A.DUPLICATE=3]="DUPLICATE"})(TU=Us.SemconvStability||(Us.SemconvStability={}));function YoA(A,Q){let B=TU.OLD,I=Q?.split(",").map((C)=>C.trim()).filter((C)=>C!=="");for(let C of I??[])if(C.toLowerCase()===A+"/dup"){B=TU.DUPLICATE;break}else if(C.toLowerCase()===A)B=TU.STABLE;return B}Us.semconvStabilityFromStr=YoA});var JA=U((NC)=>{Object.defineProperty(NC,"__esModule",{value:!0});NC.semconvStabilityFromStr=NC.SemconvStability=NC.safeExecuteInTheMiddleAsync=NC.safeExecuteInTheMiddle=NC.isWrapped=NC.InstrumentationNodeModuleFile=NC.InstrumentationNodeModuleDefinition=NC.InstrumentationBase=NC.registerInstrumentations=void 0;var JoA=sa();Object.defineProperty(NC,"registerInstrumentations",{enumerable:!0,get:function(){return JoA.registerInstrumentations}});var FoA=iV();Object.defineProperty(NC,"InstrumentationBase",{enumerable:!0,get:function(){return FoA.InstrumentationBase}});var GoA=Fs();Object.defineProperty(NC,"InstrumentationNodeModuleDefinition",{enumerable:!0,get:function(){return GoA.InstrumentationNodeModuleDefinition}});var DoA=Ws();Object.defineProperty(NC,"InstrumentationNodeModuleFile",{enumerable:!0,get:function(){return DoA.InstrumentationNodeModuleFile}});var nV=uV();Object.defineProperty(NC,"isWrapped",{enumerable:!0,get:function(){return nV.isWrapped}});Object.defineProperty(NC,"safeExecuteInTheMiddle",{enumerable:!0,get:function(){return nV.safeExecuteInTheMiddle}});Object.defineProperty(NC,"safeExecuteInTheMiddleAsync",{enumerable:!0,get:function(){return nV.safeExecuteInTheMiddleAsync}});var zs=Ks();Object.defineProperty(NC,"SemconvStability",{enumerable:!0,get:function(){return zs.SemconvStability}});Object.defineProperty(NC,"semconvStabilityFromStr",{enumerable:!0,get:function(){return zs.semconvStabilityFromStr}})});var Ls=U((Vs)=>{Object.defineProperty(Vs,"__esModule",{value:!0});Vs.HTTP_FLAVOR_VALUE_HTTP_1_1=Vs.NET_TRANSPORT_VALUE_IP_UDP=Vs.NET_TRANSPORT_VALUE_IP_TCP=Vs.ATTR_NET_TRANSPORT=Vs.ATTR_NET_PEER_PORT=Vs.ATTR_NET_PEER_NAME=Vs.ATTR_NET_PEER_IP=Vs.ATTR_NET_HOST_PORT=Vs.ATTR_NET_HOST_NAME=Vs.ATTR_NET_HOST_IP=Vs.ATTR_HTTP_USER_AGENT=Vs.ATTR_HTTP_URL=Vs.ATTR_HTTP_TARGET=Vs.ATTR_HTTP_STATUS_CODE=Vs.ATTR_HTTP_SERVER_NAME=Vs.ATTR_HTTP_SCHEME=Vs.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED=Vs.ATTR_HTTP_RESPONSE_CONTENT_LENGTH=Vs.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED=Vs.ATTR_HTTP_REQUEST_CONTENT_LENGTH=Vs.ATTR_HTTP_METHOD=Vs.ATTR_HTTP_HOST=Vs.ATTR_HTTP_FLAVOR=Vs.ATTR_HTTP_CLIENT_IP=Vs.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST=Vs.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT=Vs.ATTR_USER_AGENT_SYNTHETIC_TYPE=void 0;Vs.ATTR_USER_AGENT_SYNTHETIC_TYPE="user_agent.synthetic.type";Vs.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT="bot";Vs.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST="test";Vs.ATTR_HTTP_CLIENT_IP="http.client_ip";Vs.ATTR_HTTP_FLAVOR="http.flavor";Vs.ATTR_HTTP_HOST="http.host";Vs.ATTR_HTTP_METHOD="http.method";Vs.ATTR_HTTP_REQUEST_CONTENT_LENGTH="http.request_content_length";Vs.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED="http.request_content_length_uncompressed";Vs.ATTR_HTTP_RESPONSE_CONTENT_LENGTH="http.response_content_length";Vs.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED="http.response_content_length_uncompressed";Vs.ATTR_HTTP_SCHEME="http.scheme";Vs.ATTR_HTTP_SERVER_NAME="http.server_name";Vs.ATTR_HTTP_STATUS_CODE="http.status_code";Vs.ATTR_HTTP_TARGET="http.target";Vs.ATTR_HTTP_URL="http.url";Vs.ATTR_HTTP_USER_AGENT="http.user_agent";Vs.ATTR_NET_HOST_IP="net.host.ip";Vs.ATTR_NET_HOST_NAME="net.host.name";Vs.ATTR_NET_HOST_PORT="net.host.port";Vs.ATTR_NET_PEER_IP="net.peer.ip";Vs.ATTR_NET_PEER_NAME="net.peer.name";Vs.ATTR_NET_PEER_PORT="net.peer.port";Vs.ATTR_NET_TRANSPORT="net.transport";Vs.NET_TRANSPORT_VALUE_IP_TCP="ip_tcp";Vs.NET_TRANSPORT_VALUE_IP_UDP="ip_udp";Vs.HTTP_FLAVOR_VALUE_HTTP_1_1="1.1"});var Ms=U((Hs)=>{Object.defineProperty(Hs,"__esModule",{value:!0});Hs.AttributeNames=void 0;var voA;(function(A){A.HTTP_ERROR_NAME="http.error_name",A.HTTP_ERROR_MESSAGE="http.error_message",A.HTTP_STATUS_TEXT="http.status_text"})(voA=Hs.AttributeNames||(Hs.AttributeNames={}))});var oV=U((Ns)=>{Object.defineProperty(Ns,"__esModule",{value:!0});Ns.DEFAULT_QUERY_STRINGS_TO_REDACT=Ns.STR_REDACTED=Ns.SYNTHETIC_BOT_NAMES=Ns.SYNTHETIC_TEST_NAMES=void 0;Ns.SYNTHETIC_TEST_NAMES=["alwayson"];Ns.SYNTHETIC_BOT_NAMES=["googlebot","bingbot"];Ns.STR_REDACTED="REDACTED";Ns.DEFAULT_QUERY_STRINGS_TO_REDACT=["sig","Signature","AWSAccessKeyId","X-Goog-Signature"]});var qs=U((fRQ,Rs)=>{var coA=M("util");function sV(A,Q){Error.captureStackTrace(this,sV),this.name=this.constructor.name,this.message=A,this.input=Q}coA.inherits(sV,Error);Rs.exports=sV});var Ts=U((gRQ,Os)=>{function uoA(A){return A===34||A===40||A===41||A===44||A===47||A>=58&&A<=64||A>=91&&A<=93||A===123||A===125}function loA(A){return A===33||A>=35&&A<=39||A===42||A===43||A===45||A===46||A>=48&&A<=57||A>=65&&A<=90||A>=94&&A<=122||A===124||A===126}function poA(A){return A>=32&&A<=126}function ioA(A){return A>=128&&A<=255}Os.exports={isDelimiter:uoA,isTokenChar:loA,isExtended:ioA,isPrint:poA}});var _s=U((hRQ,ys)=>{var noA=M("util"),kG=qs(),PU=Ts(),aoA=PU.isDelimiter,Ps=PU.isTokenChar,ks=PU.isExtended,ooA=PU.isPrint;function Ss(A){return A.replace(/\\(.)/g,"$1")}function T1(A,Q){return noA.format("Unexpected character '%s' at index %d",A.charAt(Q),Q)}function soA(A){var Q=!1,B=!1,I=!1,C={},E=[],Y=-1,J=-1,F,G;for(var D=0;D{Object.defineProperty(cs,"__esModule",{value:!0});cs.headerCapture=cs.getIncomingStableRequestMetricAttributesOnResponse=cs.getIncomingRequestMetricAttributesOnResponse=cs.getIncomingRequestAttributesOnResponse=cs.getIncomingRequestMetricAttributes=cs.getIncomingRequestAttributes=cs.getRemoteClientAddress=cs.getOutgoingStableRequestMetricAttributesOnResponse=cs.getOutgoingRequestMetricAttributesOnResponse=cs.getOutgoingRequestAttributesOnResponse=cs.setAttributesFromHttpKind=cs.getOutgoingRequestMetricAttributes=cs.getOutgoingRequestAttributes=cs.extractHostnameAndPort=cs.isValidOptionsType=cs.getRequestInfo=cs.isCompressed=cs.setResponseContentLengthAttribute=cs.setRequestContentLengthAttribute=cs.setSpanWithError=cs.satisfiesPattern=cs.parseResponseStatus=cs.getAbsoluteUrl=void 0;var P1=P(),zA=HA(),p=Ls(),fs=WV(),XI=JA(),roA=M("url"),SU=Ms(),gs=oV(),kU=oV(),toA=_s(),eoA=(A,Q,B="http:",I=Array.from(kU.DEFAULT_QUERY_STRINGS_TO_REDACT))=>{let C=A||{},E=C.protocol||B,Y=(C.port||"").toString(),J=C.path||"/",F=C.host||C.hostname||Q.host||"localhost";if(F.indexOf(":")===-1&&Y&&Y!=="80"&&Y!=="443")F+=`:${Y}`;if(J.includes("?"))try{let D=new URL(J,"http://localhost"),Z=I||[];for(let W of Z)if(D.searchParams.get(W))D.searchParams.set(W,kU.STR_REDACTED);J=`${D.pathname}${D.search}`}catch{}let G=C.auth?`${kU.STR_REDACTED}:${kU.STR_REDACTED}@`:"";return`${E}//${G}${F}${J}`};cs.getAbsoluteUrl=eoA;var AsA=(A,Q)=>{let B=A===P1.SpanKind.CLIENT?400:500;if(Q&&Q>=100&&Q{if(typeof Q==="string")return Q===A;else if(Q instanceof RegExp)return Q.test(A);else if(typeof Q==="function")return Q(A);else throw TypeError("Pattern is in unsupported datatype")};cs.satisfiesPattern=QsA;var BsA=(A,Q,B)=>{let I=Q.message;if(B&XI.SemconvStability.OLD)A.setAttribute(SU.AttributeNames.HTTP_ERROR_NAME,Q.name),A.setAttribute(SU.AttributeNames.HTTP_ERROR_MESSAGE,I);if(B&XI.SemconvStability.STABLE)A.setAttribute(zA.ATTR_ERROR_TYPE,Q.name);A.setStatus({code:P1.SpanStatusCode.ERROR,message:I}),A.recordException(Q)};cs.setSpanWithError=BsA;var IsA=(A,Q)=>{let B=xs(A.headers);if(B===null)return;if(cs.isCompressed(A.headers))Q[p.ATTR_HTTP_REQUEST_CONTENT_LENGTH]=B;else Q[p.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED]=B};cs.setRequestContentLengthAttribute=IsA;var CsA=(A,Q)=>{let B=xs(A.headers);if(B===null)return;if(cs.isCompressed(A.headers))Q[p.ATTR_HTTP_RESPONSE_CONTENT_LENGTH]=B;else Q[p.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]=B};cs.setResponseContentLengthAttribute=CsA;function xs(A){let Q=A["content-length"];if(Q===void 0)return null;let B=parseInt(Q,10);if(isNaN(B))return null;return B}var EsA=(A)=>{let Q=A["content-encoding"];return!!Q&&Q!=="identity"};cs.isCompressed=EsA;function YsA(A){let{hostname:Q,pathname:B,port:I,username:C,password:E,search:Y,protocol:J,hash:F,href:G,origin:D,host:Z}=new URL(A),W={protocol:J,hostname:Q&&Q[0]==="["?Q.slice(1,-1):Q,hash:F,search:Y,pathname:B,path:`${B||""}${Y||""}`,href:G,origin:D,host:Z};if(I!=="")W.port=Number(I);if(C||E)W.auth=`${decodeURIComponent(C)}:${decodeURIComponent(E)}`;return W}var JsA=(A,Q,B)=>{let I,C,E,Y=!1;if(typeof Q==="string"){try{let F=YsA(Q);E=F,I=F.pathname||"/"}catch(F){Y=!0,A.verbose("Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:",F),E={path:Q},I=E.path||"/"}if(C=`${E.protocol||"http:"}//${E.host}`,B!==void 0)Object.assign(E,B)}else if(Q instanceof roA.URL){if(E={protocol:Q.protocol,hostname:typeof Q.hostname==="string"&&Q.hostname.startsWith("[")?Q.hostname.slice(1,-1):Q.hostname,path:`${Q.pathname||""}${Q.search||""}`},Q.port!=="")E.port=Number(Q.port);if(Q.username||Q.password)E.auth=`${Q.username}:${Q.password}`;if(I=Q.pathname,C=Q.origin,B!==void 0)Object.assign(E,B)}else{E=Object.assign({protocol:Q.host?"http:":void 0},Q);let F=E.host||(E.port!=null?`${E.hostname}${E.port}`:E.hostname);if(C=`${E.protocol||"http:"}//${F}`,I=Q.pathname,!I&&E.path)try{I=new URL(E.path,C).pathname||"/"}catch{I="/"}}let J=E.method?E.method.toUpperCase():"GET";return{origin:C,pathname:I,method:J,optionsParsed:E,invalidUrl:Y}};cs.getRequestInfo=JsA;var FsA=(A)=>{if(!A)return!1;let Q=typeof A;return Q==="string"||Q==="object"&&!Array.isArray(A)};cs.isValidOptionsType=FsA;var GsA=(A)=>{if(A.hostname&&A.port)return{hostname:A.hostname,port:A.port};let Q=A.host?.match(/^([^:/ ]+)(:\d{1,5})?/)||null,B=A.hostname||(Q===null?"localhost":Q[1]),I=A.port;if(!I)if(Q&&Q[2])I=Q[2].substring(1);else I=A.protocol==="https:"?"443":"80";return{hostname:B,port:I}};cs.extractHostnameAndPort=GsA;var DsA=(A,Q,B,I)=>{let{hostname:C,port:E}=Q,Y=A.method??"GET",J=ms(Y),F=A.headers||{},G=F["user-agent"],D=cs.getAbsoluteUrl(A,F,`${Q.component}:`,Q.redactedQueryParams),Z={[p.ATTR_HTTP_URL]:D,[p.ATTR_HTTP_METHOD]:Y,[p.ATTR_HTTP_TARGET]:A.path||"/",[p.ATTR_NET_PEER_NAME]:C,[p.ATTR_HTTP_HOST]:F.host??`${C}:${E}`},W={[zA.ATTR_HTTP_REQUEST_METHOD]:J,[zA.ATTR_SERVER_ADDRESS]:C,[zA.ATTR_SERVER_PORT]:Number(E),[zA.ATTR_URL_FULL]:D,[zA.ATTR_USER_AGENT_ORIGINAL]:G};if(Y!==J)W[zA.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]=Y;if(I&&G)W[p.ATTR_USER_AGENT_SYNTHETIC_TYPE]=vs(G);if(G!==void 0)Z[p.ATTR_HTTP_USER_AGENT]=G;switch(B){case XI.SemconvStability.STABLE:return Object.assign(W,Q.hookAttributes);case XI.SemconvStability.OLD:return Object.assign(Z,Q.hookAttributes)}return Object.assign(Z,W,Q.hookAttributes)};cs.getOutgoingRequestAttributes=DsA;var ZsA=(A)=>{let Q={};return Q[p.ATTR_HTTP_METHOD]=A[p.ATTR_HTTP_METHOD],Q[p.ATTR_NET_PEER_NAME]=A[p.ATTR_NET_PEER_NAME],Q};cs.getOutgoingRequestMetricAttributes=ZsA;var WsA=(A,Q)=>{if(A)if(Q[p.ATTR_HTTP_FLAVOR]=A,A.toUpperCase()!=="QUIC")Q[p.ATTR_NET_TRANSPORT]=p.NET_TRANSPORT_VALUE_IP_TCP;else Q[p.ATTR_NET_TRANSPORT]=p.NET_TRANSPORT_VALUE_IP_UDP};cs.setAttributesFromHttpKind=WsA;var vs=(A)=>{let Q=String(A).toLowerCase();for(let B of gs.SYNTHETIC_TEST_NAMES)if(Q.includes(B))return p.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST;for(let B of gs.SYNTHETIC_BOT_NAMES)if(Q.includes(B))return p.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT;return},XsA=(A,Q)=>{let{statusCode:B,statusMessage:I,httpVersion:C,socket:E}=A,Y={},J={};if(B!=null)J[zA.ATTR_HTTP_RESPONSE_STATUS_CODE]=B;if(E){let{remoteAddress:F,remotePort:G}=E;Y[p.ATTR_NET_PEER_IP]=F,Y[p.ATTR_NET_PEER_PORT]=G,J[zA.ATTR_NETWORK_PEER_ADDRESS]=F,J[zA.ATTR_NETWORK_PEER_PORT]=G,J[zA.ATTR_NETWORK_PROTOCOL_VERSION]=A.httpVersion}if(cs.setResponseContentLengthAttribute(A,Y),B)Y[p.ATTR_HTTP_STATUS_CODE]=B,Y[SU.AttributeNames.HTTP_STATUS_TEXT]=(I||"").toUpperCase();switch(cs.setAttributesFromHttpKind(C,Y),Q){case XI.SemconvStability.STABLE:return J;case XI.SemconvStability.OLD:return Y}return Object.assign(Y,J)};cs.getOutgoingRequestAttributesOnResponse=XsA;var UsA=(A)=>{let Q={};return Q[p.ATTR_NET_PEER_PORT]=A[p.ATTR_NET_PEER_PORT],Q[p.ATTR_HTTP_STATUS_CODE]=A[p.ATTR_HTTP_STATUS_CODE],Q[p.ATTR_HTTP_FLAVOR]=A[p.ATTR_HTTP_FLAVOR],Q};cs.getOutgoingRequestMetricAttributesOnResponse=UsA;var wsA=(A)=>{let Q={};if(A[zA.ATTR_NETWORK_PROTOCOL_VERSION])Q[zA.ATTR_NETWORK_PROTOCOL_VERSION]=A[zA.ATTR_NETWORK_PROTOCOL_VERSION];if(A[zA.ATTR_HTTP_RESPONSE_STATUS_CODE])Q[zA.ATTR_HTTP_RESPONSE_STATUS_CODE]=A[zA.ATTR_HTTP_RESPONSE_STATUS_CODE];return Q};cs.getOutgoingStableRequestMetricAttributesOnResponse=wsA;function a0(A,Q){let B=A.split(":");if(B.length===1){if(Q==="http")return{host:B[0],port:"80"};if(Q==="https")return{host:B[0],port:"443"};return{host:B[0]}}if(B.length===2)return{host:B[0],port:B[1]};if(B[0].startsWith("[")){if(B[B.length-1].endsWith("]")){if(Q==="http")return{host:A,port:"80"};if(Q==="https")return{host:A,port:"443"}}else if(B[B.length-2].endsWith("]"))return{host:B.slice(0,-1).join(":"),port:B[B.length-1]}}return{host:A}}function KsA(A,Q){let B=A.headers.forwarded;if(B){for(let E of ds(B))if(E.host)return a0(E.host,E.proto)}let I=A.headers["x-forwarded-host"];if(typeof I==="string"){if(typeof A.headers["x-forwarded-proto"]==="string")return a0(I,A.headers["x-forwarded-proto"]);if(Array.isArray(A.headers["x-forwarded-proto"]))return a0(I,A.headers["x-forwarded-proto"][0]);return a0(I)}else if(Array.isArray(I)&&typeof I[0]==="string"&&I[0].length>0){if(typeof A.headers["x-forwarded-proto"]==="string")return a0(I[0],A.headers["x-forwarded-proto"]);if(Array.isArray(A.headers["x-forwarded-proto"]))return a0(I[0],A.headers["x-forwarded-proto"][0]);return a0(I[0])}let C=A.headers.host;if(typeof C==="string"&&C.length>0)return a0(C,Q);return null}function bs(A){let Q=A.headers.forwarded;if(Q){for(let C of ds(Q))if(C.for)return hs(C.for)}let B=A.headers["x-forwarded-for"];if(B){let C;if(typeof B==="string")C=B;else if(Array.isArray(B))C=B[0];if(typeof C==="string")return C=C.split(",")[0].trim(),hs(C)}let I=A.socket.remoteAddress;if(I)return I;return null}cs.getRemoteClientAddress=bs;function hs(A){try{let{hostname:Q}=new URL(`http://${A}`);if(Q.startsWith("[")&&Q.endsWith("]"))return Q.slice(1,-1);return Q}catch{return A}}function zsA(A,Q,B){try{if(Q.headers.host)return new URL(Q.url??"/",`${A}://${Q.headers.host}`);else{let I=new URL(Q.url??"/",`${A}://localhost`);return{pathname:I.pathname,search:I.search,toString:function(){return I.pathname+I.search}}}}catch(I){return B.verbose("Unable to get URL from request",I),{}}}var VsA=(A,Q,B)=>{let{component:I,enableSyntheticSourceDetection:C,hookAttributes:E,semconvStability:Y,serverName:J}=Q,{headers:F,httpVersion:G,method:D}=A,{host:Z,"user-agent":W,"x-forwarded-for":X}=F,w=zsA(I,A,B),K,z;if(Y!==XI.SemconvStability.OLD){let $=ms(D),N=KsA(A,I),j=bs(A);if(K={[zA.ATTR_HTTP_REQUEST_METHOD]:$,[zA.ATTR_URL_SCHEME]:I,[zA.ATTR_SERVER_ADDRESS]:N?.host,[zA.ATTR_NETWORK_PEER_ADDRESS]:A.socket.remoteAddress,[zA.ATTR_NETWORK_PEER_PORT]:A.socket.remotePort,[zA.ATTR_NETWORK_PROTOCOL_VERSION]:A.httpVersion,[zA.ATTR_USER_AGENT_ORIGINAL]:W},w.pathname!=null)K[zA.ATTR_URL_PATH]=w.pathname;if(w.search)K[zA.ATTR_URL_QUERY]=w.search.slice(1);if(j!=null)K[zA.ATTR_CLIENT_ADDRESS]=j;if(N?.port!=null)K[zA.ATTR_SERVER_PORT]=Number(N.port);if(D!==$)K[zA.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]=D;if(C&&W)K[p.ATTR_USER_AGENT_SYNTHETIC_TYPE]=vs(W)}if(Y!==XI.SemconvStability.STABLE){let $=Z?.replace(/^(.*)(:[0-9]{1,5})/,"$1")||"localhost";if(z={[p.ATTR_HTTP_URL]:w.toString(),[p.ATTR_HTTP_HOST]:Z,[p.ATTR_NET_HOST_NAME]:$,[p.ATTR_HTTP_METHOD]:D,[p.ATTR_HTTP_SCHEME]:I},typeof X==="string")z[p.ATTR_HTTP_CLIENT_IP]=X.split(",")[0];if(typeof J==="string")z[p.ATTR_HTTP_SERVER_NAME]=J;if(w.pathname)z[p.ATTR_HTTP_TARGET]=w.pathname+w.search||"/";if(W!==void 0)z[p.ATTR_HTTP_USER_AGENT]=W;cs.setRequestContentLengthAttribute(A,z),cs.setAttributesFromHttpKind(G,z)}switch(Y){case XI.SemconvStability.STABLE:return Object.assign(K,E);case XI.SemconvStability.OLD:return Object.assign(z,E);default:return Object.assign(z,K,E)}};cs.getIncomingRequestAttributes=VsA;var $sA=(A)=>{let Q={};return Q[p.ATTR_HTTP_SCHEME]=A[p.ATTR_HTTP_SCHEME],Q[p.ATTR_HTTP_METHOD]=A[p.ATTR_HTTP_METHOD],Q[p.ATTR_NET_HOST_NAME]=A[p.ATTR_NET_HOST_NAME],Q[p.ATTR_HTTP_FLAVOR]=A[p.ATTR_HTTP_FLAVOR],Q};cs.getIncomingRequestMetricAttributes=$sA;var LsA=(A,Q,B)=>{let{socket:I}=A,{statusCode:C,statusMessage:E}=Q,Y={[zA.ATTR_HTTP_RESPONSE_STATUS_CODE]:C},J=(0,fs.getRPCMetadata)(P1.context.active()),F={};if(I){let{localAddress:G,localPort:D,remoteAddress:Z,remotePort:W}=I;F[p.ATTR_NET_HOST_IP]=G,F[p.ATTR_NET_HOST_PORT]=D,F[p.ATTR_NET_PEER_IP]=Z,F[p.ATTR_NET_PEER_PORT]=W}if(F[p.ATTR_HTTP_STATUS_CODE]=C,F[SU.AttributeNames.HTTP_STATUS_TEXT]=(E||"").toUpperCase(),J?.type===fs.RPCType.HTTP&&J.route!==void 0)F[zA.ATTR_HTTP_ROUTE]=J.route,Y[zA.ATTR_HTTP_ROUTE]=J.route;switch(B){case XI.SemconvStability.STABLE:return Y;case XI.SemconvStability.OLD:return F}return Object.assign(F,Y)};cs.getIncomingRequestAttributesOnResponse=LsA;var HsA=(A)=>{let Q={};if(Q[p.ATTR_HTTP_STATUS_CODE]=A[p.ATTR_HTTP_STATUS_CODE],Q[p.ATTR_NET_HOST_PORT]=A[p.ATTR_NET_HOST_PORT],A[zA.ATTR_HTTP_ROUTE]!==void 0)Q[zA.ATTR_HTTP_ROUTE]=A[zA.ATTR_HTTP_ROUTE];return Q};cs.getIncomingRequestMetricAttributesOnResponse=HsA;var MsA=(A)=>{let Q={};if(A[zA.ATTR_HTTP_ROUTE]!==void 0)Q[zA.ATTR_HTTP_ROUTE]=A[zA.ATTR_HTTP_ROUTE];if(A[zA.ATTR_HTTP_RESPONSE_STATUS_CODE])Q[zA.ATTR_HTTP_RESPONSE_STATUS_CODE]=A[zA.ATTR_HTTP_RESPONSE_STATUS_CODE];return Q};cs.getIncomingStableRequestMetricAttributesOnResponse=MsA;function NsA(A,Q,B){let I=new Map;for(let C=0,E=Q.length;C{let E={};for(let Y of I.keys()){let J=C(Y);if(J===void 0)continue;let F=I.get(Y),G=`http.${A}.header.${F}`;if(typeof J==="string")E[G]=[J];else if(Array.isArray(J))E[G]=J;else E[G]=[J]}return E}}cs.headerCapture=NsA;var jsA=new Set(["GET","HEAD","POST","PUT","DELETE","CONNECT","OPTIONS","TRACE","PATCH","QUERY"]);function ms(A){if(A==null)return"GET";let Q=A.toUpperCase();if(jsA.has(Q))return Q;return"_OTHER"}function ds(A){try{return toA(A)}catch{return[]}}});var rs=U((os)=>{Object.defineProperty(os,"__esModule",{value:!0});os.HttpInstrumentation=void 0;var DA=P(),o0=WV(),csA=M("url"),usA=$a(),dQ=JA(),eV=M("events"),BQ=HA(),LQ=ns();class as extends dQ.InstrumentationBase{_spanNotEnded=new WeakSet;_headerCapture;_httpPatched=!1;_httpsPatched=!1;_semconvStability=dQ.SemconvStability.OLD;constructor(A={}){super("@opentelemetry/instrumentation-http",usA.VERSION,A);this._semconvStability=(0,dQ.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._headerCapture=this._createHeaderCapture(this._semconvStability)}_updateMetricInstruments(){this._oldHttpServerDurationHistogram=this.meter.createHistogram("http.server.duration",{description:"Measures the duration of inbound HTTP requests.",unit:"ms",valueType:DA.ValueType.DOUBLE}),this._oldHttpClientDurationHistogram=this.meter.createHistogram("http.client.duration",{description:"Measures the duration of outbound HTTP requests.",unit:"ms",valueType:DA.ValueType.DOUBLE}),this._stableHttpServerDurationHistogram=this.meter.createHistogram(BQ.METRIC_HTTP_SERVER_REQUEST_DURATION,{description:"Duration of HTTP server requests.",unit:"s",valueType:DA.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}}),this._stableHttpClientDurationHistogram=this.meter.createHistogram(BQ.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Duration of HTTP client requests.",unit:"s",valueType:DA.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}})}_recordServerDuration(A,Q,B){if(this._semconvStability&dQ.SemconvStability.OLD)this._oldHttpServerDurationHistogram.record(A,Q);if(this._semconvStability&dQ.SemconvStability.STABLE)this._stableHttpServerDurationHistogram.record(A/1000,B)}_recordClientDuration(A,Q,B){if(this._semconvStability&dQ.SemconvStability.OLD)this._oldHttpClientDurationHistogram.record(A,Q);if(this._semconvStability&dQ.SemconvStability.STABLE)this._stableHttpClientDurationHistogram.record(A/1000,B)}setConfig(A={}){super.setConfig(A),this._headerCapture=this._createHeaderCapture(this._semconvStability)}init(){return[this._getHttpsInstrumentation(),this._getHttpInstrumentation()]}_getHttpInstrumentation(){return new dQ.InstrumentationNodeModuleDefinition("http",["*"],(A)=>{if(this._httpPatched)return A;this._httpPatched=!0;let Q=A[Symbol.toStringTag]==="Module";if(!this.getConfig().disableOutgoingRequestInstrumentation){let B=this._wrap(A,"request",this._getPatchOutgoingRequestFunction("http")),I=this._wrap(A,"get",this._getPatchOutgoingGetFunction(B));if(Q)A.default.request=B,A.default.get=I}if(!this.getConfig().disableIncomingRequestInstrumentation)this._wrap(A.Server.prototype,"emit",this._getPatchIncomingRequestFunction("http"));return A},(A)=>{if(this._httpPatched=!1,A===void 0)return;if(!this.getConfig().disableOutgoingRequestInstrumentation)this._unwrap(A,"request"),this._unwrap(A,"get");if(!this.getConfig().disableIncomingRequestInstrumentation)this._unwrap(A.Server.prototype,"emit")})}_getHttpsInstrumentation(){return new dQ.InstrumentationNodeModuleDefinition("https",["*"],(A)=>{if(this._httpsPatched)return A;this._httpsPatched=!0;let Q=A[Symbol.toStringTag]==="Module";if(!this.getConfig().disableOutgoingRequestInstrumentation){let B=this._wrap(A,"request",this._getPatchHttpsOutgoingRequestFunction("https")),I=this._wrap(A,"get",this._getPatchHttpsOutgoingGetFunction(B));if(Q)A.default.request=B,A.default.get=I}if(!this.getConfig().disableIncomingRequestInstrumentation)this._wrap(A.Server.prototype,"emit",this._getPatchIncomingRequestFunction("https"));return A},(A)=>{if(this._httpsPatched=!1,A===void 0)return;if(!this.getConfig().disableOutgoingRequestInstrumentation)this._unwrap(A,"request"),this._unwrap(A,"get");if(!this.getConfig().disableIncomingRequestInstrumentation)this._unwrap(A.Server.prototype,"emit")})}_getPatchIncomingRequestFunction(A){return(Q)=>{return this._incomingRequestFunction(A,Q)}}_getPatchOutgoingRequestFunction(A){return(Q)=>{return this._outgoingRequestFunction(A,Q)}}_getPatchOutgoingGetFunction(A){return(Q)=>{return function(I,...C){let E=A(I,...C);return E.end(),E}}}_getPatchHttpsOutgoingRequestFunction(A){return(Q)=>{let B=this;return function(C,...E){if(A==="https"&&typeof C==="object"&&C?.constructor?.name!=="URL")C=Object.assign({},C),B._setDefaultOptions(C);return B._getPatchOutgoingRequestFunction(A)(Q)(C,...E)}}}_setDefaultOptions(A){A.protocol=A.protocol||"https:",A.port=A.port||443}_getPatchHttpsOutgoingGetFunction(A){return(Q)=>{let B=this;return function(C,...E){return B._getPatchOutgoingGetFunction(A)(Q)(C,...E)}}}_traceClientRequest(A,Q,B,I,C){if(this.getConfig().requestHook)this._callRequestHook(Q,A);let E=!1;return A.prependListener("response",(Y)=>{if(this._diag.debug("outgoingRequest on response()"),A.listenerCount("response")<=1)Y.resume();let J=(0,LQ.getOutgoingRequestAttributesOnResponse)(Y,this._semconvStability);if(Q.setAttributes(J),I=Object.assign(I,(0,LQ.getOutgoingRequestMetricAttributesOnResponse)(J)),C=Object.assign(C,(0,LQ.getOutgoingStableRequestMetricAttributesOnResponse)(J)),this.getConfig().responseHook)this._callResponseHook(Q,Y);Q.setAttributes(this._headerCapture.client.captureRequestHeaders((G)=>A.getHeader(G))),Q.setAttributes(this._headerCapture.client.captureResponseHeaders((G)=>Y.headers[G])),DA.context.bind(DA.context.active(),Y);let F=()=>{if(this._diag.debug("outgoingRequest on end()"),E)return;E=!0;let G;if(Y.aborted&&!Y.complete)G={code:DA.SpanStatusCode.ERROR};else G={code:(0,LQ.parseResponseStatus)(DA.SpanKind.CLIENT,Y.statusCode)};if(Q.setStatus(G),this.getConfig().applyCustomAttributesOnSpan)(0,dQ.safeExecuteInTheMiddle)(()=>this.getConfig().applyCustomAttributesOnSpan(Q,A,Y),()=>{},!0);this._closeHttpSpan(Q,DA.SpanKind.CLIENT,B,I,C)};Y.on("end",F),Y.on(eV.errorMonitor,(G)=>{if(this._diag.debug("outgoingRequest on error()",G),E)return;E=!0,this._onOutgoingRequestError(Q,I,C,B,G)})}),A.on("close",()=>{if(this._diag.debug("outgoingRequest on request close()"),A.aborted||E)return;E=!0,this._closeHttpSpan(Q,DA.SpanKind.CLIENT,B,I,C)}),A.on(eV.errorMonitor,(Y)=>{if(this._diag.debug("outgoingRequest on request error()",Y),E)return;E=!0,this._onOutgoingRequestError(Q,I,C,B,Y)}),this._diag.debug("http.ClientRequest return request"),A}_incomingRequestFunction(A,Q){let B=this;return function(C,...E){if(C!=="request")return Q.apply(this,[C,...E]);let Y=E[0],J=E[1],F=Y.method||"GET";if(B._diag.debug(`${A} instrumentation incomingRequest`),(0,dQ.safeExecuteInTheMiddle)(()=>B.getConfig().ignoreIncomingRequestHook?.(Y),(N)=>{if(N!=null)B._diag.error("caught ignoreIncomingRequestHook error: ",N)},!0))return DA.context.with((0,o0.suppressTracing)(DA.context.active()),()=>{return DA.context.bind(DA.context.active(),Y),DA.context.bind(DA.context.active(),J),Q.apply(this,[C,...E])});let G=Y.headers,D=(0,LQ.getIncomingRequestAttributes)(Y,{component:A,serverName:B.getConfig().serverName,hookAttributes:B._callStartSpanHook(Y,B.getConfig().startIncomingSpanHook),semconvStability:B._semconvStability,enableSyntheticSourceDetection:B.getConfig().enableSyntheticSourceDetection||!1},B._diag);Object.assign(D,B._headerCapture.server.captureRequestHeaders((N)=>Y.headers[N]));let Z={kind:DA.SpanKind.SERVER,attributes:D},W=(0,o0.hrTime)(),X=(0,LQ.getIncomingRequestMetricAttributes)(D),w={[BQ.ATTR_HTTP_REQUEST_METHOD]:D[BQ.ATTR_HTTP_REQUEST_METHOD],[BQ.ATTR_URL_SCHEME]:D[BQ.ATTR_URL_SCHEME]};if(D[BQ.ATTR_NETWORK_PROTOCOL_VERSION])w[BQ.ATTR_NETWORK_PROTOCOL_VERSION]=D[BQ.ATTR_NETWORK_PROTOCOL_VERSION];let K=DA.propagation.extract(DA.ROOT_CONTEXT,G),z=B._startHttpSpan(F,Z,K),$={type:o0.RPCType.HTTP,span:z};return DA.context.with((0,o0.setRPCMetadata)(DA.trace.setSpan(K,z),$),()=>{if(DA.context.bind(DA.context.active(),Y),DA.context.bind(DA.context.active(),J),B.getConfig().requestHook)B._callRequestHook(z,Y);if(B.getConfig().responseHook)B._callResponseHook(z,J);let N=!1;return J.on("close",()=>{if(N)return;B._onServerResponseFinish(Y,J,z,X,w,W)}),J.on(eV.errorMonitor,(j)=>{N=!0,B._onServerResponseError(z,X,w,W,j)}),(0,dQ.safeExecuteInTheMiddle)(()=>Q.apply(this,[C,...E]),(j)=>{if(j)throw B._onServerResponseError(z,X,w,W,j),j})})}}_outgoingRequestFunction(A,Q){let B=this;return function(C,...E){if(!(0,LQ.isValidOptionsType)(C))return Q.apply(this,[C,...E]);let Y=typeof E[0]==="object"&&(typeof C==="string"||C instanceof csA.URL)?E.shift():void 0,{method:J,invalidUrl:F,optionsParsed:G}=(0,LQ.getRequestInfo)(B._diag,C,Y);if((0,dQ.safeExecuteInTheMiddle)(()=>B.getConfig().ignoreOutgoingRequestHook?.(G),(O)=>{if(O!=null)B._diag.error("caught ignoreOutgoingRequestHook error: ",O)},!0))return Q.apply(this,[G,...E]);let{hostname:D,port:Z}=(0,LQ.extractHostnameAndPort)(G),W=(0,LQ.getOutgoingRequestAttributes)(G,{component:A,port:Z,hostname:D,hookAttributes:B._callStartSpanHook(G,B.getConfig().startOutgoingSpanHook),redactedQueryParams:B.getConfig().redactedQueryParams},B._semconvStability,B.getConfig().enableSyntheticSourceDetection||!1),X=(0,o0.hrTime)(),w=(0,LQ.getOutgoingRequestMetricAttributes)(W),K={[BQ.ATTR_HTTP_REQUEST_METHOD]:W[BQ.ATTR_HTTP_REQUEST_METHOD],[BQ.ATTR_SERVER_ADDRESS]:W[BQ.ATTR_SERVER_ADDRESS],[BQ.ATTR_SERVER_PORT]:W[BQ.ATTR_SERVER_PORT]};if(W[BQ.ATTR_HTTP_RESPONSE_STATUS_CODE])K[BQ.ATTR_HTTP_RESPONSE_STATUS_CODE]=W[BQ.ATTR_HTTP_RESPONSE_STATUS_CODE];if(W[BQ.ATTR_NETWORK_PROTOCOL_VERSION])K[BQ.ATTR_NETWORK_PROTOCOL_VERSION]=W[BQ.ATTR_NETWORK_PROTOCOL_VERSION];let z={kind:DA.SpanKind.CLIENT,attributes:W},$=B._startHttpSpan(J,z),N=DA.context.active(),j=DA.trace.setSpan(N,$);if(!G.headers)G.headers={};else G.headers=Object.assign({},G.headers);return DA.propagation.inject(j,G.headers),DA.context.with(j,()=>{let O=E[E.length-1];if(typeof O==="function")E[E.length-1]=DA.context.bind(N,O);let k=(0,dQ.safeExecuteInTheMiddle)(()=>{if(F)return Q.apply(this,[C,...E]);else return Q.apply(this,[G,...E])},(g)=>{if(g)throw B._onOutgoingRequestError($,w,K,X,g),g});return B._diag.debug(`${A} instrumentation outgoingRequest`),DA.context.bind(N,k),B._traceClientRequest(k,$,X,w,K)})}}_onServerResponseFinish(A,Q,B,I,C,E){let Y=(0,LQ.getIncomingRequestAttributesOnResponse)(A,Q,this._semconvStability);I=Object.assign(I,(0,LQ.getIncomingRequestMetricAttributesOnResponse)(Y)),C=Object.assign(C,(0,LQ.getIncomingStableRequestMetricAttributesOnResponse)(Y)),B.setAttributes(this._headerCapture.server.captureResponseHeaders((F)=>Q.getHeader(F))),B.setAttributes(Y).setStatus({code:(0,LQ.parseResponseStatus)(DA.SpanKind.SERVER,Q.statusCode)});let J=Y[BQ.ATTR_HTTP_ROUTE];if(J)B.updateName(`${A.method||"GET"} ${J}`);if(this.getConfig().applyCustomAttributesOnSpan)(0,dQ.safeExecuteInTheMiddle)(()=>this.getConfig().applyCustomAttributesOnSpan(B,A,Q),()=>{},!0);this._closeHttpSpan(B,DA.SpanKind.SERVER,E,I,C)}_onOutgoingRequestError(A,Q,B,I,C){(0,LQ.setSpanWithError)(A,C,this._semconvStability),B[BQ.ATTR_ERROR_TYPE]=C.name,this._closeHttpSpan(A,DA.SpanKind.CLIENT,I,Q,B)}_onServerResponseError(A,Q,B,I,C){(0,LQ.setSpanWithError)(A,C,this._semconvStability),B[BQ.ATTR_ERROR_TYPE]=C.name,this._closeHttpSpan(A,DA.SpanKind.SERVER,I,Q,B)}_startHttpSpan(A,Q,B=DA.context.active()){let I=Q.kind===DA.SpanKind.CLIENT?this.getConfig().requireParentforOutgoingSpans:this.getConfig().requireParentforIncomingSpans,C,E=DA.trace.getSpan(B);if(I===!0&&(!E||!DA.trace.isSpanContextValid(E.spanContext())))C=DA.trace.wrapSpanContext(DA.INVALID_SPAN_CONTEXT);else if(I===!0&&E?.spanContext().isRemote)C=E;else C=this.tracer.startSpan(A,Q,B);return this._spanNotEnded.add(C),C}_closeHttpSpan(A,Q,B,I,C){if(!this._spanNotEnded.has(A))return;A.end(),this._spanNotEnded.delete(A);let E=(0,o0.hrTimeToMilliseconds)((0,o0.hrTimeDuration)(B,(0,o0.hrTime)()));if(Q===DA.SpanKind.SERVER)this._recordServerDuration(E,I,C);else if(Q===DA.SpanKind.CLIENT)this._recordClientDuration(E,I,C)}_callResponseHook(A,Q){(0,dQ.safeExecuteInTheMiddle)(()=>this.getConfig().responseHook(A,Q),()=>{},!0)}_callRequestHook(A,Q){(0,dQ.safeExecuteInTheMiddle)(()=>this.getConfig().requestHook(A,Q),()=>{},!0)}_callStartSpanHook(A,Q){if(typeof Q==="function")return(0,dQ.safeExecuteInTheMiddle)(()=>Q(A),()=>{},!0)}_createHeaderCapture(A){let Q=this.getConfig();return{client:{captureRequestHeaders:(0,LQ.headerCapture)("request",Q.headersToSpanAttributes?.client?.requestHeaders??[],A),captureResponseHeaders:(0,LQ.headerCapture)("response",Q.headersToSpanAttributes?.client?.responseHeaders??[],A)},server:{captureRequestHeaders:(0,LQ.headerCapture)("request",Q.headersToSpanAttributes?.server?.requestHeaders??[],A),captureResponseHeaders:(0,LQ.headerCapture)("response",Q.headersToSpanAttributes?.server?.responseHeaders??[],A)}}}}os.HttpInstrumentation=as});var ts=U((A$)=>{Object.defineProperty(A$,"__esModule",{value:!0});A$.HttpInstrumentation=void 0;var lsA=rs();Object.defineProperty(A$,"HttpInstrumentation",{enumerable:!0,get:function(){return lsA.HttpInstrumentation}})});var N9=U((FQA)=>{Object.defineProperty(FQA,"__esModule",{value:!0});FQA.isTracingSuppressed=FQA.unsuppressTracing=FQA.suppressTracing=void 0;var vAQ=P(),r3=(0,vAQ.createContextKey)("OpenTelemetry SDK Context Key SUPPRESS_TRACING");function bAQ(A){return A.setValue(r3,!0)}FQA.suppressTracing=bAQ;function mAQ(A){return A.deleteValue(r3)}FQA.unsuppressTracing=mAQ;function dAQ(A){return A.getValue(r3)===!0}FQA.isTracingSuppressed=dAQ});var t3=U((DQA)=>{Object.defineProperty(DQA,"__esModule",{value:!0});DQA.BAGGAGE_MAX_TOTAL_LENGTH=DQA.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=DQA.BAGGAGE_MAX_NAME_VALUE_PAIRS=DQA.BAGGAGE_HEADER=DQA.BAGGAGE_ITEMS_SEPARATOR=DQA.BAGGAGE_PROPERTIES_SEPARATOR=DQA.BAGGAGE_KEY_PAIR_SEPARATOR=void 0;DQA.BAGGAGE_KEY_PAIR_SEPARATOR="=";DQA.BAGGAGE_PROPERTIES_SEPARATOR=";";DQA.BAGGAGE_ITEMS_SEPARATOR=",";DQA.BAGGAGE_HEADER="baggage";DQA.BAGGAGE_MAX_NAME_VALUE_PAIRS=180;DQA.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=4096;DQA.BAGGAGE_MAX_TOTAL_LENGTH=8192});var e3=U((XQA)=>{Object.defineProperty(XQA,"__esModule",{value:!0});XQA.parseKeyPairsIntoRecord=XQA.parsePairKeyValue=XQA.getKeyPairs=XQA.serializeKeyPairs=void 0;var sAQ=P(),DD=t3();function rAQ(A){return A.reduce((Q,B)=>{let I=`${Q}${Q!==""?DD.BAGGAGE_ITEMS_SEPARATOR:""}${B}`;return I.length>DD.BAGGAGE_MAX_TOTAL_LENGTH?Q:I},"")}XQA.serializeKeyPairs=rAQ;function tAQ(A){return A.getAllEntries().map(([Q,B])=>{let I=`${encodeURIComponent(Q)}=${encodeURIComponent(B.value)}`;if(B.metadata!==void 0)I+=DD.BAGGAGE_PROPERTIES_SEPARATOR+B.metadata.toString();return I})}XQA.getKeyPairs=tAQ;function WQA(A){if(!A)return;let Q=A.indexOf(DD.BAGGAGE_PROPERTIES_SEPARATOR),B=Q===-1?A:A.substring(0,Q),I=B.indexOf(DD.BAGGAGE_KEY_PAIR_SEPARATOR);if(I<=0)return;let C=B.substring(0,I).trim(),E=B.substring(I+1).trim();if(!C||!E)return;let Y,J;try{Y=decodeURIComponent(C),J=decodeURIComponent(E)}catch{return}let F;if(Q!==-1&&Q0)A.split(DD.BAGGAGE_ITEMS_SEPARATOR).forEach((B)=>{let I=WQA(B);if(I!==void 0&&I.value.length>0)Q[I.key]=I.value});return Q}XQA.parseKeyPairsIntoRecord=eAQ});var VQA=U((KQA)=>{Object.defineProperty(KQA,"__esModule",{value:!0});KQA.W3CBaggagePropagator=void 0;var AL=P(),IQQ=N9(),sJ=t3(),QL=e3();class wQA{inject(A,Q,B){let I=AL.propagation.getBaggage(A);if(!I||(0,IQQ.isTracingSuppressed)(A))return;let C=(0,QL.getKeyPairs)(I).filter((Y)=>{return Y.length<=sJ.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS}).slice(0,sJ.BAGGAGE_MAX_NAME_VALUE_PAIRS),E=(0,QL.serializeKeyPairs)(C);if(E.length>0)B.set(Q,sJ.BAGGAGE_HEADER,E)}extract(A,Q,B){let I=B.get(Q,sJ.BAGGAGE_HEADER),C=Array.isArray(I)?I.join(sJ.BAGGAGE_ITEMS_SEPARATOR):I;if(!C)return A;let E={};if(C.length===0)return A;if(C.split(sJ.BAGGAGE_ITEMS_SEPARATOR).forEach((J)=>{let F=(0,QL.parsePairKeyValue)(J);if(F){let G={value:F.value};if(F.metadata)G.metadata=F.metadata;E[F.key]=G}}),Object.entries(E).length===0)return A;return AL.propagation.setBaggage(A,AL.propagation.createBaggage(E))}fields(){return[sJ.BAGGAGE_HEADER]}}KQA.W3CBaggagePropagator=wQA});var MQA=U((LQA)=>{Object.defineProperty(LQA,"__esModule",{value:!0});LQA.AnchoredClock=void 0;class $QA{_monotonicClock;_epochMillis;_performanceMillis;constructor(A,Q){this._monotonicClock=Q,this._epochMillis=A.now(),this._performanceMillis=Q.now()}now(){let A=this._monotonicClock.now()-this._performanceMillis;return this._epochMillis+A}}LQA.AnchoredClock=$QA});var PQA=U((OQA)=>{Object.defineProperty(OQA,"__esModule",{value:!0});OQA.isAttributeValue=OQA.isAttributeKey=OQA.sanitizeAttributes=void 0;var NQA=P();function CQQ(A){let Q={};if(typeof A!=="object"||A==null)return Q;for(let B in A){if(!Object.prototype.hasOwnProperty.call(A,B))continue;if(!jQA(B)){NQA.diag.warn(`Invalid attribute key: ${B}`);continue}let I=A[B];if(!RQA(I)){NQA.diag.warn(`Invalid attribute value set for key: ${B}`);continue}if(Array.isArray(I))Q[B]=I.slice();else Q[B]=I}return Q}OQA.sanitizeAttributes=CQQ;function jQA(A){return typeof A==="string"&&A!==""}OQA.isAttributeKey=jQA;function RQA(A){if(A==null)return!0;if(Array.isArray(A))return EQQ(A);return qQA(typeof A)}OQA.isAttributeValue=RQA;function EQQ(A){let Q;for(let B of A){if(B==null)continue;let I=typeof B;if(I===Q)continue;if(!Q){if(qQA(I)){Q=I;continue}return!1}return!1}return!0}function qQA(A){switch(A){case"number":case"boolean":case"string":return!0}return!1}});var BL=U((kQA)=>{Object.defineProperty(kQA,"__esModule",{value:!0});kQA.loggingErrorHandler=void 0;var FQQ=P();function GQQ(){return(A)=>{FQQ.diag.error(DQQ(A))}}kQA.loggingErrorHandler=GQQ;function DQQ(A){if(typeof A==="string")return A;else return JSON.stringify(ZQQ(A))}function ZQQ(A){let Q={},B=A;while(B!==null)Object.getOwnPropertyNames(B).forEach((I)=>{if(Q[I])return;let C=B[I];if(C)Q[I]=String(C)}),B=Object.getPrototypeOf(B);return Q}});var gQA=U((_QA)=>{Object.defineProperty(_QA,"__esModule",{value:!0});_QA.globalErrorHandler=_QA.setGlobalErrorHandler=void 0;var WQQ=BL(),yQA=(0,WQQ.loggingErrorHandler)();function XQQ(A){yQA=A}_QA.setGlobalErrorHandler=XQQ;function UQQ(A){try{yQA(A)}catch{}}_QA.globalErrorHandler=UQQ});var dQA=U((bQA)=>{Object.defineProperty(bQA,"__esModule",{value:!0});bQA.getStringListFromEnv=bQA.getBooleanFromEnv=bQA.getStringFromEnv=bQA.getNumberFromEnv=void 0;var hQA=P(),xQA=M("util");function KQQ(A){let Q=process.env[A];if(Q==null||Q.trim()==="")return;let B=Number(Q);if(isNaN(B)){hQA.diag.warn(`Unknown value ${(0,xQA.inspect)(Q)} for ${A}, expected a number, using defaults`);return}return B}bQA.getNumberFromEnv=KQQ;function vQA(A){let Q=process.env[A];if(Q==null||Q.trim()==="")return;return Q}bQA.getStringFromEnv=vQA;function zQQ(A){let Q=process.env[A]?.trim().toLowerCase();if(Q==null||Q==="")return!1;if(Q==="true")return!0;else if(Q==="false")return!1;else return hQA.diag.warn(`Unknown value ${(0,xQA.inspect)(Q)} for ${A}, expected 'true' or 'false', falling back to 'false' (default)`),!1}bQA.getBooleanFromEnv=zQQ;function VQQ(A){return vQA(A)?.split(",").map((Q)=>Q.trim()).filter((Q)=>Q!=="")}bQA.getStringListFromEnv=VQQ});var lQA=U((cQA)=>{Object.defineProperty(cQA,"__esModule",{value:!0});cQA._globalThis=void 0;cQA._globalThis=globalThis});var nQA=U((pQA)=>{Object.defineProperty(pQA,"__esModule",{value:!0});pQA.VERSION=void 0;pQA.VERSION="2.6.1"});var sQA=U((aQA)=>{Object.defineProperty(aQA,"__esModule",{value:!0});aQA.ATTR_PROCESS_RUNTIME_NAME=void 0;aQA.ATTR_PROCESS_RUNTIME_NAME="process.runtime.name"});var eQA=U((rQA)=>{Object.defineProperty(rQA,"__esModule",{value:!0});rQA.SDK_INFO=void 0;var MQQ=nQA(),M4=HA(),NQQ=sQA();rQA.SDK_INFO={[M4.ATTR_TELEMETRY_SDK_NAME]:"opentelemetry",[NQQ.ATTR_PROCESS_RUNTIME_NAME]:"node",[M4.ATTR_TELEMETRY_SDK_LANGUAGE]:M4.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,[M4.ATTR_TELEMETRY_SDK_VERSION]:MQQ.VERSION}});var QBA=U(($Y)=>{Object.defineProperty($Y,"__esModule",{value:!0});$Y.otperformance=$Y.SDK_INFO=$Y._globalThis=$Y.getStringListFromEnv=$Y.getNumberFromEnv=$Y.getBooleanFromEnv=$Y.getStringFromEnv=void 0;var N4=dQA();Object.defineProperty($Y,"getStringFromEnv",{enumerable:!0,get:function(){return N4.getStringFromEnv}});Object.defineProperty($Y,"getBooleanFromEnv",{enumerable:!0,get:function(){return N4.getBooleanFromEnv}});Object.defineProperty($Y,"getNumberFromEnv",{enumerable:!0,get:function(){return N4.getNumberFromEnv}});Object.defineProperty($Y,"getStringListFromEnv",{enumerable:!0,get:function(){return N4.getStringListFromEnv}});var jQQ=lQA();Object.defineProperty($Y,"_globalThis",{enumerable:!0,get:function(){return jQQ._globalThis}});var RQQ=eQA();Object.defineProperty($Y,"SDK_INFO",{enumerable:!0,get:function(){return RQQ.SDK_INFO}});$Y.otperformance=performance});var IL=U((rE)=>{Object.defineProperty(rE,"__esModule",{value:!0});rE.getStringListFromEnv=rE.getNumberFromEnv=rE.getStringFromEnv=rE.getBooleanFromEnv=rE.otperformance=rE._globalThis=rE.SDK_INFO=void 0;var rJ=QBA();Object.defineProperty(rE,"SDK_INFO",{enumerable:!0,get:function(){return rJ.SDK_INFO}});Object.defineProperty(rE,"_globalThis",{enumerable:!0,get:function(){return rJ._globalThis}});Object.defineProperty(rE,"otperformance",{enumerable:!0,get:function(){return rJ.otperformance}});Object.defineProperty(rE,"getBooleanFromEnv",{enumerable:!0,get:function(){return rJ.getBooleanFromEnv}});Object.defineProperty(rE,"getStringFromEnv",{enumerable:!0,get:function(){return rJ.getStringFromEnv}});Object.defineProperty(rE,"getNumberFromEnv",{enumerable:!0,get:function(){return rJ.getNumberFromEnv}});Object.defineProperty(rE,"getStringListFromEnv",{enumerable:!0,get:function(){return rJ.getStringListFromEnv}})});var JBA=U((EBA)=>{Object.defineProperty(EBA,"__esModule",{value:!0});EBA.addHrTimes=EBA.isTimeInput=EBA.isTimeInputHrTime=EBA.hrTimeToMicroseconds=EBA.hrTimeToMilliseconds=EBA.hrTimeToNanoseconds=EBA.hrTimeToTimeStamp=EBA.hrTimeDuration=EBA.timeInputToHrTime=EBA.hrTime=EBA.getTimeOrigin=EBA.millisToHrTime=void 0;var j4=IL(),BBA=9,OQQ=6,TQQ=Math.pow(10,OQQ),R4=Math.pow(10,BBA);function j9(A){let Q=A/1000,B=Math.trunc(Q),I=Math.round(A%1000*TQQ);return[B,I]}EBA.millisToHrTime=j9;function PQQ(){return j4.otperformance.timeOrigin}EBA.getTimeOrigin=PQQ;function IBA(A){let Q=j9(j4.otperformance.timeOrigin),B=j9(typeof A==="number"?A:j4.otperformance.now());return CBA(Q,B)}EBA.hrTime=IBA;function kQQ(A){if(CL(A))return A;else if(typeof A==="number")if(A=R4)B[1]-=R4,B[0]+=1;return B}EBA.addHrTimes=CBA});var DBA=U((FBA)=>{Object.defineProperty(FBA,"__esModule",{value:!0});FBA.unrefTimer=void 0;function aQQ(A){if(typeof A!=="number")A.unref()}FBA.unrefTimer=aQQ});var WBA=U((ZBA)=>{Object.defineProperty(ZBA,"__esModule",{value:!0});ZBA.ExportResultCode=void 0;var oQQ;(function(A){A[A.SUCCESS=0]="SUCCESS",A[A.FAILED=1]="FAILED"})(oQQ=ZBA.ExportResultCode||(ZBA.ExportResultCode={}))});var zBA=U((wBA)=>{Object.defineProperty(wBA,"__esModule",{value:!0});wBA.CompositePropagator=void 0;var XBA=P();class UBA{_propagators;_fields;constructor(A={}){this._propagators=A.propagators??[],this._fields=Array.from(new Set(this._propagators.map((Q)=>typeof Q.fields==="function"?Q.fields():[]).reduce((Q,B)=>Q.concat(B),[])))}inject(A,Q,B){for(let I of this._propagators)try{I.inject(A,Q,B)}catch(C){XBA.diag.warn(`Failed to inject with ${I.constructor.name}. Err: ${C.message}`)}}extract(A,Q,B){return this._propagators.reduce((I,C)=>{try{return C.extract(I,Q,B)}catch(E){XBA.diag.warn(`Failed to extract with ${C.constructor.name}. Err: ${E.message}`)}return I},A)}fields(){return this._fields.slice()}}wBA.CompositePropagator=UBA});var LBA=U((VBA)=>{Object.defineProperty(VBA,"__esModule",{value:!0});VBA.validateValue=VBA.validateKey=void 0;var YL="[_0-9a-z-*/]",sQQ=`[a-z]${YL}{0,255}`,rQQ=`[a-z0-9]${YL}{0,240}@[a-z]${YL}{0,13}`,tQQ=new RegExp(`^(?:${sQQ}|${rQQ})$`),eQQ=/^[ -~]{0,255}[!-~]$/,ABQ=/,|=/;function QBQ(A){return tQQ.test(A)}VBA.validateKey=QBQ;function BBQ(A){return eQQ.test(A)&&!ABQ.test(A)}VBA.validateValue=BBQ});var FL=U((RBA)=>{Object.defineProperty(RBA,"__esModule",{value:!0});RBA.TraceState=void 0;var HBA=LBA(),MBA=32,CBQ=512,NBA=",",jBA="=";class JL{_internalState=new Map;constructor(A){if(A)this._parse(A)}set(A,Q){let B=this._clone();if(B._internalState.has(A))B._internalState.delete(A);return B._internalState.set(A,Q),B}unset(A){let Q=this._clone();return Q._internalState.delete(A),Q}get(A){return this._internalState.get(A)}serialize(){return this._keys().reduce((A,Q)=>{return A.push(Q+jBA+this.get(Q)),A},[]).join(NBA)}_parse(A){if(A.length>CBQ)return;if(this._internalState=A.split(NBA).reverse().reduce((Q,B)=>{let I=B.trim(),C=I.indexOf(jBA);if(C!==-1){let E=I.slice(0,C),Y=I.slice(C+1,B.length);if((0,HBA.validateKey)(E)&&(0,HBA.validateValue)(Y))Q.set(E,Y)}return Q},new Map),this._internalState.size>MBA)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,MBA))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let A=new JL;return A._internalState=new Map(this._internalState),A}}RBA.TraceState=JL});var SBA=U((PBA)=>{Object.defineProperty(PBA,"__esModule",{value:!0});PBA.W3CTraceContextPropagator=PBA.parseTraceParent=PBA.TRACE_STATE_HEADER=PBA.TRACE_PARENT_HEADER=void 0;var q4=P(),EBQ=N9(),YBQ=FL();PBA.TRACE_PARENT_HEADER="traceparent";PBA.TRACE_STATE_HEADER="tracestate";var JBQ="00",FBQ="(?!ff)[\\da-f]{2}",GBQ="(?![0]{32})[\\da-f]{32}",DBQ="(?![0]{16})[\\da-f]{16}",ZBQ="[\\da-f]{2}",WBQ=new RegExp(`^\\s?(${FBQ})-(${GBQ})-(${DBQ})-(${ZBQ})(-.*)?\\s?$`);function OBA(A){let Q=WBQ.exec(A);if(!Q)return null;if(Q[1]==="00"&&Q[5])return null;return{traceId:Q[2],spanId:Q[3],traceFlags:parseInt(Q[4],16)}}PBA.parseTraceParent=OBA;class TBA{inject(A,Q,B){let I=q4.trace.getSpanContext(A);if(!I||(0,EBQ.isTracingSuppressed)(A)||!(0,q4.isSpanContextValid)(I))return;let C=`${JBQ}-${I.traceId}-${I.spanId}-0${Number(I.traceFlags||q4.TraceFlags.NONE).toString(16)}`;if(B.set(Q,PBA.TRACE_PARENT_HEADER,C),I.traceState)B.set(Q,PBA.TRACE_STATE_HEADER,I.traceState.serialize())}extract(A,Q,B){let I=B.get(Q,PBA.TRACE_PARENT_HEADER);if(!I)return A;let C=Array.isArray(I)?I[0]:I;if(typeof C!=="string")return A;let E=OBA(C);if(!E)return A;E.isRemote=!0;let Y=B.get(Q,PBA.TRACE_STATE_HEADER);if(Y){let J=Array.isArray(Y)?Y.join(","):Y;E.traceState=new YBQ.TraceState(typeof J==="string"?J:void 0)}return q4.trace.setSpanContext(A,E)}fields(){return[PBA.TRACE_PARENT_HEADER,PBA.TRACE_STATE_HEADER]}}PBA.W3CTraceContextPropagator=TBA});var gBA=U((_BA)=>{Object.defineProperty(_BA,"__esModule",{value:!0});_BA.getRPCMetadata=_BA.deleteRPCMetadata=_BA.setRPCMetadata=_BA.RPCType=void 0;var UBQ=P(),GL=(0,UBQ.createContextKey)("OpenTelemetry SDK Context Key RPC_METADATA"),wBQ;(function(A){A.HTTP="http"})(wBQ=_BA.RPCType||(_BA.RPCType={}));function KBQ(A,Q){return A.setValue(GL,Q)}_BA.setRPCMetadata=KBQ;function zBQ(A){return A.deleteValue(GL)}_BA.deleteRPCMetadata=zBQ;function VBQ(A){return A.getValue(GL)}_BA.getRPCMetadata=VBQ});var cBA=U((mBA)=>{Object.defineProperty(mBA,"__esModule",{value:!0});mBA.isPlainObject=void 0;var HBQ="[object Object]",MBQ="[object Null]",NBQ="[object Undefined]",jBQ=Function.prototype,hBA=jBQ.toString,RBQ=hBA.call(Object),qBQ=Object.getPrototypeOf,xBA=Object.prototype,vBA=xBA.hasOwnProperty,tJ=Symbol?Symbol.toStringTag:void 0,bBA=xBA.toString;function OBQ(A){if(!TBQ(A)||PBQ(A)!==HBQ)return!1;let Q=qBQ(A);if(Q===null)return!0;let B=vBA.call(Q,"constructor")&&Q.constructor;return typeof B=="function"&&B instanceof B&&hBA.call(B)===RBQ}mBA.isPlainObject=OBQ;function TBQ(A){return A!=null&&typeof A=="object"}function PBQ(A){if(A==null)return A===void 0?NBQ:MBQ;return tJ&&tJ in Object(A)?kBQ(A):SBQ(A)}function kBQ(A){let Q=vBA.call(A,tJ),B=A[tJ],I=!1;try{A[tJ]=void 0,I=!0}catch{}let C=bBA.call(A);if(I)if(Q)A[tJ]=B;else delete A[tJ];return C}function SBQ(A){return bBA.call(A)}});var oBA=U((nBA)=>{Object.defineProperty(nBA,"__esModule",{value:!0});nBA.merge=void 0;var uBA=cBA(),yBQ=20;function _BQ(...A){let Q=A.shift(),B=new WeakMap;while(A.length>0)Q=pBA(Q,A.shift(),0,B);return Q}nBA.merge=_BQ;function DL(A){if(k4(A))return A.slice();return A}function pBA(A,Q,B=0,I){let C;if(B>yBQ)return;if(B++,P4(A)||P4(Q)||iBA(Q))C=DL(Q);else if(k4(A)){if(C=A.slice(),k4(Q))for(let E=0,Y=Q.length;E"u")delete C[F];else C[F]=G;else{let D=C[F],Z=G;if(lBA(A,F,I)||lBA(Q,F,I))delete C[F];else{if(R9(D)&&R9(Z)){let W=I.get(D)||[],X=I.get(Z)||[];W.push({obj:A,key:F}),X.push({obj:Q,key:F}),I.set(D,W),I.set(Z,X)}C[F]=pBA(C[F],G,B,I)}}}}else C=Q;return C}function lBA(A,Q,B){let I=B.get(A[Q])||[];for(let C=0,E=I.length;C"u"||A instanceof Date||A instanceof RegExp||A===null}function fBQ(A,Q){if(!(0,uBA.isPlainObject)(A)||!(0,uBA.isPlainObject)(Q))return!1;return!0}});var tBA=U((sBA)=>{Object.defineProperty(sBA,"__esModule",{value:!0});sBA.callWithTimeout=sBA.TimeoutError=void 0;class S4 extends Error{constructor(A){super(A);Object.setPrototypeOf(this,S4.prototype)}}sBA.TimeoutError=S4;function gBQ(A,Q){let B,I=new Promise(function(E,Y){B=setTimeout(function(){Y(new S4("Operation timed out."))},Q)});return Promise.race([A,I]).then((C)=>{return clearTimeout(B),C},(C)=>{throw clearTimeout(B),C})}sBA.callWithTimeout=gBQ});var BIA=U((AIA)=>{Object.defineProperty(AIA,"__esModule",{value:!0});AIA.isUrlIgnored=AIA.urlMatches=void 0;function eBA(A,Q){if(typeof Q==="string")return A===Q;else return!!A.match(Q)}AIA.urlMatches=eBA;function xBQ(A,Q){if(!Q)return!1;for(let B of Q)if(eBA(A,B))return!0;return!1}AIA.isUrlIgnored=xBQ});var YIA=U((CIA)=>{Object.defineProperty(CIA,"__esModule",{value:!0});CIA.Deferred=void 0;class IIA{_promise;_resolve;_reject;constructor(){this._promise=new Promise((A,Q)=>{this._resolve=A,this._reject=Q})}get promise(){return this._promise}resolve(A){this._resolve(A)}reject(A){this._reject(A)}}CIA.Deferred=IIA});var DIA=U((FIA)=>{Object.defineProperty(FIA,"__esModule",{value:!0});FIA.BindOnceFuture=void 0;var bBQ=YIA();class JIA{_isCalled=!1;_deferred=new bBQ.Deferred;_callback;_that;constructor(A,Q){this._callback=A,this._that=Q}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...A){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...A)).then((Q)=>this._deferred.resolve(Q),(Q)=>this._deferred.reject(Q))}catch(Q){this._deferred.reject(Q)}}return this._deferred.promise}}FIA.BindOnceFuture=JIA});var UIA=U((WIA)=>{Object.defineProperty(WIA,"__esModule",{value:!0});WIA.diagLogLevelFromString=void 0;var tE=P(),ZIA={ALL:tE.DiagLogLevel.ALL,VERBOSE:tE.DiagLogLevel.VERBOSE,DEBUG:tE.DiagLogLevel.DEBUG,INFO:tE.DiagLogLevel.INFO,WARN:tE.DiagLogLevel.WARN,ERROR:tE.DiagLogLevel.ERROR,NONE:tE.DiagLogLevel.NONE};function mBQ(A){if(A==null)return;let Q=ZIA[A.toUpperCase()];if(Q==null)return tE.diag.warn(`Unknown log level "${A}", expected one of ${Object.keys(ZIA)}, using default`),tE.DiagLogLevel.INFO;return Q}WIA.diagLogLevelFromString=mBQ});var VIA=U((KIA)=>{Object.defineProperty(KIA,"__esModule",{value:!0});KIA._export=void 0;var wIA=P(),dBQ=N9();function cBQ(A,Q){return new Promise((B)=>{wIA.context.with((0,dBQ.suppressTracing)(wIA.context.active()),()=>{A.export(Q,B)})})}KIA._export=cBQ});var hA=U((AA)=>{Object.defineProperty(AA,"__esModule",{value:!0});AA.internal=AA.diagLogLevelFromString=AA.BindOnceFuture=AA.urlMatches=AA.isUrlIgnored=AA.callWithTimeout=AA.TimeoutError=AA.merge=AA.TraceState=AA.unsuppressTracing=AA.suppressTracing=AA.isTracingSuppressed=AA.setRPCMetadata=AA.getRPCMetadata=AA.deleteRPCMetadata=AA.RPCType=AA.parseTraceParent=AA.W3CTraceContextPropagator=AA.TRACE_STATE_HEADER=AA.TRACE_PARENT_HEADER=AA.CompositePropagator=AA.otperformance=AA.getStringListFromEnv=AA.getNumberFromEnv=AA.getBooleanFromEnv=AA.getStringFromEnv=AA._globalThis=AA.SDK_INFO=AA.parseKeyPairsIntoRecord=AA.ExportResultCode=AA.unrefTimer=AA.timeInputToHrTime=AA.millisToHrTime=AA.isTimeInputHrTime=AA.isTimeInput=AA.hrTimeToTimeStamp=AA.hrTimeToNanoseconds=AA.hrTimeToMilliseconds=AA.hrTimeToMicroseconds=AA.hrTimeDuration=AA.hrTime=AA.getTimeOrigin=AA.addHrTimes=AA.loggingErrorHandler=AA.setGlobalErrorHandler=AA.globalErrorHandler=AA.sanitizeAttributes=AA.isAttributeValue=AA.AnchoredClock=AA.W3CBaggagePropagator=void 0;var uBQ=VQA();Object.defineProperty(AA,"W3CBaggagePropagator",{enumerable:!0,get:function(){return uBQ.W3CBaggagePropagator}});var lBQ=MQA();Object.defineProperty(AA,"AnchoredClock",{enumerable:!0,get:function(){return lBQ.AnchoredClock}});var $IA=PQA();Object.defineProperty(AA,"isAttributeValue",{enumerable:!0,get:function(){return $IA.isAttributeValue}});Object.defineProperty(AA,"sanitizeAttributes",{enumerable:!0,get:function(){return $IA.sanitizeAttributes}});var LIA=gQA();Object.defineProperty(AA,"globalErrorHandler",{enumerable:!0,get:function(){return LIA.globalErrorHandler}});Object.defineProperty(AA,"setGlobalErrorHandler",{enumerable:!0,get:function(){return LIA.setGlobalErrorHandler}});var pBQ=BL();Object.defineProperty(AA,"loggingErrorHandler",{enumerable:!0,get:function(){return pBQ.loggingErrorHandler}});var nI=JBA();Object.defineProperty(AA,"addHrTimes",{enumerable:!0,get:function(){return nI.addHrTimes}});Object.defineProperty(AA,"getTimeOrigin",{enumerable:!0,get:function(){return nI.getTimeOrigin}});Object.defineProperty(AA,"hrTime",{enumerable:!0,get:function(){return nI.hrTime}});Object.defineProperty(AA,"hrTimeDuration",{enumerable:!0,get:function(){return nI.hrTimeDuration}});Object.defineProperty(AA,"hrTimeToMicroseconds",{enumerable:!0,get:function(){return nI.hrTimeToMicroseconds}});Object.defineProperty(AA,"hrTimeToMilliseconds",{enumerable:!0,get:function(){return nI.hrTimeToMilliseconds}});Object.defineProperty(AA,"hrTimeToNanoseconds",{enumerable:!0,get:function(){return nI.hrTimeToNanoseconds}});Object.defineProperty(AA,"hrTimeToTimeStamp",{enumerable:!0,get:function(){return nI.hrTimeToTimeStamp}});Object.defineProperty(AA,"isTimeInput",{enumerable:!0,get:function(){return nI.isTimeInput}});Object.defineProperty(AA,"isTimeInputHrTime",{enumerable:!0,get:function(){return nI.isTimeInputHrTime}});Object.defineProperty(AA,"millisToHrTime",{enumerable:!0,get:function(){return nI.millisToHrTime}});Object.defineProperty(AA,"timeInputToHrTime",{enumerable:!0,get:function(){return nI.timeInputToHrTime}});var iBQ=DBA();Object.defineProperty(AA,"unrefTimer",{enumerable:!0,get:function(){return iBQ.unrefTimer}});var nBQ=WBA();Object.defineProperty(AA,"ExportResultCode",{enumerable:!0,get:function(){return nBQ.ExportResultCode}});var aBQ=e3();Object.defineProperty(AA,"parseKeyPairsIntoRecord",{enumerable:!0,get:function(){return aBQ.parseKeyPairsIntoRecord}});var eJ=IL();Object.defineProperty(AA,"SDK_INFO",{enumerable:!0,get:function(){return eJ.SDK_INFO}});Object.defineProperty(AA,"_globalThis",{enumerable:!0,get:function(){return eJ._globalThis}});Object.defineProperty(AA,"getStringFromEnv",{enumerable:!0,get:function(){return eJ.getStringFromEnv}});Object.defineProperty(AA,"getBooleanFromEnv",{enumerable:!0,get:function(){return eJ.getBooleanFromEnv}});Object.defineProperty(AA,"getNumberFromEnv",{enumerable:!0,get:function(){return eJ.getNumberFromEnv}});Object.defineProperty(AA,"getStringListFromEnv",{enumerable:!0,get:function(){return eJ.getStringListFromEnv}});Object.defineProperty(AA,"otperformance",{enumerable:!0,get:function(){return eJ.otperformance}});var oBQ=zBA();Object.defineProperty(AA,"CompositePropagator",{enumerable:!0,get:function(){return oBQ.CompositePropagator}});var y4=SBA();Object.defineProperty(AA,"TRACE_PARENT_HEADER",{enumerable:!0,get:function(){return y4.TRACE_PARENT_HEADER}});Object.defineProperty(AA,"TRACE_STATE_HEADER",{enumerable:!0,get:function(){return y4.TRACE_STATE_HEADER}});Object.defineProperty(AA,"W3CTraceContextPropagator",{enumerable:!0,get:function(){return y4.W3CTraceContextPropagator}});Object.defineProperty(AA,"parseTraceParent",{enumerable:!0,get:function(){return y4.parseTraceParent}});var _4=gBA();Object.defineProperty(AA,"RPCType",{enumerable:!0,get:function(){return _4.RPCType}});Object.defineProperty(AA,"deleteRPCMetadata",{enumerable:!0,get:function(){return _4.deleteRPCMetadata}});Object.defineProperty(AA,"getRPCMetadata",{enumerable:!0,get:function(){return _4.getRPCMetadata}});Object.defineProperty(AA,"setRPCMetadata",{enumerable:!0,get:function(){return _4.setRPCMetadata}});var ZL=N9();Object.defineProperty(AA,"isTracingSuppressed",{enumerable:!0,get:function(){return ZL.isTracingSuppressed}});Object.defineProperty(AA,"suppressTracing",{enumerable:!0,get:function(){return ZL.suppressTracing}});Object.defineProperty(AA,"unsuppressTracing",{enumerable:!0,get:function(){return ZL.unsuppressTracing}});var sBQ=FL();Object.defineProperty(AA,"TraceState",{enumerable:!0,get:function(){return sBQ.TraceState}});var rBQ=oBA();Object.defineProperty(AA,"merge",{enumerable:!0,get:function(){return rBQ.merge}});var HIA=tBA();Object.defineProperty(AA,"TimeoutError",{enumerable:!0,get:function(){return HIA.TimeoutError}});Object.defineProperty(AA,"callWithTimeout",{enumerable:!0,get:function(){return HIA.callWithTimeout}});var MIA=BIA();Object.defineProperty(AA,"isUrlIgnored",{enumerable:!0,get:function(){return MIA.isUrlIgnored}});Object.defineProperty(AA,"urlMatches",{enumerable:!0,get:function(){return MIA.urlMatches}});var tBQ=DIA();Object.defineProperty(AA,"BindOnceFuture",{enumerable:!0,get:function(){return tBQ.BindOnceFuture}});var eBQ=UIA();Object.defineProperty(AA,"diagLogLevelFromString",{enumerable:!0,get:function(){return eBQ.diagLogLevelFromString}});var AIQ=VIA();AA.internal={_export:AIQ._export}});var zL=U((dIA)=>{Object.defineProperty(dIA,"__esModule",{value:!0});dIA.AbstractAsyncHooksContextManager=void 0;var MIQ=M("events"),NIQ=["addListener","on","once","prependListener","prependOnceListener"];class mIA{bind(A,Q){if(Q instanceof MIQ.EventEmitter)return this._bindEventEmitter(A,Q);if(typeof Q==="function")return this._bindFunction(A,Q);return Q}_bindFunction(A,Q){let B=this,I=function(...C){return B.with(A,()=>Q.apply(this,C))};return Object.defineProperty(I,"length",{enumerable:!1,configurable:!0,writable:!1,value:Q.length}),I}_bindEventEmitter(A,Q){if(this._getPatchMap(Q)!==void 0)return Q;if(this._createPatchMap(Q),NIQ.forEach((I)=>{if(Q[I]===void 0)return;Q[I]=this._patchAddListener(Q,Q[I],A)}),typeof Q.removeListener==="function")Q.removeListener=this._patchRemoveListener(Q,Q.removeListener);if(typeof Q.off==="function")Q.off=this._patchRemoveListener(Q,Q.off);if(typeof Q.removeAllListeners==="function")Q.removeAllListeners=this._patchRemoveAllListeners(Q,Q.removeAllListeners);return Q}_patchRemoveListener(A,Q){let B=this;return function(I,C){let E=B._getPatchMap(A)?.[I];if(E===void 0)return Q.call(this,I,C);let Y=E.get(C);return Q.call(this,I,Y||C)}}_patchRemoveAllListeners(A,Q){let B=this;return function(I){let C=B._getPatchMap(A);if(C!==void 0){if(arguments.length===0)B._createPatchMap(A);else if(C[I]!==void 0)delete C[I]}return Q.apply(this,arguments)}}_patchAddListener(A,Q,B){let I=this;return function(C,E){if(I._wrapped)return Q.call(this,C,E);let Y=I._getPatchMap(A);if(Y===void 0)Y=I._createPatchMap(A);let J=Y[C];if(J===void 0)J=new WeakMap,Y[C]=J;let F=I.bind(B,E);J.set(E,F),I._wrapped=!0;try{return Q.call(this,C,F)}finally{I._wrapped=!1}}}_createPatchMap(A){let Q=Object.create(null);return A[this._kOtListeners]=Q,Q}_getPatchMap(A){return A[this._kOtListeners]}_kOtListeners=Symbol("OtListeners");_wrapped=!1}dIA.AbstractAsyncHooksContextManager=mIA});var iIA=U((lIA)=>{Object.defineProperty(lIA,"__esModule",{value:!0});lIA.AsyncHooksContextManager=void 0;var jIQ=P(),RIQ=M("async_hooks"),qIQ=zL();class uIA extends qIQ.AbstractAsyncHooksContextManager{_asyncHook;_contexts=new Map;_stack=[];constructor(){super();this._asyncHook=RIQ.createHook({init:this._init.bind(this),before:this._before.bind(this),after:this._after.bind(this),destroy:this._destroy.bind(this),promiseResolve:this._destroy.bind(this)})}active(){return this._stack[this._stack.length-1]??jIQ.ROOT_CONTEXT}with(A,Q,B,...I){this._enterContext(A);try{return Q.call(B,...I)}finally{this._exitContext()}}enable(){return this._asyncHook.enable(),this}disable(){return this._asyncHook.disable(),this._contexts.clear(),this._stack=[],this}_init(A,Q){if(Q==="TIMERWRAP")return;let B=this._stack[this._stack.length-1];if(B!==void 0)this._contexts.set(A,B)}_destroy(A){this._contexts.delete(A)}_before(A){let Q=this._contexts.get(A);if(Q!==void 0)this._enterContext(Q)}_after(){this._exitContext()}_enterContext(A){this._stack.push(A)}_exitContext(){this._stack.pop()}}lIA.AsyncHooksContextManager=uIA});var sIA=U((aIA)=>{Object.defineProperty(aIA,"__esModule",{value:!0});aIA.AsyncLocalStorageContextManager=void 0;var OIQ=P(),TIQ=M("async_hooks"),PIQ=zL();class nIA extends PIQ.AbstractAsyncHooksContextManager{_asyncLocalStorage;constructor(){super();this._asyncLocalStorage=new TIQ.AsyncLocalStorage}active(){return this._asyncLocalStorage.getStore()??OIQ.ROOT_CONTEXT}with(A,Q,B,...I){let C=B==null?Q:Q.bind(B);return this._asyncLocalStorage.run(A,C,...I)}enable(){return this}disable(){return this._asyncLocalStorage.disable(),this}}aIA.AsyncLocalStorageContextManager=nIA});var rIA=U((b4)=>{Object.defineProperty(b4,"__esModule",{value:!0});b4.AsyncLocalStorageContextManager=b4.AsyncHooksContextManager=void 0;var kIQ=iIA();Object.defineProperty(b4,"AsyncHooksContextManager",{enumerable:!0,get:function(){return kIQ.AsyncHooksContextManager}});var SIQ=sIA();Object.defineProperty(b4,"AsyncLocalStorageContextManager",{enumerable:!0,get:function(){return SIQ.AsyncLocalStorageContextManager}})});var VL=U((tIA)=>{Object.defineProperty(tIA,"__esModule",{value:!0});tIA._clearDefaultServiceNameCache=tIA.defaultServiceName=void 0;var P9;function _IQ(){if(P9===void 0)try{let A=globalThis.process.argv0;P9=A?`unknown_service:${A}`:"unknown_service"}catch{P9="unknown_service"}return P9}tIA.defaultServiceName=_IQ;function fIQ(){P9=void 0}tIA._clearDefaultServiceNameCache=fIQ});var BCA=U((ACA)=>{Object.defineProperty(ACA,"__esModule",{value:!0});ACA.isPromiseLike=void 0;var hIQ=(A)=>{return A!==null&&typeof A==="object"&&typeof A.then==="function"};ACA.isPromiseLike=hIQ});var HL=U((CCA)=>{Object.defineProperty(CCA,"__esModule",{value:!0});CCA.defaultResource=CCA.emptyResource=CCA.resourceFromDetectedResource=CCA.resourceFromAttributes=void 0;var S9=P(),$L=hA(),AF=HA(),xIQ=VL(),k9=BCA();class y9{_rawAttributes;_asyncAttributesPending=!1;_schemaUrl;_memoizedAttributes;static FromAttributeList(A,Q){let B=new y9({},Q);return B._rawAttributes=ICA(A),B._asyncAttributesPending=A.filter(([I,C])=>(0,k9.isPromiseLike)(C)).length>0,B}constructor(A,Q){let B=A.attributes??{};this._rawAttributes=Object.entries(B).map(([I,C])=>{if((0,k9.isPromiseLike)(C))this._asyncAttributesPending=!0;return[I,C]}),this._rawAttributes=ICA(this._rawAttributes),this._schemaUrl=dIQ(Q?.schemaUrl)}get asyncAttributesPending(){return this._asyncAttributesPending}async waitForAsyncAttributes(){if(!this.asyncAttributesPending)return;for(let A=0;A{if((0,k9.isPromiseLike)(B))return[Q,B.catch((I)=>{S9.diag.debug("promise rejection for resource attribute: %s - %s",Q,I);return})];return[Q,B]})}function dIQ(A){if(typeof A==="string"||A===void 0)return A;S9.diag.warn("Schema URL must be string or undefined, got %s. Schema URL will be ignored.",A);return}function cIQ(A,Q){let B=A?.schemaUrl,I=Q?.schemaUrl,C=B===void 0||B==="",E=I===void 0||I==="";if(C)return I;if(E)return B;if(B===I)return B;S9.diag.warn('Schema URL merge conflict: old resource has "%s", updating resource has "%s". Resulting resource will have undefined Schema URL.',B,I);return}});var GCA=U((JCA)=>{Object.defineProperty(JCA,"__esModule",{value:!0});JCA.detectResources=void 0;var YCA=P(),ML=HL(),iIQ=(A={})=>{return(A.detectors||[]).map((B)=>{try{let I=(0,ML.resourceFromDetectedResource)(B.detect(A));return YCA.diag.debug(`${B.constructor.name} found resource.`,I),I}catch(I){return YCA.diag.debug(`${B.constructor.name} failed: ${I.message}`),(0,ML.emptyResource)()}}).reduce((B,I)=>B.merge(I),(0,ML.emptyResource)())};JCA.detectResources=iIQ});var UCA=U((WCA)=>{Object.defineProperty(WCA,"__esModule",{value:!0});WCA.envDetector=void 0;var nIQ=P(),aIQ=HA(),DCA=hA();class ZCA{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(A){let Q={},B=(0,DCA.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),I=(0,DCA.getStringFromEnv)("OTEL_SERVICE_NAME");if(B)try{let C=this._parseResourceAttributes(B);Object.assign(Q,C)}catch(C){nIQ.diag.debug(`EnvDetector failed: ${C instanceof Error?C.message:C}`)}if(I)Q[aIQ.ATTR_SERVICE_NAME]=I;return{attributes:Q}}_parseResourceAttributes(A){if(!A)return{};let Q={},B=A.split(this._COMMA_SEPARATOR);for(let I of B){let C=I.split(this._LABEL_KEY_VALUE_SPLITTER);if(C.length!==2)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${I}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[E,Y]=C,J=E.trim(),F=Y.trim();if(J.length===0)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${I}".`);let G,D;try{G=decodeURIComponent(J),D=decodeURIComponent(F)}catch(Z){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${I}": ${Z instanceof Error?Z.message:Z}`)}if(G.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${G}".`);if(D.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${G}".`);Q[G]=D}return Q}}WCA.envDetector=new ZCA});var _9=U((wCA)=>{Object.defineProperty(wCA,"__esModule",{value:!0});wCA.ATTR_WEBENGINE_VERSION=wCA.ATTR_WEBENGINE_NAME=wCA.ATTR_WEBENGINE_DESCRIPTION=wCA.ATTR_SERVICE_NAMESPACE=wCA.ATTR_SERVICE_INSTANCE_ID=wCA.ATTR_PROCESS_RUNTIME_VERSION=wCA.ATTR_PROCESS_RUNTIME_NAME=wCA.ATTR_PROCESS_RUNTIME_DESCRIPTION=wCA.ATTR_PROCESS_PID=wCA.ATTR_PROCESS_OWNER=wCA.ATTR_PROCESS_EXECUTABLE_PATH=wCA.ATTR_PROCESS_EXECUTABLE_NAME=wCA.ATTR_PROCESS_COMMAND_ARGS=wCA.ATTR_PROCESS_COMMAND=wCA.ATTR_OS_VERSION=wCA.ATTR_OS_TYPE=wCA.ATTR_K8S_POD_NAME=wCA.ATTR_K8S_NAMESPACE_NAME=wCA.ATTR_K8S_DEPLOYMENT_NAME=wCA.ATTR_K8S_CLUSTER_NAME=wCA.ATTR_HOST_TYPE=wCA.ATTR_HOST_NAME=wCA.ATTR_HOST_IMAGE_VERSION=wCA.ATTR_HOST_IMAGE_NAME=wCA.ATTR_HOST_IMAGE_ID=wCA.ATTR_HOST_ID=wCA.ATTR_HOST_ARCH=wCA.ATTR_CONTAINER_NAME=wCA.ATTR_CONTAINER_IMAGE_TAGS=wCA.ATTR_CONTAINER_IMAGE_NAME=wCA.ATTR_CONTAINER_ID=wCA.ATTR_CLOUD_REGION=wCA.ATTR_CLOUD_PROVIDER=wCA.ATTR_CLOUD_AVAILABILITY_ZONE=wCA.ATTR_CLOUD_ACCOUNT_ID=void 0;wCA.ATTR_CLOUD_ACCOUNT_ID="cloud.account.id";wCA.ATTR_CLOUD_AVAILABILITY_ZONE="cloud.availability_zone";wCA.ATTR_CLOUD_PROVIDER="cloud.provider";wCA.ATTR_CLOUD_REGION="cloud.region";wCA.ATTR_CONTAINER_ID="container.id";wCA.ATTR_CONTAINER_IMAGE_NAME="container.image.name";wCA.ATTR_CONTAINER_IMAGE_TAGS="container.image.tags";wCA.ATTR_CONTAINER_NAME="container.name";wCA.ATTR_HOST_ARCH="host.arch";wCA.ATTR_HOST_ID="host.id";wCA.ATTR_HOST_IMAGE_ID="host.image.id";wCA.ATTR_HOST_IMAGE_NAME="host.image.name";wCA.ATTR_HOST_IMAGE_VERSION="host.image.version";wCA.ATTR_HOST_NAME="host.name";wCA.ATTR_HOST_TYPE="host.type";wCA.ATTR_K8S_CLUSTER_NAME="k8s.cluster.name";wCA.ATTR_K8S_DEPLOYMENT_NAME="k8s.deployment.name";wCA.ATTR_K8S_NAMESPACE_NAME="k8s.namespace.name";wCA.ATTR_K8S_POD_NAME="k8s.pod.name";wCA.ATTR_OS_TYPE="os.type";wCA.ATTR_OS_VERSION="os.version";wCA.ATTR_PROCESS_COMMAND="process.command";wCA.ATTR_PROCESS_COMMAND_ARGS="process.command_args";wCA.ATTR_PROCESS_EXECUTABLE_NAME="process.executable.name";wCA.ATTR_PROCESS_EXECUTABLE_PATH="process.executable.path";wCA.ATTR_PROCESS_OWNER="process.owner";wCA.ATTR_PROCESS_PID="process.pid";wCA.ATTR_PROCESS_RUNTIME_DESCRIPTION="process.runtime.description";wCA.ATTR_PROCESS_RUNTIME_NAME="process.runtime.name";wCA.ATTR_PROCESS_RUNTIME_VERSION="process.runtime.version";wCA.ATTR_SERVICE_INSTANCE_ID="service.instance.id";wCA.ATTR_SERVICE_NAMESPACE="service.namespace";wCA.ATTR_WEBENGINE_DESCRIPTION="webengine.description";wCA.ATTR_WEBENGINE_NAME="webengine.name";wCA.ATTR_WEBENGINE_VERSION="webengine.version"});var m4=U((zCA)=>{Object.defineProperty(zCA,"__esModule",{value:!0});zCA.execAsync=void 0;var PCQ=M("child_process"),kCQ=M("util");zCA.execAsync=kCQ.promisify(PCQ.exec)});var HCA=U(($CA)=>{Object.defineProperty($CA,"__esModule",{value:!0});$CA.getMachineId=void 0;var SCQ=m4(),yCQ=P();async function _CQ(){try{let Q=(await(0,SCQ.execAsync)('ioreg -rd1 -c "IOPlatformExpertDevice"')).stdout.split(` +`).find((I)=>I.includes("IOPlatformUUID"));if(!Q)return;let B=Q.split('" = "');if(B.length===2)return B[1].slice(0,-1)}catch(A){yCQ.diag.debug(`error reading machine id: ${A}`)}return}$CA.getMachineId=_CQ});var jCA=U((MCA)=>{Object.defineProperty(MCA,"__esModule",{value:!0});MCA.getMachineId=void 0;var fCQ=M("fs"),gCQ=P();async function hCQ(){let A=["/etc/machine-id","/var/lib/dbus/machine-id"];for(let Q of A)try{return(await fCQ.promises.readFile(Q,{encoding:"utf8"})).trim()}catch(B){gCQ.diag.debug(`error reading machine id: ${B}`)}return}MCA.getMachineId=hCQ});var TCA=U((qCA)=>{Object.defineProperty(qCA,"__esModule",{value:!0});qCA.getMachineId=void 0;var xCQ=M("fs"),vCQ=m4(),RCA=P();async function bCQ(){try{return(await xCQ.promises.readFile("/etc/hostid",{encoding:"utf8"})).trim()}catch(A){RCA.diag.debug(`error reading machine id: ${A}`)}try{return(await(0,vCQ.execAsync)("kenv -q smbios.system.uuid")).stdout.trim()}catch(A){RCA.diag.debug(`error reading machine id: ${A}`)}return}qCA.getMachineId=bCQ});var yCA=U((kCA)=>{Object.defineProperty(kCA,"__esModule",{value:!0});kCA.getMachineId=void 0;var PCA=M("process"),mCQ=m4(),dCQ=P();async function cCQ(){let Q="%windir%\\System32\\REG.exe";if(PCA.arch==="ia32"&&"PROCESSOR_ARCHITEW6432"in PCA.env)Q="%windir%\\sysnative\\cmd.exe /c "+Q;try{let I=(await(0,mCQ.execAsync)(`${Q} QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`)).stdout.split("REG_SZ");if(I.length===2)return I[1].trim()}catch(B){dCQ.diag.debug(`error reading machine id: ${B}`)}return}kCA.getMachineId=cCQ});var gCA=U((_CA)=>{Object.defineProperty(_CA,"__esModule",{value:!0});_CA.getMachineId=void 0;var uCQ=P();async function lCQ(){uCQ.diag.debug("could not read machine-id: unsupported platform");return}_CA.getMachineId=lCQ});var vCA=U((hCA)=>{Object.defineProperty(hCA,"__esModule",{value:!0});hCA.getMachineId=void 0;var pCQ=M("process"),QF;async function iCQ(){if(!QF)switch(pCQ.platform){case"darwin":QF=(await Promise.resolve().then(() => f(HCA()))).getMachineId;break;case"linux":QF=(await Promise.resolve().then(() => f(jCA()))).getMachineId;break;case"freebsd":QF=(await Promise.resolve().then(() => f(TCA()))).getMachineId;break;case"win32":QF=(await Promise.resolve().then(() => f(yCA()))).getMachineId;break;default:QF=(await Promise.resolve().then(() => f(gCA()))).getMachineId;break}return QF()}hCA.getMachineId=iCQ});var NL=U((bCA)=>{Object.defineProperty(bCA,"__esModule",{value:!0});bCA.normalizeType=bCA.normalizeArch=void 0;var nCQ=(A)=>{switch(A){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return A}};bCA.normalizeArch=nCQ;var aCQ=(A)=>{switch(A){case"sunos":return"solaris";case"win32":return"windows";default:return A}};bCA.normalizeType=aCQ});var pCA=U((uCA)=>{Object.defineProperty(uCA,"__esModule",{value:!0});uCA.hostDetector=void 0;var jL=_9(),dCA=M("os"),sCQ=vCA(),rCQ=NL();class cCA{detect(A){return{attributes:{[jL.ATTR_HOST_NAME]:(0,dCA.hostname)(),[jL.ATTR_HOST_ARCH]:(0,rCQ.normalizeArch)((0,dCA.arch)()),[jL.ATTR_HOST_ID]:(0,sCQ.getMachineId)()}}}}uCA.hostDetector=new cCA});var rCA=U((oCA)=>{Object.defineProperty(oCA,"__esModule",{value:!0});oCA.osDetector=void 0;var iCA=_9(),nCA=M("os"),tCQ=NL();class aCA{detect(A){return{attributes:{[iCA.ATTR_OS_TYPE]:(0,tCQ.normalizeType)((0,nCA.platform)()),[iCA.ATTR_OS_VERSION]:(0,nCA.release)()}}}}oCA.osDetector=new aCA});var QEA=U((eCA)=>{Object.defineProperty(eCA,"__esModule",{value:!0});eCA.processDetector=void 0;var eCQ=P(),Q0=_9(),AEQ=M("os");class tCA{detect(A){let Q={[Q0.ATTR_PROCESS_PID]:process.pid,[Q0.ATTR_PROCESS_EXECUTABLE_NAME]:process.title,[Q0.ATTR_PROCESS_EXECUTABLE_PATH]:process.execPath,[Q0.ATTR_PROCESS_COMMAND_ARGS]:[process.argv[0],...process.execArgv,...process.argv.slice(1)],[Q0.ATTR_PROCESS_RUNTIME_VERSION]:process.versions.node,[Q0.ATTR_PROCESS_RUNTIME_NAME]:"nodejs",[Q0.ATTR_PROCESS_RUNTIME_DESCRIPTION]:"Node.js"};if(process.argv.length>1)Q[Q0.ATTR_PROCESS_COMMAND]=process.argv[1];try{let B=AEQ.userInfo();Q[Q0.ATTR_PROCESS_OWNER]=B.username}catch(B){eCQ.diag.debug(`error obtaining process owner: ${B}`)}return{attributes:Q}}}eCA.processDetector=new tCA});var EEA=U((IEA)=>{Object.defineProperty(IEA,"__esModule",{value:!0});IEA.serviceInstanceIdDetector=void 0;var QEQ=_9(),BEQ=M("crypto");class BEA{detect(A){return{attributes:{[QEQ.ATTR_SERVICE_INSTANCE_ID]:(0,BEQ.randomUUID)()}}}}IEA.serviceInstanceIdDetector=new BEA});var YEA=U((zD)=>{Object.defineProperty(zD,"__esModule",{value:!0});zD.serviceInstanceIdDetector=zD.processDetector=zD.osDetector=zD.hostDetector=void 0;var IEQ=pCA();Object.defineProperty(zD,"hostDetector",{enumerable:!0,get:function(){return IEQ.hostDetector}});var CEQ=rCA();Object.defineProperty(zD,"osDetector",{enumerable:!0,get:function(){return CEQ.osDetector}});var EEQ=QEA();Object.defineProperty(zD,"processDetector",{enumerable:!0,get:function(){return EEQ.processDetector}});var YEQ=EEA();Object.defineProperty(zD,"serviceInstanceIdDetector",{enumerable:!0,get:function(){return YEQ.serviceInstanceIdDetector}})});var JEA=U((VD)=>{Object.defineProperty(VD,"__esModule",{value:!0});VD.serviceInstanceIdDetector=VD.processDetector=VD.osDetector=VD.hostDetector=void 0;var d4=YEA();Object.defineProperty(VD,"hostDetector",{enumerable:!0,get:function(){return d4.hostDetector}});Object.defineProperty(VD,"osDetector",{enumerable:!0,get:function(){return d4.osDetector}});Object.defineProperty(VD,"processDetector",{enumerable:!0,get:function(){return d4.processDetector}});Object.defineProperty(VD,"serviceInstanceIdDetector",{enumerable:!0,get:function(){return d4.serviceInstanceIdDetector}})});var DEA=U((FEA)=>{Object.defineProperty(FEA,"__esModule",{value:!0});FEA.noopDetector=FEA.NoopDetector=void 0;class RL{detect(){return{attributes:{}}}}FEA.NoopDetector=RL;FEA.noopDetector=new RL});var ZEA=U((HY)=>{Object.defineProperty(HY,"__esModule",{value:!0});HY.noopDetector=HY.serviceInstanceIdDetector=HY.processDetector=HY.osDetector=HY.hostDetector=HY.envDetector=void 0;var DEQ=UCA();Object.defineProperty(HY,"envDetector",{enumerable:!0,get:function(){return DEQ.envDetector}});var c4=JEA();Object.defineProperty(HY,"hostDetector",{enumerable:!0,get:function(){return c4.hostDetector}});Object.defineProperty(HY,"osDetector",{enumerable:!0,get:function(){return c4.osDetector}});Object.defineProperty(HY,"processDetector",{enumerable:!0,get:function(){return c4.processDetector}});Object.defineProperty(HY,"serviceInstanceIdDetector",{enumerable:!0,get:function(){return c4.serviceInstanceIdDetector}});var ZEQ=DEA();Object.defineProperty(HY,"noopDetector",{enumerable:!0,get:function(){return ZEQ.noopDetector}})});var OL=U((oI)=>{Object.defineProperty(oI,"__esModule",{value:!0});oI.defaultServiceName=oI.emptyResource=oI.defaultResource=oI.resourceFromAttributes=oI.serviceInstanceIdDetector=oI.processDetector=oI.osDetector=oI.hostDetector=oI.envDetector=oI.detectResources=void 0;var XEQ=GCA();Object.defineProperty(oI,"detectResources",{enumerable:!0,get:function(){return XEQ.detectResources}});var f9=ZEA();Object.defineProperty(oI,"envDetector",{enumerable:!0,get:function(){return f9.envDetector}});Object.defineProperty(oI,"hostDetector",{enumerable:!0,get:function(){return f9.hostDetector}});Object.defineProperty(oI,"osDetector",{enumerable:!0,get:function(){return f9.osDetector}});Object.defineProperty(oI,"processDetector",{enumerable:!0,get:function(){return f9.processDetector}});Object.defineProperty(oI,"serviceInstanceIdDetector",{enumerable:!0,get:function(){return f9.serviceInstanceIdDetector}});var qL=HL();Object.defineProperty(oI,"resourceFromAttributes",{enumerable:!0,get:function(){return qL.resourceFromAttributes}});Object.defineProperty(oI,"defaultResource",{enumerable:!0,get:function(){return qL.defaultResource}});Object.defineProperty(oI,"emptyResource",{enumerable:!0,get:function(){return qL.emptyResource}});var UEQ=VL();Object.defineProperty(oI,"defaultServiceName",{enumerable:!0,get:function(){return UEQ.defaultServiceName}})});var UEA=U((WEA)=>{Object.defineProperty(WEA,"__esModule",{value:!0});WEA.ExceptionEventName=void 0;WEA.ExceptionEventName="exception"});var VEA=U((KEA)=>{Object.defineProperty(KEA,"__esModule",{value:!0});KEA.SpanImpl=void 0;var eQ=P(),AB=hA(),BF=HA(),KEQ=UEA();class wEA{_spanContext;kind;parentSpanContext;attributes={};links=[];events=[];startTime;resource;instrumentationScope;_droppedAttributesCount=0;_droppedEventsCount=0;_droppedLinksCount=0;_attributesCount=0;name;status={code:eQ.SpanStatusCode.UNSET};endTime=[0,0];_ended=!1;_duration=[-1,-1];_spanProcessor;_spanLimits;_attributeValueLengthLimit;_recordEndMetrics;_performanceStartTime;_performanceOffset;_startTimeProvided;constructor(A){let Q=Date.now();if(this._spanContext=A.spanContext,this._performanceStartTime=AB.otperformance.now(),this._performanceOffset=Q-(this._performanceStartTime+AB.otperformance.timeOrigin),this._startTimeProvided=A.startTime!=null,this._spanLimits=A.spanLimits,this._attributeValueLengthLimit=this._spanLimits.attributeValueLengthLimit??0,this._spanProcessor=A.spanProcessor,this.name=A.name,this.parentSpanContext=A.parentSpanContext,this.kind=A.kind,A.links)for(let B of A.links)this.addLink(B);if(this.startTime=this._getTime(A.startTime??Q),this.resource=A.resource,this.instrumentationScope=A.scope,this._recordEndMetrics=A.recordEndMetrics,A.attributes!=null)this.setAttributes(A.attributes);this._spanProcessor.onStart(this,A.context)}spanContext(){return this._spanContext}setAttribute(A,Q){if(Q==null||this._isSpanEnded())return this;if(A.length===0)return eQ.diag.warn(`Invalid attribute key: ${A}`),this;if(!(0,AB.isAttributeValue)(Q))return eQ.diag.warn(`Invalid attribute value set for key: ${A}`),this;let{attributeCountLimit:B}=this._spanLimits,I=!Object.prototype.hasOwnProperty.call(this.attributes,A);if(B!==void 0&&this._attributesCount>=B&&I)return this._droppedAttributesCount++,this;if(this.attributes[A]=this._truncateToSize(Q),I)this._attributesCount++;return this}setAttributes(A){for(let Q in A)if(Object.prototype.hasOwnProperty.call(A,Q))this.setAttribute(Q,A[Q]);return this}addEvent(A,Q,B){if(this._isSpanEnded())return this;let{eventCountLimit:I}=this._spanLimits;if(I===0)return eQ.diag.warn("No events allowed."),this._droppedEventsCount++,this;if(I!==void 0&&this.events.length>=I){if(this._droppedEventsCount===0)eQ.diag.debug("Dropping extra events.");this.events.shift(),this._droppedEventsCount++}if((0,AB.isTimeInput)(Q)){if(!(0,AB.isTimeInput)(B))B=Q;Q=void 0}let C=(0,AB.sanitizeAttributes)(Q),{attributePerEventCountLimit:E}=this._spanLimits,Y={},J=0,F=0;for(let G in C){if(!Object.prototype.hasOwnProperty.call(C,G))continue;let D=C[G];if(E!==void 0&&F>=E){J++;continue}Y[G]=this._truncateToSize(D),F++}return this.events.push({name:A,attributes:Y,time:this._getTime(B),droppedAttributesCount:J}),this}addLink(A){if(this._isSpanEnded())return this;let{linkCountLimit:Q}=this._spanLimits;if(Q===0)return this._droppedLinksCount++,this;if(Q!==void 0&&this.links.length>=Q){if(this._droppedLinksCount===0)eQ.diag.debug("Dropping extra links.");this.links.shift(),this._droppedLinksCount++}let{attributePerLinkCountLimit:B}=this._spanLimits,I=(0,AB.sanitizeAttributes)(A.attributes),C={},E=0,Y=0;for(let F in I){if(!Object.prototype.hasOwnProperty.call(I,F))continue;let G=I[F];if(B!==void 0&&Y>=B){E++;continue}C[F]=this._truncateToSize(G),Y++}let J={context:A.context};if(Y>0)J.attributes=C;if(E>0)J.droppedAttributesCount=E;return this.links.push(J),this}addLinks(A){for(let Q of A)this.addLink(Q);return this}setStatus(A){if(this._isSpanEnded())return this;if(A.code===eQ.SpanStatusCode.UNSET)return this;if(this.status.code===eQ.SpanStatusCode.OK)return this;let Q={code:A.code};if(A.code===eQ.SpanStatusCode.ERROR){if(typeof A.message==="string")Q.message=A.message;else if(A.message!=null)eQ.diag.warn(`Dropping invalid status.message of type '${typeof A.message}', expected 'string'`)}return this.status=Q,this}updateName(A){if(this._isSpanEnded())return this;return this.name=A,this}end(A){if(this._isSpanEnded()){eQ.diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`);return}if(this.endTime=this._getTime(A),this._duration=(0,AB.hrTimeDuration)(this.startTime,this.endTime),this._duration[0]<0)eQ.diag.warn("Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.",this.startTime,this.endTime),this.endTime=this.startTime.slice(),this._duration=[0,0];if(this._droppedEventsCount>0)eQ.diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`);if(this._droppedLinksCount>0)eQ.diag.warn(`Dropped ${this._droppedLinksCount} links because linkCountLimit reached`);if(this._spanProcessor.onEnding)this._spanProcessor.onEnding(this);this._recordEndMetrics?.(),this._ended=!0,this._spanProcessor.onEnd(this)}_getTime(A){if(typeof A==="number"&&A<=AB.otperformance.now())return(0,AB.hrTime)(A+this._performanceOffset);if(typeof A==="number")return(0,AB.millisToHrTime)(A);if(A instanceof Date)return(0,AB.millisToHrTime)(A.getTime());if((0,AB.isTimeInputHrTime)(A))return A;if(this._startTimeProvided)return(0,AB.millisToHrTime)(Date.now());let Q=AB.otperformance.now()-this._performanceStartTime;return(0,AB.addHrTimes)(this.startTime,(0,AB.millisToHrTime)(Q))}isRecording(){return this._ended===!1}recordException(A,Q){let B={};if(typeof A==="string")B[BF.ATTR_EXCEPTION_MESSAGE]=A;else if(A){if(A.code)B[BF.ATTR_EXCEPTION_TYPE]=A.code.toString();else if(A.name)B[BF.ATTR_EXCEPTION_TYPE]=A.name;if(A.message)B[BF.ATTR_EXCEPTION_MESSAGE]=A.message;if(A.stack)B[BF.ATTR_EXCEPTION_STACKTRACE]=A.stack}if(B[BF.ATTR_EXCEPTION_TYPE]||B[BF.ATTR_EXCEPTION_MESSAGE])this.addEvent(KEQ.ExceptionEventName,B,Q);else eQ.diag.warn(`Failed to record an exception ${A}`)}get duration(){return this._duration}get ended(){return this._ended}get droppedAttributesCount(){return this._droppedAttributesCount}get droppedEventsCount(){return this._droppedEventsCount}get droppedLinksCount(){return this._droppedLinksCount}_isSpanEnded(){if(this._ended){let A=Error(`Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`);eQ.diag.warn(`Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,A)}return this._ended}_truncateToLimitUtil(A,Q){if(A.length<=Q)return A;return A.substring(0,Q)}_truncateToSize(A){let Q=this._attributeValueLengthLimit;if(Q<=0)return eQ.diag.warn(`Attribute value limit must be positive, got ${Q}`),A;if(typeof A==="string")return this._truncateToLimitUtil(A,Q);if(Array.isArray(A))return A.map((B)=>typeof B==="string"?this._truncateToLimitUtil(B,Q):B);return A}}KEA.SpanImpl=wEA});var $D=U(($EA)=>{Object.defineProperty($EA,"__esModule",{value:!0});$EA.SamplingDecision=void 0;var zEQ;(function(A){A[A.NOT_RECORD=0]="NOT_RECORD",A[A.RECORD=1]="RECORD",A[A.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(zEQ=$EA.SamplingDecision||($EA.SamplingDecision={}))});var u4=U((HEA)=>{Object.defineProperty(HEA,"__esModule",{value:!0});HEA.AlwaysOffSampler=void 0;var VEQ=$D();class LEA{shouldSample(){return{decision:VEQ.SamplingDecision.NOT_RECORD}}toString(){return"AlwaysOffSampler"}}HEA.AlwaysOffSampler=LEA});var l4=U((jEA)=>{Object.defineProperty(jEA,"__esModule",{value:!0});jEA.AlwaysOnSampler=void 0;var $EQ=$D();class NEA{shouldSample(){return{decision:$EQ.SamplingDecision.RECORD_AND_SAMPLED}}toString(){return"AlwaysOnSampler"}}jEA.AlwaysOnSampler=NEA});var kL=U((TEA)=>{Object.defineProperty(TEA,"__esModule",{value:!0});TEA.ParentBasedSampler=void 0;var p4=P(),LEQ=hA(),qEA=u4(),PL=l4();class OEA{_root;_remoteParentSampled;_remoteParentNotSampled;_localParentSampled;_localParentNotSampled;constructor(A){if(this._root=A.root,!this._root)(0,LEQ.globalErrorHandler)(Error("ParentBasedSampler must have a root sampler configured")),this._root=new PL.AlwaysOnSampler;this._remoteParentSampled=A.remoteParentSampled??new PL.AlwaysOnSampler,this._remoteParentNotSampled=A.remoteParentNotSampled??new qEA.AlwaysOffSampler,this._localParentSampled=A.localParentSampled??new PL.AlwaysOnSampler,this._localParentNotSampled=A.localParentNotSampled??new qEA.AlwaysOffSampler}shouldSample(A,Q,B,I,C,E){let Y=p4.trace.getSpanContext(A);if(!Y||!(0,p4.isSpanContextValid)(Y))return this._root.shouldSample(A,Q,B,I,C,E);if(Y.isRemote){if(Y.traceFlags&p4.TraceFlags.SAMPLED)return this._remoteParentSampled.shouldSample(A,Q,B,I,C,E);return this._remoteParentNotSampled.shouldSample(A,Q,B,I,C,E)}if(Y.traceFlags&p4.TraceFlags.SAMPLED)return this._localParentSampled.shouldSample(A,Q,B,I,C,E);return this._localParentNotSampled.shouldSample(A,Q,B,I,C,E)}toString(){return`ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`}}TEA.ParentBasedSampler=OEA});var SL=U((yEA)=>{Object.defineProperty(yEA,"__esModule",{value:!0});yEA.TraceIdRatioBasedSampler=void 0;var HEQ=P(),kEA=$D();class SEA{_ratio;_upperBound;constructor(A=0){this._ratio=this._normalize(A),this._upperBound=Math.floor(this._ratio*4294967295)}shouldSample(A,Q){return{decision:(0,HEQ.isValidTraceId)(Q)&&this._accumulate(Q)=1?1:A<=0?0:A}_accumulate(A){let Q=0;for(let B=0;B>>0}return Q}}yEA.TraceIdRatioBasedSampler=SEA});var fL=U((vEA)=>{Object.defineProperty(vEA,"__esModule",{value:!0});vEA.buildSamplerFromEnv=vEA.loadDefaultConfig=void 0;var _L=P(),GE=hA(),fEA=u4(),yL=l4(),i4=kL(),gEA=SL(),DE;(function(A){A.AlwaysOff="always_off",A.AlwaysOn="always_on",A.ParentBasedAlwaysOff="parentbased_always_off",A.ParentBasedAlwaysOn="parentbased_always_on",A.ParentBasedTraceIdRatio="parentbased_traceidratio",A.TraceIdRatio="traceidratio"})(DE||(DE={}));var n4=1;function MEQ(){return{sampler:xEA(),forceFlushTimeoutMillis:30000,generalLimits:{attributeValueLengthLimit:(0,GE.getNumberFromEnv)("OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT")??1/0,attributeCountLimit:(0,GE.getNumberFromEnv)("OTEL_ATTRIBUTE_COUNT_LIMIT")??128},spanLimits:{attributeValueLengthLimit:(0,GE.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT")??1/0,attributeCountLimit:(0,GE.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT")??128,linkCountLimit:(0,GE.getNumberFromEnv)("OTEL_SPAN_LINK_COUNT_LIMIT")??128,eventCountLimit:(0,GE.getNumberFromEnv)("OTEL_SPAN_EVENT_COUNT_LIMIT")??128,attributePerEventCountLimit:(0,GE.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT")??128,attributePerLinkCountLimit:(0,GE.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT")??128}}}vEA.loadDefaultConfig=MEQ;function xEA(){let A=(0,GE.getStringFromEnv)("OTEL_TRACES_SAMPLER")??DE.ParentBasedAlwaysOn;switch(A){case DE.AlwaysOn:return new yL.AlwaysOnSampler;case DE.AlwaysOff:return new fEA.AlwaysOffSampler;case DE.ParentBasedAlwaysOn:return new i4.ParentBasedSampler({root:new yL.AlwaysOnSampler});case DE.ParentBasedAlwaysOff:return new i4.ParentBasedSampler({root:new fEA.AlwaysOffSampler});case DE.TraceIdRatio:return new gEA.TraceIdRatioBasedSampler(hEA());case DE.ParentBasedTraceIdRatio:return new i4.ParentBasedSampler({root:new gEA.TraceIdRatioBasedSampler(hEA())});default:return _L.diag.error(`OTEL_TRACES_SAMPLER value "${A}" invalid, defaulting to "${DE.ParentBasedAlwaysOn}".`),new i4.ParentBasedSampler({root:new yL.AlwaysOnSampler})}}vEA.buildSamplerFromEnv=xEA;function hEA(){let A=(0,GE.getNumberFromEnv)("OTEL_TRACES_SAMPLER_ARG");if(A==null)return _L.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${n4}.`),n4;if(A<0||A>1)return _L.diag.error(`OTEL_TRACES_SAMPLER_ARG=${A} was given, but it is out of range ([0..1]), defaulting to ${n4}.`),n4;return A}});var gL=U((dEA)=>{Object.defineProperty(dEA,"__esModule",{value:!0});dEA.reconfigureLimits=dEA.mergeConfig=dEA.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT=dEA.DEFAULT_ATTRIBUTE_COUNT_LIMIT=void 0;var mEA=fL(),a4=hA();dEA.DEFAULT_ATTRIBUTE_COUNT_LIMIT=128;dEA.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT=1/0;function jEQ(A){let Q={sampler:(0,mEA.buildSamplerFromEnv)()},B=(0,mEA.loadDefaultConfig)(),I=Object.assign({},B,Q,A);return I.generalLimits=Object.assign({},B.generalLimits,A.generalLimits||{}),I.spanLimits=Object.assign({},B.spanLimits,A.spanLimits||{}),I}dEA.mergeConfig=jEQ;function REQ(A){let Q=Object.assign({},A.spanLimits);return Q.attributeCountLimit=A.spanLimits?.attributeCountLimit??A.generalLimits?.attributeCountLimit??(0,a4.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT")??(0,a4.getNumberFromEnv)("OTEL_ATTRIBUTE_COUNT_LIMIT")??dEA.DEFAULT_ATTRIBUTE_COUNT_LIMIT,Q.attributeValueLengthLimit=A.spanLimits?.attributeValueLengthLimit??A.generalLimits?.attributeValueLengthLimit??(0,a4.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT")??(0,a4.getNumberFromEnv)("OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT")??dEA.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,Object.assign({},A,{spanLimits:Q})}dEA.reconfigureLimits=REQ});var aEA=U((iEA)=>{Object.defineProperty(iEA,"__esModule",{value:!0});iEA.BatchSpanProcessorBase=void 0;var LD=P(),B0=hA();class pEA{_maxExportBatchSize;_maxQueueSize;_scheduledDelayMillis;_exportTimeoutMillis;_exporter;_isExporting=!1;_finishedSpans=[];_timer;_shutdownOnce;_droppedSpansCount=0;constructor(A,Q){if(this._exporter=A,this._maxExportBatchSize=typeof Q?.maxExportBatchSize==="number"?Q.maxExportBatchSize:(0,B0.getNumberFromEnv)("OTEL_BSP_MAX_EXPORT_BATCH_SIZE")??512,this._maxQueueSize=typeof Q?.maxQueueSize==="number"?Q.maxQueueSize:(0,B0.getNumberFromEnv)("OTEL_BSP_MAX_QUEUE_SIZE")??2048,this._scheduledDelayMillis=typeof Q?.scheduledDelayMillis==="number"?Q.scheduledDelayMillis:(0,B0.getNumberFromEnv)("OTEL_BSP_SCHEDULE_DELAY")??5000,this._exportTimeoutMillis=typeof Q?.exportTimeoutMillis==="number"?Q.exportTimeoutMillis:(0,B0.getNumberFromEnv)("OTEL_BSP_EXPORT_TIMEOUT")??30000,this._shutdownOnce=new B0.BindOnceFuture(this._shutdown,this),this._maxExportBatchSize>this._maxQueueSize)LD.diag.warn("BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize"),this._maxExportBatchSize=this._maxQueueSize}forceFlush(){if(this._shutdownOnce.isCalled)return this._shutdownOnce.promise;return this._flushAll()}onStart(A,Q){}onEnd(A){if(this._shutdownOnce.isCalled)return;if((A.spanContext().traceFlags&LD.TraceFlags.SAMPLED)===0)return;this._addToBuffer(A)}shutdown(){return this._shutdownOnce.call()}_shutdown(){return Promise.resolve().then(()=>{return this.onShutdown()}).then(()=>{return this._flushAll()}).then(()=>{return this._exporter.shutdown()})}_addToBuffer(A){if(this._finishedSpans.length>=this._maxQueueSize){if(this._droppedSpansCount===0)LD.diag.debug("maxQueueSize reached, dropping spans");this._droppedSpansCount++;return}if(this._droppedSpansCount>0)LD.diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`),this._droppedSpansCount=0;this._finishedSpans.push(A),this._maybeStartTimer()}_flushAll(){return new Promise((A,Q)=>{let B=[],I=Math.ceil(this._finishedSpans.length/this._maxExportBatchSize);for(let C=0,E=I;C{A()}).catch(Q)})}_flushOneBatch(){if(this._clearTimer(),this._finishedSpans.length===0)return Promise.resolve();return new Promise((A,Q)=>{let B=setTimeout(()=>{Q(Error("Timeout"))},this._exportTimeoutMillis);LD.context.with((0,B0.suppressTracing)(LD.context.active()),()=>{let I;if(this._finishedSpans.length<=this._maxExportBatchSize)I=this._finishedSpans,this._finishedSpans=[];else I=this._finishedSpans.splice(0,this._maxExportBatchSize);let C=()=>this._exporter.export(I,(Y)=>{if(clearTimeout(B),Y.code===B0.ExportResultCode.SUCCESS)A();else Q(Y.error??Error("BatchSpanProcessor: span export failed"))}),E=null;for(let Y=0,J=I.length;Y{(0,B0.globalErrorHandler)(Y),Q(Y)})})})}_maybeStartTimer(){if(this._isExporting)return;let A=()=>{this._isExporting=!0,this._flushOneBatch().finally(()=>{if(this._isExporting=!1,this._finishedSpans.length>0)this._clearTimer(),this._maybeStartTimer()}).catch((Q)=>{this._isExporting=!1,(0,B0.globalErrorHandler)(Q)})};if(this._finishedSpans.length>=this._maxExportBatchSize)return A();if(this._timer!==void 0)return;if(this._timer=setTimeout(()=>A(),this._scheduledDelayMillis),typeof this._timer!=="number")this._timer.unref()}_clearTimer(){if(this._timer!==void 0)clearTimeout(this._timer),this._timer=void 0}}iEA.BatchSpanProcessorBase=pEA});var tEA=U((sEA)=>{Object.defineProperty(sEA,"__esModule",{value:!0});sEA.BatchSpanProcessor=void 0;var OEQ=aEA();class oEA extends OEQ.BatchSpanProcessorBase{onShutdown(){}}sEA.BatchSpanProcessor=oEA});var C0A=U((B0A)=>{Object.defineProperty(B0A,"__esModule",{value:!0});B0A.RandomIdGenerator=void 0;var TEQ=8,A0A=16;class Q0A{generateTraceId=eEA(A0A);generateSpanId=eEA(TEQ)}B0A.RandomIdGenerator=Q0A;var o4=Buffer.allocUnsafe(A0A);function eEA(A){return function(){for(let B=0;B>>0,B*4);for(let B=0;B0)break;else if(B===A-1)o4[A-1]=1;return o4.toString("hex",0,A)}}});var E0A=U((s4)=>{Object.defineProperty(s4,"__esModule",{value:!0});s4.RandomIdGenerator=s4.BatchSpanProcessor=void 0;var PEQ=tEA();Object.defineProperty(s4,"BatchSpanProcessor",{enumerable:!0,get:function(){return PEQ.BatchSpanProcessor}});var kEQ=C0A();Object.defineProperty(s4,"RandomIdGenerator",{enumerable:!0,get:function(){return kEQ.RandomIdGenerator}})});var hL=U((r4)=>{Object.defineProperty(r4,"__esModule",{value:!0});r4.RandomIdGenerator=r4.BatchSpanProcessor=void 0;var Y0A=E0A();Object.defineProperty(r4,"BatchSpanProcessor",{enumerable:!0,get:function(){return Y0A.BatchSpanProcessor}});Object.defineProperty(r4,"RandomIdGenerator",{enumerable:!0,get:function(){return Y0A.RandomIdGenerator}})});var G0A=U((J0A)=>{Object.defineProperty(J0A,"__esModule",{value:!0});J0A.METRIC_OTEL_SDK_SPAN_STARTED=J0A.METRIC_OTEL_SDK_SPAN_LIVE=J0A.ATTR_OTEL_SPAN_SAMPLING_RESULT=J0A.ATTR_OTEL_SPAN_PARENT_ORIGIN=void 0;J0A.ATTR_OTEL_SPAN_PARENT_ORIGIN="otel.span.parent.origin";J0A.ATTR_OTEL_SPAN_SAMPLING_RESULT="otel.span.sampling_result";J0A.METRIC_OTEL_SDK_SPAN_LIVE="otel.sdk.span.live";J0A.METRIC_OTEL_SDK_SPAN_STARTED="otel.sdk.span.started"});var X0A=U((Z0A)=>{Object.defineProperty(Z0A,"__esModule",{value:!0});Z0A.TracerMetrics=void 0;var t4=$D(),g9=G0A();class D0A{startedSpans;liveSpans;constructor(A){this.startedSpans=A.createCounter(g9.METRIC_OTEL_SDK_SPAN_STARTED,{unit:"{span}",description:"The number of created spans."}),this.liveSpans=A.createUpDownCounter(g9.METRIC_OTEL_SDK_SPAN_LIVE,{unit:"{span}",description:"The number of currently live spans."})}startSpan(A,Q){let B=xEQ(Q);if(this.startedSpans.add(1,{[g9.ATTR_OTEL_SPAN_PARENT_ORIGIN]:hEQ(A),[g9.ATTR_OTEL_SPAN_SAMPLING_RESULT]:B}),Q===t4.SamplingDecision.NOT_RECORD)return()=>{};let I={[g9.ATTR_OTEL_SPAN_SAMPLING_RESULT]:B};return this.liveSpans.add(1,I),()=>{this.liveSpans.add(-1,I)}}}Z0A.TracerMetrics=D0A;function hEQ(A){if(!A)return"none";if(A.isRemote)return"remote";return"local"}function xEQ(A){switch(A){case t4.SamplingDecision.RECORD_AND_SAMPLED:return"RECORD_AND_SAMPLE";case t4.SamplingDecision.RECORD:return"RECORD_ONLY";case t4.SamplingDecision.NOT_RECORD:return"DROP"}}});var K0A=U((U0A)=>{Object.defineProperty(U0A,"__esModule",{value:!0});U0A.VERSION=void 0;U0A.VERSION="2.6.1"});var L0A=U((V0A)=>{Object.defineProperty(V0A,"__esModule",{value:!0});V0A.Tracer=void 0;var lQ=P(),e4=hA(),vEQ=VEA(),bEQ=gL(),mEQ=hL(),dEQ=X0A(),cEQ=K0A();class z0A{_sampler;_generalLimits;_spanLimits;_idGenerator;instrumentationScope;_resource;_spanProcessor;_tracerMetrics;constructor(A,Q,B,I){let C=(0,bEQ.mergeConfig)(Q);this._sampler=C.sampler,this._generalLimits=C.generalLimits,this._spanLimits=C.spanLimits,this._idGenerator=Q.idGenerator||new mEQ.RandomIdGenerator,this._resource=B,this._spanProcessor=I,this.instrumentationScope=A;let E=C.meterProvider?C.meterProvider.getMeter("@opentelemetry/sdk-trace",cEQ.VERSION):lQ.createNoopMeter();this._tracerMetrics=new dEQ.TracerMetrics(E)}startSpan(A,Q={},B=lQ.context.active()){if(Q.root)B=lQ.trace.deleteSpan(B);let I=lQ.trace.getSpan(B);if((0,e4.isTracingSuppressed)(B))return lQ.diag.debug("Instrumentation suppressed, returning Noop Span"),lQ.trace.wrapSpanContext(lQ.INVALID_SPAN_CONTEXT);let C=I?.spanContext(),E=this._idGenerator.generateSpanId(),Y,J,F;if(!C||!lQ.trace.isSpanContextValid(C))J=this._idGenerator.generateTraceId();else J=C.traceId,F=C.traceState,Y=C;let G=Q.kind??lQ.SpanKind.INTERNAL,D=(Q.links??[]).map((N)=>{return{context:N.context,attributes:(0,e4.sanitizeAttributes)(N.attributes)}}),Z=(0,e4.sanitizeAttributes)(Q.attributes),W=this._sampler.shouldSample(B,J,A,G,Z,D),X=this._tracerMetrics.startSpan(C,W.decision);F=W.traceState??F;let w=W.decision===lQ.SamplingDecision.RECORD_AND_SAMPLED?lQ.TraceFlags.SAMPLED:lQ.TraceFlags.NONE,K={traceId:J,spanId:E,traceFlags:w,traceState:F};if(W.decision===lQ.SamplingDecision.NOT_RECORD)return lQ.diag.debug("Recording is off, propagating context in a non-recording span"),lQ.trace.wrapSpanContext(K);let z=(0,e4.sanitizeAttributes)(Object.assign(Z,W.attributes));return new vEQ.SpanImpl({resource:this._resource,scope:this.instrumentationScope,context:B,spanContext:K,name:A,kind:G,links:D,parentSpanContext:Y,attributes:z,startTime:Q.startTime,spanProcessor:this._spanProcessor,spanLimits:this._spanLimits,recordEndMetrics:X})}startActiveSpan(A,Q,B,I){let C,E,Y;if(arguments.length<2)return;else if(arguments.length===2)Y=Q;else if(arguments.length===3)C=Q,Y=B;else C=Q,E=B,Y=I;let J=E??lQ.context.active(),F=this.startSpan(A,C,J),G=lQ.trace.setSpan(J,F);return lQ.context.with(G,Y,void 0,F)}getGeneralLimits(){return this._generalLimits}getSpanLimits(){return this._spanLimits}}V0A.Tracer=z0A});var j0A=U((M0A)=>{Object.defineProperty(M0A,"__esModule",{value:!0});M0A.MultiSpanProcessor=void 0;var uEQ=hA();class H0A{_spanProcessors;constructor(A){this._spanProcessors=A}forceFlush(){let A=[];for(let Q of this._spanProcessors)A.push(Q.forceFlush());return new Promise((Q)=>{Promise.all(A).then(()=>{Q()}).catch((B)=>{(0,uEQ.globalErrorHandler)(B||Error("MultiSpanProcessor: forceFlush failed")),Q()})})}onStart(A,Q){for(let B of this._spanProcessors)B.onStart(A,Q)}onEnding(A){for(let Q of this._spanProcessors)if(Q.onEnding)Q.onEnding(A)}onEnd(A){for(let Q of this._spanProcessors)Q.onEnd(A)}shutdown(){let A=[];for(let Q of this._spanProcessors)A.push(Q.shutdown());return new Promise((Q,B)=>{Promise.all(A).then(()=>{Q()},B)})}}M0A.MultiSpanProcessor=H0A});var P0A=U((O0A)=>{Object.defineProperty(O0A,"__esModule",{value:!0});O0A.BasicTracerProvider=O0A.ForceFlushState=void 0;var lEQ=hA(),pEQ=OL(),iEQ=L0A(),nEQ=fL(),aEQ=j0A(),oEQ=gL(),HD;(function(A){A[A.resolved=0]="resolved",A[A.timeout=1]="timeout",A[A.error=2]="error",A[A.unresolved=3]="unresolved"})(HD=O0A.ForceFlushState||(O0A.ForceFlushState={}));class q0A{_config;_tracers=new Map;_resource;_activeSpanProcessor;constructor(A={}){let Q=(0,lEQ.merge)({},(0,nEQ.loadDefaultConfig)(),(0,oEQ.reconfigureLimits)(A));this._resource=Q.resource??(0,pEQ.defaultResource)(),this._config=Object.assign({},Q,{resource:this._resource});let B=[];if(A.spanProcessors?.length)B.push(...A.spanProcessors);this._activeSpanProcessor=new aEQ.MultiSpanProcessor(B)}getTracer(A,Q,B){let I=`${A}@${Q||""}:${B?.schemaUrl||""}`;if(!this._tracers.has(I))this._tracers.set(I,new iEQ.Tracer({name:A,version:Q,schemaUrl:B?.schemaUrl},this._config,this._resource,this._activeSpanProcessor));return this._tracers.get(I)}forceFlush(){let A=this._config.forceFlushTimeoutMillis,Q=this._activeSpanProcessor._spanProcessors.map((B)=>{return new Promise((I)=>{let C,E=setTimeout(()=>{I(Error(`Span processor did not completed within timeout period of ${A} ms`)),C=HD.timeout},A);B.forceFlush().then(()=>{if(clearTimeout(E),C!==HD.timeout)C=HD.resolved,I(C)}).catch((Y)=>{clearTimeout(E),C=HD.error,I(Y)})})});return new Promise((B,I)=>{Promise.all(Q).then((C)=>{let E=C.filter((Y)=>Y!==HD.resolved);if(E.length>0)I(E);else B()}).catch((C)=>I([C]))})}shutdown(){return this._activeSpanProcessor.shutdown()}}O0A.BasicTracerProvider=q0A});var _0A=U((S0A)=>{Object.defineProperty(S0A,"__esModule",{value:!0});S0A.ConsoleSpanExporter=void 0;var xL=hA();class k0A{export(A,Q){return this._sendSpans(A,Q)}shutdown(){return this._sendSpans([]),this.forceFlush()}forceFlush(){return Promise.resolve()}_exportInfo(A){return{resource:{attributes:A.resource.attributes},instrumentationScope:A.instrumentationScope,traceId:A.spanContext().traceId,parentSpanContext:A.parentSpanContext,traceState:A.spanContext().traceState?.serialize(),name:A.name,id:A.spanContext().spanId,kind:A.kind,timestamp:(0,xL.hrTimeToMicroseconds)(A.startTime),duration:(0,xL.hrTimeToMicroseconds)(A.duration),attributes:A.attributes,status:A.status,events:A.events,links:A.links}}_sendSpans(A,Q){for(let B of A)console.dir(this._exportInfo(B),{depth:3});if(Q)return Q({code:xL.ExportResultCode.SUCCESS})}}S0A.ConsoleSpanExporter=k0A});var v0A=U((h0A)=>{Object.defineProperty(h0A,"__esModule",{value:!0});h0A.InMemorySpanExporter=void 0;var f0A=hA();class g0A{_finishedSpans=[];_stopped=!1;export(A,Q){if(this._stopped)return Q({code:f0A.ExportResultCode.FAILED,error:Error("Exporter has been stopped")});this._finishedSpans.push(...A),setTimeout(()=>Q({code:f0A.ExportResultCode.SUCCESS}),0)}shutdown(){return this._stopped=!0,this._finishedSpans=[],this.forceFlush()}forceFlush(){return Promise.resolve()}reset(){this._finishedSpans=[]}getFinishedSpans(){return this._finishedSpans}}h0A.InMemorySpanExporter=g0A});var c0A=U((m0A)=>{Object.defineProperty(m0A,"__esModule",{value:!0});m0A.SimpleSpanProcessor=void 0;var sEQ=P(),A5=hA();class b0A{_exporter;_shutdownOnce;_pendingExports;constructor(A){this._exporter=A,this._shutdownOnce=new A5.BindOnceFuture(this._shutdown,this),this._pendingExports=new Set}async forceFlush(){if(await Promise.all(Array.from(this._pendingExports)),this._exporter.forceFlush)await this._exporter.forceFlush()}onStart(A,Q){}onEnd(A){if(this._shutdownOnce.isCalled)return;if((A.spanContext().traceFlags&sEQ.TraceFlags.SAMPLED)===0)return;let Q=this._doExport(A).catch((B)=>(0,A5.globalErrorHandler)(B));this._pendingExports.add(Q),Q.finally(()=>this._pendingExports.delete(Q))}async _doExport(A){if(A.resource.asyncAttributesPending)await A.resource.waitForAsyncAttributes?.();let Q=await A5.internal._export(this._exporter,[A]);if(Q.code!==A5.ExportResultCode.SUCCESS)throw Q.error??Error(`SimpleSpanProcessor: span export failed (status ${Q})`)}shutdown(){return this._shutdownOnce.call()}_shutdown(){return this._exporter.shutdown()}}m0A.SimpleSpanProcessor=b0A});var i0A=U((l0A)=>{Object.defineProperty(l0A,"__esModule",{value:!0});l0A.NoopSpanProcessor=void 0;class u0A{onStart(A,Q){}onEnd(A){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}l0A.NoopSpanProcessor=u0A});var vL=U((tB)=>{Object.defineProperty(tB,"__esModule",{value:!0});tB.SamplingDecision=tB.TraceIdRatioBasedSampler=tB.ParentBasedSampler=tB.AlwaysOnSampler=tB.AlwaysOffSampler=tB.NoopSpanProcessor=tB.SimpleSpanProcessor=tB.InMemorySpanExporter=tB.ConsoleSpanExporter=tB.RandomIdGenerator=tB.BatchSpanProcessor=tB.BasicTracerProvider=void 0;var rEQ=P0A();Object.defineProperty(tB,"BasicTracerProvider",{enumerable:!0,get:function(){return rEQ.BasicTracerProvider}});var n0A=hL();Object.defineProperty(tB,"BatchSpanProcessor",{enumerable:!0,get:function(){return n0A.BatchSpanProcessor}});Object.defineProperty(tB,"RandomIdGenerator",{enumerable:!0,get:function(){return n0A.RandomIdGenerator}});var tEQ=_0A();Object.defineProperty(tB,"ConsoleSpanExporter",{enumerable:!0,get:function(){return tEQ.ConsoleSpanExporter}});var eEQ=v0A();Object.defineProperty(tB,"InMemorySpanExporter",{enumerable:!0,get:function(){return eEQ.InMemorySpanExporter}});var A0Q=c0A();Object.defineProperty(tB,"SimpleSpanProcessor",{enumerable:!0,get:function(){return A0Q.SimpleSpanProcessor}});var Q0Q=i0A();Object.defineProperty(tB,"NoopSpanProcessor",{enumerable:!0,get:function(){return Q0Q.NoopSpanProcessor}});var B0Q=u4();Object.defineProperty(tB,"AlwaysOffSampler",{enumerable:!0,get:function(){return B0Q.AlwaysOffSampler}});var I0Q=l4();Object.defineProperty(tB,"AlwaysOnSampler",{enumerable:!0,get:function(){return I0Q.AlwaysOnSampler}});var C0Q=kL();Object.defineProperty(tB,"ParentBasedSampler",{enumerable:!0,get:function(){return C0Q.ParentBasedSampler}});var E0Q=SL();Object.defineProperty(tB,"TraceIdRatioBasedSampler",{enumerable:!0,get:function(){return E0Q.TraceIdRatioBasedSampler}});var Y0Q=$D();Object.defineProperty(tB,"SamplingDecision",{enumerable:!0,get:function(){return Y0Q.SamplingDecision}})});var UJA=U((WJA)=>{Object.defineProperty(WJA,"__esModule",{value:!0});WJA.PACKAGE_NAME=WJA.PACKAGE_VERSION=void 0;WJA.PACKAGE_VERSION="0.23.0";WJA.PACKAGE_NAME="@opentelemetry/instrumentation-undici"});var $JA=U((zJA)=>{Object.defineProperty(zJA,"__esModule",{value:!0});zJA.UndiciInstrumentation=void 0;var TH=M("diagnostics_channel"),AFQ=M("url"),i9=JA(),RI=P(),W5=hA(),SQ=HA(),wJA=UJA();class KJA extends i9.InstrumentationBase{_recordFromReq=new WeakMap;constructor(A={}){super(wJA.PACKAGE_NAME,wJA.PACKAGE_VERSION,A)}init(){return}disable(){super.disable(),this._channelSubs.forEach((A)=>A.unsubscribe()),this._channelSubs.length=0}enable(){if(super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0)return;this.subscribeToChannel("undici:request:create",this.onRequestCreated.bind(this)),this.subscribeToChannel("undici:client:sendHeaders",this.onRequestHeaders.bind(this)),this.subscribeToChannel("undici:request:headers",this.onResponseHeaders.bind(this)),this.subscribeToChannel("undici:request:trailers",this.onDone.bind(this)),this.subscribeToChannel("undici:request:error",this.onError.bind(this))}_updateMetricInstruments(){this._httpClientDurationHistogram=this.meter.createHistogram(SQ.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Measures the duration of outbound HTTP requests.",unit:"s",valueType:RI.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}})}subscribeToChannel(A,Q){let[B,I]=process.version.replace("v","").split(".").map((Y)=>Number(Y)),C=B>18||B===18&&I>=19,E;if(C)TH.subscribe?.(A,Q),E=()=>TH.unsubscribe?.(A,Q);else{let Y=TH.channel(A);Y.subscribe(Q),E=()=>Y.unsubscribe(Q)}this._channelSubs.push({name:A,unsubscribe:E})}parseRequestHeaders(A){let Q=new Map;if(Array.isArray(A.headers))for(let B=0;B!B||A.method==="CONNECT"||Q.ignoreRequestHook?.(A),(k)=>k&&this._diag.error("caught ignoreRequestHook error: ",k),!0))return;let C=(0,W5.hrTime)(),E;try{E=new AFQ.URL(A.path,A.origin)}catch(k){this._diag.warn("could not determine url.full:",k);return}let Y=E.protocol.replace(":",""),J=this.getRequestMethod(A.method),F={[SQ.ATTR_HTTP_REQUEST_METHOD]:J,[SQ.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]:A.method,[SQ.ATTR_URL_FULL]:E.toString(),[SQ.ATTR_URL_PATH]:E.pathname,[SQ.ATTR_URL_QUERY]:E.search,[SQ.ATTR_URL_SCHEME]:Y},G={https:"443",http:"80"},D=E.hostname,Z=E.port||G[Y];if(F[SQ.ATTR_SERVER_ADDRESS]=D,Z&&!isNaN(Number(Z)))F[SQ.ATTR_SERVER_PORT]=Number(Z);let X=this.parseRequestHeaders(A).get("user-agent");if(X){let k=Array.isArray(X)?X[X.length-1]:X;F[SQ.ATTR_USER_AGENT_ORIGINAL]=k}let w=(0,i9.safeExecuteInTheMiddle)(()=>Q.startSpanHook?.(A),(k)=>k&&this._diag.error("caught startSpanHook error: ",k),!0);if(w)Object.entries(w).forEach(([k,g])=>{F[k]=g});let K=RI.context.active(),z=RI.trace.getSpan(K),$;if(Q.requireParentforSpans&&(!z||!RI.trace.isSpanContextValid(z.spanContext())))$=RI.trace.wrapSpanContext(RI.INVALID_SPAN_CONTEXT);else $=this.tracer.startSpan(J==="_OTHER"?"HTTP":J,{kind:RI.SpanKind.CLIENT,attributes:F},K);(0,i9.safeExecuteInTheMiddle)(()=>Q.requestHook?.($,A),(k)=>k&&this._diag.error("caught requestHook error: ",k),!0);let N=RI.trace.setSpan(RI.context.active(),$),j={};RI.propagation.inject(N,j);let O=Object.entries(j);for(let k=0;kD.toLowerCase())),G=this.parseRequestHeaders(A);for(let[D,Z]of G.entries())if(F.has(D)){let W=Array.isArray(Z)?Z:[Z];J[`http.request.header.${D}`]=W}}C.setAttributes(J)}onResponseHeaders({request:A,response:Q}){let B=this._recordFromReq.get(A);if(!B)return;let{span:I,attributes:C}=B,E={[SQ.ATTR_HTTP_RESPONSE_STATUS_CODE]:Q.statusCode},Y=this.getConfig();if((0,i9.safeExecuteInTheMiddle)(()=>Y.responseHook?.(I,{request:A,response:Q}),(J)=>J&&this._diag.error("caught responseHook error: ",J),!0),Y.headersToSpanAttributes?.responseHeaders){let J=new Set;Y.headersToSpanAttributes?.responseHeaders.forEach((F)=>J.add(F.toLowerCase()));for(let F=0;F=400?RI.SpanStatusCode.ERROR:RI.SpanStatusCode.UNSET}),B.attributes=Object.assign(C,E)}onDone({request:A}){let Q=this._recordFromReq.get(A);if(!Q)return;let{span:B,attributes:I,startTime:C}=Q;B.end(),this._recordFromReq.delete(A),this.recordRequestDuration(I,C)}onError({request:A,error:Q}){let B=this._recordFromReq.get(A);if(!B)return;let{span:I,attributes:C,startTime:E}=B;I.recordException(Q),I.setStatus({code:RI.SpanStatusCode.ERROR,message:Q.message}),I.end(),this._recordFromReq.delete(A),C[SQ.ATTR_ERROR_TYPE]=Q.message,this.recordRequestDuration(C,E)}recordRequestDuration(A,Q){let B={};[SQ.ATTR_HTTP_RESPONSE_STATUS_CODE,SQ.ATTR_HTTP_REQUEST_METHOD,SQ.ATTR_SERVER_ADDRESS,SQ.ATTR_SERVER_PORT,SQ.ATTR_URL_SCHEME,SQ.ATTR_ERROR_TYPE].forEach((E)=>{if(E in A)B[E]=A[E]});let C=(0,W5.hrTimeToMilliseconds)((0,W5.hrTimeDuration)(Q,(0,W5.hrTime)()))/1000;this._httpClientDurationHistogram.record(C,B)}getRequestMethod(A){let Q={CONNECT:!0,OPTIONS:!0,HEAD:!0,GET:!0,POST:!0,PUT:!0,PATCH:!0,DELETE:!0,TRACE:!0,QUERY:!0};if(A.toUpperCase()in Q)return A.toUpperCase();return"_OTHER"}}zJA.UndiciInstrumentation=KJA});var LJA=U((PH)=>{Object.defineProperty(PH,"__esModule",{value:!0});PH.UndiciInstrumentation=void 0;var QFQ=$JA();Object.defineProperty(PH,"UndiciInstrumentation",{enumerable:!0,get:function(){return QFQ.UndiciInstrumentation}})});var X5=U((RJA)=>{Object.defineProperty(RJA,"__esModule",{value:!0});RJA.ExpressLayerType=void 0;var FFQ;(function(A){A.ROUTER="router",A.MIDDLEWARE="middleware",A.REQUEST_HANDLER="request_handler"})(FFQ=RJA.ExpressLayerType||(RJA.ExpressLayerType={}))});var U5=U((qJA)=>{Object.defineProperty(qJA,"__esModule",{value:!0});qJA.AttributeNames=void 0;var GFQ;(function(A){A.EXPRESS_TYPE="express.type",A.EXPRESS_NAME="express.name"})(GFQ=qJA.AttributeNames||(qJA.AttributeNames={}))});var yH=U((OJA)=>{Object.defineProperty(OJA,"__esModule",{value:!0});OJA._LAYERS_STORE_PROPERTY=OJA.kLayerPatched=void 0;OJA.kLayerPatched=Symbol("express-layer-patched");OJA._LAYERS_STORE_PROPERTY="__ot_middlewares"});var _JA=U((SJA)=>{Object.defineProperty(SJA,"__esModule",{value:!0});SJA.getActualMatchedRoute=SJA.getConstructedRoute=SJA.getLayerPath=SJA.asErrorAndMessage=SJA.isLayerIgnored=SJA.getLayerMetadata=SJA.getRouterPath=SJA.storeLayerPath=void 0;var _H=X5(),qD=U5(),IF=yH(),ZFQ=(A,Q)=>{if(Array.isArray(A[IF._LAYERS_STORE_PROPERTY])===!1)Object.defineProperty(A,IF._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]});if(Q===void 0)return{isLayerPathStored:!1};return A[IF._LAYERS_STORE_PROPERTY].push(Q),{isLayerPathStored:!0}};SJA.storeLayerPath=ZFQ;var WFQ=(A,Q)=>{let B=Q.handle?.stack?.[0];if(B?.route?.path)return`${A}${B.route.path}`;if(B?.handle?.stack)return SJA.getRouterPath(A,B);return A};SJA.getRouterPath=WFQ;var XFQ=(A,Q,B)=>{if(Q.name==="router"){let I=SJA.getRouterPath("",Q),C=I?I:B||A||"/";return{attributes:{[qD.AttributeNames.EXPRESS_NAME]:C,[qD.AttributeNames.EXPRESS_TYPE]:_H.ExpressLayerType.ROUTER},name:`router - ${C}`}}else if(Q.name==="bound dispatch"||Q.name==="handle")return{attributes:{[qD.AttributeNames.EXPRESS_NAME]:(A||B)??"request handler",[qD.AttributeNames.EXPRESS_TYPE]:_H.ExpressLayerType.REQUEST_HANDLER},name:`request handler${Q.path?` - ${A||B}`:""}`};else return{attributes:{[qD.AttributeNames.EXPRESS_NAME]:Q.name,[qD.AttributeNames.EXPRESS_TYPE]:_H.ExpressLayerType.MIDDLEWARE},name:`middleware - ${Q.name}`}};SJA.getLayerMetadata=XFQ;var UFQ=(A,Q)=>{if(typeof Q==="string")return Q===A;else if(Q instanceof RegExp)return Q.test(A);else if(typeof Q==="function")return Q(A);else throw TypeError("Pattern is in unsupported datatype")},wFQ=(A,Q,B)=>{if(Array.isArray(B?.ignoreLayersType)&&B?.ignoreLayersType?.includes(Q))return!0;if(Array.isArray(B?.ignoreLayers)===!1)return!1;try{for(let I of B.ignoreLayers)if(UFQ(A,I))return!0}catch(I){}return!1};SJA.isLayerIgnored=wFQ;var KFQ=(A)=>A instanceof Error?[A,A.message]:[String(A),String(A)];SJA.asErrorAndMessage=KFQ;var zFQ=(A)=>{let Q=A[0];if(Array.isArray(Q))return Q.map((B)=>PJA(B)||"").join(",");return PJA(Q)};SJA.getLayerPath=zFQ;var PJA=(A)=>{if(typeof A==="string")return A;if(A instanceof RegExp||typeof A==="number")return A.toString();return};function kJA(A){let B=(Array.isArray(A[IF._LAYERS_STORE_PROPERTY])?A[IF._LAYERS_STORE_PROPERTY]:[]).filter((I)=>I!=="/"&&I!=="/*");if(B.length===1&&B[0]==="*")return"*";return B.join("").replace(/\/{2,}/g,"/")}SJA.getConstructedRoute=kJA;function VFQ(A){let Q=Array.isArray(A[IF._LAYERS_STORE_PROPERTY])?A[IF._LAYERS_STORE_PROPERTY]:[];if(Q.length===0)return;if(Q.every((E)=>E==="/"))return A.originalUrl==="/"?"/":void 0;let B=kJA(A);if(B==="*")return B;if(B.includes("/")&&(B.includes(",")||B.includes("\\")||B.includes("*")||B.includes("[")))return B;let I=B.startsWith("/")?B:`/${B}`;return I.length>0&&(A.originalUrl===I||A.originalUrl.startsWith(I)||$FQ(I))?I:void 0}SJA.getActualMatchedRoute=VFQ;function $FQ(A){return A.includes(":")||A.includes("*")}});var hJA=U((fJA)=>{Object.defineProperty(fJA,"__esModule",{value:!0});fJA.PACKAGE_NAME=fJA.PACKAGE_VERSION=void 0;fJA.PACKAGE_VERSION="0.61.0";fJA.PACKAGE_NAME="@opentelemetry/instrumentation-express"});var lJA=U((cJA)=>{Object.defineProperty(cJA,"__esModule",{value:!0});cJA.ExpressInstrumentation=void 0;var xJA=hA(),SC=P(),vJA=X5(),bJA=U5(),XE=_JA(),mJA=hJA(),OD=JA(),OFQ=HA(),w5=yH();class dJA extends OD.InstrumentationBase{constructor(A={}){super(mJA.PACKAGE_NAME,mJA.PACKAGE_VERSION,A)}init(){return[new OD.InstrumentationNodeModuleDefinition("express",[">=4.0.0 <6"],(A)=>{let Q=typeof A?.Router?.prototype?.route==="function",B=Q?A.Router.prototype:A.Router;if((0,OD.isWrapped)(B.route))this._unwrap(B,"route");if(this._wrap(B,"route",this._getRoutePatch()),(0,OD.isWrapped)(B.use))this._unwrap(B,"use");if(this._wrap(B,"use",this._getRouterUsePatch()),(0,OD.isWrapped)(A.application.use))this._unwrap(A.application,"use");return this._wrap(A.application,"use",this._getAppUsePatch(Q)),A},(A)=>{if(A===void 0)return;let B=typeof A?.Router?.prototype?.route==="function"?A.Router.prototype:A.Router;this._unwrap(B,"route"),this._unwrap(B,"use"),this._unwrap(A.application,"use")})]}_getRoutePatch(){let A=this;return function(Q){return function(...I){let C=Q.apply(this,I),E=this.stack[this.stack.length-1];return A._applyPatch(E,(0,XE.getLayerPath)(I)),C}}}_getRouterUsePatch(){let A=this;return function(Q){return function(...I){let C=Q.apply(this,I),E=this.stack[this.stack.length-1];return A._applyPatch(E,(0,XE.getLayerPath)(I)),C}}}_getAppUsePatch(A){let Q=this;return function(B){return function(...C){let E=A?this.router:this._router,Y=B.apply(this,C);if(E){let J=E.stack[E.stack.length-1];Q._applyPatch(J,(0,XE.getLayerPath)(C))}return Y}}}_applyPatch(A,Q){let B=this;if(A[w5.kLayerPatched]===!0)return;A[w5.kLayerPatched]=!0,this._wrap(A,"handle",(I)=>{if(I.length===4)return I;let C=function(E,Y){let{isLayerPathStored:J}=(0,XE.storeLayerPath)(E,Q),F=(0,XE.getConstructedRoute)(E),G=(0,XE.getActualMatchedRoute)(E),D={[OFQ.ATTR_HTTP_ROUTE]:G},Z=(0,XE.getLayerMetadata)(F,A,Q),W=Z.attributes[bJA.AttributeNames.EXPRESS_TYPE],X=(0,xJA.getRPCMetadata)(SC.context.active());if(X?.type===xJA.RPCType.HTTP)X.route=G;if((0,XE.isLayerIgnored)(Z.name,W,B.getConfig())){if(W===vJA.ExpressLayerType.MIDDLEWARE)E[w5._LAYERS_STORE_PROPERTY].pop();return I.apply(this,arguments)}if(SC.trace.getSpan(SC.context.active())===void 0)return I.apply(this,arguments);let w=B._getSpanName({request:E,layerType:W,route:F},Z.name),K=B.tracer.startSpan(w,{attributes:Object.assign(D,Z.attributes)}),z=SC.context.active(),$=SC.trace.setSpan(z,K),{requestHook:N}=B.getConfig();if(N)(0,OD.safeExecuteInTheMiddle)(()=>N(K,{request:E,layerType:W,route:F}),(x)=>{if(x)SC.diag.error("express instrumentation: request hook failed",x)},!0);let j=!1;if(Z.attributes[bJA.AttributeNames.EXPRESS_TYPE]===vJA.ExpressLayerType.ROUTER)K.end(),j=!0,$=z;let O=()=>{if(j===!1)j=!0,K.end()},k=Array.from(arguments),g=k.findIndex((x)=>typeof x==="function");if(g>=0)arguments[g]=function(){let x=arguments[0],dA=![void 0,null,"route","router"].includes(x);if(!j&&dA){let[qQ,IB]=(0,XE.asErrorAndMessage)(x);K.recordException(qQ),K.setStatus({code:SC.SpanStatusCode.ERROR,message:IB})}if(j===!1)j=!0,E.res?.removeListener("finish",O),K.end();if(!(E.route&&dA)&&J)E[w5._LAYERS_STORE_PROPERTY].pop();let cA=k[g];return SC.context.bind(z,cA).apply(this,arguments)};try{return SC.context.bind($,I).apply(this,arguments)}catch(x){let[dA,cA]=(0,XE.asErrorAndMessage)(x);throw K.recordException(dA),K.setStatus({code:SC.SpanStatusCode.ERROR,message:cA}),x}finally{if(!j)Y.once("finish",O)}};for(let E in I)Object.defineProperty(C,E,{get(){return I[E]},set(Y){I[E]=Y}});return C})}_getSpanName(A,Q){let{spanNameHook:B}=this.getConfig();if(!(B instanceof Function))return Q;try{return B(A,Q)??Q}catch(I){return SC.diag.error("express instrumentation: error calling span name rewrite hook",I),Q}}}cJA.ExpressInstrumentation=dJA});var pJA=U((n9)=>{Object.defineProperty(n9,"__esModule",{value:!0});n9.AttributeNames=n9.ExpressLayerType=n9.ExpressInstrumentation=void 0;var TFQ=lJA();Object.defineProperty(n9,"ExpressInstrumentation",{enumerable:!0,get:function(){return TFQ.ExpressInstrumentation}});var PFQ=X5();Object.defineProperty(n9,"ExpressLayerType",{enumerable:!0,get:function(){return PFQ.ExpressLayerType}});var kFQ=U5();Object.defineProperty(n9,"AttributeNames",{enumerable:!0,get:function(){return kFQ.AttributeNames}})});var rJA=U((sJA)=>{Object.defineProperty(sJA,"__esModule",{value:!0});sJA.SeverityNumber=void 0;var gFQ;(function(A){A[A.UNSPECIFIED=0]="UNSPECIFIED",A[A.TRACE=1]="TRACE",A[A.TRACE2=2]="TRACE2",A[A.TRACE3=3]="TRACE3",A[A.TRACE4=4]="TRACE4",A[A.DEBUG=5]="DEBUG",A[A.DEBUG2=6]="DEBUG2",A[A.DEBUG3=7]="DEBUG3",A[A.DEBUG4=8]="DEBUG4",A[A.INFO=9]="INFO",A[A.INFO2=10]="INFO2",A[A.INFO3=11]="INFO3",A[A.INFO4=12]="INFO4",A[A.WARN=13]="WARN",A[A.WARN2=14]="WARN2",A[A.WARN3=15]="WARN3",A[A.WARN4=16]="WARN4",A[A.ERROR=17]="ERROR",A[A.ERROR2=18]="ERROR2",A[A.ERROR3=19]="ERROR3",A[A.ERROR4=20]="ERROR4",A[A.FATAL=21]="FATAL",A[A.FATAL2=22]="FATAL2",A[A.FATAL3=23]="FATAL3",A[A.FATAL4=24]="FATAL4"})(gFQ=sJA.SeverityNumber||(sJA.SeverityNumber={}))});var z5=U((tJA)=>{Object.defineProperty(tJA,"__esModule",{value:!0});tJA.NOOP_LOGGER=tJA.NoopLogger=void 0;class hH{emit(A){}}tJA.NoopLogger=hH;tJA.NOOP_LOGGER=new hH});var BFA=U((AFA)=>{Object.defineProperty(AFA,"__esModule",{value:!0});AFA.API_BACKWARDS_COMPATIBILITY_VERSION=AFA.makeGetter=AFA._global=AFA.GLOBAL_LOGS_API_KEY=void 0;AFA.GLOBAL_LOGS_API_KEY=Symbol.for("io.opentelemetry.js.api.logs");AFA._global=globalThis;function xFQ(A,Q,B){return(I)=>I===A?Q:B}AFA.makeGetter=xFQ;AFA.API_BACKWARDS_COMPATIBILITY_VERSION=1});var vH=U((IFA)=>{Object.defineProperty(IFA,"__esModule",{value:!0});IFA.NOOP_LOGGER_PROVIDER=IFA.NoopLoggerProvider=void 0;var dFQ=z5();class xH{getLogger(A,Q,B){return new dFQ.NoopLogger}}IFA.NoopLoggerProvider=xH;IFA.NOOP_LOGGER_PROVIDER=new xH});var FFA=U((YFA)=>{Object.defineProperty(YFA,"__esModule",{value:!0});YFA.ProxyLogger=void 0;var uFQ=z5();class EFA{constructor(A,Q,B,I){this._provider=A,this.name=Q,this.version=B,this.options=I}emit(A){this._getLogger().emit(A)}_getLogger(){if(this._delegate)return this._delegate;let A=this._provider._getDelegateLogger(this.name,this.version,this.options);if(!A)return uFQ.NOOP_LOGGER;return this._delegate=A,this._delegate}}YFA.ProxyLogger=EFA});var WFA=U((DFA)=>{Object.defineProperty(DFA,"__esModule",{value:!0});DFA.ProxyLoggerProvider=void 0;var lFQ=vH(),pFQ=FFA();class GFA{getLogger(A,Q,B){var I;return(I=this._getDelegateLogger(A,Q,B))!==null&&I!==void 0?I:new pFQ.ProxyLogger(this,A,Q,B)}_getDelegate(){var A;return(A=this._delegate)!==null&&A!==void 0?A:lFQ.NOOP_LOGGER_PROVIDER}_setDelegate(A){this._delegate=A}_getDelegateLogger(A,Q,B){var I;return(I=this._delegate)===null||I===void 0?void 0:I.getLogger(A,Q,B)}}DFA.ProxyLoggerProvider=GFA});var KFA=U((UFA)=>{Object.defineProperty(UFA,"__esModule",{value:!0});UFA.LogsAPI=void 0;var sI=BFA(),iFQ=vH(),XFA=WFA();class bH{constructor(){this._proxyLoggerProvider=new XFA.ProxyLoggerProvider}static getInstance(){if(!this._instance)this._instance=new bH;return this._instance}setGlobalLoggerProvider(A){if(sI._global[sI.GLOBAL_LOGS_API_KEY])return this.getLoggerProvider();return sI._global[sI.GLOBAL_LOGS_API_KEY]=(0,sI.makeGetter)(sI.API_BACKWARDS_COMPATIBILITY_VERSION,A,iFQ.NOOP_LOGGER_PROVIDER),this._proxyLoggerProvider._setDelegate(A),A}getLoggerProvider(){var A,Q;return(Q=(A=sI._global[sI.GLOBAL_LOGS_API_KEY])===null||A===void 0?void 0:A.call(sI._global,sI.API_BACKWARDS_COMPATIBILITY_VERSION))!==null&&Q!==void 0?Q:this._proxyLoggerProvider}getLogger(A,Q,B){return this.getLoggerProvider().getLogger(A,Q,B)}disable(){delete sI._global[sI.GLOBAL_LOGS_API_KEY],this._proxyLoggerProvider=new XFA.ProxyLoggerProvider}}UFA.LogsAPI=bH});var mH=U((a9)=>{Object.defineProperty(a9,"__esModule",{value:!0});a9.logs=a9.NoopLogger=a9.NOOP_LOGGER=a9.SeverityNumber=void 0;var nFQ=rJA();Object.defineProperty(a9,"SeverityNumber",{enumerable:!0,get:function(){return nFQ.SeverityNumber}});var zFA=z5();Object.defineProperty(a9,"NOOP_LOGGER",{enumerable:!0,get:function(){return zFA.NOOP_LOGGER}});Object.defineProperty(a9,"NoopLogger",{enumerable:!0,get:function(){return zFA.NoopLogger}});var aFQ=KFA();a9.logs=aFQ.LogsAPI.getInstance()});var HFA=U(($FA)=>{Object.defineProperty($FA,"__esModule",{value:!0});$FA.disableInstrumentations=$FA.enableInstrumentations=void 0;function oFQ(A,Q,B,I){for(let C=0,E=A.length;CQ.disable())}$FA.disableInstrumentations=sFQ});var qFA=U((jFA)=>{Object.defineProperty(jFA,"__esModule",{value:!0});jFA.registerInstrumentations=void 0;var MFA=P(),tFQ=mH(),NFA=HFA();function eFQ(A){let Q=A.tracerProvider||MFA.trace.getTracerProvider(),B=A.meterProvider||MFA.metrics.getMeterProvider(),I=A.loggerProvider||tFQ.logs.getLoggerProvider(),C=A.instrumentations?.flat()??[];return(0,NFA.enableInstrumentations)(C,Q,B,I),()=>{(0,NFA.disableInstrumentations)(C)}}jFA.registerInstrumentations=eFQ});var xFA=U((gFA)=>{Object.defineProperty(gFA,"__esModule",{value:!0});gFA.satisfies=void 0;var lH=P(),SFA=/^(?:v)?(?(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*))(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,AGQ=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|0|[1-9]\d*))?)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,QGQ={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function BGQ(A,Q,B){if(!IGQ(A))return lH.diag.error(`Invalid version: ${A}`),!1;if(!Q)return!0;Q=Q.replace(/([<>=~^]+)\s+/g,"$1");let I=JGQ(A);if(!I)return!1;let C=[],E=yFA(I,Q,C,B);if(E&&!B?.includePrerelease)return EGQ(I,C);return E}gFA.satisfies=BGQ;function IGQ(A){return typeof A==="string"&&SFA.test(A)}function yFA(A,Q,B,I){if(Q.includes("||")){let C=Q.trim().split("||");for(let E of C)if(dH(A,E,B,I))return!0;return!1}else if(Q.includes(" - "))Q=TGQ(Q,I);else if(Q.includes(" ")){let C=Q.trim().replace(/\s{2,}/g," ").split(" ");for(let E of C)if(!dH(A,E,B,I))return!1;return!0}return dH(A,Q,B,I)}function dH(A,Q,B,I){if(Q=YGQ(Q,I),Q.includes(" "))return yFA(A,Q,B,I);else{let C=FGQ(Q);return B.push(C),CGQ(A,C)}}function CGQ(A,Q){if(Q.invalid)return!1;if(!Q.version||uH(Q.version))return!0;let B=TFA(A.versionSegments||[],Q.versionSegments||[]);if(B===0){let I=A.prereleaseSegments||[],C=Q.prereleaseSegments||[];if(!I.length&&!C.length)B=0;else if(!I.length&&C.length)B=1;else if(I.length&&!C.length)B=-1;else B=TFA(I,C)}return QGQ[Q.op]?.includes(B)}function EGQ(A,Q){if(A.prerelease)return Q.some((B)=>B.prerelease&&B.version===A.version);return!0}function YGQ(A,Q){return A=A.trim(),A=qGQ(A,Q),A=RGQ(A),A=OGQ(A,Q),A=A.trim(),A}function SB(A){return!A||A.toLowerCase()==="x"||A==="*"}function JGQ(A){let Q=A.match(SFA);if(!Q){lH.diag.error(`Invalid version: ${A}`);return}let B=Q.groups.version,I=Q.groups.prerelease,C=Q.groups.build,E=B.split("."),Y=I?.split(".");return{op:void 0,version:B,versionSegments:E,versionSegmentCount:E.length,prerelease:I,prereleaseSegments:Y,prereleaseSegmentCount:Y?Y.length:0,build:C}}function FGQ(A){if(!A)return{};let Q=A.match(AGQ);if(!Q)return lH.diag.error(`Invalid range: ${A}`),{invalid:!0};let B=Q.groups.op,I=Q.groups.version,C=Q.groups.prerelease,E=Q.groups.build,Y=I.split("."),J=C?.split(".");if(B==="==")B="=";return{op:B||"=",version:I,versionSegments:Y,versionSegmentCount:Y.length,prerelease:C,prereleaseSegments:J,prereleaseSegmentCount:J?J.length:0,build:E}}function uH(A){return A==="*"||A==="x"||A==="X"}function OFA(A){let Q=parseInt(A,10);return isNaN(Q)?A:Q}function GGQ(A,Q){if(typeof A===typeof Q)if(typeof A==="number")return[A,Q];else if(typeof A==="string")return[A,Q];else throw Error("Version segments can only be strings or numbers");else return[String(A),String(Q)]}function DGQ(A,Q){if(uH(A)||uH(Q))return 0;let[B,I]=GGQ(OFA(A),OFA(Q));if(B>I)return 1;else if(B)?=?)",PFA=`(?:${fFA}|${ZGQ})`,XGQ=`(?:-(${PFA}(?:\\.${PFA})*))`,kFA=`${_FA}+`,UGQ=`(?:\\+(${kFA}(?:\\.${kFA})*))`,cH=`${fFA}|x|X|\\*`,o9=`[v=\\s]*(${cH})(?:\\.(${cH})(?:\\.(${cH})(?:${XGQ})?${UGQ}?)?)?`,wGQ=`^${WGQ}\\s*${o9}$`,KGQ=new RegExp(wGQ),zGQ=`^\\s*(${o9})\\s+-\\s+(${o9})\\s*$`,VGQ=new RegExp(zGQ),$GQ="(?:~>?)",LGQ=`^${$GQ}${o9}$`,HGQ=new RegExp(LGQ),MGQ="(?:\\^)",NGQ=`^${MGQ}${o9}$`,jGQ=new RegExp(NGQ);function RGQ(A){let Q=HGQ;return A.replace(Q,(B,I,C,E,Y)=>{let J;if(SB(I))J="";else if(SB(C))J=`>=${I}.0.0 <${+I+1}.0.0-0`;else if(SB(E))J=`>=${I}.${C}.0 <${I}.${+C+1}.0-0`;else if(Y)J=`>=${I}.${C}.${E}-${Y} <${I}.${+C+1}.0-0`;else J=`>=${I}.${C}.${E} <${I}.${+C+1}.0-0`;return J})}function qGQ(A,Q){let B=jGQ,I=Q?.includePrerelease?"-0":"";return A.replace(B,(C,E,Y,J,F)=>{let G;if(SB(E))G="";else if(SB(Y))G=`>=${E}.0.0${I} <${+E+1}.0.0-0`;else if(SB(J))if(E==="0")G=`>=${E}.${Y}.0${I} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.0${I} <${+E+1}.0.0-0`;else if(F)if(E==="0")if(Y==="0")G=`>=${E}.${Y}.${J}-${F} <${E}.${Y}.${+J+1}-0`;else G=`>=${E}.${Y}.${J}-${F} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.${J}-${F} <${+E+1}.0.0-0`;else if(E==="0")if(Y==="0")G=`>=${E}.${Y}.${J}${I} <${E}.${Y}.${+J+1}-0`;else G=`>=${E}.${Y}.${J}${I} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.${J} <${+E+1}.0.0-0`;return G})}function OGQ(A,Q){let B=KGQ;return A.replace(B,(I,C,E,Y,J,F)=>{let G=SB(E),D=G||SB(Y),Z=D||SB(J),W=Z;if(C==="="&&W)C="";if(F=Q?.includePrerelease?"-0":"",G)if(C===">"||C==="<")I="<0.0.0-0";else I="*";else if(C&&W){if(D)Y=0;if(J=0,C===">")if(C=">=",D)E=+E+1,Y=0,J=0;else Y=+Y+1,J=0;else if(C==="<=")if(C="<",D)E=+E+1;else Y=+Y+1;if(C==="<")F="-0";I=`${C+E}.${Y}.${J}${F}`}else if(D)I=`>=${E}.0.0${F} <${+E+1}.0.0-0`;else if(Z)I=`>=${E}.${Y}.0${F} <${E}.${+Y+1}.0-0`;return I})}function TGQ(A,Q){let B=VGQ;return A.replace(B,(I,C,E,Y,J,F,G,D,Z,W,X,w)=>{if(SB(E))C="";else if(SB(Y))C=`>=${E}.0.0${Q?.includePrerelease?"-0":""}`;else if(SB(J))C=`>=${E}.${Y}.0${Q?.includePrerelease?"-0":""}`;else if(F)C=`>=${C}`;else C=`>=${C}${Q?.includePrerelease?"-0":""}`;if(SB(Z))D="";else if(SB(W))D=`<${+Z+1}.0.0-0`;else if(SB(X))D=`<${Z}.${+W+1}.0-0`;else if(w)D=`<=${Z}.${W}.${X}-${w}`;else if(Q?.includePrerelease)D=`<${Z}.${W}.${+X+1}-0`;else D=`<=${D}`;return`${C} ${D}`.trim()})}});var aH=U((vFA)=>{Object.defineProperty(vFA,"__esModule",{value:!0});vFA.massUnwrap=vFA.unwrap=vFA.massWrap=vFA.wrap=void 0;var yB=console.error.bind(console);function s9(A,Q,B){let I=!!A[Q]&&Object.prototype.propertyIsEnumerable.call(A,Q);Object.defineProperty(A,Q,{configurable:!0,enumerable:I,writable:!0,value:B})}var PGQ=(A,Q,B)=>{if(!A||!A[Q]){yB("no original function "+String(Q)+" to wrap");return}if(!B){yB("no wrapper function"),yB(Error().stack);return}let I=A[Q];if(typeof I!=="function"||typeof B!=="function"){yB("original object and wrapper must be functions");return}let C=B(I,Q);return s9(C,"__original",I),s9(C,"__unwrap",()=>{if(A[Q]===C)s9(A,Q,I)}),s9(C,"__wrapped",!0),s9(A,Q,C),C};vFA.wrap=PGQ;var kGQ=(A,Q,B)=>{if(!A){yB("must provide one or more modules to patch"),yB(Error().stack);return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){yB("must provide one or more functions to wrap on modules");return}A.forEach((I)=>{Q.forEach((C)=>{vFA.wrap(I,C,B)})})};vFA.massWrap=kGQ;var SGQ=(A,Q)=>{if(!A||!A[Q]){yB("no function to unwrap."),yB(Error().stack);return}let B=A[Q];if(!B.__unwrap)yB("no original to unwrap to -- has "+String(Q)+" already been unwrapped?");else{B.__unwrap();return}};vFA.unwrap=SGQ;var yGQ=(A,Q)=>{if(!A){yB("must provide one or more modules to patch"),yB(Error().stack);return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){yB("must provide one or more functions to unwrap on modules");return}A.forEach((B)=>{Q.forEach((I)=>{vFA.unwrap(B,I)})})};vFA.massUnwrap=yGQ;function r9(A){if(A&&A.logger)if(typeof A.logger!=="function")yB("new logger isn't a function, not replacing");else yB=A.logger}vFA.default=r9;r9.wrap=vFA.wrap;r9.massWrap=vFA.massWrap;r9.unwrap=vFA.unwrap;r9.massUnwrap=vFA.massUnwrap});var uFA=U((dFA)=>{Object.defineProperty(dFA,"__esModule",{value:!0});dFA.InstrumentationAbstract=void 0;var oH=P(),fGQ=mH(),V5=aH();class mFA{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(A,Q,B){this.instrumentationName=A,this.instrumentationVersion=Q,this.setConfig(B),this._diag=oH.diag.createComponentLogger({namespace:A}),this._tracer=oH.trace.getTracer(A,Q),this._meter=oH.metrics.getMeter(A,Q),this._logger=fGQ.logs.getLogger(A,Q),this._updateMetricInstruments()}_wrap=V5.wrap;_unwrap=V5.unwrap;_massWrap=V5.massWrap;_massUnwrap=V5.massUnwrap;get meter(){return this._meter}setMeterProvider(A){this._meter=A.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(A){this._logger=A.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let A=this.init()??[];if(!Array.isArray(A))return[A];return A}_updateMetricInstruments(){return}getConfig(){return this._config}setConfig(A){this._config={enabled:!0,...A}}setTracerProvider(A){this._tracer=A.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(A,Q,B,I){if(!A)return;try{A(B,I)}catch(C){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:Q},C)}}}dFA.InstrumentationAbstract=mFA});var nFA=U((pFA)=>{Object.defineProperty(pFA,"__esModule",{value:!0});pFA.ModuleNameTrie=pFA.ModuleNameSeparator=void 0;pFA.ModuleNameSeparator="/";class sH{hooks=[];children=new Map}class lFA{_trie=new sH;_counter=0;insert(A){let Q=this._trie;for(let B of A.moduleName.split(pFA.ModuleNameSeparator)){let I=Q.children.get(B);if(!I)I=new sH,Q.children.set(B,I);Q=I}Q.hooks.push({hook:A,insertedId:this._counter++})}search(A,{maintainInsertionOrder:Q,fullOnly:B}={}){let I=this._trie,C=[],E=!0;for(let Y of A.split(pFA.ModuleNameSeparator)){let J=I.children.get(Y);if(!J){E=!1;break}if(!B)C.push(...J.hooks);I=J}if(B&&E)C.push(...I.hooks);if(C.length===0)return[];if(C.length===1)return[C[0].hook];if(Q)C.sort((Y,J)=>Y.insertedId-J.insertedId);return C.map(({hook:Y})=>Y)}}pFA.ModuleNameTrie=lFA});var rFA=U((oFA)=>{Object.defineProperty(oFA,"__esModule",{value:!0});oFA.RequireInTheMiddleSingleton=void 0;var gGQ=NJ(),aFA=M("path"),tH=nFA(),hGQ=["afterEach","after","beforeEach","before","describe","it"].every((A)=>{return typeof global[A]==="function"});class $5{_moduleNameTrie=new tH.ModuleNameTrie;static _instance;constructor(){this._initialize()}_initialize(){new gGQ.Hook(null,{internals:!0},(A,Q,B)=>{let I=xGQ(Q),C=this._moduleNameTrie.search(I,{maintainInsertionOrder:!0,fullOnly:B===void 0});for(let{onRequire:E}of C)A=E(A,Q,B);return A})}register(A,Q){let B={moduleName:A,onRequire:Q};return this._moduleNameTrie.insert(B),B}static getInstance(){if(hGQ)return new $5;return this._instance=this._instance??new $5}}oFA.RequireInTheMiddleSingleton=$5;function xGQ(A){return aFA.sep!==tH.ModuleNameSeparator?A.split(aFA.sep).join(tH.ModuleNameSeparator):A}});var BGA=U((mGQ)=>{var tFA=[],eH=new WeakMap,eFA=new WeakMap,AGA=new Map,QGA=[],vGQ={set(A,Q,B){let I=eH.get(A),C=I&&I[Q];if(typeof C==="function")return C(B);return!0},get(A,Q){if(Q===Symbol.toStringTag)return"Module";let B=eFA.get(A)[Q];if(typeof B==="function")return B()},defineProperty(A,Q,B){if(!("value"in B))throw Error("Getters/setters are not supported for exports property descriptors.");let I=eH.get(A),C=I&&I[Q];if(typeof C==="function")return C(B.value);return!0}};function bGQ(A,Q,B,I,C){AGA.set(A,C),eH.set(Q,B),eFA.set(Q,I);let E=new Proxy(Q,vGQ);tFA.forEach((Y)=>Y(A,E,C)),QGA.push([A,E,C])}mGQ.register=bGQ;mGQ.importHooks=tFA;mGQ.specifiers=AGA;mGQ.toHook=QGA});var YGA=U((ynQ,PD)=>{var IGA=M("path"),pGQ=N1(),{fileURLToPath:iGQ}=M("url"),{MessageChannel:nGQ}=M("worker_threads"),{isBuiltin:A2}=M("module");if(!A2)A2=()=>!0;var{importHooks:Q2,specifiers:aGQ,toHook:oGQ}=BGA();function CGA(A){Q2.push(A),oGQ.forEach(([Q,B,I])=>A(Q,B,I))}function EGA(A){let Q=Q2.indexOf(A);if(Q>-1)Q2.splice(Q,1)}function TD(A,Q,B,I){let C=A(Q,B,I);if(C&&C!==Q){if("default"in Q)Q.default=C}}var B2;function sGQ(){let{port1:A,port2:Q}=new nGQ,B=0,I;B2=(J)=>{B++,A.postMessage(J)},A.on("message",()=>{if(B--,I&&B<=0)I()}).unref();function C(){let J=setInterval(()=>{},1000),F=new Promise((G)=>{I=G}).then(()=>{clearInterval(J)});if(B===0)I();return F}let E=Q;return{registerOptions:{data:{addHookMessagePort:E,include:[]},transferList:[E]},addHookMessagePort:E,waitForAllMessagesAcknowledged:C}}function t9(A,Q,B){if(this instanceof t9===!1)return new t9(A,Q,B);if(typeof A==="function")B=A,A=null,Q=null;else if(typeof Q==="function")B=Q,Q=null;let I=Q?Q.internals===!0:!1;if(B2&&Array.isArray(A))B2(A);this._iitmHook=(C,E,Y)=>{let J=C,F=J.startsWith("node:"),G,D;if(F){let Z=C.slice(5);if(A2(Z))C=Z}else if(J.startsWith("file://")){let Z=Error.stackTraceLimit;Error.stackTraceLimit=0;try{G=iGQ(C),C=G}catch(W){}if(Error.stackTraceLimit=Z,G){let W=pGQ(G);if(W)C=W.name,D=W.basedir}}if(A){for(let Z of A)if(G&&Z===G)TD(B,E,G,void 0);else if(Z===C){if(!D)TD(B,E,C,D);else if(D.endsWith(aGQ.get(J)))TD(B,E,C,D);else if(I){let W=C+IGA.sep+IGA.relative(D,G);TD(B,E,W,D)}}else if(Z===Y)TD(B,E,Y,D)}else TD(B,E,C,D)},CGA(this._iitmHook)}t9.prototype.unhook=function(){EGA(this._iitmHook)};PD.exports=t9;PD.exports.Hook=t9;PD.exports.addHook=CGA;PD.exports.removeHook=EGA;PD.exports.createAddHookMessageChannel=sGQ});var I2=U((JGA)=>{Object.defineProperty(JGA,"__esModule",{value:!0});JGA.isWrapped=JGA.safeExecuteInTheMiddleAsync=JGA.safeExecuteInTheMiddle=void 0;function rGQ(A,Q,B){let I,C;try{C=A()}catch(E){I=E}finally{if(Q(I,C),I&&!B)throw I;return C}}JGA.safeExecuteInTheMiddle=rGQ;async function tGQ(A,Q,B){let I,C;try{C=await A()}catch(E){I=E}finally{if(await Q(I,C),I&&!B)throw I;return C}}JGA.safeExecuteInTheMiddleAsync=tGQ;function eGQ(A){return typeof A==="function"&&typeof A.__original==="function"&&typeof A.__unwrap==="function"&&A.__wrapped===!0}JGA.isWrapped=eGQ});var UGA=U((WGA)=>{Object.defineProperty(WGA,"__esModule",{value:!0});WGA.InstrumentationBase=void 0;var e9=M("path"),GGA=M("util"),BDQ=xFA(),C2=aH(),IDQ=uFA(),CDQ=rFA(),EDQ=YGA(),AW=P(),YDQ=NJ(),JDQ=M("fs"),FDQ=I2();class ZGA extends IDQ.InstrumentationAbstract{_modules;_hooks=[];_requireInTheMiddleSingleton=CDQ.RequireInTheMiddleSingleton.getInstance();_enabled=!1;constructor(A,Q,B){super(A,Q,B);let I=this.init();if(I&&!Array.isArray(I))I=[I];if(this._modules=I||[],this._config.enabled)this.enable()}_wrap=(A,Q,B)=>{if((0,FDQ.isWrapped)(A[Q]))this._unwrap(A,Q);if(!GGA.types.isProxy(A))return(0,C2.wrap)(A,Q,B);else{let I=(0,C2.wrap)(Object.assign({},A),Q,B);return Object.defineProperty(A,Q,{value:I}),I}};_unwrap=(A,Q)=>{if(!GGA.types.isProxy(A))return(0,C2.unwrap)(A,Q);else return Object.defineProperty(A,Q,{value:A[Q]})};_massWrap=(A,Q,B)=>{if(!A){AW.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){AW.diag.error("must provide one or more functions to wrap on modules");return}A.forEach((I)=>{Q.forEach((C)=>{this._wrap(I,C,B)})})};_massUnwrap=(A,Q)=>{if(!A){AW.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){AW.diag.error("must provide one or more functions to wrap on modules");return}A.forEach((B)=>{Q.forEach((I)=>{this._unwrap(B,I)})})};_warnOnPreloadedModules(){this._modules.forEach((A)=>{let{name:Q}=A;try{let B=M.resolve(Q);if(M.cache[B])this._diag.warn(`Module ${Q} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${Q}`)}catch{}})}_extractPackageVersion(A){try{let Q=(0,JDQ.readFileSync)(e9.join(A,"package.json"),{encoding:"utf8"}),B=JSON.parse(Q).version;return typeof B==="string"?B:void 0}catch{AW.diag.warn("Failed extracting version",A)}return}_onRequire(A,Q,B,I){if(!I){if(typeof A.patch==="function"){if(A.moduleExports=Q,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:A.name}),A.patch(Q)}return Q}let C=this._extractPackageVersion(I);if(A.moduleVersion=C,A.name===B){if(DGA(A.supportedVersions,C,A.includePrerelease)){if(typeof A.patch==="function"){if(A.moduleExports=Q,this._enabled)return this._diag.debug("Applying instrumentation patch for module on require hook",{module:A.name,version:A.moduleVersion,baseDir:I}),A.patch(Q,A.moduleVersion)}}return Q}let E=A.files??[],Y=e9.normalize(B);return E.filter((F)=>F.name===Y&&DGA(F.supportedVersions,C,A.includePrerelease)).reduce((F,G)=>{if(G.moduleExports=F,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:A.name,version:A.moduleVersion,fileName:G.name,baseDir:I}),G.patch(F,A.moduleVersion);return F},Q)}enable(){if(this._enabled)return;if(this._enabled=!0,this._hooks.length>0){for(let A of this._modules){if(typeof A.patch==="function"&&A.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:A.name,version:A.moduleVersion}),A.patch(A.moduleExports,A.moduleVersion);for(let Q of A.files)if(Q.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:A.name,version:A.moduleVersion,fileName:Q.name}),Q.patch(Q.moduleExports,A.moduleVersion)}return}this._warnOnPreloadedModules();for(let A of this._modules){let Q=(E,Y,J)=>{if(!J&&e9.isAbsolute(Y)){let F=e9.parse(Y);Y=F.name,J=F.dir}return this._onRequire(A,E,Y,J)},B=(E,Y,J)=>{return this._onRequire(A,E,Y,J)},I=e9.isAbsolute(A.name)?new YDQ.Hook([A.name],{internals:!0},B):this._requireInTheMiddleSingleton.register(A.name,B);this._hooks.push(I);let C=new EDQ.Hook([A.name],{internals:!0},Q);this._hooks.push(C)}}disable(){if(!this._enabled)return;this._enabled=!1;for(let A of this._modules){if(typeof A.unpatch==="function"&&A.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:A.name,version:A.moduleVersion}),A.unpatch(A.moduleExports,A.moduleVersion);for(let Q of A.files)if(Q.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:A.name,version:A.moduleVersion,fileName:Q.name}),Q.unpatch(Q.moduleExports,A.moduleVersion)}}isEnabled(){return this._enabled}}WGA.InstrumentationBase=ZGA;function DGA(A,Q,B){if(typeof Q>"u")return A.includes("*");return A.some((I)=>{return(0,BDQ.satisfies)(Q,I,{includePrerelease:B})})}});var wGA=U((E2)=>{Object.defineProperty(E2,"__esModule",{value:!0});E2.normalize=void 0;var GDQ=M("path");Object.defineProperty(E2,"normalize",{enumerable:!0,get:function(){return GDQ.normalize}})});var KGA=U((L5)=>{Object.defineProperty(L5,"__esModule",{value:!0});L5.normalize=L5.InstrumentationBase=void 0;var ZDQ=UGA();Object.defineProperty(L5,"InstrumentationBase",{enumerable:!0,get:function(){return ZDQ.InstrumentationBase}});var WDQ=wGA();Object.defineProperty(L5,"normalize",{enumerable:!0,get:function(){return WDQ.normalize}})});var Y2=U((H5)=>{Object.defineProperty(H5,"__esModule",{value:!0});H5.normalize=H5.InstrumentationBase=void 0;var zGA=KGA();Object.defineProperty(H5,"InstrumentationBase",{enumerable:!0,get:function(){return zGA.InstrumentationBase}});Object.defineProperty(H5,"normalize",{enumerable:!0,get:function(){return zGA.normalize}})});var HGA=U(($GA)=>{Object.defineProperty($GA,"__esModule",{value:!0});$GA.InstrumentationNodeModuleDefinition=void 0;class VGA{files;name;supportedVersions;patch;unpatch;constructor(A,Q,B,I,C){this.files=C||[],this.name=A,this.supportedVersions=Q,this.patch=B,this.unpatch=I}}$GA.InstrumentationNodeModuleDefinition=VGA});var RGA=U((NGA)=>{Object.defineProperty(NGA,"__esModule",{value:!0});NGA.InstrumentationNodeModuleFile=void 0;var wDQ=Y2();class MGA{name;supportedVersions;patch;unpatch;constructor(A,Q,B,I){this.name=(0,wDQ.normalize)(A),this.supportedVersions=Q,this.patch=B,this.unpatch=I}}NGA.InstrumentationNodeModuleFile=MGA});var PGA=U((OGA)=>{Object.defineProperty(OGA,"__esModule",{value:!0});OGA.semconvStabilityFromStr=OGA.SemconvStability=void 0;var M5;(function(A){A[A.STABLE=1]="STABLE",A[A.OLD=2]="OLD",A[A.DUPLICATE=3]="DUPLICATE"})(M5=OGA.SemconvStability||(OGA.SemconvStability={}));function KDQ(A,Q){let B=M5.OLD,I=Q?.split(",").map((C)=>C.trim()).filter((C)=>C!=="");for(let C of I??[])if(C.toLowerCase()===A+"/dup"){B=M5.DUPLICATE;break}else if(C.toLowerCase()===A)B=M5.STABLE;return B}OGA.semconvStabilityFromStr=KDQ});var SGA=U((yC)=>{Object.defineProperty(yC,"__esModule",{value:!0});yC.semconvStabilityFromStr=yC.SemconvStability=yC.safeExecuteInTheMiddleAsync=yC.safeExecuteInTheMiddle=yC.isWrapped=yC.InstrumentationNodeModuleFile=yC.InstrumentationNodeModuleDefinition=yC.InstrumentationBase=yC.registerInstrumentations=void 0;var zDQ=qFA();Object.defineProperty(yC,"registerInstrumentations",{enumerable:!0,get:function(){return zDQ.registerInstrumentations}});var VDQ=Y2();Object.defineProperty(yC,"InstrumentationBase",{enumerable:!0,get:function(){return VDQ.InstrumentationBase}});var $DQ=HGA();Object.defineProperty(yC,"InstrumentationNodeModuleDefinition",{enumerable:!0,get:function(){return $DQ.InstrumentationNodeModuleDefinition}});var LDQ=RGA();Object.defineProperty(yC,"InstrumentationNodeModuleFile",{enumerable:!0,get:function(){return LDQ.InstrumentationNodeModuleFile}});var J2=I2();Object.defineProperty(yC,"isWrapped",{enumerable:!0,get:function(){return J2.isWrapped}});Object.defineProperty(yC,"safeExecuteInTheMiddle",{enumerable:!0,get:function(){return J2.safeExecuteInTheMiddle}});Object.defineProperty(yC,"safeExecuteInTheMiddleAsync",{enumerable:!0,get:function(){return J2.safeExecuteInTheMiddleAsync}});var kGA=PGA();Object.defineProperty(yC,"SemconvStability",{enumerable:!0,get:function(){return kGA.SemconvStability}});Object.defineProperty(yC,"semconvStabilityFromStr",{enumerable:!0,get:function(){return kGA.semconvStabilityFromStr}})});var yGA=U((enQ,MDQ)=>{MDQ.exports={name:"@fastify/otel",version:"0.17.1",description:"Official Fastify OpenTelemetry Instrumentation",main:"index.js",type:"commonjs",types:"types/index.d.ts",scripts:{lint:"eslint","lint:fix":"eslint --fix",test:"npm run test:all && npm run test:typescript","test:unit":"c8 --100 node --test","test:all":"npm run test:v4 && npm run test:v5","test:v4":"cross-env FASTIFY_VERSION=fastifyv4 npm run test:unit","test:v5":"cross-env FASTIFY_VERSION=fastify npm run test:unit","test:coverage":"c8 node --test && c8 report --reporter=html","test:typescript":"tsd"},repository:{type:"git",url:"git+https://github.com/fastify/otel.git"},keywords:["plugin","helper","fastify","instrumentation","otel","opentelemetry"],author:"Carlos Fuentes - @metcoder95 (https://metcoder.dev)",license:"MIT",bugs:{url:"https://github.com/fastify/otel/issues"},homepage:"https://github.com/fastify/otel#readme",funding:[{type:"github",url:"https://github.com/sponsors/fastify"},{type:"opencollective",url:"https://opencollective.com/fastify"}],devDependencies:{"@fastify/type-provider-typebox":"^6.1.0","@opentelemetry/context-async-hooks":"^2.0.0","@opentelemetry/contrib-test-utils":"^0.59.0","@opentelemetry/instrumentation-http":"^0.212.0","@opentelemetry/propagator-jaeger":"^2.0.0","@opentelemetry/sdk-trace-base":"^2.0.0","@opentelemetry/sdk-trace-node":"^2.2.0","@types/node":"^25.0.3",c8:"^11.0.0","cross-env":"^10.0.0",eslint:"^9.16.0",fastify:"^5.1.0","fastify-plugin":"^5.1.0",fastifyv4:"npm:fastify@^4.0.0",neostandard:"^0.12.0",tsd:"^0.33.0"},dependencies:{"@opentelemetry/core":"^2.0.0","@opentelemetry/instrumentation":"^0.212.0","@opentelemetry/semantic-conventions":"^1.28.0",minimatch:"^10.2.4"},peerDependencies:{"@opentelemetry/api":"^1.9.0"},tsd:{directory:"types"}}});var gGA=U((fGA)=>{Object.defineProperty(fGA,"__esModule",{value:!0});fGA.range=fGA.balanced=void 0;var NDQ=(A,Q,B)=>{let I=A instanceof RegExp?_GA(A,B):A,C=Q instanceof RegExp?_GA(Q,B):Q,E=I!==null&&C!=null&&fGA.range(I,C,B);return E&&{start:E[0],end:E[1],pre:B.slice(0,E[0]),body:B.slice(E[0]+I.length,E[1]),post:B.slice(E[1]+C.length)}};fGA.balanced=NDQ;var _GA=(A,Q)=>{let B=Q.match(A);return B?B[0]:null},jDQ=(A,Q,B)=>{let I,C,E,Y=void 0,J,F=B.indexOf(A),G=B.indexOf(Q,F+1),D=F;if(F>=0&&G>0){if(A===Q)return[F,G];I=[],E=B.length;while(D>=0&&!J){if(D===F)I.push(D),F=B.indexOf(A,D+1);else if(I.length===1){let Z=I.pop();if(Z!==void 0)J=[Z,G]}else{if(C=I.pop(),C!==void 0&&C=0?F:G}if(I.length&&Y!==void 0)J=[E,Y]}return J};fGA.range=jDQ});var uGA=U((cGA)=>{Object.defineProperty(cGA,"__esModule",{value:!0});cGA.EXPANSION_MAX=void 0;cGA.expand=vDQ;var hGA=gGA(),xGA="\x00SLASH"+Math.random()+"\x00",vGA="\x00OPEN"+Math.random()+"\x00",D2="\x00CLOSE"+Math.random()+"\x00",bGA="\x00COMMA"+Math.random()+"\x00",mGA="\x00PERIOD"+Math.random()+"\x00",qDQ=new RegExp(xGA,"g"),ODQ=new RegExp(vGA,"g"),TDQ=new RegExp(D2,"g"),PDQ=new RegExp(bGA,"g"),kDQ=new RegExp(mGA,"g"),SDQ=/\\\\/g,yDQ=/\\{/g,_DQ=/\\}/g,fDQ=/\\,/g,gDQ=/\\\./g;cGA.EXPANSION_MAX=1e5;function G2(A){return!isNaN(A)?parseInt(A,10):A.charCodeAt(0)}function hDQ(A){return A.replace(SDQ,xGA).replace(yDQ,vGA).replace(_DQ,D2).replace(fDQ,bGA).replace(gDQ,mGA)}function xDQ(A){return A.replace(qDQ,"\\").replace(ODQ,"{").replace(TDQ,"}").replace(PDQ,",").replace(kDQ,".")}function dGA(A){if(!A)return[""];let Q=[],B=(0,hGA.balanced)("{","}",A);if(!B)return A.split(",");let{pre:I,body:C,post:E}=B,Y=I.split(",");Y[Y.length-1]+="{"+C+"}";let J=dGA(E);if(E.length)Y[Y.length-1]+=J.shift(),Y.push.apply(Y,J);return Q.push.apply(Q,Y),Q}function vDQ(A,Q={}){if(!A)return[];let{max:B=cGA.EXPANSION_MAX}=Q;if(A.slice(0,2)==="{}")A="\\{\\}"+A.slice(2);return QW(hDQ(A),B,!0).map(xDQ)}function bDQ(A){return"{"+A+"}"}function mDQ(A){return/^-?0\d/.test(A)}function dDQ(A,Q){return A<=Q}function cDQ(A,Q){return A>=Q}function QW(A,Q,B){let I=[],C=(0,hGA.balanced)("{","}",A);if(!C)return[A];let E=C.pre,Y=C.post.length?QW(C.post,Q,!1):[""];if(/\$$/.test(C.pre))for(let J=0;J=0;if(!G&&!D){if(C.post.match(/,(?!,).*\}/))return A=C.pre+"{"+C.body+D2+C.post,QW(A,Q,!0);return[A]}let Z;if(G)Z=C.body.split(/\.\./);else if(Z=dGA(C.body),Z.length===1&&Z[0]!==void 0){if(Z=QW(Z[0],Q,!1).map(bDQ),Z.length===1)return Y.map((X)=>C.pre+Z[0]+X)}let W;if(G&&Z[0]!==void 0&&Z[1]!==void 0){let X=G2(Z[0]),w=G2(Z[1]),K=Math.max(Z[0].length,Z[1].length),z=Z.length===3&&Z[2]!==void 0?Math.max(Math.abs(G2(Z[2])),1):1,$=dDQ;if(w0){let x=Array(g+1).join("0");if(O<0)k="-"+x+k.slice(1);else k=x+k}}W.push(k)}}else{W=[];for(let X=0;X{Object.defineProperty(lGA,"__esModule",{value:!0});lGA.assertValidPattern=void 0;var lDQ=65536,pDQ=(A)=>{if(typeof A!=="string")throw TypeError("invalid pattern");if(A.length>lDQ)throw TypeError("pattern is too long")};lGA.assertValidPattern=pDQ});var sGA=U((aGA)=>{Object.defineProperty(aGA,"__esModule",{value:!0});aGA.parseClass=void 0;var iDQ={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},BW=(A)=>A.replace(/[[\]\\-]/g,"\\$&"),nDQ=(A)=>A.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),nGA=(A)=>A.join(""),aDQ=(A,Q)=>{let B=Q;if(A.charAt(B)!=="[")throw Error("not in a brace expression");let I=[],C=[],E=B+1,Y=!1,J=!1,F=!1,G=!1,D=B,Z="";A:while(EZ)I.push(BW(Z)+"-"+BW(K));else if(K===Z)I.push(BW(K));Z="",E++;continue}if(A.startsWith("-]",E+1)){I.push(BW(K+"-")),E+=2;continue}if(A.startsWith("-",E+1)){Z=K,E+=2;continue}I.push(BW(K)),E++}if(D{Object.defineProperty(rGA,"__esModule",{value:!0});rGA.unescape=void 0;var oDQ=(A,{windowsPathsNoEscape:Q=!1,magicalBraces:B=!0}={})=>{if(B)return Q?A.replace(/\[([^\/\\])\]/g,"$1"):A.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");return Q?A.replace(/\[([^\/\\{}])\]/g,"$1"):A.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,"$1$2").replace(/\\([^\/{}])/g,"$1")};rGA.unescape=oDQ});var w2=U((IDA)=>{var AI;Object.defineProperty(IDA,"__esModule",{value:!0});IDA.AST=void 0;var sDQ=sGA(),j5=N5(),rDQ=new Set(["!","?","+","*","@"]),W2=(A)=>rDQ.has(A),eGA=(A)=>W2(A.type),tDQ=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),eDQ=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),AZQ=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),ADA=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),QZQ="(?!(?:^|/)\\.\\.?(?:$|/))",R5="(?!\\.)",BZQ=new Set(["[","."]),IZQ=new Set(["..","."]),CZQ=new Set("().*{}+?[]^$\\!"),EZQ=(A)=>A.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),X2="[^/]",QDA=X2+"*?",BDA=X2+"+?",YZQ=0;class U2{type;#A;#Q;#C=!1;#B=[];#I;#E;#Y;#J=!1;#F;#G;#D=!1;id=++YZQ;get depth(){return(this.#I?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#A.id,parent:this.#I?.id,depth:this.depth,partsLength:this.#B.length,parts:this.#B}}constructor(A,Q,B={}){if(this.type=A,A)this.#Q=!0;if(this.#I=Q,this.#A=this.#I?this.#I.#A:this,this.#F=this.#A===this?B:this.#A.#F,this.#Y=this.#A===this?[]:this.#A.#Y,A==="!"&&!this.#A.#J)this.#Y.push(this);this.#E=this.#I?this.#I.#B.length:0}get hasMagic(){if(this.#Q!==void 0)return this.#Q;for(let A of this.#B){if(typeof A==="string")continue;if(A.type||A.hasMagic)return this.#Q=!0}return this.#Q}toString(){if(this.#G!==void 0)return this.#G;if(!this.type)return this.#G=this.#B.map((A)=>String(A)).join("");else return this.#G=this.type+"("+this.#B.map((A)=>String(A)).join("|")+")"}#z(){if(this!==this.#A)throw Error("should only call on root");if(this.#J)return this;this.toString(),this.#J=!0;let A;while(A=this.#Y.pop()){if(A.type!=="!")continue;let Q=A,B=Q.#I;while(B){for(let I=Q.#E+1;!B.type&&Itypeof Q==="string"?Q:Q.toJSON()):[this.type,...this.#B.map((Q)=>Q.toJSON())];if(this.isStart()&&!this.type)A.unshift([]);if(this.isEnd()&&(this===this.#A||this.#A.#J&&this.#I?.type==="!"))A.push({});return A}isStart(){if(this.#A===this)return!0;if(!this.#I?.isStart())return!1;if(this.#E===0)return!0;let A=this.#I;for(let Q=0;Qtypeof W!=="string"),F=this.#B.map((W)=>{let[X,w,K,z]=typeof W==="string"?AI.#N(W,this.#Q,J):W.toRegExpSource(A);return this.#Q=this.#Q||K,this.#C=this.#C||z,X}).join(""),G="";if(this.isStart()){if(typeof this.#B[0]==="string"){if(!(this.#B.length===1&&IZQ.has(this.#B[0]))){let X=BZQ,w=Q&&X.has(F.charAt(0))||F.startsWith("\\.")&&X.has(F.charAt(2))||F.startsWith("\\.\\.")&&X.has(F.charAt(4)),K=!Q&&!A&&X.has(F.charAt(0));G=w?QZQ:K?R5:""}}}let D="";if(this.isEnd()&&this.#A.#J&&this.#I?.type==="!")D="(?:$|\\/)";return[G+F+D,(0,j5.unescape)(F),this.#Q=!!this.#Q,this.#C]}let B=this.type==="*"||this.type==="+",I=this.type==="!"?"(?:(?!(?:":"(?:",C=this.#K(Q);if(this.isStart()&&this.isEnd()&&!C&&this.type!=="!"){let J=this.toString(),F=this;return F.#B=[J],F.type=null,F.#Q=void 0,[J,(0,j5.unescape)(this.toString()),!1,!1]}let E=!B||A||Q||!R5?"":this.#K(!0);if(E===C)E="";if(E)C=`(?:${C})(?:${E})*?`;let Y="";if(this.type==="!"&&this.#D)Y=(this.isStart()&&!Q?R5:"")+BDA;else{let J=this.type==="!"?"))"+(this.isStart()&&!Q&&!A?R5:"")+QDA+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&E?")":this.type==="*"&&E?")?":`)${this.type}`;Y=I+C+J}return[Y,(0,j5.unescape)(C),this.#Q=!!this.#Q,this.#C]}#X(){if(!eGA(this)){for(let A of this.#B)if(typeof A==="object")A.#X()}else{let A=0,Q=!1;do{Q=!0;for(let B=0;B{if(typeof Q==="string")throw Error("string type in extglob ast??");let[B,I,C,E]=Q.toRegExpSource(A);return this.#C=this.#C||E,B}).filter((Q)=>!(this.isStart()&&this.isEnd())||!!Q).join("|")}static#N(A,Q,B=!1){let I=!1,C="",E=!1,Y=!1;for(let J=0;J{Object.defineProperty(EDA,"__esModule",{value:!0});EDA.escape=void 0;var JZQ=(A,{windowsPathsNoEscape:Q=!1,magicalBraces:B=!1}={})=>{if(B)return Q?A.replace(/[?*()[\]{}]/g,"[$&]"):A.replace(/[?*()[\]\\{}]/g,"\\$&");return Q?A.replace(/[?*()[\]]/g,"[$&]"):A.replace(/[?*()[\]\\]/g,"\\$&")};EDA.escape=JZQ});var VDA=U((IW)=>{Object.defineProperty(IW,"__esModule",{value:!0});IW.unescape=IW.escape=IW.AST=IW.Minimatch=IW.match=IW.makeRe=IW.braceExpand=IW.defaults=IW.filter=IW.GLOBSTAR=IW.sep=IW.minimatch=void 0;var FZQ=uGA(),q5=iGA(),GDA=w2(),GZQ=K2(),DZQ=N5(),ZZQ=(A,Q,B={})=>{if((0,q5.assertValidPattern)(Q),!B.nocomment&&Q.charAt(0)==="#")return!1;return new kD(Q,B).match(A)};IW.minimatch=ZZQ;var WZQ=/^\*+([^+@!?\*\[\(]*)$/,XZQ=(A)=>(Q)=>!Q.startsWith(".")&&Q.endsWith(A),UZQ=(A)=>(Q)=>Q.endsWith(A),wZQ=(A)=>{return A=A.toLowerCase(),(Q)=>!Q.startsWith(".")&&Q.toLowerCase().endsWith(A)},KZQ=(A)=>{return A=A.toLowerCase(),(Q)=>Q.toLowerCase().endsWith(A)},zZQ=/^\*+\.\*+$/,VZQ=(A)=>!A.startsWith(".")&&A.includes("."),$ZQ=(A)=>A!=="."&&A!==".."&&A.includes("."),LZQ=/^\.\*+$/,HZQ=(A)=>A!=="."&&A!==".."&&A.startsWith("."),MZQ=/^\*+$/,NZQ=(A)=>A.length!==0&&!A.startsWith("."),jZQ=(A)=>A.length!==0&&A!=="."&&A!=="..",RZQ=/^\?+([^+@!?\*\[\(]*)?$/,qZQ=([A,Q=""])=>{let B=DDA([A]);if(!Q)return B;return Q=Q.toLowerCase(),(I)=>B(I)&&I.toLowerCase().endsWith(Q)},OZQ=([A,Q=""])=>{let B=ZDA([A]);if(!Q)return B;return Q=Q.toLowerCase(),(I)=>B(I)&&I.toLowerCase().endsWith(Q)},TZQ=([A,Q=""])=>{let B=ZDA([A]);return!Q?B:(I)=>B(I)&&I.endsWith(Q)},PZQ=([A,Q=""])=>{let B=DDA([A]);return!Q?B:(I)=>B(I)&&I.endsWith(Q)},DDA=([A])=>{let Q=A.length;return(B)=>B.length===Q&&!B.startsWith(".")},ZDA=([A])=>{let Q=A.length;return(B)=>B.length===Q&&B!=="."&&B!==".."},WDA=typeof process==="object"&&process?typeof process.env==="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",JDA={win32:{sep:"\\"},posix:{sep:"/"}};IW.sep=WDA==="win32"?JDA.win32.sep:JDA.posix.sep;IW.minimatch.sep=IW.sep;IW.GLOBSTAR=Symbol("globstar **");IW.minimatch.GLOBSTAR=IW.GLOBSTAR;var kZQ="[^/]",SZQ=kZQ+"*?",yZQ="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",_ZQ="(?:(?!(?:\\/|^)\\.).)*?",fZQ=(A,Q={})=>(B)=>IW.minimatch(B,A,Q);IW.filter=fZQ;IW.minimatch.filter=IW.filter;var rI=(A,Q={})=>Object.assign({},A,Q),gZQ=(A)=>{if(!A||typeof A!=="object"||!Object.keys(A).length)return IW.minimatch;let Q=IW.minimatch;return Object.assign((I,C,E={})=>Q(I,C,rI(A,E)),{Minimatch:class extends Q.Minimatch{constructor(C,E={}){super(C,rI(A,E))}static defaults(C){return Q.defaults(rI(A,C)).Minimatch}},AST:class extends Q.AST{constructor(C,E,Y={}){super(C,E,rI(A,Y))}static fromGlob(C,E={}){return Q.AST.fromGlob(C,rI(A,E))}},unescape:(I,C={})=>Q.unescape(I,rI(A,C)),escape:(I,C={})=>Q.escape(I,rI(A,C)),filter:(I,C={})=>Q.filter(I,rI(A,C)),defaults:(I)=>Q.defaults(rI(A,I)),makeRe:(I,C={})=>Q.makeRe(I,rI(A,C)),braceExpand:(I,C={})=>Q.braceExpand(I,rI(A,C)),match:(I,C,E={})=>Q.match(I,C,rI(A,E)),sep:Q.sep,GLOBSTAR:IW.GLOBSTAR})};IW.defaults=gZQ;IW.minimatch.defaults=IW.defaults;var hZQ=(A,Q={})=>{if((0,q5.assertValidPattern)(A),Q.nobrace||!/\{(?:(?!\{).)*\}/.test(A))return[A];return(0,FZQ.expand)(A,{max:Q.braceExpandMax})};IW.braceExpand=hZQ;IW.minimatch.braceExpand=IW.braceExpand;var xZQ=(A,Q={})=>new kD(A,Q).makeRe();IW.makeRe=xZQ;IW.minimatch.makeRe=IW.makeRe;var vZQ=(A,Q,B={})=>{let I=new kD(Q,B);if(A=A.filter((C)=>I.match(C)),I.options.nonull&&!A.length)A.push(Q);return A};IW.match=vZQ;IW.minimatch.match=IW.match;var FDA=/[?*]|[+@!]\(.*?\)|\[|\]/,bZQ=(A)=>A.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class kD{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(A,Q={}){(0,q5.assertValidPattern)(A),Q=Q||{},this.options=Q,this.maxGlobstarRecursion=Q.maxGlobstarRecursion??200,this.pattern=A,this.platform=Q.platform||WDA,this.isWindows=this.platform==="win32";let B="allowWindowsEscape";if(this.windowsPathsNoEscape=!!Q.windowsPathsNoEscape||Q[B]===!1,this.windowsPathsNoEscape)this.pattern=this.pattern.replace(/\\/g,"/");this.preserveMultipleSlashes=!!Q.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!Q.nonegate,this.comment=!1,this.empty=!1,this.partial=!!Q.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=Q.windowsNoMagicRoot!==void 0?Q.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let A of this.set)for(let Q of A)if(typeof Q!=="string")return!0;return!1}debug(...A){}make(){let A=this.pattern,Q=this.options;if(!Q.nocomment&&A.charAt(0)==="#"){this.comment=!0;return}if(!A){this.empty=!0;return}if(this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],Q.debug)this.debug=(...C)=>console.error(...C);this.debug(this.pattern,this.globSet);let B=this.globSet.map((C)=>this.slashSplit(C));this.globParts=this.preprocess(B),this.debug(this.pattern,this.globParts);let I=this.globParts.map((C,E,Y)=>{if(this.isWindows&&this.windowsNoMagicRoot){let J=C[0]===""&&C[1]===""&&(C[2]==="?"||!FDA.test(C[2]))&&!FDA.test(C[3]),F=/^[a-z]:/i.test(C[0]);if(J)return[...C.slice(0,4),...C.slice(4).map((G)=>this.parse(G))];else if(F)return[C[0],...C.slice(1).map((G)=>this.parse(G))]}return C.map((J)=>this.parse(J))});if(this.debug(this.pattern,I),this.set=I.filter((C)=>C.indexOf(!1)===-1),this.isWindows)for(let C=0;C=2)A=this.firstPhasePreProcess(A),A=this.secondPhasePreProcess(A);else if(Q>=1)A=this.levelOneOptimize(A);else A=this.adjascentGlobstarOptimize(A);return A}adjascentGlobstarOptimize(A){return A.map((Q)=>{let B=-1;while((B=Q.indexOf("**",B+1))!==-1){let I=B;while(Q[I+1]==="**")I++;if(I!==B)Q.splice(B,I-B)}return Q})}levelOneOptimize(A){return A.map((Q)=>{return Q=Q.reduce((B,I)=>{let C=B[B.length-1];if(I==="**"&&C==="**")return B;if(I===".."){if(C&&C!==".."&&C!=="."&&C!=="**")return B.pop(),B}return B.push(I),B},[]),Q.length===0?[""]:Q})}levelTwoFileOptimize(A){if(!Array.isArray(A))A=this.slashSplit(A);let Q=!1;do{if(Q=!1,!this.preserveMultipleSlashes){for(let I=1;II)B.splice(I+1,E-I);let Y=B[I+1],J=B[I+2],F=B[I+3];if(Y!=="..")continue;if(!J||J==="."||J===".."||!F||F==="."||F==="..")continue;Q=!0,B.splice(I,1);let G=B.slice(0);G[I]="**",A.push(G),I--}if(!this.preserveMultipleSlashes){for(let E=1;EQ.length)}partsMatch(A,Q,B=!1){let I=0,C=0,E=[],Y="";while(I=2)A=this.levelTwoFileOptimize(A);if(Q.includes(IW.GLOBSTAR))return this.#A(A,Q,B,I,C);return this.#C(A,Q,B,I,C)}#A(A,Q,B,I,C){let E=Q.indexOf(IW.GLOBSTAR,C),Y=Q.lastIndexOf(IW.GLOBSTAR),[J,F,G]=B?[Q.slice(C,E),Q.slice(E+1),[]]:[Q.slice(C,E),Q.slice(E+1,Y),Q.slice(Y+1)];if(J.length){let $=A.slice(I,I+J.length);if(!this.#C($,J,B,0,0))return!1;I+=J.length,C+=J.length}let D=0;if(G.length){if(G.length+I>A.length)return!1;let $=A.length-G.length;if(this.#C(A,G,B,$,0))D=G.length;else{if(A[A.length-1]!==""||I+G.length===A.length)return!1;if($--,!this.#C(A,G,B,$,0))return!1;D=G.length+1}}if(!F.length){let $=!!D;for(let N=I;N{let F=J.map((D)=>{if(D instanceof RegExp)for(let Z of D.flags.split(""))I.add(Z);return typeof D==="string"?bZQ(D):D===IW.GLOBSTAR?IW.GLOBSTAR:D._src});F.forEach((D,Z)=>{let W=F[Z+1],X=F[Z-1];if(D!==IW.GLOBSTAR||X===IW.GLOBSTAR)return;if(X===void 0)if(W!==void 0&&W!==IW.GLOBSTAR)F[Z+1]="(?:\\/|"+B+"\\/)?"+W;else F[Z]=B;else if(W===void 0)F[Z-1]=X+"(?:\\/|\\/"+B+")?";else if(W!==IW.GLOBSTAR)F[Z-1]=X+"(?:\\/|\\/"+B+"\\/)"+W,F[Z+1]=IW.GLOBSTAR});let G=F.filter((D)=>D!==IW.GLOBSTAR);if(this.partial&&G.length>=1){let D=[];for(let Z=1;Z<=G.length;Z++)D.push(G.slice(0,Z).join("/"));return"(?:"+D.join("|")+")"}return G.join("/")}).join("|"),[E,Y]=A.length>1?["(?:",")"]:["",""];if(C="^"+E+C+Y+"$",this.partial)C="^(?:\\/|"+E+C.slice(1,-1)+Y+")$";if(this.negate)C="^(?!"+C+").+$";try{this.regexp=new RegExp(C,[...I].join(""))}catch(J){this.regexp=!1}return this.regexp}slashSplit(A){if(this.preserveMultipleSlashes)return A.split("/");else if(this.isWindows&&/^\/\/[^\/]+/.test(A))return["",...A.split(/\/+/)];else return A.split(/\/+/)}match(A,Q=this.partial){if(this.debug("match",A,this.pattern),this.comment)return!1;if(this.empty)return A==="";if(A==="/"&&Q)return!0;let B=this.options;if(this.isWindows)A=A.split("\\").join("/");let I=this.slashSplit(A);this.debug(this.pattern,"split",I);let C=this.set;this.debug(this.pattern,"set",C);let E=I[I.length-1];if(!E)for(let Y=I.length-2;!E&&Y>=0;Y--)E=I[Y];for(let Y=0;Y{var $DA=M("node:diagnostics_channel"),{context:O5,trace:V2,SpanStatusCode:CW,propagation:$2,diag:pZQ}=P(),{getRPCMetadata:iZQ,RPCType:nZQ}=hA(),{ATTR_HTTP_ROUTE:T5,ATTR_HTTP_RESPONSE_STATUS_CODE:LDA,ATTR_HTTP_REQUEST_METHOD:aZQ,ATTR_URL_PATH:oZQ}=HA(),{InstrumentationBase:sZQ}=SGA(),{version:rZQ,name:HDA}=yGA(),MDA=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend","onResponse","onError"],oA={HOOK_NAME:"hook.name",FASTIFY_TYPE:"fastify.type",HOOK_CALLBACK_NAME:"hook.callback.name",ROOT:"fastify.root"},jY={ROUTE:"route-hook",INSTANCE:"hook",HANDLER:"request-handler"},RY=Symbol("fastify otel instance"),qY=Symbol("fastify otel request spans"),EW=Symbol("fastify otel request context"),NDA=Symbol("fastify otel addhook original"),jDA=Symbol("fastify otel setnotfound original"),YW=Symbol("fastify otel ignore path"),JW=Symbol("fastify otel record exceptions");class L2 extends sZQ{logger=null;_requestHook=null;_lifecycleHook=null;constructor(A){super(HDA,rZQ,A);if(this.logger=pZQ.createComponentLogger({namespace:HDA}),this[YW]=null,this[JW]=!0,A?.recordExceptions!=null){if(typeof A.recordExceptions!=="boolean")throw TypeError("recordExceptions must be a boolean");this[JW]=A.recordExceptions}if(typeof A?.requestHook==="function")this._requestHook=A.requestHook;if(typeof A?.lifecycleHook==="function")this._lifecycleHook=A.lifecycleHook;if(A?.ignorePaths!=null||process.env.OTEL_FASTIFY_IGNORE_PATHS!=null){let Q=A?.ignorePaths??process.env.OTEL_FASTIFY_IGNORE_PATHS;if((typeof Q!=="string"||Q.length===0)&&typeof Q!=="function")throw TypeError("ignorePaths must be a string or a function");let B=null;this[YW]=(I)=>{if(typeof Q==="function")return Q(I);else{if(B==null)B=VDA().minimatch;return B(I.url,Q)}}}}enable(){if(this._handleInitialization===void 0&&this.getConfig().registerOnInitialization)this._handleInitialization=(A)=>{this.plugin()(A.fastify,void 0,()=>{});let Q=(B,I,C)=>{C()};Q[Symbol.for("skip-override")]=!0,Q[Symbol.for("fastify.display-name")]="@fastify/otel",A.fastify.register(Q)},$DA.subscribe("fastify.initialization",this._handleInitialization);return super.enable()}disable(){if(this._handleInitialization)$DA.unsubscribe("fastify.initialization",this._handleInitialization),this._handleInitialization=void 0;return super.disable()}init(){return[]}plugin(){let A=this;return Q[Symbol.for("skip-override")]=!0,Q[Symbol.for("fastify.display-name")]="@fastify/otel",Q[Symbol.for("plugin-meta")]={fastify:">=4.0.0 <6",name:"@fastify/otel"},Q;function Q(B,I,C){B.decorate(RY,A),B.decorate(NDA,B.addHook),B.decorate(jDA,B.setNotFoundHandler),B.decorateRequest("opentelemetry",function(){let Z=this[EW],W=this[qY];return{enabled:this.routeOptions.config?.otel!==!1,span:W,tracer:A.tracer,context:Z,inject:(X,w)=>{return $2.inject(Z,X,w)},extract:(X,w)=>{return $2.extract(Z,X,w)}}}),B.decorateRequest(qY,null),B.decorateRequest(EW,null),B.addHook("onRoute",function(Z){if(A[YW]?.(Z)===!0){A.logger.debug(`Ignoring route instrumentation ${Z.method} ${Z.url} because it matches the ignore path`);return}if(Z.config?.otel===!1){A.logger.debug(`Ignoring route instrumentation ${Z.method} ${Z.url} because it is disabled`);return}for(let W of MDA)if(Z[W]!=null){let X=Z[W];if(typeof X==="function")Z[W]=G(X,W,{[oA.HOOK_NAME]:`${this.pluginName} - route -> ${W}`,[oA.FASTIFY_TYPE]:jY.ROUTE,[T5]:Z.url,[oA.HOOK_CALLBACK_NAME]:X.name?.length>0?X.name:"anonymous"});else if(Array.isArray(X)){let w=[];for(let K of X)w.push(G(K,W,{[oA.HOOK_NAME]:`${this.pluginName} - route -> ${W}`,[oA.FASTIFY_TYPE]:jY.ROUTE,[T5]:Z.url,[oA.HOOK_CALLBACK_NAME]:K.name?.length>0?K.name:"anonymous"}));Z[W]=w}}if(Z.onSend!=null)Z.onSend=Array.isArray(Z.onSend)?[...Z.onSend,E]:[Z.onSend,E];else Z.onSend=E;if(Z.onError!=null)Z.onError=Array.isArray(Z.onError)?[...Z.onError,Y]:[Z.onError,Y];else Z.onError=Y;Z.handler=G(Z.handler,"handler",{[oA.HOOK_NAME]:`${this.pluginName} - route-handler`,[oA.FASTIFY_TYPE]:jY.HANDLER,[T5]:Z.url,[oA.HOOK_CALLBACK_NAME]:Z.handler.name.length>0?Z.handler.name:"anonymous"})}),B.addHook("onRequest",function(Z,W,X){if(this[RY].isEnabled()===!1||Z.routeOptions.config?.otel===!1)return X();if(this[RY][YW]?.({url:Z.url,method:Z.method})===!0)return this[RY].logger.debug(`Ignoring request ${Z.method} ${Z.url} because it matches the ignore path`),X();let w=O5.active();if(V2.getSpan(w)==null)w=$2.extract(w,Z.headers);let K=iZQ(w);if(Z.routeOptions.url!=null&&K?.type===nZQ.HTTP)K.route=Z.routeOptions.url;let z={[oA.ROOT]:"@fastify/otel",[aZQ]:Z.method,[oZQ]:Z.url};if(Z.routeOptions.url!=null)z[T5]=Z.routeOptions.url;let $=this[RY].tracer.startSpan("request",{attributes:z},w);try{this[RY]._requestHook?.($,Z)}catch(N){this[RY].logger.error({err:N},"requestHook threw")}Z[EW]=V2.setSpan(w,$),Z[qY]=$,O5.with(Z[EW],()=>{X()})}),B.addHook("onResponse",function(Z,W,X){let w=Z[qY];if(w!=null)w.setStatus({code:CW.OK,message:"OK"}),w.setAttributes({[LDA]:404}),w.end();Z[qY]=null,X()}),B.addHook=J,B.setNotFoundHandler=F,C();function E(D,Z,W,X){let w=D[qY];if(w!=null){if(Z.statusCode<500)w.setStatus({code:CW.OK,message:"OK"});w.setAttributes({[LDA]:Z.statusCode}),w.end()}D[qY]=null,X(null,W)}function Y(D,Z,W,X){let w=D[qY];if(w!=null){if(w.setStatus({code:CW.ERROR,message:W.message}),A[JW]!==!1)w.recordException(W)}X()}function J(D,Z){let W=this[NDA];if(MDA.includes(D))return W.call(this,D,G(Z,D,{[oA.HOOK_NAME]:`${this.pluginName} - ${D}`,[oA.FASTIFY_TYPE]:jY.INSTANCE,[oA.HOOK_CALLBACK_NAME]:Z.name?.length>0?Z.name:"anonymous"}));else return W.call(this,D,Z)}function F(D,Z){let W=this[jDA];if(typeof D==="function")Z=G(D,"notFoundHandler",{[oA.HOOK_NAME]:`${this.pluginName} - not-found-handler`,[oA.FASTIFY_TYPE]:jY.INSTANCE,[oA.HOOK_CALLBACK_NAME]:D.name?.length>0?D.name:"anonymous"}),W.call(this,Z);else{if(D.preValidation!=null)D.preValidation=G(D.preValidation,"notFoundHandler - preValidation",{[oA.HOOK_NAME]:`${this.pluginName} - not-found-handler - preValidation`,[oA.FASTIFY_TYPE]:jY.INSTANCE,[oA.HOOK_CALLBACK_NAME]:D.preValidation.name?.length>0?D.preValidation.name:"anonymous"});if(D.preHandler!=null)D.preHandler=G(D.preHandler,"notFoundHandler - preHandler",{[oA.HOOK_NAME]:`${this.pluginName} - not-found-handler - preHandler`,[oA.FASTIFY_TYPE]:jY.INSTANCE,[oA.HOOK_CALLBACK_NAME]:D.preHandler.name?.length>0?D.preHandler.name:"anonymous"});Z=G(Z,"notFoundHandler",{[oA.HOOK_NAME]:`${this.pluginName} - not-found-handler`,[oA.FASTIFY_TYPE]:jY.INSTANCE,[oA.HOOK_CALLBACK_NAME]:Z.name?.length>0?Z.name:"anonymous"}),W.call(this,D,Z)}}function G(D,Z,W={}){return function(...w){let K=this[RY],[z]=w;if(K.isEnabled()===!1||z.routeOptions.config?.otel===!1)return K.logger.debug(`Ignoring route instrumentation ${z.routeOptions.method} ${z.routeOptions.url} because it is disabled`),D.call(this,...w);if(K[YW]?.({url:z.url,method:z.method})===!0)return K.logger.debug(`Ignoring route instrumentation ${z.routeOptions.method} ${z.routeOptions.url} because it matches the ignore path`),D.call(this,...w);let $=z[EW]??O5.active(),N=D.name?.length>0?D.name:this.pluginName??"anonymous",j=K.tracer.startSpan(`${Z} - ${N}`,{attributes:W},$);if(K._lifecycleHook!=null)try{K._lifecycleHook(j,{hookName:Z,request:z,handler:N})}catch(O){K.logger.error({err:O},"Execution of lifecycleHook failed")}return O5.with(V2.setSpan($,j),function(){try{let O=D.call(this,...w);if(typeof O?.then==="function")return O.then((k)=>{return j.end(),k},(k)=>{if(j.setStatus({code:CW.ERROR,message:k.message}),K[JW]!==!1)j.recordException(k);return j.end(),Promise.reject(k)});return j.end(),O}catch(O){if(j.setStatus({code:CW.ERROR,message:O.message}),K[JW]!==!1)j.recordException(O);throw j.end(),O}},this)}}}}}H2.exports=L2;H2.exports.FastifyOtelInstrumentation=L2});var q2=U((dDA)=>{Object.defineProperty(dDA,"__esModule",{value:!0});dDA.SpanNames=dDA.TokenKind=dDA.AllowedOperationTypes=void 0;var Y1Q;(function(A){A.QUERY="query",A.MUTATION="mutation",A.SUBSCRIPTION="subscription"})(Y1Q=dDA.AllowedOperationTypes||(dDA.AllowedOperationTypes={}));var J1Q;(function(A){A.SOF="",A.EOF="",A.BANG="!",A.DOLLAR="$",A.AMP="&",A.PAREN_L="(",A.PAREN_R=")",A.SPREAD="...",A.COLON=":",A.EQUALS="=",A.AT="@",A.BRACKET_L="[",A.BRACKET_R="]",A.BRACE_L="{",A.PIPE="|",A.BRACE_R="}",A.NAME="Name",A.INT="Int",A.FLOAT="Float",A.STRING="String",A.BLOCK_STRING="BlockString",A.COMMENT="Comment"})(J1Q=dDA.TokenKind||(dDA.TokenKind={}));var F1Q;(function(A){A.EXECUTE="graphql.execute",A.PARSE="graphql.parse",A.RESOLVE="graphql.resolve",A.VALIDATE="graphql.validate",A.SCHEMA_VALIDATE="graphql.validateSchema",A.SCHEMA_PARSE="graphql.parseSchema"})(F1Q=dDA.SpanNames||(dDA.SpanNames={}))});var T2=U((cDA)=>{Object.defineProperty(cDA,"__esModule",{value:!0});cDA.AttributeNames=void 0;var G1Q;(function(A){A.SOURCE="graphql.source",A.FIELD_NAME="graphql.field.name",A.FIELD_PATH="graphql.field.path",A.FIELD_TYPE="graphql.field.type",A.PARENT_NAME="graphql.parent.name",A.OPERATION_TYPE="graphql.operation.type",A.OPERATION_NAME="graphql.operation.name",A.VARIABLES="graphql.variables.",A.ERROR_VALIDATION_NAME="graphql.validation.error"})(G1Q=cDA.AttributeNames||(cDA.AttributeNames={}))});var y5=U((uDA)=>{Object.defineProperty(uDA,"__esModule",{value:!0});uDA.OTEL_GRAPHQL_DATA_SYMBOL=uDA.OTEL_PATCHED_SYMBOL=void 0;uDA.OTEL_PATCHED_SYMBOL=Symbol.for("opentelemetry.patched");uDA.OTEL_GRAPHQL_DATA_SYMBOL=Symbol.for("opentelemetry.graphql_data")});var nDA=U((pDA)=>{Object.defineProperty(pDA,"__esModule",{value:!0});pDA.OPERATION_NOT_SUPPORTED=void 0;var OaQ=y5();pDA.OPERATION_NOT_SUPPORTED="Operation$operationName$not supported"});var DZA=U((JZA)=>{Object.defineProperty(JZA,"__esModule",{value:!0});JZA.wrapFieldResolver=JZA.wrapFields=JZA.getSourceFromLocation=JZA.getOperation=JZA.endSpan=JZA.addSpanSource=JZA.addInputVariableAttributes=JZA.isPromise=void 0;var SD=P(),OY=q2(),EF=T2(),E0=y5(),aDA=Object.values(OY.AllowedOperationTypes),Z1Q=(A)=>{return typeof A?.then==="function"};JZA.isPromise=Z1Q;var W1Q=(A)=>{return typeof A=="object"&&A!==null};function P2(A,Q,B){if(Array.isArray(B))B.forEach((I,C)=>{P2(A,`${Q}.${C}`,I)});else if(B instanceof Object)Object.entries(B).forEach(([I,C])=>{P2(A,`${Q}.${I}`,C)});else A.setAttribute(`${EF.AttributeNames.VARIABLES}${String(Q)}`,B)}function X1Q(A,Q){Object.entries(Q).forEach(([B,I])=>{P2(A,B,I)})}JZA.addInputVariableAttributes=X1Q;function tDA(A,Q,B,I,C){let E=IZA(Q,B,I,C);A.setAttribute(EF.AttributeNames.SOURCE,E)}JZA.addSpanSource=tDA;function U1Q(A,Q,B,I,C){let E=eDA(B,C);if(E)return{field:E,spanAdded:!1};let J=Q().flatResolveSpans?QZA(B):AZA(B,C);return E={span:w1Q(A,Q,B,I,C,J)},V1Q(B,C,E),{field:E,spanAdded:!0}}function w1Q(A,Q,B,I,C,E){let Y={[EF.AttributeNames.FIELD_NAME]:I.fieldName,[EF.AttributeNames.FIELD_PATH]:C.join("."),[EF.AttributeNames.FIELD_TYPE]:I.returnType.toString(),[EF.AttributeNames.PARENT_NAME]:I.parentType.name},J=A.startSpan(`${OY.SpanNames.RESOLVE} ${Y[EF.AttributeNames.FIELD_PATH]}`,{attributes:Y},E?SD.trace.setSpan(SD.context.active(),E):void 0),F=B[E0.OTEL_GRAPHQL_DATA_SYMBOL].source,G=I.fieldNodes.find((D)=>D.kind==="Field");if(G)tDA(J,F.loc,Q().allowValues,G.loc?.start,G.loc?.end);return J}function K1Q(A,Q){if(Q)A.recordException(Q);A.end()}JZA.endSpan=K1Q;function z1Q(A,Q){if(!A||!Array.isArray(A.definitions))return;if(Q)return A.definitions.filter((B)=>aDA.indexOf(B?.operation)!==-1).find((B)=>Q===B?.name?.value);else return A.definitions.find((B)=>aDA.indexOf(B?.operation)!==-1)}JZA.getOperation=z1Q;function V1Q(A,Q,B){return A[E0.OTEL_GRAPHQL_DATA_SYMBOL].fields[Q.join(".")]=B}function eDA(A,Q){return A[E0.OTEL_GRAPHQL_DATA_SYMBOL].fields[Q.join(".")]}function AZA(A,Q){for(let B=Q.length-1;B>0;B--){let I=eDA(A,Q.slice(0,B));if(I)return I.span}return QZA(A)}function QZA(A){return A[E0.OTEL_GRAPHQL_DATA_SYMBOL].span}function $1Q(A,Q){let B=[],I=Q;while(I){let C=I.key;if(A&&typeof C==="number")C="*";B.push(String(C)),I=I.prev}return B.reverse()}function L1Q(A){return BZA(` +`,A)}function oDA(A){return BZA(" ",A)}function BZA(A,Q){let B="";for(let I=0;IY){J=J.next,F=J?.line;continue}let G=J.value||J.kind,D="";if(!Q&&H1Q.indexOf(J.kind)>=0)G="*";if(J.kind===OY.TokenKind.STRING)G=`"${G}"`;if(J.kind===OY.TokenKind.EOF)G="";if(J.line>F)C+=L1Q(J.line-F),F=J.line,D=oDA(J.column-1);else if(J.line===J.prev?.line)D=oDA(J.start-(J.prev?.end||0));if(C+=D+G,J)J=J.next}}return C}JZA.getSourceFromLocation=IZA;function CZA(A,Q,B){if(!A||A[E0.OTEL_PATCHED_SYMBOL])return;let I=A.getFields();A[E0.OTEL_PATCHED_SYMBOL]=!0,Object.keys(I).forEach((C)=>{let E=I[C];if(!E)return;if(E.resolve)E.resolve=YZA(Q,B,E.resolve);if(E.type){let Y=EZA(E.type);for(let J of Y)CZA(J,Q,B)}})}JZA.wrapFields=CZA;function EZA(A){if("ofType"in A)return EZA(A.ofType);if(M1Q(A))return A.getTypes();if(N1Q(A))return[A];return[]}function M1Q(A){return"getTypes"in A&&typeof A.getTypes==="function"}function N1Q(A){return"getFields"in A&&typeof A.getFields==="function"}var sDA=(A,Q,B)=>{if(!B)return;A.recordException(Q),A.setStatus({code:SD.SpanStatusCode.ERROR,message:Q.message}),A.end()},rDA=(A,Q)=>{if(!Q)return;A.end()};function YZA(A,Q,B,I=!1){if(C[E0.OTEL_PATCHED_SYMBOL]||typeof B!=="function")return B;function C(E,Y,J,F){if(!B)return;let G=Q();if(G.ignoreTrivialResolveSpans&&I&&(W1Q(E)||typeof E==="function")){if(typeof E[F.fieldName]!=="function")return B.call(this,E,Y,J,F)}if(!J[E0.OTEL_GRAPHQL_DATA_SYMBOL])return B.call(this,E,Y,J,F);let D=$1Q(G.mergeItems,F&&F.path),Z=D.filter((w)=>typeof w==="string").length,W,X=!1;if(G.depth>=0&&G.depth{try{let w=B.call(this,E,Y,J,F);if(JZA.isPromise(w))return w.then((K)=>{return rDA(W,X),K},(K)=>{throw sDA(W,K,X),K});else return rDA(W,X),w}catch(w){throw sDA(W,w,X),w}})}return C[E0.OTEL_PATCHED_SYMBOL]=!0,C}JZA.wrapFieldResolver=YZA});var XZA=U((ZZA)=>{Object.defineProperty(ZZA,"__esModule",{value:!0});ZZA.PACKAGE_NAME=ZZA.PACKAGE_VERSION=void 0;ZZA.PACKAGE_VERSION="0.61.0";ZZA.PACKAGE_NAME="@opentelemetry/instrumentation-graphql"});var $ZA=U((zZA)=>{Object.defineProperty(zZA,"__esModule",{value:!0});zZA.GraphQLInstrumentation=void 0;var Y0=P(),tI=JA(),ZW=q2(),_5=T2(),k2=y5(),S1Q=nDA(),wB=DZA(),UZA=XZA(),wZA={mergeItems:!1,depth:-1,allowValues:!1,ignoreResolveSpans:!1},f5=[">=14.0.0 <17"];class KZA extends tI.InstrumentationBase{constructor(A={}){super(UZA.PACKAGE_NAME,UZA.PACKAGE_VERSION,{...wZA,...A})}setConfig(A={}){super.setConfig({...wZA,...A})}init(){let A=new tI.InstrumentationNodeModuleDefinition("graphql",f5);return A.files.push(this._addPatchingExecute()),A.files.push(this._addPatchingParser()),A.files.push(this._addPatchingValidate()),A}_addPatchingExecute(){return new tI.InstrumentationNodeModuleFile("graphql/execution/execute.js",f5,(A)=>{if((0,tI.isWrapped)(A.execute))this._unwrap(A,"execute");return this._wrap(A,"execute",this._patchExecute(A.defaultFieldResolver)),A},(A)=>{if(A)this._unwrap(A,"execute")})}_addPatchingParser(){return new tI.InstrumentationNodeModuleFile("graphql/language/parser.js",f5,(A)=>{if((0,tI.isWrapped)(A.parse))this._unwrap(A,"parse");return this._wrap(A,"parse",this._patchParse()),A},(A)=>{if(A)this._unwrap(A,"parse")})}_addPatchingValidate(){return new tI.InstrumentationNodeModuleFile("graphql/validation/validate.js",f5,(A)=>{if((0,tI.isWrapped)(A.validate))this._unwrap(A,"validate");return this._wrap(A,"validate",this._patchValidate()),A},(A)=>{if(A)this._unwrap(A,"validate")})}_patchExecute(A){let Q=this;return function(I){return function(){let E;if(arguments.length>=2){let F=arguments;E=Q._wrapExecuteArgs(F[0],F[1],F[2],F[3],F[4],F[5],F[6],F[7],A)}else{let F=arguments[0];E=Q._wrapExecuteArgs(F.schema,F.document,F.rootValue,F.contextValue,F.variableValues,F.operationName,F.fieldResolver,F.typeResolver,A)}let Y=(0,wB.getOperation)(E.document,E.operationName),J=Q._createExecuteSpan(Y,E);return E.contextValue[k2.OTEL_GRAPHQL_DATA_SYMBOL]={source:E.document?E.document||E.document[k2.OTEL_GRAPHQL_DATA_SYMBOL]:void 0,span:J,fields:{}},Y0.context.with(Y0.trace.setSpan(Y0.context.active(),J),()=>{return(0,tI.safeExecuteInTheMiddle)(()=>{return I.apply(this,[E])},(F,G)=>{Q._handleExecutionResult(J,F,G)})})}}}_handleExecutionResult(A,Q,B){let I=this.getConfig();if(B===void 0||Q){(0,wB.endSpan)(A,Q);return}if((0,wB.isPromise)(B))B.then((C)=>{if(typeof I.responseHook!=="function"){(0,wB.endSpan)(A);return}this._executeResponseHook(A,C)},(C)=>{(0,wB.endSpan)(A,C)});else{if(typeof I.responseHook!=="function"){(0,wB.endSpan)(A);return}this._executeResponseHook(A,B)}}_executeResponseHook(A,Q){let{responseHook:B}=this.getConfig();if(!B)return;(0,tI.safeExecuteInTheMiddle)(()=>{B(A,Q)},(I)=>{if(I)this._diag.error("Error running response hook",I);(0,wB.endSpan)(A,void 0)},!0)}_patchParse(){let A=this;return function(B){return function(C,E){return A._parse(this,B,C,E)}}}_patchValidate(){let A=this;return function(B){return function(C,E,Y,J,F){return A._validate(this,B,C,E,Y,F,J)}}}_parse(A,Q,B,I){let C=this.getConfig(),E=this.tracer.startSpan(ZW.SpanNames.PARSE);return Y0.context.with(Y0.trace.setSpan(Y0.context.active(),E),()=>{return(0,tI.safeExecuteInTheMiddle)(()=>{return Q.call(A,B,I)},(Y,J)=>{if(J){if(!(0,wB.getOperation)(J))E.updateName(ZW.SpanNames.SCHEMA_PARSE);else if(J.loc)(0,wB.addSpanSource)(E,J.loc,C.allowValues)}(0,wB.endSpan)(E,Y)})})}_validate(A,Q,B,I,C,E,Y){let J=this.tracer.startSpan(ZW.SpanNames.VALIDATE,{});return Y0.context.with(Y0.trace.setSpan(Y0.context.active(),J),()=>{return(0,tI.safeExecuteInTheMiddle)(()=>{return Q.call(A,B,I,C,Y,E)},(F,G)=>{if(!I.loc)J.updateName(ZW.SpanNames.SCHEMA_VALIDATE);if(G&&G.length)J.recordException({name:_5.AttributeNames.ERROR_VALIDATION_NAME,message:JSON.stringify(G)});(0,wB.endSpan)(J,F)})})}_createExecuteSpan(A,Q){let B=this.getConfig(),I=this.tracer.startSpan(ZW.SpanNames.EXECUTE,{});if(A){let{operation:C,name:E}=A;I.setAttribute(_5.AttributeNames.OPERATION_TYPE,C);let Y=E?.value;if(Y)I.setAttribute(_5.AttributeNames.OPERATION_NAME,Y),I.updateName(`${C} ${Y}`);else I.updateName(C)}else{let C=" ";if(Q.operationName)C=` "${Q.operationName}" `;C=S1Q.OPERATION_NOT_SUPPORTED.replace("$operationName$",C),I.setAttribute(_5.AttributeNames.OPERATION_NAME,C)}if(Q.document?.loc)(0,wB.addSpanSource)(I,Q.document.loc,B.allowValues);if(Q.variableValues&&B.allowValues)(0,wB.addInputVariableAttributes)(I,Q.variableValues);return I}_wrapExecuteArgs(A,Q,B,I,C,E,Y,J,F){if(!I)I={};if(I[k2.OTEL_GRAPHQL_DATA_SYMBOL]||this.getConfig().ignoreResolveSpans)return{schema:A,document:Q,rootValue:B,contextValue:I,variableValues:C,operationName:E,fieldResolver:Y,typeResolver:J};let G=Y==null,D=Y??F;if(Y=(0,wB.wrapFieldResolver)(this.tracer,()=>this.getConfig(),D,G),A)(0,wB.wrapFields)(A.getQueryType(),this.tracer,()=>this.getConfig()),(0,wB.wrapFields)(A.getMutationType(),this.tracer,()=>this.getConfig());return{schema:A,document:Q,rootValue:B,contextValue:I,variableValues:C,operationName:E,fieldResolver:Y,typeResolver:J}}}zZA.GraphQLInstrumentation=KZA});var LZA=U((S2)=>{Object.defineProperty(S2,"__esModule",{value:!0});S2.GraphQLInstrumentation=void 0;var y1Q=$ZA();Object.defineProperty(S2,"GraphQLInstrumentation",{enumerable:!0,get:function(){return y1Q.GraphQLInstrumentation}})});var PZA=U((OZA)=>{Object.defineProperty(OZA,"__esModule",{value:!0});OZA.EVENT_LISTENERS_SET=void 0;OZA.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.kafkajs.eventListenersSet")});var yZA=U((kZA)=>{Object.defineProperty(kZA,"__esModule",{value:!0});kZA.bufferTextMapGetter=void 0;kZA.bufferTextMapGetter={get(A,Q){if(!A)return;let B=Object.keys(A);for(let I of B)if(I===Q||I.toLowerCase()===Q)return A[I]?.toString();return},keys(A){return A?Object.keys(A):[]}}});var gZA=U((_ZA)=>{Object.defineProperty(_ZA,"__esModule",{value:!0});_ZA.METRIC_MESSAGING_PROCESS_DURATION=_ZA.METRIC_MESSAGING_CLIENT_SENT_MESSAGES=_ZA.METRIC_MESSAGING_CLIENT_OPERATION_DURATION=_ZA.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES=_ZA.MESSAGING_SYSTEM_VALUE_KAFKA=_ZA.MESSAGING_OPERATION_TYPE_VALUE_SEND=_ZA.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE=_ZA.MESSAGING_OPERATION_TYPE_VALUE_PROCESS=_ZA.ATTR_MESSAGING_SYSTEM=_ZA.ATTR_MESSAGING_OPERATION_TYPE=_ZA.ATTR_MESSAGING_OPERATION_NAME=_ZA.ATTR_MESSAGING_KAFKA_OFFSET=_ZA.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE=_ZA.ATTR_MESSAGING_KAFKA_MESSAGE_KEY=_ZA.ATTR_MESSAGING_DESTINATION_PARTITION_ID=_ZA.ATTR_MESSAGING_DESTINATION_NAME=_ZA.ATTR_MESSAGING_BATCH_MESSAGE_COUNT=void 0;_ZA.ATTR_MESSAGING_BATCH_MESSAGE_COUNT="messaging.batch.message_count";_ZA.ATTR_MESSAGING_DESTINATION_NAME="messaging.destination.name";_ZA.ATTR_MESSAGING_DESTINATION_PARTITION_ID="messaging.destination.partition.id";_ZA.ATTR_MESSAGING_KAFKA_MESSAGE_KEY="messaging.kafka.message.key";_ZA.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE="messaging.kafka.message.tombstone";_ZA.ATTR_MESSAGING_KAFKA_OFFSET="messaging.kafka.offset";_ZA.ATTR_MESSAGING_OPERATION_NAME="messaging.operation.name";_ZA.ATTR_MESSAGING_OPERATION_TYPE="messaging.operation.type";_ZA.ATTR_MESSAGING_SYSTEM="messaging.system";_ZA.MESSAGING_OPERATION_TYPE_VALUE_PROCESS="process";_ZA.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE="receive";_ZA.MESSAGING_OPERATION_TYPE_VALUE_SEND="send";_ZA.MESSAGING_SYSTEM_VALUE_KAFKA="kafka";_ZA.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES="messaging.client.consumed.messages";_ZA.METRIC_MESSAGING_CLIENT_OPERATION_DURATION="messaging.client.operation.duration";_ZA.METRIC_MESSAGING_CLIENT_SENT_MESSAGES="messaging.client.sent.messages";_ZA.METRIC_MESSAGING_PROCESS_DURATION="messaging.process.duration"});var vZA=U((hZA)=>{Object.defineProperty(hZA,"__esModule",{value:!0});hZA.PACKAGE_NAME=hZA.PACKAGE_VERSION=void 0;hZA.PACKAGE_VERSION="0.22.0";hZA.PACKAGE_NAME="@opentelemetry/instrumentation-kafkajs"});var nZA=U((pZA)=>{Object.defineProperty(pZA,"__esModule",{value:!0});pZA.KafkaJsInstrumentation=void 0;var bA=P(),eI=JA(),yD=HA(),bZA=PZA(),mZA=yZA(),l=gZA(),dZA=vZA();function g5(A,Q,B){return(I)=>{A.add(Q,{...B,...I?{[yD.ATTR_ERROR_TYPE]:I}:{}})}}function cZA(A,Q,B){return(I)=>{A.record((Date.now()-Q)/1000,{...B,...I?{[yD.ATTR_ERROR_TYPE]:I}:{}})}}var uZA=[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10];class lZA extends eI.InstrumentationBase{constructor(A={}){super(dZA.PACKAGE_NAME,dZA.PACKAGE_VERSION,A)}_updateMetricInstruments(){this._clientDuration=this.meter.createHistogram(l.METRIC_MESSAGING_CLIENT_OPERATION_DURATION,{advice:{explicitBucketBoundaries:uZA}}),this._sentMessages=this.meter.createCounter(l.METRIC_MESSAGING_CLIENT_SENT_MESSAGES),this._consumedMessages=this.meter.createCounter(l.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES),this._processDuration=this.meter.createHistogram(l.METRIC_MESSAGING_PROCESS_DURATION,{advice:{explicitBucketBoundaries:uZA}})}init(){let A=(B)=>{if((0,eI.isWrapped)(B?.Kafka?.prototype.producer))this._unwrap(B.Kafka.prototype,"producer");if((0,eI.isWrapped)(B?.Kafka?.prototype.consumer))this._unwrap(B.Kafka.prototype,"consumer")};return new eI.InstrumentationNodeModuleDefinition("kafkajs",[">=0.3.0 <3"],(B)=>{return A(B),this._wrap(B?.Kafka?.prototype,"producer",this._getProducerPatch()),this._wrap(B?.Kafka?.prototype,"consumer",this._getConsumerPatch()),B},A)}_getConsumerPatch(){let A=this;return(Q)=>{return function(...I){let C=Q.apply(this,I);if((0,eI.isWrapped)(C.run))A._unwrap(C,"run");return A._wrap(C,"run",A._getConsumerRunPatch()),A._setKafkaEventListeners(C),C}}}_setKafkaEventListeners(A){if(A[bZA.EVENT_LISTENERS_SET])return;if(A.events?.REQUEST)A.on(A.events.REQUEST,this._recordClientDurationMetric.bind(this));A[bZA.EVENT_LISTENERS_SET]=!0}_recordClientDurationMetric(A){let[Q,B]=A.payload.broker.split(":");this._clientDuration.record(A.payload.duration/1000,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:`${A.payload.apiName}`,[yD.ATTR_SERVER_ADDRESS]:Q,[yD.ATTR_SERVER_PORT]:Number.parseInt(B,10)})}_getProducerPatch(){let A=this;return(Q)=>{return function(...I){let C=Q.apply(this,I);if((0,eI.isWrapped)(C.sendBatch))A._unwrap(C,"sendBatch");if(A._wrap(C,"sendBatch",A._getSendBatchPatch()),(0,eI.isWrapped)(C.send))A._unwrap(C,"send");if(A._wrap(C,"send",A._getSendPatch()),(0,eI.isWrapped)(C.transaction))A._unwrap(C,"transaction");return A._wrap(C,"transaction",A._getProducerTransactionPatch()),A._setKafkaEventListeners(C),C}}}_getConsumerRunPatch(){let A=this;return(Q)=>{return function(...I){let C=I[0];if(C?.eachMessage){if((0,eI.isWrapped)(C.eachMessage))A._unwrap(C,"eachMessage");A._wrap(C,"eachMessage",A._getConsumerEachMessagePatch())}if(C?.eachBatch){if((0,eI.isWrapped)(C.eachBatch))A._unwrap(C,"eachBatch");A._wrap(C,"eachBatch",A._getConsumerEachBatchPatch())}return Q.call(this,C)}}}_getConsumerEachMessagePatch(){let A=this;return(Q)=>{return function(...I){let C=I[0],E=bA.propagation.extract(bA.ROOT_CONTEXT,C.message.headers,mZA.bufferTextMapGetter),Y=A._startConsumerSpan({topic:C.topic,message:C.message,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,ctx:E,attributes:{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(C.partition)}}),J=[cZA(A._processDuration,Date.now(),{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:C.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(C.partition)}),g5(A._consumedMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:C.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(C.partition)})],F=bA.context.with(bA.trace.setSpan(E,Y),()=>{return Q.apply(this,I)});return A._endSpansOnPromise([Y],J,F)}}}_getConsumerEachBatchPatch(){return(A)=>{let Q=this;return function(...I){let C=I[0],E=Q._startConsumerSpan({topic:C.batch.topic,message:void 0,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,ctx:bA.ROOT_CONTEXT,attributes:{[l.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]:C.batch.messages.length,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(C.batch.partition)}});return bA.context.with(bA.trace.setSpan(bA.context.active(),E),()=>{let Y=Date.now(),J=[],F=[g5(Q._consumedMessages,C.batch.messages.length,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:C.batch.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(C.batch.partition)})];C.batch.messages.forEach((D)=>{let Z=bA.propagation.extract(bA.ROOT_CONTEXT,D.headers,mZA.bufferTextMapGetter),W=bA.trace.getSpan(Z)?.spanContext(),X;if(W)X={context:W};J.push(Q._startConsumerSpan({topic:C.batch.topic,message:D,operationType:l.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,link:X,attributes:{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(C.batch.partition)}})),F.push(cZA(Q._processDuration,Y,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"process",[l.ATTR_MESSAGING_DESTINATION_NAME]:C.batch.topic,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(C.batch.partition)}))});let G=A.apply(this,I);return J.unshift(E),Q._endSpansOnPromise(J,F,G)})}}}_getProducerTransactionPatch(){let A=this;return(Q)=>{return function(...I){let C=A.tracer.startSpan("transaction"),E=Q.apply(this,I);return E.then((Y)=>{let J=Y.send;Y.send=function(...W){return bA.context.with(bA.trace.setSpan(bA.context.active(),C),()=>{return A._getSendPatch()(J).apply(this,W).catch((w)=>{throw C.setStatus({code:bA.SpanStatusCode.ERROR,message:w?.message}),C.recordException(w),w})})};let F=Y.sendBatch;Y.sendBatch=function(...W){return bA.context.with(bA.trace.setSpan(bA.context.active(),C),()=>{return A._getSendBatchPatch()(F).apply(this,W).catch((w)=>{throw C.setStatus({code:bA.SpanStatusCode.ERROR,message:w?.message}),C.recordException(w),w})})};let G=Y.commit;Y.commit=function(...W){let X=G.apply(this,W).then(()=>{C.setStatus({code:bA.SpanStatusCode.OK})});return A._endSpansOnPromise([C],[],X)};let D=Y.abort;Y.abort=function(...W){let X=D.apply(this,W);return A._endSpansOnPromise([C],[],X)}}).catch((Y)=>{C.setStatus({code:bA.SpanStatusCode.ERROR,message:Y?.message}),C.recordException(Y),C.end()}),E}}}_getSendBatchPatch(){let A=this;return(Q)=>{return function(...I){let E=I[0].topicMessages||[],Y=[],J=[];E.forEach((G)=>{G.messages.forEach((D)=>{Y.push(A._startProducerSpan(G.topic,D)),J.push(g5(A._sentMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_DESTINATION_NAME]:G.topic,...D.partition!==void 0?{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(D.partition)}:{}}))})});let F=Q.apply(this,I);return A._endSpansOnPromise(Y,J,F)}}}_getSendPatch(){let A=this;return(Q)=>{return function(...I){let C=I[0],E=C.messages.map((F)=>{return A._startProducerSpan(C.topic,F)}),Y=C.messages.map((F)=>g5(A._sentMessages,1,{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_DESTINATION_NAME]:C.topic,...F.partition!==void 0?{[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(F.partition)}:{}})),J=Q.apply(this,I);return A._endSpansOnPromise(E,Y,J)}}}_endSpansOnPromise(A,Q,B){return Promise.resolve(B).then((I)=>{return Q.forEach((C)=>C()),I}).catch((I)=>{let C,E=yD.ERROR_TYPE_VALUE_OTHER;if(typeof I==="string"||I===void 0)C=I;else if(typeof I==="object"&&Object.prototype.hasOwnProperty.call(I,"message"))C=I.message,E=I.constructor.name;throw Q.forEach((Y)=>Y(E)),A.forEach((Y)=>{Y.setAttribute(yD.ATTR_ERROR_TYPE,E),Y.setStatus({code:bA.SpanStatusCode.ERROR,message:C})}),I}).finally(()=>{A.forEach((I)=>I.end())})}_startConsumerSpan({topic:A,message:Q,operationType:B,ctx:I,link:C,attributes:E}){let Y=B===l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?"poll":B,J=this.tracer.startSpan(`${Y} ${A}`,{kind:B===l.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?bA.SpanKind.CLIENT:bA.SpanKind.CONSUMER,attributes:{...E,[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_DESTINATION_NAME]:A,[l.ATTR_MESSAGING_OPERATION_TYPE]:B,[l.ATTR_MESSAGING_OPERATION_NAME]:Y,[l.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:Q?.key?String(Q.key):void 0,[l.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:Q?.key&&Q.value===null?!0:void 0,[l.ATTR_MESSAGING_KAFKA_OFFSET]:Q?.offset},links:C?[C]:[]},I),{consumerHook:F}=this.getConfig();if(F&&Q)(0,eI.safeExecuteInTheMiddle)(()=>F(J,{topic:A,message:Q}),(G)=>{if(G)this._diag.error("consumerHook error",G)},!0);return J}_startProducerSpan(A,Q){let B=this.tracer.startSpan(`send ${A}`,{kind:bA.SpanKind.PRODUCER,attributes:{[l.ATTR_MESSAGING_SYSTEM]:l.MESSAGING_SYSTEM_VALUE_KAFKA,[l.ATTR_MESSAGING_DESTINATION_NAME]:A,[l.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:Q.key?String(Q.key):void 0,[l.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:Q.key&&Q.value===null?!0:void 0,[l.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:Q.partition!==void 0?String(Q.partition):void 0,[l.ATTR_MESSAGING_OPERATION_NAME]:"send",[l.ATTR_MESSAGING_OPERATION_TYPE]:l.MESSAGING_OPERATION_TYPE_VALUE_SEND}});Q.headers=Q.headers??{},bA.propagation.inject(bA.trace.setSpan(bA.context.active(),B),Q.headers);let{producerHook:I}=this.getConfig();if(I)(0,eI.safeExecuteInTheMiddle)(()=>I(B,{topic:A,message:Q}),(C)=>{if(C)this._diag.error("producerHook error",C)},!0);return B}}pZA.KafkaJsInstrumentation=lZA});var aZA=U((y2)=>{Object.defineProperty(y2,"__esModule",{value:!0});y2.KafkaJsInstrumentation=void 0;var e1Q=nZA();Object.defineProperty(y2,"KafkaJsInstrumentation",{enumerable:!0,get:function(){return e1Q.KafkaJsInstrumentation}})});var Q1A=U((eZA)=>{Object.defineProperty(eZA,"__esModule",{value:!0});eZA.PACKAGE_NAME=eZA.PACKAGE_VERSION=void 0;eZA.PACKAGE_VERSION="0.57.0";eZA.PACKAGE_NAME="@opentelemetry/instrumentation-lru-memoizer"});var F1A=U((Y1A)=>{Object.defineProperty(Y1A,"__esModule",{value:!0});Y1A.LruMemoizerInstrumentation=void 0;var B1A=P(),I1A=JA(),C1A=Q1A();class E1A extends I1A.InstrumentationBase{constructor(A={}){super(C1A.PACKAGE_NAME,C1A.PACKAGE_VERSION,A)}init(){return[new I1A.InstrumentationNodeModuleDefinition("lru-memoizer",[">=1.3 <3"],(A)=>{let Q=function(){let B=A.apply(this,arguments);return function(){let I=[...arguments],C=I.pop(),E=typeof C==="function"?B1A.context.bind(B1A.context.active(),C):C;return I.push(E),B.apply(this,I)}};return Q.sync=A.sync,Q},void 0)]}}Y1A.LruMemoizerInstrumentation=E1A});var G1A=U((_2)=>{Object.defineProperty(_2,"__esModule",{value:!0});_2.LruMemoizerInstrumentation=void 0;var I9Q=F1A();Object.defineProperty(_2,"LruMemoizerInstrumentation",{enumerable:!0,get:function(){return I9Q.LruMemoizerInstrumentation}})});var K1A=U((U1A)=>{Object.defineProperty(U1A,"__esModule",{value:!0});U1A.METRIC_DB_CLIENT_CONNECTIONS_USAGE=U1A.DB_SYSTEM_VALUE_MONGODB=U1A.DB_SYSTEM_NAME_VALUE_MONGODB=U1A.ATTR_NET_PEER_PORT=U1A.ATTR_NET_PEER_NAME=U1A.ATTR_DB_SYSTEM=U1A.ATTR_DB_STATEMENT=U1A.ATTR_DB_OPERATION=U1A.ATTR_DB_NAME=U1A.ATTR_DB_MONGODB_COLLECTION=U1A.ATTR_DB_CONNECTION_STRING=void 0;U1A.ATTR_DB_CONNECTION_STRING="db.connection_string";U1A.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection";U1A.ATTR_DB_NAME="db.name";U1A.ATTR_DB_OPERATION="db.operation";U1A.ATTR_DB_STATEMENT="db.statement";U1A.ATTR_DB_SYSTEM="db.system";U1A.ATTR_NET_PEER_NAME="net.peer.name";U1A.ATTR_NET_PEER_PORT="net.peer.port";U1A.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb";U1A.DB_SYSTEM_VALUE_MONGODB="mongodb";U1A.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"});var V1A=U((z1A)=>{Object.defineProperty(z1A,"__esModule",{value:!0});z1A.MongodbCommandType=void 0;var K9Q;(function(A){A.CREATE_INDEXES="createIndexes",A.FIND_AND_MODIFY="findAndModify",A.IS_MASTER="isMaster",A.COUNT="count",A.AGGREGATE="aggregate",A.UNKNOWN="unknown"})(K9Q=z1A.MongodbCommandType||(z1A.MongodbCommandType={}))});var H1A=U(($1A)=>{Object.defineProperty($1A,"__esModule",{value:!0});$1A.PACKAGE_NAME=$1A.PACKAGE_VERSION=void 0;$1A.PACKAGE_VERSION="0.66.0";$1A.PACKAGE_NAME="@opentelemetry/instrumentation-mongodb"});var q1A=U((j1A)=>{Object.defineProperty(j1A,"__esModule",{value:!0});j1A.MongoDBInstrumentation=void 0;var FQ=P(),RA=JA(),J0=HA(),qI=K1A(),YF=V1A(),M1A=H1A(),N1A={requireParentSpan:!0};class g2 extends RA.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(A={}){super(M1A.PACKAGE_NAME,M1A.PACKAGE_VERSION,{...N1A,...A});this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,RA.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,RA.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(A={}){super.setConfig({...N1A,...A})}_updateMetricInstruments(){this._connectionsUsage=this.meter.createUpDownCounter(qI.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(A,Q,B){this._connectionsUsage?.add(A,{"pool.name":Q,state:B})}init(){let{v3PatchConnection:A,v3UnpatchConnection:Q}=this._getV3ConnectionPatches(),{v4PatchConnect:B,v4UnpatchConnect:I}=this._getV4ConnectPatches(),{v4PatchConnectionCallback:C,v4PatchConnectionPromise:E,v4UnpatchConnection:Y}=this._getV4ConnectionPatches(),{v4PatchConnectionPool:J,v4UnpatchConnectionPool:F}=this._getV4ConnectionPoolPatches(),{v4PatchSessions:G,v4UnpatchSessions:D}=this._getV4SessionsPatches();return[new RA.InstrumentationNodeModuleDefinition("mongodb",[">=3.3.0 <4"],void 0,void 0,[new RA.InstrumentationNodeModuleFile("mongodb/lib/core/wireprotocol/index.js",[">=3.3.0 <4"],A,Q)]),new RA.InstrumentationNodeModuleDefinition("mongodb",[">=4.0.0 <8"],void 0,void 0,[new RA.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=4.0.0 <6.4"],C,Y),new RA.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=6.4.0 <8"],E,Y),new RA.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection_pool.js",[">=4.0.0 <6.4"],J,F),new RA.InstrumentationNodeModuleFile("mongodb/lib/cmap/connect.js",[">=4.0.0 <8"],B,I),new RA.InstrumentationNodeModuleFile("mongodb/lib/sessions.js",[">=4.0.0 <8"],G,D)])]}_getV3ConnectionPatches(){return{v3PatchConnection:(A)=>{if((0,RA.isWrapped)(A.insert))this._unwrap(A,"insert");if(this._wrap(A,"insert",this._getV3PatchOperation("insert")),(0,RA.isWrapped)(A.remove))this._unwrap(A,"remove");if(this._wrap(A,"remove",this._getV3PatchOperation("remove")),(0,RA.isWrapped)(A.update))this._unwrap(A,"update");if(this._wrap(A,"update",this._getV3PatchOperation("update")),(0,RA.isWrapped)(A.command))this._unwrap(A,"command");if(this._wrap(A,"command",this._getV3PatchCommand()),(0,RA.isWrapped)(A.query))this._unwrap(A,"query");if(this._wrap(A,"query",this._getV3PatchFind()),(0,RA.isWrapped)(A.getMore))this._unwrap(A,"getMore");return this._wrap(A,"getMore",this._getV3PatchCursor()),A},v3UnpatchConnection:(A)=>{if(A===void 0)return;this._unwrap(A,"insert"),this._unwrap(A,"remove"),this._unwrap(A,"update"),this._unwrap(A,"command"),this._unwrap(A,"query"),this._unwrap(A,"getMore")}}}_getV4SessionsPatches(){return{v4PatchSessions:(A)=>{if((0,RA.isWrapped)(A.acquire))this._unwrap(A,"acquire");if(this._wrap(A.ServerSessionPool.prototype,"acquire",this._getV4AcquireCommand()),(0,RA.isWrapped)(A.release))this._unwrap(A,"release");return this._wrap(A.ServerSessionPool.prototype,"release",this._getV4ReleaseCommand()),A},v4UnpatchSessions:(A)=>{if(A===void 0)return;if((0,RA.isWrapped)(A.acquire))this._unwrap(A,"acquire");if((0,RA.isWrapped)(A.release))this._unwrap(A,"release")}}}_getV4AcquireCommand(){let A=this;return(Q)=>{return function(){let I=this.sessions.length,C=Q.call(this),E=this.sessions.length;if(I===E)A._connCountAdd(1,A._poolName,"used");else if(I-1===E)A._connCountAdd(-1,A._poolName,"idle"),A._connCountAdd(1,A._poolName,"used");return C}}}_getV4ReleaseCommand(){let A=this;return(Q)=>{return function(I){let C=Q.call(this,I);return A._connCountAdd(-1,A._poolName,"used"),A._connCountAdd(1,A._poolName,"idle"),C}}}_getV4ConnectionPoolPatches(){return{v4PatchConnectionPool:(A)=>{let Q=A.ConnectionPool.prototype;if((0,RA.isWrapped)(Q.checkOut))this._unwrap(Q,"checkOut");return this._wrap(Q,"checkOut",this._getV4ConnectionPoolCheckOut()),A},v4UnpatchConnectionPool:(A)=>{if(A===void 0)return;this._unwrap(A.ConnectionPool.prototype,"checkOut")}}}_getV4ConnectPatches(){return{v4PatchConnect:(A)=>{if((0,RA.isWrapped)(A.connect))this._unwrap(A,"connect");return this._wrap(A,"connect",this._getV4ConnectCommand()),A},v4UnpatchConnect:(A)=>{if(A===void 0)return;this._unwrap(A,"connect")}}}_getV4ConnectionPoolCheckOut(){return(A)=>{return function(B){let I=FQ.context.bind(FQ.context.active(),B);return A.call(this,I)}}}_getV4ConnectCommand(){let A=this;return(Q)=>{return function(I,C){if(Q.length===1){let Y=Q.call(this,I);if(Y&&typeof Y.then==="function")Y.then(()=>A.setPoolName(I),()=>{return});return Y}let E=function(Y,J){if(Y||!J){C(Y,J);return}A.setPoolName(I),C(Y,J)};return Q.call(this,I,E)}}}_getV4ConnectionPatches(){return{v4PatchConnectionCallback:(A)=>{if((0,RA.isWrapped)(A.Connection.prototype.command))this._unwrap(A.Connection.prototype,"command");return this._wrap(A.Connection.prototype,"command",this._getV4PatchCommandCallback()),A},v4PatchConnectionPromise:(A)=>{if((0,RA.isWrapped)(A.Connection.prototype.command))this._unwrap(A.Connection.prototype,"command");return this._wrap(A.Connection.prototype,"command",this._getV4PatchCommandPromise()),A},v4UnpatchConnection:(A)=>{if(A===void 0)return;this._unwrap(A.Connection.prototype,"command")}}}_getV3PatchOperation(A){let Q=this;return(B)=>{return function(C,E,Y,J,F){let G=FQ.trace.getSpan(FQ.context.active()),D=Q._checkSkipInstrumentation(G),Z=typeof J==="function"?J:F;if(D||typeof Z!=="function"||typeof Y!=="object")if(typeof J==="function")return B.call(this,C,E,Y,J);else return B.call(this,C,E,Y,J,F);let W=Q._getV3SpanAttributes(E,C,Y[0],A),X=Q._spanNameFromAttrs(W),w=Q.tracer.startSpan(X,{kind:FQ.SpanKind.CLIENT,attributes:W}),K=Q._patchEnd(w,Z);if(typeof J==="function")return B.call(this,C,E,Y,K);else return B.call(this,C,E,Y,J,K)}}}_getV3PatchCommand(){let A=this;return(Q)=>{return function(I,C,E,Y,J){let F=FQ.trace.getSpan(FQ.context.active()),G=A._checkSkipInstrumentation(F),D=typeof Y==="function"?Y:J;if(G||typeof D!=="function"||typeof E!=="object")if(typeof Y==="function")return Q.call(this,I,C,E,Y);else return Q.call(this,I,C,E,Y,J);let Z=g2._getCommandType(E),W=Z===YF.MongodbCommandType.UNKNOWN?void 0:Z,X=A._getV3SpanAttributes(C,I,E,W),w=A._spanNameFromAttrs(X),K=A.tracer.startSpan(w,{kind:FQ.SpanKind.CLIENT,attributes:X}),z=A._patchEnd(K,D);if(typeof Y==="function")return Q.call(this,I,C,E,z);else return Q.call(this,I,C,E,Y,z)}}}_getV4PatchCommandCallback(){let A=this;return(Q)=>{return function(I,C,E,Y){let J=FQ.trace.getSpan(FQ.context.active()),F=A._checkSkipInstrumentation(J),G=Y,D=Object.keys(C)[0];if(typeof C!=="object"||C.ismaster||C.hello)return Q.call(this,I,C,E,Y);let Z=void 0;if(!F){let X=A._getV4SpanAttributes(this,I,C,D),w=A._spanNameFromAttrs(X);Z=A.tracer.startSpan(w,{kind:FQ.SpanKind.CLIENT,attributes:X})}let W=A._patchEnd(Z,G,this.id,D);return Q.call(this,I,C,E,W)}}}_getV4PatchCommandPromise(){let A=this;return(Q)=>{return function(...I){let[C,E]=I,Y=FQ.trace.getSpan(FQ.context.active()),J=A._checkSkipInstrumentation(Y),F=Object.keys(E)[0],G=()=>{return};if(typeof E!=="object"||E.ismaster||E.hello)return Q.apply(this,I);let D=void 0;if(!J){let X=A._getV4SpanAttributes(this,C,E,F),w=A._spanNameFromAttrs(X);D=A.tracer.startSpan(w,{kind:FQ.SpanKind.CLIENT,attributes:X})}let Z=A._patchEnd(D,G,this.id,F),W=Q.apply(this,I);return W.then((X)=>Z(null,X),(X)=>Z(X)),W}}}_getV3PatchFind(){let A=this;return(Q)=>{return function(I,C,E,Y,J,F){let G=FQ.trace.getSpan(FQ.context.active()),D=A._checkSkipInstrumentation(G),Z=typeof J==="function"?J:F;if(D||typeof Z!=="function"||typeof E!=="object")if(typeof J==="function")return Q.call(this,I,C,E,Y,J);else return Q.call(this,I,C,E,Y,J,F);let W=A._getV3SpanAttributes(C,I,E,"find"),X=A._spanNameFromAttrs(W),w=A.tracer.startSpan(X,{kind:FQ.SpanKind.CLIENT,attributes:W}),K=A._patchEnd(w,Z);if(typeof J==="function")return Q.call(this,I,C,E,Y,K);else return Q.call(this,I,C,E,Y,J,K)}}}_getV3PatchCursor(){let A=this;return(Q)=>{return function(I,C,E,Y,J,F){let G=FQ.trace.getSpan(FQ.context.active()),D=A._checkSkipInstrumentation(G),Z=typeof J==="function"?J:F;if(D||typeof Z!=="function")if(typeof J==="function")return Q.call(this,I,C,E,Y,J);else return Q.call(this,I,C,E,Y,J,F);let W=A._getV3SpanAttributes(C,I,E.cmd,"getMore"),X=A._spanNameFromAttrs(W),w=A.tracer.startSpan(X,{kind:FQ.SpanKind.CLIENT,attributes:W}),K=A._patchEnd(w,Z);if(typeof J==="function")return Q.call(this,I,C,E,Y,K);else return Q.call(this,I,C,E,Y,J,K)}}}static _getCommandType(A){if(A.createIndexes!==void 0)return YF.MongodbCommandType.CREATE_INDEXES;else if(A.findandmodify!==void 0)return YF.MongodbCommandType.FIND_AND_MODIFY;else if(A.ismaster!==void 0)return YF.MongodbCommandType.IS_MASTER;else if(A.count!==void 0)return YF.MongodbCommandType.COUNT;else if(A.aggregate!==void 0)return YF.MongodbCommandType.AGGREGATE;else return YF.MongodbCommandType.UNKNOWN}_getV4SpanAttributes(A,Q,B,I){let C,E;if(A){let J=typeof A.address==="string"?A.address.split(":"):"";if(J.length===2)C=J[0],E=J[1]}let Y;if(B?.documents&&B.documents[0])Y=B.documents[0];else if(B?.cursors)Y=B.cursors;else Y=B;return this._getSpanAttributes(Q.db,Q.collection,C,E,Y,I)}_getV3SpanAttributes(A,Q,B,I){let C,E;if(Q&&Q.s){if(C=Q.s.options?.host??Q.s.host,E=(Q.s.options?.port??Q.s.port)?.toString(),C==null||E==null){let G=Q.description?.address;if(G){let D=G.split(":");C=D[0],E=D[1]}}}let[Y,J]=A.toString().split("."),F=B?.query??B?.q??B;return this._getSpanAttributes(Y,J,C,E,F,I)}_getSpanAttributes(A,Q,B,I,C,E){let Y={};if(this._dbSemconvStability&RA.SemconvStability.OLD)Y[qI.ATTR_DB_SYSTEM]=qI.DB_SYSTEM_VALUE_MONGODB,Y[qI.ATTR_DB_NAME]=A,Y[qI.ATTR_DB_MONGODB_COLLECTION]=Q,Y[qI.ATTR_DB_OPERATION]=E,Y[qI.ATTR_DB_CONNECTION_STRING]=`mongodb://${B}:${I}/${A}`;if(this._dbSemconvStability&RA.SemconvStability.STABLE)Y[J0.ATTR_DB_SYSTEM_NAME]=qI.DB_SYSTEM_NAME_VALUE_MONGODB,Y[J0.ATTR_DB_NAMESPACE]=A,Y[J0.ATTR_DB_OPERATION_NAME]=E,Y[J0.ATTR_DB_COLLECTION_NAME]=Q;if(B&&I){if(this._netSemconvStability&RA.SemconvStability.OLD)Y[qI.ATTR_NET_PEER_NAME]=B;if(this._netSemconvStability&RA.SemconvStability.STABLE)Y[J0.ATTR_SERVER_ADDRESS]=B;let J=parseInt(I,10);if(!isNaN(J)){if(this._netSemconvStability&RA.SemconvStability.OLD)Y[qI.ATTR_NET_PEER_PORT]=J;if(this._netSemconvStability&RA.SemconvStability.STABLE)Y[J0.ATTR_SERVER_PORT]=J}}if(C){let{dbStatementSerializer:J}=this.getConfig(),F=typeof J==="function"?J:this._defaultDbStatementSerializer.bind(this);(0,RA.safeExecuteInTheMiddle)(()=>{let G=F(C);if(this._dbSemconvStability&RA.SemconvStability.OLD)Y[qI.ATTR_DB_STATEMENT]=G;if(this._dbSemconvStability&RA.SemconvStability.STABLE)Y[J0.ATTR_DB_QUERY_TEXT]=G},(G)=>{if(G)this._diag.error("Error running dbStatementSerializer hook",G)},!0)}return Y}_spanNameFromAttrs(A){let Q;if(this._dbSemconvStability&RA.SemconvStability.STABLE)Q=[A[J0.ATTR_DB_OPERATION_NAME],A[J0.ATTR_DB_COLLECTION_NAME]].filter((B)=>B).join(" ")||qI.DB_SYSTEM_NAME_VALUE_MONGODB;else Q=`mongodb.${A[qI.ATTR_DB_OPERATION]||"command"}`;return Q}_getDefaultDbStatementReplacer(){let A=new WeakSet;return(Q,B)=>{if(typeof B!=="object"||!B)return"?";if(A.has(B))return"[Circular]";return A.add(B),B}}_defaultDbStatementSerializer(A){let{enhancedDatabaseReporting:Q}=this.getConfig();if(Q)return JSON.stringify(A);return JSON.stringify(A,this._getDefaultDbStatementReplacer())}_handleExecutionResult(A,Q){let{responseHook:B}=this.getConfig();if(typeof B==="function")(0,RA.safeExecuteInTheMiddle)(()=>{B(A,{data:Q})},(I)=>{if(I)this._diag.error("Error running response hook",I)},!0)}_patchEnd(A,Q,B,I){let C=FQ.context.active(),E=this,Y=!1;return function(...F){if(!Y){Y=!0;let G=F[0];if(A){if(G instanceof Error)A.setStatus({code:FQ.SpanStatusCode.ERROR,message:G.message});else{let D=F[1];E._handleExecutionResult(A,D)}A.end()}if(I==="endSessions")E._connCountAdd(-1,E._poolName,"idle")}return FQ.context.with(C,()=>{return Q.apply(this,F)})}}setPoolName(A){let Q=A.hostAddress?.host,B=A.hostAddress?.port,I=A.dbName,C=`mongodb://${Q}:${B}/${I}`;this._poolName=C}_checkSkipInstrumentation(A){return this.getConfig().requireParentSpan===!0&&A===void 0}}j1A.MongoDBInstrumentation=g2});var T1A=U((O1A)=>{Object.defineProperty(O1A,"__esModule",{value:!0});O1A.MongodbCommandType=void 0;var V9Q;(function(A){A.CREATE_INDEXES="createIndexes",A.FIND_AND_MODIFY="findAndModify",A.IS_MASTER="isMaster",A.COUNT="count",A.UNKNOWN="unknown"})(V9Q=O1A.MongodbCommandType||(O1A.MongodbCommandType={}))});var P1A=U((h5)=>{Object.defineProperty(h5,"__esModule",{value:!0});h5.MongodbCommandType=h5.MongoDBInstrumentation=void 0;var $9Q=q1A();Object.defineProperty(h5,"MongoDBInstrumentation",{enumerable:!0,get:function(){return $9Q.MongoDBInstrumentation}});var L9Q=T1A();Object.defineProperty(h5,"MongodbCommandType",{enumerable:!0,get:function(){return L9Q.MongodbCommandType}})});var v2=U((f1A)=>{Object.defineProperty(f1A,"__esModule",{value:!0});f1A.DB_SYSTEM_NAME_VALUE_MONGODB=f1A.ATTR_NET_PEER_PORT=f1A.ATTR_NET_PEER_NAME=f1A.ATTR_DB_USER=f1A.ATTR_DB_SYSTEM=f1A.ATTR_DB_STATEMENT=f1A.ATTR_DB_OPERATION=f1A.ATTR_DB_NAME=f1A.ATTR_DB_MONGODB_COLLECTION=void 0;f1A.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection";f1A.ATTR_DB_NAME="db.name";f1A.ATTR_DB_OPERATION="db.operation";f1A.ATTR_DB_STATEMENT="db.statement";f1A.ATTR_DB_SYSTEM="db.system";f1A.ATTR_DB_USER="db.user";f1A.ATTR_NET_PEER_NAME="net.peer.name";f1A.ATTR_NET_PEER_PORT="net.peer.port";f1A.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb"});var m1A=U((v1A)=>{Object.defineProperty(v1A,"__esModule",{value:!0});v1A.handleCallbackResponse=v1A.handlePromiseResponse=v1A.getAttributesFromCollection=void 0;var h1A=P(),XW=JA(),WW=v2(),x5=HA();function g9Q(A,Q,B){let I={};if(Q&XW.SemconvStability.OLD)I[WW.ATTR_DB_MONGODB_COLLECTION]=A.name,I[WW.ATTR_DB_NAME]=A.conn.name,I[WW.ATTR_DB_USER]=A.conn.user;if(Q&XW.SemconvStability.STABLE)I[x5.ATTR_DB_COLLECTION_NAME]=A.name,I[x5.ATTR_DB_NAMESPACE]=A.conn.name;if(B&XW.SemconvStability.OLD)I[WW.ATTR_NET_PEER_NAME]=A.conn.host,I[WW.ATTR_NET_PEER_PORT]=A.conn.port;if(B&XW.SemconvStability.STABLE)I[x5.ATTR_SERVER_ADDRESS]=A.conn.host,I[x5.ATTR_SERVER_PORT]=A.conn.port;return I}v1A.getAttributesFromCollection=g9Q;function x1A(A,Q={}){A.recordException(Q),A.setStatus({code:h1A.SpanStatusCode.ERROR,message:`${Q.message} ${Q.code?` +Mongoose Error Code: ${Q.code}`:""}`})}function b2(A,Q,B,I=void 0){if(!B)return;(0,XW.safeExecuteInTheMiddle)(()=>B(A,{moduleVersion:I,response:Q}),(C)=>{if(C)h1A.diag.error("mongoose instrumentation: responseHook error",C)},!0)}function h9Q(A,Q,B,I=void 0){if(!(A instanceof Promise))return b2(Q,A,B,I),Q.end(),A;return A.then((C)=>{return b2(Q,C,B,I),C}).catch((C)=>{throw x1A(Q,C),C}).finally(()=>Q.end())}v1A.handlePromiseResponse=h9Q;function x9Q(A,Q,B,I,C,E,Y=void 0){let J=0;if(C.length===2)J=1;else if(C.length===3)J=2;return C[J]=(F,G)=>{if(F)x1A(I,F);else b2(I,G,E,Y);return I.end(),A(F,G)},Q.apply(B,C)}v1A.handleCallbackResponse=x9Q});var u1A=U((d1A)=>{Object.defineProperty(d1A,"__esModule",{value:!0});d1A.PACKAGE_NAME=d1A.PACKAGE_VERSION=void 0;d1A.PACKAGE_VERSION="0.59.0";d1A.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"});var r1A=U((o1A)=>{Object.defineProperty(o1A,"__esModule",{value:!0});o1A.MongooseInstrumentation=o1A._ALREADY_INSTRUMENTED=o1A._STORED_PARENT_SPAN=void 0;var xQ=P(),d9Q=hA(),m2=m1A(),BB=JA(),l1A=u1A(),TY=v2(),JF=HA(),v5=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],c9Q=["remove","count","findOneAndRemove",...v5],u9Q=["count","findOneAndRemove",...v5],l9Q=[...v5];function p1A(A){if(!A)return v5;else if(A.startsWith("6.")||A.startsWith("5."))return c9Q;else if(A.startsWith("7."))return u9Q;else return l9Q}function i1A(A){return A&&(A.startsWith("5.")||A.startsWith("6."))||!1}function n1A(A){if(!A||!A.startsWith("8."))return!1;return parseInt(A.split(".")[1],10)>=21}o1A._STORED_PARENT_SPAN=Symbol("stored-parent-span");o1A._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class a1A extends BB.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(A={}){super(l1A.PACKAGE_NAME,l1A.PACKAGE_VERSION,A);this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,BB.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,BB.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new BB.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(A,Q){let B=A[Symbol.toStringTag]==="Module"?A.default:A;if(this._wrap(B.Model.prototype,"save",this.patchOnModelMethods("save",Q)),B.Model.prototype.$save=B.Model.prototype.save,i1A(Q))this._wrap(B.Model.prototype,"remove",this.patchOnModelMethods("remove",Q));if(n1A(Q))this._wrap(B.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",Q)),this._wrap(B.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",Q));return this._wrap(B.Query.prototype,"exec",this.patchQueryExec(Q)),this._wrap(B.Aggregate.prototype,"exec",this.patchAggregateExec(Q)),p1A(Q).forEach((C)=>{this._wrap(B.Query.prototype,C,this.patchAndCaptureSpanContext(C))}),this._wrap(B.Model,"aggregate",this.patchModelAggregate()),this._wrap(B.Model,"insertMany",this.patchModelStatic("insertMany",Q)),this._wrap(B.Model,"bulkWrite",this.patchModelStatic("bulkWrite",Q)),B}unpatch(A,Q){let B=A[Symbol.toStringTag]==="Module"?A.default:A,I=p1A(Q);if(this._unwrap(B.Model.prototype,"save"),B.Model.prototype.$save=B.Model.prototype.save,i1A(Q))this._unwrap(B.Model.prototype,"remove");if(n1A(Q))this._unwrap(B.Model.prototype,"updateOne"),this._unwrap(B.Model.prototype,"deleteOne");this._unwrap(B.Query.prototype,"exec"),this._unwrap(B.Aggregate.prototype,"exec"),I.forEach((C)=>{this._unwrap(B.Query.prototype,C)}),this._unwrap(B.Model,"aggregate"),this._unwrap(B.Model,"insertMany"),this._unwrap(B.Model,"bulkWrite")}patchAggregateExec(A){let Q=this;return(B)=>{return function(C){if(Q.getConfig().requireParentSpan&&xQ.trace.getSpan(xQ.context.active())===void 0)return B.apply(this,arguments);let E=this[o1A._STORED_PARENT_SPAN],Y={},{dbStatementSerializer:J}=Q.getConfig();if(J){let G=J("aggregate",{options:this.options,aggregatePipeline:this._pipeline});if(Q._dbSemconvStability&BB.SemconvStability.OLD)Y[TY.ATTR_DB_STATEMENT]=G;if(Q._dbSemconvStability&BB.SemconvStability.STABLE)Y[JF.ATTR_DB_QUERY_TEXT]=G}let F=Q._startSpan(this._model.collection,this._model?.modelName,"aggregate",Y,E);return Q._handleResponse(F,B,this,arguments,C,A)}}}patchQueryExec(A){let Q=this;return(B)=>{return function(C){if(this[o1A._ALREADY_INSTRUMENTED])return B.apply(this,arguments);if(Q.getConfig().requireParentSpan&&xQ.trace.getSpan(xQ.context.active())===void 0)return B.apply(this,arguments);let E=this[o1A._STORED_PARENT_SPAN],Y={},{dbStatementSerializer:J}=Q.getConfig();if(J){let G=J(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});if(Q._dbSemconvStability&BB.SemconvStability.OLD)Y[TY.ATTR_DB_STATEMENT]=G;if(Q._dbSemconvStability&BB.SemconvStability.STABLE)Y[JF.ATTR_DB_QUERY_TEXT]=G}let F=Q._startSpan(this.mongooseCollection,this.model.modelName,this.op,Y,E);return Q._handleResponse(F,B,this,arguments,C,A)}}}patchOnModelMethods(A,Q){let B=this;return(I)=>{return function(E,Y){if(B.getConfig().requireParentSpan&&xQ.trace.getSpan(xQ.context.active())===void 0)return I.apply(this,arguments);let J={document:this};if(E&&!(E instanceof Function))J.options=E;let F={},{dbStatementSerializer:G}=B.getConfig();if(G){let Z=G(A,J);if(B._dbSemconvStability&BB.SemconvStability.OLD)F[TY.ATTR_DB_STATEMENT]=Z;if(B._dbSemconvStability&BB.SemconvStability.STABLE)F[JF.ATTR_DB_QUERY_TEXT]=Z}let D=B._startSpan(this.constructor.collection,this.constructor.modelName,A,F);if(E instanceof Function)Y=E,E=void 0;return B._handleResponse(D,I,this,arguments,Y,Q)}}}_patchDocumentUpdateMethods(A,Q){let B=this;return(I)=>{return function(E,Y,J){if(B.getConfig().requireParentSpan&&xQ.trace.getSpan(xQ.context.active())===void 0)return I.apply(this,arguments);let F=J,G=E,D=Y;if(typeof E==="function")F=E,G=void 0,D=void 0;else if(typeof Y==="function")F=Y,D=void 0;let Z={},W=B.getConfig().dbStatementSerializer;if(W){let K=W(A,{condition:{_id:this._id},updates:G,options:D});if(B._dbSemconvStability&BB.SemconvStability.OLD)Z[TY.ATTR_DB_STATEMENT]=K;if(B._dbSemconvStability&BB.SemconvStability.STABLE)Z[JF.ATTR_DB_QUERY_TEXT]=K}let X=B._startSpan(this.constructor.collection,this.constructor.modelName,A,Z),w=B._handleResponse(X,I,this,arguments,F,Q);if(w&&typeof w==="object")w[o1A._ALREADY_INSTRUMENTED]=!0;return w}}}patchModelStatic(A,Q){let B=this;return(I)=>{return function(E,Y,J){if(B.getConfig().requireParentSpan&&xQ.trace.getSpan(xQ.context.active())===void 0)return I.apply(this,arguments);if(typeof Y==="function")J=Y,Y=void 0;let F={};switch(A){case"insertMany":F.documents=E;break;case"bulkWrite":F.operations=E;break;default:F.document=E;break}if(Y!==void 0)F.options=Y;let G={},{dbStatementSerializer:D}=B.getConfig();if(D){let W=D(A,F);if(B._dbSemconvStability&BB.SemconvStability.OLD)G[TY.ATTR_DB_STATEMENT]=W;if(B._dbSemconvStability&BB.SemconvStability.STABLE)G[JF.ATTR_DB_QUERY_TEXT]=W}let Z=B._startSpan(this.collection,this.modelName,A,G);return B._handleResponse(Z,I,this,arguments,J,Q)}}}patchModelAggregate(){let A=this;return(Q)=>{return function(){let I=xQ.trace.getSpan(xQ.context.active()),C=A._callOriginalFunction(()=>Q.apply(this,arguments));if(C)C[o1A._STORED_PARENT_SPAN]=I;return C}}}patchAndCaptureSpanContext(A){let Q=this;return(B)=>{return function(){return this[o1A._STORED_PARENT_SPAN]=xQ.trace.getSpan(xQ.context.active()),Q._callOriginalFunction(()=>B.apply(this,arguments))}}}_startSpan(A,Q,B,I,C){let E={...I,...(0,m2.getAttributesFromCollection)(A,this._dbSemconvStability,this._netSemconvStability)};if(this._dbSemconvStability&BB.SemconvStability.OLD)E[TY.ATTR_DB_OPERATION]=B,E[TY.ATTR_DB_SYSTEM]="mongoose";if(this._dbSemconvStability&BB.SemconvStability.STABLE)E[JF.ATTR_DB_OPERATION_NAME]=B,E[JF.ATTR_DB_SYSTEM_NAME]=TY.DB_SYSTEM_NAME_VALUE_MONGODB;let Y=this._dbSemconvStability&BB.SemconvStability.STABLE?`${B} ${A.name}`:`mongoose.${Q}.${B}`;return this.tracer.startSpan(Y,{kind:xQ.SpanKind.CLIENT,attributes:E},C?xQ.trace.setSpan(xQ.context.active(),C):void 0)}_handleResponse(A,Q,B,I,C,E=void 0){let Y=this;if(C instanceof Function)return Y._callOriginalFunction(()=>(0,m2.handleCallbackResponse)(C,Q,B,A,I,Y.getConfig().responseHook,E));else{let J=Y._callOriginalFunction(()=>Q.apply(B,I));return(0,m2.handlePromiseResponse)(J,A,Y.getConfig().responseHook,E)}}_callOriginalFunction(A){if(this.getConfig().suppressInternalInstrumentation)return xQ.context.with((0,d9Q.suppressTracing)(xQ.context.active()),A);else return A()}}o1A.MongooseInstrumentation=a1A});var t1A=U((c2)=>{Object.defineProperty(c2,"__esModule",{value:!0});c2.MongooseInstrumentation=void 0;var p9Q=r1A();Object.defineProperty(c2,"MongooseInstrumentation",{enumerable:!0,get:function(){return p9Q.MongooseInstrumentation}})});var E9A=U((I9A)=>{Object.defineProperty(I9A,"__esModule",{value:!0});I9A.METRIC_DB_CLIENT_CONNECTIONS_USAGE=I9A.DB_SYSTEM_VALUE_MYSQL=I9A.ATTR_NET_PEER_PORT=I9A.ATTR_NET_PEER_NAME=I9A.ATTR_DB_USER=I9A.ATTR_DB_SYSTEM=I9A.ATTR_DB_STATEMENT=I9A.ATTR_DB_NAME=I9A.ATTR_DB_CONNECTION_STRING=void 0;I9A.ATTR_DB_CONNECTION_STRING="db.connection_string";I9A.ATTR_DB_NAME="db.name";I9A.ATTR_DB_STATEMENT="db.statement";I9A.ATTR_DB_SYSTEM="db.system";I9A.ATTR_DB_USER="db.user";I9A.ATTR_NET_PEER_NAME="net.peer.name";I9A.ATTR_NET_PEER_PORT="net.peer.port";I9A.DB_SYSTEM_VALUE_MYSQL="mysql";I9A.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"});var J9A=U((Y9A)=>{Object.defineProperty(Y9A,"__esModule",{value:!0});Y9A.AttributeNames=void 0;var BWQ;(function(A){A.MYSQL_VALUES="db.mysql.values"})(BWQ=Y9A.AttributeNames||(Y9A.AttributeNames={}))});var D9A=U((F9A)=>{Object.defineProperty(F9A,"__esModule",{value:!0});F9A.getPoolNameOld=F9A.arrayStringifyHelper=F9A.getSpanName=F9A.getDbValues=F9A.getDbQueryText=F9A.getJDBCString=F9A.getConfig=void 0;function IWQ(A){let{host:Q,port:B,database:I,user:C}=A&&A.connectionConfig||A||{};return{host:Q,port:B,database:I,user:C}}F9A.getConfig=IWQ;function CWQ(A,Q,B){let I=`jdbc:mysql://${A||"localhost"}`;if(typeof Q==="number")I+=`:${Q}`;if(typeof B==="string")I+=`/${B}`;return I}F9A.getJDBCString=CWQ;function EWQ(A){if(typeof A==="string")return A;else return A.sql}F9A.getDbQueryText=EWQ;function YWQ(A,Q){if(typeof A==="string")return l2(Q);else return l2(Q||A.values)}F9A.getDbValues=YWQ;function JWQ(A){let Q=typeof A==="object"?A.sql:A,B=Q?.indexOf(" ");if(typeof B==="number"&&B!==-1)return Q?.substring(0,B);return Q}F9A.getSpanName=JWQ;function l2(A){if(A)return`[${A.toString()}]`;return""}F9A.arrayStringifyHelper=l2;function FWQ(A){let Q=A.config.connectionConfig,B="";if(B+=Q.host?`host: '${Q.host}', `:"",B+=Q.port?`port: ${Q.port}, `:"",B+=Q.database?`database: '${Q.database}', `:"",B+=Q.user?`user: '${Q.user}'`:"",!Q.user)B=B.substring(0,B.length-2);return B.trim()}F9A.getPoolNameOld=FWQ});var X9A=U((Z9A)=>{Object.defineProperty(Z9A,"__esModule",{value:!0});Z9A.PACKAGE_NAME=Z9A.PACKAGE_VERSION=void 0;Z9A.PACKAGE_VERSION="0.59.0";Z9A.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"});var V9A=U((K9A)=>{Object.defineProperty(K9A,"__esModule",{value:!0});K9A.MySQLInstrumentation=void 0;var QI=P(),AC=JA(),_D=HA(),F0=E9A(),KWQ=J9A(),FF=D9A(),U9A=X9A();class w9A extends AC.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(A={}){super(U9A.PACKAGE_NAME,U9A.PACKAGE_VERSION,A);this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,AC.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,AC.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(F0.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(A,Q,B){this._connectionsUsageOld?.add(A,{state:B,name:Q})}init(){return[new AC.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],(A)=>{if((0,AC.isWrapped)(A.createConnection))this._unwrap(A,"createConnection");if(this._wrap(A,"createConnection",this._patchCreateConnection()),(0,AC.isWrapped)(A.createPool))this._unwrap(A,"createPool");if(this._wrap(A,"createPool",this._patchCreatePool()),(0,AC.isWrapped)(A.createPoolCluster))this._unwrap(A,"createPoolCluster");return this._wrap(A,"createPoolCluster",this._patchCreatePoolCluster()),A},(A)=>{if(A===void 0)return;this._unwrap(A,"createConnection"),this._unwrap(A,"createPool"),this._unwrap(A,"createPoolCluster")})]}_patchCreateConnection(){return(A)=>{let Q=this;return function(I){let C=A(...arguments);return Q._wrap(C,"query",Q._patchQuery(C)),C}}}_patchCreatePool(){return(A)=>{let Q=this;return function(I){let C=A(...arguments);return Q._wrap(C,"query",Q._patchQuery(C)),Q._wrap(C,"getConnection",Q._patchGetConnection(C)),Q._wrap(C,"end",Q._patchPoolEnd(C)),Q._setPoolCallbacks(C,""),C}}}_patchPoolEnd(A){return(Q)=>{let B=this;return function(C){let E=A._allConnections.length,Y=A._freeConnections.length,J=E-Y,F=(0,FF.getPoolNameOld)(A);B._connCountAdd(-J,F,"used"),B._connCountAdd(-Y,F,"idle"),Q.apply(A,arguments)}}}_patchCreatePoolCluster(){return(A)=>{let Q=this;return function(I){let C=A(...arguments);return Q._wrap(C,"getConnection",Q._patchGetConnection(C)),Q._wrap(C,"add",Q._patchAdd(C)),C}}}_patchAdd(A){return(Q)=>{let B=this;return function(C,E){if(!B._enabled)return B._unwrap(A,"add"),Q.apply(A,arguments);Q.apply(A,arguments);let Y=A._nodes;if(Y){let J=typeof C==="object"?"CLUSTER::"+A._lastId:String(C),F=Y[J].pool;B._setPoolCallbacks(F,C)}}}}_patchGetConnection(A){return(Q)=>{let B=this;return function(C,E,Y){if(!B._enabled)return B._unwrap(A,"getConnection"),Q.apply(A,arguments);if(arguments.length===1&&typeof C==="function"){let J=B._getConnectionCallbackPatchFn(C);return Q.call(A,J)}if(arguments.length===2&&typeof E==="function"){let J=B._getConnectionCallbackPatchFn(E);return Q.call(A,C,J)}if(arguments.length===3&&typeof Y==="function"){let J=B._getConnectionCallbackPatchFn(Y);return Q.call(A,C,E,J)}return Q.apply(A,arguments)}}}_getConnectionCallbackPatchFn(A){let Q=this,B=QI.context.active();return function(I,C){if(C){if(!(0,AC.isWrapped)(C.query))Q._wrap(C,"query",Q._patchQuery(C))}if(typeof A==="function")QI.context.with(B,A,this,I,C)}}_patchQuery(A){return(Q)=>{let B=this;return function(I,C,E){if(!B._enabled)return B._unwrap(A,"query"),Q.apply(A,arguments);let Y={},{host:J,port:F,database:G,user:D}=(0,FF.getConfig)(A.config),Z=parseInt(F,10),W=(0,FF.getDbQueryText)(I);if(B._dbSemconvStability&AC.SemconvStability.OLD)Y[F0.ATTR_DB_SYSTEM]=F0.DB_SYSTEM_VALUE_MYSQL,Y[F0.ATTR_DB_CONNECTION_STRING]=(0,FF.getJDBCString)(J,F,G),Y[F0.ATTR_DB_NAME]=G,Y[F0.ATTR_DB_USER]=D,Y[F0.ATTR_DB_STATEMENT]=W;if(B._dbSemconvStability&AC.SemconvStability.STABLE)Y[_D.ATTR_DB_SYSTEM_NAME]=_D.DB_SYSTEM_NAME_VALUE_MYSQL,Y[_D.ATTR_DB_NAMESPACE]=G,Y[_D.ATTR_DB_QUERY_TEXT]=W;if(B._netSemconvStability&AC.SemconvStability.OLD){if(Y[F0.ATTR_NET_PEER_NAME]=J,!isNaN(Z))Y[F0.ATTR_NET_PEER_PORT]=Z}if(B._netSemconvStability&AC.SemconvStability.STABLE){if(Y[_D.ATTR_SERVER_ADDRESS]=J,!isNaN(Z))Y[_D.ATTR_SERVER_PORT]=Z}let X=B.tracer.startSpan((0,FF.getSpanName)(I),{kind:QI.SpanKind.CLIENT,attributes:Y});if(B.getConfig().enhancedDatabaseReporting){let z;if(Array.isArray(C))z=C;else if(arguments[2])z=[C];X.setAttribute(KWQ.AttributeNames.MYSQL_VALUES,(0,FF.getDbValues)(I,z))}let w=Array.from(arguments).findIndex((z)=>typeof z==="function"),K=QI.context.active();if(w===-1){let z=QI.context.with(QI.trace.setSpan(QI.context.active(),X),()=>{return Q.apply(A,arguments)});return QI.context.bind(K,z),z.on("error",($)=>X.setStatus({code:QI.SpanStatusCode.ERROR,message:$.message})).on("end",()=>{X.end()})}else return B._wrap(arguments,w,B._patchCallbackQuery(X,K)),QI.context.with(QI.trace.setSpan(QI.context.active(),X),()=>{return Q.apply(A,arguments)})}}}_patchCallbackQuery(A,Q){return(B)=>{return function(I,C,E){if(I)A.setStatus({code:QI.SpanStatusCode.ERROR,message:I.message});return A.end(),QI.context.with(Q,()=>B(...arguments))}}}_setPoolCallbacks(A,Q){let B=Q||(0,FF.getPoolNameOld)(A);A.on("connection",(I)=>{this._connCountAdd(1,B,"idle")}),A.on("acquire",(I)=>{this._connCountAdd(-1,B,"idle"),this._connCountAdd(1,B,"used")}),A.on("release",(I)=>{this._connCountAdd(1,B,"idle"),this._connCountAdd(-1,B,"used")})}}K9A.MySQLInstrumentation=w9A});var $9A=U((p2)=>{Object.defineProperty(p2,"__esModule",{value:!0});p2.MySQLInstrumentation=void 0;var zWQ=V9A();Object.defineProperty(p2,"MySQLInstrumentation",{enumerable:!0,get:function(){return zWQ.MySQLInstrumentation}})});var i2=U((j9A)=>{Object.defineProperty(j9A,"__esModule",{value:!0});j9A.DB_SYSTEM_VALUE_MYSQL=j9A.ATTR_NET_PEER_PORT=j9A.ATTR_NET_PEER_NAME=j9A.ATTR_DB_USER=j9A.ATTR_DB_SYSTEM=j9A.ATTR_DB_STATEMENT=j9A.ATTR_DB_NAME=j9A.ATTR_DB_CONNECTION_STRING=void 0;j9A.ATTR_DB_CONNECTION_STRING="db.connection_string";j9A.ATTR_DB_NAME="db.name";j9A.ATTR_DB_STATEMENT="db.statement";j9A.ATTR_DB_SYSTEM="db.system";j9A.ATTR_DB_USER="db.user";j9A.ATTR_NET_PEER_NAME="net.peer.name";j9A.ATTR_NET_PEER_PORT="net.peer.port";j9A.DB_SYSTEM_VALUE_MYSQL="mysql"});var a2=U((q9A)=>{Object.defineProperty(q9A,"__esModule",{value:!0});q9A.addSqlCommenterComment=void 0;var n2=P(),OWQ=hA();function TWQ(A){let Q=A.indexOf("--");if(Q>=0)return!0;if(A.indexOf("/*")<0)return!1;let I=A.indexOf("*/");return Q`%${Q.charCodeAt(0).toString(16).toUpperCase()}`)}function kWQ(A,Q){if(typeof Q!=="string"||Q.length===0)return Q;if(TWQ(Q))return Q;let B=new OWQ.W3CTraceContextPropagator,I={};B.inject(n2.trace.setSpan(n2.ROOT_CONTEXT,A),I,n2.defaultTextMapSetter);let C=Object.keys(I).sort();if(C.length===0)return Q;let E=C.map((Y)=>{let J=PWQ(I[Y]);return`${Y}='${J}'`}).join(",");return`${Q} /*${E}*/`}q9A.addSqlCommenterComment=kWQ});var k9A=U((T9A)=>{Object.defineProperty(T9A,"__esModule",{value:!0});T9A.getConnectionPrototypeToInstrument=T9A.once=T9A.getSpanName=T9A.getQueryText=T9A.getConnectionAttributes=void 0;var wW=i2(),b5=JA(),o2=HA();function SWQ(A,Q,B){let{host:I,port:C,database:E,user:Y}=yWQ(A),J={};if(Q&b5.SemconvStability.OLD)J[wW.ATTR_DB_CONNECTION_STRING]=_WQ(I,C,E),J[wW.ATTR_DB_NAME]=E,J[wW.ATTR_DB_USER]=Y;if(Q&b5.SemconvStability.STABLE)J[o2.ATTR_DB_NAMESPACE]=E;let F=parseInt(C,10);if(B&b5.SemconvStability.OLD){if(J[wW.ATTR_NET_PEER_NAME]=I,!isNaN(F))J[wW.ATTR_NET_PEER_PORT]=F}if(B&b5.SemconvStability.STABLE){if(J[o2.ATTR_SERVER_ADDRESS]=I,!isNaN(F))J[o2.ATTR_SERVER_PORT]=F}return J}T9A.getConnectionAttributes=SWQ;function yWQ(A){let{host:Q,port:B,database:I,user:C}=A&&A.connectionConfig||A||{};return{host:Q,port:B,database:I,user:C}}function _WQ(A,Q,B){let I=`jdbc:mysql://${A||"localhost"}`;if(typeof Q==="number")I+=`:${Q}`;if(typeof B==="string")I+=`/${B}`;return I}function fWQ(A,Q,B,I=!1,C=gWQ){let[E,Y]=typeof A==="string"?[A,B]:[A.sql,hWQ(A)?B||A.values:B];try{if(I)return C(E);else if(Q&&Y)return Q(E,Y);else return E}catch(J){return"Could not determine the query due to an error in masking or formatting"}}T9A.getQueryText=fWQ;function gWQ(A){return A.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}function hWQ(A){return"values"in A}function xWQ(A){let Q=typeof A==="object"?A.sql:A,B=Q?.indexOf(" ");if(typeof B==="number"&&B!==-1)return Q?.substring(0,B);return Q}T9A.getSpanName=xWQ;var vWQ=(A)=>{let Q=!1;return(...B)=>{if(Q)return;return Q=!0,A(...B)}};T9A.once=vWQ;function bWQ(A){let Q=A.prototype,B=Object.getPrototypeOf(Q);if(typeof B?.query==="function"&&typeof B?.execute==="function")return B;return Q}T9A.getConnectionPrototypeToInstrument=bWQ});var _9A=U((S9A)=>{Object.defineProperty(S9A,"__esModule",{value:!0});S9A.PACKAGE_NAME=S9A.PACKAGE_VERSION=void 0;S9A.PACKAGE_VERSION="0.59.0";S9A.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"});var m9A=U((v9A)=>{Object.defineProperty(v9A,"__esModule",{value:!0});v9A.MySQL2Instrumentation=void 0;var f9A=P(),fC=JA(),s2=i2(),g9A=a2(),fD=k9A(),h9A=_9A(),r2=HA(),t2=[">=1.4.2 <4"];class x9A extends fC.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(A={}){super(h9A.PACKAGE_NAME,h9A.PACKAGE_VERSION,A);this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,fC.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,fC.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let A;function Q(C){if(!A&&C.format)A=C.format}let B=(C)=>{if((0,fC.isWrapped)(C.query))this._unwrap(C,"query");if(this._wrap(C,"query",this._patchQuery(A,!1)),(0,fC.isWrapped)(C.execute))this._unwrap(C,"execute");this._wrap(C,"execute",this._patchQuery(A,!0))},I=(C)=>{this._unwrap(C,"query"),this._unwrap(C,"execute")};return[new fC.InstrumentationNodeModuleDefinition("mysql2",t2,(C)=>{return Q(C),C},()=>{},[new fC.InstrumentationNodeModuleFile("mysql2/promise.js",t2,(C)=>{return Q(C),C},()=>{}),new fC.InstrumentationNodeModuleFile("mysql2/lib/connection.js",t2,(C)=>{let E=(0,fD.getConnectionPrototypeToInstrument)(C);return B(E),C},(C)=>{if(C===void 0)return;let E=(0,fD.getConnectionPrototypeToInstrument)(C);I(E)})])]}_patchQuery(A,Q){return(B)=>{let I=this;return function(C,E,Y){let J;if(Array.isArray(E))J=E;else if(arguments[2])J=[E];let{maskStatement:F,maskStatementHook:G,responseHook:D}=I.getConfig(),Z=(0,fD.getConnectionAttributes)(this.config,I._dbSemconvStability,I._netSemconvStability),W=(0,fD.getQueryText)(C,A,J,F,G);if(I._dbSemconvStability&fC.SemconvStability.OLD)Z[s2.ATTR_DB_SYSTEM]=s2.DB_SYSTEM_VALUE_MYSQL,Z[s2.ATTR_DB_STATEMENT]=W;if(I._dbSemconvStability&fC.SemconvStability.STABLE)Z[r2.ATTR_DB_SYSTEM_NAME]=r2.DB_SYSTEM_NAME_VALUE_MYSQL,Z[r2.ATTR_DB_QUERY_TEXT]=W;let X=I.tracer.startSpan((0,fD.getSpanName)(C),{kind:f9A.SpanKind.CLIENT,attributes:Z});if(!Q&&I.getConfig().addSqlCommenterCommentToQueries)arguments[0]=C=typeof C==="string"?(0,g9A.addSqlCommenterComment)(X,C):Object.assign(C,{sql:(0,g9A.addSqlCommenterComment)(X,C.sql)});let w=(0,fD.once)((K,z)=>{if(K)X.setStatus({code:f9A.SpanStatusCode.ERROR,message:K.message});else if(typeof D==="function")(0,fC.safeExecuteInTheMiddle)(()=>{D(X,{queryResults:z})},($)=>{if($)I._diag.warn("Failed executing responseHook",$)},!0);X.end()});if(arguments.length===1){if(typeof C.onResult==="function")I._wrap(C,"onResult",I._patchCallbackQuery(w));let K=B.apply(this,arguments);return K.once("error",(z)=>{w(z)}).once("result",(z)=>{w(void 0,z)}),K}if(typeof arguments[1]==="function")I._wrap(arguments,1,I._patchCallbackQuery(w));else if(typeof arguments[2]==="function")I._wrap(arguments,2,I._patchCallbackQuery(w));return B.apply(this,arguments)}}}_patchCallbackQuery(A){return(Q)=>{return function(B,I,C){return A(B,I),Q(...arguments)}}}}v9A.MySQL2Instrumentation=x9A});var d9A=U((e2)=>{Object.defineProperty(e2,"__esModule",{value:!0});e2.MySQL2Instrumentation=void 0;var pWQ=m9A();Object.defineProperty(e2,"MySQL2Instrumentation",{enumerable:!0,get:function(){return pWQ.MySQL2Instrumentation}})});var a9A=U((i9A)=>{Object.defineProperty(i9A,"__esModule",{value:!0});i9A.DB_SYSTEM_VALUE_REDIS=i9A.DB_SYSTEM_NAME_VALUE_REDIS=i9A.ATTR_NET_PEER_PORT=i9A.ATTR_NET_PEER_NAME=i9A.ATTR_DB_SYSTEM=i9A.ATTR_DB_STATEMENT=i9A.ATTR_DB_CONNECTION_STRING=void 0;i9A.ATTR_DB_CONNECTION_STRING="db.connection_string";i9A.ATTR_DB_STATEMENT="db.statement";i9A.ATTR_DB_SYSTEM="db.system";i9A.ATTR_NET_PEER_NAME="net.peer.name";i9A.ATTR_NET_PEER_PORT="net.peer.port";i9A.DB_SYSTEM_NAME_VALUE_REDIS="redis";i9A.DB_SYSTEM_VALUE_REDIS="redis"});var r9A=U((o9A)=>{Object.defineProperty(o9A,"__esModule",{value:!0});o9A.endSpan=void 0;var A8Q=P(),Q8Q=(A,Q)=>{if(Q)A.recordException(Q),A.setStatus({code:A8Q.SpanStatusCode.ERROR,message:Q.message});A.end()};o9A.endSpan=Q8Q});var m5=U((t9A)=>{Object.defineProperty(t9A,"__esModule",{value:!0});t9A.defaultDbStatementSerializer=void 0;var B8Q=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}],I8Q=(A,Q)=>{if(Array.isArray(Q)&&Q.length){let B=B8Q.find(({regex:C})=>{return C.test(A)})?.args??0,I=B>=0?Q.slice(0,B):Q;if(Q.length>I.length)I.push(`[${Q.length-B} other arguments]`);return`${A} ${I.join(" ")}`}return A};t9A.defaultDbStatementSerializer=I8Q});var BWA=U((AWA)=>{Object.defineProperty(AWA,"__esModule",{value:!0});AWA.PACKAGE_NAME=AWA.PACKAGE_VERSION=void 0;AWA.PACKAGE_VERSION="0.61.0";AWA.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"});var GWA=U((JWA)=>{Object.defineProperty(JWA,"__esModule",{value:!0});JWA.IORedisInstrumentation=void 0;var PY=P(),BI=JA(),kY=HA(),II=a9A(),IWA=JA(),KW=r9A(),E8Q=m5(),CWA=BWA(),EWA={requireParentSpan:!0};class YWA extends BI.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(A={}){super(CWA.PACKAGE_NAME,CWA.PACKAGE_VERSION,{...EWA,...A});this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,BI.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,BI.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(A={}){super.setConfig({...EWA,...A})}init(){return[new BI.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(A,Q)=>{let B=A[Symbol.toStringTag]==="Module"?A.default:A;if((0,BI.isWrapped)(B.prototype.sendCommand))this._unwrap(B.prototype,"sendCommand");if(this._wrap(B.prototype,"sendCommand",this._patchSendCommand(Q)),(0,BI.isWrapped)(B.prototype.connect))this._unwrap(B.prototype,"connect");return this._wrap(B.prototype,"connect",this._patchConnection()),A},(A)=>{if(A===void 0)return;let Q=A[Symbol.toStringTag]==="Module"?A.default:A;this._unwrap(Q.prototype,"sendCommand"),this._unwrap(Q.prototype,"connect")})]}_patchSendCommand(A){return(Q)=>{return this._traceSendCommand(Q,A)}}_patchConnection(){return(A)=>{return this._traceConnection(A)}}_traceSendCommand(A,Q){let B=this;return function(I){if(arguments.length<1||typeof I!=="object")return A.apply(this,arguments);let C=B.getConfig(),E=C.dbStatementSerializer||E8Q.defaultDbStatementSerializer,Y=PY.trace.getSpan(PY.context.active())===void 0;if(C.requireParentSpan===!0&&Y)return A.apply(this,arguments);let J={},{host:F,port:G}=this.options,D=E(I.name,I.args);if(B._dbSemconvStability&BI.SemconvStability.OLD)J[II.ATTR_DB_SYSTEM]=II.DB_SYSTEM_VALUE_REDIS,J[II.ATTR_DB_STATEMENT]=D,J[II.ATTR_DB_CONNECTION_STRING]=`redis://${F}:${G}`;if(B._dbSemconvStability&BI.SemconvStability.STABLE)J[kY.ATTR_DB_SYSTEM_NAME]=II.DB_SYSTEM_NAME_VALUE_REDIS,J[kY.ATTR_DB_QUERY_TEXT]=D;if(B._netSemconvStability&BI.SemconvStability.OLD)J[II.ATTR_NET_PEER_NAME]=F,J[II.ATTR_NET_PEER_PORT]=G;if(B._netSemconvStability&BI.SemconvStability.STABLE)J[kY.ATTR_SERVER_ADDRESS]=F,J[kY.ATTR_SERVER_PORT]=G;let Z=B.tracer.startSpan(I.name,{kind:PY.SpanKind.CLIENT,attributes:J}),{requestHook:W}=C;if(W)(0,IWA.safeExecuteInTheMiddle)(()=>W(Z,{moduleVersion:Q,cmdName:I.name,cmdArgs:I.args}),(X)=>{if(X)PY.diag.error("ioredis instrumentation: request hook failed",X)},!0);try{let X=A.apply(this,arguments),w=I.resolve;I.resolve=function(z){(0,IWA.safeExecuteInTheMiddle)(()=>C.responseHook?.(Z,I.name,I.args,z),($)=>{if($)PY.diag.error("ioredis instrumentation: response hook failed",$)},!0),(0,KW.endSpan)(Z,null),w(z)};let K=I.reject;return I.reject=function(z){(0,KW.endSpan)(Z,z),K(z)},X}catch(X){throw(0,KW.endSpan)(Z,X),X}}}_traceConnection(A){let Q=this;return function(){let B=PY.trace.getSpan(PY.context.active())===void 0;if(Q.getConfig().requireParentSpan===!0&&B)return A.apply(this,arguments);let I={},{host:C,port:E}=this.options;if(Q._dbSemconvStability&BI.SemconvStability.OLD)I[II.ATTR_DB_SYSTEM]=II.DB_SYSTEM_VALUE_REDIS,I[II.ATTR_DB_STATEMENT]="connect",I[II.ATTR_DB_CONNECTION_STRING]=`redis://${C}:${E}`;if(Q._dbSemconvStability&BI.SemconvStability.STABLE)I[kY.ATTR_DB_SYSTEM_NAME]=II.DB_SYSTEM_NAME_VALUE_REDIS,I[kY.ATTR_DB_QUERY_TEXT]="connect";if(Q._netSemconvStability&BI.SemconvStability.OLD)I[II.ATTR_NET_PEER_NAME]=C,I[II.ATTR_NET_PEER_PORT]=E;if(Q._netSemconvStability&BI.SemconvStability.STABLE)I[kY.ATTR_SERVER_ADDRESS]=C,I[kY.ATTR_SERVER_PORT]=E;let Y=Q.tracer.startSpan("connect",{kind:PY.SpanKind.CLIENT,attributes:I});try{let J=A.apply(this,arguments);return(0,KW.endSpan)(Y,null),J}catch(J){throw(0,KW.endSpan)(Y,J),J}}}}JWA.IORedisInstrumentation=YWA});var DWA=U((AM)=>{Object.defineProperty(AM,"__esModule",{value:!0});AM.IORedisInstrumentation=void 0;var Y8Q=GWA();Object.defineProperty(AM,"IORedisInstrumentation",{enumerable:!0,get:function(){return Y8Q.IORedisInstrumentation}})});var d5=U((ZWA)=>{Object.defineProperty(ZWA,"__esModule",{value:!0});ZWA.PACKAGE_NAME=ZWA.PACKAGE_VERSION=void 0;ZWA.PACKAGE_VERSION="0.61.0";ZWA.PACKAGE_NAME="@opentelemetry/instrumentation-redis"});var wWA=U((XWA)=>{Object.defineProperty(XWA,"__esModule",{value:!0});XWA.getTracedCreateStreamTrace=XWA.getTracedCreateClient=XWA.endSpan=void 0;var zW=P(),G8Q=(A,Q)=>{if(Q)A.setStatus({code:zW.SpanStatusCode.ERROR,message:Q.message});A.end()};XWA.endSpan=G8Q;var D8Q=(A)=>{return function(){let B=A.apply(this,arguments);return zW.context.bind(zW.context.active(),B)}};XWA.getTracedCreateClient=D8Q;var Z8Q=(A)=>{return function(){if(!Object.prototype.hasOwnProperty.call(this,"stream"))Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(B){zW.context.bind(zW.context.active(),B),this._patched_redis_stream=B}});return A.apply(this,arguments)}};XWA.getTracedCreateStreamTrace=Z8Q});var c5=U((KWA)=>{Object.defineProperty(KWA,"__esModule",{value:!0});KWA.DB_SYSTEM_VALUE_REDIS=KWA.DB_SYSTEM_NAME_VALUE_REDIS=KWA.ATTR_NET_PEER_PORT=KWA.ATTR_NET_PEER_NAME=KWA.ATTR_DB_SYSTEM=KWA.ATTR_DB_STATEMENT=KWA.ATTR_DB_CONNECTION_STRING=void 0;KWA.ATTR_DB_CONNECTION_STRING="db.connection_string";KWA.ATTR_DB_STATEMENT="db.statement";KWA.ATTR_DB_SYSTEM="db.system";KWA.ATTR_NET_PEER_NAME="net.peer.name";KWA.ATTR_NET_PEER_PORT="net.peer.port";KWA.DB_SYSTEM_NAME_VALUE_REDIS="redis";KWA.DB_SYSTEM_VALUE_REDIS="redis"});var HWA=U(($WA)=>{Object.defineProperty($WA,"__esModule",{value:!0});$WA.RedisInstrumentationV2_V3=void 0;var OI=JA(),u5=wWA(),VWA=d5(),VW=P(),$W=HA(),GF=c5(),L8Q=m5();class QM extends OI.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(A={}){super(VWA.PACKAGE_NAME,VWA.PACKAGE_VERSION,A);this._semconvStability=A.semconvStability?A.semconvStability:(0,OI.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(A={}){super.setConfig(A),this._semconvStability=A.semconvStability?A.semconvStability:(0,OI.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new OI.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],(A)=>{if((0,OI.isWrapped)(A.RedisClient.prototype.internal_send_command))this._unwrap(A.RedisClient.prototype,"internal_send_command");if(this._wrap(A.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,OI.isWrapped)(A.RedisClient.prototype.create_stream))this._unwrap(A.RedisClient.prototype,"create_stream");if(this._wrap(A.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,OI.isWrapped)(A.createClient))this._unwrap(A,"createClient");return this._wrap(A,"createClient",this._getPatchCreateClient()),A},(A)=>{if(A===void 0)return;this._unwrap(A.RedisClient.prototype,"internal_send_command"),this._unwrap(A.RedisClient.prototype,"create_stream"),this._unwrap(A,"createClient")})]}_getPatchInternalSendCommand(){let A=this;return function(B){return function(C){if(arguments.length!==1||typeof C!=="object")return B.apply(this,arguments);let E=A.getConfig(),Y=VW.trace.getSpan(VW.context.active())===void 0;if(E.requireParentSpan===!0&&Y)return B.apply(this,arguments);let J=E?.dbStatementSerializer||L8Q.defaultDbStatementSerializer,F={};if(A._semconvStability&OI.SemconvStability.OLD)Object.assign(F,{[GF.ATTR_DB_SYSTEM]:GF.DB_SYSTEM_VALUE_REDIS,[GF.ATTR_DB_STATEMENT]:J(C.command,C.args)});if(A._semconvStability&OI.SemconvStability.STABLE)Object.assign(F,{[$W.ATTR_DB_SYSTEM_NAME]:GF.DB_SYSTEM_NAME_VALUE_REDIS,[$W.ATTR_DB_OPERATION_NAME]:C.command,[$W.ATTR_DB_QUERY_TEXT]:J(C.command,C.args)});let G=A.tracer.startSpan(`${QM.COMPONENT}-${C.command}`,{kind:VW.SpanKind.CLIENT,attributes:F});if(this.connection_options){let Z={};if(A._semconvStability&OI.SemconvStability.OLD)Object.assign(Z,{[GF.ATTR_NET_PEER_NAME]:this.connection_options.host,[GF.ATTR_NET_PEER_PORT]:this.connection_options.port});if(A._semconvStability&OI.SemconvStability.STABLE)Object.assign(Z,{[$W.ATTR_SERVER_ADDRESS]:this.connection_options.host,[$W.ATTR_SERVER_PORT]:this.connection_options.port});G.setAttributes(Z)}if(this.address&&A._semconvStability&OI.SemconvStability.OLD)G.setAttribute(GF.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let D=arguments[0].callback;if(D){let Z=VW.context.active();arguments[0].callback=function(X,w){if(E?.responseHook){let K=E.responseHook;(0,OI.safeExecuteInTheMiddle)(()=>{K(G,C.command,C.args,w)},(z)=>{if(z)A._diag.error("Error executing responseHook",z)},!0)}return(0,u5.endSpan)(G,X),VW.context.with(Z,D,this,...arguments)}}try{return B.apply(this,arguments)}catch(Z){throw(0,u5.endSpan)(G,Z),Z}}}}_getPatchCreateClient(){return function(Q){return(0,u5.getTracedCreateClient)(Q)}}_getPatchCreateStream(){return function(Q){return(0,u5.getTracedCreateStreamTrace)(Q)}}}$WA.RedisInstrumentationV2_V3=QM});var RWA=U((NWA)=>{Object.defineProperty(NWA,"__esModule",{value:!0});NWA.getClientAttributes=void 0;var BM=HA(),gD=c5(),MWA=JA();function H8Q(A,Q,B){let I={};if(B&MWA.SemconvStability.OLD)Object.assign(I,{[gD.ATTR_DB_SYSTEM]:gD.DB_SYSTEM_VALUE_REDIS,[gD.ATTR_NET_PEER_NAME]:Q?.socket?.host,[gD.ATTR_NET_PEER_PORT]:Q?.socket?.port,[gD.ATTR_DB_CONNECTION_STRING]:M8Q(A,Q?.url)});if(B&MWA.SemconvStability.STABLE)Object.assign(I,{[BM.ATTR_DB_SYSTEM_NAME]:gD.DB_SYSTEM_NAME_VALUE_REDIS,[BM.ATTR_SERVER_ADDRESS]:Q?.socket?.host,[BM.ATTR_SERVER_PORT]:Q?.socket?.port});return I}NWA.getClientAttributes=H8Q;function M8Q(A,Q){if(typeof Q!=="string"||!Q)return;try{let B=new URL(Q);return B.searchParams.delete("user_pwd"),B.username="",B.password="",B.href}catch(B){A.error("failed to sanitize redis connection url",B)}return}});var SWA=U((PWA)=>{Object.defineProperty(PWA,"__esModule",{value:!0});PWA.RedisInstrumentationV4_V5=void 0;var QC=P(),sA=JA(),qWA=RWA(),N8Q=m5(),OWA=d5(),IM=HA(),j8Q=c5(),LW=Symbol("opentelemetry.instrumentation.redis.open_spans"),TWA=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class l5 extends sA.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(A={}){super(OWA.PACKAGE_NAME,OWA.PACKAGE_VERSION,A);this._semconvStability=A.semconvStability?A.semconvStability:(0,sA.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(A={}){super.setConfig(A),this._semconvStability=A.semconvStability?A.semconvStability:(0,sA.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(A){let Q=new sA.InstrumentationNodeModuleFile(`${A}/dist/lib/commander.js`,["^1.0.0"],(C,E)=>{let Y=C.transformCommandArguments;if(!Y)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),C;let J=E?.startsWith("1.0.")?"extendWithCommands":"attachCommands";if((0,sA.isWrapped)(C?.[J]))this._unwrap(C,J);return this._wrap(C,J,this._getPatchExtendWithCommands(Y)),C},(C)=>{if((0,sA.isWrapped)(C?.extendWithCommands))this._unwrap(C,"extendWithCommands");if((0,sA.isWrapped)(C?.attachCommands))this._unwrap(C,"attachCommands")}),B=new sA.InstrumentationNodeModuleFile(`${A}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],(C)=>{let E=C?.default?.prototype;if((0,sA.isWrapped)(E?.exec))this._unwrap(E,"exec");if(this._wrap(E,"exec",this._getPatchMultiCommandsExec(!1)),(0,sA.isWrapped)(E?.execAsPipeline))this._unwrap(E,"execAsPipeline");if(this._wrap(E,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,sA.isWrapped)(E?.addCommand))this._unwrap(E,"addCommand");return this._wrap(E,"addCommand",this._getPatchMultiCommandsAddCommand()),C},(C)=>{let E=C?.default?.prototype;if((0,sA.isWrapped)(E?.exec))this._unwrap(E,"exec");if((0,sA.isWrapped)(E?.addCommand))this._unwrap(E,"addCommand")}),I=new sA.InstrumentationNodeModuleFile(`${A}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],(C)=>{let E=C?.default?.prototype;if(E?.multi){if((0,sA.isWrapped)(E?.multi))this._unwrap(E,"multi");this._wrap(E,"multi",this._getPatchRedisClientMulti())}if(E?.MULTI){if((0,sA.isWrapped)(E?.MULTI))this._unwrap(E,"MULTI");this._wrap(E,"MULTI",this._getPatchRedisClientMulti())}if((0,sA.isWrapped)(E?.sendCommand))this._unwrap(E,"sendCommand");return this._wrap(E,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(E,"connect",this._getPatchedClientConnect()),C},(C)=>{let E=C?.default?.prototype;if((0,sA.isWrapped)(E?.multi))this._unwrap(E,"multi");if((0,sA.isWrapped)(E?.MULTI))this._unwrap(E,"MULTI");if((0,sA.isWrapped)(E?.sendCommand))this._unwrap(E,"sendCommand")});return new sA.InstrumentationNodeModuleDefinition(A,["^1.0.0","^5.0.0"],(C)=>{return C},()=>{},[Q,B,I])}_getPatchExtendWithCommands(A){let Q=this;return function(I){return function(E){if(E?.BaseClass?.name!=="RedisClient")return I.apply(this,arguments);let Y=E.executor;return E.executor=function(J,F){let G=A(J,F).args;return Q._traceClientCommand(Y,this,arguments,G)},I.apply(this,arguments)}}}_getPatchMultiCommandsExec(A){let Q=this;return function(I){return function(){let E=I.apply(this,arguments);if(typeof E?.then!=="function")return Q._diag.error("non-promise result when patching exec/execAsPipeline"),E;return E.then((Y)=>{let J=this[LW];return Q._endSpansWithRedisReplies(J,Y,A),Y}).catch((Y)=>{let J=this[LW];if(!J)Q._diag.error("cannot find open spans to end for multi/pipeline");else{let F=Y.constructor.name==="MultiErrorReply"?Y.replies:Array(J.length).fill(Y);Q._endSpansWithRedisReplies(J,F,A)}return Promise.reject(Y)})}}}_getPatchMultiCommandsAddCommand(){let A=this;return function(B){return function(C){return A._traceClientCommand(B,this,arguments,C)}}}_getPatchRedisClientMulti(){return function(Q){return function(){let I=Q.apply(this,arguments);return I[TWA]=this.options,I}}}_getPatchRedisClientSendCommand(){let A=this;return function(B){return function(C){return A._traceClientCommand(B,this,arguments,C)}}}_getPatchedClientConnect(){let A=this;return function(B){return function(){let C=this.options,E=(0,qWA.getClientAttributes)(A._diag,C,A._semconvStability),Y=A.tracer.startSpan(`${l5.COMPONENT}-connect`,{kind:QC.SpanKind.CLIENT,attributes:E});return QC.context.with(QC.trace.setSpan(QC.context.active(),Y),()=>{return B.apply(this)}).then((F)=>{return Y.end(),F}).catch((F)=>{return Y.recordException(F),Y.setStatus({code:QC.SpanStatusCode.ERROR,message:F.message}),Y.end(),Promise.reject(F)})}}}_traceClientCommand(A,Q,B,I){if(QC.trace.getSpan(QC.context.active())===void 0&&this.getConfig().requireParentSpan)return A.apply(Q,B);let E=Q.options||Q[TWA],Y=I[0],J=I.slice(1),F=this.getConfig().dbStatementSerializer||N8Q.defaultDbStatementSerializer,G=(0,qWA.getClientAttributes)(this._diag,E,this._semconvStability);if(this._semconvStability&sA.SemconvStability.STABLE)G[IM.ATTR_DB_OPERATION_NAME]=Y;try{let W=F(Y,J);if(W!=null){if(this._semconvStability&sA.SemconvStability.OLD)G[j8Q.ATTR_DB_STATEMENT]=W;if(this._semconvStability&sA.SemconvStability.STABLE)G[IM.ATTR_DB_QUERY_TEXT]=W}}catch(W){this._diag.error("dbStatementSerializer throw an exception",W,{commandName:Y})}let D=this.tracer.startSpan(`${l5.COMPONENT}-${Y}`,{kind:QC.SpanKind.CLIENT,attributes:G}),Z=QC.context.with(QC.trace.setSpan(QC.context.active(),D),()=>{return A.apply(Q,B)});if(typeof Z?.then==="function")Z.then((W)=>{this._endSpanWithResponse(D,Y,J,W,void 0)},(W)=>{this._endSpanWithResponse(D,Y,J,null,W)});else{let W=Z;W[LW]=W[LW]||[],W[LW].push({span:D,commandName:Y,commandArgs:J})}return Z}_endSpansWithRedisReplies(A,Q,B=!1){if(!A)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(Q.length!==A.length)return this._diag.error("number of multi command spans does not match response from redis");let I=A.map((Y)=>Y.commandName),E=I.every((Y)=>Y===I[0])?(B?"PIPELINE ":"MULTI ")+I[0]:B?"PIPELINE":"MULTI";for(let Y=0;Y{Object.defineProperty(gWA,"__esModule",{value:!0});gWA.RedisInstrumentation=void 0;var R8Q=JA(),yWA=d5(),q8Q=HWA(),O8Q=SWA(),_WA={requireParentSpan:!1};class fWA extends R8Q.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(A={}){let Q={..._WA,...A};super(yWA.PACKAGE_NAME,yWA.PACKAGE_VERSION,Q);this.instrumentationV2_V3=new q8Q.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new O8Q.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(A={}){let Q={..._WA,...A};if(super.setConfig(Q),!this.initialized)return;this.instrumentationV2_V3.setConfig(Q),this.instrumentationV4_V5.setConfig(Q)}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(A){if(super.setTracerProvider(A),!this.initialized)return;this.instrumentationV2_V3.setTracerProvider(A),this.instrumentationV4_V5.setTracerProvider(A)}enable(){if(super.enable(),!this.initialized)return;this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable()}disable(){if(super.disable(),!this.initialized)return;this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable()}}gWA.RedisInstrumentation=fWA});var vWA=U((CM)=>{Object.defineProperty(CM,"__esModule",{value:!0});CM.RedisInstrumentation=void 0;var T8Q=xWA();Object.defineProperty(CM,"RedisInstrumentation",{enumerable:!0,get:function(){return T8Q.RedisInstrumentation}})});var sWA=U((aWA)=>{Object.defineProperty(aWA,"__esModule",{value:!0});aWA.EVENT_LISTENERS_SET=void 0;aWA.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")});var FM=U((rWA)=>{Object.defineProperty(rWA,"__esModule",{value:!0});rWA.AttributeNames=void 0;var h8Q;(function(A){A.PG_VALUES="db.postgresql.values",A.PG_PLAN="db.postgresql.plan",A.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",A.MAX_CLIENT="db.postgresql.max.client"})(h8Q=rWA.AttributeNames||(rWA.AttributeNames={}))});var GM=U((tWA)=>{Object.defineProperty(tWA,"__esModule",{value:!0});tWA.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=tWA.METRIC_DB_CLIENT_CONNECTION_COUNT=tWA.DB_SYSTEM_VALUE_POSTGRESQL=tWA.DB_CLIENT_CONNECTION_STATE_VALUE_USED=tWA.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=tWA.ATTR_NET_PEER_PORT=tWA.ATTR_NET_PEER_NAME=tWA.ATTR_DB_USER=tWA.ATTR_DB_SYSTEM=tWA.ATTR_DB_STATEMENT=tWA.ATTR_DB_NAME=tWA.ATTR_DB_CONNECTION_STRING=tWA.ATTR_DB_CLIENT_CONNECTION_STATE=tWA.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0;tWA.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name";tWA.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state";tWA.ATTR_DB_CONNECTION_STRING="db.connection_string";tWA.ATTR_DB_NAME="db.name";tWA.ATTR_DB_STATEMENT="db.statement";tWA.ATTR_DB_SYSTEM="db.system";tWA.ATTR_DB_USER="db.user";tWA.ATTR_NET_PEER_NAME="net.peer.name";tWA.ATTR_NET_PEER_PORT="net.peer.port";tWA.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle";tWA.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used";tWA.DB_SYSTEM_VALUE_POSTGRESQL="postgresql";tWA.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count";tWA.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"});var ZM=U((A8A)=>{Object.defineProperty(A8A,"__esModule",{value:!0});A8A.SpanNames=void 0;var s8Q;(function(A){A.QUERY_PREFIX="pg.query",A.CONNECT="pg.connect",A.POOL_CONNECT="pg-pool.connect"})(s8Q=A8A.SpanNames||(A8A.SpanNames={}))});var G8A=U((J8A)=>{Object.defineProperty(J8A,"__esModule",{value:!0});J8A.sanitizedErrorMessage=J8A.isObjectWithTextString=J8A.getErrorMessage=J8A.patchClientConnectCallback=J8A.patchCallbackPGPool=J8A.updateCounter=J8A.getPoolName=J8A.patchCallback=J8A.handleExecutionResult=J8A.handleConfigQuery=J8A.shouldSkipInstrumentation=J8A.getSemanticAttributesFromPoolConnection=J8A.getSemanticAttributesFromConnection=J8A.getConnectionString=J8A.parseAndMaskConnectionString=J8A.parseNormalizedOperationName=J8A.getQuerySpanName=void 0;var SY=P(),i5=FM(),BC=HA(),UQ=GM(),DF=JA(),Q8A=ZM();function B8A(A,Q){if(!Q)return Q8A.SpanNames.QUERY_PREFIX;let B=typeof Q.name==="string"&&Q.name?Q.name:I8A(Q.text);return`${Q8A.SpanNames.QUERY_PREFIX}:${B}${A?` ${A}`:""}`}J8A.getQuerySpanName=B8A;function I8A(A){let Q=A.trim(),B=Q.indexOf(" "),I=B===-1?Q:Q.slice(0,B);return I=I.toUpperCase(),I.endsWith(";")?I.slice(0,-1):I}J8A.parseNormalizedOperationName=I8A;function C8A(A){try{let Q=new URL(A);return Q.username="",Q.password="",Q.toString()}catch(Q){return"postgresql://localhost:5432/"}}J8A.parseAndMaskConnectionString=C8A;function WM(A){if("connectionString"in A&&A.connectionString)return C8A(A.connectionString);let Q=A.host||"localhost",B=A.port||5432,I=A.database||"";return`postgresql://${Q}:${B}/${I}`}J8A.getConnectionString=WM;function n5(A){if(Number.isInteger(A))return A;return}function E8A(A,Q){let B={};if(Q&DF.SemconvStability.OLD)B={...B,[UQ.ATTR_DB_SYSTEM]:UQ.DB_SYSTEM_VALUE_POSTGRESQL,[UQ.ATTR_DB_NAME]:A.database,[UQ.ATTR_DB_CONNECTION_STRING]:WM(A),[UQ.ATTR_DB_USER]:A.user,[UQ.ATTR_NET_PEER_NAME]:A.host,[UQ.ATTR_NET_PEER_PORT]:n5(A.port)};if(Q&DF.SemconvStability.STABLE)B={...B,[BC.ATTR_DB_SYSTEM_NAME]:BC.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[BC.ATTR_DB_NAMESPACE]:A.namespace,[BC.ATTR_SERVER_ADDRESS]:A.host,[BC.ATTR_SERVER_PORT]:n5(A.port)};return B}J8A.getSemanticAttributesFromConnection=E8A;function r8Q(A,Q){let B;try{B=A.connectionString?new URL(A.connectionString):void 0}catch(C){B=void 0}let I={[i5.AttributeNames.IDLE_TIMEOUT_MILLIS]:A.idleTimeoutMillis,[i5.AttributeNames.MAX_CLIENT]:A.maxClient};if(Q&DF.SemconvStability.OLD)I={...I,[UQ.ATTR_DB_SYSTEM]:UQ.DB_SYSTEM_VALUE_POSTGRESQL,[UQ.ATTR_DB_NAME]:B?.pathname.slice(1)??A.database,[UQ.ATTR_DB_CONNECTION_STRING]:WM(A),[UQ.ATTR_NET_PEER_NAME]:B?.hostname??A.host,[UQ.ATTR_NET_PEER_PORT]:Number(B?.port)||n5(A.port),[UQ.ATTR_DB_USER]:B?.username??A.user};if(Q&DF.SemconvStability.STABLE)I={...I,[BC.ATTR_DB_SYSTEM_NAME]:BC.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[BC.ATTR_DB_NAMESPACE]:A.namespace,[BC.ATTR_SERVER_ADDRESS]:B?.hostname??A.host,[BC.ATTR_SERVER_PORT]:Number(B?.port)||n5(A.port)};return I}J8A.getSemanticAttributesFromPoolConnection=r8Q;function t8Q(A){return A.requireParentSpan===!0&&SY.trace.getSpan(SY.context.active())===void 0}J8A.shouldSkipInstrumentation=t8Q;function e8Q(A,Q,B,I){let{connectionParameters:C}=this,E=C.database,Y=B8A(E,I),J=A.startSpan(Y,{kind:SY.SpanKind.CLIENT,attributes:E8A(C,B)});if(!I)return J;if(I.text){if(B&DF.SemconvStability.OLD)J.setAttribute(UQ.ATTR_DB_STATEMENT,I.text);if(B&DF.SemconvStability.STABLE)J.setAttribute(BC.ATTR_DB_QUERY_TEXT,I.text)}if(Q.enhancedDatabaseReporting&&Array.isArray(I.values))try{let F=I.values.map((G)=>{if(G==null)return"null";else if(G instanceof Buffer)return G.toString();else if(typeof G==="object"){if(typeof G.toPostgres==="function")return G.toPostgres();return JSON.stringify(G)}else return G.toString()});J.setAttribute(i5.AttributeNames.PG_VALUES,F)}catch(F){SY.diag.error("failed to stringify ",I.values,F)}if(typeof I.name==="string")J.setAttribute(i5.AttributeNames.PG_PLAN,I.name);return J}J8A.handleConfigQuery=e8Q;function Y8A(A,Q,B){if(typeof A.responseHook==="function")(0,DF.safeExecuteInTheMiddle)(()=>{A.responseHook(Q,{data:B})},(I)=>{if(I)SY.diag.error("Error running response hook",I)},!0)}J8A.handleExecutionResult=Y8A;function AXQ(A,Q,B,I,C){return function(Y,J){if(Y){if(Object.prototype.hasOwnProperty.call(Y,"code"))I[BC.ATTR_ERROR_TYPE]=Y.code;if(Y instanceof Error)Q.recordException(a5(Y));Q.setStatus({code:SY.SpanStatusCode.ERROR,message:Y.message})}else Y8A(A,Q,J);C(),Q.end(),B.call(this,Y,J)}}J8A.patchCallback=AXQ;function QXQ(A){let Q="";return Q+=(A?.host?`${A.host}`:"unknown_host")+":",Q+=(A?.port?`${A.port}`:"unknown_port")+"/",Q+=A?.database?`${A.database}`:"unknown_database",Q.trim()}J8A.getPoolName=QXQ;function BXQ(A,Q,B,I,C){let{totalCount:E,waitingCount:Y,idleCount:J}=Q,F=E-J;return B.add(F-C.used,{[UQ.ATTR_DB_CLIENT_CONNECTION_STATE]:UQ.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[UQ.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:A}),B.add(J-C.idle,{[UQ.ATTR_DB_CLIENT_CONNECTION_STATE]:UQ.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[UQ.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:A}),I.add(Y-C.pending,{[UQ.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:A}),{used:F,idle:J,pending:Y}}J8A.updateCounter=BXQ;function IXQ(A,Q){return function(I,C,E){if(I){if(I instanceof Error)A.recordException(a5(I));A.setStatus({code:SY.SpanStatusCode.ERROR,message:I.message})}A.end(),Q.call(this,I,C,E)}}J8A.patchCallbackPGPool=IXQ;function CXQ(A,Q){return function(I){if(I){if(I instanceof Error)A.recordException(a5(I));A.setStatus({code:SY.SpanStatusCode.ERROR,message:I.message})}A.end(),Q.apply(this,arguments)}}J8A.patchClientConnectCallback=CXQ;function EXQ(A){return typeof A==="object"&&A!==null&&"message"in A?String(A.message):void 0}J8A.getErrorMessage=EXQ;function YXQ(A){return typeof A==="object"&&typeof A?.text==="string"}J8A.isObjectWithTextString=YXQ;function a5(A){let Q=A?.name??"PostgreSQLError",B=A?.code??"UNKNOWN";return`PostgreSQL error of type '${Q}' occurred (code: ${B})`}J8A.sanitizedErrorMessage=a5});var W8A=U((D8A)=>{Object.defineProperty(D8A,"__esModule",{value:!0});D8A.PACKAGE_NAME=D8A.PACKAGE_VERSION=void 0;D8A.PACKAGE_VERSION="0.65.0";D8A.PACKAGE_NAME="@opentelemetry/instrumentation-pg"});var H8A=U(($8A)=>{Object.defineProperty($8A,"__esModule",{value:!0});$8A.PgInstrumentation=void 0;var _B=JA(),mA=P(),X8A=sWA(),GQ=G8A(),U8A=a2(),w8A=W8A(),K8A=ZM(),o5=hA(),gC=HA(),NW=GM();function hD(A){return A[Symbol.toStringTag]==="Module"?A.default:A}class V8A extends _B.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(A={}){super(w8A.PACKAGE_NAME,w8A.PACKAGE_VERSION,A);this._semconvStability=(0,_B.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(gC.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:mA.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[0.001,0.005,0.01,0.05,0.1,0.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(NW.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(NW.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let A=[">=8.0.3 <9"],Q=[">=2.0.0 <4"],B=new _B.InstrumentationNodeModuleFile("pg/lib/native/client.js",A,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),I=new _B.InstrumentationNodeModuleFile("pg/lib/client.js",A,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),C=new _B.InstrumentationNodeModuleDefinition("pg",A,(Y)=>{let J=hD(Y);return this._patchPgClient(J.Client),Y},(Y)=>{let J=hD(Y);return this._unpatchPgClient(J.Client),Y},[I,B]),E=new _B.InstrumentationNodeModuleDefinition("pg-pool",Q,(Y)=>{let J=hD(Y);if((0,_B.isWrapped)(J.prototype.connect))this._unwrap(J.prototype,"connect");return this._wrap(J.prototype,"connect",this._getPoolConnectPatch()),J},(Y)=>{let J=hD(Y);if((0,_B.isWrapped)(J.prototype.connect))this._unwrap(J.prototype,"connect")});return[C,E]}_patchPgClient(A){if(!A)return;let Q=hD(A);if((0,_B.isWrapped)(Q.prototype.query))this._unwrap(Q.prototype,"query");if((0,_B.isWrapped)(Q.prototype.connect))this._unwrap(Q.prototype,"connect");return this._wrap(Q.prototype,"query",this._getClientQueryPatch()),this._wrap(Q.prototype,"connect",this._getClientConnectPatch()),A}_unpatchPgClient(A){let Q=hD(A);if((0,_B.isWrapped)(Q.prototype.query))this._unwrap(Q.prototype,"query");if((0,_B.isWrapped)(Q.prototype.connect))this._unwrap(Q.prototype,"connect");return A}_getClientConnectPatch(){let A=this;return(Q)=>{return function(I){let C=A.getConfig();if(GQ.shouldSkipInstrumentation(C)||C.ignoreConnectSpans)return Q.call(this,I);let E=A.tracer.startSpan(K8A.SpanNames.CONNECT,{kind:mA.SpanKind.CLIENT,attributes:GQ.getSemanticAttributesFromConnection(this,A._semconvStability)});if(I){let J=mA.trace.getSpan(mA.context.active());if(I=GQ.patchClientConnectCallback(E,I),J)I=mA.context.bind(mA.context.active(),I)}let Y=mA.context.with(mA.trace.setSpan(mA.context.active(),E),()=>{return Q.call(this,I)});return z8A(E,Y)}}}recordOperationDuration(A,Q){let B={},I=[gC.ATTR_DB_NAMESPACE,gC.ATTR_ERROR_TYPE,gC.ATTR_SERVER_PORT,gC.ATTR_SERVER_ADDRESS,gC.ATTR_DB_OPERATION_NAME];if(this._semconvStability&_B.SemconvStability.OLD)I.push(NW.ATTR_DB_SYSTEM);if(this._semconvStability&_B.SemconvStability.STABLE)I.push(gC.ATTR_DB_SYSTEM_NAME);I.forEach((E)=>{if(E in A)B[E]=A[E]});let C=(0,o5.hrTimeToMilliseconds)((0,o5.hrTimeDuration)(Q,(0,o5.hrTime)()))/1000;this._operationDuration.record(C,B)}_getClientQueryPatch(){let A=this;return(Q)=>{return this._diag.debug("Patching pg.Client.prototype.query"),function(...I){if(GQ.shouldSkipInstrumentation(A.getConfig()))return Q.apply(this,I);let C=(0,o5.hrTime)(),E=I[0],Y=typeof E==="string",J=GQ.isObjectWithTextString(E),F=Y?{text:E,values:Array.isArray(I[1])?I[1]:void 0}:J?{...E,name:E.name,text:E.text,values:E.values??(Array.isArray(I[1])?I[1]:void 0)}:void 0,G={[NW.ATTR_DB_SYSTEM]:NW.DB_SYSTEM_VALUE_POSTGRESQL,[gC.ATTR_DB_NAMESPACE]:this.database,[gC.ATTR_SERVER_PORT]:this.connectionParameters.port,[gC.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};if(F?.text)G[gC.ATTR_DB_OPERATION_NAME]=GQ.parseNormalizedOperationName(F?.text);let D=()=>{A.recordOperationDuration(G,C)},Z=A.getConfig(),W=GQ.handleConfigQuery.call(this,A.tracer,Z,A._semconvStability,F);if(Z.addSqlCommenterCommentToQueries){if(Y)I[0]=(0,U8A.addSqlCommenterComment)(W,E);else if(J&&!("name"in E))I[0]={...E,text:(0,U8A.addSqlCommenterComment)(W,E.text)}}if(I.length>0){let K=mA.trace.getSpan(mA.context.active());if(typeof I[I.length-1]==="function"){if(I[I.length-1]=GQ.patchCallback(Z,W,I[I.length-1],G,D),K)I[I.length-1]=mA.context.bind(mA.context.active(),I[I.length-1])}else if(typeof F?.callback==="function"){let z=GQ.patchCallback(A.getConfig(),W,F.callback,G,D);if(K)z=mA.context.bind(mA.context.active(),z);I[0].callback=z}}let{requestHook:X}=Z;if(typeof X==="function"&&F)(0,_B.safeExecuteInTheMiddle)(()=>{let{database:K,host:z,port:$,user:N}=this.connectionParameters;X(W,{connection:{database:K,host:z,port:$,user:N},query:{text:F.text,values:F.values,name:F.name}})},(K)=>{if(K)A._diag.error("Error running query hook",K)},!0);let w;try{w=Q.apply(this,I)}catch(K){if(K instanceof Error)W.recordException(GQ.sanitizedErrorMessage(K));throw W.setStatus({code:mA.SpanStatusCode.ERROR,message:GQ.getErrorMessage(K)}),W.end(),K}if(w instanceof Promise)return w.then((K)=>{return new Promise((z)=>{GQ.handleExecutionResult(A.getConfig(),W,K),D(),W.end(),z(K)})}).catch((K)=>{return new Promise((z,$)=>{if(K instanceof Error)W.recordException(GQ.sanitizedErrorMessage(K));W.setStatus({code:mA.SpanStatusCode.ERROR,message:K.message}),D(),W.end(),$(K)})});return w}}}_setPoolConnectEventListeners(A){if(A[X8A.EVENT_LISTENERS_SET])return;let Q=GQ.getPoolName(A.options);A.on("connect",()=>{this._connectionsCounter=GQ.updateCounter(Q,A,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),A.on("acquire",()=>{this._connectionsCounter=GQ.updateCounter(Q,A,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),A.on("remove",()=>{this._connectionsCounter=GQ.updateCounter(Q,A,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),A.on("release",()=>{this._connectionsCounter=GQ.updateCounter(Q,A,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),A[X8A.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let A=this;return(Q)=>{return function(I){let C=A.getConfig();if(GQ.shouldSkipInstrumentation(C))return Q.call(this,I);if(A._setPoolConnectEventListeners(this),C.ignoreConnectSpans)return Q.call(this,I);let E=A.tracer.startSpan(K8A.SpanNames.POOL_CONNECT,{kind:mA.SpanKind.CLIENT,attributes:GQ.getSemanticAttributesFromPoolConnection(this.options,A._semconvStability)});if(I){let J=mA.trace.getSpan(mA.context.active());if(I=GQ.patchCallbackPGPool(E,I),J)I=mA.context.bind(mA.context.active(),I)}let Y=mA.context.with(mA.trace.setSpan(mA.context.active(),E),()=>{return Q.call(this,I)});return z8A(E,Y)}}}}$8A.PgInstrumentation=V8A;function z8A(A,Q){if(!(Q instanceof Promise))return Q;let B=Q;return mA.context.bind(mA.context.active(),B.then((I)=>{return A.end(),I}).catch((I)=>{if(I instanceof Error)A.recordException(GQ.sanitizedErrorMessage(I));return A.setStatus({code:mA.SpanStatusCode.ERROR,message:GQ.getErrorMessage(I)}),A.end(),Promise.reject(I)}))}});var M8A=U((s5)=>{Object.defineProperty(s5,"__esModule",{value:!0});s5.AttributeNames=s5.PgInstrumentation=void 0;var jXQ=H8A();Object.defineProperty(s5,"PgInstrumentation",{enumerable:!0,get:function(){return jXQ.PgInstrumentation}});var RXQ=FM();Object.defineProperty(s5,"AttributeNames",{enumerable:!0,get:function(){return RXQ.AttributeNames}})});var y8A=U((S8A)=>{Object.defineProperty(S8A,"__esModule",{value:!0});S8A.SeverityNumber=void 0;var SXQ;(function(A){A[A.UNSPECIFIED=0]="UNSPECIFIED",A[A.TRACE=1]="TRACE",A[A.TRACE2=2]="TRACE2",A[A.TRACE3=3]="TRACE3",A[A.TRACE4=4]="TRACE4",A[A.DEBUG=5]="DEBUG",A[A.DEBUG2=6]="DEBUG2",A[A.DEBUG3=7]="DEBUG3",A[A.DEBUG4=8]="DEBUG4",A[A.INFO=9]="INFO",A[A.INFO2=10]="INFO2",A[A.INFO3=11]="INFO3",A[A.INFO4=12]="INFO4",A[A.WARN=13]="WARN",A[A.WARN2=14]="WARN2",A[A.WARN3=15]="WARN3",A[A.WARN4=16]="WARN4",A[A.ERROR=17]="ERROR",A[A.ERROR2=18]="ERROR2",A[A.ERROR3=19]="ERROR3",A[A.ERROR4=20]="ERROR4",A[A.FATAL=21]="FATAL",A[A.FATAL2=22]="FATAL2",A[A.FATAL3=23]="FATAL3",A[A.FATAL4=24]="FATAL4"})(SXQ=S8A.SeverityNumber||(S8A.SeverityNumber={}))});var r5=U((_8A)=>{Object.defineProperty(_8A,"__esModule",{value:!0});_8A.NOOP_LOGGER=_8A.NoopLogger=void 0;class wM{emit(A){}}_8A.NoopLogger=wM;_8A.NOOP_LOGGER=new wM});var t5=U((g8A)=>{Object.defineProperty(g8A,"__esModule",{value:!0});g8A.NOOP_LOGGER_PROVIDER=g8A.NoopLoggerProvider=void 0;var _XQ=r5();class KM{getLogger(A,Q,B){return new _XQ.NoopLogger}}g8A.NoopLoggerProvider=KM;g8A.NOOP_LOGGER_PROVIDER=new KM});var zM=U((v8A)=>{Object.defineProperty(v8A,"__esModule",{value:!0});v8A.ProxyLogger=void 0;var gXQ=r5();class x8A{constructor(A,Q,B,I){this._provider=A,this.name=Q,this.version=B,this.options=I}emit(A){this._getLogger().emit(A)}_getLogger(){if(this._delegate)return this._delegate;let A=this._provider._getDelegateLogger(this.name,this.version,this.options);if(!A)return gXQ.NOOP_LOGGER;return this._delegate=A,this._delegate}}v8A.ProxyLogger=x8A});var VM=U((d8A)=>{Object.defineProperty(d8A,"__esModule",{value:!0});d8A.ProxyLoggerProvider=void 0;var hXQ=t5(),xXQ=zM();class m8A{getLogger(A,Q,B){var I;return(I=this._getDelegateLogger(A,Q,B))!==null&&I!==void 0?I:new xXQ.ProxyLogger(this,A,Q,B)}_getDelegate(){var A;return(A=this._delegate)!==null&&A!==void 0?A:hXQ.NOOP_LOGGER_PROVIDER}_setDelegate(A){this._delegate=A}_getDelegateLogger(A,Q,B){var I;return(I=this._delegate)===null||I===void 0?void 0:I.getLogger(A,Q,B)}}d8A.ProxyLoggerProvider=m8A});var p8A=U((u8A)=>{Object.defineProperty(u8A,"__esModule",{value:!0});u8A._globalThis=void 0;u8A._globalThis=typeof globalThis==="object"?globalThis:global});var i8A=U(($M)=>{Object.defineProperty($M,"__esModule",{value:!0});$M._globalThis=void 0;var vXQ=p8A();Object.defineProperty($M,"_globalThis",{enumerable:!0,get:function(){return vXQ._globalThis}})});var n8A=U((LM)=>{Object.defineProperty(LM,"__esModule",{value:!0});LM._globalThis=void 0;var mXQ=i8A();Object.defineProperty(LM,"_globalThis",{enumerable:!0,get:function(){return mXQ._globalThis}})});var s8A=U((a8A)=>{Object.defineProperty(a8A,"__esModule",{value:!0});a8A.API_BACKWARDS_COMPATIBILITY_VERSION=a8A.makeGetter=a8A._global=a8A.GLOBAL_LOGS_API_KEY=void 0;var cXQ=n8A();a8A.GLOBAL_LOGS_API_KEY=Symbol.for("io.opentelemetry.js.api.logs");a8A._global=cXQ._globalThis;function uXQ(A,Q,B){return(I)=>I===A?Q:B}a8A.makeGetter=uXQ;a8A.API_BACKWARDS_COMPATIBILITY_VERSION=1});var AXA=U((t8A)=>{Object.defineProperty(t8A,"__esModule",{value:!0});t8A.LogsAPI=void 0;var IC=s8A(),nXQ=t5(),r8A=VM();class HM{constructor(){this._proxyLoggerProvider=new r8A.ProxyLoggerProvider}static getInstance(){if(!this._instance)this._instance=new HM;return this._instance}setGlobalLoggerProvider(A){if(IC._global[IC.GLOBAL_LOGS_API_KEY])return this.getLoggerProvider();return IC._global[IC.GLOBAL_LOGS_API_KEY]=(0,IC.makeGetter)(IC.API_BACKWARDS_COMPATIBILITY_VERSION,A,nXQ.NOOP_LOGGER_PROVIDER),this._proxyLoggerProvider._setDelegate(A),A}getLoggerProvider(){var A,Q;return(Q=(A=IC._global[IC.GLOBAL_LOGS_API_KEY])===null||A===void 0?void 0:A.call(IC._global,IC.API_BACKWARDS_COMPATIBILITY_VERSION))!==null&&Q!==void 0?Q:this._proxyLoggerProvider}getLogger(A,Q,B){return this.getLoggerProvider().getLogger(A,Q,B)}disable(){delete IC._global[IC.GLOBAL_LOGS_API_KEY],this._proxyLoggerProvider=new r8A.ProxyLoggerProvider}}t8A.LogsAPI=HM});var MM=U((G0)=>{Object.defineProperty(G0,"__esModule",{value:!0});G0.logs=G0.ProxyLoggerProvider=G0.ProxyLogger=G0.NoopLoggerProvider=G0.NOOP_LOGGER_PROVIDER=G0.NoopLogger=G0.NOOP_LOGGER=G0.SeverityNumber=void 0;var aXQ=y8A();Object.defineProperty(G0,"SeverityNumber",{enumerable:!0,get:function(){return aXQ.SeverityNumber}});var QXA=r5();Object.defineProperty(G0,"NOOP_LOGGER",{enumerable:!0,get:function(){return QXA.NOOP_LOGGER}});Object.defineProperty(G0,"NoopLogger",{enumerable:!0,get:function(){return QXA.NoopLogger}});var BXA=t5();Object.defineProperty(G0,"NOOP_LOGGER_PROVIDER",{enumerable:!0,get:function(){return BXA.NOOP_LOGGER_PROVIDER}});Object.defineProperty(G0,"NoopLoggerProvider",{enumerable:!0,get:function(){return BXA.NoopLoggerProvider}});var oXQ=zM();Object.defineProperty(G0,"ProxyLogger",{enumerable:!0,get:function(){return oXQ.ProxyLogger}});var sXQ=VM();Object.defineProperty(G0,"ProxyLoggerProvider",{enumerable:!0,get:function(){return sXQ.ProxyLoggerProvider}});var rXQ=AXA();G0.logs=rXQ.LogsAPI.getInstance()});var YXA=U((CXA)=>{Object.defineProperty(CXA,"__esModule",{value:!0});CXA.disableInstrumentations=CXA.enableInstrumentations=void 0;function tXQ(A,Q,B,I){for(let C=0,E=A.length;CQ.disable())}CXA.disableInstrumentations=eXQ});var ZXA=U((GXA)=>{Object.defineProperty(GXA,"__esModule",{value:!0});GXA.registerInstrumentations=void 0;var JXA=P(),QUQ=MM(),FXA=YXA();function BUQ(A){let Q=A.tracerProvider||JXA.trace.getTracerProvider(),B=A.meterProvider||JXA.metrics.getMeterProvider(),I=A.loggerProvider||QUQ.logs.getLoggerProvider(),C=A.instrumentations?.flat()??[];return(0,FXA.enableInstrumentations)(C,Q,B,I),()=>{(0,FXA.disableInstrumentations)(C)}}GXA.registerInstrumentations=BUQ});var MXA=U((LXA)=>{Object.defineProperty(LXA,"__esModule",{value:!0});LXA.satisfies=void 0;var qM=P(),KXA=/^(?:v)?(?(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*))(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,IUQ=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|0|[1-9]\d*))?)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,CUQ={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function EUQ(A,Q,B){if(!YUQ(A))return qM.diag.error(`Invalid version: ${A}`),!1;if(!Q)return!0;Q=Q.replace(/([<>=~^]+)\s+/g,"$1");let I=DUQ(A);if(!I)return!1;let C=[],E=zXA(I,Q,C,B);if(E&&!B?.includePrerelease)return FUQ(I,C);return E}LXA.satisfies=EUQ;function YUQ(A){return typeof A==="string"&&KXA.test(A)}function zXA(A,Q,B,I){if(Q.includes("||")){let C=Q.trim().split("||");for(let E of C)if(NM(A,E,B,I))return!0;return!1}else if(Q.includes(" - "))Q=SUQ(Q,I);else if(Q.includes(" ")){let C=Q.trim().replace(/\s{2,}/g," ").split(" ");for(let E of C)if(!NM(A,E,B,I))return!1;return!0}return NM(A,Q,B,I)}function NM(A,Q,B,I){if(Q=GUQ(Q,I),Q.includes(" "))return zXA(A,Q,B,I);else{let C=ZUQ(Q);return B.push(C),JUQ(A,C)}}function JUQ(A,Q){if(Q.invalid)return!1;if(!Q.version||RM(Q.version))return!0;let B=XXA(A.versionSegments||[],Q.versionSegments||[]);if(B===0){let I=A.prereleaseSegments||[],C=Q.prereleaseSegments||[];if(!I.length&&!C.length)B=0;else if(!I.length&&C.length)B=1;else if(I.length&&!C.length)B=-1;else B=XXA(I,C)}return CUQ[Q.op]?.includes(B)}function FUQ(A,Q){if(A.prerelease)return Q.some((B)=>B.prerelease&&B.version===A.version);return!0}function GUQ(A,Q){return A=A.trim(),A=PUQ(A,Q),A=TUQ(A),A=kUQ(A,Q),A=A.trim(),A}function fB(A){return!A||A.toLowerCase()==="x"||A==="*"}function DUQ(A){let Q=A.match(KXA);if(!Q){qM.diag.error(`Invalid version: ${A}`);return}let B=Q.groups.version,I=Q.groups.prerelease,C=Q.groups.build,E=B.split("."),Y=I?.split(".");return{op:void 0,version:B,versionSegments:E,versionSegmentCount:E.length,prerelease:I,prereleaseSegments:Y,prereleaseSegmentCount:Y?Y.length:0,build:C}}function ZUQ(A){if(!A)return{};let Q=A.match(IUQ);if(!Q)return qM.diag.error(`Invalid range: ${A}`),{invalid:!0};let B=Q.groups.op,I=Q.groups.version,C=Q.groups.prerelease,E=Q.groups.build,Y=I.split("."),J=C?.split(".");if(B==="==")B="=";return{op:B||"=",version:I,versionSegments:Y,versionSegmentCount:Y.length,prerelease:C,prereleaseSegments:J,prereleaseSegmentCount:J?J.length:0,build:E}}function RM(A){return A==="*"||A==="x"||A==="X"}function WXA(A){let Q=parseInt(A,10);return isNaN(Q)?A:Q}function WUQ(A,Q){if(typeof A===typeof Q)if(typeof A==="number")return[A,Q];else if(typeof A==="string")return[A,Q];else throw Error("Version segments can only be strings or numbers");else return[String(A),String(Q)]}function XUQ(A,Q){if(RM(A)||RM(Q))return 0;let[B,I]=WUQ(WXA(A),WXA(Q));if(B>I)return 1;else if(B)?=?)",UXA=`(?:${$XA}|${UUQ})`,KUQ=`(?:-(${UXA}(?:\\.${UXA})*))`,wXA=`${VXA}+`,zUQ=`(?:\\+(${wXA}(?:\\.${wXA})*))`,jM=`${$XA}|x|X|\\*`,jW=`[v=\\s]*(${jM})(?:\\.(${jM})(?:\\.(${jM})(?:${KUQ})?${zUQ}?)?)?`,VUQ=`^${wUQ}\\s*${jW}$`,$UQ=new RegExp(VUQ),LUQ=`^\\s*(${jW})\\s+-\\s+(${jW})\\s*$`,HUQ=new RegExp(LUQ),MUQ="(?:~>?)",NUQ=`^${MUQ}${jW}$`,jUQ=new RegExp(NUQ),RUQ="(?:\\^)",qUQ=`^${RUQ}${jW}$`,OUQ=new RegExp(qUQ);function TUQ(A){let Q=jUQ;return A.replace(Q,(B,I,C,E,Y)=>{let J;if(fB(I))J="";else if(fB(C))J=`>=${I}.0.0 <${+I+1}.0.0-0`;else if(fB(E))J=`>=${I}.${C}.0 <${I}.${+C+1}.0-0`;else if(Y)J=`>=${I}.${C}.${E}-${Y} <${I}.${+C+1}.0-0`;else J=`>=${I}.${C}.${E} <${I}.${+C+1}.0-0`;return J})}function PUQ(A,Q){let B=OUQ,I=Q?.includePrerelease?"-0":"";return A.replace(B,(C,E,Y,J,F)=>{let G;if(fB(E))G="";else if(fB(Y))G=`>=${E}.0.0${I} <${+E+1}.0.0-0`;else if(fB(J))if(E==="0")G=`>=${E}.${Y}.0${I} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.0${I} <${+E+1}.0.0-0`;else if(F)if(E==="0")if(Y==="0")G=`>=${E}.${Y}.${J}-${F} <${E}.${Y}.${+J+1}-0`;else G=`>=${E}.${Y}.${J}-${F} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.${J}-${F} <${+E+1}.0.0-0`;else if(E==="0")if(Y==="0")G=`>=${E}.${Y}.${J}${I} <${E}.${Y}.${+J+1}-0`;else G=`>=${E}.${Y}.${J}${I} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.${J} <${+E+1}.0.0-0`;return G})}function kUQ(A,Q){let B=$UQ;return A.replace(B,(I,C,E,Y,J,F)=>{let G=fB(E),D=G||fB(Y),Z=D||fB(J),W=Z;if(C==="="&&W)C="";if(F=Q?.includePrerelease?"-0":"",G)if(C===">"||C==="<")I="<0.0.0-0";else I="*";else if(C&&W){if(D)Y=0;if(J=0,C===">")if(C=">=",D)E=+E+1,Y=0,J=0;else Y=+Y+1,J=0;else if(C==="<=")if(C="<",D)E=+E+1;else Y=+Y+1;if(C==="<")F="-0";I=`${C+E}.${Y}.${J}${F}`}else if(D)I=`>=${E}.0.0${F} <${+E+1}.0.0-0`;else if(Z)I=`>=${E}.${Y}.0${F} <${E}.${+Y+1}.0-0`;return I})}function SUQ(A,Q){let B=HUQ;return A.replace(B,(I,C,E,Y,J,F,G,D,Z,W,X,w)=>{if(fB(E))C="";else if(fB(Y))C=`>=${E}.0.0${Q?.includePrerelease?"-0":""}`;else if(fB(J))C=`>=${E}.${Y}.0${Q?.includePrerelease?"-0":""}`;else if(F)C=`>=${C}`;else C=`>=${C}${Q?.includePrerelease?"-0":""}`;if(fB(Z))D="";else if(fB(W))D=`<${+Z+1}.0.0-0`;else if(fB(X))D=`<${Z}.${+W+1}.0-0`;else if(w)D=`<=${Z}.${W}.${X}-${w}`;else if(Q?.includePrerelease)D=`<${Z}.${W}.${+X+1}-0`;else D=`<=${D}`;return`${C} ${D}`.trim()})}});var kM=U((NXA)=>{Object.defineProperty(NXA,"__esModule",{value:!0});NXA.massUnwrap=NXA.unwrap=NXA.massWrap=NXA.wrap=void 0;var gB=console.error.bind(console);function RW(A,Q,B){let I=!!A[Q]&&Object.prototype.propertyIsEnumerable.call(A,Q);Object.defineProperty(A,Q,{configurable:!0,enumerable:I,writable:!0,value:B})}var yUQ=(A,Q,B)=>{if(!A||!A[Q]){gB("no original function "+String(Q)+" to wrap");return}if(!B){gB("no wrapper function"),gB(Error().stack);return}let I=A[Q];if(typeof I!=="function"||typeof B!=="function"){gB("original object and wrapper must be functions");return}let C=B(I,Q);return RW(C,"__original",I),RW(C,"__unwrap",()=>{if(A[Q]===C)RW(A,Q,I)}),RW(C,"__wrapped",!0),RW(A,Q,C),C};NXA.wrap=yUQ;var _UQ=(A,Q,B)=>{if(!A){gB("must provide one or more modules to patch"),gB(Error().stack);return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){gB("must provide one or more functions to wrap on modules");return}A.forEach((I)=>{Q.forEach((C)=>{NXA.wrap(I,C,B)})})};NXA.massWrap=_UQ;var fUQ=(A,Q)=>{if(!A||!A[Q]){gB("no function to unwrap."),gB(Error().stack);return}let B=A[Q];if(!B.__unwrap)gB("no original to unwrap to -- has "+String(Q)+" already been unwrapped?");else{B.__unwrap();return}};NXA.unwrap=fUQ;var gUQ=(A,Q)=>{if(!A){gB("must provide one or more modules to patch"),gB(Error().stack);return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){gB("must provide one or more functions to unwrap on modules");return}A.forEach((B)=>{Q.forEach((I)=>{NXA.unwrap(B,I)})})};NXA.massUnwrap=gUQ;function qW(A){if(A&&A.logger)if(typeof A.logger!=="function")gB("new logger isn't a function, not replacing");else gB=A.logger}NXA.default=qW;qW.wrap=NXA.wrap;qW.massWrap=NXA.massWrap;qW.unwrap=NXA.unwrap;qW.massUnwrap=NXA.massUnwrap});var TXA=U((qXA)=>{Object.defineProperty(qXA,"__esModule",{value:!0});qXA.InstrumentationAbstract=void 0;var SM=P(),xUQ=MM(),e5=kM();class RXA{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(A,Q,B){this.instrumentationName=A,this.instrumentationVersion=Q,this.setConfig(B),this._diag=SM.diag.createComponentLogger({namespace:A}),this._tracer=SM.trace.getTracer(A,Q),this._meter=SM.metrics.getMeter(A,Q),this._logger=xUQ.logs.getLogger(A,Q),this._updateMetricInstruments()}_wrap=e5.wrap;_unwrap=e5.unwrap;_massWrap=e5.massWrap;_massUnwrap=e5.massUnwrap;get meter(){return this._meter}setMeterProvider(A){this._meter=A.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(A){this._logger=A.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let A=this.init()??[];if(!Array.isArray(A))return[A];return A}_updateMetricInstruments(){return}getConfig(){return this._config}setConfig(A){this._config={enabled:!0,...A}}setTracerProvider(A){this._tracer=A.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(A,Q,B,I){if(!A)return;try{A(B,I)}catch(C){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:Q},C)}}}qXA.InstrumentationAbstract=RXA});var yXA=U((kXA)=>{Object.defineProperty(kXA,"__esModule",{value:!0});kXA.ModuleNameTrie=kXA.ModuleNameSeparator=void 0;kXA.ModuleNameSeparator="/";class yM{hooks=[];children=new Map}class PXA{_trie=new yM;_counter=0;insert(A){let Q=this._trie;for(let B of A.moduleName.split(kXA.ModuleNameSeparator)){let I=Q.children.get(B);if(!I)I=new yM,Q.children.set(B,I);Q=I}Q.hooks.push({hook:A,insertedId:this._counter++})}search(A,{maintainInsertionOrder:Q,fullOnly:B}={}){let I=this._trie,C=[],E=!0;for(let Y of A.split(kXA.ModuleNameSeparator)){let J=I.children.get(Y);if(!J){E=!1;break}if(!B)C.push(...J.hooks);I=J}if(B&&E)C.push(...I.hooks);if(C.length===0)return[];if(C.length===1)return[C[0].hook];if(Q)C.sort((Y,J)=>Y.insertedId-J.insertedId);return C.map(({hook:Y})=>Y)}}kXA.ModuleNameTrie=PXA});var hXA=U((fXA)=>{Object.defineProperty(fXA,"__esModule",{value:!0});fXA.RequireInTheMiddleSingleton=void 0;var vUQ=NJ(),_XA=M("path"),fM=yXA(),bUQ=["afterEach","after","beforeEach","before","describe","it"].every((A)=>{return typeof global[A]==="function"});class Aw{_moduleNameTrie=new fM.ModuleNameTrie;static _instance;constructor(){this._initialize()}_initialize(){new vUQ.Hook(null,{internals:!0},(A,Q,B)=>{let I=mUQ(Q),C=this._moduleNameTrie.search(I,{maintainInsertionOrder:!0,fullOnly:B===void 0});for(let{onRequire:E}of C)A=E(A,Q,B);return A})}register(A,Q){let B={moduleName:A,onRequire:Q};return this._moduleNameTrie.insert(B),B}static getInstance(){if(bUQ)return new Aw;return this._instance=this._instance??new Aw}}fXA.RequireInTheMiddleSingleton=Aw;function mUQ(A){return _XA.sep!==fM.ModuleNameSeparator?A.split(_XA.sep).join(fM.ModuleNameSeparator):A}});var dXA=U((uUQ)=>{var xXA=[],gM=new WeakMap,vXA=new WeakMap,bXA=new Map,mXA=[],dUQ={set(A,Q,B){let I=gM.get(A),C=I&&I[Q];if(typeof C==="function")return C(B);return!0},get(A,Q){if(Q===Symbol.toStringTag)return"Module";let B=vXA.get(A)[Q];if(typeof B==="function")return B()},defineProperty(A,Q,B){if(!("value"in B))throw Error("Getters/setters are not supported for exports property descriptors.");let I=gM.get(A),C=I&&I[Q];if(typeof C==="function")return C(B.value);return!0}};function cUQ(A,Q,B,I,C){bXA.set(A,C),gM.set(Q,B),vXA.set(Q,I);let E=new Proxy(Q,dUQ);xXA.forEach((Y)=>Y(A,E,C)),mXA.push([A,E,C])}uUQ.register=cUQ;uUQ.importHooks=xXA;uUQ.specifiers=bXA;uUQ.toHook=mXA});var pXA=U((dsQ,bD)=>{var cXA=M("path"),aUQ=N1(),{fileURLToPath:oUQ}=M("url"),{MessageChannel:sUQ}=M("worker_threads"),{isBuiltin:hM}=M("module");if(!hM)hM=()=>!0;var{importHooks:xM,specifiers:rUQ,toHook:tUQ}=dXA();function uXA(A){xM.push(A),tUQ.forEach(([Q,B,I])=>A(Q,B,I))}function lXA(A){let Q=xM.indexOf(A);if(Q>-1)xM.splice(Q,1)}function vD(A,Q,B,I){let C=A(Q,B,I);if(C&&C!==Q){if("default"in Q)Q.default=C}}var vM;function eUQ(){let{port1:A,port2:Q}=new sUQ,B=0,I;vM=(J)=>{B++,A.postMessage(J)},A.on("message",()=>{if(B--,I&&B<=0)I()}).unref();function C(){let J=setInterval(()=>{},1000),F=new Promise((G)=>{I=G}).then(()=>{clearInterval(J)});if(B===0)I();return F}let E=Q;return{registerOptions:{data:{addHookMessagePort:E,include:[]},transferList:[E]},addHookMessagePort:E,waitForAllMessagesAcknowledged:C}}function OW(A,Q,B){if(this instanceof OW===!1)return new OW(A,Q,B);if(typeof A==="function")B=A,A=null,Q=null;else if(typeof Q==="function")B=Q,Q=null;let I=Q?Q.internals===!0:!1;if(vM&&Array.isArray(A))vM(A);this._iitmHook=(C,E,Y)=>{let J=C,F=J.startsWith("node:"),G,D;if(F){let Z=C.slice(5);if(hM(Z))C=Z}else if(J.startsWith("file://")){let Z=Error.stackTraceLimit;Error.stackTraceLimit=0;try{G=oUQ(C),C=G}catch(W){}if(Error.stackTraceLimit=Z,G){let W=aUQ(G);if(W)C=W.name,D=W.basedir}}if(A){for(let Z of A)if(G&&Z===G)vD(B,E,G,void 0);else if(Z===C){if(!D)vD(B,E,C,D);else if(D.endsWith(rUQ.get(J)))vD(B,E,C,D);else if(I){let W=C+cXA.sep+cXA.relative(D,G);vD(B,E,W,D)}}else if(Z===Y)vD(B,E,Y,D)}else vD(B,E,C,D)},uXA(this._iitmHook)}OW.prototype.unhook=function(){lXA(this._iitmHook)};bD.exports=OW;bD.exports.Hook=OW;bD.exports.addHook=uXA;bD.exports.removeHook=lXA;bD.exports.createAddHookMessageChannel=eUQ});var bM=U((iXA)=>{Object.defineProperty(iXA,"__esModule",{value:!0});iXA.isWrapped=iXA.safeExecuteInTheMiddleAsync=iXA.safeExecuteInTheMiddle=void 0;function A4Q(A,Q,B){let I,C;try{C=A()}catch(E){I=E}finally{if(Q(I,C),I&&!B)throw I;return C}}iXA.safeExecuteInTheMiddle=A4Q;async function Q4Q(A,Q,B){let I,C;try{C=await A()}catch(E){I=E}finally{if(Q(I,C),I&&!B)throw I;return C}}iXA.safeExecuteInTheMiddleAsync=Q4Q;function B4Q(A){return typeof A==="function"&&typeof A.__original==="function"&&typeof A.__unwrap==="function"&&A.__wrapped===!0}iXA.isWrapped=B4Q});var eXA=U((rXA)=>{Object.defineProperty(rXA,"__esModule",{value:!0});rXA.InstrumentationBase=void 0;var TW=M("path"),aXA=M("util"),E4Q=MXA(),mM=kM(),Y4Q=TXA(),J4Q=hXA(),F4Q=pXA(),PW=P(),G4Q=NJ(),D4Q=M("fs"),Z4Q=bM();class sXA extends Y4Q.InstrumentationAbstract{_modules;_hooks=[];_requireInTheMiddleSingleton=J4Q.RequireInTheMiddleSingleton.getInstance();_enabled=!1;constructor(A,Q,B){super(A,Q,B);let I=this.init();if(I&&!Array.isArray(I))I=[I];if(this._modules=I||[],this._config.enabled)this.enable()}_wrap=(A,Q,B)=>{if((0,Z4Q.isWrapped)(A[Q]))this._unwrap(A,Q);if(!aXA.types.isProxy(A))return(0,mM.wrap)(A,Q,B);else{let I=(0,mM.wrap)(Object.assign({},A),Q,B);return Object.defineProperty(A,Q,{value:I}),I}};_unwrap=(A,Q)=>{if(!aXA.types.isProxy(A))return(0,mM.unwrap)(A,Q);else return Object.defineProperty(A,Q,{value:A[Q]})};_massWrap=(A,Q,B)=>{if(!A){PW.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){PW.diag.error("must provide one or more functions to wrap on modules");return}A.forEach((I)=>{Q.forEach((C)=>{this._wrap(I,C,B)})})};_massUnwrap=(A,Q)=>{if(!A){PW.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(A))A=[A];if(!(Q&&Array.isArray(Q))){PW.diag.error("must provide one or more functions to wrap on modules");return}A.forEach((B)=>{Q.forEach((I)=>{this._unwrap(B,I)})})};_warnOnPreloadedModules(){this._modules.forEach((A)=>{let{name:Q}=A;try{let B=M.resolve(Q);if(M.cache[B])this._diag.warn(`Module ${Q} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${Q}`)}catch{}})}_extractPackageVersion(A){try{let Q=(0,D4Q.readFileSync)(TW.join(A,"package.json"),{encoding:"utf8"}),B=JSON.parse(Q).version;return typeof B==="string"?B:void 0}catch{PW.diag.warn("Failed extracting version",A)}return}_onRequire(A,Q,B,I){if(!I){if(typeof A.patch==="function"){if(A.moduleExports=Q,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:A.name}),A.patch(Q)}return Q}let C=this._extractPackageVersion(I);if(A.moduleVersion=C,A.name===B){if(oXA(A.supportedVersions,C,A.includePrerelease)){if(typeof A.patch==="function"){if(A.moduleExports=Q,this._enabled)return this._diag.debug("Applying instrumentation patch for module on require hook",{module:A.name,version:A.moduleVersion,baseDir:I}),A.patch(Q,A.moduleVersion)}}return Q}let E=A.files??[],Y=TW.normalize(B);return E.filter((F)=>F.name===Y).filter((F)=>oXA(F.supportedVersions,C,A.includePrerelease)).reduce((F,G)=>{if(G.moduleExports=F,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:A.name,version:A.moduleVersion,fileName:G.name,baseDir:I}),G.patch(F,A.moduleVersion);return F},Q)}enable(){if(this._enabled)return;if(this._enabled=!0,this._hooks.length>0){for(let A of this._modules){if(typeof A.patch==="function"&&A.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:A.name,version:A.moduleVersion}),A.patch(A.moduleExports,A.moduleVersion);for(let Q of A.files)if(Q.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:A.name,version:A.moduleVersion,fileName:Q.name}),Q.patch(Q.moduleExports,A.moduleVersion)}return}this._warnOnPreloadedModules();for(let A of this._modules){let Q=(E,Y,J)=>{if(!J&&TW.isAbsolute(Y)){let F=TW.parse(Y);Y=F.name,J=F.dir}return this._onRequire(A,E,Y,J)},B=(E,Y,J)=>{return this._onRequire(A,E,Y,J)},I=TW.isAbsolute(A.name)?new G4Q.Hook([A.name],{internals:!0},B):this._requireInTheMiddleSingleton.register(A.name,B);this._hooks.push(I);let C=new F4Q.Hook([A.name],{internals:!1},Q);this._hooks.push(C)}}disable(){if(!this._enabled)return;this._enabled=!1;for(let A of this._modules){if(typeof A.unpatch==="function"&&A.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:A.name,version:A.moduleVersion}),A.unpatch(A.moduleExports,A.moduleVersion);for(let Q of A.files)if(Q.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:A.name,version:A.moduleVersion,fileName:Q.name}),Q.unpatch(Q.moduleExports,A.moduleVersion)}}isEnabled(){return this._enabled}}rXA.InstrumentationBase=sXA;function oXA(A,Q,B){if(typeof Q>"u")return A.includes("*");return A.some((I)=>{return(0,E4Q.satisfies)(Q,I,{includePrerelease:B})})}});var AUA=U((dM)=>{Object.defineProperty(dM,"__esModule",{value:!0});dM.normalize=void 0;var W4Q=M("path");Object.defineProperty(dM,"normalize",{enumerable:!0,get:function(){return W4Q.normalize}})});var QUA=U((Qw)=>{Object.defineProperty(Qw,"__esModule",{value:!0});Qw.normalize=Qw.InstrumentationBase=void 0;var U4Q=eXA();Object.defineProperty(Qw,"InstrumentationBase",{enumerable:!0,get:function(){return U4Q.InstrumentationBase}});var w4Q=AUA();Object.defineProperty(Qw,"normalize",{enumerable:!0,get:function(){return w4Q.normalize}})});var cM=U((Bw)=>{Object.defineProperty(Bw,"__esModule",{value:!0});Bw.normalize=Bw.InstrumentationBase=void 0;var BUA=QUA();Object.defineProperty(Bw,"InstrumentationBase",{enumerable:!0,get:function(){return BUA.InstrumentationBase}});Object.defineProperty(Bw,"normalize",{enumerable:!0,get:function(){return BUA.normalize}})});var YUA=U((CUA)=>{Object.defineProperty(CUA,"__esModule",{value:!0});CUA.InstrumentationNodeModuleDefinition=void 0;class IUA{name;supportedVersions;patch;unpatch;files;constructor(A,Q,B,I,C){this.name=A,this.supportedVersions=Q,this.patch=B,this.unpatch=I,this.files=C||[]}}CUA.InstrumentationNodeModuleDefinition=IUA});var DUA=U((FUA)=>{Object.defineProperty(FUA,"__esModule",{value:!0});FUA.InstrumentationNodeModuleFile=void 0;var V4Q=cM();class JUA{supportedVersions;patch;unpatch;name;constructor(A,Q,B,I){this.supportedVersions=Q,this.patch=B,this.unpatch=I,this.name=(0,V4Q.normalize)(A)}}FUA.InstrumentationNodeModuleFile=JUA});var UUA=U((WUA)=>{Object.defineProperty(WUA,"__esModule",{value:!0});WUA.semconvStabilityFromStr=WUA.SemconvStability=void 0;var Iw;(function(A){A[A.STABLE=1]="STABLE",A[A.OLD=2]="OLD",A[A.DUPLICATE=3]="DUPLICATE"})(Iw=WUA.SemconvStability||(WUA.SemconvStability={}));function $4Q(A,Q){let B=Iw.OLD,I=Q?.split(",").map((C)=>C.trim()).filter((C)=>C!=="");for(let C of I??[])if(C.toLowerCase()===A+"/dup"){B=Iw.DUPLICATE;break}else if(C.toLowerCase()===A)B=Iw.STABLE;return B}WUA.semconvStabilityFromStr=$4Q});var KUA=U((xC)=>{Object.defineProperty(xC,"__esModule",{value:!0});xC.semconvStabilityFromStr=xC.SemconvStability=xC.safeExecuteInTheMiddleAsync=xC.safeExecuteInTheMiddle=xC.isWrapped=xC.InstrumentationNodeModuleFile=xC.InstrumentationNodeModuleDefinition=xC.InstrumentationBase=xC.registerInstrumentations=void 0;var L4Q=ZXA();Object.defineProperty(xC,"registerInstrumentations",{enumerable:!0,get:function(){return L4Q.registerInstrumentations}});var H4Q=cM();Object.defineProperty(xC,"InstrumentationBase",{enumerable:!0,get:function(){return H4Q.InstrumentationBase}});var M4Q=YUA();Object.defineProperty(xC,"InstrumentationNodeModuleDefinition",{enumerable:!0,get:function(){return M4Q.InstrumentationNodeModuleDefinition}});var N4Q=DUA();Object.defineProperty(xC,"InstrumentationNodeModuleFile",{enumerable:!0,get:function(){return N4Q.InstrumentationNodeModuleFile}});var uM=bM();Object.defineProperty(xC,"isWrapped",{enumerable:!0,get:function(){return uM.isWrapped}});Object.defineProperty(xC,"safeExecuteInTheMiddle",{enumerable:!0,get:function(){return uM.safeExecuteInTheMiddle}});Object.defineProperty(xC,"safeExecuteInTheMiddleAsync",{enumerable:!0,get:function(){return uM.safeExecuteInTheMiddleAsync}});var wUA=UUA();Object.defineProperty(xC,"SemconvStability",{enumerable:!0,get:function(){return wUA.SemconvStability}});Object.defineProperty(xC,"semconvStabilityFromStr",{enumerable:!0,get:function(){return wUA.semconvStabilityFromStr}})});var kUA=U((TUA)=>{Object.defineProperty(TUA,"__esModule",{value:!0});TUA.PACKAGE_NAME=TUA.PACKAGE_VERSION=void 0;TUA.PACKAGE_VERSION="0.59.0";TUA.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"});var iM=U((SUA)=>{Object.defineProperty(SUA,"__esModule",{value:!0});SUA.HapiLifecycleMethodNames=SUA.HapiLayerType=SUA.handlerPatched=SUA.HapiComponentName=void 0;SUA.HapiComponentName="@hapi/hapi";SUA.handlerPatched=Symbol("hapi-handler-patched");SUA.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"};SUA.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])});var gUA=U((_UA)=>{Object.defineProperty(_UA,"__esModule",{value:!0});_UA.ATTR_HTTP_METHOD=void 0;_UA.ATTR_HTTP_METHOD="http.method"});var aM=U((hUA)=>{Object.defineProperty(hUA,"__esModule",{value:!0});hUA.AttributeNames=void 0;var l4Q;(function(A){A.HAPI_TYPE="hapi.type",A.PLUGIN_NAME="hapi.plugin.name",A.EXT_TYPE="server.ext.type"})(l4Q=hUA.AttributeNames||(hUA.AttributeNames={}))});var dUA=U((bUA)=>{Object.defineProperty(bUA,"__esModule",{value:!0});bUA.getPluginFromInput=bUA.getExtMetadata=bUA.getRouteMetadata=bUA.isPatchableExtMethod=bUA.isDirectExtInput=bUA.isLifecycleExtEventObj=bUA.isLifecycleExtType=bUA.getPluginName=void 0;var xUA=HA(),p4Q=gUA(),kW=iM(),fY=aM(),vUA=JA();function i4Q(A){if(A.name)return A.name;else return A.pkg.name}bUA.getPluginName=i4Q;var n4Q=(A)=>{return typeof A==="string"&&kW.HapiLifecycleMethodNames.has(A)};bUA.isLifecycleExtType=n4Q;var a4Q=(A)=>{let Q=A?.type;return Q!==void 0&&bUA.isLifecycleExtType(Q)};bUA.isLifecycleExtEventObj=a4Q;var o4Q=(A)=>{return Array.isArray(A)&&A.length<=3&&bUA.isLifecycleExtType(A[0])&&typeof A[1]==="function"};bUA.isDirectExtInput=o4Q;var s4Q=(A)=>{return!Array.isArray(A)};bUA.isPatchableExtMethod=s4Q;var r4Q=(A,Q,B)=>{let I={[xUA.ATTR_HTTP_ROUTE]:A.path};if(Q&vUA.SemconvStability.OLD)I[p4Q.ATTR_HTTP_METHOD]=A.method;if(Q&vUA.SemconvStability.STABLE)I[xUA.ATTR_HTTP_REQUEST_METHOD]=A.method;let C;if(B)I[fY.AttributeNames.HAPI_TYPE]=kW.HapiLayerType.PLUGIN,I[fY.AttributeNames.PLUGIN_NAME]=B,C=`${B}: route - ${A.path}`;else I[fY.AttributeNames.HAPI_TYPE]=kW.HapiLayerType.ROUTER,C=`route - ${A.path}`;return{attributes:I,name:C}};bUA.getRouteMetadata=r4Q;var t4Q=(A,Q)=>{if(Q)return{attributes:{[fY.AttributeNames.EXT_TYPE]:A,[fY.AttributeNames.HAPI_TYPE]:kW.HapiLayerType.EXT,[fY.AttributeNames.PLUGIN_NAME]:Q},name:`${Q}: ext - ${A}`};return{attributes:{[fY.AttributeNames.EXT_TYPE]:A,[fY.AttributeNames.HAPI_TYPE]:kW.HapiLayerType.EXT},name:`ext - ${A}`}};bUA.getExtMetadata=t4Q;var e4Q=(A)=>{if("plugin"in A){if("plugin"in A.plugin)return A.plugin.plugin;return A.plugin}return A};bUA.getPluginFromInput=e4Q});var nUA=U((pUA)=>{Object.defineProperty(pUA,"__esModule",{value:!0});pUA.HapiInstrumentation=void 0;var TI=P(),cUA=hA(),SW=JA(),uUA=kUA(),yW=iM(),D0=dUA();class lUA extends SW.InstrumentationBase{_semconvStability;constructor(A={}){super(uUA.PACKAGE_NAME,uUA.PACKAGE_VERSION,A);this._semconvStability=(0,SW.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new SW.InstrumentationNodeModuleDefinition(yW.HapiComponentName,[">=17.0.0 <22"],(A)=>{let Q=A[Symbol.toStringTag]==="Module"?A.default:A;if(!(0,SW.isWrapped)(Q.server))this._wrap(Q,"server",this._getServerPatch.bind(this));if(!(0,SW.isWrapped)(Q.Server))this._wrap(Q,"Server",this._getServerPatch.bind(this));return Q},(A)=>{let Q=A[Symbol.toStringTag]==="Module"?A.default:A;this._massUnwrap([Q],["server","Server"])})}_getServerPatch(A){let Q=this,B=this;return function(C){let E=A.apply(this,[C]);return B._wrap(E,"route",(Y)=>{return Q._getServerRoutePatch.bind(Q)(Y)}),B._wrap(E,"ext",(Y)=>{return Q._getServerExtPatch.bind(Q)(Y)}),B._wrap(E,"register",Q._getServerRegisterPatch.bind(Q)),E}}_getServerRegisterPatch(A){let Q=this;return function(I,C){if(Array.isArray(I))for(let E of I){let Y=(0,D0.getPluginFromInput)(E);Q._wrapRegisterHandler(Y)}else{let E=(0,D0.getPluginFromInput)(I);Q._wrapRegisterHandler(E)}return A.apply(this,[I,C])}}_getServerExtPatch(A,Q){let B=this;return function(...C){if(Array.isArray(C[0])){let E=C[0];for(let Y=0;Y{return Q._getServerRoutePatch.bind(Q)(F,B)}),C._wrap(Y,"ext",(F)=>{return Q._getServerExtPatch.bind(Q)(F,B)}),I.call(this,Y,J)};A.register=E}_wrapExtMethods(A,Q,B){let I=this;if(A instanceof Array){for(let C=0;C{return async function(...E){if(TI.trace.getSpan(TI.context.active())===void 0)return await C.call(this,...E);let Y=(0,cUA.getRPCMetadata)(TI.context.active());if(Y?.type===cUA.RPCType.HTTP)Y.route=A.path;let J=(0,D0.getRouteMetadata)(A,B._semconvStability,Q),F=B.tracer.startSpan(J.name,{attributes:J.attributes});try{return await TI.context.with(TI.trace.setSpan(TI.context.active(),F),()=>C.call(this,...E))}catch(G){throw F.recordException(G),F.setStatus({code:TI.SpanStatusCode.ERROR,message:G.message}),G}finally{F.end()}}};if(typeof A.handler==="function")A.handler=I(A.handler);else if(typeof A.options==="function"){let C=A.options;A.options=function(E){let Y=C(E);if(typeof Y.handler==="function")Y.handler=I(Y.handler);return Y}}else if(typeof A.options?.handler==="function")A.options.handler=I(A.options.handler);return A}}pUA.HapiInstrumentation=lUA});var aUA=U((Ew)=>{Object.defineProperty(Ew,"__esModule",{value:!0});Ew.AttributeNames=Ew.HapiInstrumentation=void 0;var Y5Q=nUA();Object.defineProperty(Ew,"HapiInstrumentation",{enumerable:!0,get:function(){return Y5Q.HapiInstrumentation}});var J5Q=aM();Object.defineProperty(Ew,"AttributeNames",{enumerable:!0,get:function(){return J5Q.AttributeNames}})});var Fw=U((B4A)=>{Object.defineProperty(B4A,"__esModule",{value:!0});B4A.KoaLayerType=void 0;var U5Q;(function(A){A.ROUTER="router",A.MIDDLEWARE="middleware"})(U5Q=B4A.KoaLayerType||(B4A.KoaLayerType={}))});var E4A=U((I4A)=>{Object.defineProperty(I4A,"__esModule",{value:!0});I4A.PACKAGE_NAME=I4A.PACKAGE_VERSION=void 0;I4A.PACKAGE_VERSION="0.61.0";I4A.PACKAGE_NAME="@opentelemetry/instrumentation-koa"});var eM=U((Y4A)=>{Object.defineProperty(Y4A,"__esModule",{value:!0});Y4A.AttributeNames=void 0;var K5Q;(function(A){A.KOA_TYPE="koa.type",A.KOA_NAME="koa.name"})(K5Q=Y4A.AttributeNames||(Y4A.AttributeNames={}))});var D4A=U((F4A)=>{Object.defineProperty(F4A,"__esModule",{value:!0});F4A.isLayerIgnored=F4A.getMiddlewareMetadata=void 0;var J4A=Fw(),Gw=eM(),z5Q=HA(),V5Q=(A,Q,B,I)=>{if(B)return{attributes:{[Gw.AttributeNames.KOA_NAME]:I?.toString(),[Gw.AttributeNames.KOA_TYPE]:J4A.KoaLayerType.ROUTER,[z5Q.ATTR_HTTP_ROUTE]:I?.toString()},name:A._matchedRouteName||`router - ${I}`};else return{attributes:{[Gw.AttributeNames.KOA_NAME]:Q.name??"middleware",[Gw.AttributeNames.KOA_TYPE]:J4A.KoaLayerType.MIDDLEWARE},name:`middleware - ${Q.name}`}};F4A.getMiddlewareMetadata=V5Q;var $5Q=(A,Q)=>{return!!(Array.isArray(Q?.ignoreLayersType)&&Q?.ignoreLayersType?.includes(A))};F4A.isLayerIgnored=$5Q});var X4A=U((Z4A)=>{Object.defineProperty(Z4A,"__esModule",{value:!0});Z4A.kLayerPatched=void 0;Z4A.kLayerPatched=Symbol("koa-layer-patched")});var M4A=U((L4A)=>{Object.defineProperty(L4A,"__esModule",{value:!0});L4A.KoaInstrumentation=void 0;var UE=P(),fW=JA(),U4A=Fw(),w4A=E4A(),K4A=D4A(),z4A=hA(),V4A=X4A();class $4A extends fW.InstrumentationBase{constructor(A={}){super(w4A.PACKAGE_NAME,w4A.PACKAGE_VERSION,A)}init(){return new fW.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],(A)=>{let Q=A[Symbol.toStringTag]==="Module"?A.default:A;if(Q==null)return Q;if((0,fW.isWrapped)(Q.prototype.use))this._unwrap(Q.prototype,"use");return this._wrap(Q.prototype,"use",this._getKoaUsePatch.bind(this)),A},(A)=>{let Q=A[Symbol.toStringTag]==="Module"?A.default:A;if((0,fW.isWrapped)(Q.prototype.use))this._unwrap(Q.prototype,"use")})}_getKoaUsePatch(A){let Q=this;return function(I){let C;if(I.router)C=Q._patchRouterDispatch(I);else C=Q._patchLayer(I,!1);return A.apply(this,[C])}}_patchRouterDispatch(A){UE.diag.debug("Patching @koa/router dispatch");let B=A.router?.stack??[];for(let I of B){let{path:C,stack:E}=I;for(let Y=0;Y{if(UE.trace.getSpan(UE.context.active())===void 0)return A(C,E);let J=(0,K4A.getMiddlewareMetadata)(C,A,Q,B),F=this.tracer.startSpan(J.name,{attributes:J.attributes}),G=(0,z4A.getRPCMetadata)(UE.context.active());if(G?.type===z4A.RPCType.HTTP&&C._matchedRoute)G.route=C._matchedRoute.toString();let{requestHook:D}=this.getConfig();if(D)(0,fW.safeExecuteInTheMiddle)(()=>D(F,{context:C,middlewareLayer:A,layerType:I}),(W)=>{if(W)UE.diag.error("koa instrumentation: request hook failed",W)},!0);let Z=UE.trace.setSpan(UE.context.active(),F);return UE.context.with(Z,async()=>{try{return await A(C,E)}catch(W){throw F.recordException(W),W}finally{F.end()}})}}}L4A.KoaInstrumentation=$4A});var N4A=U((gW)=>{Object.defineProperty(gW,"__esModule",{value:!0});gW.KoaLayerType=gW.AttributeNames=gW.KoaInstrumentation=void 0;var H5Q=M4A();Object.defineProperty(gW,"KoaInstrumentation",{enumerable:!0,get:function(){return H5Q.KoaInstrumentation}});var M5Q=eM();Object.defineProperty(gW,"AttributeNames",{enumerable:!0,get:function(){return M5Q.AttributeNames}});var N5Q=Fw();Object.defineProperty(gW,"KoaLayerType",{enumerable:!0,get:function(){return N5Q.KoaLayerType}})});var QN=U((S4A)=>{Object.defineProperty(S4A,"__esModule",{value:!0});S4A.ConnectNames=S4A.ConnectTypes=S4A.AttributeNames=void 0;var q5Q;(function(A){A.CONNECT_TYPE="connect.type",A.CONNECT_NAME="connect.name"})(q5Q=S4A.AttributeNames||(S4A.AttributeNames={}));var O5Q;(function(A){A.MIDDLEWARE="middleware",A.REQUEST_HANDLER="request_handler"})(O5Q=S4A.ConnectTypes||(S4A.ConnectTypes={}));var T5Q;(function(A){A.MIDDLEWARE="middleware",A.REQUEST_HANDLER="request handler"})(T5Q=S4A.ConnectNames||(S4A.ConnectNames={}))});var f4A=U((y4A)=>{Object.defineProperty(y4A,"__esModule",{value:!0});y4A.PACKAGE_NAME=y4A.PACKAGE_VERSION=void 0;y4A.PACKAGE_VERSION="0.56.0";y4A.PACKAGE_NAME="@opentelemetry/instrumentation-connect"});var x4A=U((g4A)=>{Object.defineProperty(g4A,"__esModule",{value:!0});g4A._LAYERS_STORE_PROPERTY=void 0;g4A._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")});var m4A=U((v4A)=>{Object.defineProperty(v4A,"__esModule",{value:!0});v4A.generateRoute=v4A.replaceCurrentStackRoute=v4A.addNewStackLayer=void 0;var k5Q=P(),hY=x4A(),S5Q=(A)=>{if(Array.isArray(A[hY._LAYERS_STORE_PROPERTY])===!1)Object.defineProperty(A,hY._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]});A[hY._LAYERS_STORE_PROPERTY].push("/");let Q=A[hY._LAYERS_STORE_PROPERTY].length;return()=>{if(Q===A[hY._LAYERS_STORE_PROPERTY].length)A[hY._LAYERS_STORE_PROPERTY].pop();else k5Q.diag.warn("Connect: Trying to pop the stack multiple time")}};v4A.addNewStackLayer=S5Q;var y5Q=(A,Q)=>{if(Q)A[hY._LAYERS_STORE_PROPERTY].splice(-1,1,Q)};v4A.replaceCurrentStackRoute=y5Q;var _5Q=(A)=>{return A[hY._LAYERS_STORE_PROPERTY].reduce((Q,B)=>Q.replace(/\/+$/,"")+B)};v4A.generateRoute=_5Q});var i4A=U((l4A)=>{Object.defineProperty(l4A,"__esModule",{value:!0});l4A.ConnectInstrumentation=l4A.ANONYMOUS_NAME=void 0;var h5Q=P(),d4A=hA(),dD=QN(),c4A=f4A(),Dw=JA(),x5Q=HA(),BN=m4A();l4A.ANONYMOUS_NAME="anonymous";class u4A extends Dw.InstrumentationBase{constructor(A={}){super(c4A.PACKAGE_NAME,c4A.PACKAGE_VERSION,A)}init(){return[new Dw.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],(A)=>{return this._patchConstructor(A)})]}_patchApp(A){if(!(0,Dw.isWrapped)(A.use))this._wrap(A,"use",this._patchUse.bind(this));if(!(0,Dw.isWrapped)(A.handle))this._wrap(A,"handle",this._patchHandle.bind(this))}_patchConstructor(A){let Q=this;return function(...B){let I=A.apply(this,B);return Q._patchApp(I),I}}_patchNext(A,Q){return function(I){let C=A.apply(this,[I]);return Q(),C}}_startSpan(A,Q){let B,I,C;if(A)B=dD.ConnectTypes.REQUEST_HANDLER,C=dD.ConnectNames.REQUEST_HANDLER,I=A;else B=dD.ConnectTypes.MIDDLEWARE,C=dD.ConnectNames.MIDDLEWARE,I=Q.name||l4A.ANONYMOUS_NAME;let E=`${C} - ${I}`,Y={attributes:{[x5Q.ATTR_HTTP_ROUTE]:A.length>0?A:"/",[dD.AttributeNames.CONNECT_TYPE]:B,[dD.AttributeNames.CONNECT_NAME]:I}};return this.tracer.startSpan(E,Y)}_patchMiddleware(A,Q){let B=this,I=Q.length===4;function C(){if(!B.isEnabled())return Q.apply(this,arguments);let[E,Y,J]=I?[1,2,3]:[0,1,2],F=arguments[E],G=arguments[Y],D=arguments[J];(0,BN.replaceCurrentStackRoute)(F,A);let Z=(0,d4A.getRPCMetadata)(h5Q.context.active());if(A&&Z?.type===d4A.RPCType.HTTP)Z.route=(0,BN.generateRoute)(F);let W="";if(A)W=`request handler - ${A}`;else W=`middleware - ${Q.name||l4A.ANONYMOUS_NAME}`;let X=B._startSpan(A,Q);B._diag.debug("start span",W);let w=!1;function K(){if(!w)w=!0,B._diag.debug(`finishing span ${X.name}`),X.end();else B._diag.debug(`span ${X.name} - already finished`);G.removeListener("close",K)}return G.addListener("close",K),arguments[J]=B._patchNext(D,K),Q.apply(this,arguments)}return Object.defineProperty(C,"length",{value:Q.length,writable:!1,configurable:!0}),C}_patchUse(A){let Q=this;return function(...B){let I=B[B.length-1],C=B[B.length-2]||"";return B[B.length-1]=Q._patchMiddleware(C,I),A.apply(this,B)}}_patchHandle(A){let Q=this;return function(){let[B,I]=[0,2],C=arguments[B],E=arguments[I],Y=(0,BN.addNewStackLayer)(C);if(typeof E==="function")arguments[I]=Q._patchOut(E,Y);return A.apply(this,arguments)}}_patchOut(A,Q){return function(...I){return Q(),Reflect.apply(A,this,I)}}}l4A.ConnectInstrumentation=u4A});var a4A=U((WF)=>{Object.defineProperty(WF,"__esModule",{value:!0});WF.ConnectTypes=WF.ConnectNames=WF.AttributeNames=WF.ANONYMOUS_NAME=WF.ConnectInstrumentation=void 0;var n4A=i4A();Object.defineProperty(WF,"ConnectInstrumentation",{enumerable:!0,get:function(){return n4A.ConnectInstrumentation}});Object.defineProperty(WF,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return n4A.ANONYMOUS_NAME}});var CN=QN();Object.defineProperty(WF,"AttributeNames",{enumerable:!0,get:function(){return CN.AttributeNames}});Object.defineProperty(WF,"ConnectNames",{enumerable:!0,get:function(){return CN.ConnectNames}});Object.defineProperty(WF,"ConnectTypes",{enumerable:!0,get:function(){return CN.ConnectTypes}})});var Q5A=U((e4A)=>{Object.defineProperty(e4A,"__esModule",{value:!0});e4A.DB_SYSTEM_VALUE_MSSQL=e4A.ATTR_NET_PEER_PORT=e4A.ATTR_NET_PEER_NAME=e4A.ATTR_DB_USER=e4A.ATTR_DB_SYSTEM=e4A.ATTR_DB_STATEMENT=e4A.ATTR_DB_SQL_TABLE=e4A.ATTR_DB_NAME=void 0;e4A.ATTR_DB_NAME="db.name";e4A.ATTR_DB_SQL_TABLE="db.sql.table";e4A.ATTR_DB_STATEMENT="db.statement";e4A.ATTR_DB_SYSTEM="db.system";e4A.ATTR_DB_USER="db.user";e4A.ATTR_NET_PEER_NAME="net.peer.name";e4A.ATTR_NET_PEER_PORT="net.peer.port";e4A.DB_SYSTEM_VALUE_MSSQL="mssql"});var C5A=U((B5A)=>{Object.defineProperty(B5A,"__esModule",{value:!0});B5A.once=B5A.getSpanName=void 0;function n5Q(A,Q,B,I){if(A==="execBulkLoad"&&I&&Q)return`${A} ${I} ${Q}`;if(A==="callProcedure"){if(Q)return`${A} ${B} ${Q}`;return`${A} ${B}`}if(Q)return`${A} ${Q}`;return`${A}`}B5A.getSpanName=n5Q;var a5Q=(A)=>{let Q=!1;return(...B)=>{if(Q)return;return Q=!0,A(...B)}};B5A.once=a5Q});var J5A=U((E5A)=>{Object.defineProperty(E5A,"__esModule",{value:!0});E5A.PACKAGE_NAME=E5A.PACKAGE_VERSION=void 0;E5A.PACKAGE_VERSION="0.32.0";E5A.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"});var U5A=U((W5A)=>{Object.defineProperty(W5A,"__esModule",{value:!0});W5A.TediousInstrumentation=W5A.INJECTED_CTX=void 0;var cD=P(),r5Q=M("events"),wE=JA(),XF=HA(),xY=Q5A(),F5A=C5A(),G5A=J5A(),Z5A=Symbol("opentelemetry.instrumentation-tedious.current-database");W5A.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");var D5A=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function Zw(A){Object.defineProperty(this,Z5A,{value:A,writable:!0})}class YN extends wE.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(A={}){super(G5A.PACKAGE_NAME,G5A.PACKAGE_VERSION,A);this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,wE.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,wE.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new wE.InstrumentationNodeModuleDefinition(YN.COMPONENT,[">=1.11.0 <20"],(A)=>{let Q=A.Connection.prototype;for(let B of D5A){if((0,wE.isWrapped)(Q[B]))this._unwrap(Q,B);this._wrap(Q,B,this._patchQuery(B,A))}if((0,wE.isWrapped)(Q.connect))this._unwrap(Q,"connect");return this._wrap(Q,"connect",this._patchConnect),A},(A)=>{if(A===void 0)return;let Q=A.Connection.prototype;for(let B of D5A)this._unwrap(Q,B);this._unwrap(Q,"connect")})]}_patchConnect(A){return function(){return Zw.call(this,this.config?.options?.database),this.removeListener("databaseChange",Zw),this.on("databaseChange",Zw),this.once("end",()=>{this.removeListener("databaseChange",Zw)}),A.apply(this,arguments)}}_buildTraceparent(A){let Q=A.spanContext();return`00-${Q.traceId}-${Q.spanId}-0${Number(Q.traceFlags||cD.TraceFlags.NONE).toString(16)}`}_injectContextInfo(A,Q,B){return new Promise((I)=>{try{let E=new Q.Request("set context_info @opentelemetry_traceparent",(J)=>{I()});Object.defineProperty(E,W5A.INJECTED_CTX,{value:!0});let Y=Buffer.from(B,"utf8");E.addParameter("opentelemetry_traceparent",Q.TYPES.VarBinary,Y,{length:Y.length}),A.execSql(E)}catch{I()}})}_shouldInjectFor(A){return A==="execSql"||A==="execSqlBatch"||A==="callProcedure"||A==="execute"}_patchQuery(A,Q){return(B)=>{let I=this;function C(E){if(E?.[W5A.INJECTED_CTX])return B.apply(this,arguments);if(!(E instanceof r5Q.EventEmitter))return I._diag.warn(`Unexpected invocation of patched ${A} method. Span not recorded`),B.apply(this,arguments);let Y=0,J=0,F=()=>J++,G=()=>Y++,D=this[Z5A],Z=((j)=>{if(j.sqlTextOrProcedure==="sp_prepare"&&j.parametersByName?.stmt?.value)return j.parametersByName.stmt.value;return j.sqlTextOrProcedure})(E),W={};if(I._dbSemconvStability&wE.SemconvStability.OLD)W[xY.ATTR_DB_SYSTEM]=xY.DB_SYSTEM_VALUE_MSSQL,W[xY.ATTR_DB_NAME]=D,W[xY.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,W[xY.ATTR_DB_STATEMENT]=Z,W[xY.ATTR_DB_SQL_TABLE]=E.table;if(I._dbSemconvStability&wE.SemconvStability.STABLE)W[XF.ATTR_DB_NAMESPACE]=D,W[XF.ATTR_DB_SYSTEM_NAME]=XF.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,W[XF.ATTR_DB_QUERY_TEXT]=Z,W[XF.ATTR_DB_COLLECTION_NAME]=E.table;if(I._netSemconvStability&wE.SemconvStability.OLD)W[xY.ATTR_NET_PEER_NAME]=this.config?.server,W[xY.ATTR_NET_PEER_PORT]=this.config?.options?.port;if(I._netSemconvStability&wE.SemconvStability.STABLE)W[XF.ATTR_SERVER_ADDRESS]=this.config?.server,W[XF.ATTR_SERVER_PORT]=this.config?.options?.port;let X=I.tracer.startSpan((0,F5A.getSpanName)(A,D,Z,E.table),{kind:cD.SpanKind.CLIENT,attributes:W}),w=(0,F5A.once)((j)=>{if(E.removeListener("done",F),E.removeListener("doneInProc",F),E.removeListener("doneProc",G),E.removeListener("error",w),this.removeListener("end",w),X.setAttribute("tedious.procedure_count",Y),X.setAttribute("tedious.statement_count",J),j)X.setStatus({code:cD.SpanStatusCode.ERROR,message:j.message});X.end()});if(E.on("done",F),E.on("doneInProc",F),E.on("doneProc",G),E.once("error",w),this.on("end",w),typeof E.callback==="function")I._wrap(E,"callback",I._patchCallbackQuery(w));else I._diag.error("Expected request.callback to be a function");let K=()=>{return cD.context.with(cD.trace.setSpan(cD.context.active(),X),B,this,...arguments)};if(!(I.getConfig().enableTraceContextPropagation&&I._shouldInjectFor(A)))return K();let N=I._buildTraceparent(X);I._injectContextInfo(this,Q,N).finally(K)}return Object.defineProperty(C,"length",{value:B.length,writable:!1}),C}}_patchCallbackQuery(A){return(Q)=>{return function(B,I,C){return A(B),Q.apply(this,arguments)}}}}W5A.TediousInstrumentation=YN});var w5A=U((JN)=>{Object.defineProperty(JN,"__esModule",{value:!0});JN.TediousInstrumentation=void 0;var t5Q=U5A();Object.defineProperty(JN,"TediousInstrumentation",{enumerable:!0,get:function(){return t5Q.TediousInstrumentation}})});var M5A=U((L5A)=>{Object.defineProperty(L5A,"__esModule",{value:!0});L5A.PACKAGE_NAME=L5A.PACKAGE_VERSION=void 0;L5A.PACKAGE_VERSION="0.56.0";L5A.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"});var O5A=U((R5A)=>{Object.defineProperty(R5A,"__esModule",{value:!0});R5A.GenericPoolInstrumentation=void 0;var uD=P(),UF=JA(),N5A=M5A(),FN="generic-pool";class j5A extends UF.InstrumentationBase{_isDisabled=!1;constructor(A={}){super(N5A.PACKAGE_NAME,N5A.PACKAGE_VERSION,A)}init(){return[new UF.InstrumentationNodeModuleDefinition(FN,[">=3.0.0 <4"],(A)=>{let Q=A.Pool;if((0,UF.isWrapped)(Q.prototype.acquire))this._unwrap(Q.prototype,"acquire");return this._wrap(Q.prototype,"acquire",this._acquirePatcher.bind(this)),A},(A)=>{let Q=A.Pool;return this._unwrap(Q.prototype,"acquire"),A}),new UF.InstrumentationNodeModuleDefinition(FN,[">=2.4.0 <3"],(A)=>{let Q=A.Pool;if((0,UF.isWrapped)(Q.prototype.acquire))this._unwrap(Q.prototype,"acquire");return this._wrap(Q.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),A},(A)=>{let Q=A.Pool;return this._unwrap(Q.prototype,"acquire"),A}),new UF.InstrumentationNodeModuleDefinition(FN,[">=2.0.0 <2.4"],(A)=>{if(this._isDisabled=!1,(0,UF.isWrapped)(A.Pool))this._unwrap(A,"Pool");return this._wrap(A,"Pool",this._poolWrapper.bind(this)),A},(A)=>{return this._isDisabled=!0,A})]}_acquirePatcher(A){let Q=this;return function(...I){let C=uD.context.active(),E=Q.tracer.startSpan("generic-pool.acquire",{},C);return uD.context.with(uD.trace.setSpan(C,E),()=>{return A.call(this,...I).then((Y)=>{return E.end(),Y},(Y)=>{throw E.recordException(Y),E.end(),Y})})}}_poolWrapper(A){let Q=this;return function(){let I=A.apply(this,arguments);return Q._wrap(I,"acquire",Q._acquireWithCallbacksPatcher.bind(Q)),I}}_acquireWithCallbacksPatcher(A){let Q=this;return function(I,C){if(Q._isDisabled)return A.call(this,I,C);let E=uD.context.active(),Y=Q.tracer.startSpan("generic-pool.acquire",{},E);return uD.context.with(uD.trace.setSpan(E,Y),()=>{A.call(this,(J,F)=>{if(Y.end(),I)return I(J,F)},C)})}}}R5A.GenericPoolInstrumentation=j5A});var T5A=U((GN)=>{Object.defineProperty(GN,"__esModule",{value:!0});GN.GenericPoolInstrumentation=void 0;var IwQ=O5A();Object.defineProperty(GN,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return IwQ.GenericPoolInstrumentation}})});var DN=U((_5A)=>{Object.defineProperty(_5A,"__esModule",{value:!0});_5A.ATTR_NET_PEER_PORT=_5A.ATTR_NET_PEER_NAME=_5A.ATTR_MESSAGING_SYSTEM=_5A.ATTR_MESSAGING_OPERATION=void 0;_5A.ATTR_MESSAGING_OPERATION="messaging.operation";_5A.ATTR_MESSAGING_SYSTEM="messaging.system";_5A.ATTR_NET_PEER_NAME="net.peer.name";_5A.ATTR_NET_PEER_PORT="net.peer.port"});var ZN=U((g5A)=>{Object.defineProperty(g5A,"__esModule",{value:!0});g5A.ATTR_MESSAGING_CONVERSATION_ID=g5A.OLD_ATTR_MESSAGING_MESSAGE_ID=g5A.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=g5A.ATTR_MESSAGING_URL=g5A.ATTR_MESSAGING_PROTOCOL_VERSION=g5A.ATTR_MESSAGING_PROTOCOL=g5A.MESSAGING_OPERATION_VALUE_PROCESS=g5A.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=g5A.ATTR_MESSAGING_DESTINATION_KIND=g5A.ATTR_MESSAGING_DESTINATION=void 0;g5A.ATTR_MESSAGING_DESTINATION="messaging.destination";g5A.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind";g5A.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key";g5A.MESSAGING_OPERATION_VALUE_PROCESS="process";g5A.ATTR_MESSAGING_PROTOCOL="messaging.protocol";g5A.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version";g5A.ATTR_MESSAGING_URL="messaging.url";g5A.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic";g5A.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id";g5A.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"});var WN=U((v5A)=>{Object.defineProperty(v5A,"__esModule",{value:!0});v5A.DEFAULT_CONFIG=v5A.EndOperation=void 0;var VwQ;(function(A){A.AutoAck="auto ack",A.Ack="ack",A.AckAll="ackAll",A.Reject="reject",A.Nack="nack",A.NackAll="nackAll",A.ChannelClosed="channel closed",A.ChannelError="channel error",A.InstrumentationTimeout="instrumentation timeout"})(VwQ=v5A.EndOperation||(v5A.EndOperation={}));v5A.DEFAULT_CONFIG={consumeTimeoutMs:60000,useLinksForConsume:!1}});var p5A=U((u5A)=>{Object.defineProperty(u5A,"__esModule",{value:!0});u5A.isConfirmChannelTracing=u5A.unmarkConfirmChannelTracing=u5A.markConfirmChannelTracing=u5A.getConnectionAttributesFromUrl=u5A.getConnectionAttributesFromServer=u5A.normalizeExchange=u5A.CONNECTION_ATTRIBUTES=u5A.CHANNEL_CONSUME_TIMEOUT_TIMER=u5A.CHANNEL_SPANS_NOT_ENDED=u5A.MESSAGE_STORED_SPAN=void 0;var XN=P(),vY=JA(),Ww=HA(),hW=DN(),Xw=ZN();u5A.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span");u5A.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended");u5A.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer");u5A.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");var UN=(0,XN.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel"),$wQ=(A)=>A!==""?A:"";u5A.normalizeExchange=$wQ;var LwQ=(A)=>{return A.replace(/:[^:@/]*@/,":***@")},m5A=(A,Q)=>{return A||(Q==="AMQP"?5672:5671)},d5A=(A)=>{let Q=A||"amqp";return(Q.endsWith(":")?Q.substring(0,Q.length-1):Q).toUpperCase()},c5A=(A)=>{return A||"localhost"},KE=(A,Q,B,I)=>{if(B)return{[Q]:B};else return XN.diag.error(`amqplib instrumentation: could not extract connection attribute ${I} from user supplied url`,{url:A}),{}},HwQ=(A)=>{let Q=A.serverProperties.product?.toLowerCase?.();if(Q)return{[hW.ATTR_MESSAGING_SYSTEM]:Q};else return{}};u5A.getConnectionAttributesFromServer=HwQ;var MwQ=(A,Q)=>{let B={[Xw.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if(A=A||"amqp://localhost",typeof A==="object"){let I=A,C=d5A(I?.protocol);Object.assign(B,{...KE(A,Xw.ATTR_MESSAGING_PROTOCOL,C,"protocol")});let E=c5A(I?.hostname);if(Q&vY.SemconvStability.OLD)Object.assign(B,{...KE(A,hW.ATTR_NET_PEER_NAME,E,"hostname")});if(Q&vY.SemconvStability.STABLE)Object.assign(B,{...KE(A,Ww.ATTR_SERVER_ADDRESS,E,"hostname")});let Y=m5A(I.port,C);if(Q&vY.SemconvStability.OLD)Object.assign(B,KE(A,hW.ATTR_NET_PEER_PORT,Y,"port"));if(Q&vY.SemconvStability.STABLE)Object.assign(B,KE(A,Ww.ATTR_SERVER_PORT,Y,"port"))}else{let I=LwQ(A);B[Xw.ATTR_MESSAGING_URL]=I;try{let C=new URL(I),E=d5A(C.protocol);Object.assign(B,{...KE(I,Xw.ATTR_MESSAGING_PROTOCOL,E,"protocol")});let Y=c5A(C.hostname);if(Q&vY.SemconvStability.OLD)Object.assign(B,{...KE(I,hW.ATTR_NET_PEER_NAME,Y,"hostname")});if(Q&vY.SemconvStability.STABLE)Object.assign(B,{...KE(I,Ww.ATTR_SERVER_ADDRESS,Y,"hostname")});let J=m5A(C.port?parseInt(C.port):void 0,E);if(Q&vY.SemconvStability.OLD)Object.assign(B,KE(I,hW.ATTR_NET_PEER_PORT,J,"port"));if(Q&vY.SemconvStability.STABLE)Object.assign(B,KE(I,Ww.ATTR_SERVER_PORT,J,"port"))}catch(C){XN.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:I,err:C})}}return B};u5A.getConnectionAttributesFromUrl=MwQ;var NwQ=(A)=>{return A.setValue(UN,!0)};u5A.markConfirmChannelTracing=NwQ;var jwQ=(A)=>{return A.deleteValue(UN)};u5A.unmarkConfirmChannelTracing=jwQ;var RwQ=(A)=>{return A.getValue(UN)===!0};u5A.isConfirmChannelTracing=RwQ});var a5A=U((i5A)=>{Object.defineProperty(i5A,"__esModule",{value:!0});i5A.PACKAGE_NAME=i5A.PACKAGE_VERSION=void 0;i5A.PACKAGE_VERSION="0.60.0";i5A.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"});var e5A=U((r5A)=>{Object.defineProperty(r5A,"__esModule",{value:!0});r5A.AmqplibInstrumentation=void 0;var DQ=P(),Uw=hA(),kA=JA(),hwQ=DN(),PI=ZN(),hB=WN(),wQ=p5A(),o5A=a5A(),ww=[">=0.5.5 <1"];class s5A extends kA.InstrumentationBase{_netSemconvStability;constructor(A={}){super(o5A.PACKAGE_NAME,o5A.PACKAGE_VERSION,{...hB.DEFAULT_CONFIG,...A});this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,kA.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(A={}){super.setConfig({...hB.DEFAULT_CONFIG,...A})}init(){let A=new kA.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",ww,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),Q=new kA.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",ww,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),B=new kA.InstrumentationNodeModuleFile("amqplib/lib/connect.js",ww,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new kA.InstrumentationNodeModuleDefinition("amqplib",ww,void 0,void 0,[A,B,Q])}patchConnect(A){if(A=this.unpatchConnect(A),!(0,kA.isWrapped)(A.connect))this._wrap(A,"connect",this.getConnectPatch.bind(this));return A}unpatchConnect(A){if((0,kA.isWrapped)(A.connect))this._unwrap(A,"connect");return A}patchChannelModel(A,Q){if(!(0,kA.isWrapped)(A.Channel.prototype.publish))this._wrap(A.Channel.prototype,"publish",this.getPublishPatch.bind(this,Q));if(!(0,kA.isWrapped)(A.Channel.prototype.consume))this._wrap(A.Channel.prototype,"consume",this.getConsumePatch.bind(this,Q));if(!(0,kA.isWrapped)(A.Channel.prototype.ack))this._wrap(A.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,hB.EndOperation.Ack));if(!(0,kA.isWrapped)(A.Channel.prototype.nack))this._wrap(A.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,hB.EndOperation.Nack));if(!(0,kA.isWrapped)(A.Channel.prototype.reject))this._wrap(A.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,hB.EndOperation.Reject));if(!(0,kA.isWrapped)(A.Channel.prototype.ackAll))this._wrap(A.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,hB.EndOperation.AckAll));if(!(0,kA.isWrapped)(A.Channel.prototype.nackAll))this._wrap(A.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,hB.EndOperation.NackAll));if(!(0,kA.isWrapped)(A.Channel.prototype.emit))this._wrap(A.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this));if(!(0,kA.isWrapped)(A.ConfirmChannel.prototype.publish))this._wrap(A.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,Q));return A}unpatchChannelModel(A){if((0,kA.isWrapped)(A.Channel.prototype.publish))this._unwrap(A.Channel.prototype,"publish");if((0,kA.isWrapped)(A.Channel.prototype.consume))this._unwrap(A.Channel.prototype,"consume");if((0,kA.isWrapped)(A.Channel.prototype.ack))this._unwrap(A.Channel.prototype,"ack");if((0,kA.isWrapped)(A.Channel.prototype.nack))this._unwrap(A.Channel.prototype,"nack");if((0,kA.isWrapped)(A.Channel.prototype.reject))this._unwrap(A.Channel.prototype,"reject");if((0,kA.isWrapped)(A.Channel.prototype.ackAll))this._unwrap(A.Channel.prototype,"ackAll");if((0,kA.isWrapped)(A.Channel.prototype.nackAll))this._unwrap(A.Channel.prototype,"nackAll");if((0,kA.isWrapped)(A.Channel.prototype.emit))this._unwrap(A.Channel.prototype,"emit");if((0,kA.isWrapped)(A.ConfirmChannel.prototype.publish))this._unwrap(A.ConfirmChannel.prototype,"publish");return A}getConnectPatch(A){let Q=this;return function(I,C,E){return A.call(this,I,C,function(Y,J){if(Y==null){let F=(0,wQ.getConnectionAttributesFromUrl)(I,Q._netSemconvStability),G=(0,wQ.getConnectionAttributesFromServer)(J);J[wQ.CONNECTION_ATTRIBUTES]={...F,...G}}E.apply(this,arguments)})}}getChannelEmitPatch(A){let Q=this;return function(I){if(I==="close"){Q.endAllSpansOnChannel(this,!0,hB.EndOperation.ChannelClosed,void 0);let C=this[wQ.CHANNEL_CONSUME_TIMEOUT_TIMER];if(C)clearInterval(C);this[wQ.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else if(I==="error")Q.endAllSpansOnChannel(this,!0,hB.EndOperation.ChannelError,void 0);return A.apply(this,arguments)}}getAckAllPatch(A,Q,B){let I=this;return function(E){return I.endAllSpansOnChannel(this,A,Q,E),B.apply(this,arguments)}}getAckPatch(A,Q,B){let I=this;return function(E,Y,J){let F=this,G=Q===hB.EndOperation.Reject?Y:J,D=F[wQ.CHANNEL_SPANS_NOT_ENDED]??[],Z=D.findIndex((W)=>W.msg===E);if(Z<0)I.endConsumerSpan(E,A,Q,G);else if(Q!==hB.EndOperation.Reject&&Y){for(let W=0;W<=Z;W++)I.endConsumerSpan(D[W].msg,A,Q,G);D.splice(0,Z+1)}else I.endConsumerSpan(E,A,Q,G),D.splice(Z,1);return B.apply(this,arguments)}}getConsumePatch(A,Q){let B=this;return function(C,E,Y){let J=this;if(!Object.prototype.hasOwnProperty.call(J,wQ.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:G}=B.getConfig();if(G){let D=setInterval(()=>{B.checkConsumeTimeoutOnChannel(J)},G);D.unref(),J[wQ.CHANNEL_CONSUME_TIMEOUT_TIMER]=D}J[wQ.CHANNEL_SPANS_NOT_ENDED]=[]}let F=function(G){if(!G)return E.call(this,G);let D=G.properties.headers??{},Z=DQ.propagation.extract(DQ.ROOT_CONTEXT,D),W=G.fields?.exchange,X;if(B._config.useLinksForConsume){let $=Z?DQ.trace.getSpan(Z)?.spanContext():void 0;if(Z=void 0,$)X=[{context:$}]}let w=B.tracer.startSpan(`${C} process`,{kind:DQ.SpanKind.CONSUMER,attributes:{...J?.connection?.[wQ.CONNECTION_ATTRIBUTES],[PI.ATTR_MESSAGING_DESTINATION]:W,[PI.ATTR_MESSAGING_DESTINATION_KIND]:PI.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[PI.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:G.fields?.routingKey,[hwQ.ATTR_MESSAGING_OPERATION]:PI.MESSAGING_OPERATION_VALUE_PROCESS,[PI.OLD_ATTR_MESSAGING_MESSAGE_ID]:G?.properties.messageId,[PI.ATTR_MESSAGING_CONVERSATION_ID]:G?.properties.correlationId},links:X},Z),{consumeHook:K}=B.getConfig();if(K)(0,kA.safeExecuteInTheMiddle)(()=>K(w,{moduleVersion:A,msg:G}),($)=>{if($)DQ.diag.error("amqplib instrumentation: consumerHook error",$)},!0);if(!Y?.noAck)J[wQ.CHANNEL_SPANS_NOT_ENDED].push({msg:G,timeOfConsume:(0,Uw.hrTime)()}),G[wQ.MESSAGE_STORED_SPAN]=w;let z=Z?Z:DQ.ROOT_CONTEXT;if(DQ.context.with(DQ.trace.setSpan(z,w),()=>{E.call(this,G)}),Y?.noAck)B.callConsumeEndHook(w,G,!1,hB.EndOperation.AutoAck),w.end()};return arguments[1]=F,Q.apply(this,arguments)}}getConfirmedPublishPatch(A,Q){let B=this;return function(C,E,Y,J,F){let G=this,{span:D,modifiedOptions:Z}=B.createPublishSpan(B,C,E,G,J),{publishHook:W}=B.getConfig();if(W)(0,kA.safeExecuteInTheMiddle)(()=>W(D,{moduleVersion:A,exchange:C,routingKey:E,content:Y,options:Z,isConfirmChannel:!0}),(z)=>{if(z)DQ.diag.error("amqplib instrumentation: publishHook error",z)},!0);let X=function(z,$){try{F?.call(this,z,$)}finally{let{publishConfirmHook:N}=B.getConfig();if(N)(0,kA.safeExecuteInTheMiddle)(()=>N(D,{moduleVersion:A,exchange:C,routingKey:E,content:Y,options:J,isConfirmChannel:!0,confirmError:z}),(j)=>{if(j)DQ.diag.error("amqplib instrumentation: publishConfirmHook error",j)},!0);if(z)D.setStatus({code:DQ.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"});D.end()}},w=(0,wQ.markConfirmChannelTracing)(DQ.context.active()),K=[...arguments];return K[3]=Z,K[4]=DQ.context.bind((0,wQ.unmarkConfirmChannelTracing)(DQ.trace.setSpan(w,D)),X),DQ.context.with(w,Q.bind(this,...K))}}getPublishPatch(A,Q){let B=this;return function(C,E,Y,J){if((0,wQ.isConfirmChannelTracing)(DQ.context.active()))return Q.apply(this,arguments);else{let F=this,{span:G,modifiedOptions:D}=B.createPublishSpan(B,C,E,F,J),{publishHook:Z}=B.getConfig();if(Z)(0,kA.safeExecuteInTheMiddle)(()=>Z(G,{moduleVersion:A,exchange:C,routingKey:E,content:Y,options:D,isConfirmChannel:!1}),(w)=>{if(w)DQ.diag.error("amqplib instrumentation: publishHook error",w)},!0);let W=[...arguments];W[3]=D;let X=Q.apply(this,W);return G.end(),X}}}createPublishSpan(A,Q,B,I,C){let E=(0,wQ.normalizeExchange)(Q),Y=A.tracer.startSpan(`publish ${E}`,{kind:DQ.SpanKind.PRODUCER,attributes:{...I.connection[wQ.CONNECTION_ATTRIBUTES],[PI.ATTR_MESSAGING_DESTINATION]:Q,[PI.ATTR_MESSAGING_DESTINATION_KIND]:PI.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[PI.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:B,[PI.OLD_ATTR_MESSAGING_MESSAGE_ID]:C?.messageId,[PI.ATTR_MESSAGING_CONVERSATION_ID]:C?.correlationId}}),J=C??{};return J.headers=J.headers??{},DQ.propagation.inject(DQ.trace.setSpan(DQ.context.active(),Y),J.headers),{span:Y,modifiedOptions:J}}endConsumerSpan(A,Q,B,I){let C=A[wQ.MESSAGE_STORED_SPAN];if(!C)return;if(Q!==!1)C.setStatus({code:DQ.SpanStatusCode.ERROR,message:B!==hB.EndOperation.ChannelClosed&&B!==hB.EndOperation.ChannelError?`${B} called on message${I===!0?" with requeue":I===!1?" without requeue":""}`:B});this.callConsumeEndHook(C,A,Q,B),C.end(),A[wQ.MESSAGE_STORED_SPAN]=void 0}endAllSpansOnChannel(A,Q,B,I){(A[wQ.CHANNEL_SPANS_NOT_ENDED]??[]).forEach((E)=>{this.endConsumerSpan(E.msg,Q,B,I)}),A[wQ.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(A,Q,B,I){let{consumeEndHook:C}=this.getConfig();if(!C)return;(0,kA.safeExecuteInTheMiddle)(()=>C(A,{msg:Q,rejected:B,endOperation:I}),(E)=>{if(E)DQ.diag.error("amqplib instrumentation: consumerEndHook error",E)},!0)}checkConsumeTimeoutOnChannel(A){let Q=(0,Uw.hrTime)(),B=A[wQ.CHANNEL_SPANS_NOT_ENDED]??[],I,{consumeTimeoutMs:C}=this.getConfig();for(I=0;I{Object.defineProperty(xW,"__esModule",{value:!0});xW.EndOperation=xW.DEFAULT_CONFIG=xW.AmqplibInstrumentation=void 0;var xwQ=e5A();Object.defineProperty(xW,"AmqplibInstrumentation",{enumerable:!0,get:function(){return xwQ.AmqplibInstrumentation}});var AwA=WN();Object.defineProperty(xW,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return AwA.DEFAULT_CONFIG}});Object.defineProperty(xW,"EndOperation",{enumerable:!0,get:function(){return AwA.EndOperation}})});var dN=U((bN,mN)=>{(function(A,Q){typeof bN==="object"&&typeof mN<"u"?mN.exports=Q():typeof define==="function"&&define.amd?define(Q):A.Bottleneck=Q()})(bN,function(){var A=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Q(v){return v&&v.default||v}var B=function(v,V,H={}){var R,T,q;for(R in V)q=V[R],H[R]=(T=v[R])!=null?T:q;return H},I=function(v,V,H={}){var R,T;for(R in v)if(T=v[R],V[R]!==void 0)H[R]=T;return H},C={load:B,overwrite:I},E;E=class{constructor(V,H){this.incr=V,this.decr=H,this._first=null,this._last=null,this.length=0}push(V){var H;if(this.length++,typeof this.incr==="function")this.incr();if(H={value:V,prev:this._last,next:null},this._last!=null)this._last.next=H,this._last=H;else this._first=this._last=H;return}shift(){var V;if(this._first==null)return;else if(this.length--,typeof this.decr==="function")this.decr();if(V=this._first.value,(this._first=this._first.next)!=null)this._first.prev=null;else this._last=null;return V}first(){if(this._first!=null)return this._first.value}getArray(){var V,H,R;V=this._first,R=[];while(V!=null)R.push((H=V,V=V.next,H.value));return R}forEachShift(V){var H=this.shift();while(H!=null)V(H),H=this.shift();return}debug(){var V,H,R,T,q;V=this._first,q=[];while(V!=null)q.push((H=V,V=V.next,{value:H.value,prev:(R=H.prev)!=null?R.value:void 0,next:(T=H.next)!=null?T.value:void 0}));return q}};var Y=E,J;J=class{constructor(V){if(this.instance=V,this._events={},this.instance.on!=null||this.instance.once!=null||this.instance.removeAllListeners!=null)throw Error("An Emitter already exists for this object");this.instance.on=(H,R)=>{return this._addListener(H,"many",R)},this.instance.once=(H,R)=>{return this._addListener(H,"once",R)},this.instance.removeAllListeners=(H=null)=>{if(H!=null)return delete this._events[H];else return this._events={}}}_addListener(V,H,R){var T;if((T=this._events)[V]==null)T[V]=[];return this._events[V].push({cb:R,status:H}),this.instance}listenerCount(V){if(this._events[V]!=null)return this._events[V].length;else return 0}async trigger(V,...H){var R,T;try{if(V!=="debug")this.trigger("debug",`Event triggered: ${V}`,H);if(this._events[V]==null)return;return this._events[V]=this._events[V].filter(function(q){return q.status!=="none"}),T=this._events[V].map(async(q)=>{var c,wA;if(q.status==="none")return;if(q.status==="once")q.status="none";try{if(wA=typeof q.cb==="function"?q.cb(...H):void 0,typeof(wA!=null?wA.then:void 0)==="function")return await wA;else return wA}catch(EQ){return c=EQ,this.trigger("error",c),null}}),(await Promise.all(T)).find(function(q){return q!=null})}catch(q){return R=q,this.trigger("error",R),null}}};var F=J,G,D,Z;G=Y,D=F,Z=class{constructor(V){var H;this.Events=new D(this),this._length=0,this._lists=function(){var R,T,q;q=[];for(H=R=1,T=V;1<=T?R<=T:R>=T;H=1<=T?++R:--R)q.push(new G(()=>{return this.incr()},()=>{return this.decr()}));return q}.call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(V){return this._lists[V.options.priority].push(V)}queued(V){if(V!=null)return this._lists[V].length;else return this._length}shiftAll(V){return this._lists.forEach(function(H){return H.forEachShift(V)})}getFirst(V=this._lists){var H,R,T;for(H=0,R=V.length;H0)return T;return[]}shiftLastFrom(V){return this.getFirst(this._lists.slice(V).reverse()).shift()}};var W=Z,X;X=class extends Error{};var w=X,K,z,$,N,j;N=10,z=5,j=C,K=w,$=class{constructor(V,H,R,T,q,c,wA,EQ){if(this.task=V,this.args=H,this.rejectOnDrop=q,this.Events=c,this._states=wA,this.Promise=EQ,this.options=j.load(R,T),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===T.id)this.options.id=`${this.options.id}-${this._randomIndex()}`;this.promise=new this.Promise((CB,dY)=>{this._resolve=CB,this._reject=dY}),this.retryCount=0}_sanitizePriority(V){var H=~~V!==V?z:V;if(H<0)return 0;else if(H>N-1)return N-1;else return H}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:V,message:H="This job has been dropped by Bottleneck"}={}){if(this._states.remove(this.options.id)){if(this.rejectOnDrop)this._reject(V!=null?V:new K(H));return this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0}else return!1}_assertStatus(V){var H=this._states.jobStatus(this.options.id);if(!(H===V||V==="DONE"&&H===null))throw new K(`Invalid job status ${H}, expected ${V}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(V,H){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:V,blocked:H})}doRun(){if(this.retryCount===0)this._assertStatus("QUEUED"),this._states.next(this.options.id);else this._assertStatus("EXECUTING");return this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(V,H,R,T){var q,c,wA;if(this.retryCount===0)this._assertStatus("RUNNING"),this._states.next(this.options.id);else this._assertStatus("EXECUTING");c={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",c);try{if(wA=await(V!=null?V.schedule(this.options,this.task,...this.args):this.task(...this.args)),H())return this.doDone(c),await T(this.options,c),this._assertStatus("DONE"),this._resolve(wA)}catch(EQ){return q=EQ,this._onFailure(q,c,H,R,T)}}doExpire(V,H,R){var T,q;if(this._states.jobStatus(this.options.id==="RUNNING"))this._states.next(this.options.id);return this._assertStatus("EXECUTING"),q={args:this.args,options:this.options,retryCount:this.retryCount},T=new K(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(T,q,V,H,R)}async _onFailure(V,H,R,T,q){var c,wA;if(R())if(c=await this.Events.trigger("failed",V,H),c!=null)return wA=~~c,this.Events.trigger("retry",`Retrying ${this.options.id} after ${wA} ms`,H),this.retryCount++,T(wA);else return this.doDone(H),await q(this.options,H),this._assertStatus("DONE"),this._reject(V)}doDone(V){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",V)}};var O=$,k,g,x;x=C,k=w,g=class{constructor(V,H,R){this.instance=V,this.storeOptions=H,this.clientId=this.instance._randomIndex(),x.load(R,R,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var V;if(this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null))return typeof(V=this.heartbeat=setInterval(()=>{var H,R,T,q,c;if(q=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&q>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval)this._lastReservoirRefresh=q,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity());if(this.storeOptions.reservoirIncreaseInterval!=null&&q>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval){if({reservoirIncreaseAmount:H,reservoirIncreaseMaximum:T,reservoir:c}=this.storeOptions,this._lastReservoirIncrease=q,R=T!=null?Math.min(H,T-c):H,R>0)return this.storeOptions.reservoir+=R,this.instance._drainAll(this.computeCapacity())}},this.heartbeatInterval)).unref==="function"?V.unref():void 0;else return clearInterval(this.heartbeat)}async __publish__(V){return await this.yieldLoop(),this.instance.Events.trigger("message",V.toString())}async __disconnect__(V){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(V=0){return new this.Promise(function(H,R){return setTimeout(H,V)})}computePenalty(){var V;return(V=this.storeOptions.penalty)!=null?V:15*this.storeOptions.minTime||5000}async __updateSettings__(V){return await this.yieldLoop(),x.overwrite(V,V,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(V){return await this.yieldLoop(),this._nextRequest+this.timeout=V}check(V,H){return this.conditionsCheck(V)&&this._nextRequest-H<=0}async __check__(V){var H;return await this.yieldLoop(),H=Date.now(),this.check(V,H)}async __register__(V,H,R){var T,q;if(await this.yieldLoop(),T=Date.now(),this.conditionsCheck(H)){if(this._running+=H,this.storeOptions.reservoir!=null)this.storeOptions.reservoir-=H;return q=Math.max(this._nextRequest-T,0),this._nextRequest=T+q+this.storeOptions.minTime,{success:!0,wait:q,reservoir:this.storeOptions.reservoir}}else return{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(V,H){var R,T,q;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&H>this.storeOptions.maxConcurrent)throw new k(`Impossible to add a job having a weight of ${H} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);if(T=Date.now(),q=this.storeOptions.highWater!=null&&V===this.storeOptions.highWater&&!this.check(H,T),R=this.strategyIsBlock()&&(q||this.isBlocked(T)),R)this._unblockTime=T+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued();return{reachedHWM:q,blocked:R,strategy:this.storeOptions.strategy}}async __free__(V,H){return await this.yieldLoop(),this._running-=H,this._done+=H,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var dA=g,cA,qQ;cA=w,qQ=class{constructor(V){this.status=V,this._jobs={},this.counts=this.status.map(function(){return 0})}next(V){var H,R;if(H=this._jobs[V],R=H+1,H!=null&&R{return V[this.status[R]]=H,V},{})}};var IB=qQ,ZQ,tA;ZQ=Y,tA=class{constructor(V,H){this.schedule=this.schedule.bind(this),this.name=V,this.Promise=H,this._running=0,this._queue=new ZQ}isEmpty(){return this._queue.length===0}async _tryToRun(){var V,H,R,T,q,c,wA;if(this._running<1&&this._queue.length>0)return this._running++,{task:wA,args:V,resolve:q,reject:T}=this._queue.shift(),H=await async function(){try{return c=await wA(...V),function(){return q(c)}}catch(EQ){return R=EQ,function(){return T(R)}}}(),this._running--,this._tryToRun(),H()}schedule(V,...H){var R,T,q;return q=T=null,R=new this.Promise(function(c,wA){return q=c,T=wA}),this._queue.push({task:V,args:H,resolve:q,reject:T}),this._tryToRun(),R}};var mY=tA,ZC="2.19.5",HE={version:ZC},HF=Object.freeze({version:ZC,default:HE}),AZ=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),QZ=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),izA=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Pj,kj,Sj,yj,_j,Y8;Y8=C,Pj=F,yj=AZ,Sj=QZ,_j=izA,kj=function(){class v{constructor(V={}){if(this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=V,Y8.load(this.limiterOptions,this.defaults,this),this.Events=new Pj(this),this.instances={},this.Bottleneck=lj,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null){if(this.limiterOptions.datastore==="redis")this.connection=new yj(Object.assign({},this.limiterOptions,{Events:this.Events}));else if(this.limiterOptions.datastore==="ioredis")this.connection=new Sj(Object.assign({},this.limiterOptions,{Events:this.Events}))}}key(V=""){var H;return(H=this.instances[V])!=null?H:(()=>{var R=this.instances[V]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${V}`,timeout:this.timeout,connection:this.connection}));return this.Events.trigger("created",R,V),R})()}async deleteKey(V=""){var H,R;if(R=this.instances[V],this.connection)H=await this.connection.__runCommand__(["del",..._j.allKeys(`${this.id}-${V}`)]);if(R!=null)delete this.instances[V],await R.disconnect();return R!=null||H>0}limiters(){var V,H,R,T;H=this.instances,R=[];for(V in H)T=H[V],R.push({key:V,limiter:T});return R}keys(){return Object.keys(this.instances)}async clusterKeys(){var V,H,R,T,q,c,wA,EQ,CB;if(this.connection==null)return this.Promise.resolve(this.keys());c=[],V=null,CB=`b_${this.id}-`.length,H=9;while(V!==0){[EQ,R]=await this.connection.__runCommand__(["scan",V!=null?V:0,"match",`b_${this.id}-*_settings`,"count",1e4]),V=~~EQ;for(T=0,wA=R.length;T{var H,R,T,q,c,wA;c=Date.now(),T=this.instances,q=[];for(R in T){wA=T[R];try{if(await wA._store.__groupCheck__(c))q.push(this.deleteKey(R));else q.push(void 0)}catch(EQ){H=EQ,q.push(wA.Events.trigger("error",H))}}return q},this.timeout/2)).unref==="function"?V.unref():void 0}updateSettings(V={}){if(Y8.overwrite(V,this.defaults,this),Y8.overwrite(V,V,this.limiterOptions),V.timeout!=null)return this._startAutoCleanup()}disconnect(V=!0){var H;if(!this.sharedConnection)return(H=this.connection)!=null?H.disconnect(V):void 0}}return v.prototype.defaults={timeout:300000,connection:null,Promise,id:"group-key"},v}.call(A);var nzA=kj,fj,gj,hj;hj=C,gj=F,fj=function(){class v{constructor(V={}){this.options=V,hj.load(this.options,this.defaults,this),this.Events=new gj(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((V,H)=>{return this._resolve=V})}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(V){var H;if(this._arr.push(V),H=this._promise,this._arr.length===this.maxSize)this._flush();else if(this.maxTime!=null&&this._arr.length===1)this._timeout=setTimeout(()=>{return this._flush()},this.maxTime);return H}}return v.prototype.defaults={maxTime:null,maxSize:null,Promise},v}.call(A);var azA=fj,ozA=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),szA=Q(HF),xj,vj,YK,JK,bj,FK,mj,dj,cj,GK,mC,uj=[].splice;FK=10,vj=5,mC=C,mj=W,JK=O,bj=dA,dj=ozA,YK=F,cj=IB,GK=mY,xj=function(){class v{constructor(V={},...H){var R,T;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(V,H),mC.load(V,this.instanceDefaults,this),this._queues=new mj(FK),this._scheduled={},this._states=new cj(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new YK(this),this._submitLock=new GK("submit",this.Promise),this._registerLock=new GK("register",this.Promise),T=mC.load(V,this.storeDefaults,{}),this._store=function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return R=mC.load(V,this.redisStoreDefaults,{}),new dj(this,T,R);else if(this.datastore==="local")return R=mC.load(V,this.localStoreDefaults,{}),new bj(this,T,R);else throw new v.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}.call(this),this._queues.on("leftzero",()=>{var q;return(q=this._store.heartbeat)!=null?typeof q.ref==="function"?q.ref():void 0:void 0}),this._queues.on("zero",()=>{var q;return(q=this._store.heartbeat)!=null?typeof q.unref==="function"?q.unref():void 0:void 0})}_validateOptions(V,H){if(!(V!=null&&typeof V==="object"&&H.length===0))throw new v.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(V){return this._store.__publish__(V)}disconnect(V=!0){return this._store.__disconnect__(V)}chain(V){return this._limiter=V,this}queued(V){return this._queues.queued(V)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(V){return this._states.jobStatus(V)}jobs(V){return this._states.statusJobs(V)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(V=1){return this._store.__check__(V)}_clearGlobalState(V){if(this._scheduled[V]!=null)return clearTimeout(this._scheduled[V].expiration),delete this._scheduled[V],!0;else return!1}async _free(V,H,R,T){var q,c;try{if({running:c}=await this._store.__free__(V,R.weight),this.Events.trigger("debug",`Freed ${R.id}`,T),c===0&&this.empty())return this.Events.trigger("idle")}catch(wA){return q=wA,this.Events.trigger("error",q)}}_run(V,H,R){var T,q,c;return H.doRun(),T=this._clearGlobalState.bind(this,V),c=this._run.bind(this,V,H),q=this._free.bind(this,V,H),this._scheduled[V]={timeout:setTimeout(()=>{return H.doExecute(this._limiter,T,c,q)},R),expiration:H.options.expiration!=null?setTimeout(function(){return H.doExpire(T,c,q)},R+H.options.expiration):void 0,job:H}}_drainOne(V){return this._registerLock.schedule(()=>{var H,R,T,q,c;if(this.queued()===0)return this.Promise.resolve(null);if(c=this._queues.getFirst(),{options:q,args:H}=T=c.first(),V!=null&&q.weight>V)return this.Promise.resolve(null);return this.Events.trigger("debug",`Draining ${q.id}`,{args:H,options:q}),R=this._randomIndex(),this._store.__register__(R,q.weight,q.expiration).then(({success:wA,wait:EQ,reservoir:CB})=>{var dY;if(this.Events.trigger("debug",`Drained ${q.id}`,{success:wA,args:H,options:q}),wA){if(c.shift(),dY=this.empty(),dY)this.Events.trigger("empty");if(CB===0)this.Events.trigger("depleted",dY);return this._run(R,T,EQ),this.Promise.resolve(q.weight)}else return this.Promise.resolve(null)})})}_drainAll(V,H=0){return this._drainOne(V).then((R)=>{var T;if(R!=null)return T=V!=null?V-R:V,this._drainAll(T,H+R);else return this.Promise.resolve(H)}).catch((R)=>{return this.Events.trigger("error",R)})}_dropAllQueued(V){return this._queues.shiftAll(function(H){return H.doDrop({message:V})})}stop(V={}){var H,R;return V=mC.load(V,this.stopDefaults),R=(T)=>{var q=()=>{var c=this._states.counts;return c[0]+c[1]+c[2]+c[3]===T};return new this.Promise((c,wA)=>{if(q())return c();else return this.on("done",()=>{if(q())return this.removeAllListeners("done"),c()})})},H=V.dropWaitingJobs?(this._run=function(T,q){return q.doDrop({message:V.dropErrorMessage})},this._drainOne=()=>{return this.Promise.resolve(null)},this._registerLock.schedule(()=>{return this._submitLock.schedule(()=>{var T,q,c;q=this._scheduled;for(T in q)if(c=q[T],this.jobStatus(c.job.options.id)==="RUNNING")clearTimeout(c.timeout),clearTimeout(c.expiration),c.job.doDrop({message:V.dropErrorMessage});return this._dropAllQueued(V.dropErrorMessage),R(0)})})):this.schedule({priority:FK-1,weight:0},()=>{return R(1)}),this._receive=function(T){return T._reject(new v.prototype.BottleneckError(V.enqueueErrorMessage))},this.stop=()=>{return this.Promise.reject(new v.prototype.BottleneckError("stop() has already been called"))},H}async _addToQueue(V){var H,R,T,q,c,wA,EQ;({args:H,options:q}=V);try{({reachedHWM:c,blocked:R,strategy:EQ}=await this._store.__submit__(this.queued(),q.weight))}catch(CB){return T=CB,this.Events.trigger("debug",`Could not queue ${q.id}`,{args:H,options:q,error:T}),V.doDrop({error:T}),!1}if(R)return V.doDrop(),!0;else if(c){if(wA=EQ===v.prototype.strategy.LEAK?this._queues.shiftLastFrom(q.priority):EQ===v.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(q.priority+1):EQ===v.prototype.strategy.OVERFLOW?V:void 0,wA!=null)wA.doDrop();if(wA==null||EQ===v.prototype.strategy.OVERFLOW){if(wA==null)V.doDrop();return c}}return V.doQueue(c,R),this._queues.push(V),await this._drainAll(),c}_receive(V){if(this._states.jobStatus(V.options.id)!=null)return V._reject(new v.prototype.BottleneckError(`A job with the same id already exists (id=${V.options.id})`)),!1;else return V.doReceive(),this._submitLock.schedule(this._addToQueue,V)}submit(...V){var H,R,T,q,c,wA,EQ;if(typeof V[0]==="function")c=V,[R,...V]=c,[H]=uj.call(V,-1),q=mC.load({},this.jobDefaults);else wA=V,[q,R,...V]=wA,[H]=uj.call(V,-1),q=mC.load(q,this.jobDefaults);return EQ=(...CB)=>{return new this.Promise(function(dY,tzA){return R(...CB,function(...pj){return(pj[0]!=null?tzA:dY)(pj)})})},T=new JK(EQ,V,q,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),T.promise.then(function(CB){return typeof H==="function"?H(...CB):void 0}).catch(function(CB){if(Array.isArray(CB))return typeof H==="function"?H(...CB):void 0;else return typeof H==="function"?H(CB):void 0}),this._receive(T)}schedule(...V){var H,R,T;if(typeof V[0]==="function")[T,...V]=V,R={};else[R,T,...V]=V;return H=new JK(T,V,R,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(H),H.promise}wrap(V){var H,R;return H=this.schedule.bind(this),R=function(...T){return H(V.bind(this),...T)},R.withOptions=function(T,...q){return H(T,V,...q)},R}async updateSettings(V={}){return await this._store.__updateSettings__(mC.overwrite(V,this.storeDefaults)),mC.overwrite(V,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(V=0){return this._store.__incrementReservoir__(V)}}return v.default=v,v.Events=YK,v.version=v.prototype.version=szA.version,v.strategy=v.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},v.BottleneckError=v.prototype.BottleneckError=w,v.Group=v.prototype.Group=nzA,v.RedisConnection=v.prototype.RedisConnection=AZ,v.IORedisConnection=v.prototype.IORedisConnection=QZ,v.Batcher=v.prototype.Batcher=azA,v.prototype.jobDefaults={priority:vj,weight:1,expiration:null,id:""},v.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:v.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},v.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},v.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5000,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},v.prototype.instanceDefaults={datastore:"local",connection:null,id:"",rejectOnDrop:!0,trackDoneStatus:!1,Promise},v.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},v}.call(A);var lj=xj,rzA=lj;return rzA})});var oW=U((FIB,N6A)=>{var AzQ=Number.MAX_SAFE_INTEGER||9007199254740991,QzQ=["major","premajor","minor","preminor","patch","prepatch","prerelease"];N6A.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:AzQ,RELEASE_TYPES:QzQ,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var sW=U((GIB,j6A)=>{var BzQ=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...A)=>console.error("SEMVER",...A):()=>{};j6A.exports=BzQ});var eD=U(($E,R6A)=>{var{MAX_SAFE_COMPONENT_LENGTH:eN,MAX_SAFE_BUILD_LENGTH:IzQ,MAX_LENGTH:CzQ}=oW(),EzQ=sW();$E=R6A.exports={};var YzQ=$E.re=[],JzQ=$E.safeRe=[],m=$E.src=[],FzQ=$E.safeSrc=[],d=$E.t={},GzQ=0,Aj="[a-zA-Z0-9-]",DzQ=[["\\s",1],["\\d",CzQ],[Aj,IzQ]],ZzQ=(A)=>{for(let[Q,B]of DzQ)A=A.split(`${Q}*`).join(`${Q}{0,${B}}`).split(`${Q}+`).join(`${Q}{1,${B}}`);return A},XA=(A,Q,B)=>{let I=ZzQ(Q),C=GzQ++;EzQ(A,C,Q),d[A]=C,m[C]=Q,FzQ[C]=I,YzQ[C]=new RegExp(Q,B?"g":void 0),JzQ[C]=new RegExp(I,B?"g":void 0)};XA("NUMERICIDENTIFIER","0|[1-9]\\d*");XA("NUMERICIDENTIFIERLOOSE","\\d+");XA("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Aj}*`);XA("MAINVERSION",`(${m[d.NUMERICIDENTIFIER]})\\.(${m[d.NUMERICIDENTIFIER]})\\.(${m[d.NUMERICIDENTIFIER]})`);XA("MAINVERSIONLOOSE",`(${m[d.NUMERICIDENTIFIERLOOSE]})\\.(${m[d.NUMERICIDENTIFIERLOOSE]})\\.(${m[d.NUMERICIDENTIFIERLOOSE]})`);XA("PRERELEASEIDENTIFIER",`(?:${m[d.NONNUMERICIDENTIFIER]}|${m[d.NUMERICIDENTIFIER]})`);XA("PRERELEASEIDENTIFIERLOOSE",`(?:${m[d.NONNUMERICIDENTIFIER]}|${m[d.NUMERICIDENTIFIERLOOSE]})`);XA("PRERELEASE",`(?:-(${m[d.PRERELEASEIDENTIFIER]}(?:\\.${m[d.PRERELEASEIDENTIFIER]})*))`);XA("PRERELEASELOOSE",`(?:-?(${m[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${m[d.PRERELEASEIDENTIFIERLOOSE]})*))`);XA("BUILDIDENTIFIER",`${Aj}+`);XA("BUILD",`(?:\\+(${m[d.BUILDIDENTIFIER]}(?:\\.${m[d.BUILDIDENTIFIER]})*))`);XA("FULLPLAIN",`v?${m[d.MAINVERSION]}${m[d.PRERELEASE]}?${m[d.BUILD]}?`);XA("FULL",`^${m[d.FULLPLAIN]}$`);XA("LOOSEPLAIN",`[v=\\s]*${m[d.MAINVERSIONLOOSE]}${m[d.PRERELEASELOOSE]}?${m[d.BUILD]}?`);XA("LOOSE",`^${m[d.LOOSEPLAIN]}$`);XA("GTLT","((?:<|>)?=?)");XA("XRANGEIDENTIFIERLOOSE",`${m[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);XA("XRANGEIDENTIFIER",`${m[d.NUMERICIDENTIFIER]}|x|X|\\*`);XA("XRANGEPLAIN",`[v=\\s]*(${m[d.XRANGEIDENTIFIER]})(?:\\.(${m[d.XRANGEIDENTIFIER]})(?:\\.(${m[d.XRANGEIDENTIFIER]})(?:${m[d.PRERELEASE]})?${m[d.BUILD]}?)?)?`);XA("XRANGEPLAINLOOSE",`[v=\\s]*(${m[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${m[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${m[d.XRANGEIDENTIFIERLOOSE]})(?:${m[d.PRERELEASELOOSE]})?${m[d.BUILD]}?)?)?`);XA("XRANGE",`^${m[d.GTLT]}\\s*${m[d.XRANGEPLAIN]}$`);XA("XRANGELOOSE",`^${m[d.GTLT]}\\s*${m[d.XRANGEPLAINLOOSE]}$`);XA("COERCEPLAIN",`(^|[^\\d])(\\d{1,${eN}})(?:\\.(\\d{1,${eN}}))?(?:\\.(\\d{1,${eN}}))?`);XA("COERCE",`${m[d.COERCEPLAIN]}(?:$|[^\\d])`);XA("COERCEFULL",m[d.COERCEPLAIN]+`(?:${m[d.PRERELEASE]})?(?:${m[d.BUILD]})?(?:$|[^\\d])`);XA("COERCERTL",m[d.COERCE],!0);XA("COERCERTLFULL",m[d.COERCEFULL],!0);XA("LONETILDE","(?:~>?)");XA("TILDETRIM",`(\\s*)${m[d.LONETILDE]}\\s+`,!0);$E.tildeTrimReplace="$1~";XA("TILDE",`^${m[d.LONETILDE]}${m[d.XRANGEPLAIN]}$`);XA("TILDELOOSE",`^${m[d.LONETILDE]}${m[d.XRANGEPLAINLOOSE]}$`);XA("LONECARET","(?:\\^)");XA("CARETTRIM",`(\\s*)${m[d.LONECARET]}\\s+`,!0);$E.caretTrimReplace="$1^";XA("CARET",`^${m[d.LONECARET]}${m[d.XRANGEPLAIN]}$`);XA("CARETLOOSE",`^${m[d.LONECARET]}${m[d.XRANGEPLAINLOOSE]}$`);XA("COMPARATORLOOSE",`^${m[d.GTLT]}\\s*(${m[d.LOOSEPLAIN]})$|^$`);XA("COMPARATOR",`^${m[d.GTLT]}\\s*(${m[d.FULLPLAIN]})$|^$`);XA("COMPARATORTRIM",`(\\s*)${m[d.GTLT]}\\s*(${m[d.LOOSEPLAIN]}|${m[d.XRANGEPLAIN]})`,!0);$E.comparatorTrimReplace="$1$2$3";XA("HYPHENRANGE",`^\\s*(${m[d.XRANGEPLAIN]})\\s+-\\s+(${m[d.XRANGEPLAIN]})\\s*$`);XA("HYPHENRANGELOOSE",`^\\s*(${m[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${m[d.XRANGEPLAINLOOSE]})\\s*$`);XA("STAR","(<|>)?=?\\s*\\*");XA("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");XA("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var cw=U((DIB,q6A)=>{var WzQ=Object.freeze({loose:!0}),XzQ=Object.freeze({}),UzQ=(A)=>{if(!A)return XzQ;if(typeof A!=="object")return WzQ;return A};q6A.exports=UzQ});var Qj=U((ZIB,P6A)=>{var O6A=/^[0-9]+$/,T6A=(A,Q)=>{if(typeof A==="number"&&typeof Q==="number")return A===Q?0:AT6A(Q,A);P6A.exports={compareIdentifiers:T6A,rcompareIdentifiers:wzQ}});var zB=U((WIB,S6A)=>{var uw=sW(),{MAX_LENGTH:k6A,MAX_SAFE_INTEGER:lw}=oW(),{safeRe:pw,t:iw}=eD(),KzQ=cw(),{compareIdentifiers:Bj}=Qj();class vC{constructor(A,Q){if(Q=KzQ(Q),A instanceof vC)if(A.loose===!!Q.loose&&A.includePrerelease===!!Q.includePrerelease)return A;else A=A.version;else if(typeof A!=="string")throw TypeError(`Invalid version. Must be a string. Got type "${typeof A}".`);if(A.length>k6A)throw TypeError(`version is longer than ${k6A} characters`);uw("SemVer",A,Q),this.options=Q,this.loose=!!Q.loose,this.includePrerelease=!!Q.includePrerelease;let B=A.trim().match(Q.loose?pw[iw.LOOSE]:pw[iw.FULL]);if(!B)throw TypeError(`Invalid Version: ${A}`);if(this.raw=A,this.major=+B[1],this.minor=+B[2],this.patch=+B[3],this.major>lw||this.major<0)throw TypeError("Invalid major version");if(this.minor>lw||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>lw||this.patch<0)throw TypeError("Invalid patch version");if(!B[4])this.prerelease=[];else this.prerelease=B[4].split(".").map((I)=>{if(/^[0-9]+$/.test(I)){let C=+I;if(C>=0&&CA.major)return 1;if(this.minorA.minor)return 1;if(this.patchA.patch)return 1;return 0}comparePre(A){if(!(A instanceof vC))A=new vC(A,this.options);if(this.prerelease.length&&!A.prerelease.length)return-1;else if(!this.prerelease.length&&A.prerelease.length)return 1;else if(!this.prerelease.length&&!A.prerelease.length)return 0;let Q=0;do{let B=this.prerelease[Q],I=A.prerelease[Q];if(uw("prerelease compare",Q,B,I),B===void 0&&I===void 0)return 0;else if(I===void 0)return 1;else if(B===void 0)return-1;else if(B===I)continue;else return Bj(B,I)}while(++Q)}compareBuild(A){if(!(A instanceof vC))A=new vC(A,this.options);let Q=0;do{let B=this.build[Q],I=A.build[Q];if(uw("build compare",Q,B,I),B===void 0&&I===void 0)return 0;else if(I===void 0)return 1;else if(B===void 0)return-1;else if(B===I)continue;else return Bj(B,I)}while(++Q)}inc(A,Q,B){if(A.startsWith("pre")){if(!Q&&B===!1)throw Error("invalid increment argument: identifier is empty");if(Q){let I=`-${Q}`.match(this.options.loose?pw[iw.PRERELEASELOOSE]:pw[iw.PRERELEASE]);if(!I||I[1]!==Q)throw Error(`invalid identifier: ${Q}`)}}switch(A){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",Q,B);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",Q,B);break;case"prepatch":this.prerelease.length=0,this.inc("patch",Q,B),this.inc("pre",Q,B);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",Q,B);this.inc("pre",Q,B);break;case"release":if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0,this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":{let I=Number(B)?1:0;if(this.prerelease.length===0)this.prerelease=[I];else{let C=this.prerelease.length;while(--C>=0)if(typeof this.prerelease[C]==="number")this.prerelease[C]++,C=-2;if(C===-1){if(Q===this.prerelease.join(".")&&B===!1)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(I)}}if(Q){let C=[Q,I];if(B===!1)C=[Q];if(Bj(this.prerelease[0],Q)===0){if(isNaN(this.prerelease[1]))this.prerelease=C}else this.prerelease=C}break}default:throw Error(`invalid increment argument: ${A}`)}if(this.raw=this.format(),this.build.length)this.raw+=`+${this.build.join(".")}`;return this}}S6A.exports=vC});var $F=U((XIB,_6A)=>{var y6A=zB(),zzQ=(A,Q,B=!1)=>{if(A instanceof y6A)return A;try{return new y6A(A,Q)}catch(I){if(!B)return null;throw I}};_6A.exports=zzQ});var g6A=U((UIB,f6A)=>{var VzQ=$F(),$zQ=(A,Q)=>{let B=VzQ(A,Q);return B?B.version:null};f6A.exports=$zQ});var x6A=U((wIB,h6A)=>{var LzQ=$F(),HzQ=(A,Q)=>{let B=LzQ(A.trim().replace(/^[=v]+/,""),Q);return B?B.version:null};h6A.exports=HzQ});var m6A=U((KIB,b6A)=>{var v6A=zB(),MzQ=(A,Q,B,I,C)=>{if(typeof B==="string")C=I,I=B,B=void 0;try{return new v6A(A instanceof v6A?A.version:A,B).inc(Q,I,C).version}catch(E){return null}};b6A.exports=MzQ});var u6A=U((zIB,c6A)=>{var d6A=$F(),NzQ=(A,Q)=>{let B=d6A(A,null,!0),I=d6A(Q,null,!0),C=B.compare(I);if(C===0)return null;let E=C>0,Y=E?B:I,J=E?I:B,F=!!Y.prerelease.length;if(!!J.prerelease.length&&!F){if(!J.patch&&!J.minor)return"major";if(J.compareMain(Y)===0){if(J.minor&&!J.patch)return"minor";return"patch"}}let D=F?"pre":"";if(B.major!==I.major)return D+"major";if(B.minor!==I.minor)return D+"minor";if(B.patch!==I.patch)return D+"patch";return"prerelease"};c6A.exports=NzQ});var p6A=U((VIB,l6A)=>{var jzQ=zB(),RzQ=(A,Q)=>new jzQ(A,Q).major;l6A.exports=RzQ});var n6A=U(($IB,i6A)=>{var qzQ=zB(),OzQ=(A,Q)=>new qzQ(A,Q).minor;i6A.exports=OzQ});var o6A=U((LIB,a6A)=>{var TzQ=zB(),PzQ=(A,Q)=>new TzQ(A,Q).patch;a6A.exports=PzQ});var r6A=U((HIB,s6A)=>{var kzQ=$F(),SzQ=(A,Q)=>{let B=kzQ(A,Q);return B&&B.prerelease.length?B.prerelease:null};s6A.exports=SzQ});var YC=U((MIB,e6A)=>{var t6A=zB(),yzQ=(A,Q,B)=>new t6A(A,B).compare(new t6A(Q,B));e6A.exports=yzQ});var Q7A=U((NIB,A7A)=>{var _zQ=YC(),fzQ=(A,Q,B)=>_zQ(Q,A,B);A7A.exports=fzQ});var I7A=U((jIB,B7A)=>{var gzQ=YC(),hzQ=(A,Q)=>gzQ(A,Q,!0);B7A.exports=hzQ});var nw=U((RIB,E7A)=>{var C7A=zB(),xzQ=(A,Q,B)=>{let I=new C7A(A,B),C=new C7A(Q,B);return I.compare(C)||I.compareBuild(C)};E7A.exports=xzQ});var J7A=U((qIB,Y7A)=>{var vzQ=nw(),bzQ=(A,Q)=>A.sort((B,I)=>vzQ(B,I,Q));Y7A.exports=bzQ});var G7A=U((OIB,F7A)=>{var mzQ=nw(),dzQ=(A,Q)=>A.sort((B,I)=>mzQ(I,B,Q));F7A.exports=dzQ});var rW=U((TIB,D7A)=>{var czQ=YC(),uzQ=(A,Q,B)=>czQ(A,Q,B)>0;D7A.exports=uzQ});var aw=U((PIB,Z7A)=>{var lzQ=YC(),pzQ=(A,Q,B)=>lzQ(A,Q,B)<0;Z7A.exports=pzQ});var Ij=U((kIB,W7A)=>{var izQ=YC(),nzQ=(A,Q,B)=>izQ(A,Q,B)===0;W7A.exports=nzQ});var Cj=U((SIB,X7A)=>{var azQ=YC(),ozQ=(A,Q,B)=>azQ(A,Q,B)!==0;X7A.exports=ozQ});var ow=U((yIB,U7A)=>{var szQ=YC(),rzQ=(A,Q,B)=>szQ(A,Q,B)>=0;U7A.exports=rzQ});var sw=U((_IB,w7A)=>{var tzQ=YC(),ezQ=(A,Q,B)=>tzQ(A,Q,B)<=0;w7A.exports=ezQ});var Ej=U((fIB,K7A)=>{var AVQ=Ij(),QVQ=Cj(),BVQ=rW(),IVQ=ow(),CVQ=aw(),EVQ=sw(),YVQ=(A,Q,B,I)=>{switch(Q){case"===":if(typeof A==="object")A=A.version;if(typeof B==="object")B=B.version;return A===B;case"!==":if(typeof A==="object")A=A.version;if(typeof B==="object")B=B.version;return A!==B;case"":case"=":case"==":return AVQ(A,B,I);case"!=":return QVQ(A,B,I);case">":return BVQ(A,B,I);case">=":return IVQ(A,B,I);case"<":return CVQ(A,B,I);case"<=":return EVQ(A,B,I);default:throw TypeError(`Invalid operator: ${Q}`)}};K7A.exports=YVQ});var V7A=U((gIB,z7A)=>{var JVQ=zB(),FVQ=$F(),{safeRe:rw,t:tw}=eD(),GVQ=(A,Q)=>{if(A instanceof JVQ)return A;if(typeof A==="number")A=String(A);if(typeof A!=="string")return null;Q=Q||{};let B=null;if(!Q.rtl)B=A.match(Q.includePrerelease?rw[tw.COERCEFULL]:rw[tw.COERCE]);else{let F=Q.includePrerelease?rw[tw.COERCERTLFULL]:rw[tw.COERCERTL],G;while((G=F.exec(A))&&(!B||B.index+B[0].length!==A.length)){if(!B||G.index+G[0].length!==B.index+B[0].length)B=G;F.lastIndex=G.index+G[1].length+G[2].length}F.lastIndex=-1}if(B===null)return null;let I=B[2],C=B[3]||"0",E=B[4]||"0",Y=Q.includePrerelease&&B[5]?`-${B[5]}`:"",J=Q.includePrerelease&&B[6]?`+${B[6]}`:"";return FVQ(`${I}.${C}.${E}${Y}${J}`,Q)};z7A.exports=GVQ});var H7A=U((hIB,L7A)=>{class $7A{constructor(){this.max=1000,this.map=new Map}get(A){let Q=this.map.get(A);if(Q===void 0)return;else return this.map.delete(A),this.map.set(A,Q),Q}delete(A){return this.map.delete(A)}set(A,Q){if(!this.delete(A)&&Q!==void 0){if(this.map.size>=this.max){let I=this.map.keys().next().value;this.delete(I)}this.map.set(A,Q)}return this}}L7A.exports=$7A});var JC=U((xIB,R7A)=>{var DVQ=/\s+/g;class tW{constructor(A,Q){if(Q=WVQ(Q),A instanceof tW)if(A.loose===!!Q.loose&&A.includePrerelease===!!Q.includePrerelease)return A;else return new tW(A.raw,Q);if(A instanceof Yj)return this.raw=A.value,this.set=[[A]],this.formatted=void 0,this;if(this.options=Q,this.loose=!!Q.loose,this.includePrerelease=!!Q.includePrerelease,this.raw=A.trim().replace(DVQ," "),this.set=this.raw.split("||").map((B)=>this.parseRange(B.trim())).filter((B)=>B.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let B=this.set[0];if(this.set=this.set.filter((I)=>!N7A(I[0])),this.set.length===0)this.set=[B];else if(this.set.length>1){for(let I of this.set)if(I.length===1&&$VQ(I[0])){this.set=[I];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let A=0;A0)this.formatted+="||";let Q=this.set[A];for(let B=0;B0)this.formatted+=" ";this.formatted+=Q[B].toString().trim()}}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(A){let B=((this.options.includePrerelease&&zVQ)|(this.options.loose&&VVQ))+":"+A,I=M7A.get(B);if(I)return I;let C=this.options.loose,E=C?vB[VB.HYPHENRANGELOOSE]:vB[VB.HYPHENRANGE];A=A.replace(E,PVQ(this.options.includePrerelease)),rA("hyphen replace",A),A=A.replace(vB[VB.COMPARATORTRIM],UVQ),rA("comparator trim",A),A=A.replace(vB[VB.TILDETRIM],wVQ),rA("tilde trim",A),A=A.replace(vB[VB.CARETTRIM],KVQ),rA("caret trim",A);let Y=A.split(" ").map((D)=>LVQ(D,this.options)).join(" ").split(/\s+/).map((D)=>TVQ(D,this.options));if(C)Y=Y.filter((D)=>{return rA("loose invalid filter",D,this.options),!!D.match(vB[VB.COMPARATORLOOSE])});rA("range list",Y);let J=new Map,F=Y.map((D)=>new Yj(D,this.options));for(let D of F){if(N7A(D))return[D];J.set(D.value,D)}if(J.size>1&&J.has(""))J.delete("");let G=[...J.values()];return M7A.set(B,G),G}intersects(A,Q){if(!(A instanceof tW))throw TypeError("a Range is required");return this.set.some((B)=>{return j7A(B,Q)&&A.set.some((I)=>{return j7A(I,Q)&&B.every((C)=>{return I.every((E)=>{return C.intersects(E,Q)})})})})}test(A){if(!A)return!1;if(typeof A==="string")try{A=new XVQ(A,this.options)}catch(Q){return!1}for(let Q=0;QA.value==="<0.0.0-0",$VQ=(A)=>A.value==="",j7A=(A,Q)=>{let B=!0,I=A.slice(),C=I.pop();while(B&&I.length)B=I.every((E)=>{return C.intersects(E,Q)}),C=I.pop();return B},LVQ=(A,Q)=>{return A=A.replace(vB[VB.BUILD],""),rA("comp",A,Q),A=NVQ(A,Q),rA("caret",A),A=HVQ(A,Q),rA("tildes",A),A=RVQ(A,Q),rA("xrange",A),A=OVQ(A,Q),rA("stars",A),A},bB=(A)=>!A||A.toLowerCase()==="x"||A==="*",HVQ=(A,Q)=>{return A.trim().split(/\s+/).map((B)=>MVQ(B,Q)).join(" ")},MVQ=(A,Q)=>{let B=Q.loose?vB[VB.TILDELOOSE]:vB[VB.TILDE];return A.replace(B,(I,C,E,Y,J)=>{rA("tilde",A,I,C,E,Y,J);let F;if(bB(C))F="";else if(bB(E))F=`>=${C}.0.0 <${+C+1}.0.0-0`;else if(bB(Y))F=`>=${C}.${E}.0 <${C}.${+E+1}.0-0`;else if(J)rA("replaceTilde pr",J),F=`>=${C}.${E}.${Y}-${J} <${C}.${+E+1}.0-0`;else F=`>=${C}.${E}.${Y} <${C}.${+E+1}.0-0`;return rA("tilde return",F),F})},NVQ=(A,Q)=>{return A.trim().split(/\s+/).map((B)=>jVQ(B,Q)).join(" ")},jVQ=(A,Q)=>{rA("caret",A,Q);let B=Q.loose?vB[VB.CARETLOOSE]:vB[VB.CARET],I=Q.includePrerelease?"-0":"";return A.replace(B,(C,E,Y,J,F)=>{rA("caret",A,C,E,Y,J,F);let G;if(bB(E))G="";else if(bB(Y))G=`>=${E}.0.0${I} <${+E+1}.0.0-0`;else if(bB(J))if(E==="0")G=`>=${E}.${Y}.0${I} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.0${I} <${+E+1}.0.0-0`;else if(F)if(rA("replaceCaret pr",F),E==="0")if(Y==="0")G=`>=${E}.${Y}.${J}-${F} <${E}.${Y}.${+J+1}-0`;else G=`>=${E}.${Y}.${J}-${F} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.${J}-${F} <${+E+1}.0.0-0`;else if(rA("no pr"),E==="0")if(Y==="0")G=`>=${E}.${Y}.${J}${I} <${E}.${Y}.${+J+1}-0`;else G=`>=${E}.${Y}.${J}${I} <${E}.${+Y+1}.0-0`;else G=`>=${E}.${Y}.${J} <${+E+1}.0.0-0`;return rA("caret return",G),G})},RVQ=(A,Q)=>{return rA("replaceXRanges",A,Q),A.split(/\s+/).map((B)=>qVQ(B,Q)).join(" ")},qVQ=(A,Q)=>{A=A.trim();let B=Q.loose?vB[VB.XRANGELOOSE]:vB[VB.XRANGE];return A.replace(B,(I,C,E,Y,J,F)=>{rA("xRange",A,I,C,E,Y,J,F);let G=bB(E),D=G||bB(Y),Z=D||bB(J),W=Z;if(C==="="&&W)C="";if(F=Q.includePrerelease?"-0":"",G)if(C===">"||C==="<")I="<0.0.0-0";else I="*";else if(C&&W){if(D)Y=0;if(J=0,C===">")if(C=">=",D)E=+E+1,Y=0,J=0;else Y=+Y+1,J=0;else if(C==="<=")if(C="<",D)E=+E+1;else Y=+Y+1;if(C==="<")F="-0";I=`${C+E}.${Y}.${J}${F}`}else if(D)I=`>=${E}.0.0${F} <${+E+1}.0.0-0`;else if(Z)I=`>=${E}.${Y}.0${F} <${E}.${+Y+1}.0-0`;return rA("xRange return",I),I})},OVQ=(A,Q)=>{return rA("replaceStars",A,Q),A.trim().replace(vB[VB.STAR],"")},TVQ=(A,Q)=>{return rA("replaceGTE0",A,Q),A.trim().replace(vB[Q.includePrerelease?VB.GTE0PRE:VB.GTE0],"")},PVQ=(A)=>(Q,B,I,C,E,Y,J,F,G,D,Z,W)=>{if(bB(I))B="";else if(bB(C))B=`>=${I}.0.0${A?"-0":""}`;else if(bB(E))B=`>=${I}.${C}.0${A?"-0":""}`;else if(Y)B=`>=${B}`;else B=`>=${B}${A?"-0":""}`;if(bB(G))F="";else if(bB(D))F=`<${+G+1}.0.0-0`;else if(bB(Z))F=`<${G}.${+D+1}.0-0`;else if(W)F=`<=${G}.${D}.${Z}-${W}`;else if(A)F=`<${G}.${D}.${+Z+1}-0`;else F=`<=${F}`;return`${B} ${F}`.trim()},kVQ=(A,Q,B)=>{for(let I=0;I0){let C=A[I].semver;if(C.major===Q.major&&C.minor===Q.minor&&C.patch===Q.patch)return!0}}return!1}return!0}});var eW=U((vIB,S7A)=>{var A8=Symbol("SemVer ANY");class ew{static get ANY(){return A8}constructor(A,Q){if(Q=q7A(Q),A instanceof ew)if(A.loose===!!Q.loose)return A;else A=A.value;if(A=A.trim().split(/\s+/).join(" "),Fj("comparator",A,Q),this.options=Q,this.loose=!!Q.loose,this.parse(A),this.semver===A8)this.value="";else this.value=this.operator+this.semver.version;Fj("comp",this)}parse(A){let Q=this.options.loose?O7A[T7A.COMPARATORLOOSE]:O7A[T7A.COMPARATOR],B=A.match(Q);if(!B)throw TypeError(`Invalid comparator: ${A}`);if(this.operator=B[1]!==void 0?B[1]:"",this.operator==="=")this.operator="";if(!B[2])this.semver=A8;else this.semver=new P7A(B[2],this.options.loose)}toString(){return this.value}test(A){if(Fj("Comparator.test",A,this.options.loose),this.semver===A8||A===A8)return!0;if(typeof A==="string")try{A=new P7A(A,this.options)}catch(Q){return!1}return Jj(A,this.operator,this.semver,this.options)}intersects(A,Q){if(!(A instanceof ew))throw TypeError("a Comparator is required");if(this.operator===""){if(this.value==="")return!0;return new k7A(A.value,Q).test(this.value)}else if(A.operator===""){if(A.value==="")return!0;return new k7A(this.value,Q).test(A.semver)}if(Q=q7A(Q),Q.includePrerelease&&(this.value==="<0.0.0-0"||A.value==="<0.0.0-0"))return!1;if(!Q.includePrerelease&&(this.value.startsWith("<0.0.0")||A.value.startsWith("<0.0.0")))return!1;if(this.operator.startsWith(">")&&A.operator.startsWith(">"))return!0;if(this.operator.startsWith("<")&&A.operator.startsWith("<"))return!0;if(this.semver.version===A.semver.version&&this.operator.includes("=")&&A.operator.includes("="))return!0;if(Jj(this.semver,"<",A.semver,Q)&&this.operator.startsWith(">")&&A.operator.startsWith("<"))return!0;if(Jj(this.semver,">",A.semver,Q)&&this.operator.startsWith("<")&&A.operator.startsWith(">"))return!0;return!1}}S7A.exports=ew;var q7A=cw(),{safeRe:O7A,t:T7A}=eD(),Jj=Ej(),Fj=sW(),P7A=zB(),k7A=JC()});var Q8=U((bIB,y7A)=>{var SVQ=JC(),yVQ=(A,Q,B)=>{try{Q=new SVQ(Q,B)}catch(I){return!1}return Q.test(A)};y7A.exports=yVQ});var f7A=U((mIB,_7A)=>{var _VQ=JC(),fVQ=(A,Q)=>new _VQ(A,Q).set.map((B)=>B.map((I)=>I.value).join(" ").trim().split(" "));_7A.exports=fVQ});var h7A=U((dIB,g7A)=>{var gVQ=zB(),hVQ=JC(),xVQ=(A,Q,B)=>{let I=null,C=null,E=null;try{E=new hVQ(Q,B)}catch(Y){return null}return A.forEach((Y)=>{if(E.test(Y)){if(!I||C.compare(Y)===-1)I=Y,C=new gVQ(I,B)}}),I};g7A.exports=xVQ});var v7A=U((cIB,x7A)=>{var vVQ=zB(),bVQ=JC(),mVQ=(A,Q,B)=>{let I=null,C=null,E=null;try{E=new bVQ(Q,B)}catch(Y){return null}return A.forEach((Y)=>{if(E.test(Y)){if(!I||C.compare(Y)===1)I=Y,C=new vVQ(I,B)}}),I};x7A.exports=mVQ});var d7A=U((uIB,m7A)=>{var Gj=zB(),dVQ=JC(),b7A=rW(),cVQ=(A,Q)=>{A=new dVQ(A,Q);let B=new Gj("0.0.0");if(A.test(B))return B;if(B=new Gj("0.0.0-0"),A.test(B))return B;B=null;for(let I=0;I{let J=new Gj(Y.semver.version);switch(Y.operator){case">":if(J.prerelease.length===0)J.patch++;else J.prerelease.push(0);J.raw=J.format();case"":case">=":if(!E||b7A(J,E))E=J;break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${Y.operator}`)}}),E&&(!B||b7A(B,E)))B=E}if(B&&A.test(B))return B;return null};m7A.exports=cVQ});var u7A=U((lIB,c7A)=>{var uVQ=JC(),lVQ=(A,Q)=>{try{return new uVQ(A,Q).range||"*"}catch(B){return null}};c7A.exports=lVQ});var AK=U((pIB,n7A)=>{var pVQ=zB(),i7A=eW(),{ANY:iVQ}=i7A,nVQ=JC(),aVQ=Q8(),l7A=rW(),p7A=aw(),oVQ=sw(),sVQ=ow(),rVQ=(A,Q,B,I)=>{A=new pVQ(A,I),Q=new nVQ(Q,I);let C,E,Y,J,F;switch(B){case">":C=l7A,E=oVQ,Y=p7A,J=">",F=">=";break;case"<":C=p7A,E=sVQ,Y=l7A,J="<",F="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(aVQ(A,Q,I))return!1;for(let G=0;G{if(X.semver===iVQ)X=new i7A(">=0.0.0");if(Z=Z||X,W=W||X,C(X.semver,Z.semver,I))Z=X;else if(Y(X.semver,W.semver,I))W=X}),Z.operator===J||Z.operator===F)return!1;if((!W.operator||W.operator===J)&&E(A,W.semver))return!1;else if(W.operator===F&&Y(A,W.semver))return!1}return!0};n7A.exports=rVQ});var o7A=U((iIB,a7A)=>{var tVQ=AK(),eVQ=(A,Q,B)=>tVQ(A,Q,">",B);a7A.exports=eVQ});var r7A=U((nIB,s7A)=>{var A$Q=AK(),Q$Q=(A,Q,B)=>A$Q(A,Q,"<",B);s7A.exports=Q$Q});var AzA=U((aIB,e7A)=>{var t7A=JC(),B$Q=(A,Q,B)=>{return A=new t7A(A,B),Q=new t7A(Q,B),A.intersects(Q,B)};e7A.exports=B$Q});var BzA=U((oIB,QzA)=>{var I$Q=Q8(),C$Q=YC();QzA.exports=(A,Q,B)=>{let I=[],C=null,E=null,Y=A.sort((D,Z)=>C$Q(D,Z,B));for(let D of Y)if(I$Q(D,Q,B)){if(E=D,!C)C=D}else{if(E)I.push([C,E]);E=null,C=null}if(C)I.push([C,null]);let J=[];for(let[D,Z]of I)if(D===Z)J.push(D);else if(!Z&&D===Y[0])J.push("*");else if(!Z)J.push(`>=${D}`);else if(D===Y[0])J.push(`<=${Z}`);else J.push(`${D} - ${Z}`);let F=J.join(" || "),G=typeof Q.raw==="string"?Q.raw:String(Q);return F.length{var IzA=JC(),Zj=eW(),{ANY:Dj}=Zj,B8=Q8(),Wj=YC(),E$Q=(A,Q,B={})=>{if(A===Q)return!0;A=new IzA(A,B),Q=new IzA(Q,B);let I=!1;A:for(let C of A.set){for(let E of Q.set){let Y=J$Q(C,E,B);if(I=I||Y!==null,Y)continue A}if(I)return!1}return!0},Y$Q=[new Zj(">=0.0.0-0")],CzA=[new Zj(">=0.0.0")],J$Q=(A,Q,B)=>{if(A===Q)return!0;if(A.length===1&&A[0].semver===Dj)if(Q.length===1&&Q[0].semver===Dj)return!0;else if(B.includePrerelease)A=Y$Q;else A=CzA;if(Q.length===1&&Q[0].semver===Dj)if(B.includePrerelease)return!0;else Q=CzA;let I=new Set,C,E;for(let X of A)if(X.operator===">"||X.operator===">=")C=EzA(C,X,B);else if(X.operator==="<"||X.operator==="<=")E=YzA(E,X,B);else I.add(X.semver);if(I.size>1)return null;let Y;if(C&&E){if(Y=Wj(C.semver,E.semver,B),Y>0)return null;else if(Y===0&&(C.operator!==">="||E.operator!=="<="))return null}for(let X of I){if(C&&!B8(X,String(C),B))return null;if(E&&!B8(X,String(E),B))return null;for(let w of Q)if(!B8(X,String(w),B))return!1;return!0}let J,F,G,D,Z=E&&!B.includePrerelease&&E.semver.prerelease.length?E.semver:!1,W=C&&!B.includePrerelease&&C.semver.prerelease.length?C.semver:!1;if(Z&&Z.prerelease.length===1&&E.operator==="<"&&Z.prerelease[0]===0)Z=!1;for(let X of Q){if(D=D||X.operator===">"||X.operator===">=",G=G||X.operator==="<"||X.operator==="<=",C){if(W){if(X.semver.prerelease&&X.semver.prerelease.length&&X.semver.major===W.major&&X.semver.minor===W.minor&&X.semver.patch===W.patch)W=!1}if(X.operator===">"||X.operator===">="){if(J=EzA(C,X,B),J===X&&J!==C)return!1}else if(C.operator===">="&&!B8(C.semver,String(X),B))return!1}if(E){if(Z){if(X.semver.prerelease&&X.semver.prerelease.length&&X.semver.major===Z.major&&X.semver.minor===Z.minor&&X.semver.patch===Z.patch)Z=!1}if(X.operator==="<"||X.operator==="<="){if(F=YzA(E,X,B),F===X&&F!==E)return!1}else if(E.operator==="<="&&!B8(E.semver,String(X),B))return!1}if(!X.operator&&(E||C)&&Y!==0)return!1}if(C&&G&&!E&&Y!==0)return!1;if(E&&D&&!C&&Y!==0)return!1;if(W||Z)return!1;return!0},EzA=(A,Q,B)=>{if(!A)return Q;let I=Wj(A.semver,Q.semver,B);return I>0?A:I<0?Q:Q.operator===">"&&A.operator===">="?Q:A},YzA=(A,Q,B)=>{if(!A)return Q;let I=Wj(A.semver,Q.semver,B);return I<0?A:I>0?Q:Q.operator==="<"&&A.operator==="<="?Q:A};JzA.exports=E$Q});var Uj=U((rIB,ZzA)=>{var Xj=eD(),GzA=oW(),F$Q=zB(),DzA=Qj(),G$Q=$F(),D$Q=g6A(),Z$Q=x6A(),W$Q=m6A(),X$Q=u6A(),U$Q=p6A(),w$Q=n6A(),K$Q=o6A(),z$Q=r6A(),V$Q=YC(),$$Q=Q7A(),L$Q=I7A(),H$Q=nw(),M$Q=J7A(),N$Q=G7A(),j$Q=rW(),R$Q=aw(),q$Q=Ij(),O$Q=Cj(),T$Q=ow(),P$Q=sw(),k$Q=Ej(),S$Q=V7A(),y$Q=eW(),_$Q=JC(),f$Q=Q8(),g$Q=f7A(),h$Q=h7A(),x$Q=v7A(),v$Q=d7A(),b$Q=u7A(),m$Q=AK(),d$Q=o7A(),c$Q=r7A(),u$Q=AzA(),l$Q=BzA(),p$Q=FzA();ZzA.exports={parse:G$Q,valid:D$Q,clean:Z$Q,inc:W$Q,diff:X$Q,major:U$Q,minor:w$Q,patch:K$Q,prerelease:z$Q,compare:V$Q,rcompare:$$Q,compareLoose:L$Q,compareBuild:H$Q,sort:M$Q,rsort:N$Q,gt:j$Q,lt:R$Q,eq:q$Q,neq:O$Q,gte:T$Q,lte:P$Q,cmp:k$Q,coerce:S$Q,Comparator:y$Q,Range:_$Q,satisfies:f$Q,toComparators:g$Q,maxSatisfying:h$Q,minSatisfying:x$Q,minVersion:v$Q,validRange:b$Q,outside:m$Q,gtr:d$Q,ltr:c$Q,intersects:u$Q,simplifyRange:l$Q,subset:p$Q,SemVer:F$Q,re:Xj.re,src:Xj.src,tokens:Xj.t,SEMVER_SPEC_VERSION:GzA.SEMVER_SPEC_VERSION,RELEASE_TYPES:GzA.RELEASE_TYPES,compareIdentifiers:DzA.compareIdentifiers,rcompareIdentifiers:DzA.rcompareIdentifiers}});var RzA=U((jzA)=>{Object.defineProperty(jzA,"__esModule",{value:!0});jzA.getProxyUrl=E3Q;jzA.checkBypass=NzA;function E3Q(A){let Q=A.protocol==="https:";if(NzA(A))return;let B=(()=>{if(Q)return process.env.https_proxy||process.env.HTTPS_PROXY;else return process.env.http_proxy||process.env.HTTP_PROXY})();if(B)try{return new Hj(B)}catch(I){if(!B.startsWith("http://")&&!B.startsWith("https://"))return new Hj(`http://${B}`)}else return}function NzA(A){if(!A.hostname)return!1;let Q=A.hostname;if(Y3Q(Q))return!0;let B=process.env.no_proxy||process.env.NO_PROXY||"";if(!B)return!1;let I;if(A.port)I=Number(A.port);else if(A.protocol==="http:")I=80;else if(A.protocol==="https:")I=443;let C=[A.hostname.toUpperCase()];if(typeof I==="number")C.push(`${C[0]}:${I}`);for(let E of B.split(",").map((Y)=>Y.trim().toUpperCase()).filter((Y)=>Y))if(E==="*"||C.some((Y)=>Y===E||Y.endsWith(`.${E}`)||E.startsWith(".")&&Y.endsWith(`${E}`)))return!0;return!1}function Y3Q(A){let Q=A.toLowerCase();return Q==="localhost"||Q.startsWith("127.")||Q.startsWith("[::1]")||Q.startsWith("[0:0:0:0:0:0:0:1]")}class Hj extends URL{constructor(A,Q){super(A,Q);this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}});var TzA=U((CQ)=>{var G3Q=CQ&&CQ.__createBinding||(Object.create?function(A,Q,B,I){if(I===void 0)I=B;var C=Object.getOwnPropertyDescriptor(Q,B);if(!C||("get"in C?!Q.__esModule:C.writable||C.configurable))C={enumerable:!0,get:function(){return Q[B]}};Object.defineProperty(A,I,C)}:function(A,Q,B,I){if(I===void 0)I=B;A[I]=Q[B]}),D3Q=CQ&&CQ.__setModuleDefault||(Object.create?function(A,Q){Object.defineProperty(A,"default",{enumerable:!0,value:Q})}:function(A,Q){A.default=Q}),CK=CQ&&CQ.__importStar||function(){var A=function(Q){return A=Object.getOwnPropertyNames||function(B){var I=[];for(var C in B)if(Object.prototype.hasOwnProperty.call(B,C))I[I.length]=C;return I},A(Q)};return function(Q){if(Q&&Q.__esModule)return Q;var B={};if(Q!=null){for(var I=A(Q),C=0;CRQ(this,void 0,void 0,function*(){let Q=Buffer.alloc(0);this.message.on("data",(B)=>{Q=Buffer.concat([Q,B])}),this.message.on("end",()=>{A(Q.toString())})}))})}readBodyBuffer(){return RQ(this,void 0,void 0,function*(){return new Promise((A)=>RQ(this,void 0,void 0,function*(){let Q=[];this.message.on("data",(B)=>{Q.push(B)}),this.message.on("end",()=>{A(Buffer.concat(Q))})}))})}}CQ.HttpClientResponse=jj;function V3Q(A){return new URL(A).protocol==="https:"}class OzA{constructor(A,Q,B){if(this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=this._getUserAgentWithOrchestrationId(A),this.handlers=Q||[],this.requestOptions=B,B){if(B.ignoreSslError!=null)this._ignoreSslError=B.ignoreSslError;if(this._socketTimeout=B.socketTimeout,B.allowRedirects!=null)this._allowRedirects=B.allowRedirects;if(B.allowRedirectDowngrade!=null)this._allowRedirectDowngrade=B.allowRedirectDowngrade;if(B.maxRedirects!=null)this._maxRedirects=Math.max(B.maxRedirects,0);if(B.keepAlive!=null)this._keepAlive=B.keepAlive;if(B.allowRetries!=null)this._allowRetries=B.allowRetries;if(B.maxRetries!=null)this._maxRetries=B.maxRetries}}options(A,Q){return RQ(this,void 0,void 0,function*(){return this.request("OPTIONS",A,null,Q||{})})}get(A,Q){return RQ(this,void 0,void 0,function*(){return this.request("GET",A,null,Q||{})})}del(A,Q){return RQ(this,void 0,void 0,function*(){return this.request("DELETE",A,null,Q||{})})}post(A,Q,B){return RQ(this,void 0,void 0,function*(){return this.request("POST",A,Q,B||{})})}patch(A,Q,B){return RQ(this,void 0,void 0,function*(){return this.request("PATCH",A,Q,B||{})})}put(A,Q,B){return RQ(this,void 0,void 0,function*(){return this.request("PUT",A,Q,B||{})})}head(A,Q){return RQ(this,void 0,void 0,function*(){return this.request("HEAD",A,null,Q||{})})}sendStream(A,Q,B,I){return RQ(this,void 0,void 0,function*(){return this.request(A,Q,B,I)})}getJson(A){return RQ(this,arguments,void 0,function*(Q,B={}){B[mB.Accept]=this._getExistingOrDefaultHeader(B,mB.Accept,z0.ApplicationJson);let I=yield this.get(Q,B);return this._processResponse(I,this.requestOptions)})}postJson(A,Q){return RQ(this,arguments,void 0,function*(B,I,C={}){let E=JSON.stringify(I,null,2);C[mB.Accept]=this._getExistingOrDefaultHeader(C,mB.Accept,z0.ApplicationJson),C[mB.ContentType]=this._getExistingOrDefaultContentTypeHeader(C,z0.ApplicationJson);let Y=yield this.post(B,E,C);return this._processResponse(Y,this.requestOptions)})}putJson(A,Q){return RQ(this,arguments,void 0,function*(B,I,C={}){let E=JSON.stringify(I,null,2);C[mB.Accept]=this._getExistingOrDefaultHeader(C,mB.Accept,z0.ApplicationJson),C[mB.ContentType]=this._getExistingOrDefaultContentTypeHeader(C,z0.ApplicationJson);let Y=yield this.put(B,E,C);return this._processResponse(Y,this.requestOptions)})}patchJson(A,Q){return RQ(this,arguments,void 0,function*(B,I,C={}){let E=JSON.stringify(I,null,2);C[mB.Accept]=this._getExistingOrDefaultHeader(C,mB.Accept,z0.ApplicationJson),C[mB.ContentType]=this._getExistingOrDefaultContentTypeHeader(C,z0.ApplicationJson);let Y=yield this.patch(B,E,C);return this._processResponse(Y,this.requestOptions)})}request(A,Q,B,I){return RQ(this,void 0,void 0,function*(){if(this._disposed)throw Error("Client has already been disposed.");let C=new URL(Q),E=this._prepareRequest(A,C,I),Y=this._allowRetries&&w3Q.includes(A)?this._maxRetries+1:1,J=0,F;do{if(F=yield this.requestRaw(E,B),F&&F.message&&F.message.statusCode===DC.Unauthorized){let D;for(let Z of this.handlers)if(Z.canHandleAuthentication(F)){D=Z;break}if(D)return D.handleAuthentication(this,E,B);else return F}let G=this._maxRedirects;while(F.message.statusCode&&X3Q.includes(F.message.statusCode)&&this._allowRedirects&&G>0){let D=F.message.headers.location;if(!D)break;let Z=new URL(D);if(C.protocol==="https:"&&C.protocol!==Z.protocol&&!this._allowRedirectDowngrade)throw Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.");if(yield F.readBody(),Z.hostname!==C.hostname){for(let W in I)if(W.toLowerCase()==="authorization")delete I[W]}E=this._prepareRequest(A,Z,I),F=yield this.requestRaw(E,B),G--}if(!F.message.statusCode||!U3Q.includes(F.message.statusCode))return F;if(J+=1,J{function C(E,Y){if(E)I(E);else if(!Y)I(Error("Unknown error"));else B(Y)}this.requestRawWithCallback(A,Q,C)})})}requestRawWithCallback(A,Q,B){if(typeof Q==="string"){if(!A.options.headers)A.options.headers={};A.options.headers["Content-Length"]=Buffer.byteLength(Q,"utf8")}let I=!1;function C(J,F){if(!I)I=!0,B(J,F)}let E=A.httpModule.request(A.options,(J)=>{let F=new jj(J);C(void 0,F)}),Y;if(E.on("socket",(J)=>{Y=J}),E.setTimeout(this._socketTimeout||180000,()=>{if(Y)Y.end();C(Error(`Request timeout: ${A.options.path}`))}),E.on("error",function(J){C(J)}),Q&&typeof Q==="string")E.write(Q,"utf8");if(Q&&typeof Q!=="string")Q.on("close",function(){E.end()}),Q.pipe(E);else E.end()}getAgent(A){let Q=new URL(A);return this._getAgent(Q)}getAgentDispatcher(A){let Q=new URL(A),B=Nj.getProxyUrl(Q);if(!(B&&B.hostname))return;return this._getProxyAgentDispatcher(Q,B)}_prepareRequest(A,Q,B){let I={};I.parsedUrl=Q;let C=I.parsedUrl.protocol==="https:";I.httpModule=C?qzA:Mj;let E=C?443:80;if(I.options={},I.options.host=I.parsedUrl.hostname,I.options.port=I.parsedUrl.port?parseInt(I.parsedUrl.port):E,I.options.path=(I.parsedUrl.pathname||"")+(I.parsedUrl.search||""),I.options.method=A,I.options.headers=this._mergeHeaders(B),this.userAgent!=null)I.options.headers["user-agent"]=this.userAgent;if(I.options.agent=this._getAgent(I.parsedUrl),this.handlers)for(let Y of this.handlers)Y.prepareRequest(I.options);return I}_mergeHeaders(A){if(this.requestOptions&&this.requestOptions.headers)return Object.assign({},E8(this.requestOptions.headers),E8(A||{}));return E8(A||{})}_getExistingOrDefaultHeader(A,Q,B){let I;if(this.requestOptions&&this.requestOptions.headers){let E=E8(this.requestOptions.headers)[Q];if(E)I=typeof E==="number"?E.toString():E}let C=A[Q];if(C!==void 0)return typeof C==="number"?C.toString():C;if(I!==void 0)return I;return B}_getExistingOrDefaultContentTypeHeader(A,Q){let B;if(this.requestOptions&&this.requestOptions.headers){let C=E8(this.requestOptions.headers)[mB.ContentType];if(C)if(typeof C==="number")B=String(C);else if(Array.isArray(C))B=C.join(", ");else B=C}let I=A[mB.ContentType];if(I!==void 0)if(typeof I==="number")return String(I);else if(Array.isArray(I))return I.join(", ");else return I;if(B!==void 0)return B;return Q}_getAgent(A){let Q,B=Nj.getProxyUrl(A),I=B&&B.hostname;if(this._keepAlive&&I)Q=this._proxyAgent;if(!I)Q=this._agent;if(Q)return Q;let C=A.protocol==="https:",E=100;if(this.requestOptions)E=this.requestOptions.maxSockets||Mj.globalAgent.maxSockets;if(B&&B.hostname){let Y={maxSockets:E,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(B.username||B.password)&&{proxyAuth:`${B.username}:${B.password}`}),{host:B.hostname,port:B.port})},J,F=B.protocol==="https:";if(C)J=F?IK.httpsOverHttps:IK.httpsOverHttp;else J=F?IK.httpOverHttps:IK.httpOverHttp;Q=J(Y),this._proxyAgent=Q}if(!Q){let Y={keepAlive:this._keepAlive,maxSockets:E};Q=C?new qzA.Agent(Y):new Mj.Agent(Y),this._agent=Q}if(C&&this._ignoreSslError)Q.options=Object.assign(Q.options||{},{rejectUnauthorized:!1});return Q}_getProxyAgentDispatcher(A,Q){let B;if(this._keepAlive)B=this._proxyAgentDispatcher;if(B)return B;let I=A.protocol==="https:";if(B=new Z3Q.ProxyAgent(Object.assign({uri:Q.href,pipelining:!this._keepAlive?0:1},(Q.username||Q.password)&&{token:`Basic ${Buffer.from(`${Q.username}:${Q.password}`).toString("base64")}`})),this._proxyAgentDispatcher=B,I&&this._ignoreSslError)B.options=Object.assign(B.options.requestTls||{},{rejectUnauthorized:!1});return B}_getUserAgentWithOrchestrationId(A){let Q=A||"actions/http-client",B=process.env.ACTIONS_ORCHESTRATION_ID;if(B){let I=B.replace(/[^a-z0-9_.-]/gi,"_");return`${Q} actions_orchestration_id/${I}`}return Q}_performExponentialBackoff(A){return RQ(this,void 0,void 0,function*(){A=Math.min(K3Q,A);let Q=z3Q*Math.pow(2,A);return new Promise((B)=>setTimeout(()=>B(),Q))})}_processResponse(A,Q){return RQ(this,void 0,void 0,function*(){return new Promise((B,I)=>RQ(this,void 0,void 0,function*(){let C=A.message.statusCode||0,E={statusCode:C,result:null,headers:{}};if(C===DC.NotFound)B(E);function Y(G,D){if(typeof D==="string"){let Z=new Date(D);if(!isNaN(Z.valueOf()))return Z}return D}let J,F;try{if(F=yield A.readBody(),F&&F.length>0){if(Q&&Q.deserializeDates)J=JSON.parse(F,Y);else J=JSON.parse(F);E.result=J}E.headers=A.message.headers}catch(G){}if(C>299){let G;if(J&&J.message)G=J.message;else if(F&&F.length>0)G=F;else G=`Failed request: (${C})`;let D=new EK(G,C);D.result=E.result,I(D)}else B(E)}))})}}CQ.HttpClient=OzA;var E8=(A)=>Object.keys(A).reduce((Q,B)=>(Q[B.toLowerCase()]=A[B],Q),{})});import*as nj from"os";function V0(A){if(A===null||A===void 0)return"";else if(typeof A==="string"||A instanceof String)return A;return JSON.stringify(A)}function J8(A){if(!Object.keys(A).length)return{};return{title:A.title,file:A.file,line:A.startLine,endLine:A.endLine,col:A.startColumn,endColumn:A.endColumn}}function $0(A,Q,B){let I=new aj(A,Q,B);process.stdout.write(I.toString()+nj.EOL)}function ZK(A,Q=""){$0(A,{},Q)}var ij="::";class aj{constructor(A,Q,B){if(!A)A="missing.command";this.command=A,this.properties=Q,this.message=B}toString(){let A=ij+this.command;if(this.properties&&Object.keys(this.properties).length>0){A+=" ";let Q=!0;for(let B in this.properties)if(this.properties.hasOwnProperty(B)){let I=this.properties[B];if(I){if(Q)Q=!1;else A+=",";A+=`${B}=${ZVA(I)}`}}}return A+=`${ij}${DVA(this.message)}`,A}}function DVA(A){return V0(A).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function ZVA(A){return V0(A).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}import*as oj from"crypto";import*as G8 from"fs";import*as F8 from"os";function WK(A,Q){let B=process.env[`GITHUB_${A}`];if(!B)throw Error(`Unable to find environment variable for file command ${A}`);if(!G8.existsSync(B))throw Error(`Missing file at path: ${B}`);G8.appendFileSync(B,`${V0(Q)}${F8.EOL}`,{encoding:"utf8"})}function sj(A,Q){let B=`ghadelimiter_${oj.randomUUID()}`,I=V0(Q);if(A.includes(B))throw Error(`Unexpected input: name should not contain the delimiter "${B}"`);if(I.includes(B))throw Error(`Unexpected input: value should not contain the delimiter "${B}"`);return`${A}<<${B}${F8.EOL}${I}${F8.EOL}${B}`}import*as e7 from"os";import*as Vg from"path";import*as I1 from"http";import*as m7 from"https";function UK(A){let Q=A.protocol==="https:";if(WVA(A))return;let B=(()=>{if(Q)return process.env.https_proxy||process.env.HTTPS_PROXY;else return process.env.http_proxy||process.env.HTTP_PROXY})();if(B)try{return new XK(B)}catch(I){if(!B.startsWith("http://")&&!B.startsWith("https://"))return new XK(`http://${B}`)}else return}function WVA(A){if(!A.hostname)return!1;let Q=A.hostname;if(XVA(Q))return!0;let B=process.env.no_proxy||process.env.NO_PROXY||"";if(!B)return!1;let I;if(A.port)I=Number(A.port);else if(A.protocol==="http:")I=80;else if(A.protocol==="https:")I=443;let C=[A.hostname.toUpperCase()];if(typeof I==="number")C.push(`${C[0]}:${I}`);for(let E of B.split(",").map((Y)=>Y.trim().toUpperCase()).filter((Y)=>Y))if(E==="*"||C.some((Y)=>Y===E||Y.endsWith(`.${E}`)||E.startsWith(".")&&Y.endsWith(`${E}`)))return!0;return!1}function XVA(A){let Q=A.toLowerCase();return Q==="localhost"||Q.startsWith("127.")||Q.startsWith("[::1]")||Q.startsWith("[0:0:0:0:0:0:0:1]")}class XK extends URL{constructor(A,Q){super(A,Q);this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}var m0=f(zK(),1),nf=f(uX(),1),VQ=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})},xI;(function(A){A[A.OK=200]="OK",A[A.MultipleChoices=300]="MultipleChoices",A[A.MovedPermanently=301]="MovedPermanently",A[A.ResourceMoved=302]="ResourceMoved",A[A.SeeOther=303]="SeeOther",A[A.NotModified=304]="NotModified",A[A.UseProxy=305]="UseProxy",A[A.SwitchProxy=306]="SwitchProxy",A[A.TemporaryRedirect=307]="TemporaryRedirect",A[A.PermanentRedirect=308]="PermanentRedirect",A[A.BadRequest=400]="BadRequest",A[A.Unauthorized=401]="Unauthorized",A[A.PaymentRequired=402]="PaymentRequired",A[A.Forbidden=403]="Forbidden",A[A.NotFound=404]="NotFound",A[A.MethodNotAllowed=405]="MethodNotAllowed",A[A.NotAcceptable=406]="NotAcceptable",A[A.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",A[A.RequestTimeout=408]="RequestTimeout",A[A.Conflict=409]="Conflict",A[A.Gone=410]="Gone",A[A.TooManyRequests=429]="TooManyRequests",A[A.InternalServerError=500]="InternalServerError",A[A.NotImplemented=501]="NotImplemented",A[A.BadGateway=502]="BadGateway",A[A.ServiceUnavailable=503]="ServiceUnavailable",A[A.GatewayTimeout=504]="GatewayTimeout"})(xI||(xI={}));var MB;(function(A){A.Accept="accept",A.ContentType="content-type"})(MB||(MB={}));var hE;(function(A){A.ApplicationJson="application/json"})(hE||(hE={}));var pkA=[xI.MovedPermanently,xI.ResourceMoved,xI.SeeOther,xI.TemporaryRedirect,xI.PermanentRedirect],ikA=[xI.BadGateway,xI.ServiceUnavailable,xI.GatewayTimeout],nkA=["OPTIONS","GET","DELETE","HEAD"],akA=10,okA=5;class d7 extends Error{constructor(A,Q){super(A);this.name="HttpClientError",this.statusCode=Q,Object.setPrototypeOf(this,d7.prototype)}}class af{constructor(A){this.message=A}readBody(){return VQ(this,void 0,void 0,function*(){return new Promise((A)=>VQ(this,void 0,void 0,function*(){let Q=Buffer.alloc(0);this.message.on("data",(B)=>{Q=Buffer.concat([Q,B])}),this.message.on("end",()=>{A(Q.toString())})}))})}readBodyBuffer(){return VQ(this,void 0,void 0,function*(){return new Promise((A)=>VQ(this,void 0,void 0,function*(){let Q=[];this.message.on("data",(B)=>{Q.push(B)}),this.message.on("end",()=>{A(Buffer.concat(Q))})}))})}}class lX{constructor(A,Q,B){if(this._ignoreSslError=!1,this._allowRedirects=!0,this._allowRedirectDowngrade=!1,this._maxRedirects=50,this._allowRetries=!1,this._maxRetries=1,this._keepAlive=!1,this._disposed=!1,this.userAgent=this._getUserAgentWithOrchestrationId(A),this.handlers=Q||[],this.requestOptions=B,B){if(B.ignoreSslError!=null)this._ignoreSslError=B.ignoreSslError;if(this._socketTimeout=B.socketTimeout,B.allowRedirects!=null)this._allowRedirects=B.allowRedirects;if(B.allowRedirectDowngrade!=null)this._allowRedirectDowngrade=B.allowRedirectDowngrade;if(B.maxRedirects!=null)this._maxRedirects=Math.max(B.maxRedirects,0);if(B.keepAlive!=null)this._keepAlive=B.keepAlive;if(B.allowRetries!=null)this._allowRetries=B.allowRetries;if(B.maxRetries!=null)this._maxRetries=B.maxRetries}}options(A,Q){return VQ(this,void 0,void 0,function*(){return this.request("OPTIONS",A,null,Q||{})})}get(A,Q){return VQ(this,void 0,void 0,function*(){return this.request("GET",A,null,Q||{})})}del(A,Q){return VQ(this,void 0,void 0,function*(){return this.request("DELETE",A,null,Q||{})})}post(A,Q,B){return VQ(this,void 0,void 0,function*(){return this.request("POST",A,Q,B||{})})}patch(A,Q,B){return VQ(this,void 0,void 0,function*(){return this.request("PATCH",A,Q,B||{})})}put(A,Q,B){return VQ(this,void 0,void 0,function*(){return this.request("PUT",A,Q,B||{})})}head(A,Q){return VQ(this,void 0,void 0,function*(){return this.request("HEAD",A,null,Q||{})})}sendStream(A,Q,B,I){return VQ(this,void 0,void 0,function*(){return this.request(A,Q,B,I)})}getJson(A){return VQ(this,arguments,void 0,function*(Q,B={}){B[MB.Accept]=this._getExistingOrDefaultHeader(B,MB.Accept,hE.ApplicationJson);let I=yield this.get(Q,B);return this._processResponse(I,this.requestOptions)})}postJson(A,Q){return VQ(this,arguments,void 0,function*(B,I,C={}){let E=JSON.stringify(I,null,2);C[MB.Accept]=this._getExistingOrDefaultHeader(C,MB.Accept,hE.ApplicationJson),C[MB.ContentType]=this._getExistingOrDefaultContentTypeHeader(C,hE.ApplicationJson);let Y=yield this.post(B,E,C);return this._processResponse(Y,this.requestOptions)})}putJson(A,Q){return VQ(this,arguments,void 0,function*(B,I,C={}){let E=JSON.stringify(I,null,2);C[MB.Accept]=this._getExistingOrDefaultHeader(C,MB.Accept,hE.ApplicationJson),C[MB.ContentType]=this._getExistingOrDefaultContentTypeHeader(C,hE.ApplicationJson);let Y=yield this.put(B,E,C);return this._processResponse(Y,this.requestOptions)})}patchJson(A,Q){return VQ(this,arguments,void 0,function*(B,I,C={}){let E=JSON.stringify(I,null,2);C[MB.Accept]=this._getExistingOrDefaultHeader(C,MB.Accept,hE.ApplicationJson),C[MB.ContentType]=this._getExistingOrDefaultContentTypeHeader(C,hE.ApplicationJson);let Y=yield this.patch(B,E,C);return this._processResponse(Y,this.requestOptions)})}request(A,Q,B,I){return VQ(this,void 0,void 0,function*(){if(this._disposed)throw Error("Client has already been disposed.");let C=new URL(Q),E=this._prepareRequest(A,C,I),Y=this._allowRetries&&nkA.includes(A)?this._maxRetries+1:1,J=0,F;do{if(F=yield this.requestRaw(E,B),F&&F.message&&F.message.statusCode===xI.Unauthorized){let D;for(let Z of this.handlers)if(Z.canHandleAuthentication(F)){D=Z;break}if(D)return D.handleAuthentication(this,E,B);else return F}let G=this._maxRedirects;while(F.message.statusCode&&pkA.includes(F.message.statusCode)&&this._allowRedirects&&G>0){let D=F.message.headers.location;if(!D)break;let Z=new URL(D);if(C.protocol==="https:"&&C.protocol!==Z.protocol&&!this._allowRedirectDowngrade)throw Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.");if(yield F.readBody(),Z.hostname!==C.hostname){for(let W in I)if(W.toLowerCase()==="authorization")delete I[W]}E=this._prepareRequest(A,Z,I),F=yield this.requestRaw(E,B),G--}if(!F.message.statusCode||!ikA.includes(F.message.statusCode))return F;if(J+=1,J{function C(E,Y){if(E)I(E);else if(!Y)I(Error("Unknown error"));else B(Y)}this.requestRawWithCallback(A,Q,C)})})}requestRawWithCallback(A,Q,B){if(typeof Q==="string"){if(!A.options.headers)A.options.headers={};A.options.headers["Content-Length"]=Buffer.byteLength(Q,"utf8")}let I=!1;function C(J,F){if(!I)I=!0,B(J,F)}let E=A.httpModule.request(A.options,(J)=>{let F=new af(J);C(void 0,F)}),Y;if(E.on("socket",(J)=>{Y=J}),E.setTimeout(this._socketTimeout||180000,()=>{if(Y)Y.end();C(Error(`Request timeout: ${A.options.path}`))}),E.on("error",function(J){C(J)}),Q&&typeof Q==="string")E.write(Q,"utf8");if(Q&&typeof Q!=="string")Q.on("close",function(){E.end()}),Q.pipe(E);else E.end()}getAgent(A){let Q=new URL(A);return this._getAgent(Q)}getAgentDispatcher(A){let Q=new URL(A),B=UK(Q);if(!(B&&B.hostname))return;return this._getProxyAgentDispatcher(Q,B)}_prepareRequest(A,Q,B){let I={};I.parsedUrl=Q;let C=I.parsedUrl.protocol==="https:";I.httpModule=C?m7:I1;let E=C?443:80;if(I.options={},I.options.host=I.parsedUrl.hostname,I.options.port=I.parsedUrl.port?parseInt(I.parsedUrl.port):E,I.options.path=(I.parsedUrl.pathname||"")+(I.parsedUrl.search||""),I.options.method=A,I.options.headers=this._mergeHeaders(B),this.userAgent!=null)I.options.headers["user-agent"]=this.userAgent;if(I.options.agent=this._getAgent(I.parsedUrl),this.handlers)for(let Y of this.handlers)Y.prepareRequest(I.options);return I}_mergeHeaders(A){if(this.requestOptions&&this.requestOptions.headers)return Object.assign({},B1(this.requestOptions.headers),B1(A||{}));return B1(A||{})}_getExistingOrDefaultHeader(A,Q,B){let I;if(this.requestOptions&&this.requestOptions.headers){let E=B1(this.requestOptions.headers)[Q];if(E)I=typeof E==="number"?E.toString():E}let C=A[Q];if(C!==void 0)return typeof C==="number"?C.toString():C;if(I!==void 0)return I;return B}_getExistingOrDefaultContentTypeHeader(A,Q){let B;if(this.requestOptions&&this.requestOptions.headers){let C=B1(this.requestOptions.headers)[MB.ContentType];if(C)if(typeof C==="number")B=String(C);else if(Array.isArray(C))B=C.join(", ");else B=C}let I=A[MB.ContentType];if(I!==void 0)if(typeof I==="number")return String(I);else if(Array.isArray(I))return I.join(", ");else return I;if(B!==void 0)return B;return Q}_getAgent(A){let Q,B=UK(A),I=B&&B.hostname;if(this._keepAlive&&I)Q=this._proxyAgent;if(!I)Q=this._agent;if(Q)return Q;let C=A.protocol==="https:",E=100;if(this.requestOptions)E=this.requestOptions.maxSockets||I1.globalAgent.maxSockets;if(B&&B.hostname){let Y={maxSockets:E,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(B.username||B.password)&&{proxyAuth:`${B.username}:${B.password}`}),{host:B.hostname,port:B.port})},J,F=B.protocol==="https:";if(C)J=F?m0.httpsOverHttps:m0.httpsOverHttp;else J=F?m0.httpOverHttps:m0.httpOverHttp;Q=J(Y),this._proxyAgent=Q}if(!Q){let Y={keepAlive:this._keepAlive,maxSockets:E};Q=C?new m7.Agent(Y):new I1.Agent(Y),this._agent=Q}if(C&&this._ignoreSslError)Q.options=Object.assign(Q.options||{},{rejectUnauthorized:!1});return Q}_getProxyAgentDispatcher(A,Q){let B;if(this._keepAlive)B=this._proxyAgentDispatcher;if(B)return B;let I=A.protocol==="https:";if(B=new nf.ProxyAgent(Object.assign({uri:Q.href,pipelining:!this._keepAlive?0:1},(Q.username||Q.password)&&{token:`Basic ${Buffer.from(`${Q.username}:${Q.password}`).toString("base64")}`})),this._proxyAgentDispatcher=B,I&&this._ignoreSslError)B.options=Object.assign(B.options.requestTls||{},{rejectUnauthorized:!1});return B}_getUserAgentWithOrchestrationId(A){let Q=A||"actions/http-client",B=process.env.ACTIONS_ORCHESTRATION_ID;if(B){let I=B.replace(/[^a-z0-9_.-]/gi,"_");return`${Q} actions_orchestration_id/${I}`}return Q}_performExponentialBackoff(A){return VQ(this,void 0,void 0,function*(){A=Math.min(akA,A);let Q=okA*Math.pow(2,A);return new Promise((B)=>setTimeout(()=>B(),Q))})}_processResponse(A,Q){return VQ(this,void 0,void 0,function*(){return new Promise((B,I)=>VQ(this,void 0,void 0,function*(){let C=A.message.statusCode||0,E={statusCode:C,result:null,headers:{}};if(C===xI.NotFound)B(E);function Y(G,D){if(typeof D==="string"){let Z=new Date(D);if(!isNaN(Z.valueOf()))return Z}return D}let J,F;try{if(F=yield A.readBody(),F&&F.length>0){if(Q&&Q.deserializeDates)J=JSON.parse(F,Y);else J=JSON.parse(F);E.result=J}E.headers=A.message.headers}catch(G){}if(C>299){let G;if(J&&J.message)G=J.message;else if(F&&F.length>0)G=F;else G=`Failed request: (${C})`;let D=new d7(G,C);D.result=E.result,I(D)}else B(E)}))})}}var B1=(A)=>Object.keys(A).reduce((Q,B)=>(Q[B.toLowerCase()]=A[B],Q),{});import{EOL as rkA}from"os";import{constants as of,promises as tkA}from"fs";var c7=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})},{access:ekA,appendFile:ASA,writeFile:QSA}=tkA,sf="GITHUB_STEP_SUMMARY";class rf{constructor(){this._buffer=""}filePath(){return c7(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let A=process.env[sf];if(!A)throw Error(`Unable to find environment variable for $${sf}. Check if your runtime environment supports job summaries.`);try{yield ekA(A,of.R_OK|of.W_OK)}catch(Q){throw Error(`Unable to access summary file: '${A}'. Check if the file has correct read/write permissions.`)}return this._filePath=A,this._filePath})}wrap(A,Q,B={}){let I=Object.entries(B).map(([C,E])=>` ${C}="${E}"`).join("");if(!Q)return`<${A}${I}>`;return`<${A}${I}>${Q}`}write(A){return c7(this,void 0,void 0,function*(){let Q=!!(A===null||A===void 0?void 0:A.overwrite),B=yield this.filePath();return yield(Q?QSA:ASA)(B,this._buffer,{encoding:"utf8"}),this.emptyBuffer()})}clear(){return c7(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return this._buffer="",this}addRaw(A,Q=!1){return this._buffer+=A,Q?this.addEOL():this}addEOL(){return this.addRaw(rkA)}addCodeBlock(A,Q){let B=Object.assign({},Q&&{lang:Q}),I=this.wrap("pre",this.wrap("code",A),B);return this.addRaw(I).addEOL()}addList(A,Q=!1){let B=Q?"ol":"ul",I=A.map((E)=>this.wrap("li",E)).join(""),C=this.wrap(B,I);return this.addRaw(C).addEOL()}addTable(A){let Q=A.map((I)=>{let C=I.map((E)=>{if(typeof E==="string")return this.wrap("td",E);let{header:Y,data:J,colspan:F,rowspan:G}=E,D=Y?"th":"td",Z=Object.assign(Object.assign({},F&&{colspan:F}),G&&{rowspan:G});return this.wrap(D,J,Z)}).join("");return this.wrap("tr",C)}).join(""),B=this.wrap("table",Q);return this.addRaw(B).addEOL()}addDetails(A,Q){let B=this.wrap("details",this.wrap("summary",A)+Q);return this.addRaw(B).addEOL()}addImage(A,Q,B){let{width:I,height:C}=B||{},E=Object.assign(Object.assign({},I&&{width:I}),C&&{height:C}),Y=this.wrap("img",null,Object.assign({src:A,alt:Q},E));return this.addRaw(Y).addEOL()}addHeading(A,Q){let B=`h${Q}`,I=["h1","h2","h3","h4","h5","h6"].includes(B)?B:"h1",C=this.wrap(I,A);return this.addRaw(C).addEOL()}addSeparator(){let A=this.wrap("hr",null);return this.addRaw(A).addEOL()}addBreak(){let A=this.wrap("br",null);return this.addRaw(A).addEOL()}addQuote(A,Q){let B=Object.assign({},Q&&{cite:Q}),I=this.wrap("blockquote",A,B);return this.addRaw(I).addEOL()}addLink(A,Q){let B=this.wrap("a",A,{href:Q});return this.addRaw(B).addEOL()}}var BSA=new rf;var pX=BSA;import zg from"os";import{StringDecoder as wg}from"string_decoder";import*as J1 from"os";import*as a7 from"events";import*as Wg from"child_process";import*as Xg from"path";import{ok as CSA}from"assert";import*as DB from"path";import*as C1 from"fs";import*as c0 from"path";var iX=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})},{chmod:u7,copyFile:ef,lstat:E1,mkdir:Ag,open:B2Q,readdir:l7,rename:Qg,rm:Bg,rmdir:I2Q,stat:d0,symlink:Ig,unlink:p7}=C1.promises,QE=process.platform==="win32";function Cg(A){return iX(this,void 0,void 0,function*(){let Q=yield C1.promises.readlink(A);if(QE&&!Q.endsWith("\\"))return`${Q}\\`;return Q})}var C2Q=C1.constants.O_RDONLY;function u0(A){return iX(this,void 0,void 0,function*(){try{yield d0(A)}catch(Q){if(Q.code==="ENOENT")return!1;throw Q}return!0})}function Eg(A){return iX(this,arguments,void 0,function*(Q,B=!1){return(B?yield d0(Q):yield E1(Q)).isDirectory()})}function nX(A){if(A=ISA(A),!A)throw Error('isRooted() parameter "p" cannot be empty');if(QE)return A.startsWith("\\")||/^[A-Z]:/i.test(A);return A.startsWith("/")}function i7(A,Q){return iX(this,void 0,void 0,function*(){let B=void 0;try{B=yield d0(A)}catch(C){if(C.code!=="ENOENT")console.log(`Unexpected error attempting to determine if executable file exists '${A}': ${C}`)}if(B&&B.isFile()){if(QE){let C=c0.extname(A).toUpperCase();if(Q.some((E)=>E.toUpperCase()===C))return A}else if(tf(B))return A}let I=A;for(let C of Q){A=I+C,B=void 0;try{B=yield d0(A)}catch(E){if(E.code!=="ENOENT")console.log(`Unexpected error attempting to determine if executable file exists '${A}': ${E}`)}if(B&&B.isFile()){if(QE){try{let E=c0.dirname(A),Y=c0.basename(A).toUpperCase();for(let J of yield l7(E))if(Y===J.toUpperCase()){A=c0.join(E,J);break}}catch(E){console.log(`Unexpected error attempting to determine the actual case of the file '${A}': ${E}`)}return A}else if(tf(B))return A}}return""})}function ISA(A){if(A=A||"",QE)return A=A.replace(/\//g,"\\"),A.replace(/\\\\+/g,"\\");return A.replace(/\/\/+/g,"/")}function tf(A){return(A.mode&1)>0||(A.mode&8)>0&&process.getgid!==void 0&&A.gid===process.getgid()||(A.mode&64)>0&&process.getuid!==void 0&&A.uid===process.getuid()}var l0=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})};function Jg(A,Q){return l0(this,arguments,void 0,function*(B,I,C={}){let{force:E,recursive:Y,copySourceDirectory:J}=YSA(C),F=(yield u0(I))?yield d0(I):null;if(F&&F.isFile()&&!E)return;let G=F&&F.isDirectory()&&J?DB.join(I,DB.basename(B)):I;if(!(yield u0(B)))throw Error(`no such file or directory: ${B}`);if((yield d0(B)).isDirectory())if(!Y)throw Error(`Failed to copy. ${B} is a directory, but tried to copy without recursive flag.`);else yield Gg(B,G,0,E);else{if(DB.relative(B,G)==="")throw Error(`'${G}' and '${B}' are the same file`);yield Dg(B,G,E)}})}function Fg(A,Q){return l0(this,arguments,void 0,function*(B,I,C={}){if(yield u0(I)){let E=!0;if(yield Eg(I))I=DB.join(I,DB.basename(B)),E=yield u0(I);if(E)if(C.force==null||C.force)yield Y1(I);else throw Error("Destination already exists")}yield zG(DB.dirname(I)),yield Qg(B,I)})}function Y1(A){return l0(this,void 0,void 0,function*(){if(QE){if(/[*"<>|]/.test(A))throw Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}try{yield Bg(A,{force:!0,maxRetries:3,recursive:!0,retryDelay:300})}catch(Q){throw Error(`File was unable to be removed ${Q}`)}})}function zG(A){return l0(this,void 0,void 0,function*(){CSA(A,"a path argument must be provided"),yield Ag(A,{recursive:!0})})}function nA(A,Q){return l0(this,void 0,void 0,function*(){if(!A)throw Error("parameter 'tool' is required");if(Q){let I=yield nA(A,!1);if(!I)if(QE)throw Error(`Unable to locate executable file: ${A}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);else throw Error(`Unable to locate executable file: ${A}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);return I}let B=yield ESA(A);if(B&&B.length>0)return B[0];return""})}function ESA(A){return l0(this,void 0,void 0,function*(){if(!A)throw Error("parameter 'tool' is required");let Q=[];if(QE&&process.env.PATHEXT){for(let C of process.env.PATHEXT.split(DB.delimiter))if(C)Q.push(C)}if(nX(A)){let C=yield i7(A,Q);if(C)return[C];return[]}if(A.includes(DB.sep))return[];let B=[];if(process.env.PATH){for(let C of process.env.PATH.split(DB.delimiter))if(C)B.push(C)}let I=[];for(let C of B){let E=yield i7(DB.join(C,A),Q);if(E)I.push(E)}return I})}function YSA(A){let Q=A.force==null?!0:A.force,B=Boolean(A.recursive),I=A.copySourceDirectory==null?!0:Boolean(A.copySourceDirectory);return{force:Q,recursive:B,copySourceDirectory:I}}function Gg(A,Q,B,I){return l0(this,void 0,void 0,function*(){if(B>=255)return;B++,yield zG(Q);let C=yield l7(A);for(let E of C){let Y=`${A}/${E}`,J=`${Q}/${E}`;if((yield E1(Y)).isDirectory())yield Gg(Y,J,B,I);else yield Dg(Y,J,I)}yield u7(Q,(yield d0(A)).mode)})}function Dg(A,Q,B){return l0(this,void 0,void 0,function*(){if((yield E1(A)).isSymbolicLink()){try{yield E1(Q),yield p7(Q)}catch(C){if(C.code==="EPERM")yield u7(Q,"0666"),yield p7(Q)}let I=yield Cg(A);yield Ig(I,Q,QE?"junction":null)}else if(!(yield u0(Q))||B)yield ef(A,Q)})}import{setTimeout as JSA}from"timers";var Zg=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})},aX=process.platform==="win32";class o7 extends a7.EventEmitter{constructor(A,Q,B){super();if(!A)throw Error("Parameter 'toolPath' cannot be null or empty.");this.toolPath=A,this.args=Q||[],this.options=B||{}}_debug(A){if(this.options.listeners&&this.options.listeners.debug)this.options.listeners.debug(A)}_getCommandString(A,Q){let B=this._getSpawnFileName(),I=this._getSpawnArgs(A),C=Q?"":"[command]";if(aX)if(this._isCmdFile()){C+=B;for(let E of I)C+=` ${E}`}else if(A.windowsVerbatimArguments){C+=`"${B}"`;for(let E of I)C+=` ${E}`}else{C+=this._windowsQuoteCmdArg(B);for(let E of I)C+=` ${this._windowsQuoteCmdArg(E)}`}else{C+=B;for(let E of I)C+=` ${E}`}return C}_processLineBuffer(A,Q,B){try{let I=Q+A.toString(),C=I.indexOf(J1.EOL);while(C>-1){let E=I.substring(0,C);B(E),I=I.substring(C+J1.EOL.length),C=I.indexOf(J1.EOL)}return I}catch(I){return this._debug(`error processing line. Failed with error ${I}`),""}}_getSpawnFileName(){if(aX){if(this._isCmdFile())return process.env.COMSPEC||"cmd.exe"}return this.toolPath}_getSpawnArgs(A){if(aX){if(this._isCmdFile()){let Q=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(let B of this.args)Q+=" ",Q+=A.windowsVerbatimArguments?B:this._windowsQuoteCmdArg(B);return Q+='"',[Q]}}return this.args}_endsWith(A,Q){return A.endsWith(Q)}_isCmdFile(){let A=this.toolPath.toUpperCase();return this._endsWith(A,".CMD")||this._endsWith(A,".BAT")}_windowsQuoteCmdArg(A){if(!this._isCmdFile())return this._uvQuoteCmdArg(A);if(!A)return'""';let Q=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'],B=!1;for(let E of A)if(Q.some((Y)=>Y===E)){B=!0;break}if(!B)return A;let I='"',C=!0;for(let E=A.length;E>0;E--)if(I+=A[E-1],C&&A[E-1]==="\\")I+="\\";else if(A[E-1]==='"')C=!0,I+='"';else C=!1;return I+='"',I.split("").reverse().join("")}_uvQuoteCmdArg(A){if(!A)return'""';if(!A.includes(" ")&&!A.includes("\t")&&!A.includes('"'))return A;if(!A.includes('"')&&!A.includes("\\"))return`"${A}"`;let Q='"',B=!0;for(let I=A.length;I>0;I--)if(Q+=A[I-1],B&&A[I-1]==="\\")Q+="\\";else if(A[I-1]==='"')B=!0,Q+="\\";else B=!1;return Q+='"',Q.split("").reverse().join("")}_cloneExecOptions(A){A=A||{};let Q={cwd:A.cwd||process.cwd(),env:A.env||process.env,silent:A.silent||!1,windowsVerbatimArguments:A.windowsVerbatimArguments||!1,failOnStdErr:A.failOnStdErr||!1,ignoreReturnCode:A.ignoreReturnCode||!1,delay:A.delay||1e4};return Q.outStream=A.outStream||process.stdout,Q.errStream=A.errStream||process.stderr,Q}_getSpawnOptions(A,Q){A=A||{};let B={};if(B.cwd=A.cwd,B.env=A.env,B.windowsVerbatimArguments=A.windowsVerbatimArguments||this._isCmdFile(),A.windowsVerbatimArguments)B.argv0=`"${Q}"`;return B}exec(){return Zg(this,void 0,void 0,function*(){if(!nX(this.toolPath)&&(this.toolPath.includes("/")||aX&&this.toolPath.includes("\\")))this.toolPath=Xg.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath);return this.toolPath=yield nA(this.toolPath,!0),new Promise((A,Q)=>Zg(this,void 0,void 0,function*(){this._debug(`exec tool: ${this.toolPath}`),this._debug("arguments:");for(let F of this.args)this._debug(` ${F}`);let B=this._cloneExecOptions(this.options);if(!B.silent&&B.outStream)B.outStream.write(this._getCommandString(B)+J1.EOL);let I=new s7(B,this.toolPath);if(I.on("debug",(F)=>{this._debug(F)}),this.options.cwd&&!(yield u0(this.options.cwd)))return Q(Error(`The cwd: ${this.options.cwd} does not exist!`));let C=this._getSpawnFileName(),E=Wg.spawn(C,this._getSpawnArgs(B),this._getSpawnOptions(this.options,C)),Y="";if(E.stdout)E.stdout.on("data",(F)=>{if(this.options.listeners&&this.options.listeners.stdout)this.options.listeners.stdout(F);if(!B.silent&&B.outStream)B.outStream.write(F);Y=this._processLineBuffer(F,Y,(G)=>{if(this.options.listeners&&this.options.listeners.stdline)this.options.listeners.stdline(G)})});let J="";if(E.stderr)E.stderr.on("data",(F)=>{if(I.processStderr=!0,this.options.listeners&&this.options.listeners.stderr)this.options.listeners.stderr(F);if(!B.silent&&B.errStream&&B.outStream)(B.failOnStdErr?B.errStream:B.outStream).write(F);J=this._processLineBuffer(F,J,(G)=>{if(this.options.listeners&&this.options.listeners.errline)this.options.listeners.errline(G)})});if(E.on("error",(F)=>{I.processError=F.message,I.processExited=!0,I.processClosed=!0,I.CheckComplete()}),E.on("exit",(F)=>{I.processExitCode=F,I.processExited=!0,this._debug(`Exit code ${F} received from tool '${this.toolPath}'`),I.CheckComplete()}),E.on("close",(F)=>{I.processExitCode=F,I.processExited=!0,I.processClosed=!0,this._debug(`STDIO streams have closed for tool '${this.toolPath}'`),I.CheckComplete()}),I.on("done",(F,G)=>{if(Y.length>0)this.emit("stdline",Y);if(J.length>0)this.emit("errline",J);if(E.removeAllListeners(),F)Q(F);else A(G)}),this.options.input){if(!E.stdin)throw Error("child process missing stdin");E.stdin.end(this.options.input)}}))})}}function Ug(A){let Q=[],B=!1,I=!1,C="";function E(Y){if(I&&Y!=='"')C+="\\";C+=Y,I=!1}for(let Y=0;Y0)Q.push(C),C="";continue}E(J)}if(C.length>0)Q.push(C.trim());return Q}class s7 extends a7.EventEmitter{constructor(A,Q){super();if(this.processClosed=!1,this.processError="",this.processExitCode=0,this.processExited=!1,this.processStderr=!1,this.delay=1e4,this.done=!1,this.timeout=null,!Q)throw Error("toolPath must not be empty");if(this.options=A,this.toolPath=Q,A.delay)this.delay=A.delay}CheckComplete(){if(this.done)return;if(this.processClosed)this._setResult();else if(this.processExited)this.timeout=JSA(s7.HandleTimeout,this.delay,this)}_debug(A){this.emit("debug",A)}_setResult(){let A;if(this.processExited){if(this.processError)A=Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);else if(this.processExitCode!==0&&!this.options.ignoreReturnCode)A=Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);else if(this.processStderr&&this.options.failOnStdErr)A=Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}if(this.timeout)clearTimeout(this.timeout),this.timeout=null;this.done=!0,this.emit("done",A,this.processExitCode)}static HandleTimeout(A){if(A.done)return;if(!A.processClosed&&A.processExited){let Q=`The STDIO streams did not close within ${A.delay/1000} seconds of the exit event from process '${A.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;A._debug(Q)}A._setResult()}}var Kg=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})};function QQ(A,Q,B){return Kg(this,void 0,void 0,function*(){let I=Ug(A);if(I.length===0)throw Error("Parameter 'commandLine' cannot be null or empty.");let C=I[0];return Q=I.slice(1).concat(Q||[]),new o7(C,Q,B).exec()})}function r7(A,Q,B){return Kg(this,void 0,void 0,function*(){var I,C;let E="",Y="",J=new wg("utf8"),F=new wg("utf8"),G=(I=B===null||B===void 0?void 0:B.listeners)===null||I===void 0?void 0:I.stdout,D=(C=B===null||B===void 0?void 0:B.listeners)===null||C===void 0?void 0:C.stderr,Z=(K)=>{if(Y+=F.write(K),D)D(K)},W=(K)=>{if(E+=J.write(K),G)G(K)},X=Object.assign(Object.assign({},B===null||B===void 0?void 0:B.listeners),{stdout:W,stderr:Z}),w=yield QQ(A,Q,Object.assign(Object.assign({},B),{listeners:X}));return E+=J.end(),Y+=F.end(),{exitCode:w,stdout:E,stderr:Y}})}var G2Q=zg.platform(),D2Q=zg.arch();var DSA=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})},t7;(function(A){A[A.Success=0]="Success",A[A.Failure=1]="Failure"})(t7||(t7={}));function oX(A){if(process.env.GITHUB_PATH||"")WK("PATH",A);else $0("add-path",{},A);process.env.PATH=`${A}${Vg.delimiter}${process.env.PATH}`}function Az(A,Q){let B=process.env[`INPUT_${A.replace(/ /g,"_").toUpperCase()}`]||"";if(Q&&Q.required&&!B)throw Error(`Input required and not supplied: ${A}`);if(Q&&Q.trimWhitespace===!1)return B;return B.trim()}function $g(A,Q){let B=["true","True","TRUE"],I=["false","False","FALSE"],C=Az(A,Q);if(B.includes(C))return!0;if(I.includes(C))return!1;throw TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${A} +Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}function xE(A,Q){if(process.env.GITHUB_OUTPUT||"")return WK("OUTPUT",sj(A,Q));process.stdout.write(e7.EOL),$0("set-output",{name:A},V0(Q))}function VG(A){process.exitCode=t7.Failure,p0(A)}function Qz(){return process.env.RUNNER_DEBUG==="1"}function o(A){$0("debug",{},A)}function p0(A,Q={}){$0("error",J8(Q),A instanceof Error?A.toString():A)}function ZJ(A,Q={}){$0("warning",J8(Q),A instanceof Error?A.toString():A)}function Bz(A,Q={}){$0("notice",J8(Q),A instanceof Error?A.toString():A)}function LA(A){process.stdout.write(A+e7.EOL)}function ZSA(A){ZK("group",A)}function WSA(){ZK("endgroup")}function sX(A,Q){return DSA(this,void 0,void 0,function*(){ZSA(A);let B;try{B=yield Q()}finally{WSA()}return B})}async function XSA(A,Q){o(`Executing: bin=${A}, args=${Q}`),await QQ(`"${A}"`,Q)}async function Lg(A){return LA(`Running Elide info at bin: ${A}`),XSA(A,["info"])}async function ZB(A){return o(`Obtaining version of Elide binary at: ${A}`),(await r7(`"${A}"`,["--version"])).stdout.trim().replaceAll("%0A","")}var GJA=f(P(),1),DJA=f(ts(),1);var y=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;var es=Object.prototype.toString;function BE(A){switch(es.call(A)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return IE(A,Error)}}function yU(A,Q){return es.call(A)===`[object ${Q}]`}function Q$(A){return yU(A,"ErrorEvent")}function s0(A){return yU(A,"String")}function SG(A){return typeof A==="object"&&A!==null&&"__sentry_template_string__"in A&&"__sentry_template_values__"in A}function k1(A){return A===null||SG(A)||typeof A!=="object"&&typeof A!=="function"}function dE(A){return yU(A,"Object")}function B$(A){return typeof Event<"u"&&IE(A,Event)}function I$(A){return typeof Element<"u"&&IE(A,Element)}function C$(A){return yU(A,"RegExp")}function aQ(A){return Boolean(A?.then&&typeof A.then==="function")}function E$(A){return dE(A)&&"nativeEvent"in A&&"preventDefault"in A&&"stopPropagation"in A}function IE(A,Q){try{return A instanceof Q}catch{return!1}}function S1(A){return!!(typeof A==="object"&&A!==null&&(A.__isVue||A._isVue||A.__v_isVNode))}var EA=globalThis;var isA=EA,nsA=80;function Ar(A,Q={}){if(!A)return"";try{let B=A,I=5,C=[],E=0,Y=0,J=" > ",F=J.length,G,D=Array.isArray(Q)?Q:Q.keyAttrs,Z=!Array.isArray(Q)&&Q.maxStringLength||nsA;while(B&&E++1&&Y+C.length*F+G.length>=Z)break;C.push(G),Y+=G.length,B=B.parentNode}return C.reverse().join(J)}catch{return""}}function asA(A,Q){let B=A,I=[];if(!B?.tagName)return"";if(isA.HTMLElement){if(B instanceof HTMLElement&&B.dataset){if(B.dataset.sentryComponent)return B.dataset.sentryComponent;if(B.dataset.sentryElement)return B.dataset.sentryElement}}I.push(B.tagName.toLowerCase());let C=Q?.length?Q.filter((E)=>B.getAttribute(E)).map((E)=>[E,B.getAttribute(E)]):null;if(C?.length)C.forEach((E)=>{I.push(`[${E[0]}="${E[1]}"]`)});else{if(B.id)I.push(`#${B.id}`);let E=B.className;if(E&&s0(E)){let Y=E.split(/\s+/);for(let J of Y)I.push(`.${J}`)}}for(let E of["aria-label","type","name","title","alt"]){let Y=B.getAttribute(E);if(Y)I.push(`[${E}="${Y}"]`)}return I.join("")}var VA="10.46.0";function RB(){return r0(EA),EA}function r0(A){let Q=A.__SENTRY__=A.__SENTRY__||{};return Q.version=Q.version||VA,Q[VA]=Q[VA]||{}}function jC(A,Q,B=EA){let I=B.__SENTRY__=B.__SENTRY__||{},C=I[VA]=I[VA]||{};return C[A]||(C[A]=Q())}var y1=["debug","info","warn","error","log","assert","trace"],osA="Sentry Logger ",yG={};function HQ(A){if(!("console"in EA))return A();let Q=EA.console,B={},I=Object.keys(yG);I.forEach((C)=>{let E=yG[C];B[C]=Q[C],Q[C]=E});try{return A()}finally{I.forEach((C)=>{Q[C]=B[C]})}}function ssA(){J$().enabled=!0}function rsA(){J$().enabled=!1}function Qr(){return J$().enabled}function tsA(...A){Y$("log",...A)}function esA(...A){Y$("warn",...A)}function ArA(...A){Y$("error",...A)}function Y$(A,...Q){if(!y)return;if(Qr())HQ(()=>{EA.console[A](`${osA}[${A}]:`,...Q)})}function J$(){if(!y)return{enabled:!1};return jC("loggerSettings",()=>({enabled:!1}))}var L={enable:ssA,disable:rsA,isEnabled:Qr,log:tsA,warn:esA,error:ArA};function F$(A,Q,B){if(!(Q in A))return;let I=A[Q];if(typeof I!=="function")return;let C=B(I);if(typeof C==="function")Cr(C,I);try{A[Q]=C}catch{y&&L.log(`Failed to replace method "${Q}" in object`,A)}}function PQ(A,Q,B){try{Object.defineProperty(A,Q,{value:B,writable:!0,configurable:!0})}catch{y&&L.log(`Failed to add non-enumerable property "${Q}" to object`,A)}}function Cr(A,Q){try{let B=Q.prototype||{};A.prototype=Q.prototype=B,PQ(A,"__sentry_original__",Q)}catch{}}function G$(A){return A.__sentry_original__}function _U(A){if(BE(A))return{message:A.message,name:A.name,stack:A.stack,...Ir(A)};else if(B$(A)){let Q={type:A.type,target:Br(A.target),currentTarget:Br(A.currentTarget),...Ir(A)};if(typeof CustomEvent<"u"&&IE(A,CustomEvent))Q.detail=A.detail;return Q}else return A}function Br(A){try{return I$(A)?Ar(A):Object.prototype.toString.call(A)}catch{return""}}function Ir(A){if(typeof A==="object"&&A!==null)return Object.fromEntries(Object.entries(A));return{}}function D$(A){let Q=Object.keys(_U(A));return Q.sort(),!Q[0]?"[object has no keys]":Q.join(", ")}var Er="_sentryScope",Yr="_sentryIsolationScope";function QrA(A){try{let Q=EA.WeakRef;if(typeof Q==="function")return new Q(A)}catch{}return A}function BrA(A){if(!A)return;if(typeof A==="object"&&"deref"in A&&typeof A.deref==="function")try{return A.deref()}catch{return}return A}function _1(A,Q,B){if(A)PQ(A,Yr,QrA(B)),PQ(A,Er,Q)}function RC(A){let Q=A;return{scope:Q[Er],isolationScope:BrA(Q[Yr])}}var Z$=0,_G=1,UA=2;function CE(A){if(A<400&&A>=100)return{code:1};if(A>=400&&A<500)switch(A){case 401:return{code:2,message:"unauthenticated"};case 403:return{code:2,message:"permission_denied"};case 404:return{code:2,message:"not_found"};case 409:return{code:2,message:"already_exists"};case 413:return{code:2,message:"failed_precondition"};case 429:return{code:2,message:"resource_exhausted"};case 499:return{code:2,message:"cancelled"};default:return{code:2,message:"invalid_argument"}}if(A>=500&&A<600)switch(A){case 501:return{code:2,message:"unimplemented"};case 503:return{code:2,message:"unavailable"};case 504:return{code:2,message:"deadline_exceeded"};default:return{code:2,message:"internal_error"}}return{code:2,message:"internal_error"}}var fG;function jJ(A){if(fG!==void 0)return fG?fG(A):A();let Q=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),B=EA;if(Q in B&&typeof B[Q]==="function")return fG=B[Q],fG(A);return fG=null,A()}function oQ(){return jJ(()=>Math.random())}function cI(){return jJ(()=>Date.now())}var X$="?",Jr=/\(error: (.*)\)/,Fr=/captureMessage|captureException/;function gU(...A){let Q=A.sort((B,I)=>B[0]-I[0]).map((B)=>B[1]);return(B,I=0,C=0)=>{let E=[],Y=B.split(` +`);for(let J=I;J1024)F=F.slice(0,1024);let G=Jr.test(F)?F.replace(Jr,"$1"):F;if(G.match(/\S*Error: /))continue;for(let D of Q){let Z=D(G);if(Z){E.push(Z);break}}if(E.length>=50+C)break}return Gr(E.slice(C))}}function U$(A){if(Array.isArray(A))return gU(...A);return A}function Gr(A){if(!A.length)return[];let Q=Array.from(A);if(/sentryWrapped/.test(fU(Q).function||""))Q.pop();if(Q.reverse(),Fr.test(fU(Q).function||"")){if(Q.pop(),Fr.test(fU(Q).function||""))Q.pop()}return Q.slice(0,50).map((B)=>({...B,filename:B.filename||fU(Q).filename,function:B.function||"?"}))}function fU(A){return A[A.length-1]||{}}var W$="";function f1(A){try{if(!A||typeof A!=="function")return W$;return A.name||W$}catch{return W$}}function hU(A){return"__v_isVNode"in A&&A.__v_isVNode?"[VueVNode]":"[VueViewModel]"}function Dr(A){let Q=A?.startsWith("file://")?A.slice(7):A;if(Q?.match(/\/[A-Z]:/))Q=Q.slice(1);return Q}function t0(A,Q=0){if(typeof A!=="string"||Q===0)return A;return A.length<=Q?A:`${A.slice(0,Q)}...`}function w$(A,Q){let B=A,I=B.length;if(I<=150)return B;if(Q>I)Q=I;let C=Math.max(Q-60,0);if(C<5)C=0;let E=Math.min(C+140,I);if(E>I-5)E=I;if(E===I)C=Math.max(E-140,0);if(B=B.slice(C,E),C>0)B=`'{snip} ${B}`;if(EcE(A,I,B))}function IrA(){let A=EA;return A.crypto||A.msCrypto}var z$;function CrA(){return oQ()*16}function _Q(A=IrA()){try{if(A?.randomUUID)return jJ(()=>A.randomUUID()).replace(/-/g,"")}catch{}if(!z$)z$=[1e7]+1000+4000+8000+100000000000;return z$.replace(/[018]/g,(Q)=>(Q^(CrA()&15)>>Q/4).toString(16))}function Zr(A){return A.exception?.values?.[0]}function AY(A){let{message:Q,event_id:B}=A;if(Q)return Q;let I=Zr(A);if(I){if(I.type&&I.value)return`${I.type}: ${I.value}`;return I.type||I.value||B||""}return B||""}function $$(A,Q,B){let I=A.exception=A.exception||{},C=I.values=I.values||[],E=C[0]=C[0]||{};if(!E.value)E.value=Q||"";if(!E.type)E.type=B||"Error"}function gG(A,Q){let B=Zr(A);if(!B)return;let I={type:"generic",handled:!0},C=B.mechanism;if(B.mechanism={...I,...C,...Q},Q&&"data"in Q){let E={...C?.data,...Q.data};B.mechanism.data=E}}var ErA=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;function V$(A){return parseInt(A||"",10)}function L$(A){let Q=A.match(ErA)||[],B=V$(Q[1]),I=V$(Q[2]),C=V$(Q[3]);return{buildmetadata:Q[5],major:isNaN(B)?void 0:B,minor:isNaN(I)?void 0:I,patch:isNaN(C)?void 0:C,prerelease:Q[4]}}function xU(A){if(Wr(A))return!0;try{PQ(A,"__sentry_captured__",!0)}catch{}return!1}function Wr(A){try{return A.__sentry_captured__}catch{}}var Ur=1000;function uE(){return cI()/Ur}function YrA(){let{performance:A}=EA;if(!A?.now||!A.timeOrigin)return uE;let Q=A.timeOrigin;return()=>{return(Q+jJ(()=>A.now()))/Ur}}var Xr;function EE(){return(Xr??(Xr=YrA()))()}function wr(A){let Q=EE(),B={sid:_Q(),init:!0,timestamp:Q,started:Q,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>JrA(B)};if(A)lE(B,A);return B}function lE(A,Q={}){if(Q.user){if(!A.ipAddress&&Q.user.ip_address)A.ipAddress=Q.user.ip_address;if(!A.did&&!Q.did)A.did=Q.user.id||Q.user.email||Q.user.username}if(A.timestamp=Q.timestamp||EE(),Q.abnormal_mechanism)A.abnormal_mechanism=Q.abnormal_mechanism;if(Q.ignoreDuration)A.ignoreDuration=Q.ignoreDuration;if(Q.sid)A.sid=Q.sid.length===32?Q.sid:_Q();if(Q.init!==void 0)A.init=Q.init;if(!A.did&&Q.did)A.did=`${Q.did}`;if(typeof Q.started==="number")A.started=Q.started;if(A.ignoreDuration)A.duration=void 0;else if(typeof Q.duration==="number")A.duration=Q.duration;else{let B=A.timestamp-A.started;A.duration=B>=0?B:0}if(Q.release)A.release=Q.release;if(Q.environment)A.environment=Q.environment;if(!A.ipAddress&&Q.ipAddress)A.ipAddress=Q.ipAddress;if(!A.userAgent&&Q.userAgent)A.userAgent=Q.userAgent;if(typeof Q.errors==="number")A.errors=Q.errors;if(Q.status)A.status=Q.status}function Kr(A,Q){let B={};if(Q)B={status:Q};else if(A.status==="ok")B={status:"exited"};lE(A,B)}function JrA(A){return{sid:`${A.sid}`,init:A.init,started:new Date(A.started*1000).toISOString(),timestamp:new Date(A.timestamp*1000).toISOString(),status:A.status,errors:A.errors,did:typeof A.did==="number"||typeof A.did==="string"?`${A.did}`:void 0,duration:A.duration,abnormal_mechanism:A.abnormal_mechanism,attrs:{release:A.release,environment:A.environment,ip_address:A.ipAddress,user_agent:A.userAgent}}}function QY(A,Q,B=2){if(!Q||typeof Q!=="object"||B<=0)return Q;if(A&&Object.keys(Q).length===0)return A;let I={...A};for(let C in Q)if(Object.prototype.hasOwnProperty.call(Q,C))I[C]=QY(I[C],Q[C],B-1);return I}function nB(){return _Q()}function aB(){return _Q().substring(16)}var H$="_sentrySpan";function RJ(A,Q){if(Q)PQ(A,H$,Q);else delete A[H$]}function pE(A){return A[H$]}var FrA=100;class WB{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:nB(),sampleRand:oQ()}}clone(){let A=new WB;if(A._breadcrumbs=[...this._breadcrumbs],A._tags={...this._tags},A._attributes={...this._attributes},A._extra={...this._extra},A._contexts={...this._contexts},this._contexts.flags)A._contexts.flags={values:[...this._contexts.flags.values]};return A._user=this._user,A._level=this._level,A._session=this._session,A._transactionName=this._transactionName,A._fingerprint=this._fingerprint,A._eventProcessors=[...this._eventProcessors],A._attachments=[...this._attachments],A._sdkProcessingMetadata={...this._sdkProcessingMetadata},A._propagationContext={...this._propagationContext},A._client=this._client,A._lastEventId=this._lastEventId,A._conversationId=this._conversationId,RJ(A,pE(this)),A}setClient(A){this._client=A}setLastEventId(A){this._lastEventId=A}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(A){this._scopeListeners.push(A)}addEventProcessor(A){return this._eventProcessors.push(A),this}setUser(A){if(this._user=A||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session)lE(this._session,{user:A});return this._notifyScopeListeners(),this}getUser(){return this._user}setConversationId(A){return this._conversationId=A||void 0,this._notifyScopeListeners(),this}setTags(A){return this._tags={...this._tags,...A},this._notifyScopeListeners(),this}setTag(A,Q){return this.setTags({[A]:Q})}setAttributes(A){return this._attributes={...this._attributes,...A},this._notifyScopeListeners(),this}setAttribute(A,Q){return this.setAttributes({[A]:Q})}removeAttribute(A){if(A in this._attributes)delete this._attributes[A],this._notifyScopeListeners();return this}setExtras(A){return this._extra={...this._extra,...A},this._notifyScopeListeners(),this}setExtra(A,Q){return this._extra={...this._extra,[A]:Q},this._notifyScopeListeners(),this}setFingerprint(A){return this._fingerprint=A,this._notifyScopeListeners(),this}setLevel(A){return this._level=A,this._notifyScopeListeners(),this}setTransactionName(A){return this._transactionName=A,this._notifyScopeListeners(),this}setContext(A,Q){if(Q===null)delete this._contexts[A];else this._contexts[A]=Q;return this._notifyScopeListeners(),this}setSession(A){if(!A)delete this._session;else this._session=A;return this._notifyScopeListeners(),this}getSession(){return this._session}update(A){if(!A)return this;let Q=typeof A==="function"?A(this):A,B=Q instanceof WB?Q.getScopeData():dE(Q)?A:void 0,{tags:I,attributes:C,extra:E,user:Y,contexts:J,level:F,fingerprint:G=[],propagationContext:D,conversationId:Z}=B||{};if(this._tags={...this._tags,...I},this._attributes={...this._attributes,...C},this._extra={...this._extra,...E},this._contexts={...this._contexts,...J},Y&&Object.keys(Y).length)this._user=Y;if(F)this._level=F;if(G.length)this._fingerprint=G;if(D)this._propagationContext=D;if(Z)this._conversationId=Z;return this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,this._conversationId=void 0,RJ(this,void 0),this._attachments=[],this.setPropagationContext({traceId:nB(),sampleRand:oQ()}),this._notifyScopeListeners(),this}addBreadcrumb(A,Q){let B=typeof Q==="number"?Q:FrA;if(B<=0)return this;let I={timestamp:uE(),...A,message:A.message?t0(A.message,2048):A.message};if(this._breadcrumbs.push(I),this._breadcrumbs.length>B)this._breadcrumbs=this._breadcrumbs.slice(-B),this._client?.recordDroppedEvent("buffer_overflow","log_item");return this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(A){return this._attachments.push(A),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:pE(this),conversationId:this._conversationId}}setSDKProcessingMetadata(A){return this._sdkProcessingMetadata=QY(this._sdkProcessingMetadata,A,2),this}setPropagationContext(A){return this._propagationContext=A,this}getPropagationContext(){return this._propagationContext}captureException(A,Q){let B=Q?.event_id||_Q();if(!this._client)return y&&L.warn("No client configured on scope - will not capture exception!"),B;let I=Error("Sentry syntheticException");return this._client.captureException(A,{originalException:A,syntheticException:I,...Q,event_id:B},this),B}captureMessage(A,Q,B){let I=B?.event_id||_Q();if(!this._client)return y&&L.warn("No client configured on scope - will not capture message!"),I;let C=B?.syntheticException??Error(A);return this._client.captureMessage(A,Q,{originalException:A,syntheticException:C,...B,event_id:I},this),I}captureEvent(A,Q){let B=A.event_id||Q?.event_id||_Q();if(!this._client)return y&&L.warn("No client configured on scope - will not capture event!"),B;return this._client.captureEvent(A,{...Q,event_id:B},this),B}_notifyScopeListeners(){if(!this._notifyingListeners)this._notifyingListeners=!0,this._scopeListeners.forEach((A)=>{A(this)}),this._notifyingListeners=!1}}function hG(){return jC("defaultCurrentScope",()=>new WB)}function UI(){return jC("defaultIsolationScope",()=>new WB)}var zr=(A)=>A instanceof Promise&&!A[Vr],Vr=Symbol("chained PromiseLike"),vU=(A,Q,B)=>{let I=A.then((C)=>{return Q(C),C},(C)=>{throw B(C),C});return zr(I)&&zr(A)?I:GrA(A,I)},GrA=(A,Q)=>{let B=!1;for(let I in A){if(I in Q)continue;B=!0;let C=A[I];if(typeof C==="function")Object.defineProperty(Q,I,{value:(...E)=>C.apply(A,E),enumerable:!0,configurable:!0,writable:!0});else Q[I]=C}if(B)Object.assign(Q,{[Vr]:!0});return Q};class Lr{constructor(A,Q){let B;if(!A)B=new WB;else B=A;let I;if(!Q)I=new WB;else I=Q;this._stack=[{scope:B}],this._isolationScope=I}withScope(A){let Q=this._pushScope(),B;try{B=A(Q)}catch(I){throw this._popScope(),I}if(aQ(B))return vU(B,()=>this._popScope(),()=>this._popScope());return this._popScope(),B}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){let A=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:A}),A}_popScope(){if(this._stack.length<=1)return!1;return!!this._stack.pop()}}function xG(){let A=RB(),Q=r0(A);return Q.stack=Q.stack||new Lr(hG(),UI())}function DrA(A){return xG().withScope(A)}function ZrA(A,Q){let B=xG();return B.withScope(()=>{return B.getStackTop().scope=A,Q(A)})}function $r(A){return xG().withScope(()=>{return A(xG().getIsolationScope())})}function Hr(){return{withIsolationScope:$r,withScope:DrA,withSetScope:ZrA,withSetIsolationScope:(A,Q)=>{return $r(Q)},getCurrentScope:()=>xG().getScope(),getIsolationScope:()=>xG().getIsolationScope()}}function M$(A){let Q=RB(),B=r0(Q);B.acs=A}function qC(A){let Q=r0(A);if(Q.acs)return Q.acs;return Hr()}function MA(){let A=RB();return qC(A).getCurrentScope()}function ZA(){let A=RB();return qC(A).getIsolationScope()}function g1(){return jC("globalScope",()=>new WB)}function XB(...A){let Q=RB(),B=qC(Q);if(A.length===2){let[I,C]=A;if(!I)return B.withScope(C);return B.withSetScope(I,C)}return B.withScope(A[0])}function vG(...A){let Q=RB(),B=qC(Q);if(A.length===2){let[I,C]=A;if(!I)return B.withIsolationScope(C);return B.withSetIsolationScope(I,C)}return B.withIsolationScope(A[0])}function u(){return MA().getClient()}function qJ(A){let Q=A.getPropagationContext(),{traceId:B,parentSpanId:I,propagationSpanId:C}=Q,E={trace_id:B,span_id:C||aB()};if(I)E.parent_span_id=I;return E}var IQ="sentry.source",uI="sentry.sample_rate",N$="sentry.previous_trace_sample_rate",e="sentry.op",n="sentry.origin";var j$="sentry.measurement_unit",R$="sentry.measurement_value",lI="sentry.custom_span_name",bG="sentry.profile_id",mG="sentry.exclusive_time",q$="cache.hit",O$="cache.key",T$="cache.item_size",P$="http.request.method",BY="url.full";var k$="gen_ai.conversation.id";var dG="sentry-";var Nr=8192;function iE(A){let Q=TJ(A);if(!Q)return;let B=Object.entries(Q).reduce((I,[C,E])=>{if(C.startsWith(dG)){let Y=C.slice(dG.length);I[Y]=E}return I},{});if(Object.keys(B).length>0)return B;else return}function OJ(A){if(!A)return;let Q=Object.entries(A).reduce((B,[I,C])=>{if(C)B[`${dG}${I}`]=C;return B},{});return bU(Q)}function TJ(A){if(!A||!s0(A)&&!Array.isArray(A))return;if(Array.isArray(A))return A.reduce((Q,B)=>{let I=Mr(B);return Object.entries(I).forEach(([C,E])=>{Q[C]=E}),Q},{});return Mr(A)}function Mr(A){return A.split(",").map((Q)=>{let B=Q.indexOf("=");if(B===-1)return[];let I=Q.slice(0,B),C=Q.slice(B+1);return[I,C].map((E)=>{try{return decodeURIComponent(E.trim())}catch{return}})}).reduce((Q,[B,I])=>{if(B&&I)Q[B]=I;return Q},{})}function bU(A){if(Object.keys(A).length===0)return;return Object.entries(A).reduce((Q,[B,I],C)=>{let E=`${encodeURIComponent(B)}=${encodeURIComponent(I)}`,Y=C===0?E:`${Q},${E}`;if(Y.length>Nr)return y&&L.warn(`Not adding key: ${B} with val: ${I} to baggage header due to exceeding baggage size limits.`),Q;else return Y},"")}function OC(A,Q,B=()=>{},I=()=>{}){let C;try{C=A()}catch(E){throw Q(E),B(),E}return WrA(C,Q,B,I)}function WrA(A,Q,B,I){if(aQ(A))return vU(A,(C)=>{B(),I(C)},(C)=>{Q(C),B()});return B(),I(A),A}function MQ(A){if(typeof __SENTRY_TRACING__==="boolean"&&!__SENTRY_TRACING__)return!1;let Q=A||u()?.getOptions();return!!Q&&(Q.tracesSampleRate!=null||!!Q.tracesSampler)}function wI(A){if(typeof A==="boolean")return Number(A);let Q=typeof A==="string"?parseFloat(A):A;if(typeof Q!=="number"||isNaN(Q)||Q<0||Q>1)return;return Q}var XrA=/^o(\d+)\./,UrA=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function wrA(A){return A==="http"||A==="https"}function KI(A,Q=!1){let{host:B,path:I,pass:C,port:E,projectId:Y,protocol:J,publicKey:F}=A;return`${J}://${F}${Q&&C?`:${C}`:""}@${B}${E?`:${E}`:""}/${I?`${I}/`:I}${Y}`}function KrA(A){let Q=UrA.exec(A);if(!Q){HQ(()=>{console.error(`Invalid Sentry Dsn: ${A}`)});return}let[B,I,C="",E="",Y="",J=""]=Q.slice(1),F="",G=J,D=G.split("/");if(D.length>1)F=D.slice(0,-1).join("/"),G=D.pop();if(G){let Z=G.match(/^\d+/);if(Z)G=Z[0]}return jr({host:E,pass:C,path:F,projectId:G,port:Y,protocol:B,publicKey:I})}function jr(A){return{protocol:A.protocol,publicKey:A.publicKey||"",pass:A.pass||"",host:A.host,port:A.port||"",path:A.path||"",projectId:A.projectId}}function zrA(A){if(!y)return!0;let{port:Q,projectId:B,protocol:I}=A;if(["protocol","publicKey","host","projectId"].find((Y)=>{if(!A[Y])return L.error(`Invalid Sentry Dsn: ${Y} missing`),!0;return!1}))return!1;if(!B.match(/^\d+$/))return L.error(`Invalid Sentry Dsn: Invalid projectId ${B}`),!1;if(!wrA(I))return L.error(`Invalid Sentry Dsn: Invalid protocol ${I}`),!1;if(Q&&isNaN(parseInt(Q,10)))return L.error(`Invalid Sentry Dsn: Invalid port ${Q}`),!1;return!0}function VrA(A){return A.match(XrA)?.[1]}function mU(A){let Q=A.getOptions(),{host:B}=A.getDsn()||{},I;if(Q.orgId)I=String(Q.orgId);else if(B)I=VrA(B);return I}function Rr(A){let Q=typeof A==="string"?KrA(A):jr(A);if(!Q||!zrA(Q))return;return Q}var h1=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function qr(A){if(!A)return;let Q=A.match(h1);if(!Q)return;let B;if(Q[3]==="1")B=!0;else if(Q[3]==="0")B=!1;return{traceId:Q[1],parentSampled:B,parentSpanId:Q[2]}}function x1(A,Q){let B=qr(A),I=iE(Q);if(!B?.traceId)return{traceId:nB(),sampleRand:oQ()};let C=$rA(B,I);if(I)I.sample_rand=C.toString();let{traceId:E,parentSpanId:Y,parentSampled:J}=B;return{traceId:E,parentSpanId:Y,sampled:J,dsc:I||{},sampleRand:C}}function IY(A=nB(),Q=aB(),B){let I="";if(B!==void 0)I=B?"-1":"-0";return`${A}-${Q}${I}`}function CY(A=nB(),Q=aB(),B){return`00-${A}-${Q}-${B?"01":"00"}`}function $rA(A,Q){let B=wI(Q?.sample_rand);if(B!==void 0)return B;let I=wI(Q?.sample_rate);if(I&&A?.parentSampled!==void 0)return A.parentSampled?oQ()*I:I+oQ()*(1-I);else return oQ()}function S$(A,Q){let B=mU(A);if(Q&&B&&Q!==B)return L.log(`Won't continue trace because org IDs don't match (incoming baggage: ${Q}, SDK options: ${B})`),!1;if(A.getOptions().strictTraceContinuation||!1){if(Q&&!B||!Q&&B)return L.log(`Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${Q}, Sentry client: ${B})`),!1}return!0}var dU=0,cU=1,Or=!1;function Pr(A){let{spanId:Q,traceId:B}=A.spanContext(),{data:I,op:C,parent_span_id:E,status:Y,origin:J,links:F}=i(A);return{parent_span_id:E,span_id:Q,trace_id:B,data:I,op:C,status:Y,origin:J,links:F}}function EY(A){let{spanId:Q,traceId:B,isRemote:I}=A.spanContext(),C=I?Q:i(A).parent_span_id,E=RC(A).scope,Y=I?E?.getPropagationContext().propagationSpanId||aB():Q;return{parent_span_id:C,span_id:Y,trace_id:B}}function b1(A){let{traceId:Q,spanId:B}=A.spanContext(),I=TC(A);return IY(Q,B,I)}function kr(A){let{traceId:Q,spanId:B}=A.spanContext(),I=TC(A);return CY(Q,B,I)}function PJ(A){if(A&&A.length>0)return A.map(({context:{spanId:Q,traceId:B,traceFlags:I,...C},attributes:E})=>({span_id:Q,trace_id:B,sampled:I===cU,attributes:E,...C}));else return}function oB(A){if(typeof A==="number")return Tr(A);if(Array.isArray(A))return A[0]+A[1]/1e9;if(A instanceof Date)return Tr(A.getTime());return EE()}function Tr(A){return A>9999999999?A/1000:A}function i(A){if(HrA(A))return A.getSpanJSON();let{spanId:Q,traceId:B}=A.spanContext();if(LrA(A)){let{attributes:I,startTime:C,name:E,endTime:Y,status:J,links:F}=A,G="parentSpanId"in A?A.parentSpanId:("parentSpanContext"in A)?A.parentSpanContext?.spanId:void 0;return{span_id:Q,trace_id:B,data:I,description:E,parent_span_id:G,start_timestamp:oB(C),timestamp:oB(Y)||void 0,status:kJ(J),op:I[e],origin:I[n],links:PJ(F)}}return{span_id:Q,trace_id:B,start_timestamp:0,data:{}}}function LrA(A){let Q=A;return!!Q.attributes&&!!Q.startTime&&!!Q.name&&!!Q.endTime&&!!Q.status}function HrA(A){return typeof A.getSpanJSON==="function"}function TC(A){let{traceFlags:Q}=A.spanContext();return Q===cU}function kJ(A){if(!A||A.code===Z$)return;if(A.code===_G)return"ok";return A.message||"internal_error"}var v1="_sentryChildSpans",y$="_sentryRootSpan";function cG(A,Q){let B=A[y$]||A;if(PQ(Q,y$,B),A[v1])A[v1].add(Q);else PQ(A,v1,new Set([Q]))}function m1(A){let Q=new Set;function B(I){if(Q.has(I))return;else if(TC(I)){Q.add(I);let C=I[v1]?Array.from(I[v1]):[];for(let E of C)B(E)}}return B(A),Array.from(Q)}function JQ(A){return A[y$]||A}function zI(){let A=RB(),Q=qC(A);if(Q.getActiveSpan)return Q.getActiveSpan();return pE(MA())}function d1(){if(!Or)HQ(()=>{console.warn("[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.")}),Or=!0}var uG="production";var Sr="_frozenDsc";function uU(A,Q){PQ(A,Sr,Q)}function _$(A,Q){let B=Q.getOptions(),{publicKey:I}=Q.getDsn()||{},C={environment:B.environment||uG,release:B.release,public_key:I,trace_id:A,org_id:mU(Q)};return Q.emit("createDsc",C),C}function YE(A,Q){let B=Q.getPropagationContext();return B.dsc||_$(B.traceId,A)}function NQ(A){let Q=u();if(!Q)return{};let B=JQ(A),I=i(B),C=I.data,E=B.spanContext().traceState,Y=E?.get("sentry.sample_rate")??C[uI]??C[N$];function J(w){if(typeof Y==="number"||typeof Y==="string")w.sample_rate=`${Y}`;return w}let F=B[Sr];if(F)return J(F);let G=E?.get("sentry.dsc"),D=G&&iE(G);if(D)return J(D);let Z=_$(A.spanContext().traceId,Q),W=C[IQ],X=I.description;if(W!=="url"&&X)Z.transaction=X;if(MQ())Z.sampled=String(TC(B)),Z.sample_rand=E?.get("sentry.sample_rand")??RC(B).scope?.getPropagationContext().sampleRand.toString();return J(Z),Q.emit("createDsc",Z,B),Z}function c1(A){if(!y)return;let{description:Q="< unknown name >",op:B="< unknown op >",parent_span_id:I}=i(A),{spanId:C}=A.spanContext(),E=TC(A),Y=JQ(A),J=Y===A,F=`[Tracing] Starting ${E?"sampled":"unsampled"} ${J?"root ":""}span`,G=[`op: ${B}`,`name: ${Q}`,`ID: ${C}`];if(I)G.push(`parent ID: ${I}`);if(!J){let{op:D,description:Z}=i(Y);if(G.push(`root ID: ${Y.spanContext().spanId}`),D)G.push(`root op: ${D}`);if(Z)G.push(`root description: ${Z}`)}L.log(`${F} + ${G.join(` + `)}`)}function u1(A){if(!y)return;let{description:Q="< unknown name >",op:B="< unknown op >"}=i(A),{spanId:I}=A.spanContext(),E=JQ(A)===A,Y=`[Tracing] Finishing "${B}" ${E?"root ":""}span "${Q}" with ID ${I}`;L.log(Y)}function l1(A,Q,B){if(!MQ(A))return[!1];let I=void 0,C;if(typeof A.tracesSampler==="function")C=A.tracesSampler({...Q,inheritOrSampleWith:(J)=>{if(typeof Q.parentSampleRate==="number")return Q.parentSampleRate;if(typeof Q.parentSampled==="boolean")return Number(Q.parentSampled);return J}}),I=!0;else if(Q.parentSampled!==void 0)C=Q.parentSampled;else if(typeof A.tracesSampleRate<"u")C=A.tracesSampleRate,I=!0;let E=wI(C);if(E===void 0)return y&&L.warn(`[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(C)} of type ${JSON.stringify(typeof C)}.`),[!1];if(!E)return y&&L.log(`[Tracing] Discarding transaction because ${typeof A.tracesSampler==="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`),[!1,E,I];let Y=BB)return g$(A,Q-1,B);return I}function f$(A,Q,B=1/0,I=1/0,C=qrA()){let[E,Y]=C;if(Q==null||["boolean","string"].includes(typeof Q)||typeof Q==="number"&&Number.isFinite(Q))return Q;let J=MrA(A,Q);if(!J.startsWith("[object "))return J;if(Q.__sentry_skip_normalization__)return Q;let F=typeof Q.__sentry_override_normalization_depth__==="number"?Q.__sentry_override_normalization_depth__:B;if(F===0)return J.replace("object ","");if(E(Q))return"[Circular ~]";let G=Q;if(G&&typeof G.toJSON==="function")try{let X=G.toJSON();return f$("",X,F-1,I,C)}catch{}let D=Array.isArray(Q)?[]:{},Z=0,W=_U(Q);for(let X in W){if(!Object.prototype.hasOwnProperty.call(W,X))continue;if(Z>=I){D[X]="[MaxProperties ~]";break}let w=W[X];D[X]=f$(X,w,F-1,I,C),Z++}return Y(Q),D}function MrA(A,Q){try{if(A==="domain"&&Q&&typeof Q==="object"&&Q._events)return"[Domain]";if(A==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&Q===global)return"[Global]";if(typeof window<"u"&&Q===window)return"[Window]";if(typeof document<"u"&&Q===document)return"[Document]";if(S1(Q))return hU(Q);if(E$(Q))return"[SyntheticEvent]";if(typeof Q==="number"&&!Number.isFinite(Q))return`[${Q}]`;if(typeof Q==="function")return`[Function: ${f1(Q)}]`;if(typeof Q==="symbol")return`[${String(Q)}]`;if(typeof Q==="bigint")return`[BigInt: ${String(Q)}]`;let B=NrA(Q);if(/^HTML(\w*)Element$/.test(B))return`[HTMLElement: ${B}]`;return`[object ${B}]`}catch(B){return`**non-serializable** (${B})`}}function NrA(A){let Q=Object.getPrototypeOf(A);return Q?.constructor?Q.constructor.name:"null prototype"}function jrA(A){return~-encodeURI(A).split(/%..|./).length}function RrA(A){return jrA(JSON.stringify(A))}function qrA(){let A=new WeakSet;function Q(I){if(A.has(I))return!0;return A.add(I),!1}function B(I){A.delete(I)}return[Q,B]}function qB(A,Q=[]){return[A,Q]}function x$(A,Q){let[B,I]=A;return[B,[...I,Q]]}function p1(A,Q){let B=A[1];for(let I of B){let C=I[0].type;if(Q(I,C))return!0}return!1}function v$(A,Q){return p1(A,(B,I)=>Q.includes(I))}function h$(A){let Q=r0(EA);return Q.encodePolyfill?Q.encodePolyfill(A):new TextEncoder().encode(A)}function i1(A){let[Q,B]=A,I=JSON.stringify(Q);function C(E){if(typeof I==="string")I=typeof E==="string"?I+E:[h$(I),E];else I.push(typeof E==="string"?h$(E):E)}for(let E of B){let[Y,J]=E;if(C(` +${JSON.stringify(Y)} +`),typeof J==="string"||J instanceof Uint8Array)C(J);else{let F;try{F=JSON.stringify(J)}catch{F=JSON.stringify(PC(J))}C(F)}}return typeof I==="string"?I:OrA(I)}function OrA(A){let Q=A.reduce((C,E)=>C+E.length,0),B=new Uint8Array(Q),I=0;for(let C of A)B.set(C,I),I+=C.length;return B}function b$(A){return[{type:"span"},A]}function m$(A){let Q=typeof A.data==="string"?h$(A.data):A.data;return[{type:"attachment",length:Q.length,filename:A.filename,content_type:A.contentType,attachment_type:A.attachmentType},Q]}var yr={sessions:"session",event:"error",client_report:"internal",user_report:"default",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",raw_security:"security",log:"log_item",trace_metric:"metric"};function TrA(A){return A in yr}function lU(A){return TrA(A)?yr[A]:A}function pU(A){if(!A?.sdk)return;let{name:Q,version:B}=A.sdk;return{name:Q,version:B}}function d$(A,Q,B,I){let C=A.sdkProcessingMetadata?.dynamicSamplingContext;return{event_id:A.event_id,sent_at:new Date().toISOString(),...Q&&{sdk:Q},...!!B&&I&&{dsn:KI(I)},...C&&{trace:C}}}function _r(A){L.log(`Ignoring span ${A.op} - ${A.description} because it matches \`ignoreSpans\`.`)}function n1(A,Q){if(!Q?.length||!A.description)return!1;for(let B of Q){if(PrA(B)){if(cE(A.description,B))return y&&_r(A),!0;continue}if(!B.name&&!B.op)continue;let I=B.name?cE(A.description,B.name):!0,C=B.op?A.op&&cE(A.op,B.op):!0;if(I&&C)return y&&_r(A),!0}return!1}function fr(A,Q){let{parent_span_id:B,span_id:I}=Q;if(!B)return;for(let C of A)if(C.parent_span_id===I)C.parent_span_id=B}function PrA(A){return typeof A==="string"||A instanceof RegExp}function krA(A,Q){if(!Q)return A;let B=A.sdk||{};return A.sdk={...B,name:B.name||Q.name,version:B.version||Q.version,integrations:[...A.sdk?.integrations||[],...Q.integrations||[]],packages:[...A.sdk?.packages||[],...Q.packages||[]],settings:A.sdk?.settings||Q.settings?{...A.sdk?.settings,...Q.settings}:void 0},A}function gr(A,Q,B,I){let C=pU(B),E={sent_at:new Date().toISOString(),...C&&{sdk:C},...!!I&&Q&&{dsn:KI(Q)}},Y="aggregates"in A?[{type:"sessions"},A]:[{type:"session"},A.toJSON()];return qB(E,[Y])}function hr(A,Q,B,I){let C=pU(B),E=A.type&&A.type!=="replay_event"?A.type:"event";krA(A,B?.sdk);let Y=d$(A,C,I,Q);return delete A.sdkProcessingMetadata,qB(Y,[[{type:E},A]])}function xr(A,Q){function B(X){return!!X.trace_id&&!!X.public_key}let I=NQ(A[0]),C=Q?.getDsn(),E=Q?.getOptions().tunnel,Y={sent_at:new Date().toISOString(),...B(I)&&{trace:I},...!!E&&C&&{dsn:KI(C)}},{beforeSendSpan:J,ignoreSpans:F}=Q?.getOptions()||{},G=F?.length?A.filter((X)=>!n1(i(X),F)):A,D=A.length-G.length;if(D)Q?.recordDroppedEvent("before_send","span",D);let Z=J?(X)=>{let w=i(X),K=J(w);if(!K)return d1(),w;return K}:i,W=[];for(let X of G){let w=Z(X);if(w)W.push(b$(w))}return qB(Y,W)}function yJ(A){if(!A||A.length===0)return;let Q={};return A.forEach((B)=>{let I=B.attributes||{},C=I[j$],E=I[R$];if(typeof C==="string"&&typeof E==="number")Q[B.name]={value:E,unit:C}}),Q}var vr=1000;class a1{constructor(A={}){if(this._traceId=A.traceId||nB(),this._spanId=A.spanId||aB(),this._startTime=A.startTimestamp||EE(),this._links=A.links,this._attributes={},this.setAttributes({[n]:"manual",[e]:A.op,...A.attributes}),this._name=A.name,A.parentSpanId)this._parentSpanId=A.parentSpanId;if("sampled"in A)this._sampled=A.sampled;if(A.endTimestamp)this._endTime=A.endTimestamp;if(this._events=[],this._isStandaloneSpan=A.isStandalone,this._endTime)this._onSpanEnded()}addLink(A){if(this._links)this._links.push(A);else this._links=[A];return this}addLinks(A){if(this._links)this._links.push(...A);else this._links=A;return this}recordException(A,Q){}spanContext(){let{_spanId:A,_traceId:Q,_sampled:B}=this;return{spanId:A,traceId:Q,traceFlags:B?cU:dU}}setAttribute(A,Q){if(Q===void 0)delete this._attributes[A];else this._attributes[A]=Q;return this}setAttributes(A){return Object.keys(A).forEach((Q)=>this.setAttribute(Q,A[Q])),this}updateStartTime(A){this._startTime=oB(A)}setStatus(A){return this._status=A,this}updateName(A){return this._name=A,this.setAttribute(IQ,"custom"),this}end(A){if(this._endTime)return;this._endTime=oB(A),u1(this),this._onSpanEnded()}getSpanJSON(){return{data:this._attributes,description:this._name,op:this._attributes[e],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:kJ(this._status),timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[n],profile_id:this._attributes[bG],exclusive_time:this._attributes[mG],measurements:yJ(this._events),is_segment:this._isStandaloneSpan&&JQ(this)===this||void 0,segment_id:this._isStandaloneSpan?JQ(this).spanContext().spanId:void 0,links:PJ(this._links)}}isRecording(){return!this._endTime&&!!this._sampled}addEvent(A,Q,B){y&&L.log("[Tracing] Adding an event to span:",A);let I=br(Q)?Q:B||EE(),C=br(Q)?{}:Q||{},E={name:A,time:oB(I),attributes:C};return this._events.push(E),this}isStandaloneSpan(){return!!this._isStandaloneSpan}_onSpanEnded(){let A=u();if(A)A.emit("spanEnd",this);if(!(this._isStandaloneSpan||this===JQ(this)))return;if(this._isStandaloneSpan){if(this._sampled)yrA(xr([this],A));else if(y&&L.log("[Tracing] Discarding standalone span because its trace was not chosen to be sampled."),A)A.recordDroppedEvent("sample_rate","span");return}let B=this._convertSpanToTransaction();if(B)(RC(this).scope||MA()).captureEvent(B)}_convertSpanToTransaction(){if(!mr(i(this)))return;if(!this._name)y&&L.warn("Transaction has no name, falling back to ``."),this._name="";let{scope:A,isolationScope:Q}=RC(this),B=A?.getScopeData().sdkProcessingMetadata?.normalizedRequest;if(this._sampled!==!0)return;let C=m1(this).filter((G)=>G!==this&&!SrA(G)).map((G)=>i(G)).filter(mr),E=this._attributes[IQ];delete this._attributes[lI],C.forEach((G)=>{delete G.data[lI]});let Y={contexts:{trace:Pr(this)},spans:C.length>vr?C.sort((G,D)=>G.start_timestamp-D.start_timestamp).slice(0,vr):C,start_timestamp:this._startTime,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:A,capturedSpanIsolationScope:Q,dynamicSamplingContext:NQ(this)},request:B,...E&&{transaction_info:{source:E}}},J=yJ(this._events);if(J&&Object.keys(J).length)y&&L.log("[Measurements] Adding measurements to transaction event",JSON.stringify(J,void 0,2)),Y.measurements=J;return Y}}function br(A){return A&&typeof A==="number"||A instanceof Date||Array.isArray(A)}function mr(A){return!!A.start_timestamp&&!!A.timestamp&&!!A.span_id&&!!A.trace_id}function SrA(A){return A instanceof a1&&A.isStandaloneSpan()}function yrA(A){let Q=u();if(!Q)return;let B=A[1];if(!B||B.length===0){Q.recordDroppedEvent("before_send","span");return}Q.sendEnvelope(A)}var iU="__SENTRY_SUPPRESS_TRACING__";function sB(A,Q){let B=s1();if(B.startSpan)return B.startSpan(A,Q);let I=u$(A),{forceTransaction:C,parentSpan:E,scope:Y}=A,J=Y?.clone();return XB(J,()=>{return cr(E)(()=>{let G=MA(),D=l$(G,E),W=A.onlyIfParent&&!D?new SJ:c$({parentSpan:D,spanArguments:I,forceTransaction:C,scope:G});return RJ(G,W),OC(()=>Q(W),()=>{let{status:X}=i(W);if(W.isRecording()&&(!X||X==="ok"))W.setStatus({code:UA,message:"internal_error"})},()=>{W.end()})})})}function fQ(A,Q){let B=s1();if(B.startSpanManual)return B.startSpanManual(A,Q);let I=u$(A),{forceTransaction:C,parentSpan:E,scope:Y}=A,J=Y?.clone();return XB(J,()=>{return cr(E)(()=>{let G=MA(),D=l$(G,E),W=A.onlyIfParent&&!D?new SJ:c$({parentSpan:D,spanArguments:I,forceTransaction:C,scope:G});return RJ(G,W),OC(()=>Q(W,()=>W.end()),()=>{let{status:X}=i(W);if(W.isRecording()&&(!X||X==="ok"))W.setStatus({code:UA,message:"internal_error"})})})})}function o1(A){let Q=s1();if(Q.startInactiveSpan)return Q.startInactiveSpan(A);let B=u$(A),{forceTransaction:I,parentSpan:C}=A;return(A.scope?(Y)=>XB(A.scope,Y):C!==void 0?(Y)=>_J(C,Y):(Y)=>Y())(()=>{let Y=MA(),J=l$(Y,C);if(A.onlyIfParent&&!J)return new SJ;return c$({parentSpan:J,spanArguments:B,forceTransaction:I,scope:Y})})}function _J(A,Q){let B=s1();if(B.withActiveSpan)return B.withActiveSpan(A,Q);return XB((I)=>{return RJ(I,A||void 0),Q(I)})}function fJ(A){let Q=s1();if(Q.suppressTracing)return Q.suppressTracing(A);return XB((B)=>{B.setSDKProcessingMetadata({[iU]:!0});let I=A();return B.setSDKProcessingMetadata({[iU]:void 0}),I})}function c$({parentSpan:A,spanArguments:Q,forceTransaction:B,scope:I}){if(!MQ()){let Y=new SJ;if(B||!A){let J={sampled:"false",sample_rate:"0",transaction:Q.name,...NQ(Y)};uU(Y,J)}return Y}let C=ZA(),E;if(A&&!B)E=_rA(A,I,Q),cG(A,E);else if(A){let Y=NQ(A),{traceId:J,spanId:F}=A.spanContext(),G=TC(A);E=dr({traceId:J,parentSpanId:F,...Q},I,G),uU(E,Y)}else{let{traceId:Y,dsc:J,parentSpanId:F,sampled:G}={...C.getPropagationContext(),...I.getPropagationContext()};if(E=dr({traceId:Y,parentSpanId:F,...Q},I,G),J)uU(E,J)}return c1(E),_1(E,I,C),E}function u$(A){let B={isStandalone:(A.experimental||{}).standalone,...A};if(A.startTime){let I={...B};return I.startTimestamp=oB(A.startTime),delete I.startTime,I}return B}function s1(){let A=RB();return qC(A)}function dr(A,Q,B){let I=u(),C=I?.getOptions()||{},{name:E=""}=A,Y={spanAttributes:{...A.attributes},spanName:E,parentSampled:B};I?.emit("beforeSampling",Y,{decision:!1});let J=Y.parentSampled??B,F=Y.spanAttributes,G=Q.getPropagationContext(),[D,Z,W]=Q.getScopeData().sdkProcessingMetadata[iU]?[!1]:l1(C,{name:E,parentSampled:J,attributes:F,parentSampleRate:wI(G.dsc?.sample_rate)},G.sampleRand),X=new a1({...A,attributes:{[IQ]:"custom",[uI]:Z!==void 0&&W?Z:void 0,...F},sampled:D});if(!D&&I)y&&L.log("[Tracing] Discarding root span because its trace was not chosen to be sampled."),I.recordDroppedEvent("sample_rate","transaction");if(I)I.emit("spanStart",X);return X}function _rA(A,Q,B){let{spanId:I,traceId:C}=A.spanContext(),E=Q.getScopeData().sdkProcessingMetadata[iU]?!1:TC(A),Y=E?new a1({...B,parentSpanId:I,traceId:C,sampled:E}):new SJ({traceId:C});cG(A,Y);let J=u();if(J){if(J.emit("spanStart",Y),B.endTimestamp)J.emit("spanEnd",Y)}return Y}function l$(A,Q){if(Q)return Q;if(Q===null)return;let B=pE(A);if(!B)return;let I=u();if((I?I.getOptions():{}).parentSpanIsAlwaysRootSpan)return JQ(B);return B}function cr(A){return A!==void 0?(Q)=>{return _J(A,Q)}:(Q)=>Q()}var p$=0,ur=1,lr=2;function nE(A){return new r1((Q)=>{Q(A)})}function lG(A){return new r1((Q,B)=>{B(A)})}class r1{constructor(A){this._state=p$,this._handlers=[],this._runExecutor(A)}then(A,Q){return new r1((B,I)=>{this._handlers.push([!1,(C)=>{if(!A)B(C);else try{B(A(C))}catch(E){I(E)}},(C)=>{if(!Q)I(C);else try{B(Q(C))}catch(E){I(E)}}]),this._executeHandlers()})}catch(A){return this.then((Q)=>Q,A)}finally(A){return new r1((Q,B)=>{let I,C;return this.then((E)=>{if(C=!1,I=E,A)A()},(E)=>{if(C=!0,I=E,A)A()}).then(()=>{if(C){B(I);return}Q(I)})})}_executeHandlers(){if(this._state===p$)return;let A=this._handlers.slice();this._handlers=[],A.forEach((Q)=>{if(Q[0])return;if(this._state===ur)Q[1](this._value);if(this._state===lr)Q[2](this._value);Q[0]=!0})}_runExecutor(A){let Q=(C,E)=>{if(this._state!==p$)return;if(aQ(E)){E.then(B,I);return}this._state=C,this._value=E,this._executeHandlers()},B=(C)=>{Q(ur,C)},I=(C)=>{Q(lr,C)};try{A(B,I)}catch(C){I(C)}}}function pr(A,Q,B,I=0){try{let C=i$(Q,B,A,I);return aQ(C)?C:nE(C)}catch(C){return lG(C)}}function i$(A,Q,B,I){let C=B[I];if(!A||!C)return A;let E=C({...A},Q);if(y&&E===null&&L.log(`Event processor "${C.id||"?"}" dropped event`),aQ(E))return E.then((Y)=>i$(Y,Q,B,I+1));return i$(E,Q,B,I+1)}var gJ,ir,nr,YY;function ar(A){let Q=EA._sentryDebugIds,B=EA._debugIds;if(!Q&&!B)return{};let I=Q?Object.keys(Q):[],C=B?Object.keys(B):[];if(YY&&I.length===ir&&C.length===nr)return YY;if(ir=I.length,nr=C.length,YY={},!gJ)gJ={};let E=(Y,J)=>{for(let F of Y){let G=J[F],D=gJ?.[F];if(D&&YY&&G){if(YY[D[0]]=G,gJ)gJ[F]=[D[0],G]}else if(G){let Z=A(F);for(let W=Z.length-1;W>=0;W--){let w=Z[W]?.filename;if(w&&YY&&gJ){YY[w]=G,gJ[F]=[w,G];break}}}}};if(Q)E(I,Q);if(B)E(C,B);return YY}function sr(A,Q){let{fingerprint:B,span:I,breadcrumbs:C,sdkProcessingMetadata:E}=Q;if(frA(A,Q),I)xrA(A,I);vrA(A,B),grA(A,C),hrA(A,E)}function or(A,Q){let{extra:B,tags:I,attributes:C,user:E,contexts:Y,level:J,sdkProcessingMetadata:F,breadcrumbs:G,fingerprint:D,eventProcessors:Z,attachments:W,propagationContext:X,transactionName:w,span:K}=Q;if(t1(A,"extra",B),t1(A,"tags",I),t1(A,"attributes",C),t1(A,"user",E),t1(A,"contexts",Y),A.sdkProcessingMetadata=QY(A.sdkProcessingMetadata,F,2),J)A.level=J;if(w)A.transactionName=w;if(K)A.span=K;if(G.length)A.breadcrumbs=[...A.breadcrumbs,...G];if(D.length)A.fingerprint=[...A.fingerprint,...D];if(Z.length)A.eventProcessors=[...A.eventProcessors,...Z];if(W.length)A.attachments=[...A.attachments,...W];A.propagationContext={...A.propagationContext,...X}}function t1(A,Q,B){A[Q]=QY(A[Q],B,1)}function pG(A,Q){let B=g1().getScopeData();return A&&or(B,A.getScopeData()),Q&&or(B,Q.getScopeData()),B}function frA(A,Q){let{extra:B,tags:I,user:C,contexts:E,level:Y,transactionName:J}=Q;if(Object.keys(B).length)A.extra={...B,...A.extra};if(Object.keys(I).length)A.tags={...I,...A.tags};if(Object.keys(C).length)A.user={...C,...A.user};if(Object.keys(E).length)A.contexts={...E,...A.contexts};if(Y)A.level=Y;if(J&&A.type!=="transaction")A.transaction=J}function grA(A,Q){let B=[...A.breadcrumbs||[],...Q];A.breadcrumbs=B.length?B:void 0}function hrA(A,Q){A.sdkProcessingMetadata={...A.sdkProcessingMetadata,...Q}}function xrA(A,Q){A.contexts={trace:EY(Q),...A.contexts},A.sdkProcessingMetadata={dynamicSamplingContext:NQ(Q),...A.sdkProcessingMetadata};let B=JQ(Q),I=i(B).description;if(I&&!A.transaction&&A.type==="transaction")A.transaction=I}function vrA(A,Q){if(A.fingerprint=A.fingerprint?Array.isArray(A.fingerprint)?A.fingerprint:[A.fingerprint]:[],Q)A.fingerprint=A.fingerprint.concat(Q);if(!A.fingerprint.length)delete A.fingerprint}function rr(A,Q,B,I,C,E){let{normalizeDepth:Y=3,normalizeMaxBreadth:J=1000}=A,F={...Q,event_id:Q.event_id||B.event_id||_Q(),timestamp:Q.timestamp||uE()},G=B.integrations||A.integrations.map(($)=>$.name);if(brA(F,A),crA(F,G),C)C.emit("applyFrameMetadata",Q);if(Q.type===void 0)mrA(F,A.stackParser);let D=lrA(I,B.captureContext);if(B.mechanism)gG(F,B.mechanism);let Z=C?C.getEventProcessors():[],W=pG(E,D),X=[...B.attachments||[],...W.attachments];if(X.length)B.attachments=X;sr(F,W);let w=[...Z,...W.eventProcessors];return(B.data&&B.data.__sentry__===!0?nE(F):pr(w,F,B)).then(($)=>{if($)drA($);if(typeof Y==="number"&&Y>0)return urA($,Y,J);return $})}function brA(A,Q){let{environment:B,release:I,dist:C,maxValueLength:E}=Q;if(A.environment=A.environment||B||uG,!A.release&&I)A.release=I;if(!A.dist&&C)A.dist=C;let Y=A.request;if(Y?.url&&E)Y.url=t0(Y.url,E);if(E)A.exception?.values?.forEach((J)=>{if(J.value)J.value=t0(J.value,E)})}function mrA(A,Q){let B=ar(Q);A.exception?.values?.forEach((I)=>{I.stacktrace?.frames?.forEach((C)=>{if(C.filename)C.debug_id=B[C.filename]})})}function drA(A){let Q={};if(A.exception?.values?.forEach((I)=>{I.stacktrace?.frames?.forEach((C)=>{if(C.debug_id){if(C.abs_path)Q[C.abs_path]=C.debug_id;else if(C.filename)Q[C.filename]=C.debug_id;delete C.debug_id}})}),Object.keys(Q).length===0)return;A.debug_meta=A.debug_meta||{},A.debug_meta.images=A.debug_meta.images||[];let B=A.debug_meta.images;Object.entries(Q).forEach(([I,C])=>{B.push({type:"sourcemap",code_file:I,debug_id:C})})}function crA(A,Q){if(Q.length>0)A.sdk=A.sdk||{},A.sdk.integrations=[...A.sdk.integrations||[],...Q]}function urA(A,Q,B){if(!A)return null;let I={...A,...A.breadcrumbs&&{breadcrumbs:A.breadcrumbs.map((C)=>({...C,...C.data&&{data:PC(C.data,Q,B)}}))},...A.user&&{user:PC(A.user,Q,B)},...A.contexts&&{contexts:PC(A.contexts,Q,B)},...A.extra&&{extra:PC(A.extra,Q,B)}};if(A.contexts?.trace&&I.contexts){if(I.contexts.trace=A.contexts.trace,A.contexts.trace.data)I.contexts.trace.data=PC(A.contexts.trace.data,Q,B)}if(A.spans)I.spans=A.spans.map((C)=>{return{...C,...C.data&&{data:PC(C.data,Q,B)}}});if(A.contexts?.flags&&I.contexts)I.contexts.flags=PC(A.contexts.flags,3,B);return I}function lrA(A,Q){if(!Q)return A;let B=A?A.clone():new WB;return B.update(Q),B}function tr(A){if(!A)return;if(prA(A))return{captureContext:A};if(nrA(A))return{captureContext:A};return A}function prA(A){return A instanceof WB||typeof A==="function"}var irA=["user","level","extra","contexts","tags","fingerprint","propagationContext"];function nrA(A){return Object.keys(A).some((Q)=>irA.includes(Q))}function IA(A,Q){return MA().captureException(A,tr(Q))}function e1(A,Q){let B=typeof Q==="string"?Q:void 0,I=typeof Q!=="string"?{captureContext:Q}:void 0;return MA().captureMessage(A,B,I)}function A9(A,Q){return MA().captureEvent(A,Q)}function Q9(A){ZA().setTags(A)}async function hJ(A){let Q=u();if(Q)return Q.flush(A);return y&&L.warn("Cannot flush events. No client defined."),Promise.resolve(!1)}function B9(){let A=u();return A?.getOptions().enabled!==!1&&!!A?.getTransport()}function I9(A){let Q=ZA(),{user:B}=pG(Q,MA()),{userAgent:I}=EA.navigator||{},C=wr({user:B,...I&&{userAgent:I},...A}),E=Q.getSession();if(E?.status==="ok")lE(E,{status:"exited"});return iG(),Q.setSession(C),C}function iG(){let A=ZA(),B=MA().getSession()||A.getSession();if(B)Kr(B);arA(),A.setSession()}function arA(){let A=ZA(),Q=u(),B=A.getSession();if(B&&Q)Q.captureSession(B)}function er(A,Q,B,I,C){let E={sent_at:new Date().toISOString()};if(B?.sdk)E.sdk={name:B.sdk.name,version:B.sdk.version};if(!!I&&!!C)E.dsn=KI(C);if(Q)E.trace=Q;let Y=orA(A);return qB(E,[Y])}function orA(A){return[{type:"check_in"},A]}var srA="7";function rrA(A){let Q=A.protocol?`${A.protocol}:`:"",B=A.port?`:${A.port}`:"";return`${Q}//${A.host}${B}${A.path?`/${A.path}`:""}/api/`}function trA(A){return`${rrA(A)}${A.projectId}/envelope/`}function erA(A,Q){let B={sentry_version:srA};if(A.publicKey)B.sentry_key=A.publicKey;if(Q)B.sentry_client=`${Q.name}/${Q.version}`;return new URLSearchParams(B).toString()}function At(A,Q,B){return Q?Q:`${trA(A)}?${erA(A,B)}`}var n$=[];function AtA(A){let Q={};return A.forEach((B)=>{let{name:I}=B,C=Q[I];if(C&&!C.isDefaultInstance&&B.isDefaultInstance)return;Q[I]=B}),Object.values(Q)}function a$(A){let Q=A.defaultIntegrations||[],B=A.integrations;Q.forEach((C)=>{C.isDefaultInstance=!0});let I;if(Array.isArray(B))I=[...Q,...B];else if(typeof B==="function"){let C=B(Q);I=Array.isArray(C)?C:[C]}else I=Q;return AtA(I)}function Qt(A,Q){let B={};return Q.forEach((I)=>{if(I)s$(A,I,B)}),B}function o$(A,Q){for(let B of Q)if(B?.afterAllSetup)B.afterAllSetup(A)}function s$(A,Q,B){if(B[Q.name]){y&&L.log(`Integration skipped because it was already installed: ${Q.name}`);return}if(B[Q.name]=Q,!n$.includes(Q.name)&&typeof Q.setupOnce==="function")Q.setupOnce(),n$.push(Q.name);if(Q.setup&&typeof Q.setup==="function")Q.setup(A);if(typeof Q.preprocessEvent==="function"){let I=Q.preprocessEvent.bind(Q);A.on("preprocessEvent",(C,E)=>I(C,E,A))}if(typeof Q.processEvent==="function"){let I=Q.processEvent.bind(Q),C=Object.assign((E,Y)=>I(E,Y,A),{id:Q.name});A.addEventProcessor(C)}y&&L.log(`Integration installed: ${Q.name}`)}function S(A){return A}function QtA(A){return typeof A==="object"&&A!=null&&!Array.isArray(A)&&Object.keys(A).includes("value")}function BtA(A,Q){let{value:B,unit:I}=QtA(A)?A:{value:A,unit:void 0},C=ItA(B),E=I&&typeof I==="string"?{unit:I}:{};if(C)return{...C,...E};if(!Q||Q==="skip-undefined"&&B===void 0)return;let Y="";try{Y=JSON.stringify(B)??""}catch{}return{value:Y,type:"string",...E}}function r$(A,Q=!1){let B={};for(let[I,C]of Object.entries(A??{})){let E=BtA(C,Q);if(E)B[I]=E}return B}function ItA(A){let Q=typeof A==="string"?"string":typeof A==="boolean"?"boolean":typeof A==="number"&&!Number.isNaN(A)?Number.isInteger(A)?"integer":"double":null;if(Q)return{value:A,type:Q}}var t$=0,e$;function Bt(A){let Q=Math.floor(A*1000);if(e$!==void 0&&Q!==e$)t$=0;let B=t$;return t$++,e$=Q,{key:"sentry.timestamp.sequence",value:{value:B,type:"integer"}}}function nU(A,Q){if(!Q)return[void 0,void 0];return XB(Q,()=>{let B=zI(),I=B?EY(B):qJ(Q);return[B?NQ(B):YE(A,Q),I]})}function CtA(A){return[{type:"log",item_count:A.length,content_type:"application/vnd.sentry.items.log+json"},{items:A}]}function It(A,Q,B,I){let C={};if(Q?.sdk)C.sdk={name:Q.sdk.name,version:Q.sdk.version};if(!!B&&!!I)C.dsn=KI(I);return qB(C,[CtA(A)])}function nG(A,Q){let B=Q??EtA(A)??[];if(B.length===0)return;let I=A.getOptions(),C=It(B,I._metadata,I.tunnel,A.getDsn());Ct().set(A,[]),A.emit("flushLogs"),A.sendEnvelope(C)}function EtA(A){return Ct().get(A)}function Ct(){return jC("clientToLogBufferMap",()=>new WeakMap)}function YtA(A){return[{type:"trace_metric",item_count:A.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:A}]}function Et(A,Q,B,I){let C={};if(Q?.sdk)C.sdk={name:Q.sdk.name,version:Q.sdk.version};if(!!B&&!!I)C.dsn=KI(I);return qB(C,[YtA(A)])}var JtA=1000;function aE(A,Q,B,I=!0){if(B&&(I||!(Q in A)))A[Q]=B}function FtA(A,Q){let B=Q3(),I=Jt(A);if(I===void 0)B.set(A,[Q]);else if(I.length>=JtA)A3(A,I),B.set(A,[Q]);else B.set(A,[...I,Q])}function GtA(A,Q,B){let{release:I,environment:C}=Q.getOptions(),E={...A.attributes};aE(E,"user.id",B.id,!1),aE(E,"user.email",B.email,!1),aE(E,"user.name",B.username,!1),aE(E,"sentry.release",I),aE(E,"sentry.environment",C);let{name:Y,version:J}=Q.getSdkMetadata()?.sdk??{};aE(E,"sentry.sdk.name",Y),aE(E,"sentry.sdk.version",J);let F=Q.getIntegrationByName("Replay"),G=F?.getReplayId(!0);if(aE(E,"sentry.replay_id",G),G&&F?.getRecordingMode()==="buffer")aE(E,"sentry._internal.replay_is_buffering",!0);return{...A,attributes:E}}function DtA(A,Q,B,I){let[,C]=nU(Q,B),E=pE(B),Y=E?E.spanContext().traceId:C?.trace_id,J=E?E.spanContext().spanId:void 0,F=EE(),G=Bt(F);return{timestamp:F,trace_id:Y??"",span_id:J,name:A.name,type:A.type,unit:A.unit,value:A.value,attributes:{...r$(I),...r$(A.attributes,"skip-undefined"),[G.key]:G.value}}}function Yt(A,Q){let B=Q?.scope??MA(),I=Q?.captureSerializedMetric??FtA,C=B?.getClient()??u();if(!C){y&&L.warn("No client available to capture metric.");return}let{_experiments:E,enableMetrics:Y,beforeSendMetric:J}=C.getOptions();if(!(Y??E?.enableMetrics??!0)){y&&L.warn("metrics option not enabled, metric will not be captured.");return}let{user:G,attributes:D}=pG(ZA(),B),Z=GtA(A,C,G);C.emit("processMetric",Z);let W=J||E?.beforeSendMetric,X=W?W(Z):Z;if(!X){y&&L.log("`beforeSendMetric` returned `null`, will not send metric.");return}let w=DtA(X,C,B,D);y&&L.log("[Metric]",w),I(C,w),C.emit("afterCaptureMetric",X)}function A3(A,Q){let B=Q??Jt(A)??[];if(B.length===0)return;let I=A.getOptions(),C=Et(B,I._metadata,I.tunnel,A.getDsn());Q3().set(A,[]),A.emit("flushMetrics"),A.sendEnvelope(C)}function Jt(A){return Q3().get(A)}function Q3(){return jC("clientToMetricBufferMap",()=>new WeakMap)}function aU(A){if(typeof A==="object"&&typeof A.unref==="function")A.unref();return A}var C9=Symbol.for("SentryBufferFullError");function aG(A=100){let Q=new Set;function B(){return Q.sizeI(J),()=>I(J)),J}function E(Y){if(!Q.size)return nE(!0);let J=Promise.allSettled(Array.from(Q)).then(()=>!0);if(!Y)return J;let F=[J,new Promise((G)=>aU(setTimeout(()=>G(!1),Y)))];return Promise.race(F)}return{get $(){return Array.from(Q)},add:C,drain:E}}var ZtA=60000;function WtA(A,Q=cI()){let B=parseInt(`${A}`,10);if(!isNaN(B))return B*1000;let I=Date.parse(`${A}`);if(!isNaN(I))return I-Q;return ZtA}function XtA(A,Q){return A[Q]||A.all||0}function Ft(A,Q,B=cI()){return XtA(A,Q)>B}function Gt(A,{statusCode:Q,headers:B},I=cI()){let C={...A},E=B?.["x-sentry-rate-limits"],Y=B?.["retry-after"];if(E)for(let J of E.trim().split(",")){let[F,G,,,D]=J.split(":",5),Z=parseInt(F,10),W=(!isNaN(Z)?Z:60)*1000;if(!G)C.all=I+W;else for(let X of G.split(";"))if(X==="metric_bucket"){if(!D||D.split(";").includes("custom"))C[X]=I+W}else C[X]=I+W}else if(Y)C.all=I+WtA(Y,I);else if(Q===429)C.all=I+60000;return C}var E9=64;function oG(A,Q,B=aG(A.bufferSize||E9)){let I={},C=(Y)=>B.drain(Y);function E(Y){let J=[];if(p1(Y,(Z,W)=>{let X=lU(W);if(Ft(I,X))A.recordDroppedEvent("ratelimit_backoff",X);else J.push(Z)}),J.length===0)return Promise.resolve({});let F=qB(Y[0],J),G=(Z)=>{if(v$(F,["client_report"])){y&&L.warn(`Dropping client report. Will not send outcomes (reason: ${Z}).`);return}p1(F,(W,X)=>{A.recordDroppedEvent(Z,lU(X))})},D=()=>Q({body:i1(F)}).then((Z)=>{if(Z.statusCode===413)return y&&L.error("Sentry responded with status code 413. Envelope was discarded due to exceeding size limits."),G("send_error"),Z;if(y&&Z.statusCode!==void 0&&(Z.statusCode<200||Z.statusCode>=300))L.warn(`Sentry responded with status code ${Z.statusCode} to sent event.`);return I=Gt(I,Z),Z},(Z)=>{throw G("network_error"),y&&L.error("Encountered error running transport request:",Z),Z});return B.add(D).then((Z)=>Z,(Z)=>{if(Z===C9)return y&&L.error("Skipped sending event because buffer is full."),G("queue_overflow"),Promise.resolve({});else throw Z})}return{send:E,flush:C}}function Dt(A,Q,B){let I=[{type:"client_report"},{timestamp:B||uE(),discarded_events:A}];return qB(Q?{dsn:Q}:{},[I])}function oU(A){let Q=[];if(A.message)Q.push(A.message);try{let B=A.exception.values[A.exception.values.length-1];if(B?.value){if(Q.push(B.value),B.type)Q.push(`${B.type}: ${B.value}`)}}catch{}return Q}function Zt(A){let{trace_id:Q,parent_span_id:B,span_id:I,status:C,origin:E,data:Y,op:J}=A.contexts?.trace??{};return{data:Y??{},description:A.transaction,op:J,parent_span_id:B,span_id:I??"",start_timestamp:A.start_timestamp??0,status:C,timestamp:A.timestamp,trace_id:Q??"",origin:E,profile_id:Y?.[bG],exclusive_time:Y?.[mG],measurements:A.measurements,is_segment:!0}}function Wt(A){return{type:"transaction",timestamp:A.timestamp,start_timestamp:A.start_timestamp,transaction:A.description,contexts:{trace:{trace_id:A.trace_id,span_id:A.span_id,parent_span_id:A.parent_span_id,op:A.op,status:A.status,origin:A.origin,data:{...A.data,...A.profile_id&&{[bG]:A.profile_id},...A.exclusive_time&&{[mG]:A.exclusive_time}}}},measurements:A.measurements}}var Xt="Not capturing exception because it's already been captured.",Ut="Discarded session because of missing or non-string release",Lt=Symbol.for("SentryInternalError"),Ht=Symbol.for("SentryDoNotSendEventError"),UtA=5000;function sU(A){return{message:A,[Lt]:!0}}function B3(A){return{message:A,[Ht]:!0}}function wt(A){return!!A&&typeof A==="object"&&Lt in A}function Kt(A){return!!A&&typeof A==="object"&&Ht in A}function zt(A,Q,B,I,C){let E=0,Y,J=!1;A.on(B,()=>{E=0,clearTimeout(Y),J=!1}),A.on(Q,(F)=>{if(E+=I(F),E>=800000)C(A);else if(!J)J=!0,Y=aU(setTimeout(()=>{C(A)},UtA))}),A.on("flush",()=>{C(A)})}class C3{constructor(A){if(this._options=A,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=aG(A.transportOptions?.bufferSize??E9),A.dsn)this._dsn=Rr(A.dsn);else y&&L.warn("No DSN provided, client will not send events.");if(this._dsn){let B=At(this._dsn,A.tunnel,A._metadata?A._metadata.sdk:void 0);this._transport=A.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...A.transportOptions,url:B})}if(this._options.enableLogs=this._options.enableLogs??this._options._experiments?.enableLogs,this._options.enableLogs)zt(this,"afterCaptureLog","flushLogs",VtA,nG);if(this._options.enableMetrics??this._options._experiments?.enableMetrics??!0)zt(this,"afterCaptureMetric","flushMetrics",ztA,A3)}captureException(A,Q,B){let I=_Q();if(xU(A))return y&&L.log(Xt),I;let C={event_id:I,...Q};return this._process(()=>this.eventFromException(A,C).then((E)=>this._captureEvent(E,C,B)).then((E)=>E),"error"),C.event_id}captureMessage(A,Q,B,I){let C={event_id:_Q(),...B},E=SG(A)?A:String(A),Y=k1(A),J=Y?this.eventFromMessage(E,Q,C):this.eventFromException(A,C);return this._process(()=>J.then((F)=>this._captureEvent(F,C,I)),Y?"unknown":"error"),C.event_id}captureEvent(A,Q,B){let I=_Q();if(Q?.originalException&&xU(Q.originalException))return y&&L.log(Xt),I;let C={event_id:I,...Q},E=A.sdkProcessingMetadata||{},Y=E.capturedSpanScope,J=E.capturedSpanIsolationScope,F=Vt(A.type);return this._process(()=>this._captureEvent(A,C,Y||B,J),F),C.event_id}captureSession(A){this.sendSession(A),lE(A,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(A){let Q=this._transport;if(!Q)return!0;this.emit("flush");let B=await this._isClientDoneProcessing(A),I=await Q.flush(A);return B&&I}async close(A){nG(this);let Q=await this.flush(A);return this.getOptions().enabled=!1,this.emit("close"),Q}getEventProcessors(){return this._eventProcessors}addEventProcessor(A){this._eventProcessors.push(A)}init(){if(this._isEnabled()||this._options.integrations.some(({name:A})=>A.startsWith("Spotlight")))this._setupIntegrations()}getIntegrationByName(A){return this._integrations[A]}addIntegration(A){let Q=this._integrations[A.name];if(s$(this,A,this._integrations),!Q)o$(this,[A])}sendEvent(A,Q={}){this.emit("beforeSendEvent",A,Q);let B=hr(A,this._dsn,this._options._metadata,this._options.tunnel);for(let I of Q.attachments||[])B=x$(B,m$(I));this.sendEnvelope(B).then((I)=>this.emit("afterSendEvent",A,I))}sendSession(A){let{release:Q,environment:B=uG}=this._options;if("aggregates"in A){let C=A.attrs||{};if(!C.release&&!Q){y&&L.warn(Ut);return}C.release=C.release||Q,C.environment=C.environment||B,A.attrs=C}else{if(!A.release&&!Q){y&&L.warn(Ut);return}A.release=A.release||Q,A.environment=A.environment||B}this.emit("beforeSendSession",A);let I=gr(A,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope(I)}recordDroppedEvent(A,Q,B=1){if(this._options.sendClientReports){let I=`${A}:${Q}`;y&&L.log(`Recording outcome: "${I}"${B>1?` (${B} times)`:""}`),this._outcomes[I]=(this._outcomes[I]||0)+B}}on(A,Q){let B=this._hooks[A]=this._hooks[A]||new Set,I=(...C)=>Q(...C);return B.add(I),()=>{B.delete(I)}}emit(A,...Q){let B=this._hooks[A];if(B)B.forEach((I)=>I(...Q))}async sendEnvelope(A){if(this.emit("beforeEnvelope",A),this._isEnabled()&&this._transport)try{return await this._transport.send(A)}catch(Q){return y&&L.error("Error while sending envelope:",Q),{}}return y&&L.error("Transport disabled"),{}}dispose(){}_setupIntegrations(){let{integrations:A}=this._options;this._integrations=Qt(this,A),o$(this,A)}_updateSessionFromEvent(A,Q){let B=Q.level==="fatal",I=!1,C=Q.exception?.values;if(C){I=!0,B=!1;for(let J of C)if(J.mechanism?.handled===!1){B=!0;break}}let E=A.status==="ok";if(E&&A.errors===0||E&&B)lE(A,{...B&&{status:"crashed"},errors:A.errors||Number(I||B)}),this.captureSession(A)}async _isClientDoneProcessing(A){let Q=0;while(!A||QsetTimeout(B,1)),!this._numProcessing)return!0;Q++}return!1}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(A,Q,B,I){let C=this.getOptions(),E=Object.keys(this._integrations);if(!Q.integrations&&E?.length)Q.integrations=E;if(this.emit("preprocessEvent",A,Q),!A.type)I.setLastEventId(A.event_id||Q.event_id);return rr(C,A,Q,B,this,I).then((Y)=>{if(Y===null)return Y;this.emit("postprocessEvent",Y,Q),Y.contexts={trace:{...Y.contexts?.trace,...qJ(B)},...Y.contexts};let J=YE(this,B);return Y.sdkProcessingMetadata={dynamicSamplingContext:J,...Y.sdkProcessingMetadata},Y})}_captureEvent(A,Q={},B=MA(),I=ZA()){if(y&&I3(A))L.log(`Captured error event \`${oU(A)[0]||""}\``);return this._processEvent(A,Q,B,I).then((C)=>{return C.event_id},(C)=>{if(y)if(Kt(C))L.log(C.message);else if(wt(C))L.warn(C.message);else L.warn(C);return})}_processEvent(A,Q,B,I){let C=this.getOptions(),{sampleRate:E}=C,Y=Mt(A),J=I3(A),G=`before send for type \`${A.type||"error"}\``,D=typeof E>"u"?void 0:wI(E);if(J&&typeof D==="number"&&oQ()>D)return this.recordDroppedEvent("sample_rate","error"),lG(B3(`Discarding event because it's not included in the random sample (sampling rate = ${E})`));let Z=Vt(A.type);return this._prepareEvent(A,Q,B,I).then((W)=>{if(W===null)throw this.recordDroppedEvent("event_processor",Z),B3("An event processor returned `null`, will not send event.");if(Q.data?.__sentry__===!0)return W;let w=KtA(this,C,W,Q);return wtA(w,G)}).then((W)=>{if(W===null){if(this.recordDroppedEvent("before_send",Z),Y){let z=1+(A.spans||[]).length;this.recordDroppedEvent("before_send","span",z)}throw B3(`${G} returned \`null\`, will not send event.`)}let X=B.getSession()||I.getSession();if(J&&X)this._updateSessionFromEvent(X,W);if(Y){let K=W.sdkProcessingMetadata?.spanCountBeforeProcessing||0,z=W.spans?W.spans.length:0,$=K-z;if($>0)this.recordDroppedEvent("before_send","span",$)}let w=W.transaction_info;if(Y&&w&&W.transaction!==A.transaction)W.transaction_info={...w,source:"custom"};return this.sendEvent(W,Q),W}).then(null,(W)=>{if(Kt(W)||wt(W))throw W;throw this.captureException(W,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:W}),sU(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. +Reason: ${W}`)})}_process(A,Q){this._numProcessing++,this._promiseBuffer.add(A).then((B)=>{return this._numProcessing--,B},(B)=>{if(this._numProcessing--,B===C9)this.recordDroppedEvent("queue_overflow",Q);return B})}_clearOutcomes(){let A=this._outcomes;return this._outcomes={},Object.entries(A).map(([Q,B])=>{let[I,C]=Q.split(":");return{reason:I,category:C,quantity:B}})}_flushOutcomes(){y&&L.log("Flushing outcomes...");let A=this._clearOutcomes();if(A.length===0){y&&L.log("No outcomes to send");return}if(!this._dsn){y&&L.log("No dsn provided, will not send outcomes");return}y&&L.log("Sending outcomes:",A);let Q=Dt(A,this._options.tunnel&&KI(this._dsn));this.sendEnvelope(Q)}}function Vt(A){return A==="replay_event"?"replay":A||"error"}function wtA(A,Q){let B=`${Q} must return \`null\` or a valid event.`;if(aQ(A))return A.then((I)=>{if(!dE(I)&&I!==null)throw sU(B);return I},(I)=>{throw sU(`${Q} rejected with ${I}`)});else if(!dE(A)&&A!==null)throw sU(B);return A}function KtA(A,Q,B,I){let{beforeSend:C,beforeSendTransaction:E,beforeSendSpan:Y,ignoreSpans:J}=Q,F=B;if(I3(F)&&C)return C(F,I);if(Mt(F)){if(Y||J){let G=Zt(F);if(J?.length&&n1(G,J))return null;if(Y){let D=Y(G);if(!D)d1();else F=QY(B,Wt(D))}if(F.spans){let D=[],Z=F.spans;for(let X of Z){if(J?.length&&n1(X,J)){fr(Z,X);continue}if(Y){let w=Y(X);if(!w)d1(),D.push(X);else D.push(w)}else D.push(X)}let W=F.spans.length-D.length;if(W)A.recordDroppedEvent("before_send","span",W);F.spans=D}}if(E){if(F.spans){let G=F.spans.length;F.sdkProcessingMetadata={...B.sdkProcessingMetadata,spanCountBeforeProcessing:G}}return E(F,I)}}return F}function I3(A){return A.type===void 0}function Mt(A){return A.type==="transaction"}function ztA(A){let Q=0;if(A.name)Q+=A.name.length*2;return Q+=8,Q+Nt(A.attributes)}function VtA(A){let Q=0;if(A.message)Q+=A.message.length*2;return Q+Nt(A.attributes)}function Nt(A){if(!A)return 0;let Q=0;return Object.values(A).forEach((B)=>{if(Array.isArray(B))Q+=B.length*$t(B[0]);else if(k1(B))Q+=$t(B);else Q+=100}),Q}function $t(A){if(typeof A==="string")return A.length*2;else if(typeof A==="number")return 8;else if(typeof A==="boolean")return 4;return 0}var rU={},jt={};function sG(A,Q){rU[A]=rU[A]||[],rU[A].push(Q)}function rG(A,Q){if(!jt[A]){jt[A]=!0;try{Q()}catch(B){y&&L.error(`Error while instrumenting ${A}`,B)}}}function tG(A,Q){let B=A&&rU[A];if(!B)return;for(let I of B)try{I(Q)}catch(C){y&&L.error(`Error while triggering instrumentation handler. +Type: ${A} +Name: ${f1(I)} +Error:`,C)}}var E3=null;function Rt(A){sG("error",A),rG("error",$tA)}function $tA(){E3=EA.onerror,EA.onerror=function(A,Q,B,I,C){if(tG("error",{column:I,error:C,line:B,msg:A,url:Q}),E3)return E3.apply(this,arguments);return!1},EA.onerror.__SENTRY_INSTRUMENTED__=!0}var Y3=null;function qt(A){sG("unhandledrejection",A),rG("unhandledrejection",LtA)}function LtA(){Y3=EA.onunhandledrejection,EA.onunhandledrejection=function(A){if(tG("unhandledrejection",A),Y3)return Y3.apply(this,arguments);return!0},EA.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}var Ot=!1;function Tt(){if(Ot)return;function A(){let Q=zI(),B=Q&&JQ(Q);if(B)y&&L.log("[Tracing] Root span: internal_error -> Global error occurred"),B.setStatus({code:UA,message:"internal_error"})}A.tag="sentry_tracingErrorCallback",Ot=!0,Rt(A),qt(A)}function Pt(A){let Q=A._metadata?.sdk,B=Q?.name&&Q?.version?`${Q?.name}/${Q?.version}`:void 0;A.transportOptions={...A.transportOptions,headers:{...B&&{"user-agent":B},...A.transportOptions?.headers}}}function kt(A,Q){return A(Q.stack||"",1)}function HtA(A){return BE(A)&&"__sentry_fetch_url_host__"in A&&typeof A.__sentry_fetch_url_host__==="string"}function MtA(A){if(HtA(A))return`${A.message} (${A.__sentry_fetch_url_host__})`;return A.message}function J3(A,Q){let B={type:Q.name||Q.constructor.name,value:MtA(Q)},I=kt(A,Q);if(I.length)B.stacktrace={frames:I};return B}function NtA(A){for(let Q in A)if(Object.prototype.hasOwnProperty.call(A,Q)){let B=A[Q];if(B instanceof Error)return B}return}function jtA(A){if("name"in A&&typeof A.name==="string"){let I=`'${A.name}' captured as exception`;if("message"in A&&typeof A.message==="string")I+=` with message '${A.message}'`;return I}else if("message"in A&&typeof A.message==="string")return A.message;let Q=D$(A);if(Q$(A))return`Event \`ErrorEvent\` captured as exception with message \`${A.message}\``;let B=RtA(A);return`${B&&B!=="Object"?`'${B}'`:"Object"} captured as exception with keys: ${Q}`}function RtA(A){try{let Q=Object.getPrototypeOf(A);return Q?Q.constructor.name:void 0}catch{}}function qtA(A,Q,B,I){if(BE(B))return[B,void 0];if(Q.synthetic=!0,dE(B)){let E=A?.getOptions().normalizeDepth,Y={["__serialized__"]:g$(B,E)},J=NtA(B);if(J)return[J,Y];let F=jtA(B),G=I?.syntheticException||Error(F);return G.message=F,[G,Y]}let C=I?.syntheticException||Error(B);return C.message=`${B}`,[C,void 0]}function St(A,Q,B,I){let E=I?.data&&I.data.mechanism||{handled:!0,type:"generic"},[Y,J]=qtA(A,E,B,I),F={exception:{values:[J3(Q,Y)]}};if(J)F.extra=J;return $$(F,void 0,void 0),gG(F,E),{...F,event_id:I?.event_id}}function yt(A,Q,B="info",I,C){let E={event_id:I?.event_id,level:B};if(C&&I?.syntheticException){let Y=kt(A,I.syntheticException);if(Y.length)E.exception={values:[{value:Q,stacktrace:{frames:Y}}]},gG(E,{synthetic:!0})}if(SG(Q)){let{__sentry_template_string__:Y,__sentry_template_values__:J}=Q;return E.logentry={message:Y,params:J},E}return E.message=Q,E}class tU extends C3{constructor(A){Tt(),Pt(A);super(A);this._setUpMetricsProcessing()}eventFromException(A,Q){let B=St(this,this._options.stackParser,A,Q);return B.level="error",nE(B)}eventFromMessage(A,Q="info",B){return nE(yt(this._options.stackParser,A,Q,B,this._options.attachStacktrace))}captureException(A,Q,B){return _t(Q),super.captureException(A,Q,B)}captureEvent(A,Q,B){if(!A.type&&A.exception?.values&&A.exception.values.length>0)_t(Q);return super.captureEvent(A,Q,B)}captureCheckIn(A,Q,B){let I="checkInId"in A&&A.checkInId?A.checkInId:_Q();if(!this._isEnabled())return y&&L.warn("SDK not enabled, will not capture check-in."),I;let C=this.getOptions(),{release:E,environment:Y,tunnel:J}=C,F={check_in_id:I,monitor_slug:A.monitorSlug,status:A.status,release:E,environment:Y};if("duration"in A)F.duration=A.duration;if(Q)F.monitor_config={schedule:Q.schedule,checkin_margin:Q.checkinMargin,max_runtime:Q.maxRuntime,timezone:Q.timezone,failure_issue_threshold:Q.failureIssueThreshold,recovery_threshold:Q.recoveryThreshold};let[G,D]=nU(this,B);if(D)F.contexts={trace:D};let Z=er(F,G,this.getSdkMetadata(),J,this.getDsn());return y&&L.log("Sending checkin:",A.monitorSlug,A.status),this.sendEnvelope(Z),I}dispose(){y&&L.log("Disposing client...");for(let A of Object.keys(this._hooks))this._hooks[A]?.clear();this._hooks={},this._eventProcessors.length=0,this._integrations={},this._outcomes={},this._transport=void 0,this._promiseBuffer=aG(E9)}_prepareEvent(A,Q,B,I){if(this._options.platform)A.platform=A.platform||this._options.platform;if(this._options.runtime)A.contexts={...A.contexts,runtime:A.contexts?.runtime||this._options.runtime};if(this._options.serverName)A.server_name=A.server_name||this._options.serverName;return super._prepareEvent(A,Q,B,I)}_setUpMetricsProcessing(){this.on("processMetric",(A)=>{if(this._options.serverName)A.attributes={"server.address":this._options.serverName,...A.attributes}})}}function _t(A){let Q=ZA().getScopeData().sdkProcessingMetadata.requestSession;if(Q){let B=A?.mechanism?.handled??!0;if(B&&Q.status!=="crashed")Q.status="errored";else if(!B)Q.status="crashed"}}var F3=new Set;function G3(A){A.forEach((Q)=>{F3.add(Q),y&&L.log(`AI provider "${Q}" wrapping will be skipped`)})}function xJ(A){return F3.has(A)}function D3(){F3.clear(),y&&L.log("Cleared AI provider skip registrations")}var OtA=new Set(["false","f","n","no","off","0"]),TtA=new Set(["true","t","y","yes","on","1"]);function vJ(A,Q){let B=String(A).toLowerCase();if(OtA.has(B))return!1;if(TtA.has(B))return!0;return Q?.strict?null:Boolean(A)}var PtA="thismessage:/";function Z3(A){return"isRelative"in A}function Y9(A,Q){let B=A.indexOf("://")<=0&&A.indexOf("//")!==0,I=Q??(B?PtA:void 0);try{if("canParse"in URL&&!URL.canParse(A,I))return;let C=new URL(A,I);if(B)return{isRelative:B,pathname:C.pathname,search:C.search,hash:C.hash};return C}catch{}return}function ft(A){if(Z3(A))return A.pathname;let Q=new URL(A);if(Q.search="",Q.hash="",["80","443"].includes(Q.port))Q.port="";if(Q.password)Q.password="%filtered%";if(Q.username)Q.username="%filtered%";return Q.toString()}function ktA(A,Q,B,I){let C=B?.method?.toUpperCase()??"GET",E=I?I:A?Q==="client"?ft(A):A.pathname:"/";return`${C} ${E}`}function W3(A,Q,B,I,C){let E={[n]:B,[IQ]:"url"};if(C)E[Q==="server"?"http.route":"url.template"]=C,E[IQ]="route";if(I?.method)E[P$]=I.method.toUpperCase();if(A){if(A.search)E["url.query"]=A.search;if(A.hash)E["url.fragment"]=A.hash;if(A.pathname){if(E["url.path"]=A.pathname,A.pathname==="/")E[IQ]="route"}if(!Z3(A)){if(E[BY]=A.href,A.port)E["url.port"]=A.port;if(A.protocol)E["url.scheme"]=A.protocol;if(A.hostname)E[Q==="server"?"server.address":"url.domain"]=A.hostname}}return[ktA(A,Q,I,C),E]}function JY(A){if(!A)return{};let Q=A.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!Q)return{};let B=Q[6]||"",I=Q[8]||"";return{host:Q[4],path:Q[5],protocol:Q[2],search:B,hash:I,relative:Q[5]+B+I}}function oE(A){return A.split(/[?#]/,1)[0]}function FY(A){let{protocol:Q,host:B,path:I}=A,C=B?.replace(/^.*@/,"[filtered]:[filtered]@").replace(/(:80)$/,"").replace(/(:443)$/,"")||"";return`${Q?`${Q}://`:""}${C}${I}`}function eG(A,Q=!0){if(A.startsWith("data:")){let B=A.match(/^data:([^;,]+)/),I=B?B[1]:"text/plain",C=A.includes(";base64,"),E=A.indexOf(","),Y="";if(Q&&E!==-1){let J=A.slice(E+1);Y=J.length>10?`${J.slice(0,10)}... [truncated]`:J}return`data:${I}${C?",base64":""}${Y?`,${Y}`:""}`}return A}function bJ(A,Q,B=[Q],I="npm"){let C=(A._metadata=A._metadata||{}).sdk=A._metadata.sdk||{};if(!C.name)C.name=`sentry.javascript.${Q}`,C.packages=B.map((E)=>({name:`${I}:@sentry/${E}`,version:VA})),C.version=VA}function mJ(A={}){let Q=A.client||u();if(!B9()||!Q)return{};let B=RB(),I=qC(B);if(I.getTraceData)return I.getTraceData(A);let C=A.scope||MA(),E=A.span||zI(),Y=E?b1(E):StA(C),J=E?NQ(E):YE(Q,C),F=OJ(J);if(!h1.test(Y))return L.warn("Invalid sentry-trace data. Cannot generate trace data"),{};let D={"sentry-trace":Y,baggage:F};if(A.propagateTraceparent)D.traceparent=E?kr(E):ytA(C);return D}function StA(A){let{traceId:Q,sampled:B,propagationSpanId:I}=A.getPropagationContext();return IY(Q,I,B)}function ytA(A){let{traceId:Q,sampled:B,propagationSpanId:I}=A.getPropagationContext();return CY(Q,I,B)}var gt="[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:";function dJ(A,Q,B){if(typeof A!=="string"||!Q)return!0;let I=B?.get(A);if(I!==void 0)return y&&!I&&L.log(gt,A),I;let C=e0(A,Q);return B?.set(A,C),y&&!C&&L.log(gt,A),C}function X3(A,Q,B){let I,C,E,Y=B?.maxWait?Math.max(B.maxWait,Q):0,J=B?.setTimeoutImpl||setTimeout;function F(){return G(),I=A(),I}function G(){C!==void 0&&clearTimeout(C),E!==void 0&&clearTimeout(E),C=E=void 0}function D(){if(C!==void 0||E!==void 0)return F();return I}function Z(){if(C)clearTimeout(C);if(C=J(F,Q),Y&&E===void 0)E=J(F,Y);return I}return Z.cancel=G,Z.flush=D,Z}function bt(A){let Q=Object.create(null);try{Object.entries(A).forEach(([B,I])=>{if(typeof I==="string")Q[B]=I})}catch{}return Q}function J9(A){let Q=A.headers||{},I=(typeof Q["x-forwarded-host"]==="string"?Q["x-forwarded-host"]:void 0)||(typeof Q.host==="string"?Q.host:void 0),E=(typeof Q["x-forwarded-proto"]==="string"?Q["x-forwarded-proto"]:void 0)||A.protocol||(A.socket?.encrypted?"https":"http"),Y=A.url||"",J=_tA({url:Y,host:I,protocol:E}),F=A.body||void 0,G=A.cookies;return{url:J,method:A.method,query_string:mt(Y),headers:bt(Q),cookies:G,data:F}}function _tA({url:A,protocol:Q,host:B}){if(A?.startsWith("http"))return A;if(A&&B)return`${Q}://${B}${A}`;return}var ht=["auth","token","secret","session","password","passwd","pwd","key","jwt","bearer","sso","saml","csrf","xsrf","credentials","set-cookie","cookie"],ftA=["x-forwarded-","-user"];function eU(A,Q=!1,B="request"){let I={};try{Object.entries(A).forEach(([C,E])=>{if(E==null)return;let Y=C.toLowerCase();if((Y==="cookie"||Y==="set-cookie")&&typeof E==="string"&&E!==""){let F=Y==="set-cookie",G=E.indexOf(";"),D=F&&G!==-1?E.substring(0,G):E,Z=F?[D]:D.split("; ");for(let W of Z){let X=W.indexOf("="),w=X!==-1?W.substring(0,X):W,K=X!==-1?W.substring(X+1):"",z=w.toLowerCase();vt(I,Y,z,K,Q,B)}}else vt(I,Y,"",E,Q,B)})}catch{}return I}function xt(A){return A.replace(/-/g,"_")}function vt(A,Q,B,I,C,E){let Y=gtA(B||Q,I,C);if(Y==null)return;let J=`http.${E}.header.${xt(Q)}${B?`.${xt(B)}`:""}`;A[J]=Y}function gtA(A,Q,B){if(B?ht.some((C)=>A.includes(C)):[...ftA,...ht].some((C)=>A.includes(C)))return"[Filtered]";else if(Array.isArray(Q))return Q.map((C)=>C!=null?String(C):C).join(";");else if(typeof Q==="string")return Q;return}function mt(A){if(!A)return;try{let Q=new URL(A,"http://s.io").search.slice(1);return Q.length?Q:void 0}catch{return}}var htA=100;function VI(A,Q){let B=u(),I=ZA();if(!B)return;let{beforeBreadcrumb:C=null,maxBreadcrumbs:E=htA}=B.getOptions();if(E<=0)return;let J={timestamp:uE(),...A},F=C?HQ(()=>C(J,Q)):J;if(F===null)return;if(B.emit)B.emit("beforeAddBreadcrumb",F,Q);I.addBreadcrumb(F,E)}var dt,xtA="FunctionToString",ct=new WeakMap,vtA=()=>{return{name:xtA,setupOnce(){dt=Function.prototype.toString;try{Function.prototype.toString=function(...A){let Q=G$(this),B=ct.has(u())&&Q!==void 0?Q:this;return dt.apply(B,A)}}catch{}},setup(A){ct.set(A,!0)}}},F9=S(vtA);var btA=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,/can't redefine non-configurable property "solana"/,/vv\(\)\.getRestrictions is not a function/,/Can't find variable: _AutofillCallbackHandler/,/Object Not Found Matching Id:\d+, MethodName:simulateEvent/,/^Java exception was raised during method invocation$/],mtA="EventFilters",Q4=S((A={})=>{let Q;return{name:mtA,setup(B){let I=B.getOptions();Q=ut(A,I)},processEvent(B,I,C){if(!Q){let E=C.getOptions();Q=ut(A,E)}return dtA(B,Q)?null:B}}}),G9=S((A={})=>{return{...Q4(A),name:"InboundFilters"}});function ut(A={},Q={}){return{allowUrls:[...A.allowUrls||[],...Q.allowUrls||[]],denyUrls:[...A.denyUrls||[],...Q.denyUrls||[]],ignoreErrors:[...A.ignoreErrors||[],...Q.ignoreErrors||[],...A.disableErrorDefaults?[]:btA],ignoreTransactions:[...A.ignoreTransactions||[],...Q.ignoreTransactions||[]]}}function dtA(A,Q){if(!A.type){if(ctA(A,Q.ignoreErrors))return y&&L.warn(`Event dropped due to being matched by \`ignoreErrors\` option. +Event: ${AY(A)}`),!0;if(ntA(A))return y&&L.warn(`Event dropped due to not having an error message, error type or stacktrace. +Event: ${AY(A)}`),!0;if(ltA(A,Q.denyUrls))return y&&L.warn(`Event dropped due to being matched by \`denyUrls\` option. +Event: ${AY(A)}. +Url: ${A4(A)}`),!0;if(!ptA(A,Q.allowUrls))return y&&L.warn(`Event dropped due to not being matched by \`allowUrls\` option. +Event: ${AY(A)}. +Url: ${A4(A)}`),!0}else if(A.type==="transaction"){if(utA(A,Q.ignoreTransactions))return y&&L.warn(`Event dropped due to being matched by \`ignoreTransactions\` option. +Event: ${AY(A)}`),!0}return!1}function ctA(A,Q){if(!Q?.length)return!1;return oU(A).some((B)=>e0(B,Q))}function utA(A,Q){if(!Q?.length)return!1;let B=A.transaction;return B?e0(B,Q):!1}function ltA(A,Q){if(!Q?.length)return!1;let B=A4(A);return!B?!1:e0(B,Q)}function ptA(A,Q){if(!Q?.length)return!0;let B=A4(A);return!B?!0:e0(B,Q)}function itA(A=[]){for(let Q=A.length-1;Q>=0;Q--){let B=A[Q];if(B&&B.filename!==""&&B.filename!=="[native code]")return B.filename||null}return null}function A4(A){try{let B=[...A.exception?.values??[]].reverse().find((I)=>I.mechanism?.parent_id===void 0&&I.stacktrace?.frames?.length)?.stacktrace?.frames;return B?itA(B):null}catch{return y&&L.error(`Cannot extract url for event ${AY(A)}`),null}}function ntA(A){if(!A.exception?.values?.length)return!1;return!A.message&&!A.exception.values.some((Q)=>Q.stacktrace||Q.type&&Q.type!=="Error"||Q.value)}function it(A,Q,B,I,C,E){if(!C.exception?.values||!E||!IE(E.originalException,Error))return;let Y=C.exception.values.length>0?C.exception.values[C.exception.values.length-1]:void 0;if(Y)C.exception.values=U3(A,Q,I,E.originalException,B,C.exception.values,Y,0)}function U3(A,Q,B,I,C,E,Y,J){if(E.length>=B+1)return E;let F=[...E];if(IE(I[C],Error)){lt(Y,J,I);let G=A(Q,I[C]),D=F.length;pt(G,C,D,J),F=U3(A,Q,B,I[C],C,[G,...F],G,D)}if(nt(I))I.errors.forEach((G,D)=>{if(IE(G,Error)){lt(Y,J,I);let Z=A(Q,G),W=F.length;pt(Z,`errors[${D}]`,W,J),F=U3(A,Q,B,G,C,[Z,...F],Z,W)}});return F}function nt(A){return Array.isArray(A.errors)}function lt(A,Q,B){A.mechanism={handled:!0,type:"auto.core.linked_errors",...nt(B)&&{is_exception_group:!0},...A.mechanism,exception_id:Q}}function pt(A,Q,B,I){A.mechanism={handled:!0,...A.mechanism,type:"chained",source:Q,exception_id:B,parent_id:I}}var atA="cause",otA=5,stA="LinkedErrors",rtA=(A={})=>{let Q=A.limit||otA,B=A.key||atA;return{name:stA,preprocessEvent(I,C,E){let Y=E.getOptions();it(J3,Y.stackParser,B,Q,I,C)}}},D9=S(rtA);function at(A){let Q={},B=0;while(B{let Y=Q[E.toLowerCase()],J=Array.isArray(Y)?Y.join(";"):Y;if(E==="Forwarded")return ttA(J);return J?.split(",").map((F)=>F.trim())}).reduce((E,Y)=>{if(!Y)return E;return E.concat(Y)},[]).find((E)=>E!==null&&etA(E))||null}function ttA(A){if(!A)return null;for(let Q of A.split(";"))if(Q.startsWith("for="))return Q.slice(4);return null}function etA(A){return/(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/.test(A)}var AeA={cookies:!0,data:!0,headers:!0,query_string:!0,url:!0},QeA="RequestData",BeA=(A={})=>{let Q={...AeA,...A.include};return{name:QeA,processEvent(B,I,C){let{sdkProcessingMetadata:E={}}=B,{normalizedRequest:Y,ipAddress:J}=E,F={...Q,ip:Q.ip??C.getOptions().sendDefaultPii};if(Y)IeA(B,Y,{ipAddress:J},F);return B}}},Z9=S(BeA);function IeA(A,Q,B,I){if(A.request={...A.request,...CeA(Q,I)},I.ip){let C=Q.headers&&ot(Q.headers)||B.ipAddress;if(C)A.user={...A.user,ip_address:C}}}function CeA(A,Q){let B={},I={...A.headers};if(Q.headers){if(B.headers=I,!Q.cookies)delete I.cookie;if(!Q.ip)w3.forEach((C)=>{delete I[C]})}if(B.method=A.method,Q.url)B.url=A.url;if(Q.cookies){let C=A.cookies||(I?.cookie?at(I.cookie):void 0);B.cookies=C||{}}if(Q.query_string)B.query_string=A.query_string;if(Q.data)B.data=A.data;return B}function st(A){sG("console",A),rG("console",EeA)}function EeA(){if(!("console"in EA))return;y1.forEach(function(A){if(!(A in EA.console))return;F$(EA.console,A,function(Q){return yG[A]=Q,function(...B){tG("console",{args:B,level:A}),yG[A]?.apply(EA.console,B)}})})}function rt(A){return A==="warn"?"warning":["fatal","error","warning","log","info","debug"].includes(A)?A:"log"}var YeA=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function JeA(A){let Q=A.length>1024?`${A.slice(-1024)}`:A,B=YeA.exec(Q);return B?B.slice(1):[]}function K3(A){let Q=JeA(A),B=Q[0]||"",I=Q[1];if(!B&&!I)return".";if(I)I=I.slice(0,I.length-1);return B+I}var FeA=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,B4=Symbol("sentryPostgresConnectionContext"),z3=Symbol.for("sentry.instrumented.postgresjs"),GeA=Symbol.for("sentry.query.from.instrumented.sql");function $3(A,Q){if(!A||typeof A!=="function")return y&&L.warn("instrumentPostgresJsSql: provided value is not a valid postgres.js sql instance"),A;return V3(A,{requireParentSpan:!0,...Q})}function V3(A,Q,B){if(A[z3])return A;let I=new Proxy(A,{apply(C,E,Y){let J=Reflect.apply(C,E,Y);if(J&&typeof J==="object"&&"handle"in J)et(J,I,Q);return J},get(C,E){let Y=C[E];if(typeof E!=="string"||typeof Y!=="function")return Y;if(E==="unsafe"||E==="file")return DeA(Y,C,I,Q);if(E==="begin"||E==="reserve")return ZeA(Y,C,I,Q);return Y}});if(B)I[B4]=B;else KeA(A,I);return A[z3]=!0,I[z3]=!0,I}function DeA(A,Q,B,I){return function(...C){let E=Reflect.apply(A,Q,C);if(E&&typeof E==="object"&&"handle"in E)et(E,B,I);return E}}function ZeA(A,Q,B,I){return function(...C){let E=B[B4];if(typeof C[C.length-1]!=="function"){let D=Reflect.apply(A,Q,C);if(D&&typeof D.then==="function")return D.then((Z)=>{return V3(Z,I,E)});return D}let J=C.length===1?C[0]:C[1],F=function(D){let Z=V3(D,I,E);return J(Z)},G=C.length===1?[F]:[C[0],F];return Reflect.apply(A,Q,G)}}function et(A,Q,B){if(A.handle?.__sentryWrapped)return;A[GeA]=!0;let I=A.handle,C=async function(...E){if(!WeA(B))return I.apply(this,E);let Y=XeA(A.strings),J=UeA(Y);return fQ({name:J||"postgresjs.query",op:"db"},(F)=>{F.setAttribute(n,"auto.db.postgresjs"),F.setAttributes({"db.system.name":"postgres","db.query.text":J});let G=Q?Q[B4]:void 0;if(weA(F,G),B.requestHook)try{B.requestHook(F,J,G)}catch(Z){F.setAttribute("sentry.hook.error","requestHook failed"),y&&L.error("Error in requestHook for PostgresJs instrumentation:",Z)}let D=this;D.resolve=new Proxy(D.resolve,{apply:(Z,W,X)=>{try{tt(F,J,X?.[0]?.command),F.end()}catch(w){y&&L.error("Error ending span in resolve callback:",w)}return Reflect.apply(Z,W,X)}}),D.reject=new Proxy(D.reject,{apply:(Z,W,X)=>{try{F.setStatus({code:UA,message:X?.[0]?.message||"unknown_error"}),F.setAttribute("db.response.status_code",X?.[0]?.code||"unknown"),F.setAttribute("error.type",X?.[0]?.name||"unknown"),tt(F,J),F.end()}catch(w){y&&L.error("Error ending span in reject callback:",w)}return Reflect.apply(Z,W,X)}});try{return I.apply(this,E)}catch(Z){throw F.setStatus({code:UA,message:Z instanceof Error?Z.message:"unknown_error"}),F.end(),Z}})};C.__sentryWrapped=!0,A.handle=C}function WeA(A){return zI()!==void 0||!A.requireParentSpan}function XeA(A){if(!A?.length)return;if(A.length===1)return A[0]||void 0;return A.reduce((Q,B,I)=>I===0?B:`${Q}$${I}${B}`,"")}function UeA(A){if(!A)return"Unknown SQL Query";return A.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{let Q=new Set(A.levels||y1);return{name:zeA,setup(B){st(({args:I,level:C})=>{if(u()!==B||!Q.has(C))return;VeA(C,I)})}}});function VeA(A,Q){let B={category:"console",data:{arguments:Q,logger:"console"},level:rt(A),message:Ae(Q)};if(A==="assert")if(Q[0]===!1){let I=Q.slice(1);B.message=I.length>0?`Assertion failed: ${Ae(I)}`:"Assertion failed",B.data.arguments=I}else return;VI(B,{input:Q,level:A})}function Ae(A){return"util"in EA&&typeof EA.util.format==="function"?EA.util.format(...A):K$(A," ")}var $eA="ConversationId",LeA=()=>{return{name:$eA,setup(A){A.on("spanStart",(Q)=>{let B=MA().getScopeData(),I=ZA().getScopeData(),C=B.conversationId||I.conversationId;if(C)Q.setAttribute(k$,C)})}}},L3=S(LeA);var AD={};FVA(AD,{gauge:()=>MeA,distribution:()=>NeA,count:()=>HeA});function H3(A,Q,B,I){Yt({type:A,name:Q,value:B,unit:I?.unit,attributes:I?.attributes},{scope:I?.scope})}function HeA(A,Q=1,B){H3("counter",A,Q,B)}function MeA(A,Q,B){H3("gauge",A,Q,B)}function NeA(A,Q,B){H3("distribution",A,Q,B)}var Qe="gen_ai.prompt",GY="gen_ai.system",XQ="gen_ai.request.model",QD="gen_ai.request.stream",DY="gen_ai.request.temperature",BD="gen_ai.request.max_tokens",ZY="gen_ai.request.frequency_penalty",ID="gen_ai.request.presence_penalty",WY="gen_ai.request.top_p",I4="gen_ai.request.top_k",Be="gen_ai.request.encoding_format",Ie="gen_ai.request.dimensions",rB="gen_ai.response.finish_reasons",gQ="gen_ai.response.model",pI="gen_ai.response.id",Ce="gen_ai.response.stop_reason",aA="gen_ai.usage.input_tokens",jQ="gen_ai.usage.output_tokens",OB="gen_ai.usage.total_tokens",sQ="gen_ai.operation.name",TB="sentry.sdk_meta.gen_ai.input.messages.original_length",rQ="gen_ai.input.messages",Ee="gen_ai.output.messages",$I="gen_ai.system_instructions",kQ="gen_ai.response.text",JE="gen_ai.request.available_tools",cJ="gen_ai.response.streaming",cQ="gen_ai.response.tool_calls",M3="gen_ai.agent.name",Ye="gen_ai.pipeline.name",X9="gen_ai.conversation.id",Je="gen_ai.usage.cache_creation_input_tokens",Fe="gen_ai.usage.cache_read_input_tokens",N3="gen_ai.usage.input_tokens.cache_write",XY="gen_ai.usage.input_tokens.cached",C4="gen_ai.invoke_agent",Ge="gen_ai.generate_text",De="gen_ai.stream_text",Ze="gen_ai.generate_object",We="gen_ai.stream_object",E4="gen_ai.embeddings.input",Xe="gen_ai.embeddings",Ue="gen_ai.embeddings",we="gen_ai.rerank",Ke="gen_ai.execute_tool",uJ="gen_ai.tool.name",j3="gen_ai.tool.call.id",R3="gen_ai.tool.type",Y4="gen_ai.tool.input",J4="gen_ai.tool.output",ze="gen_ai.tool.description",q3="openai.response.id",O3="openai.response.model",T3="openai.response.timestamp",Ve="openai.usage.completion_tokens",$e="openai.usage.prompt_tokens",lJ={CHAT:"chat",EMBEDDINGS:"embeddings"},P3="anthropic.response.timestamp";var U9=new Map,k3=new Set(["ai.generateText","ai.streamText","ai.generateObject","ai.streamObject"]),S3=new Set(["ai.generateText.doGenerate","ai.streamText.doStream","ai.generateObject.doGenerate","ai.streamObject.doStream"]),Le=new Set(["ai.embed.doEmbed","ai.embedMany.doEmbed"]),He=new Set(["ai.rerank.doRerank"]),Me={"ai.embed.doEmbed":"embeddings","ai.embedMany.doEmbed":"embeddings","ai.rerank.doRerank":"rerank"};function UY(A){if(!A||typeof A!=="object")return!1;return ReA(A)||je(A)||jeA(A)||Re(A)||qe(A)||qeA(A)||OeA(A)||TeA(A)||PeA(A)||keA(A)||SeA(A)||yeA(A)}function jeA(A){if(!("image_url"in A))return!1;if(typeof A.image_url==="string")return A.image_url.startsWith("data:");return Ne(A)}function Ne(A){return"image_url"in A&&!!A.image_url&&typeof A.image_url==="object"&&"url"in A.image_url&&typeof A.image_url.url==="string"&&A.image_url.url.startsWith("data:")}function ReA(A){return"type"in A&&typeof A.type==="string"&&"source"in A&&UY(A.source)}function je(A){return"inlineData"in A&&!!A.inlineData&&typeof A.inlineData==="object"&&"data"in A.inlineData&&typeof A.inlineData.data==="string"}function Re(A){return"type"in A&&A.type==="input_audio"&&"input_audio"in A&&!!A.input_audio&&typeof A.input_audio==="object"&&"data"in A.input_audio&&typeof A.input_audio.data==="string"}function qe(A){return"type"in A&&A.type==="file"&&"file"in A&&!!A.file&&typeof A.file==="object"&&"file_data"in A.file&&typeof A.file.file_data==="string"}function qeA(A){return"media_type"in A&&typeof A.media_type==="string"&&"data"in A}function OeA(A){return"type"in A&&A.type==="file"&&"mediaType"in A&&typeof A.mediaType==="string"&&"data"in A&&typeof A.data==="string"&&!A.data.startsWith("http://")&&!A.data.startsWith("https://")}function TeA(A){return"type"in A&&A.type==="image"&&"image"in A&&typeof A.image==="string"&&!A.image.startsWith("http://")&&!A.image.startsWith("https://")}function PeA(A){return"type"in A&&(A.type==="blob"||A.type==="base64")}function keA(A){return"b64_json"in A}function SeA(A){return"type"in A&&"result"in A&&A.type==="image_generation"}function yeA(A){return"uri"in A&&typeof A.uri==="string"&&A.uri.startsWith("data:")}var w9="[Blob substitute]",_eA=["image_url","data","content","b64_json","result","uri","image"];function pJ(A){let Q={...A};if(UY(Q.source))Q.source=pJ(Q.source);if(je(A))Q.inlineData={...A.inlineData,data:w9};if(Ne(A))Q.image_url={...A.image_url,url:w9};if(Re(A))Q.input_audio={...A.input_audio,data:w9};if(qe(A))Q.file={...A.file,file_data:w9};for(let B of _eA)if(typeof Q[B]==="string")Q[B]=w9;return Q}var Te=20000,F4=(A)=>{return new TextEncoder().encode(A).length},_3=(A)=>{return F4(JSON.stringify(A))};function G4(A,Q){if(F4(A)<=Q)return A;let B=0,I=A.length,C="";while(B<=I){let E=Math.floor((B+I)/2),Y=A.slice(0,E);if(F4(Y)<=Q)C=Y,B=E+1;else I=E-1}return C}function feA(A){if(typeof A==="string")return A;if("text"in A&&typeof A.text==="string")return A.text;return""}function Oe(A,Q){if(typeof A==="string")return Q;return{...A,text:Q}}function geA(A){return A!==null&&typeof A==="object"&&"content"in A&&typeof A.content==="string"}function Pe(A){return A!==null&&typeof A==="object"&&"content"in A&&Array.isArray(A.content)}function ke(A){return A!==null&&typeof A==="object"&&"parts"in A&&Array.isArray(A.parts)&&A.parts.length>0}function heA(A,Q){let B={...A,content:""},I=_3(B),C=Q-I;if(C<=0)return[];let E=G4(A.content,C);return[{...A,content:E}]}function xeA(A){if("parts"in A&&Array.isArray(A.parts))return{key:"parts",items:A.parts};if("content"in A&&Array.isArray(A.content))return{key:"content",items:A.content};return{key:null,items:[]}}function veA(A,Q){let{key:B,items:I}=xeA(A);if(B===null||I.length===0)return[];let C=I.map((F)=>Oe(F,"")),E=_3({...A,[B]:C}),Y=Q-E;if(Y<=0)return[];let J=[];for(let F of I){let G=feA(F),D=F4(G);if(D<=Y)J.push(F),Y-=D;else if(J.length===0){let Z=G4(G,Y);if(Z)J.push(Oe(F,Z));break}else break}if(J.length<=0)return[];else return[{...A,[B]:J}]}function beA(A,Q){if(!A)return[];if(typeof A==="string"){let B=G4(A,Q);return B?[B]:[]}if(typeof A!=="object")return[];if(geA(A))return heA(A,Q);if(Pe(A)||ke(A))return veA(A,Q);return[]}function y3(A){return A.map((B)=>{let I=void 0;if(!!B&&typeof B==="object"){if(Pe(B))I={...B,content:y3(B.content)};else if("content"in B&&UY(B.content))I={...B,content:pJ(B.content)};if(ke(B))I={...I??B,parts:y3(B.parts)};if(UY(I))I=pJ(I);else if(UY(B))I=pJ(B)}return I??B})}function meA(A,Q){if(!Array.isArray(A)||A.length===0)return A;let B=Q-2,I=A[A.length-1],C=y3([I]),E=C[0];if(_3(E)<=B)return C;return beA(E,B)}function wY(A){return meA(A,Te)}function Se(A){return G4(A,Te)}function FE(A){let Q=Boolean(u()?.getOptions().sendDefaultPii);return{...A,recordInputs:A?.recordInputs??Q,recordOutputs:A?.recordOutputs??Q}}function iJ(A){if(A.includes("messages"))return"chat";if(A.includes("completions"))return"text_completion";if(A.includes("generateContent"))return"generate_content";if(A.includes("models"))return"models";if(A.includes("chat"))return"chat";return A.split(".").pop()||"unknown"}function CD(A){return`gen_ai.${iJ(A)}`}function ED(A,Q){return A?`${A}.${Q}`:Q}function K9(A,Q,B,I,C){if(Q!==void 0)A.setAttributes({[aA]:Q});if(B!==void 0)A.setAttributes({[jQ]:B});if(Q!==void 0||B!==void 0||I!==void 0||C!==void 0){let E=(Q??0)+(B??0)+(I??0)+(C??0);A.setAttributes({[OB]:E})}}function nJ(A){if(typeof A==="string")return Se(A);if(Array.isArray(A)){let Q=wY(A);return JSON.stringify(Q)}return JSON.stringify(A)}function LI(A){if(!Array.isArray(A))return{systemInstructions:void 0,filteredMessages:A};let Q=A.findIndex((Y)=>Y&&typeof Y==="object"&&("role"in Y)&&Y.role==="system");if(Q===-1)return{systemInstructions:void 0,filteredMessages:A};let B=A[Q],I=typeof B.content==="string"?B.content:B.content!==void 0?JSON.stringify(B.content):void 0;if(!I)return{systemInstructions:void 0,filteredMessages:A};let C=JSON.stringify([{type:"text",content:I}]),E=[...A.slice(0,Q),...A.slice(Q+1)];return{systemInstructions:C,filteredMessages:E}}async function deA(A,Q,B){let I=A.catch((Y)=>{throw IA(Y,{mechanism:{handled:!1,type:B}}),Y}),C=await Q,E=await I;if(E&&typeof E==="object"&&"data"in E)return{...E,data:C};return C}function YD(A,Q,B){if(!aQ(A))return Q;return new Proxy(A,{get(I,C){let Y=C in Promise.prototype||C===Symbol.toStringTag?Q:I,J=Reflect.get(Y,C);if(C==="withResponse"&&typeof J==="function")return function(){let G=J.call(I);return deA(G,Q,B)};return typeof J==="function"?J.bind(Y):J}})}var D4="operation.name",ye="ai.operationId",Z4="ai.prompt",_e="ai.schema",fe="ai.response.object",f3="ai.values",g3="ai.response.text",h3="ai.response.toolCalls",ge="ai.response.finishReason",aJ="ai.prompt.messages",JD="ai.prompt.tools",z9="ai.model.id",he="ai.response.providerMetadata",xe="ai.usage.cachedInputTokens",ve="ai.telemetry.functionId",be="ai.usage.completionTokens",me="ai.usage.promptTokens",de="ai.usage.tokens",x3="ai.toolCall.name",v3="ai.toolCall.id",ce="ai.toolCall.args",ue="ai.toolCall.result";function pe(A,Q){let B=A.parent_span_id;if(!B)return;let I=A.data[aA],C=A.data[jQ];if(typeof I==="number"||typeof C==="number"){let E=Q.get(B)||{inputTokens:0,outputTokens:0};if(typeof I==="number")E.inputTokens+=I;if(typeof C==="number")E.outputTokens+=C;Q.set(B,E)}}function b3(A,Q){let B=Q.get(A.span_id);if(!B||!A.data)return;if(B.inputTokens>0)A.data[aA]=B.inputTokens;if(B.outputTokens>0)A.data[jQ]=B.outputTokens;if(B.inputTokens>0||B.outputTokens>0)A.data["gen_ai.usage.total_tokens"]=B.inputTokens+B.outputTokens}function ceA(A){let Q=new Map;for(let B of A){let I=B.data[JE];if(typeof I!=="string")continue;try{let C=JSON.parse(I);for(let E of C)if(E.name&&E.description&&!Q.has(E.name))Q.set(E.name,E.description)}catch{}}return Q}function ie(A,Q){let B=ceA(A);for(let I of A){if(I.op==="gen_ai.execute_tool"){let C=I.data[uJ];if(typeof C==="string"){let E=B.get(C);if(E)I.data[ze]=E}}if(I.op==="gen_ai.invoke_agent")b3(I,Q)}}function m3(A){return U9.get(A)}function d3(A){U9.delete(A)}function ne(A){let Q=A.map((B)=>{if(typeof B==="string")try{return JSON.parse(B)}catch{return B}return B});return JSON.stringify(Q)}function le(A){return A.filter((Q)=>!!Q&&typeof Q==="object"&&("role"in Q)&&("content"in Q))}function ueA(A){try{let Q=JSON.parse(A);if(!!Q&&typeof Q==="object"){let{messages:B}=Q,{prompt:I,system:C}=Q,E=[];if(typeof C==="string")E.push({role:"system",content:C});if(typeof B==="string")try{B=JSON.parse(B)}catch{}if(Array.isArray(B))return E.push(...le(B)),E;if(Array.isArray(I))return E.push(...le(I)),E;if(typeof I==="string")E.push({role:"user",content:I});if(E.length>0)return E}}catch{}return[]}function ae(A,Q){if(typeof Q[Z4]==="string"&&!Q[rQ]&&!Q[aJ]){let B=Q[Z4],I=ueA(B);if(I.length){let{systemInstructions:C,filteredMessages:E}=LI(I);if(C)A.setAttribute($I,C);let Y=Array.isArray(E)?E.length:0,J=nJ(E);A.setAttributes({[Z4]:J,[rQ]:J,[TB]:Y})}}else if(typeof Q[aJ]==="string")try{let B=JSON.parse(Q[aJ]);if(Array.isArray(B)){let{systemInstructions:I,filteredMessages:C}=LI(B);if(I)A.setAttribute($I,I);let E=Array.isArray(C)?C.length:0,Y=nJ(C);A.setAttributes({[aJ]:Y,[rQ]:Y,[TB]:E})}}catch{}}function oe(A){switch(A){case"ai.generateText":case"ai.streamText":case"ai.generateObject":case"ai.streamObject":return C4;case"ai.generateText.doGenerate":return Ge;case"ai.streamText.doStream":return De;case"ai.generateObject.doGenerate":return Ze;case"ai.streamObject.doStream":return We;case"ai.embed.doEmbed":return Xe;case"ai.embedMany.doEmbed":return Ue;case"ai.rerank.doRerank":return we;case"ai.toolCall":return Ke;default:if(A.startsWith("ai.stream"))return"ai.run";return}}function leA(A){if(k3.has(A))return"invoke_agent";if(S3.has(A))return"generate_content";if(Le.has(A))return"embeddings";if(He.has(A))return"rerank";if(A==="ai.toolCall")return"execute_tool";return A}function peA(A){let{data:Q,description:B}=i(A);if(!B)return;if(Q[x3]&&Q[v3]&&B==="ai.toolCall"){seA(A,Q);return}if(!Q[ye]&&!B.startsWith("ai."))return;reA(A,B,Q)}function ieA(A){if(A.type==="transaction"&&A.spans){let Q=new Map;for(let I of A.spans)oeA(I),pe(I,Q);ie(A.spans,Q);let B=A.contexts?.trace;if(B?.op==="gen_ai.invoke_agent")b3(B,Q)}return A}function neA(A){if(typeof A!=="string")return"stop";switch(A){case"tool-calls":return"tool_call";case"stop":case"length":case"content_filter":case"error":return A;default:return A}}function aeA(A){let Q=A[g3],B=A[h3],I=A[ge];if(Q==null&&B==null)return;let C=[];if(typeof Q==="string"&&Q.length>0)C.push({type:"text",content:Q});if(B!=null)try{let E=typeof B==="string"?JSON.parse(B):B;if(Array.isArray(E)){for(let Y of E){let J=Y.input??Y.args;C.push({type:"tool_call",id:Y.toolCallId,name:Y.toolName,arguments:typeof J==="string"?J:JSON.stringify(J??{})})}delete A[h3]}}catch{}if(C.length>0){let E={role:"assistant",parts:C,finish_reason:neA(I)};A[Ee]=JSON.stringify([E]),delete A[g3]}}function oeA(A){let{data:Q,origin:B}=A;if(B!=="auto.vercelai.otel")return;if(A.status&&A.status!=="ok")A.status="internal_error";if(tQ(Q,be,jQ),tQ(Q,me,aA),tQ(Q,xe,XY),tQ(Q,"ai.usage.inputTokens",aA),tQ(Q,"ai.usage.outputTokens",jQ),tQ(Q,de,aA),tQ(Q,"ai.response.avgOutputTokensPerSecond","ai.response.avgCompletionTokensPerSecond"),typeof Q[aA]==="number"&&typeof Q[XY]==="number")Q[aA]=Q[aA]+Q[XY];if(typeof Q[aA]==="number"){let I=typeof Q[jQ]==="number"?Q[jQ]:0;Q[OB]=I+Q[aA]}if(Q[JD]&&Array.isArray(Q[JD]))Q[JD]=ne(Q[JD]);if(Q[D4]){let I=leA(Q[D4]);Q[sQ]=I,delete Q[D4]}if(tQ(Q,aJ,rQ),aeA(Q),tQ(Q,fe,"gen_ai.response.object"),tQ(Q,JD,"gen_ai.request.available_tools"),tQ(Q,ce,Y4),tQ(Q,ue,J4),tQ(Q,_e,"gen_ai.request.schema"),tQ(Q,z9,XQ),Array.isArray(Q[f3])){let I=Q[f3].map((C)=>{try{return JSON.parse(C)}catch{return C}});Q[E4]=I.length===1?I[0]:JSON.stringify(I)}teA(Q);for(let I of Object.keys(Q))if(I.startsWith("ai."))tQ(Q,I,`vercel.${I}`)}function tQ(A,Q,B){if(A[Q]!=null)A[B]=A[Q],delete A[Q]}function seA(A,Q){A.setAttribute(n,"auto.vercelai.otel"),A.setAttribute(e,"gen_ai.execute_tool"),A.setAttribute(sQ,"execute_tool"),tQ(Q,x3,uJ),tQ(Q,v3,j3);let B=Q[j3];if(typeof B==="string")U9.set(B,A.spanContext());if(!Q[R3])A.setAttribute(R3,"function");let I=Q[uJ];if(I)A.updateName(`execute_tool ${I}`)}function reA(A,Q,B){A.setAttribute(n,"auto.vercelai.otel");let I=Q.replace("ai.","");A.setAttribute("ai.pipeline.name",I),A.updateName(I);let C=B[ve];if(C&&typeof C==="string")A.setAttribute("gen_ai.function_id",C);if(ae(A,B),B[z9]&&!B[gQ])A.setAttribute(gQ,B[z9]);A.setAttribute("ai.streaming",Q.includes("stream"));let E=oe(Q);if(E)A.setAttribute(e,E);if(k3.has(Q)){if(C&&typeof C==="string")A.updateName(`invoke_agent ${C}`);else A.updateName("invoke_agent");return}let Y=B[z9];if(Y){let J=S3.has(Q)?"generate_content":Me[Q];if(J)A.updateName(`${J} ${Y}`)}}function W4(A){A.on("spanStart",peA),A.addEventProcessor(Object.assign(ieA,{id:"VercelAiEventProcessor"}))}function teA(A){let Q=A[he];if(Q)try{let B=JSON.parse(Q),I=B.openai??B.azure;if(I){if(kC(A,XY,I.cachedPromptTokens),kC(A,"gen_ai.usage.output_tokens.reasoning",I.reasoningTokens),kC(A,"gen_ai.usage.output_tokens.prediction_accepted",I.acceptedPredictionTokens),kC(A,"gen_ai.usage.output_tokens.prediction_rejected",I.rejectedPredictionTokens),!A["gen_ai.conversation.id"])kC(A,"gen_ai.conversation.id",I.responseId)}if(B.anthropic){let C=B.anthropic.usage?.cache_read_input_tokens??B.anthropic.cacheReadInputTokens;kC(A,XY,C);let E=B.anthropic.usage?.cache_creation_input_tokens??B.anthropic.cacheCreationInputTokens;kC(A,N3,E)}if(B.bedrock?.usage)kC(A,XY,B.bedrock.usage.cacheReadInputTokens),kC(A,N3,B.bedrock.usage.cacheWriteInputTokens);if(B.deepseek)kC(A,XY,B.deepseek.promptCacheHitTokens),kC(A,"gen_ai.usage.input_tokens.cache_miss",B.deepseek.promptCacheMissTokens)}catch{}}function kC(A,Q,B){if(B!=null)A[Q]=B}var KY="OpenAI",se=["responses.create","chat.completions.create","embeddings.create","conversations.create"],eeA=["response.output_item.added","response.function_call_arguments.delta","response.function_call_arguments.done","response.output_item.done"],re=["response.created","response.in_progress","response.failed","response.completed","response.incomplete","response.queued","response.output_text.delta",...eeA];function X4(A){if(A.includes("chat.completions"))return lJ.CHAT;if(A.includes("responses"))return lJ.CHAT;if(A.includes("embeddings"))return lJ.EMBEDDINGS;if(A.includes("conversations"))return lJ.CHAT;return A.split(".").pop()||"unknown"}function te(A){return`gen_ai.${X4(A)}`}function ee(A){return se.includes(A)}function AAA(A){return A!==null&&typeof A==="object"&&"object"in A&&A.object==="chat.completion"}function QAA(A){return A!==null&&typeof A==="object"&&"object"in A&&A.object==="response"}function BAA(A){if(A===null||typeof A!=="object"||!("object"in A))return!1;let Q=A;return Q.object==="list"&&typeof Q.model==="string"&&Q.model.toLowerCase().includes("embedding")}function IAA(A){return A!==null&&typeof A==="object"&&"object"in A&&A.object==="conversation"}function CAA(A){return A!==null&&typeof A==="object"&&"type"in A&&typeof A.type==="string"&&A.type.startsWith("response.")}function EAA(A){return A!==null&&typeof A==="object"&&"object"in A&&A.object==="chat.completion.chunk"}function YAA(A,Q,B){if(U4(A,Q.id,Q.model,Q.created),Q.usage)V9(A,Q.usage.prompt_tokens,Q.usage.completion_tokens,Q.usage.total_tokens);if(Array.isArray(Q.choices)){let I=Q.choices.map((C)=>C.finish_reason).filter((C)=>C!==null);if(I.length>0)A.setAttributes({[rB]:JSON.stringify(I)});if(B){let C=Q.choices.map((E)=>E.message?.tool_calls).filter((E)=>Array.isArray(E)&&E.length>0).flat();if(C.length>0)A.setAttributes({[cQ]:JSON.stringify(C)})}}}function JAA(A,Q,B){if(U4(A,Q.id,Q.model,Q.created_at),Q.status)A.setAttributes({[rB]:JSON.stringify([Q.status])});if(Q.usage)V9(A,Q.usage.input_tokens,Q.usage.output_tokens,Q.usage.total_tokens);if(B){let I=Q;if(Array.isArray(I.output)&&I.output.length>0){let C=I.output.filter((E)=>typeof E==="object"&&E!==null&&E.type==="function_call");if(C.length>0)A.setAttributes({[cQ]:JSON.stringify(C)})}}}function FAA(A,Q){if(A.setAttributes({[O3]:Q.model,[gQ]:Q.model}),Q.usage)V9(A,Q.usage.prompt_tokens,void 0,Q.usage.total_tokens)}function GAA(A,Q){let{id:B,created_at:I}=Q;if(A.setAttributes({[q3]:B,[pI]:B,[X9]:B}),I)A.setAttributes({[T3]:new Date(I*1000).toISOString()})}function V9(A,Q,B,I){if(Q!==void 0)A.setAttributes({[$e]:Q,[aA]:Q});if(B!==void 0)A.setAttributes({[Ve]:B,[jQ]:B});if(I!==void 0)A.setAttributes({[OB]:I})}function U4(A,Q,B,I){A.setAttributes({[q3]:Q,[pI]:Q}),A.setAttributes({[O3]:B,[gQ]:B}),A.setAttributes({[T3]:new Date(I*1000).toISOString()})}function AAQ(A){if("conversation"in A&&typeof A.conversation==="string")return A.conversation;if("previous_response_id"in A&&typeof A.previous_response_id==="string")return A.previous_response_id;return}function DAA(A){let Q={[XQ]:A.model??"unknown"};if("temperature"in A)Q[DY]=A.temperature;if("top_p"in A)Q[WY]=A.top_p;if("frequency_penalty"in A)Q[ZY]=A.frequency_penalty;if("presence_penalty"in A)Q[ID]=A.presence_penalty;if("stream"in A)Q[QD]=A.stream;if("encoding_format"in A)Q[Be]=A.encoding_format;if("dimensions"in A)Q[Ie]=A.dimensions;let B=AAQ(A);if(B)Q[X9]=B;return Q}function QAQ(A,Q){for(let B of A){let I=B.index;if(I===void 0||!B.function)continue;if(!(I in Q.chatCompletionToolCalls))Q.chatCompletionToolCalls[I]={...B,function:{name:B.function.name,arguments:B.function.arguments||""}};else{let C=Q.chatCompletionToolCalls[I];if(B.function.arguments&&C?.function)C.function.arguments+=B.function.arguments}}}function BAQ(A,Q,B){if(Q.responseId=A.id??Q.responseId,Q.responseModel=A.model??Q.responseModel,Q.responseTimestamp=A.created??Q.responseTimestamp,A.usage)Q.promptTokens=A.usage.prompt_tokens,Q.completionTokens=A.usage.completion_tokens,Q.totalTokens=A.usage.total_tokens;for(let I of A.choices??[]){if(B){if(I.delta?.content)Q.responseTexts.push(I.delta.content);if(I.delta?.tool_calls)QAQ(I.delta.tool_calls,Q)}if(I.finish_reason)Q.finishReasons.push(I.finish_reason)}}function IAQ(A,Q,B,I){if(!(A&&typeof A==="object")){Q.eventTypes.push("unknown:non-object");return}if(A instanceof Error){I.setStatus({code:UA,message:"internal_error"}),IA(A,{mechanism:{handled:!1,type:"auto.ai.openai.stream-response"}});return}if(!("type"in A))return;let C=A;if(!re.includes(C.type)){Q.eventTypes.push(C.type);return}if(B){if(C.type==="response.output_item.done"&&"item"in C)Q.responsesApiToolCalls.push(C.item);if(C.type==="response.output_text.delta"&&"delta"in C&&C.delta){Q.responseTexts.push(C.delta);return}}if("response"in C){let{response:E}=C;if(Q.responseId=E.id??Q.responseId,Q.responseModel=E.model??Q.responseModel,Q.responseTimestamp=E.created_at??Q.responseTimestamp,E.usage)Q.promptTokens=E.usage.input_tokens,Q.completionTokens=E.usage.output_tokens,Q.totalTokens=E.usage.total_tokens;if(E.status)Q.finishReasons.push(E.status);if(B&&E.output_text)Q.responseTexts.push(E.output_text)}}async function*ZAA(A,Q,B){let I={eventTypes:[],responseTexts:[],finishReasons:[],responseId:"",responseModel:"",responseTimestamp:0,promptTokens:void 0,completionTokens:void 0,totalTokens:void 0,chatCompletionToolCalls:{},responsesApiToolCalls:[]};try{for await(let C of A){if(EAA(C))BAQ(C,I,B);else if(CAA(C))IAQ(C,I,B,Q);yield C}}finally{if(U4(Q,I.responseId,I.responseModel,I.responseTimestamp),V9(Q,I.promptTokens,I.completionTokens,I.totalTokens),Q.setAttributes({[cJ]:!0}),I.finishReasons.length)Q.setAttributes({[rB]:JSON.stringify(I.finishReasons)});if(B&&I.responseTexts.length)Q.setAttributes({[kQ]:I.responseTexts.join("")});let E=[...Object.values(I.chatCompletionToolCalls),...I.responsesApiToolCalls];if(E.length>0)Q.setAttributes({[cQ]:JSON.stringify(E)});Q.end()}}function CAQ(A){let Q=Array.isArray(A.tools)?A.tools:[],I=A.web_search_options&&typeof A.web_search_options==="object"?[{type:"web_search_options",...A.web_search_options}]:[],C=[...Q,...I];if(C.length===0)return;try{return JSON.stringify(C)}catch(E){y&&L.error("Failed to serialize OpenAI tools:",E);return}}function EAQ(A,Q){let B={[GY]:"openai",[sQ]:X4(Q),[n]:"auto.ai.openai"};if(A.length>0&&typeof A[0]==="object"&&A[0]!==null){let I=A[0],C=CAQ(I);if(C)B[JE]=C;Object.assign(B,DAA(I))}else B[XQ]="unknown";return B}function YAQ(A,Q,B){if(!Q||typeof Q!=="object")return;let I=Q;if(AAA(I)){if(YAA(A,I,B),B&&I.choices?.length){let C=I.choices.map((E)=>E.message?.content||"");A.setAttributes({[kQ]:JSON.stringify(C)})}}else if(QAA(I)){if(JAA(A,I,B),B&&I.output_text)A.setAttributes({[kQ]:I.output_text})}else if(BAA(I))FAA(A,I);else if(IAA(I))GAA(A,I)}function WAA(A,Q,B){if(B===lJ.EMBEDDINGS&&"input"in Q){let J=Q.input;if(J==null)return;if(typeof J==="string"&&J.length===0)return;if(Array.isArray(J)&&J.length===0)return;A.setAttribute(E4,typeof J==="string"?J:JSON.stringify(J));return}let I="input"in Q?Q.input:("messages"in Q)?Q.messages:void 0;if(!I)return;if(Array.isArray(I)&&I.length===0)return;let{systemInstructions:C,filteredMessages:E}=LI(I);if(C)A.setAttribute($I,C);let Y=nJ(E);if(A.setAttribute(rQ,Y),Array.isArray(E))A.setAttribute(TB,E.length);else A.setAttribute(TB,1)}function JAQ(A,Q,B,I){return function(...E){let Y=EAQ(E,Q),J=Y[XQ]||"unknown",F=X4(Q),G=E[0],D=G&&typeof G==="object"&&G.stream===!0,Z={name:`${F} ${J}`,op:te(Q),attributes:Y};if(D){let w,K=fQ(Z,(z)=>{if(w=A.apply(B,E),I.recordInputs&&G)WAA(z,G,F);return(async()=>{try{let $=await w;return ZAA($,z,I.recordOutputs??!1)}catch($){throw z.setStatus({code:UA,message:"internal_error"}),IA($,{mechanism:{handled:!1,type:"auto.ai.openai.stream",data:{function:Q}}}),z.end(),$}})()});return YD(w,K,"auto.ai.openai")}let W,X=sB(Z,(w)=>{if(W=A.apply(B,E),I.recordInputs&&G)WAA(w,G,F);return W.then((K)=>{return YAQ(w,K,I.recordOutputs),K},(K)=>{throw IA(K,{mechanism:{handled:!1,type:"auto.ai.openai",data:{function:Q}}}),K})});return YD(W,X,"auto.ai.openai")}}function XAA(A,Q="",B){return new Proxy(A,{get(I,C){let E=I[C],Y=ED(Q,String(C));if(typeof E==="function"&&ee(Y))return JAQ(E,Y,I,B);if(typeof E==="function")return E.bind(I);if(E&&typeof E==="object")return XAA(E,Y,B);return E}})}function w4(A,Q){return XAA(A,"",FE(Q))}var zY="Anthropic_AI",UAA=["messages.create","messages.stream","messages.countTokens","models.get","completions.create","models.retrieve","beta.messages.create"];function wAA(A){return UAA.includes(A)}function KAA(A,Q){if(Array.isArray(Q)&&Q.length===0)return;let{systemInstructions:B,filteredMessages:I}=LI(Q);if(B)A.setAttributes({[$I]:B});let C=Array.isArray(I)?I.length:1;A.setAttributes({[rQ]:nJ(I),[TB]:C})}var FAQ={invalid_request_error:"invalid_argument",authentication_error:"unauthenticated",permission_error:"permission_denied",not_found_error:"not_found",request_too_large:"failed_precondition",rate_limit_error:"resource_exhausted",api_error:"internal_error",overloaded_error:"unavailable"};function c3(A){if(!A)return"internal_error";return FAQ[A]||"internal_error"}function zAA(A,Q){if(Q.error)A.setStatus({code:UA,message:c3(Q.error.type)}),IA(Q.error,{mechanism:{handled:!1,type:"auto.ai.anthropic.anthropic_error"}})}function VAA(A){let{system:Q,messages:B,input:I}=A,C=typeof Q==="string"?[{role:"system",content:A.system}]:[],E=Array.isArray(I)?I:I!=null?[I]:void 0,Y=Array.isArray(B)?B:B!=null?[B]:[],J=E??Y;return[...C,...J]}function GAQ(A,Q){if("type"in A&&typeof A.type==="string"){if(A.type==="error")return Q.setStatus({code:UA,message:c3(A.error?.type)}),IA(A.error,{mechanism:{handled:!1,type:"auto.ai.anthropic.anthropic_error"}}),!0}return!1}function DAQ(A,Q){if(A.type==="message_delta"&&A.usage){if("output_tokens"in A.usage&&typeof A.usage.output_tokens==="number")Q.completionTokens=A.usage.output_tokens}if(A.message){let B=A.message;if(B.id)Q.responseId=B.id;if(B.model)Q.responseModel=B.model;if(B.stop_reason)Q.finishReasons.push(B.stop_reason);if(B.usage){if(typeof B.usage.input_tokens==="number")Q.promptTokens=B.usage.input_tokens;if(typeof B.usage.cache_creation_input_tokens==="number")Q.cacheCreationInputTokens=B.usage.cache_creation_input_tokens;if(typeof B.usage.cache_read_input_tokens==="number")Q.cacheReadInputTokens=B.usage.cache_read_input_tokens}}}function ZAQ(A,Q){if(A.type!=="content_block_start"||typeof A.index!=="number"||!A.content_block)return;if(A.content_block.type==="tool_use"||A.content_block.type==="server_tool_use")Q.activeToolBlocks[A.index]={id:A.content_block.id,name:A.content_block.name,inputJsonParts:[]}}function WAQ(A,Q,B){if(A.type!=="content_block_delta"||!A.delta)return;if(typeof A.index==="number"&&"partial_json"in A.delta&&typeof A.delta.partial_json==="string"){let I=Q.activeToolBlocks[A.index];if(I)I.inputJsonParts.push(A.delta.partial_json)}if(B&&typeof A.delta.text==="string")Q.responseTexts.push(A.delta.text)}function XAQ(A,Q){if(A.type!=="content_block_stop"||typeof A.index!=="number")return;let B=Q.activeToolBlocks[A.index];if(!B)return;let I=B.inputJsonParts.join(""),C;try{C=I?JSON.parse(I):{}}catch{C={__unparsed:I}}Q.toolCalls.push({type:"tool_use",id:B.id,name:B.name,input:C}),delete Q.activeToolBlocks[A.index]}function $AA(A,Q,B,I){if(!(A&&typeof A==="object"))return;if(GAQ(A,I))return;DAQ(A,Q),ZAQ(A,Q),WAQ(A,Q,B),XAQ(A,Q)}function UAQ(A,Q,B){if(!Q.isRecording())return;if(A.responseId)Q.setAttributes({[pI]:A.responseId});if(A.responseModel)Q.setAttributes({[gQ]:A.responseModel});if(K9(Q,A.promptTokens,A.completionTokens,A.cacheCreationInputTokens,A.cacheReadInputTokens),Q.setAttributes({[cJ]:!0}),A.finishReasons.length>0)Q.setAttributes({[rB]:JSON.stringify(A.finishReasons)});if(B&&A.responseTexts.length>0)Q.setAttributes({[kQ]:A.responseTexts.join("")});if(B&&A.toolCalls.length>0)Q.setAttributes({[cQ]:JSON.stringify(A.toolCalls)});Q.end()}async function*LAA(A,Q,B){let I={responseTexts:[],finishReasons:[],responseId:"",responseModel:"",promptTokens:void 0,completionTokens:void 0,cacheCreationInputTokens:void 0,cacheReadInputTokens:void 0,toolCalls:[],activeToolBlocks:{}};try{for await(let C of A)$AA(C,I,B,Q),yield C}finally{if(I.responseId)Q.setAttributes({[pI]:I.responseId});if(I.responseModel)Q.setAttributes({[gQ]:I.responseModel});if(K9(Q,I.promptTokens,I.completionTokens,I.cacheCreationInputTokens,I.cacheReadInputTokens),Q.setAttributes({[cJ]:!0}),I.finishReasons.length>0)Q.setAttributes({[rB]:JSON.stringify(I.finishReasons)});if(B&&I.responseTexts.length>0)Q.setAttributes({[kQ]:I.responseTexts.join("")});if(B&&I.toolCalls.length>0)Q.setAttributes({[cQ]:JSON.stringify(I.toolCalls)});Q.end()}}function HAA(A,Q,B){let I={responseTexts:[],finishReasons:[],responseId:"",responseModel:"",promptTokens:void 0,completionTokens:void 0,cacheCreationInputTokens:void 0,cacheReadInputTokens:void 0,toolCalls:[],activeToolBlocks:{}};return A.on("streamEvent",(C)=>{$AA(C,I,B,Q)}),A.on("message",()=>{UAQ(I,Q,B)}),A.on("error",(C)=>{if(IA(C,{mechanism:{handled:!1,type:"auto.ai.anthropic.stream_error"}}),Q.isRecording())Q.setStatus({code:UA,message:"internal_error"}),Q.end()}),A}function wAQ(A,Q){let B={[GY]:"anthropic",[sQ]:iJ(Q),[n]:"auto.ai.anthropic"};if(A.length>0&&typeof A[0]==="object"&&A[0]!==null){let I=A[0];if(I.tools&&Array.isArray(I.tools))B[JE]=JSON.stringify(I.tools);if(B[XQ]=I.model??"unknown","temperature"in I)B[DY]=I.temperature;if("top_p"in I)B[WY]=I.top_p;if("stream"in I)B[QD]=I.stream;if("top_k"in I)B[I4]=I.top_k;if("frequency_penalty"in I)B[ZY]=I.frequency_penalty;if("max_tokens"in I)B[BD]=I.max_tokens}else if(Q==="models.retrieve"||Q==="models.get")B[XQ]=A[0];else B[XQ]="unknown";return B}function u3(A,Q){let B=VAA(Q);if(KAA(A,B),"prompt"in Q)A.setAttributes({[Qe]:JSON.stringify(Q.prompt)})}function KAQ(A,Q){if("content"in Q){if(Array.isArray(Q.content)){A.setAttributes({[kQ]:Q.content.map((I)=>I.text).filter((I)=>!!I).join("")});let B=[];for(let I of Q.content)if(I.type==="tool_use"||I.type==="server_tool_use")B.push(I);if(B.length>0)A.setAttributes({[cQ]:JSON.stringify(B)})}}if("completion"in Q)A.setAttributes({[kQ]:Q.completion});if("input_tokens"in Q)A.setAttributes({[kQ]:JSON.stringify(Q.input_tokens)})}function zAQ(A,Q){if("id"in Q&&"model"in Q){if(A.setAttributes({[pI]:Q.id,[gQ]:Q.model}),"created"in Q&&typeof Q.created==="number")A.setAttributes({[P3]:new Date(Q.created*1000).toISOString()});if("created_at"in Q&&typeof Q.created_at==="number")A.setAttributes({[P3]:new Date(Q.created_at*1000).toISOString()});if("usage"in Q&&Q.usage)K9(A,Q.usage.input_tokens,Q.usage.output_tokens,Q.usage.cache_creation_input_tokens,Q.usage.cache_read_input_tokens)}}function VAQ(A,Q,B){if(!Q||typeof Q!=="object")return;if("type"in Q&&Q.type==="error"){zAA(A,Q);return}if(B)KAQ(A,Q);zAQ(A,Q)}function MAA(A,Q,B){if(IA(A,{mechanism:{handled:!1,type:"auto.ai.anthropic",data:{function:B}}}),Q.isRecording())Q.setStatus({code:UA,message:"internal_error"}),Q.end();throw A}function $AQ(A,Q,B,I,C,E,Y,J,F,G,D){let Z=C[XQ]??"unknown",W={name:`${E} ${Z}`,op:CD(Y),attributes:C};if(G&&!D){let X,w=fQ(W,(K)=>{if(X=A.apply(B,I),F.recordInputs&&J)u3(K,J);return(async()=>{try{let z=await X;return LAA(z,K,F.recordOutputs??!1)}catch(z){return MAA(z,K,Y)}})()});return YD(X,w,"auto.ai.anthropic")}else return fQ(W,(X)=>{try{if(F.recordInputs&&J)u3(X,J);let w=Q.apply(B,I);return HAA(w,X,F.recordOutputs??!1)}catch(w){return MAA(w,X,Y)}})}function LAQ(A,Q,B,I){return new Proxy(A,{apply(C,E,Y){let J=wAQ(Y,Q),F=J[XQ]??"unknown",G=iJ(Q),D=typeof Y[0]==="object"?Y[0]:void 0,Z=Boolean(D?.stream),W=Q==="messages.stream";if(Z||W)return $AQ(A,C,B,Y,J,G,Q,D,I,Z,W);let X,w=sB({name:`${G} ${F}`,op:CD(Q),attributes:J},(K)=>{if(X=C.apply(B,Y),I.recordInputs&&D)u3(K,D);return X.then((z)=>{return VAQ(K,z,I.recordOutputs),z},(z)=>{throw IA(z,{mechanism:{handled:!1,type:"auto.ai.anthropic",data:{function:Q}}}),z})});return YD(X,w,"auto.ai.anthropic")}})}function NAA(A,Q="",B){return new Proxy(A,{get(I,C){let E=I[C],Y=ED(Q,String(C));if(typeof E==="function"&&wAA(Y))return LAQ(E,Y,I,B);if(typeof E==="function")return E.bind(I);if(E&&typeof E==="object")return NAA(E,Y,B);return E}})}function K4(A,Q){return NAA(A,"",FE(Q))}var VY="Google_GenAI",l3=["models.generateContent","models.generateContentStream","chats.create","sendMessage","sendMessageStream"],jAA="google_genai",p3="chats.create",RAA="chat";function HAQ(A,Q){let B=A?.promptFeedback;if(B?.blockReason){let I=B.blockReasonMessage??B.blockReason;return Q.setStatus({code:UA,message:"internal_error"}),IA(`Content blocked: ${I}`,{mechanism:{handled:!1,type:"auto.ai.google_genai"}}),!0}return!1}function MAQ(A,Q){if(typeof A.responseId==="string")Q.responseId=A.responseId;if(typeof A.modelVersion==="string")Q.responseModel=A.modelVersion;let B=A.usageMetadata;if(B){if(typeof B.promptTokenCount==="number")Q.promptTokens=B.promptTokenCount;if(typeof B.candidatesTokenCount==="number")Q.completionTokens=B.candidatesTokenCount;if(typeof B.totalTokenCount==="number")Q.totalTokens=B.totalTokenCount}}function NAQ(A,Q,B){if(Array.isArray(A.functionCalls))Q.toolCalls.push(...A.functionCalls);for(let I of A.candidates??[]){if(I?.finishReason&&!Q.finishReasons.includes(I.finishReason))Q.finishReasons.push(I.finishReason);for(let C of I?.content?.parts??[]){if(B&&C.text)Q.responseTexts.push(C.text);if(C.functionCall)Q.toolCalls.push({type:"function",id:C.functionCall.id,name:C.functionCall.name,arguments:C.functionCall.args})}}}function jAQ(A,Q,B,I){if(!A||HAQ(A,I))return;MAQ(A,Q),NAQ(A,Q,B)}async function*qAA(A,Q,B){let I={responseTexts:[],finishReasons:[],toolCalls:[]};try{for await(let C of A)jAQ(C,I,B,Q),yield C}finally{let C={[cJ]:!0};if(I.responseId)C[pI]=I.responseId;if(I.responseModel)C[gQ]=I.responseModel;if(I.promptTokens!==void 0)C[aA]=I.promptTokens;if(I.completionTokens!==void 0)C[jQ]=I.completionTokens;if(I.totalTokens!==void 0)C[OB]=I.totalTokens;if(I.finishReasons.length)C[rB]=JSON.stringify(I.finishReasons);if(B&&I.responseTexts.length)C[kQ]=I.responseTexts.join("");if(B&&I.toolCalls.length)C[cQ]=JSON.stringify(I.toolCalls);Q.setAttributes(C),Q.end()}}function OAA(A){if(l3.includes(A))return!0;let Q=A.split(".").pop();return l3.includes(Q)}function TAA(A){return A.includes("Stream")}function FD(A,Q="user"){if(typeof A==="string")return[{role:Q,content:A}];if(Array.isArray(A))return A.flatMap((B)=>FD(B,Q));if(typeof A!=="object"||!A)return[];if("role"in A&&typeof A.role==="string")return[A];if("parts"in A)return[{...A,role:Q}];return[{role:Q,content:A}]}function PAA(A,Q){if("model"in A&&typeof A.model==="string")return A.model;if(Q&&typeof Q==="object"){let B=Q;if("model"in B&&typeof B.model==="string")return B.model;if("modelVersion"in B&&typeof B.modelVersion==="string")return B.modelVersion}return"unknown"}function RAQ(A){let Q={};if("temperature"in A&&typeof A.temperature==="number")Q[DY]=A.temperature;if("topP"in A&&typeof A.topP==="number")Q[WY]=A.topP;if("topK"in A&&typeof A.topK==="number")Q[I4]=A.topK;if("maxOutputTokens"in A&&typeof A.maxOutputTokens==="number")Q[BD]=A.maxOutputTokens;if("frequencyPenalty"in A&&typeof A.frequencyPenalty==="number")Q[ZY]=A.frequencyPenalty;if("presencePenalty"in A&&typeof A.presencePenalty==="number")Q[ID]=A.presencePenalty;return Q}function qAQ(A,Q,B){let I={[GY]:jAA,[sQ]:iJ(A),[n]:"auto.ai.google_genai"};if(Q){if(I[XQ]=PAA(Q,B),"config"in Q&&typeof Q.config==="object"&&Q.config){let C=Q.config;if(Object.assign(I,RAQ(C)),"tools"in C&&Array.isArray(C.tools)){let E=C.tools.flatMap((Y)=>Y.functionDeclarations);I[JE]=JSON.stringify(E)}}}else I[XQ]=PAA({},B);return I}function kAA(A,Q){let B=[];if("config"in Q&&Q.config&&typeof Q.config==="object"&&"systemInstruction"in Q.config&&Q.config.systemInstruction)B.push(...FD(Q.config.systemInstruction,"system"));if("history"in Q)B.push(...FD(Q.history,"user"));if("contents"in Q)B.push(...FD(Q.contents,"user"));if("message"in Q)B.push(...FD(Q.message,"user"));if(Array.isArray(B)&&B.length){let{systemInstructions:I,filteredMessages:C}=LI(B);if(I)A.setAttribute($I,I);let E=Array.isArray(C)?C.length:0;A.setAttributes({[TB]:E,[rQ]:JSON.stringify(wY(C))})}}function OAQ(A,Q,B){if(!Q||typeof Q!=="object")return;if(Q.modelVersion)A.setAttribute(gQ,Q.modelVersion);if(Q.usageMetadata&&typeof Q.usageMetadata==="object"){let I=Q.usageMetadata;if(typeof I.promptTokenCount==="number")A.setAttributes({[aA]:I.promptTokenCount});if(typeof I.candidatesTokenCount==="number")A.setAttributes({[jQ]:I.candidatesTokenCount});if(typeof I.totalTokenCount==="number")A.setAttributes({[OB]:I.totalTokenCount})}if(B&&Array.isArray(Q.candidates)&&Q.candidates.length>0){let I=Q.candidates.map((C)=>{if(C.content?.parts&&Array.isArray(C.content.parts))return C.content.parts.map((E)=>typeof E.text==="string"?E.text:"").filter((E)=>E.length>0).join("");return""}).filter((C)=>C.length>0);if(I.length>0)A.setAttributes({[kQ]:I.join("")})}if(B&&Q.functionCalls){let I=Q.functionCalls;if(Array.isArray(I)&&I.length>0)A.setAttributes({[cQ]:JSON.stringify(I)})}}function SAA(A,Q,B,I){let C=Q===p3;return new Proxy(A,{apply(E,Y,J){let F=J[0],G=qAQ(Q,F,B),D=G[XQ]??"unknown",Z=iJ(Q);if(TAA(Q))return fQ({name:`${Z} ${D}`,op:CD(Q),attributes:G},async(W)=>{try{if(I.recordInputs&&F)kAA(W,F);let X=await E.apply(B,J);return qAA(X,W,Boolean(I.recordOutputs))}catch(X){throw W.setStatus({code:UA,message:"internal_error"}),IA(X,{mechanism:{handled:!1,type:"auto.ai.google_genai",data:{function:Q}}}),W.end(),X}});return sB({name:C?`${Z} ${D} create`:`${Z} ${D}`,op:CD(Q),attributes:G},(W)=>{if(I.recordInputs&&F)kAA(W,F);return OC(()=>E.apply(B,J),(X)=>{IA(X,{mechanism:{handled:!1,type:"auto.ai.google_genai",data:{function:Q}}})},()=>{},(X)=>{if(!C)OAQ(W,X,I.recordOutputs)})})}})}function i3(A,Q="",B){return new Proxy(A,{get:(I,C,E)=>{let Y=Reflect.get(I,C,E),J=ED(Q,String(C));if(typeof Y==="function"&&OAA(J)){if(J===p3){let F=SAA(Y,J,I,B);return function(...D){let Z=F(...D);if(Z&&typeof Z==="object")return i3(Z,RAA,B);return Z}}return SAA(Y,J,I,B)}if(typeof Y==="function")return Y.bind(I);if(Y&&typeof Y==="object")return i3(Y,J,B);return Y}})}function z4(A,Q){return i3(A,"",FE(Q))}var V4="LangChain",oJ="auto.ai.langchain",yAA={human:"user",ai:"assistant",assistant:"assistant",system:"system",function:"function",tool:"tool"};var iI=(A,Q,B)=>{if(B!=null)A[Q]=B},HI=(A,Q,B)=>{let I=Number(B);if(!Number.isNaN(I))A[Q]=I};function sE(A){if(typeof A==="string")return A;try{return JSON.stringify(A)}catch{return String(A)}}function GD(A){if(Array.isArray(A))try{let Q=A.map((B)=>B&&typeof B==="object"&&UY(B)?pJ(B):B);return JSON.stringify(Q)}catch{return String(A)}return sE(A)}function $9(A){let Q=A.toLowerCase();return yAA[Q]??Q}function _AA(A){if(A.includes("System"))return"system";if(A.includes("Human"))return"user";if(A.includes("AI")||A.includes("Assistant"))return"assistant";if(A.includes("Function"))return"function";if(A.includes("Tool"))return"tool";return"user"}function n3(A){if(!A||Array.isArray(A))return;return A.invocation_params}function L9(A){return A.map((Q)=>{let B=Q._getType;if(typeof B==="function"){let C=B.call(Q);return{role:$9(C),content:GD(Q.content)}}if(Q.lc===1&&Q.kwargs){let C=Q.id,E=Array.isArray(C)&&C.length>0?C[C.length-1]:"",Y=typeof E==="string"?_AA(E):"user";return{role:$9(Y),content:GD(Q.kwargs?.content)}}if(Q.type){let C=String(Q.type).toLowerCase();return{role:$9(C),content:GD(Q.content)}}if(Q.role)return{role:$9(String(Q.role)),content:GD(Q.content)};let I=Q.constructor?.name;if(I&&I!=="Object")return{role:$9(_AA(I)),content:GD(Q.content)};return{role:"user",content:GD(Q.content)}})}function TAQ(A,Q,B){let I={},C="kwargs"in A?A.kwargs:void 0,E=Q?.temperature??B?.ls_temperature??C?.temperature;HI(I,DY,E);let Y=Q?.max_tokens??B?.ls_max_tokens??C?.max_tokens;HI(I,BD,Y);let J=Q?.top_p??C?.top_p;HI(I,WY,J);let F=Q?.frequency_penalty;HI(I,ZY,F);let G=Q?.presence_penalty;if(HI(I,ID,G),Q&&"stream"in Q)iI(I,QD,Boolean(Q.stream));return I}function fAA(A,Q,B,I,C){return{[GY]:sE(A??"langchain"),[sQ]:"chat",[XQ]:sE(Q),[n]:oJ,...TAQ(B,I,C)}}function gAA(A,Q,B,I,C){let E=C?.ls_provider,Y=I?.model??C?.ls_model_name??"unknown",J=fAA(E,Y,A,I,C);if(B&&Array.isArray(Q)&&Q.length>0){iI(J,TB,Q.length);let F=Q.map((G)=>({role:"user",content:G}));iI(J,rQ,sE(F))}return J}function hAA(A,Q,B,I,C){let E=C?.ls_provider??A.id?.[2],Y=I?.model??C?.ls_model_name??"unknown",J=fAA(E,Y,A,I,C);if(B&&Array.isArray(Q)&&Q.length>0){let F=L9(Q.flat()),{systemInstructions:G,filteredMessages:D}=LI(F);if(G)iI(J,$I,G);let Z=Array.isArray(D)?D.length:0;iI(J,TB,Z);let W=wY(D);iI(J,rQ,sE(W))}return J}function PAQ(A,Q){let B=[],I=A.flat();for(let C of I){let E=C.message?.content;if(Array.isArray(E))for(let Y of E){let J=Y;if(J.type==="tool_use")B.push(J)}}if(B.length>0)iI(Q,cQ,sE(B))}function kAQ(A,Q){if(!A)return;let{tokenUsage:B,usage:I}=A;if(B)HI(Q,aA,B.promptTokens),HI(Q,jQ,B.completionTokens),HI(Q,OB,B.totalTokens);else if(I){HI(Q,aA,I.input_tokens),HI(Q,jQ,I.output_tokens);let C=Number(I.input_tokens),E=Number(I.output_tokens),Y=(Number.isNaN(C)?0:C)+(Number.isNaN(E)?0:E);if(Y>0)HI(Q,OB,Y);if(I.cache_creation_input_tokens!==void 0)HI(Q,Je,I.cache_creation_input_tokens);if(I.cache_read_input_tokens!==void 0)HI(Q,Fe,I.cache_read_input_tokens)}}function xAA(A,Q){if(!A)return;let B={};if(Array.isArray(A.generations)){let G=A.generations.flat().map((D)=>{if(D.generationInfo?.finish_reason)return D.generationInfo.finish_reason;if(D.generation_info?.finish_reason)return D.generation_info.finish_reason;return null}).filter((D)=>typeof D==="string");if(G.length>0)iI(B,rB,sE(G));if(PAQ(A.generations,B),Q){let D=A.generations.flat().map((Z)=>Z.text??Z.message?.content).filter((Z)=>typeof Z==="string");if(D.length>0)iI(B,kQ,sE(D))}}kAQ(A.llmOutput,B);let I=A.llmOutput,E=A.generations?.[0]?.[0]?.message,Y=I?.model_name??I?.model??E?.response_metadata?.model_name;if(Y)iI(B,gQ,Y);let J=I?.id??E?.id;if(J)iI(B,pI,J);let F=I?.stop_reason??E?.response_metadata?.finish_reason;if(F)iI(B,Ce,sE(F));return B}function $4(A={}){let{recordInputs:Q,recordOutputs:B}=FE(A),I=new Map,C=(Y)=>{let J=I.get(Y);if(J?.isRecording())J.end(),I.delete(Y)},E={lc_serializable:!1,lc_namespace:["langchain_core","callbacks","sentry"],lc_secrets:void 0,lc_attributes:void 0,lc_aliases:void 0,lc_serializable_keys:void 0,lc_id:["langchain_core","callbacks","sentry"],lc_kwargs:{},name:"SentryCallbackHandler",ignoreLLM:!1,ignoreChain:!1,ignoreAgent:!1,ignoreRetriever:!1,ignoreCustomEvent:!1,raiseError:!1,awaitHandlers:!0,handleLLMStart(Y,J,F,G,D,Z,W,X){let w=n3(Z),K=gAA(Y,J,Q,w,W),z=K[XQ],$=K[sQ];fQ({name:`${$} ${z}`,op:"gen_ai.chat",attributes:{...K,[e]:"gen_ai.chat"}},(N)=>{return I.set(F,N),N})},handleChatModelStart(Y,J,F,G,D,Z,W,X){let w=n3(Z),K=hAA(Y,J,Q,w,W),z=K[XQ],$=K[sQ];fQ({name:`${$} ${z}`,op:"gen_ai.chat",attributes:{...K,[e]:"gen_ai.chat"}},(N)=>{return I.set(F,N),N})},handleLLMEnd(Y,J,F,G,D){let Z=I.get(J);if(Z?.isRecording()){let W=xAA(Y,B);if(W)Z.setAttributes(W);C(J)}},handleLLMError(Y,J){let F=I.get(J);if(F?.isRecording())F.setStatus({code:UA,message:"internal_error"}),C(J);IA(Y,{mechanism:{handled:!1,type:`${oJ}.llm_error_handler`}})},handleChainStart(Y,J,F,G,D,Z,W,X){let w=X||Y.name||"unknown_chain",K={[n]:"auto.ai.langchain","langchain.chain.name":w};if(Q)K["langchain.chain.inputs"]=JSON.stringify(J);fQ({name:`chain ${w}`,op:"gen_ai.invoke_agent",attributes:{...K,[e]:"gen_ai.invoke_agent"}},(z)=>{return I.set(F,z),z})},handleChainEnd(Y,J){let F=I.get(J);if(F?.isRecording()){if(B)F.setAttributes({"langchain.chain.outputs":JSON.stringify(Y)});C(J)}},handleChainError(Y,J){let F=I.get(J);if(F?.isRecording())F.setStatus({code:UA,message:"internal_error"}),C(J);IA(Y,{mechanism:{handled:!1,type:`${oJ}.chain_error_handler`}})},handleToolStart(Y,J,F,G){let D=Y.name||"unknown_tool",Z={[n]:oJ,[uJ]:D};if(Q)Z[Y4]=J;fQ({name:`execute_tool ${D}`,op:"gen_ai.execute_tool",attributes:{...Z,[e]:"gen_ai.execute_tool"}},(W)=>{return I.set(F,W),W})},handleToolEnd(Y,J){let F=I.get(J);if(F?.isRecording()){if(B)F.setAttributes({[J4]:JSON.stringify(Y)});C(J)}},handleToolError(Y,J){let F=I.get(J);if(F?.isRecording())F.setStatus({code:UA,message:"internal_error"}),C(J);IA(Y,{mechanism:{handled:!1,type:`${oJ}.tool_error_handler`}})},copy(){return E},toJSON(){return{lc:1,type:"not_implemented",id:E.lc_id}},toJSONNotImplemented(){return{lc:1,type:"not_implemented",id:E.lc_id}}};return E}var L4="LangGraph",a3="auto.ai.langgraph";function SAQ(A){if(!A||A.length===0)return null;let Q=[];for(let B of A)if(B&&typeof B==="object"){let I=B.tool_calls;if(I&&Array.isArray(I))Q.push(...I)}return Q.length>0?Q:null}function yAQ(A){let Q=A,B=0,I=0,C=0;if(Q.usage_metadata&&typeof Q.usage_metadata==="object"){let E=Q.usage_metadata;if(typeof E.input_tokens==="number")B=E.input_tokens;if(typeof E.output_tokens==="number")I=E.output_tokens;if(typeof E.total_tokens==="number")C=E.total_tokens;return{inputTokens:B,outputTokens:I,totalTokens:C}}if(Q.response_metadata&&typeof Q.response_metadata==="object"){let E=Q.response_metadata;if(E.tokenUsage&&typeof E.tokenUsage==="object"){let Y=E.tokenUsage;if(typeof Y.promptTokens==="number")B=Y.promptTokens;if(typeof Y.completionTokens==="number")I=Y.completionTokens;if(typeof Y.totalTokens==="number")C=Y.totalTokens}}return{inputTokens:B,outputTokens:I,totalTokens:C}}function _AQ(A,Q){let B=Q;if(B.response_metadata&&typeof B.response_metadata==="object"){let I=B.response_metadata;if(I.model_name&&typeof I.model_name==="string")A.setAttribute(gQ,I.model_name);if(I.finish_reason&&typeof I.finish_reason==="string")A.setAttribute(rB,[I.finish_reason])}}function vAA(A){if(!A.builder?.nodes?.tools?.runnable?.tools)return null;let Q=A.builder?.nodes?.tools?.runnable?.tools;if(!Q||!Array.isArray(Q)||Q.length===0)return null;return Q.map((B)=>({name:B.lc_kwargs?.name,description:B.lc_kwargs?.description,schema:B.lc_kwargs?.schema}))}function bAA(A,Q,B){let C=B?.messages;if(!C||!Array.isArray(C))return;let E=Q?.length??0,Y=C.length>E?C.slice(E):[];if(Y.length===0)return;let J=SAQ(Y);if(J)A.setAttribute(cQ,JSON.stringify(J));let F=L9(Y);A.setAttribute(kQ,JSON.stringify(F));let G=0,D=0,Z=0;for(let W of Y){let X=yAQ(W);G+=X.inputTokens,D+=X.outputTokens,Z+=X.totalTokens,_AQ(A,W)}if(G>0)A.setAttribute(aA,G);if(D>0)A.setAttribute(jQ,D);if(Z>0)A.setAttribute(OB,Z)}function o3(A,Q){return new Proxy(A,{apply(B,I,C){return sB({op:"gen_ai.create_agent",name:"create_agent",attributes:{[n]:a3,[e]:"gen_ai.create_agent",[sQ]:"create_agent"}},(E)=>{try{let Y=Reflect.apply(B,I,C),J=C.length>0?C[0]:{};if(J?.name&&typeof J.name==="string")E.setAttribute(M3,J.name),E.updateName(`create_agent ${J.name}`);let F=Y.invoke;if(F&&typeof F==="function")Y.invoke=fAQ(F.bind(Y),Y,J,Q);return Y}catch(Y){throw E.setStatus({code:UA,message:"internal_error"}),IA(Y,{mechanism:{handled:!1,type:"auto.ai.langgraph.error"}}),Y}})}})}function fAQ(A,Q,B,I){return new Proxy(A,{apply(C,E,Y){return sB({op:"gen_ai.invoke_agent",name:"invoke_agent",attributes:{[n]:a3,[e]:C4,[sQ]:"invoke_agent"}},async(J)=>{try{let F=B?.name;if(F&&typeof F==="string")J.setAttribute(Ye,F),J.setAttribute(M3,F),J.updateName(`invoke_agent ${F}`);let Z=(Y.length>1?Y[1]:void 0)?.configurable?.thread_id;if(Z&&typeof Z==="string")J.setAttribute(X9,Z);let W=vAA(Q);if(W)J.setAttribute(JE,JSON.stringify(W));let{recordInputs:X,recordOutputs:w}=I,K=Y.length>0?Y[0]?.messages??[]:[];if(K&&X){let $=L9(K),{systemInstructions:N,filteredMessages:j}=LI($);if(N)J.setAttribute($I,N);let O=wY(j),k=Array.isArray(j)?j.length:0;J.setAttributes({[rQ]:JSON.stringify(O),[TB]:k})}let z=await Reflect.apply(C,E,Y);if(w)bAA(J,K??null,z);return z}catch(F){throw J.setStatus({code:UA,message:"internal_error"}),IA(F,{mechanism:{handled:!1,type:"auto.ai.langgraph.error"}}),F}})}})}function H4(A,Q){return A.compile=o3(A.compile,FE(Q)),A}function H9(A){if(A===void 0)return;else if(A>=400&&A<500)return"warning";else if(A>=500)return"error";else return}function M9(A,Q,B){let I=A[Q];if(typeof I!=="function")return;try{A[Q]=B}catch{Object.defineProperty(A,Q,{value:B,writable:!0,configurable:!0,enumerable:!0})}if(A.default===I)try{A.default=B}catch{Object.defineProperty(A,"default",{value:B,writable:!0,configurable:!0,enumerable:!0})}}function dAA(A,Q=!1){return!(Q||A&&!A.startsWith("/")&&!A.match(/^[A-Z]:/)&&!A.startsWith(".")&&!A.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&A!==void 0&&!A.includes("node_modules/")}function cAA(A){let Q=/^\s*[-]{4,}$/,B=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,I=/at (?:async )?(.+?) \(data:(.*?),/;return(C)=>{let E=C.match(I);if(E)return{filename:``,function:E[1]};let Y=C.match(B);if(Y){let J,F,G,D,Z;if(Y[1]){G=Y[1];let K=G.lastIndexOf(".");if(G[K-1]===".")K--;if(K>0){J=G.slice(0,K),F=G.slice(K+1);let z=J.indexOf(".Module");if(z>0)G=G.slice(z+1),J=J.slice(0,z)}D=void 0}if(F)D=J,Z=F;if(F==="")Z=void 0,G=void 0;if(G===void 0)Z=Z||X$,G=D?`${D}.${Z}`:Z;let W=Dr(Y[2]),X=Y[5]==="native";if(!W&&Y[5]&&!X)W=Y[5];let w=W?gAQ(W):void 0;return{filename:w??W,module:w&&A?.(w),function:G,lineno:mAA(Y[3]),colno:mAA(Y[4]),in_app:dAA(W||"",X)}}if(C.match(Q))return{filename:C};return}}function s3(A){return[90,cAA(A)]}function mAA(A){return parseInt(A||"",10)||void 0}function gAQ(A){try{return decodeURI(A)}catch{return}}class MI{constructor(A){this._maxSize=A,this._cache=new Map}get size(){return this._cache.size}get(A){let Q=this._cache.get(A);if(Q===void 0)return;return this._cache.delete(A),this._cache.set(A,Q),Q}set(A,Q){if(this._cache.size>=this._maxSize){let B=this._cache.keys().next().value;this._cache.delete(B)}this._cache.set(A,Q)}remove(A){let Q=this._cache.get(A);if(Q)this._cache.delete(A);return Q}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){let A=[];return this._cache.forEach((Q)=>A.push(Q)),A}}var NI=f(P(),1),eE=f(hA(),1),jI=f(HA(),1);import{errorMonitor as EIQ}from"node:events";var GA=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;var LY=f(P(),1);import{subscribe as QIQ}from"node:diagnostics_channel";var f4="@sentry/instrumentation-http",jIA=1048576;function RIA(A,Q,B,I){let C=0,E=[];GA&&L.log(I,"Patching request.on");let Y=new WeakMap,J=B==="small"?1000:B==="medium"?1e4:jIA;try{A.on=new Proxy(A.on,{apply:(F,G,D)=>{let[Z,W,...X]=D;if(Z==="data"){GA&&L.log(I,`Handling request.on("data") with maximum body size of ${J}b`);let w=new Proxy(W,{apply:(K,z,$)=>{try{let N=$[0],j=Buffer.from(N);if(C{let[,Z]=D,W=Y.get(Z);if(W){Y.delete(Z);let X=D.slice();return X[1]=W,Reflect.apply(F,G,X)}return Reflect.apply(F,G,D)}}),A.on("end",()=>{try{let F=Buffer.concat(E).toString("utf-8");if(F){let D=Buffer.byteLength(F,"utf-8")>J?`${Buffer.from(F).subarray(0,J-3).toString("utf-8")}...`:F;Q.setSDKProcessingMetadata({normalizedRequest:{data:D}})}}catch(F){if(GA)L.error(I,"Error building captured request body",F)}})}catch(F){if(GA)L.error(I,"Error patching request to capture body",F)}}var qIA=LY.createContextKey("sentry_http_server_instrumented"),XL="Http.Server",WL=new Map,OIA=new WeakSet;function TIA(A,Q){PQ(A,"_startSpanCallback",new WeakRef(Q))}var BIQ=(A={})=>{let Q={sessions:A.sessions??!0,sessionFlushingDelayMS:A.sessionFlushingDelayMS??60000,maxRequestBodySize:A.maxRequestBodySize??"medium",ignoreRequestBody:A.ignoreRequestBody};return{name:XL,setupOnce(){QIQ("http.server.request.start",(I)=>{IIQ(I.server,Q)})},afterAllSetup(B){if(GA&&B.getIntegrationByName("Http"))L.warn("It seems that you have manually added `httpServerIntegration` while `httpIntegration` is also present. Make sure to remove `httpServerIntegration` when adding `httpIntegration`.")}}},ZD=BIQ;function IIQ(A,{ignoreRequestBody:Q,maxRequestBodySize:B,sessions:I,sessionFlushingDelayMS:C}){let E=A.emit;if(OIA.has(E))return;let Y=new Proxy(E,{apply(J,F,G){if(G[0]!=="request")return J.apply(F,G);let D=u();if(LY.context.active().getValue(qIA)||!D)return J.apply(F,G);GA&&L.log(XL,"Handling incoming request");let Z=ZA().clone(),W=G[1],X=G[2],w=J9(W),K=W.ip||W.socket?.remoteAddress,z=W.url||"/";if(B!=="none"&&!Q?.(z,W))RIA(W,Z,B,XL);Z.setSDKProcessingMetadata({normalizedRequest:w,ipAddress:K});let $=(W.method||"GET").toUpperCase(),N=oE(z),j=`${$} ${N}`;if(Z.setTransactionName(j),I&&D)CIQ(D,{requestIsolationScope:Z,response:X,sessionFlushingDelayMS:C??60000});return vG(Z,()=>{let O={traceId:nB(),sampleRand:oQ(),propagationSpanId:aB()};MA().setPropagationContext({...O}),Z.setPropagationContext({...O});let k=LY.propagation.extract(LY.context.active(),w.headers).setValue(qIA,!0);return LY.context.with(k,()=>{D.emit("httpServerRequest",W,X,w);let g=W._startSpanCallback?.deref();if(g)return g(()=>J.apply(F,G));return J.apply(F,G)})})}});OIA.add(Y),A.emit=Y}function CIQ(A,{requestIsolationScope:Q,response:B,sessionFlushingDelayMS:I}){Q.setSDKProcessingMetadata({requestSession:{status:"ok"}}),B.once("close",()=>{let C=Q.getScopeData().sdkProcessingMetadata.requestSession;if(A&&C){GA&&L.log(`Recorded request session with status: ${C.status}`);let E=new Date;E.setSeconds(0,0);let Y=E.toISOString(),J=WL.get(A),F=J?.[Y]||{exited:0,crashed:0,errored:0};if(F[{ok:"exited",crashed:"crashed",errored:"errored"}[C.status]]++,J)J[Y]=F;else{GA&&L.log("Opened new request session aggregate.");let G={[Y]:F};WL.set(A,G);let D=()=>{clearTimeout(W),Z(),WL.delete(A);let X=Object.entries(G).map(([w,K])=>({started:w,exited:K.exited,errored:K.errored,crashed:K.crashed}));A.sendSession({aggregates:X})},Z=A.on("flush",()=>{GA&&L.log("Sending request session aggregate due to client flush"),D()}),W=setTimeout(()=>{GA&&L.log("Sending request session aggregate due to flushing schedule"),D()},I).unref()}}})}var PIA="Http.ServerSpans",YIQ=(A={})=>{let Q=A.ignoreStaticAssets??!0,B=A.ignoreIncomingRequests,I=A.ignoreStatusCodes??[[401,404],[301,303],[305,399]],{onSpanCreated:C}=A,{requestHook:E,responseHook:Y,applyCustomAttributesOnSpan:J}=A.instrumentation??{};return{name:PIA,setup(F){if(typeof __SENTRY_TRACING__<"u"&&!__SENTRY_TRACING__)return;F.on("httpServerRequest",(G,D,Z)=>{let W=G,X=D;TIA(W,(K)=>{if(GIQ(W,{ignoreStaticAssets:Q,ignoreIncomingRequests:B}))return GA&&L.log(PIA,"Skipping span creation for incoming request",W.url),K();let z=Z.url||W.url||"/",$=Y9(z),N=W.headers,j=N["user-agent"],O=N["x-forwarded-for"],k=W.httpVersion,g=N.host,x=g?.replace(/^(.*)(:[0-9]{1,5})/,"$1")||"localhost",dA=F.tracer,cA=z.startsWith("https")?"https":"http",qQ=Z.method||W.method?.toUpperCase()||"GET",IB=$?$.pathname:oE(z),ZQ=`${qQ} ${IB}`,tA=dA.startSpan(ZQ,{kind:NI.SpanKind.SERVER,attributes:{[e]:"http.server",[n]:"auto.http.otel.http","sentry.http.prefetch":JIQ(W)||void 0,"http.url":z,"http.method":Z.method,"http.target":$?`${$.pathname}${$.search}`:IB,"http.host":g,"net.host.name":x,"http.client_ip":typeof O==="string"?O.split(",")[0]:void 0,"http.user_agent":j,"http.scheme":cA,"http.flavor":k,"net.transport":k?.toUpperCase()==="QUIC"?"ip_udp":"ip_tcp",...DIQ(W),...eU(Z.headers||{},F.getOptions().sendDefaultPii??!1)}});E?.(tA,W),Y?.(tA,X),J?.(tA,W,X),C?.(tA,W,X);let mY={type:eE.RPCType.HTTP,span:tA};return NI.context.with(eE.setRPCMetadata(NI.trace.setSpan(NI.context.active(),tA),mY),()=>{NI.context.bind(NI.context.active(),W),NI.context.bind(NI.context.active(),X);let ZC=!1;function HE(HF){if(ZC)return;ZC=!0;let AZ=XIQ(W,X);tA.setAttributes(AZ),tA.setStatus(HF),tA.end();let QZ=AZ["http.route"];if(QZ)ZA().setTransactionName(`${W.method?.toUpperCase()||"GET"} ${QZ}`)}return X.on("close",()=>{HE(CE(X.statusCode))}),X.on(EIQ,()=>{let HF=CE(X.statusCode);HE(HF.code===UA?HF:{code:UA})}),K()})})})},processEvent(F){if(F.type==="transaction"){let G=F.contexts?.trace?.data?.["http.response.status_code"];if(typeof G==="number"){if(UIQ(G,I))return GA&&L.log("Dropping transaction due to status code",G),null}}return F},afterAllSetup(F){if(!GA)return;if(F.getIntegrationByName("Http"))L.warn("It seems that you have manually added `httpServerSpansIntergation` while `httpIntegration` is also present. Make sure to remove `httpIntegration` when adding `httpServerSpansIntegration`.");if(!F.getIntegrationByName("Http.Server"))L.error("It seems that you have manually added `httpServerSpansIntergation` without adding `httpServerIntegration`. This is a requiement for spans to be created - please add the `httpServerIntegration` integration.")}}},WD=YIQ;function JIQ(A){return A.headers["next-router-prefetch"]==="1"}function FIQ(A){let Q=oE(A);if(Q.match(/\.(ico|png|jpg|jpeg|gif|svg|css|js|woff|woff2|ttf|eot|webp|avif)$/))return!0;if(Q.match(/^\/(robots\.txt|sitemap\.xml|manifest\.json|browserconfig\.xml)$/))return!0;return!1}function GIQ(A,{ignoreStaticAssets:Q,ignoreIncomingRequests:B}){if(eE.isTracingSuppressed(NI.context.active()))return!0;let I=A.url,C=A.method?.toUpperCase();if(C==="OPTIONS"||C==="HEAD"||!I)return!0;if(Q&&C==="GET"&&FIQ(I))return!0;if(B?.(I,A))return!0;return!1}function DIQ(A){let Q=ZIQ(A.headers);if(Q==null)return{};if(WIQ(A.headers))return{["http.request_content_length"]:Q};else return{["http.request_content_length_uncompressed"]:Q}}function ZIQ(A){let Q=A["content-length"];if(Q===void 0)return null;let B=parseInt(Q,10);if(isNaN(B))return null;return B}function WIQ(A){let Q=A["content-encoding"];return!!Q&&Q!=="identity"}function XIQ(A,Q){let{socket:B}=A,{statusCode:I,statusMessage:C}=Q,E={[jI.ATTR_HTTP_RESPONSE_STATUS_CODE]:I,[jI.SEMATTRS_HTTP_STATUS_CODE]:I,"http.status_text":C?.toUpperCase()},Y=eE.getRPCMetadata(NI.context.active());if(B){let{localAddress:J,localPort:F,remoteAddress:G,remotePort:D}=B;E[jI.SEMATTRS_NET_HOST_IP]=J,E[jI.SEMATTRS_NET_HOST_PORT]=F,E[jI.SEMATTRS_NET_PEER_IP]=G,E["net.peer.port"]=D}if(E[jI.SEMATTRS_HTTP_STATUS_CODE]=I,E["http.status_text"]=(C||"").toUpperCase(),Y?.type===eE.RPCType.HTTP&&Y.route!==void 0){let J=Y.route;E[jI.ATTR_HTTP_ROUTE]=J}return E}function UIQ(A,Q){return Q.some((B)=>{if(typeof B==="number")return B===A;let[I,C]=B;return A>=I&&A<=C})}var PB=f(P(),1),_IA=f(hA(),1),O9=f(JA(),1),uQ=f(HA(),1);import{subscribe as UL,unsubscribe as wL}from"node:diagnostics_channel";import{errorMonitor as yIA}from"node:events";function q9(A,Q){if(!A)return Q;let B=TJ(A),I=TJ(Q);if(!I)return A;let C={...B};return Object.entries(I).forEach(([E,Y])=>{if(E.startsWith("sentry-")||!C[E])C[E]=Y}),bU(C)}var XD="@sentry/instrumentation-http";function kIA(A,Q){let B=wIQ(A),I=Q?.statusCode,C=H9(I);VI({category:"http",data:{status_code:I,...B},type:"http",level:C},{event:"response",request:A,response:Q})}function g4(A,Q){let B=h4(A),{tracePropagationTargets:I,propagateTraceparent:C}=u()?.getOptions()||{},E=dJ(B,I,Q)?mJ({propagateTraceparent:C}):void 0;if(!E)return;let{"sentry-trace":Y,baggage:J,traceparent:F}=E;if(Y&&!A.getHeader("sentry-trace"))try{A.setHeader("sentry-trace",Y),GA&&L.log(XD,"Added sentry-trace header to outgoing request")}catch(G){GA&&L.error(XD,"Failed to add sentry-trace header to outgoing request:",BE(G)?G.message:"Unknown error")}if(F&&!A.getHeader("traceparent"))try{A.setHeader("traceparent",F),GA&&L.log(XD,"Added traceparent header to outgoing request")}catch(G){GA&&L.error(XD,"Failed to add traceparent header to outgoing request:",BE(G)?G.message:"Unknown error")}if(J){let G=q9(A.getHeader("baggage"),J);if(G)try{A.setHeader("baggage",G),GA&&L.log(XD,"Added baggage header to outgoing request")}catch(D){GA&&L.error(XD,"Failed to add baggage header to outgoing request:",BE(D)?D.message:"Unknown error")}}}function wIQ(A){try{let Q=A.getHeader("host")||A.host,B=new URL(A.path,`${A.protocol}//${Q}`),I=JY(B.toString()),C={url:FY(I),"http.method":A.method||"GET"};if(I.search)C["http.query"]=I.search;if(I.hash)C["http.fragment"]=I.hash;return C}catch{return{}}}function SIA(A){return{method:A.method,protocol:A.protocol,host:A.host,hostname:A.host,path:A.path,headers:A.getHeaders()}}function h4(A){let Q=A.getHeader("host")||A.host,B=A.protocol,I=A.path;return`${B}//${Q}${I}`}class UD extends O9.InstrumentationBase{constructor(A={}){super(f4,VA,A);this._propagationDecisionMap=new MI(100),this._ignoreOutgoingRequestsMap=new WeakMap}init(){let A=!1,Q=(Y)=>{let J=Y;this._onOutgoingRequestFinish(J.request,J.response)},B=(Y)=>{let J=Y;this._onOutgoingRequestFinish(J.request,void 0)},I=(Y)=>{let J=Y;this._onOutgoingRequestCreated(J.request)},C=(Y)=>{if(A)return Y;if(A=!0,UL("http.client.response.finish",Q),UL("http.client.request.error",B),this.getConfig().propagateTraceInOutgoingRequests||this.getConfig().createSpansForOutgoingRequests)UL("http.client.request.created",I);return Y},E=()=>{wL("http.client.response.finish",Q),wL("http.client.request.error",B),wL("http.client.request.created",I)};return[new O9.InstrumentationNodeModuleDefinition("http",["*"],C,E),new O9.InstrumentationNodeModuleDefinition("https",["*"],C,E)]}_startSpanForOutgoingRequest(A){let Q=A.once,[B,I]=KIQ(A),C=o1({name:B,attributes:I,onlyIfParent:!0});this.getConfig().outgoingRequestHook?.(C,A);let E=new Proxy(Q,{apply(F,G,D){let[Z]=D;if(Z!=="response")return F.apply(G,D);let W=PB.context.active(),X=PB.trace.setSpan(W,C);return PB.context.with(X,()=>{return F.apply(G,D)})}});A.once=E;let Y=!1,J=(F)=>{if(Y)return;Y=!0,C.setStatus(F),C.end()};return A.prependListener("response",(F)=>{if(A.listenerCount("response")<=1)F.resume();PB.context.bind(PB.context.active(),F);let G=zIQ(F);C.setAttributes(G),this.getConfig().outgoingResponseHook?.(C,F),this.getConfig().outgoingRequestApplyCustomAttributes?.(C,A,F);let D=(Z=!1)=>{this._diag.debug("outgoingRequest on end()");let W=Z||typeof F.statusCode!=="number"||F.aborted&&!F.complete?{code:PB.SpanStatusCode.ERROR}:CE(F.statusCode);J(W)};F.on("end",()=>{D()}),F.on(yIA,(Z)=>{this._diag.debug("outgoingRequest on response error()",Z),D(!0)})}),A.on("close",()=>{J({code:PB.SpanStatusCode.UNSET})}),A.on(yIA,(F)=>{this._diag.debug("outgoingRequest on request error()",F),J({code:PB.SpanStatusCode.ERROR})}),C}_onOutgoingRequestFinish(A,Q){GA&&L.log(f4,"Handling finished outgoing request");let B=this.getConfig().breadcrumbs,I=typeof B>"u"?!0:B,C=this._ignoreOutgoingRequestsMap.get(A)??this._shouldIgnoreOutgoingRequest(A);if(this._ignoreOutgoingRequestsMap.set(A,C),I&&!C)kIA(A,Q)}_onOutgoingRequestCreated(A){GA&&L.log(f4,"Handling outgoing request created");let Q=this._ignoreOutgoingRequestsMap.get(A)??this._shouldIgnoreOutgoingRequest(A);if(this._ignoreOutgoingRequestsMap.set(A,Q),Q)return;let B=this.getConfig().createSpansForOutgoingRequests&&(this.getConfig().spans??!0),I=this.getConfig().propagateTraceInOutgoingRequests;if(B){let C=this._startSpanForOutgoingRequest(A);if(I&&C.isRecording()){let E=PB.trace.setSpan(PB.context.active(),C);PB.context.with(E,()=>{g4(A,this._propagationDecisionMap)})}else if(I)g4(A,this._propagationDecisionMap)}else if(I)g4(A,this._propagationDecisionMap)}_shouldIgnoreOutgoingRequest(A){if(_IA.isTracingSuppressed(PB.context.active()))return!0;let Q=this.getConfig().ignoreOutgoingRequests;if(!Q)return!1;let B=SIA(A),I=h4(A);return Q(I,B)}}function KIQ(A){let Q=h4(A),[B,I]=W3(Y9(Q),"client","auto.http.otel.http",A),C=A.getHeader("user-agent");return[B,{[e]:"http.client","otel.kind":"CLIENT",[uQ.ATTR_USER_AGENT_ORIGINAL]:C,[uQ.ATTR_URL_FULL]:Q,"http.url":Q,"http.method":A.method,"http.target":A.path||"/","net.peer.name":A.host,"http.host":A.getHeader("host"),...I}]}function zIQ(A){let{statusCode:Q,statusMessage:B,httpVersion:I,socket:C}=A,E=I.toUpperCase()!=="QUIC"?"ip_tcp":"ip_udp",Y={[uQ.ATTR_HTTP_RESPONSE_STATUS_CODE]:Q,[uQ.ATTR_NETWORK_PROTOCOL_VERSION]:I,"http.flavor":I,[uQ.ATTR_NETWORK_TRANSPORT]:E,"net.transport":E,["http.status_text"]:B?.toUpperCase(),"http.status_code":Q,...VIQ(A)};if(C){let{remoteAddress:J,remotePort:F}=C;Y[uQ.ATTR_NETWORK_PEER_ADDRESS]=J,Y[uQ.ATTR_NETWORK_PEER_PORT]=F,Y["net.peer.ip"]=J,Y["net.peer.port"]=F}return Y}function VIQ(A){let Q=$IQ(A.headers);if(Q==null)return{};if(LIQ(A.headers))return{[uQ.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]:Q};else return{[uQ.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]:Q}}function $IQ(A){let Q=A["content-length"];if(typeof Q==="number")return Q;if(typeof Q!=="string")return;let B=parseInt(Q,10);if(isNaN(B))return;return B}function LIQ(A){let Q=A["content-encoding"];return!!Q&&Q!=="identity"}var xIA=f(P(),1),vIA=f(hA(),1),bIA=f(JA(),1);import*as wD from"diagnostics_channel";var aI=L$(process.versions.node),A0=aI.major,T9=aI.minor;var x4="sentry-trace",KL="baggage",fIA=/baggage: (.*)\r\n/;function gIA(A,Q){let B=v4(A.origin,A.path),{tracePropagationTargets:I,propagateTraceparent:C}=u()?.getOptions()||{},E=dJ(B,I,Q)?mJ({propagateTraceparent:C}):void 0;if(!E)return;let{"sentry-trace":Y,baggage:J,traceparent:F}=E;if(Array.isArray(A.headers)){let G=A.headers;if(Y&&!G.includes(x4))G.push(x4,Y);if(F&&!G.includes("traceparent"))G.push("traceparent",F);let D=G.findIndex((Z)=>Z===KL);if(J&&D===-1)G.push(KL,J);else if(J){let Z=G[D+1],W=q9(Z,J);if(W)G[D+1]=W}}else{let G=A.headers;if(Y&&!G.includes(`${x4}:`))A.headers+=`${x4}: ${Y}\r +`;if(F&&!G.includes("traceparent:"))A.headers+=`traceparent: ${F}\r +`;let D=A.headers.match(fIA)?.[1];if(J&&!D)A.headers+=`${KL}: ${J}\r +`;else if(J){let Z=q9(D,J);if(Z)A.headers=A.headers.replace(fIA,`baggage: ${Z}\r +`)}}}function hIA(A,Q){let B=HIQ(A),I=Q.statusCode,C=H9(I);VI({category:"http",data:{status_code:I,...B},type:"http",level:C},{event:"response",request:A,response:Q})}function HIQ(A){try{let Q=v4(A.origin,A.path),B=JY(Q),I={url:FY(B),"http.method":A.method||"GET"};if(B.search)I["http.query"]=B.search;if(B.hash)I["http.fragment"]=B.hash;return I}catch{return{}}}function v4(A,Q="/"){try{return new URL(Q,A).toString()}catch{let B=`${A}`;if(B.endsWith("/")&&Q.startsWith("/"))return`${B}${Q.slice(1)}`;if(!B.endsWith("/")&&!Q.startsWith("/"))return`${B}/${Q}`;return`${B}${Q}`}}class KD extends bIA.InstrumentationBase{constructor(A={}){super("@sentry/instrumentation-node-fetch",VA,A);this._channelSubs=[],this._propagationDecisionMap=new MI(100),this._ignoreOutgoingRequestsMap=new WeakMap}init(){return}disable(){super.disable(),this._channelSubs.forEach((A)=>A.unsubscribe()),this._channelSubs=[]}enable(){if(super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0)return;this._subscribeToChannel("undici:request:create",this._onRequestCreated.bind(this)),this._subscribeToChannel("undici:request:headers",this._onResponseHeaders.bind(this))}_onRequestCreated({request:A}){let Q=this.getConfig();if(Q.enabled===!1)return;let I=this._shouldIgnoreOutgoingRequest(A);if(this._ignoreOutgoingRequestsMap.set(A,I),I)return;if(Q.tracePropagation!==!1)gIA(A,this._propagationDecisionMap)}_onResponseHeaders({request:A,response:Q}){let B=this.getConfig();if(B.enabled===!1)return;let C=B.breadcrumbs,E=typeof C>"u"?!0:C,Y=this._ignoreOutgoingRequestsMap.get(A);if(E&&!Y)hIA(A,Q)}_subscribeToChannel(A,Q){let B=A0>18||A0===18&&T9>=19,I;if(B)wD.subscribe?.(A,Q),I=()=>wD.unsubscribe?.(A,Q);else{let C=wD.channel(A);C.subscribe(Q),I=()=>C.unsubscribe(Q)}this._channelSubs.push({name:A,unsubscribe:I})}_shouldIgnoreOutgoingRequest(A){if(vIA.isTracingSuppressed(xIA.context.active()))return!0;let Q=v4(A.origin,A.path),B=this.getConfig().ignoreOutgoingRequests;if(typeof B!=="function"||!Q)return!1;return B(Q)}}var OYA=f(rIA(),1);var WA=f(HA(),1);var eB=f(P(),1),h=f(P(),1),kB=f(hA(),1),MY=f(vL(),1),iL="sentry.parentIsRemote",jD="sentry.graphql.operation";function nL(A){if("parentSpanId"in A)return A.parentSpanId;else if("parentSpanContext"in A)return A.parentSpanContext?.spanId;return}function aL(A){let Q=A;return!!Q.attributes&&typeof Q.attributes==="object"}function F0Q(A){return typeof A.kind==="number"}function G0Q(A){return!!A.status}function r0A(A){return!!A.name}function D0Q(A){if(!aL(A))return{};let Q=A.attributes[WA.ATTR_URL_FULL]||A.attributes[WA.SEMATTRS_HTTP_URL],B={url:Q,"http.method":A.attributes[WA.ATTR_HTTP_REQUEST_METHOD]||A.attributes[WA.SEMATTRS_HTTP_METHOD]};if(!B["http.method"]&&B.url)B["http.method"]="GET";try{if(typeof Q==="string"){let I=JY(Q);if(B.url=FY(I),I.search)B["http.query"]=I.search;if(I.hash)B["http.fragment"]=I.hash}}catch{}return B}function Z0Q(A){if(F0Q(A))return A.kind;return h.SpanKind.INTERNAL}var bL="sentry-trace",mL="baggage",oL="sentry.dsc",sL="sentry.sampled_not_recording",t0A="sentry.url",W0Q="sentry.sample_rand",X0Q="sentry.sample_rate",rL=h.createContextKey("sentry_scopes"),dL=h.createContextKey("sentry_fork_isolation_scope"),cL=h.createContextKey("sentry_fork_set_scope"),uL=h.createContextKey("sentry_fork_set_isolation_scope"),e0A="_scopeContext";function RD(A){return A.getValue(rL)}function AYA(A,Q){return A.setValue(rL,Q)}function U0Q(A,Q){PQ(A,e0A,Q)}function x9(A){return A[e0A]}function ND(A){let{traceFlags:Q,traceState:B}=A,I=B?B.get(sL)==="1":!1;if(Q===h.TraceFlags.SAMPLED)return!0;if(I)return!1;let C=B?B.get(oL):void 0,E=C?iE(C):void 0;if(E?.sampled==="true")return!0;if(E?.sampled==="false")return!1;return}function QYA(A,Q,B){let I=Q[WA.ATTR_HTTP_REQUEST_METHOD]||Q[WA.SEMATTRS_HTTP_METHOD];if(I)return K0Q({attributes:Q,name:A,kind:B},I);let C=Q[WA.ATTR_DB_SYSTEM_NAME]||Q[WA.SEMATTRS_DB_SYSTEM],E=typeof Q[e]==="string"&&Q[e].startsWith("cache.");if(C&&!E)return w0Q({attributes:Q,name:A});let Y=Q[IQ]==="custom"?"custom":"route";if(Q[WA.SEMATTRS_RPC_SERVICE])return{...h9(A,Q,"route"),op:"rpc"};if(Q[WA.SEMATTRS_MESSAGING_SYSTEM])return{...h9(A,Q,Y),op:"message"};let G=Q[WA.SEMATTRS_FAAS_TRIGGER];if(G)return{...h9(A,Q,Y),op:G.toString()};return{op:void 0,description:A,source:"custom"}}function BYA(A){let Q=aL(A)?A.attributes:{},B=r0A(A)?A.name:"",I=Z0Q(A);return QYA(B,Q,I)}function w0Q({attributes:A,name:Q}){let B=A[lI];if(typeof B==="string")return{op:"db",description:B,source:A[IQ]||"custom"};if(A[IQ]==="custom")return{op:"db",description:Q,source:"custom"};let I=A[WA.SEMATTRS_DB_STATEMENT];return{op:"db",description:I?I.toString():Q,source:"task"}}function K0Q({name:A,kind:Q,attributes:B},I){let C=["http"];switch(Q){case h.SpanKind.CLIENT:C.push("client");break;case h.SpanKind.SERVER:C.push("server");break}if(B["sentry.http.prefetch"])C.push("prefetch");let{urlPath:E,url:Y,query:J,fragment:F,hasRoute:G}=V0Q(B,Q);if(!E)return{...h9(A,B),op:C.join(".")};let D=B[jD],Z=`${I} ${E}`,W=D?`${Z} (${z0Q(D)})`:Z,X=G||E==="/"?"route":"url",w={};if(Y)w.url=Y;if(J)w["http.query"]=J;if(F)w["http.fragment"]=F;let K=Q===h.SpanKind.CLIENT||Q===h.SpanKind.SERVER,$=!`${B[n]||"manual"}`.startsWith("auto"),N=B[IQ]==="custom",j=B[lI],O=!N&&j==null&&(K||!$),{description:k,source:g}=O?{description:W,source:X}:h9(A,B);return{op:C.join("."),description:k,source:g,data:w}}function z0Q(A){if(Array.isArray(A)){let Q=A.slice().sort();if(Q.length<=5)return Q.join(", ");else return`${Q.slice(0,5).join(", ")}, +${Q.length-5}`}return`${A}`}function V0Q(A,Q){let B=A[WA.SEMATTRS_HTTP_TARGET],I=A[WA.SEMATTRS_HTTP_URL]||A[WA.ATTR_URL_FULL],C=A[WA.ATTR_HTTP_ROUTE],E=typeof I==="string"?JY(I):void 0,Y=E?FY(E):void 0,J=E?.search||void 0,F=E?.hash||void 0;if(typeof C==="string")return{urlPath:C,url:Y,query:J,fragment:F,hasRoute:!0};if(Q===h.SpanKind.SERVER&&typeof B==="string")return{urlPath:oE(B),url:Y,query:J,fragment:F,hasRoute:!1};if(E)return{urlPath:Y,url:Y,query:J,fragment:F,hasRoute:!1};if(typeof B==="string")return{urlPath:oE(B),url:Y,query:J,fragment:F,hasRoute:!1};return{urlPath:void 0,url:Y,query:J,fragment:F,hasRoute:!1}}function h9(A,Q,B="custom"){let I=Q[IQ]||B,C=Q[lI];if(C&&typeof C==="string")return{description:C,source:I};return{description:A,source:I}}function IYA(A){A.on("createDsc",(Q,B)=>{if(!B)return;let E=i(B).data[IQ],{description:Y}=r0A(B)?BYA(B):{description:void 0};if(E!=="url"&&Y)Q.transaction=Y;if(MQ()){let J=ND(B.spanContext());Q.sampled=J==null?void 0:String(J)}})}function CYA(){return h.trace.getActiveSpan()}var NY=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;function EYA({dsc:A,sampled:Q}){let B=A?OJ(A):void 0,I=new kB.TraceState,C=B?I.set(oL,B):I;return Q===!1?C.set(sL,"1"):C}var YYA=new Set;function JYA(){return Array.from(YYA)}function Q5(A){YYA.add(A)}class tL extends kB.W3CBaggagePropagator{constructor(){super();Q5("SentryPropagator"),this._urlMatchesTargetsMap=new MI(100)}inject(A,Q,B){if(kB.isTracingSuppressed(A)){NY&&L.log("[Tracing] Not injecting trace data for url because tracing is suppressed.");return}let I=h.trace.getSpan(A),C=I&&H0Q(I),{tracePropagationTargets:E,propagateTraceparent:Y}=u()?.getOptions()||{};if(!dJ(C,E,this._urlMatchesTargetsMap)){NY&&L.log("[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:",C);return}let J=L0Q(Q),F=h.propagation.getBaggage(A)||h.propagation.createBaggage({}),{dynamicSamplingContext:G,traceId:D,spanId:Z,sampled:W}=FYA(A);if(J){let X=TJ(J);if(X)Object.entries(X).forEach(([w,K])=>{F=F.setEntry(w,{value:K})})}if(G)F=Object.entries(G).reduce((X,[w,K])=>{if(K)return X.setEntry(`${dG}${w}`,{value:K});return X},F);if(D&&D!==h.INVALID_TRACEID){if(B.set(Q,bL,IY(D,Z,W)),Y)B.set(Q,"traceparent",CY(D,Z,W))}super.inject(h.propagation.setBaggage(A,F),Q,B)}extract(A,Q,B){let I=B.get(Q,bL),C=B.get(Q,mL),E=I?Array.isArray(I)?I[0]:I:void 0;return DYA(GYA(A,{sentryTrace:E,baggage:C}))}fields(){return[bL,mL,"traceparent"]}}function FYA(A,Q={}){let B=h.trace.getSpan(A);if(B?.spanContext().isRemote){let J=B.spanContext();return{dynamicSamplingContext:NQ(B),traceId:J.traceId,spanId:void 0,sampled:ND(J)}}if(B){let J=B.spanContext();return{dynamicSamplingContext:NQ(B),traceId:J.traceId,spanId:J.spanId,sampled:ND(J)}}let I=Q.scope||RD(A)?.scope||MA(),C=Q.client||u(),E=I.getPropagationContext();return{dynamicSamplingContext:C?YE(C,I):void 0,traceId:E.traceId,spanId:E.propagationSpanId,sampled:E.sampled}}function GYA(A,{sentryTrace:Q,baggage:B}){let I=x1(Q,B),{traceId:C,parentSpanId:E,sampled:Y,dsc:J}=I,F=u(),G=iE(B);if(!E||F&&!S$(F,G?.org_id))return A;let D=M0Q({traceId:C,spanId:E,sampled:Y,dsc:J});return h.trace.setSpanContext(A,D)}function $0Q(A,Q,B){let I=DYA(GYA(A,Q));return h.context.with(I,B)}function DYA(A){let Q=RD(A),B={scope:Q?Q.scope:MA().clone(),isolationScope:Q?Q.isolationScope:ZA()};return AYA(A,B)}function L0Q(A){try{let Q=A[mL];return Array.isArray(Q)?Q.join(","):Q}catch{return}}function H0Q(A){let Q=i(A).data,B=Q[WA.SEMATTRS_HTTP_URL]||Q[WA.ATTR_URL_FULL];if(typeof B==="string")return B;let I=A.spanContext().traceState?.get(t0A);if(I)return I;return}function M0Q({spanId:A,traceId:Q,sampled:B,dsc:I}){let C=EYA({dsc:I,sampled:B});return{traceId:Q,spanId:A,isRemote:!0,traceFlags:B?h.TraceFlags.SAMPLED:h.TraceFlags.NONE,traceState:C}}function ZYA(A,Q,B){let I=XYA(),{name:C,parentSpan:E}=A;return zYA(E)(()=>{let J=wYA(A.scope,A.forceTransaction),G=A.onlyIfParent&&!h.trace.getSpan(J)?kB.suppressTracing(J):J,D=UYA(A);if(!MQ()){let Z=kB.isTracingSuppressed(G)?G:kB.suppressTracing(G);return h.context.with(Z,()=>{return I.startActiveSpan(C,D,Z,(W)=>{return h.context.with(J,()=>{return OC(()=>Q(W),()=>{if(i(W).status===void 0)W.setStatus({code:h.SpanStatusCode.ERROR})},B?()=>W.end():void 0)})})})}return I.startActiveSpan(C,D,G,(Z)=>{return OC(()=>Q(Z),()=>{if(i(Z).status===void 0)Z.setStatus({code:h.SpanStatusCode.ERROR})},B?()=>Z.end():void 0)})})}function N0Q(A,Q){return ZYA(A,Q,!0)}function j0Q(A,Q){return ZYA(A,(B)=>Q(B,()=>B.end()),!1)}function R0Q(A){let Q=XYA(),{name:B,parentSpan:I}=A;return zYA(I)(()=>{let E=wYA(A.scope,A.forceTransaction),J=A.onlyIfParent&&!h.trace.getSpan(E)?kB.suppressTracing(E):E,F=UYA(A);if(!MQ())J=kB.isTracingSuppressed(J)?J:kB.suppressTracing(J);return Q.startSpan(B,F,J)})}function WYA(A,Q){let B=A?h.trace.setSpan(h.context.active(),A):h.trace.deleteSpan(h.context.active());return h.context.with(B,()=>Q(MA()))}function XYA(){return u()?.tracer||h.trace.getTracer("@sentry/opentelemetry",VA)}function UYA(A){let{startTime:Q,attributes:B,kind:I,op:C,links:E}=A,Y=typeof Q==="number"?q0Q(Q):Q;return{attributes:C?{[e]:C,...B}:B,kind:I,links:E,startTime:Y}}function q0Q(A){return A<9999999999?A*1000:A}function wYA(A,Q){let B=O0Q(A),I=h.trace.getSpan(B);if(!I)return B;if(!Q)return B;let C=h.trace.deleteSpan(B),{spanId:E,traceId:Y}=I.spanContext(),J=ND(I.spanContext()),F=JQ(I),G=NQ(F),D=EYA({dsc:G,sampled:J}),Z={traceId:Y,spanId:E,isRemote:!0,traceFlags:J?h.TraceFlags.SAMPLED:h.TraceFlags.NONE,traceState:D};return h.trace.setSpanContext(C,Z)}function O0Q(A){if(A){let Q=x9(A);if(Q)return Q}return h.context.active()}function T0Q(A,Q){return $0Q(h.context.active(),A,Q)}function KYA(A,Q){let B=x9(Q),I=B&&h.trace.getSpan(B),C=I?EY(I):qJ(Q);return[I?NQ(I):YE(A,Q),C]}function zYA(A){return A!==void 0?(Q)=>{return WYA(A,Q)}:(Q)=>Q()}function P0Q(A){let Q=kB.suppressTracing(h.context.active());return h.context.with(Q,A)}function VYA(A){A.on("preprocessEvent",(Q)=>{let B=CYA();if(!B||Q.type==="transaction")return;Q.contexts={trace:EY(B),...Q.contexts};let I=JQ(B);return Q.sdkProcessingMetadata={dynamicSamplingContext:NQ(I),...Q.sdkProcessingMetadata},Q})}function k0Q({span:A,scope:Q,client:B,propagateTraceparent:I}={}){let C=(Q&&x9(Q))??eB.context.active();if(A){let{scope:D}=RC(A);C=D&&x9(D)||eB.trace.setSpan(eB.context.active(),A)}let{traceId:E,spanId:Y,sampled:J,dynamicSamplingContext:F}=FYA(C,{scope:Q,client:B}),G={"sentry-trace":IY(E,Y,J),baggage:OJ(F)};if(I)G.traceparent=CY(E,Y,J);return G}function $YA(){function A(){let J=eB.context.active(),F=RD(J);if(F)return F;return{scope:hG(),isolationScope:UI()}}function Q(J){let F=eB.context.active();return eB.context.with(F,()=>{return J(E())})}function B(J,F){let G=x9(J)||eB.context.active();return eB.context.with(G.setValue(cL,J),()=>{return F(J)})}function I(J){let F=eB.context.active();return eB.context.with(F.setValue(dL,!0),()=>{return J(Y())})}function C(J,F){let G=eB.context.active();return eB.context.with(G.setValue(uL,J),()=>{return F(Y())})}function E(){return A().scope}function Y(){return A().isolationScope}M$({withScope:Q,withSetScope:B,withSetIsolationScope:C,withIsolationScope:I,getCurrentScope:E,getIsolationScope:Y,startSpan:N0Q,startSpanManual:j0Q,startInactiveSpan:R0Q,getActiveSpan:CYA,suppressTracing:P0Q,getTraceData:k0Q,continueTrace:T0Q,withActiveSpan:WYA})}function LYA(A){class Q extends A{constructor(...B){super(...B);Q5("SentryContextManager")}with(B,I,C,...E){let Y=RD(B),J=Y?.scope||MA(),F=Y?.isolationScope||ZA(),G=B.getValue(dL)===!0,D=B.getValue(cL),Z=B.getValue(uL),W=D||J.clone(),X=Z||(G?F.clone():F),z=AYA(B,{scope:W,isolationScope:X}).deleteValue(dL).deleteValue(cL).deleteValue(uL);return U0Q(W,z),super.with(z,I,C,...E)}getAsyncLocalStorageLookup(){return{asyncLocalStorage:this._asyncLocalStorage,contextSymbol:rL}}}return Q}function S0Q(A){let Q=new Map;for(let B of A)y0Q(Q,B);return Array.from(Q,function([B,I]){return I})}function HYA(A){return A.attributes[iL]!==!0?nL(A):void 0}function y0Q(A,Q){let B=Q.spanContext().spanId,I=HYA(Q);if(!I){lL(A,{id:B,span:Q,children:[]});return}let C=_0Q(A,I),E=lL(A,{id:B,span:Q,parentNode:C,children:[]});C.children.push(E)}function _0Q(A,Q){let B=A.get(Q);if(B)return B;return lL(A,{id:Q,children:[]})}function lL(A,Q){let B=A.get(Q.id);if(B?.span)return B;if(B&&!B.span)return B.span=Q.span,B.parentNode=Q.parentNode,B;return A.set(Q.id,Q),Q}var MYA={"1":"cancelled","2":"unknown_error","3":"invalid_argument","4":"deadline_exceeded","5":"not_found","6":"already_exists","7":"permission_denied","8":"resource_exhausted","9":"failed_precondition","10":"aborted","11":"out_of_range","12":"unimplemented","13":"internal_error","14":"unavailable","15":"data_loss","16":"unauthenticated"},f0Q=(A)=>{return Object.values(MYA).includes(A)};function NYA(A){let Q=aL(A)?A.attributes:{},B=G0Q(A)?A.status:void 0;if(B){if(B.code===h.SpanStatusCode.OK)return{code:_G};else if(B.code===h.SpanStatusCode.ERROR){if(typeof B.message>"u"){let C=a0A(Q);if(C)return C}if(B.message&&f0Q(B.message))return{code:UA,message:B.message};else return{code:UA,message:"internal_error"}}}let I=a0A(Q);if(I)return I;if(B?.code===h.SpanStatusCode.UNSET)return{code:_G};else return{code:UA,message:"unknown_error"}}function a0A(A){let Q=A[WA.ATTR_HTTP_RESPONSE_STATUS_CODE]||A[WA.SEMATTRS_HTTP_STATUS_CODE],B=A[WA.SEMATTRS_RPC_GRPC_STATUS_CODE],I=typeof Q==="number"?Q:typeof Q==="string"?parseInt(Q):void 0;if(typeof I==="number")return CE(I);if(typeof B==="string")return{code:UA,message:MYA[B]||"unknown_error"};return}var o0A=1000,s0A=300;class jYA{constructor(A){this._finishedSpanBucketSize=A?.timeout||s0A,this._finishedSpanBuckets=Array(this._finishedSpanBucketSize).fill(void 0),this._lastCleanupTimestampInS=Math.floor(cI()/1000),this._spansToBucketEntry=new WeakMap,this._sentSpans=new Map,this._debouncedFlush=X3(this.flush.bind(this),1,{maxWait:100})}export(A){let Q=Math.floor(cI()/1000);if(this._lastCleanupTimestampInS!==Q){let E=0;if(this._finishedSpanBuckets.forEach((Y,J)=>{if(Y&&Y.timestampInS<=Q-this._finishedSpanBucketSize)E+=Y.spans.size,this._finishedSpanBuckets[J]=void 0}),E>0)NY&&L.log(`SpanExporter dropped ${E} spans because they were pending for more than ${this._finishedSpanBucketSize} seconds.`);this._lastCleanupTimestampInS=Q}let B=Q%this._finishedSpanBucketSize,I=this._finishedSpanBuckets[B]||{timestampInS:Q,spans:new Set};this._finishedSpanBuckets[B]=I,I.spans.add(A),this._spansToBucketEntry.set(A,I);let C=HYA(A);if(!C||this._sentSpans.has(C))this._debouncedFlush()}flush(){let A=this._finishedSpanBuckets.flatMap((E)=>E?Array.from(E.spans):[]);this._flushSentSpanCache();let Q=this._maybeSend(A),B=Q.size,I=A.length-B;NY&&L.log(`SpanExporter exported ${B} spans, ${I} spans are waiting for their parent spans to finish`);let C=cI()+s0A*1000;for(let E of Q){this._sentSpans.set(E.spanContext().spanId,C);let Y=this._spansToBucketEntry.get(E);if(Y)Y.spans.delete(E)}this._debouncedFlush.cancel()}clear(){this._finishedSpanBuckets=this._finishedSpanBuckets.fill(void 0),this._sentSpans.clear(),this._debouncedFlush.cancel()}_maybeSend(A){let Q=S0Q(A),B=new Set,I=this._getCompletedRootNodes(Q);for(let C of I){let E=C.span;B.add(E);let Y=h0Q(E);if(C.parentNode&&this._sentSpans.has(C.parentNode.id)){let G=Y.contexts?.trace?.data;if(G)G["sentry.parent_span_already_sent"]=!0}let J=Y.spans||[];for(let G of C.children)pL(G,J,B);Y.spans=J.length>o0A?J.sort((G,D)=>G.start_timestamp-D.start_timestamp).slice(0,o0A):J;let F=yJ(E.events);if(F)Y.measurements=F;A9(Y)}return B}_flushSentSpanCache(){let A=cI();for(let[Q,B]of this._sentSpans.entries())if(B<=A)this._sentSpans.delete(Q)}_nodeIsCompletedRootNodeOrHasSentParent(A){return!!A.span&&(!A.parentNode||this._sentSpans.has(A.parentNode.id))}_getCompletedRootNodes(A){return A.filter((Q)=>this._nodeIsCompletedRootNodeOrHasSentParent(Q))}}function g0Q(A){let Q=A.attributes,B=Q[n],I=Q[e],C=Q[IQ];return{origin:B,op:I,source:C}}function h0Q(A){let{op:Q,description:B,data:I,origin:C="manual",source:E}=RYA(A),Y=RC(A),J=A.attributes[uI],F={[IQ]:E,[uI]:J,[e]:Q,[n]:C,...I,...qYA(A.attributes)},{links:G}=A,{traceId:D,spanId:Z}=A.spanContext(),W=nL(A),X=NYA(A),w={parent_span_id:W,span_id:Z,trace_id:D,data:F,origin:C,op:Q,status:kJ(X),links:PJ(G)},K=F[WA.ATTR_HTTP_RESPONSE_STATUS_CODE],z=typeof K==="number"?{response:{status_code:K}}:void 0;return{contexts:{trace:w,otel:{resource:A.resource.attributes},...z},spans:[],start_timestamp:oB(A.startTime),timestamp:oB(A.endTime),transaction:B,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:Y.scope,capturedSpanIsolationScope:Y.isolationScope,sampleRate:J,dynamicSamplingContext:NQ(A)},...E&&{transaction_info:{source:E}}}}function pL(A,Q,B){let I=A.span;if(I)B.add(I);if(!I){A.children.forEach((j)=>{pL(j,Q,B)});return}let E=I.spanContext().spanId,Y=I.spanContext().traceId,J=nL(I),{attributes:F,startTime:G,endTime:D,links:Z}=I,{op:W,description:X,data:w,origin:K="manual"}=RYA(I),z={[n]:K,[e]:W,...qYA(F),...w},$=NYA(I),N={span_id:E,trace_id:Y,data:z,description:X,parent_span_id:J,start_timestamp:oB(G),timestamp:oB(D)||void 0,status:kJ($),op:W,origin:K,measurements:yJ(I.events),links:PJ(Z)};Q.push(N),A.children.forEach((j)=>{pL(j,Q,B)})}function RYA(A){let{op:Q,source:B,origin:I}=g0Q(A),{op:C,description:E,source:Y,data:J}=BYA(A),F=Q||C,G=B||Y,D={...J,...x0Q(A)};return{op:F,description:E,source:G,origin:I,data:D}}function qYA(A){let Q={...A};return delete Q[uI],delete Q[iL],delete Q[lI],Q}function x0Q(A){let Q=A.attributes,B={};if(A.kind!==h.SpanKind.INTERNAL)B["otel.kind"]=h.SpanKind[A.kind];let I=Q[WA.SEMATTRS_HTTP_STATUS_CODE];if(I)B[WA.ATTR_HTTP_RESPONSE_STATUS_CODE]=I;let C=D0Q(A);if(C.url)B.url=C.url;if(C["http.query"])B["http.query"]=C["http.query"].slice(1);if(C["http.fragment"])B["http.fragment"]=C["http.fragment"].slice(1);return B}function v0Q(A,Q){let B=h.trace.getSpan(Q),I=RD(Q);if(B&&!B.spanContext().isRemote)cG(B,A);if(B?.spanContext().isRemote)A.setAttribute(iL,!0);if(Q===h.ROOT_CONTEXT)I={scope:hG(),isolationScope:UI()};if(I)_1(A,I.scope,I.isolationScope);c1(A),u()?.emit("spanStart",A)}function b0Q(A){u1(A),u()?.emit("spanEnd",A)}class eL{constructor(A){Q5("SentrySpanProcessor"),this._exporter=new jYA(A)}async forceFlush(){this._exporter.flush()}async shutdown(){this._exporter.clear()}onStart(A,Q){v0Q(A,Q)}onEnd(A){b0Q(A),this._exporter.export(A)}}class AH{constructor(A){this._client=A,Q5("SentrySampler")}shouldSample(A,Q,B,I,C,E){let Y=this._client.getOptions(),J=c0Q(A),F=J?.spanContext();if(!MQ(Y))return MD({decision:void 0,context:A,spanAttributes:C});let G=C[WA.SEMATTRS_HTTP_METHOD]||C[WA.ATTR_HTTP_REQUEST_METHOD];if(I===h.SpanKind.CLIENT&&G&&(!J||F?.isRemote))return MD({decision:void 0,context:A,spanAttributes:C});let D=J?m0Q(J,Q,B):void 0;if(!(!J||F?.isRemote))return MD({decision:D?MY.SamplingDecision.RECORD_AND_SAMPLED:MY.SamplingDecision.NOT_RECORD,context:A,spanAttributes:C});let{description:W,data:X,op:w}=QYA(B,C,I),K={...X,...C};if(w)K[e]=w;let z={decision:!0};if(this._client.emit("beforeSampling",{spanAttributes:K,spanName:W,parentSampled:D,parentContext:F},z),!z.decision)return MD({decision:void 0,context:A,spanAttributes:C});let{isolationScope:$}=RD(A)??{},N=F?.traceState?F.traceState.get(oL):void 0,j=N?iE(N):void 0,O=wI(j?.sample_rand)??oQ(),[k,g,x]=l1(Y,{name:W,attributes:K,normalizedRequest:$?.getScopeData().sdkProcessingMetadata.normalizedRequest,parentSampled:D,parentSampleRate:wI(j?.sample_rate)},O),dA=`${G}`.toUpperCase();if(dA==="OPTIONS"||dA==="HEAD")return NY&&L.log(`[Tracing] Not sampling span because HTTP method is '${dA}' for ${B}`),MD({decision:MY.SamplingDecision.NOT_RECORD,context:A,spanAttributes:C,sampleRand:O,downstreamTraceSampleRate:0});if(!k&&D===void 0)NY&&L.log("[Tracing] Discarding root span because its trace was not chosen to be sampled."),this._client.recordDroppedEvent("sample_rate","transaction");return{...MD({decision:k?MY.SamplingDecision.RECORD_AND_SAMPLED:MY.SamplingDecision.NOT_RECORD,context:A,spanAttributes:C,sampleRand:O,downstreamTraceSampleRate:x?g:void 0}),attributes:{[uI]:x?g:void 0}}}toString(){return"SentrySampler"}}function m0Q(A,Q,B){let I=A.spanContext();if(h.isSpanContextValid(I)&&I.traceId===Q){if(I.isRemote){let E=ND(A.spanContext());return NY&&L.log(`[Tracing] Inheriting remote parent's sampled decision for ${B}: ${E}`),E}let C=ND(I);return NY&&L.log(`[Tracing] Inheriting parent's sampled decision for ${B}: ${C}`),C}return}function MD({decision:A,context:Q,spanAttributes:B,sampleRand:I,downstreamTraceSampleRate:C}){let E=d0Q(Q,B);if(C!==void 0)E=E.set(X0Q,`${C}`);if(I!==void 0)E=E.set(W0Q,`${I}`);if(A==null)return{decision:MY.SamplingDecision.NOT_RECORD,traceState:E};if(A===MY.SamplingDecision.NOT_RECORD)return{decision:A,traceState:E.set(sL,"1")};return{decision:A,traceState:E}}function d0Q(A,Q){let C=h.trace.getSpan(A)?.spanContext()?.traceState||new kB.TraceState,E=Q[WA.SEMATTRS_HTTP_URL]||Q[WA.ATTR_URL_FULL];if(E&&typeof E==="string")C=C.set(t0A,E);return C}function c0Q(A){let Q=h.trace.getSpan(A);return Q&&h.isSpanContextValid(Q.spanContext())?Q:void 0}var B5=LYA(OYA.AsyncLocalStorageContextManager);var v9=f(P(),1);function QH(){v9.diag.disable(),v9.diag.setLogger({error:L.error,warn:L.warn,info:L.log,debug:L.log,verbose:L.log},v9.DiagLogLevel.DEBUG)}var BH=f(JA(),1),b9={};function b(A,Q,B){if(B)return l0Q(A,Q,B);return u0Q(A,Q)}function u0Q(A,Q){return Object.assign((B)=>{let I=b9[A];if(I){if(B)I.setConfig(B);return I}let C=Q(B);return b9[A]=C,BH.registerInstrumentations({instrumentations:[C]}),C},{id:A})}function l0Q(A,Q,B){return Object.assign((I)=>{let C=B(I),E=b9[A];if(E)return E.setConfig(C),E;let Y=new Q(C);return b9[A]=Y,BH.registerInstrumentations({instrumentations:[Y]}),Y},{id:A})}function m9(A){let Q=!1,B=[];if(!p0Q(A))Q=!0;else{let C=A._wrap;A._wrap=(...E)=>{return Q=!0,B.forEach((Y)=>Y()),B=[],C(...E)}}return(C)=>{if(Q)C();else B.push(C)}}function p0Q(A){return typeof A._wrap==="function"}import*as IH from"node:diagnostics_channel";var i0Q="ChildProcess",CH=S((A={})=>{return{name:i0Q,setup(){IH.channel("child_process").subscribe((Q)=>{if(Q&&typeof Q==="object"&&"process"in Q)n0Q(Q.process,A)}),IH.channel("worker_threads").subscribe((Q)=>{if(Q&&typeof Q==="object"&&"worker"in Q)a0Q(Q.worker,A)})}}});function n0Q(A,Q){let B=!1,I;A.on("spawn",()=>{if(A.spawnfile==="/usr/bin/sw_vers"){B=!0;return}if(I={spawnfile:A.spawnfile},Q.includeChildProcessArgs)I.spawnargs=A.spawnargs}).on("exit",(C)=>{if(!B){if(B=!0,C!==null&&C!==0)VI({category:"child_process",message:`Child process exited with code '${C}'`,level:C===0?"info":"warning",data:I})}}).on("error",(C)=>{if(!B)B=!0,VI({category:"child_process",message:`Child process errored with '${C.message}'`,level:"error",data:I})})}function a0Q(A,Q){let B;A.on("online",()=>{B=A.threadId}).on("error",(I)=>{if(Q.captureWorkerErrors!==!1)IA(I,{mechanism:{type:"auto.child_process.worker_thread",handled:!1,data:{threadId:String(B)}}});else VI({category:"worker_thread",message:`Worker thread errored with '${I.message}'`,level:"error",data:{threadId:B}})})}import{execFile as o0Q}from"node:child_process";import{readFile as s0Q,readdir as r0Q}from"node:fs";import*as pQ from"node:os";import{join as t0Q}from"node:path";import{promisify as PYA}from"node:util";var e0Q=PYA(s0Q),AYQ=PYA(r0Q),QYQ="Context",BYQ=(A={})=>{let Q,B={app:!0,os:!0,device:!0,culture:!0,cloudResource:!0,...A};async function I(E){if(Q===void 0)Q=C();let Y=IYQ(await Q);return E.contexts={...E.contexts,app:{...Y.app,...E.contexts?.app},os:{...Y.os,...E.contexts?.os},device:{...Y.device,...E.contexts?.device},culture:{...Y.culture,...E.contexts?.culture},cloud_resource:{...Y.cloud_resource,...E.contexts?.cloud_resource}},E}async function C(){let E={};if(B.os)E.os=await CYQ();if(B.app)E.app=YYQ();if(B.device)E.device=JYQ(B.device);if(B.culture){let Y=EYQ();if(Y)E.culture=Y}if(B.cloudResource)E.cloud_resource=XYQ();return E}return{name:QYQ,processEvent(E){return I(E)}}},EH=S(BYQ);function IYQ(A){if(A.app?.app_memory)A.app.app_memory=process.memoryUsage().rss;if(A.app?.free_memory&&typeof process.availableMemory==="function"){let Q=process.availableMemory?.();if(Q!=null)A.app.free_memory=Q}if(A.device?.free_memory)A.device.free_memory=pQ.freemem();return A}async function CYQ(){let A=pQ.platform();switch(A){case"darwin":return ZYQ();case"linux":return WYQ();default:return{name:FYQ[A]||A,version:pQ.release()}}}function EYQ(){try{if(typeof process.versions.icu!=="string")return;let A=new Date(900000000);if(new Intl.DateTimeFormat("es",{month:"long"}).format(A)==="enero"){let B=Intl.DateTimeFormat().resolvedOptions();return{locale:B.locale,timezone:B.timeZone}}}catch{}return}function YYQ(){let A=process.memoryUsage().rss,B={app_start_time:new Date(Date.now()-process.uptime()*1000).toISOString(),app_memory:A};if(typeof process.availableMemory==="function"){let I=process.availableMemory?.();if(I!=null)B.free_memory=I}return B}function JYQ(A){let Q={},B;try{B=pQ.uptime()}catch{}if(typeof B==="number")Q.boot_time=new Date(Date.now()-B*1000).toISOString();if(Q.arch=pQ.arch(),A===!0||A.memory)Q.memory_size=pQ.totalmem(),Q.free_memory=pQ.freemem();if(A===!0||A.cpu){let I=pQ.cpus(),C=I?.[0];if(C)Q.processor_count=I.length,Q.cpu_description=C.model,Q.processor_frequency=C.speed}return Q}var FYQ={aix:"IBM AIX",freebsd:"FreeBSD",openbsd:"OpenBSD",sunos:"SunOS",win32:"Windows",ohos:"OpenHarmony",android:"Android"},GYQ=[{name:"fedora-release",distros:["Fedora"]},{name:"redhat-release",distros:["Red Hat Linux","Centos"]},{name:"redhat_version",distros:["Red Hat Linux"]},{name:"SuSE-release",distros:["SUSE Linux"]},{name:"lsb-release",distros:["Ubuntu Linux","Arch Linux"]},{name:"debian_version",distros:["Debian"]},{name:"debian_release",distros:["Debian"]},{name:"arch-release",distros:["Arch Linux"]},{name:"gentoo-release",distros:["Gentoo Linux"]},{name:"novell-release",distros:["SUSE Linux"]},{name:"alpine-release",distros:["Alpine Linux"]}],DYQ={alpine:(A)=>A,arch:(A)=>ZE(/distrib_release=(.*)/,A),centos:(A)=>ZE(/release ([^ ]+)/,A),debian:(A)=>A,fedora:(A)=>ZE(/release (..)/,A),mint:(A)=>ZE(/distrib_release=(.*)/,A),red:(A)=>ZE(/release ([^ ]+)/,A),suse:(A)=>ZE(/VERSION = (.*)\n/,A),ubuntu:(A)=>ZE(/distrib_release=(.*)/,A)};function ZE(A,Q){let B=A.exec(Q);return B?B[1]:void 0}async function ZYQ(){let A={kernel_version:pQ.release(),name:"Mac OS X",version:`10.${Number(pQ.release().split(".")[0])-4}`};try{let Q=await new Promise((B,I)=>{o0Q("/usr/bin/sw_vers",(C,E)=>{if(C){I(C);return}B(E)})});A.name=ZE(/^ProductName:\s+(.*)$/m,Q),A.version=ZE(/^ProductVersion:\s+(.*)$/m,Q),A.build=ZE(/^BuildVersion:\s+(.*)$/m,Q)}catch{}return A}function TYA(A){return A.split(" ")[0].toLowerCase()}async function WYQ(){let A={kernel_version:pQ.release(),name:"Linux"};try{let Q=await AYQ("/etc"),B=GYQ.find((J)=>Q.includes(J.name));if(!B)return A;let I=t0Q("/etc",B.name),C=(await e0Q(I,{encoding:"utf-8"})).toLowerCase(),{distros:E}=B;A.name=E.find((J)=>C.indexOf(TYA(J))>=0)||E[0];let Y=TYA(A.name);A.version=DYQ[Y]?.(C)}catch{}return A}function XYQ(){if(process.env.VERCEL)return{"cloud.provider":"vercel","cloud.region":process.env.VERCEL_REGION};else if(process.env.AWS_REGION)return{"cloud.provider":"aws","cloud.region":process.env.AWS_REGION,"cloud.platform":process.env.AWS_EXECUTION_ENV};else if(process.env.GCP_PROJECT)return{"cloud.provider":"gcp"};else if(process.env.ALIYUN_REGION_ID)return{"cloud.provider":"alibaba_cloud","cloud.region":process.env.ALIYUN_REGION_ID};else if(process.env.WEBSITE_SITE_NAME&&process.env.REGION_NAME)return{"cloud.provider":"azure","cloud.region":process.env.REGION_NAME};else if(process.env.IBM_CLOUD_REGION)return{"cloud.provider":"ibm_cloud","cloud.region":process.env.IBM_CLOUD_REGION};else if(process.env.TENCENTCLOUD_REGION)return{"cloud.provider":"tencent_cloud","cloud.region":process.env.TENCENTCLOUD_REGION,"cloud.account.id":process.env.TENCENTCLOUD_APPID,"cloud.availability_zone":process.env.TENCENTCLOUD_ZONE};else if(process.env.NETLIFY)return{"cloud.provider":"netlify"};else if(process.env.FLY_REGION)return{"cloud.provider":"fly.io","cloud.region":process.env.FLY_REGION};else if(process.env.DYNO)return{"cloud.provider":"heroku"};else return}import{createReadStream as UYQ}from"node:fs";import{createInterface as wYQ}from"node:readline";var YH=new MI(10),yYA=new MI(20),KYQ=7,zYQ="ContextLines",VYQ=1000,$YQ=1e4;function LYQ(A,Q,B){let I=A.get(Q);if(I===void 0)return A.set(Q,B),B;return I}function HYQ(A){if(A.startsWith("node:"))return!0;if(A.endsWith(".min.js"))return!0;if(A.endsWith(".min.cjs"))return!0;if(A.endsWith(".min.mjs"))return!0;if(A.startsWith("data:"))return!0;return!1}function MYQ(A){if(A.lineno!==void 0&&A.lineno>$YQ)return!0;if(A.colno!==void 0&&A.colno>VYQ)return!0;return!1}function NYQ(A,Q){let B=YH.get(A);if(B===void 0)return!1;for(let I=Q[0];I<=Q[1];I++)if(B[I]===void 0)return!1;return!0}function jYQ(A,Q){if(!A.length)return[];let B=0,I=A[0];if(typeof I!=="number")return[];let C=SYA(I,Q),E=[];while(!0){if(B===A.length-1){E.push(C);break}let Y=A[B+1];if(typeof Y!=="number")break;if(Y<=C[1])C[1]=Y+Q;else E.push(C),C=SYA(Y,Q);B++}return E}function RYQ(A,Q,B){return new Promise((I,C)=>{let E=UYQ(A),Y=wYQ({input:E});function J(){E.destroy(),I()}let F=0,G=0,D=Q[G];if(D===void 0){J();return}let Z=D[0],W=D[1];function X(w){yYA.set(A,1),GA&&L.error(`Failed to read file: ${A}. Error: ${w}`),Y.close(),Y.removeAllListeners(),J()}E.on("error",X),Y.on("error",X),Y.on("close",J),Y.on("line",(w)=>{if(F++,F=W){if(G===Q.length-1){Y.close(),Y.removeAllListeners();return}G++;let K=Q[G];if(K===void 0){Y.close(),Y.removeAllListeners();return}Z=K[0],W=K[1]}})})}async function qYQ(A,Q){let B={};if(Q>0&&A.exception?.values)for(let E of A.exception.values){if(!E.stacktrace?.frames?.length)continue;for(let Y=E.stacktrace.frames.length-1;Y>=0;Y--){let J=E.stacktrace.frames[Y],F=J?.filename;if(!J||typeof F!=="string"||typeof J.lineno!=="number"||HYQ(F)||MYQ(J))continue;if(!B[F])B[F]=[];B[F].push(J.lineno)}}let I=Object.keys(B);if(I.length==0)return A;let C=[];for(let E of I){if(yYA.get(E))continue;let Y=B[E];if(!Y)continue;Y.sort((G,D)=>G-D);let J=jYQ(Y,Q);if(J.every((G)=>NYQ(E,G)))continue;let F=LYQ(YH,E,{});C.push(RYQ(E,J,F))}if(await Promise.all(C).catch(()=>{GA&&L.log("Failed to read one or more source files and resolve context lines")}),Q>0&&A.exception?.values){for(let E of A.exception.values)if(E.stacktrace?.frames&&E.stacktrace.frames.length>0)OYQ(E.stacktrace.frames,Q,YH)}return A}function OYQ(A,Q,B){for(let I of A)if(I.filename&&I.context_line===void 0&&typeof I.lineno==="number"){let C=B.get(I.filename);if(C===void 0)continue;TYQ(I.lineno,I,Q,C)}}function kYA(A){delete A.pre_context,delete A.context_line,delete A.post_context}function TYQ(A,Q,B,I){if(Q.lineno===void 0||I===void 0){GA&&L.error("Cannot resolve context for frame with no lineno or file contents");return}Q.pre_context=[];for(let E=_YA(A,B);E{let Q=A.frameContextLines!==void 0?A.frameContextLines:KYQ;return{name:zYQ,processEvent(B){return qYQ(B,Q)}}},JH=S(PYQ);var gYA="Http",kYQ=b(`${gYA}.sentry`,(A)=>{return new UD(A)}),hYA=S((A={})=>{let Q={sessions:A.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:A.sessionFlushingDelayMS,ignoreRequestBody:A.ignoreIncomingRequestBody,maxRequestBodySize:A.maxIncomingRequestBodySize},B={ignoreIncomingRequests:A.ignoreIncomingRequests,ignoreStaticAssets:A.ignoreStaticAssets,ignoreStatusCodes:A.dropSpansForIncomingRequestStatusCodes},I={breadcrumbs:A.breadcrumbs,propagateTraceInOutgoingRequests:A.tracePropagation??!0,ignoreOutgoingRequests:A.ignoreOutgoingRequests},C=ZD(Q),E=WD(B),Y=A.spans??!1,J=A.disableIncomingRequestSpans??!1,F=Y&&!J;return{name:gYA,setup(G){if(F)E.setup(G)},setupOnce(){C.setupOnce(),kYQ(I)},processEvent(G){return E.processEvent(G)}}});import{Worker as SYQ}from"node:worker_threads";var I5;async function C5(){if(I5===void 0)try{I5=!!(await import("node:inspector")).url()}catch{I5=!1}return I5}var d9="__SENTRY_ERROR_LOCAL_VARIABLES__";function vYA(A,Q,B){let I=0,C=5,E=0;return setInterval(()=>{if(E===0){if(I>A){if(C*=2,B(C),C>86400)C=86400;E=C}}else if(E-=1,E===0)Q();I=0},1000).unref(),()=>{I+=1}}function xYA(A){return A!==void 0&&(A.length===0||A==="?"||A==="")}function E5(A,Q){return A===Q||`Object.${A}`===Q||A===`Object.${Q}`||xYA(A)&&xYA(Q)}var yYQ="LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ2LjAgKGU1ZmRjOWQpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyBlfWZyb20ibm9kZTppbnNwZWN0b3IvcHJvbWlzZXMiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIHR9ZnJvbSJub2RlOndvcmtlcl90aHJlYWRzIjtjb25zdCBuPWdsb2JhbFRoaXMsaT17fTtjb25zdCBvPSJfX1NFTlRSWV9FUlJPUl9MT0NBTF9WQVJJQUJMRVNfXyI7Y29uc3QgYT10O2Z1bmN0aW9uIHMoLi4uZSl7YS5kZWJ1ZyYmZnVuY3Rpb24oZSl7aWYoISgiY29uc29sZSJpbiBuKSlyZXR1cm4gZSgpO2NvbnN0IHQ9bi5jb25zb2xlLG89e30sYT1PYmplY3Qua2V5cyhpKTthLmZvckVhY2goZT0+e2NvbnN0IG49aVtlXTtvW2VdPXRbZV0sdFtlXT1ufSk7dHJ5e3JldHVybiBlKCl9ZmluYWxseXthLmZvckVhY2goZT0+e3RbZV09b1tlXX0pfX0oKCk9PmNvbnNvbGUubG9nKCJbTG9jYWxWYXJpYWJsZXMgV29ya2VyXSIsLi4uZSkpfWFzeW5jIGZ1bmN0aW9uIGMoZSx0LG4saSl7Y29uc3Qgbz1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pO2lbbl09by5yZXN1bHQuZmlsdGVyKGU9PiJsZW5ndGgiIT09ZS5uYW1lJiYhaXNOYU4ocGFyc2VJbnQoZS5uYW1lLDEwKSkpLnNvcnQoKGUsdCk9PnBhcnNlSW50KGUubmFtZSwxMCktcGFyc2VJbnQodC5uYW1lLDEwKSkubWFwKGU9PmUudmFsdWU/LnZhbHVlKX1hc3luYyBmdW5jdGlvbiByKGUsdCxuLGkpe2NvbnN0IG89YXdhaXQgZS5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLHtvYmplY3RJZDp0LG93blByb3BlcnRpZXM6ITB9KTtpW25dPW8ucmVzdWx0Lm1hcChlPT5bZS5uYW1lLGUudmFsdWU/LnZhbHVlXSkucmVkdWNlKChlLFt0LG5dKT0+KGVbdF09bixlKSx7fSl9ZnVuY3Rpb24gdShlLHQpe2UudmFsdWUmJigidmFsdWUiaW4gZS52YWx1ZT92b2lkIDA9PT1lLnZhbHVlLnZhbHVlfHxudWxsPT09ZS52YWx1ZS52YWx1ZT90W2UubmFtZV09YDwke2UudmFsdWUudmFsdWV9PmA6dFtlLm5hbWVdPWUudmFsdWUudmFsdWU6ImRlc2NyaXB0aW9uImluIGUudmFsdWUmJiJmdW5jdGlvbiIhPT1lLnZhbHVlLnR5cGU/dFtlLm5hbWVdPWA8JHtlLnZhbHVlLmRlc2NyaXB0aW9ufT5gOiJ1bmRlZmluZWQiPT09ZS52YWx1ZS50eXBlJiYodFtlLm5hbWVdPSI8dW5kZWZpbmVkPiIpKX1hc3luYyBmdW5jdGlvbiBsKGUsdCl7Y29uc3Qgbj1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pLGk9e307Zm9yKGNvbnN0IHQgb2Ygbi5yZXN1bHQpaWYodC52YWx1ZT8ub2JqZWN0SWQmJiJBcnJheSI9PT10LnZhbHVlLmNsYXNzTmFtZSl7Y29uc3Qgbj10LnZhbHVlLm9iamVjdElkO2F3YWl0IGMoZSxuLHQubmFtZSxpKX1lbHNlIGlmKHQudmFsdWU/Lm9iamVjdElkJiYiT2JqZWN0Ij09PXQudmFsdWUuY2xhc3NOYW1lKXtjb25zdCBuPXQudmFsdWUub2JqZWN0SWQ7YXdhaXQgcihlLG4sdC5uYW1lLGkpfWVsc2UgdC52YWx1ZSYmdSh0LGkpO3JldHVybiBpfWxldCBmOyhhc3luYyBmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IGU7dC5jb25uZWN0VG9NYWluVGhyZWFkKCkscygiQ29ubmVjdGVkIHRvIG1haW4gdGhyZWFkIik7bGV0IG49ITE7dC5vbigiRGVidWdnZXIucmVzdW1lZCIsKCk9PntuPSExfSksdC5vbigiRGVidWdnZXIucGF1c2VkIixlPT57bj0hMCxhc3luYyBmdW5jdGlvbihlLHtyZWFzb246dCxkYXRhOntvYmplY3RJZDpufSxjYWxsRnJhbWVzOml9KXtpZigiZXhjZXB0aW9uIiE9PXQmJiJwcm9taXNlUmVqZWN0aW9uIiE9PXQpcmV0dXJuO2lmKGY/LigpLG51bGw9PW4pcmV0dXJuO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0e3Njb3BlQ2hhaW46bixmdW5jdGlvbk5hbWU6byx0aGlzOnN9PWlbdF0sYz1uLmZpbmQoZT0+ImxvY2FsIj09PWUudHlwZSkscj0iZ2xvYmFsIiE9PXMuY2xhc3NOYW1lJiZzLmNsYXNzTmFtZT9gJHtzLmNsYXNzTmFtZX0uJHtvfWA6bztpZih2b2lkIDA9PT1jPy5vYmplY3Qub2JqZWN0SWQpYVt0XT17ZnVuY3Rpb246cn07ZWxzZXtjb25zdCBuPWF3YWl0IGwoZSxjLm9iamVjdC5vYmplY3RJZCk7YVt0XT17ZnVuY3Rpb246cix2YXJzOm59fX1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24iLHtmdW5jdGlvbkRlY2xhcmF0aW9uOmBmdW5jdGlvbigpIHsgdGhpcy4ke299ID0gdGhpcy4ke299IHx8ICR7SlNPTi5zdHJpbmdpZnkoYSl9OyB9YCxzaWxlbnQ6ITAsb2JqZWN0SWQ6bn0pLGF3YWl0IGUucG9zdCgiUnVudGltZS5yZWxlYXNlT2JqZWN0Iix7b2JqZWN0SWQ6bn0pfSh0LGUucGFyYW1zKS50aGVuKGFzeW5jKCk9PntuJiZhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpfSxhc3luYyBlPT57biYmYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKX0pfSksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTtjb25zdCBpPSExIT09YS5jYXB0dXJlQWxsRXhjZXB0aW9ucztpZihhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIix7c3RhdGU6aT8iYWxsIjoidW5jYXVnaHQifSksaSl7Y29uc3QgZT1hLm1heEV4Y2VwdGlvbnNQZXJTZWNvbmR8fDUwO2Y9ZnVuY3Rpb24oZSx0LG4pe2xldCBpPTAsbz01LGE9MDtyZXR1cm4gc2V0SW50ZXJ2YWwoKCk9PnswPT09YT9pPmUmJihvKj0yLG4obyksbz44NjQwMCYmKG89ODY0MDApLGE9byk6KGEtPTEsMD09PWEmJnQoKSksaT0wfSwxZTMpLnVucmVmKCksKCk9PntpKz0xfX0oZSxhc3luYygpPT57cygiUmF0ZS1saW1pdCBsaWZ0ZWQuIiksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJhbGwifSl9LGFzeW5jIGU9PntzKGBSYXRlLWxpbWl0IGV4Y2VlZGVkLiBEaXNhYmxpbmcgY2FwdHVyaW5nIG9mIGNhdWdodCBleGNlcHRpb25zIGZvciAke2V9IHNlY29uZHMuYCksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJ1bmNhdWdodCJ9KX0pfX0pKCkuY2F0Y2goZT0+e3MoIkZhaWxlZCB0byBzdGFydCBkZWJ1Z2dlciIsZSl9KSxzZXRJbnRlcnZhbCgoKT0+e30sMWU0KTs=";function bYA(...A){L.log("[LocalVariables]",...A)}var mYA=S((A={})=>{function Q(E,Y){let J=(E.stacktrace?.frames||[]).filter((F)=>F.function!=="new Promise");for(let F=0;F{Y.terminate()}),Y.once("error",(J)=>{bYA("Worker error",J)}),Y.once("exit",(J)=>{bYA("Worker exit",J)}),Y.unref()}return{name:"LocalVariablesAsync",async setup(E){if(!E.getOptions().includeLocalVariables)return;if(await C5()){L.warn("Local variables capture has been disabled because the debugger was already enabled");return}let J={...A,debug:L.isEnabled()};I().then(()=>{try{C(J)}catch(F){L.error("Failed to start worker",F)}},(F)=>{L.error("Failed to start inspector",F)})},processEvent(E,Y){return B(E,Y)}}});function dYA(A){if(A===void 0)return;return A.slice(-10).reduce((Q,B)=>`${Q},${B.function},${B.lineno},${B.colno}`,"")}function _YQ(A,Q){if(Q===void 0)return;return dYA(A(Q,1))}function cYA(A){let Q=[],B=!1;function I(Y){if(Q=[],B)return;B=!0,A(Y)}Q.push(I);function C(Y){Q.push(Y)}function E(Y){let J=Q.pop()||I;try{J(Y)}catch{I(Y)}}return{add:C,next:E}}class FH{constructor(A){this._session=A}static async create(A){if(A)return A;let Q=await import("node:inspector");return new FH(new Q.Session)}configureAndConnect(A,Q){this._session.connect(),this._session.on("Debugger.paused",(B)=>{A(B,()=>{this._session.post("Debugger.resume")})}),this._session.post("Debugger.enable"),this._session.post("Debugger.setPauseOnExceptions",{state:Q?"all":"uncaught"})}setPauseOnExceptions(A){this._session.post("Debugger.setPauseOnExceptions",{state:A?"all":"uncaught"})}getLocalVariables(A,Q){this._getProperties(A,(B)=>{let{add:I,next:C}=cYA(Q);for(let E of B)if(E.value?.objectId&&E.value.className==="Array"){let Y=E.value.objectId;I((J)=>this._unrollArray(Y,E.name,J,C))}else if(E.value?.objectId&&E.value.className==="Object"){let Y=E.value.objectId;I((J)=>this._unrollObject(Y,E.name,J,C))}else if(E.value)I((Y)=>this._unrollOther(E,Y,C));C({})})}_getProperties(A,Q){this._session.post("Runtime.getProperties",{objectId:A,ownProperties:!0},(B,I)=>{if(B)Q([]);else Q(I.result)})}_unrollArray(A,Q,B,I){this._getProperties(A,(C)=>{B[Q]=C.filter((E)=>E.name!=="length"&&!isNaN(parseInt(E.name,10))).sort((E,Y)=>parseInt(E.name,10)-parseInt(Y.name,10)).map((E)=>E.value?.value),I(B)})}_unrollObject(A,Q,B,I){this._getProperties(A,(C)=>{B[Q]=C.map((E)=>[E.name,E.value?.value]).reduce((E,[Y,J])=>{return E[Y]=J,E},{}),I(B)})}_unrollOther(A,Q,B){if(A.value){if("value"in A.value)if(A.value.value===void 0||A.value.value===null)Q[A.name]=`<${A.value.value}>`;else Q[A.name]=A.value.value;else if("description"in A.value&&A.value.type!=="function")Q[A.name]=`<${A.value.description}>`;else if(A.value.type==="undefined")Q[A.name]=""}B(Q)}}var fYQ="LocalVariables",gYQ=(A={},Q)=>{let B=new MI(20),I,C=!1;function E(G){let D=dYA(G.stacktrace?.frames);if(D===void 0)return;let Z=B.remove(D);if(Z===void 0)return;let W=(G.stacktrace?.frames||[]).filter((X)=>X.function!=="new Promise");for(let X=0;X= v18.");return}if(await C5()){L.warn("Local variables capture has been disabled because the debugger was already enabled");return}try{let W=await FH.create(Q),X=(K,{params:{reason:z,data:$,callFrames:N}},j)=>{if(z!=="exception"&&z!=="promiseRejection"){j();return}I?.();let O=_YQ(K,$.description);if(O==null){j();return}let{add:k,next:g}=cYA((x)=>{B.set(O,x),j()});for(let x=0;xtA.type==="local"),ZQ=qQ.className==="global"||!qQ.className?cA:`${qQ.className}.${cA}`;if(IB?.object.objectId===void 0)k((tA)=>{tA[x]={function:ZQ},g(tA)});else{let tA=IB.object.objectId;k((mY)=>W.getLocalVariables(tA,(ZC)=>{mY[x]={function:ZQ,vars:ZC},g(mY)}))}}g([])},w=A.captureAllExceptions!==!1;if(W.configureAndConnect((K,z)=>X(D.stackParser,K,z),w),w){let K=A.maxExceptionsPerSecond||50;I=vYA(K,()=>{L.log("Local variables rate-limit lifted."),W.setPauseOnExceptions(!0)},(z)=>{L.log(`Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${z} seconds.`),W.setPauseOnExceptions(!1)})}C=!0}catch(W){L.log("The `LocalVariables` integration failed to start.",W)}}return{name:fYQ,setupOnce(){J=F()},async processEvent(G){if(await J,C)return Y(G);return G},_getCachedFramesCount(){return B.size},_getFirstCachedFrame(){return B.values()[0]}}},uYA=S(gYQ);var GH=(A={})=>{return aI.major<19?uYA(A):mYA(A)};import{existsSync as hYQ,readFileSync as aYA}from"node:fs";import{dirname as xYQ,join as oYA}from"node:path";function c9(){try{return typeof pYA<"u"&&typeof ilQ<"u"}catch{return!1}}var lYA;function iYA(){if(c9())return!1;if(A0>=21||A0===20&&T9>=6||A0===18&&T9>=19)return!0;if(!lYA)lYA=!0,HQ(()=>{console.warn(`[Sentry] You are using Node.js v${process.versions.node} in ESM mode ("import syntax"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS ("require() syntax"), or upgrade your Node.js version.`)});return!1}var DH,vYQ="Modules",bYQ=typeof __SENTRY_SERVER_MODULES__>"u"?{}:__SENTRY_SERVER_MODULES__,mYQ=()=>{return{name:vYQ,processEvent(A){return A.modules={...A.modules,...nYA()},A},getModules:nYA}},ZH=mYQ;function dYQ(){try{return M.cache?Object.keys(M.cache):[]}catch{return[]}}function cYQ(){return{...bYQ,...pYQ(),...c9()?uYQ():{}}}function uYQ(){let A=M.main?.paths||[],Q=dYQ(),B={},I=new Set;return Q.forEach((C)=>{let E=C,Y=()=>{let J=E;if(E=xYQ(J),!E||J===E||I.has(J))return;if(A.indexOf(E)<0)return Y();let F=oYA(J,"package.json");if(I.add(J),!hYQ(F))return Y();try{let G=JSON.parse(aYA(F,"utf8"));B[G.name]=G.version}catch{}};Y()}),B}function nYA(){if(!DH)DH=cYQ();return DH}function lYQ(){try{let A=oYA(process.cwd(),"package.json");return JSON.parse(aYA(A,"utf8"))}catch{return{}}}function pYQ(){let A=lYQ();return{...A.dependencies,...A.devDependencies}}var iYQ="NodeFetch",nYQ=b(`${iYQ}.sentry`,KD,(A)=>{return A}),aYQ=(A={})=>{return{name:"NodeFetch",setupOnce(){nYQ(A)}}},sYA=S(aYQ);import{isMainThread as sYQ}from"worker_threads";var oYQ=2000;function u9(A){HQ(()=>{console.error(A)});let Q=u();if(Q===void 0){GA&&L.warn("No NodeClient was defined, we are exiting the process now."),global.process.exit(1);return}let B=Q.getOptions(),I=B?.shutdownTimeout&&B.shutdownTimeout>0?B.shutdownTimeout:oYQ;Q.close(I).then((C)=>{if(!C)GA&&L.warn("We reached the timeout for emptying the request buffer, still exiting now!");global.process.exit(1)},(C)=>{GA&&L.error(C)})}var rYQ="OnUncaughtException",WH=S((A={})=>{let Q={exitEvenIfOtherHandlersAreRegistered:!1,...A};return{name:rYQ,setup(B){if(!sYQ)return;global.process.on("uncaughtException",tYQ(B,Q))}}});function tYQ(A,Q){let I=!1,C=!1,E=!1,Y,J=A.getOptions();return Object.assign((F)=>{let G=u9;if(Q.onFatalError)G=Q.onFatalError;else if(J.onFatalError)G=J.onFatalError;let Z=global.process.listeners("uncaughtException").filter((X)=>{return X.name!=="domainUncaughtExceptionClear"&&X.tag!=="sentry_tracingErrorCallback"&&X._errorHandler!==!0}).length===0,W=Q.exitEvenIfOtherHandlersAreRegistered||Z;if(!I){if(Y=F,I=!0,u()===A)IA(F,{originalException:F,captureContext:{level:"fatal"},mechanism:{handled:!1,type:"auto.node.onuncaughtexception"}});if(!E&&W)E=!0,G(F)}else if(W){if(E)GA&&L.warn("uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown"),u9(F);else if(!C)C=!0,setTimeout(()=>{if(!E)E=!0,G(Y,F)},2000)}},{_errorHandler:!0})}var eYQ="OnUnhandledRejection",AJQ=[{name:"AI_NoOutputGeneratedError"},{name:"AbortError"}],QJQ=(A={})=>{let Q={mode:A.mode??"warn",ignore:[...AJQ,...A.ignore??[]]};return{name:eYQ,setup(B){global.process.on("unhandledRejection",EJQ(B,Q))}}},XH=S(QJQ);function BJQ(A){if(typeof A!=="object"||A===null)return{name:"",message:String(A??"")};let Q=A,B=typeof Q.name==="string"?Q.name:"",I=typeof Q.message==="string"?Q.message:String(A);return{name:B,message:I}}function IJQ(A,Q){let B=A.name===void 0||cE(Q.name,A.name,!0),I=A.message===void 0||cE(Q.message,A.message);return B&&I}function CJQ(A,Q){let B=BJQ(Q);return A.some((I)=>IJQ(I,B))}function EJQ(A,Q){return function(I,C){if(u()!==A)return;if(CJQ(Q.ignore??[],I))return;let E=Q.mode==="strict"?"fatal":"error",Y=I&&typeof I==="object"?I._sentry_active_span:void 0;(Y?(F)=>_J(Y,F):(F)=>F())(()=>{IA(I,{originalException:C,captureContext:{extra:{unhandledPromiseRejection:!0},level:E},mechanism:{handled:!1,type:"auto.node.onunhandledrejection"}})}),YJQ(I,Q.mode)}}function YJQ(A,Q){let B="This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:";if(Q==="warn")HQ(()=>{console.warn(B),console.error(A&&typeof A==="object"&&"stack"in A?A.stack:A)});else if(Q==="strict")HQ(()=>{console.warn(B)}),u9(A)}var JJQ="ProcessSession",UH=S(()=>{return{name:JJQ,setupOnce(){I9(),process.on("beforeExit",()=>{if(ZA().getSession()?.status!=="ok")iG()})}}});import*as rYA from"node:http";var wH="Spotlight",FJQ=(A={})=>{let Q={sidecarUrl:A.sidecarUrl||"http://localhost:8969/stream"};return{name:wH,setup(B){try{}catch{}GJQ(B,Q)}}},KH=S(FJQ);function GJQ(A,Q){let B=DJQ(Q.sidecarUrl);if(!B)return;let I=0;A.on("beforeEnvelope",(C)=>{if(I>3){L.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests");return}let E=i1(C);fJ(()=>{let Y=rYA.request({method:"POST",path:B.pathname,hostname:B.hostname,port:B.port,headers:{"Content-Type":"application/x-sentry-envelope"}},(J)=>{if(J.statusCode&&J.statusCode>=200&&J.statusCode<400)I=0;J.on("data",()=>{}),J.on("end",()=>{}),J.setEncoding("utf8")});Y.on("error",()=>{I++,L.warn("[Spotlight] Failed to send envelope to Spotlight Sidecar")}),Y.write(E),Y.end()})})}function DJQ(A){try{return new URL(`${A}`)}catch{L.warn(`[Spotlight] Invalid sidecar URL: ${A}`);return}}import*as tYA from"node:util";var ZJQ="NodeSystemError";function WJQ(A){if(!(A instanceof Error))return!1;if(!("errno"in A)||typeof A.errno!=="number")return!1;return tYA.getSystemErrorMap().has(A.errno)}var zH=S((A={})=>{return{name:ZJQ,processEvent:(Q,B,I)=>{if(!WJQ(B.originalException))return Q;let C=B.originalException,E={...C};if(!I.getOptions().sendDefaultPii&&A.includePaths!==!0)delete E.path,delete E.dest;Q.contexts={...Q.contexts,node_system_error:E};for(let Y of Q.exception?.values||[])if(Y.value){if(C.path&&Y.value.includes(C.path))Y.value=Y.value.replace(`'${C.path}'`,"").trim();if(C.dest&&Y.value.includes(C.dest))Y.value=Y.value.replace(`'${C.dest}'`,"").trim()}return Q}}});import*as UJQ from"node:http";import*as wJQ from"node:https";import{Readable as KJQ}from"node:stream";import{createGzip as zJQ}from"node:zlib";import*as I0 from"node:net";import*as LH from"node:tls";import*as VH from"node:http";var WE=Symbol("AgentBaseInternalState");class $H extends VH.Agent{constructor(A){super(A);this[WE]={}}isSecureEndpoint(A){if(A){if(typeof A.secureEndpoint==="boolean")return A.secureEndpoint;if(typeof A.protocol==="string")return A.protocol==="https:"}let{stack:Q}=Error();if(typeof Q!=="string")return!1;return Q.split(` +`).some((B)=>B.indexOf("(https.js:")!==-1||B.indexOf("node:https:")!==-1)}createSocket(A,Q,B){let I={...Q,secureEndpoint:this.isSecureEndpoint(Q)};Promise.resolve().then(()=>this.connect(A,I)).then((C)=>{if(C instanceof VH.Agent)return C.addRequest(A,I);this[WE].currentSocket=C,super.createSocket(A,Q,B)},B)}createConnection(){let A=this[WE].currentSocket;if(this[WE].currentSocket=void 0,!A)throw Error("No socket was returned in the `connect()` function");return A}get defaultPort(){return this[WE].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(A){if(this[WE])this[WE].defaultPort=A}get protocol(){return this[WE].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(A){if(this[WE])this[WE].protocol=A}}function Y5(...A){L.log("[https-proxy-agent:parse-proxy-response]",...A)}function eYA(A){return new Promise((Q,B)=>{let I=0,C=[];function E(){let D=A.read();if(D)G(D);else A.once("readable",E)}function Y(){A.removeListener("end",J),A.removeListener("error",F),A.removeListener("readable",E)}function J(){Y(),Y5("onend"),B(Error("Proxy connection ended before receiving CONNECT response"))}function F(D){Y(),Y5("onerror %o",D),B(D)}function G(D){C.push(D),I+=D.length;let Z=Buffer.concat(C,I),W=Z.indexOf(`\r +\r +`);if(W===-1){Y5("have not received end of HTTP headers yet..."),E();return}let X=Z.subarray(0,W).toString("ascii").split(`\r +`),w=X.shift();if(!w)return A.destroy(),B(Error("No header received from proxy CONNECT response"));let K=w.split(" "),z=+(K[1]||0),$=K.slice(2).join(" "),N={};for(let j of X){if(!j)continue;let O=j.indexOf(":");if(O===-1)return A.destroy(),B(Error(`Invalid header from proxy CONNECT response: "${j}"`));let k=j.slice(0,O).toLowerCase(),g=j.slice(O+1).trimStart(),x=N[k];if(typeof x==="string")N[k]=[x,g];else if(Array.isArray(x))x.push(g);else N[k]=g}Y5("got proxy server response: %o %o",w,N),Y(),Q({connect:{statusCode:z,statusText:$,headers:N},buffered:Z})}A.on("error",F),A.on("end",J),E()})}function l9(...A){L.log("[https-proxy-agent]",...A)}class J5 extends $H{static __initStatic(){this.protocols=["http","https"]}constructor(A,Q){super(Q);this.options={},this.proxy=typeof A==="string"?new URL(A):A,this.proxyHeaders=Q?.headers??{},l9("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let B=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),I=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...Q?AJA(Q,"headers"):null,host:B,port:I}}async connect(A,Q){let{proxy:B}=this;if(!Q.host)throw TypeError('No "host" provided');let I;if(B.protocol==="https:"){l9("Creating `tls.Socket`: %o",this.connectOpts);let Z=this.connectOpts.servername||this.connectOpts.host;I=LH.connect({...this.connectOpts,servername:Z&&I0.isIP(Z)?void 0:Z})}else l9("Creating `net.Socket`: %o",this.connectOpts),I=I0.connect(this.connectOpts);let C=typeof this.proxyHeaders==="function"?this.proxyHeaders():{...this.proxyHeaders},E=I0.isIPv6(Q.host)?`[${Q.host}]`:Q.host,Y=`CONNECT ${E}:${Q.port} HTTP/1.1\r +`;if(B.username||B.password){let Z=`${decodeURIComponent(B.username)}:${decodeURIComponent(B.password)}`;C["Proxy-Authorization"]=`Basic ${Buffer.from(Z).toString("base64")}`}if(C.Host=`${E}:${Q.port}`,!C["Proxy-Connection"])C["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close";for(let Z of Object.keys(C))Y+=`${Z}: ${C[Z]}\r +`;let J=eYA(I);I.write(`${Y}\r +`);let{connect:F,buffered:G}=await J;if(A.emit("proxyConnect",F),this.emit("proxyConnect",F,A),F.statusCode===200){if(A.once("socket",XJQ),Q.secureEndpoint){l9("Upgrading socket connection to TLS");let Z=Q.servername||Q.host;return LH.connect({...AJA(Q,"host","path","port"),socket:I,servername:I0.isIP(Z)?void 0:Z})}return I}I.destroy();let D=new I0.Socket({writable:!1});return D.readable=!0,A.once("socket",(Z)=>{l9("Replaying proxy buffer for failed request"),Z.push(G),Z.push(null)}),D}}J5.__initStatic();function XJQ(A){A.resume()}function AJA(A,...Q){let B={},I;for(I in A)if(!Q.includes(I))B[I]=A[I];return B}var VJQ=32768;function $JQ(A){return new KJQ({read(){this.push(A),this.push(null)}})}function HH(A){let Q;try{Q=new URL(A.url)}catch(F){return HQ(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),oG(A,()=>Promise.resolve({}))}let B=Q.protocol==="https:",I=LJQ(Q,A.proxy||(B?process.env.https_proxy:void 0)||process.env.http_proxy),C=B?wJQ:UJQ,E=A.keepAlive===void 0?!1:A.keepAlive,Y=I?new J5(I):new C.Agent({keepAlive:E,maxSockets:30,timeout:2000}),J=HJQ(A,A.httpModule??C,Y);return oG(A,J)}function LJQ(A,Q){let{no_proxy:B}=process.env;if(B?.split(",").some((C)=>A.host.endsWith(C)||A.hostname.endsWith(C)))return;else return Q}function HJQ(A,Q,B){let{hostname:I,pathname:C,port:E,protocol:Y,search:J}=new URL(A.url);return function(G){return new Promise((D,Z)=>{fJ(()=>{let W=$JQ(G.body),X={...A.headers};if(G.body.length>VJQ)X["content-encoding"]="gzip",W=W.pipe(zJQ());let w=I.startsWith("["),K=Q.request({method:"POST",agent:B,headers:X,hostname:w?I.slice(1,-1):I,path:`${C}${J}`,port:E,protocol:Y,ca:A.caCerts},(z)=>{z.on("data",()=>{}),z.on("end",()=>{}),z.setEncoding("utf8");let $=z.headers["retry-after"]??null,N=z.headers["x-sentry-rate-limits"]??null;D({statusCode:z.statusCode,headers:{"retry-after":$,"x-sentry-rate-limits":Array.isArray(N)?N[0]||null:N}})});K.on("error",Z),W.pipe(K)})})}}function QJA(A){if(A===!1)return!1;if(typeof A==="string")return A;let Q=vJ(process.env.SENTRY_SPOTLIGHT,{strict:!0}),B=Q===null&&process.env.SENTRY_SPOTLIGHT?process.env.SENTRY_SPOTLIGHT:void 0;return A===!0?B??!0:Q??B}import{posix as MJQ,sep as NJQ}from"node:path";function BJA(A){return A.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function MH(A=process.argv[1]?K3(process.argv[1]):process.cwd(),Q=NJQ==="\\"){let B=Q?BJA(A):A;return(I)=>{if(!I)return;let C=Q?BJA(I):I,{dir:E,base:Y,ext:J}=MJQ.parse(C);if(J===".js"||J===".mjs"||J===".cjs")Y=Y.slice(0,J.length*-1);let F=decodeURIComponent(Y);if(!E)E=".";let G=E.lastIndexOf("/node_modules");if(G>-1)return`${E.slice(G+14).replace(/\//g,".")}:${F}`;if(E.startsWith(B)){let D=E.slice(B.length+1).replace(/\//g,".");return D?`${D}:${F}`:F}return F}}function NH(A){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(EA.SENTRY_RELEASE?.id)return EA.SENTRY_RELEASE.id;let Q=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,B=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_BUILD_COMMIT||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,I=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return Q||B||I||A}var jH=gU(s3(MH()));var CJA=f(P(),1),EJA=f(JA(),1);import*as IJA from"node:os";import{threadId as jJQ,isMainThread as RJQ}from"worker_threads";var qJQ=60000;class F5 extends tU{constructor(A){let Q=A.includeServerName===!1?void 0:A.serverName||global.process.env.SENTRY_NAME||IJA.hostname(),B={...A,platform:"node",runtime:A.runtime||{name:"node",version:global.process.version},serverName:Q};if(A.openTelemetryInstrumentations)EJA.registerInstrumentations({instrumentations:A.openTelemetryInstrumentations});bJ(B,"node"),L.log(`Initializing Sentry: process: ${process.pid}, thread: ${RJQ?"main":`worker-${jJQ}`}.`);super(B);if(this.getOptions().enableLogs){if(this._logOnExitFlushListener=()=>{nG(this)},Q)this.on("beforeCaptureLog",(I)=>{I.attributes={...I.attributes,"server.address":Q}});process.on("beforeExit",this._logOnExitFlushListener)}}get tracer(){if(this._tracer)return this._tracer;let A="@sentry/node",Q=VA,B=CJA.trace.getTracer(A,Q);return this._tracer=B,B}async flush(A){if(await this.traceProvider?.forceFlush(),this.getOptions().sendClientReports)this._flushOutcomes();return super.flush(A)}async close(A){if(this._clientReportInterval)clearInterval(this._clientReportInterval);if(this._clientReportOnExitFlushListener)process.off("beforeExit",this._clientReportOnExitFlushListener);if(this._logOnExitFlushListener)process.off("beforeExit",this._logOnExitFlushListener);let Q=await super.close(A);if(this.traceProvider)await this.traceProvider.shutdown();return Q}startClientReportTracking(){let A=this.getOptions();if(A.sendClientReports)this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{GA&&L.log("Flushing client reports based on interval."),this._flushOutcomes()},A.clientReportFlushInterval??qJQ).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener)}_setupIntegrations(){D3(),super._setupIntegrations()}_getTraceInfoFromScope(A){if(!A)return[void 0,void 0];return KYA(this,A)}}var YJA=f(cV(),1);import*as JJA from"module";function RH(){if(!iYA())return;if(!EA._sentryEsmLoaderHookRegistered){EA._sentryEsmLoaderHookRegistered=!0;try{let{addHookMessagePort:A}=YJA.createAddHookMessageChannel();JJA.register("import-in-the-middle/hook.mjs",import.meta.url,{data:{addHookMessagePort:A,include:[]},transferList:[A]})}catch(A){L.warn("Failed to register 'import-in-the-middle' hook",A)}}}function G5(){return[G9(),F9(),D9(),Z9(),zH(),L3(),W9(),hYA(),sYA(),WH(),XH(),JH(),GH(),EH(),CH(),UH(),ZH()]}function qH(A={}){return OJQ(A,G5)}function OJQ(A={},Q){let B=TJQ(A,Q);if(B.debug===!0)if(GA)L.enable();else HQ(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")});if(B.registerEsmLoaderHooks!==!1)RH();if($YA(),MA().update(B.initialScope),B.spotlight&&!B.integrations.some(({name:E})=>E===wH))B.integrations.push(KH({sidecarUrl:typeof B.spotlight==="string"?B.spotlight:void 0}));bJ(B,"node-core");let C=new F5(B);if(MA().setClient(C),C.init(),L.log(`SDK initialized from ${c9()?"CommonJS":"ESM"}`),C.startClientReportTracking(),SJQ(),IYA(C),VYA(C),process.env.VERCEL)process.on("SIGTERM",async()=>{await C.flush(200)});return C}function D5(){if(!GA)return;let A=JYA(),Q=["SentryContextManager","SentryPropagator"];if(MQ())Q.push("SentrySpanProcessor");for(let B of Q)if(!A.includes(B))L.error(`You have to set up the ${B}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);if(!A.includes("SentrySampler"))L.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}function TJQ(A,Q){let B=PJQ(A.release),I=QJA(A.spotlight),C=kJQ(A.tracesSampleRate),E={...A,dsn:A.dsn??process.env.SENTRY_DSN,environment:A.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:A.sendClientReports??!0,transport:A.transport??HH,stackParser:U$(A.stackParser||jH),release:B,tracesSampleRate:C,spotlight:I,debug:vJ(A.debug??process.env.SENTRY_DEBUG)},Y=A.integrations,J=A.defaultIntegrations??Q(E);return{...E,integrations:a$({defaultIntegrations:J,integrations:Y})}}function PJQ(A){if(A!==void 0)return A;let Q=NH();if(Q!==void 0)return Q;return}function kJQ(A){if(A!==void 0)return A;let Q=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!Q)return;let B=parseFloat(Q);return isFinite(B)?B:void 0}function SJQ(){if(vJ(process.env.SENTRY_USE_ENVIRONMENT)!==!1){let A=process.env.SENTRY_TRACE,Q=process.env.SENTRY_BAGGAGE,B=x1(A,Q);MA().setPropagationContext(B)}}function vA(A,Q){A.setAttribute(n,Q)}function p9(A){let Q=A.protocol||"",B=A.hostname||A.host||"",I=!A.port||A.port===80||A.port===443||/^(.*):(\d+)$/.test(B)?"":`:${A.port}`,C=A.path?A.path:"/";return`${Q}//${B}${I}${C}`}var OH="Http",FJA="@opentelemetry_sentry-patched/instrumentation-http",Z5=aI.major===22&&aI.minor>=12||aI.major===23&&aI.minor>=2||aI.major>=24,oJQ=b(`${OH}.sentry`,(A)=>{return new UD(A)}),sJQ=b(OH,(A)=>{let Q=new DJA.HttpInstrumentation({...A,disableIncomingRequestInstrumentation:!0});try{Q._diag=GJA.diag.createComponentLogger({namespace:FJA}),Q.instrumentationName=FJA}catch{}try{let B={get:()=>!1,set:()=>{}};Object.defineProperty(Q,"_httpPatched",B),Object.defineProperty(Q,"_httpsPatched",B)}catch{}return Q});function rJQ(A,Q={}){if(typeof A.spans==="boolean")return A.spans;if(Q.skipOpenTelemetrySetup)return!1;if(!MQ(Q)&&Z5)return!1;return!0}var ZJA=S((A={})=>{let Q=A.spans??!0,B=A.disableIncomingRequestSpans,I={sessions:A.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:A.sessionFlushingDelayMS,ignoreRequestBody:A.ignoreIncomingRequestBody,maxRequestBodySize:A.maxIncomingRequestBodySize},C={ignoreIncomingRequests:A.ignoreIncomingRequests,ignoreStaticAssets:A.ignoreStaticAssets,ignoreStatusCodes:A.dropSpansForIncomingRequestStatusCodes,instrumentation:A.instrumentation,onSpanCreated:A.incomingRequestSpanHook},E=ZD(I),Y=WD(C),J=Q&&!B;return{name:OH,setup(F){let G=F.getOptions();if(J&&MQ(G))Y.setup(F)},setupOnce(){let F=u()?.getOptions()||{},G=rJQ(A,F);E.setupOnce();let D={breadcrumbs:A.breadcrumbs,propagateTraceInOutgoingRequests:typeof A.tracePropagation==="boolean"?A.tracePropagation:Z5||!G,createSpansForOutgoingRequests:Z5,spans:A.spans,ignoreOutgoingRequests:A.ignoreOutgoingRequests,outgoingRequestHook:(Z,W)=>{let X=p9(W);if(X.startsWith("data:")){let w=eG(X);Z.setAttribute("http.url",w),Z.setAttribute(BY,w),Z.updateName(`${W.method||"GET"} ${w}`)}A.instrumentation?.requestHook?.(Z,W)},outgoingResponseHook:A.instrumentation?.responseHook,outgoingRequestApplyCustomAttributes:A.instrumentation?.applyCustomAttributesOnSpan};if(oJQ(D),G){let Z=tJQ(A);sJQ(Z)}},processEvent(F){return Y.processEvent(F)}}});function tJQ(A={}){return{disableOutgoingRequestInstrumentation:Z5,ignoreOutgoingRequestHook:(B)=>{let I=p9(B);if(!I)return!1;let C=A.ignoreOutgoingRequests;if(C?.(I,B))return!0;return!1},requireParentforOutgoingSpans:!1,requestHook:(B,I)=>{vA(B,"auto.http.otel.http");let C=p9(I);if(C.startsWith("data:")){let E=eG(C);B.setAttribute("http.url",E),B.setAttribute(BY,E),B.updateName(`${I.method||"GET"} ${E}`)}A.instrumentation?.requestHook?.(B,I)},responseHook:(B,I)=>{A.instrumentation?.responseHook?.(B,I)},applyCustomAttributesOnSpan:(B,I,C)=>{A.instrumentation?.applyCustomAttributesOnSpan?.(B,I,C)}}}var MJA=f(LJA(),1);var NJA="NodeFetch",IFQ=b(NJA,MJA.UndiciInstrumentation,(A)=>{return JFQ(A)}),CFQ=b(`${NJA}.sentry`,KD,(A)=>{return A}),EFQ=(A={})=>{return{name:"NodeFetch",setupOnce(){if(YFQ(A,u()?.getOptions()))IFQ(A);CFQ(A)}}},jJA=S(EFQ);function HJA(A,Q="/"){let B=`${A}`;if(B.endsWith("/")&&Q.startsWith("/"))return`${B}${Q.slice(1)}`;if(!B.endsWith("/")&&!Q.startsWith("/"))return`${B}/${Q}`;return`${B}${Q}`}function YFQ(A,Q={}){return typeof A.spans==="boolean"?A.spans:!Q.skipOpenTelemetrySetup&&MQ(Q)}function JFQ(A={}){return{requireParentforSpans:!1,ignoreRequestHook:(B)=>{let I=HJA(B.origin,B.path),C=A.ignoreOutgoingRequests;return!!(C&&I&&C(I))},startSpanHook:(B)=>{let I=HJA(B.origin,B.path);if(I.startsWith("data:")){let C=eG(I);return{[n]:"auto.http.otel.node_fetch","http.url":C,[BY]:C,[lI]:`${B.method||"GET"} ${C}`}}return{[n]:"auto.http.otel.node_fetch"}},requestHook:A.requestHook,responseHook:A.responseHook,headersToSpanAttributes:A.headersToSpanAttributes}}var iJA=f(pJA(),1);var hQ=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;var nJA="Express";function yFQ(A){vA(A,"auto.http.otel.express");let Q=i(A).data,B=Q["express.type"];if(B)A.setAttribute(e,`${B}.express`);let I=Q["express.name"];if(typeof I==="string")A.updateName(I)}function _FQ(A,Q){if(ZA()===UI())return hQ&&L.warn("Isolation scope is still default isolation scope - skipping setting transactionName"),Q;if(A.layerType==="request_handler"){let B=A.request,I=B.method?B.method.toUpperCase():"GET";ZA().setTransactionName(`${I} ${A.route}`)}return Q}var aJA=b(nJA,()=>new iJA.ExpressInstrumentation({requestHook:(A)=>yFQ(A),spanNameHook:(A,Q)=>_FQ(A,Q)})),fFQ=()=>{return{name:nJA,setupOnce(){aJA()}}},oJA=S(fFQ);var _DA=f(RDA(),1);import*as j2 from"node:diagnostics_channel";var _C=f(P(),1),k5=f(hA(),1),CF=f(JA(),1),kDA=f(HA(),1);var C0;(function(A){A.FASTIFY_NAME="fastify.name";let B="fastify.type";A.FASTIFY_TYPE=B;let I="hook.name";A.HOOK_NAME=I;let C="plugin.name";A.PLUGIN_NAME=C})(C0||(C0={}));var FW;(function(A){A.MIDDLEWARE="middleware";let B="request_handler";A.REQUEST_HANDLER=B})(FW||(FW={}));var GW;(function(A){A.MIDDLEWARE="middleware";let B="request handler";A.REQUEST_HANDLER=B})(GW||(GW={}));var ODA=f(P(),1);var DW=Symbol("opentelemetry.instrumentation.fastify.request_active_span");function M2(A,Q,B,I={}){let C=Q.startSpan(B,{attributes:I}),E=A[DW]||[];return E.push(C),Object.defineProperty(A,DW,{enumerable:!1,configurable:!0,value:E}),C}function P5(A,Q){let B=A[DW]||[];if(!B.length)return;B.forEach((I)=>{if(Q)I.setStatus({code:ODA.SpanStatusCode.ERROR,message:Q.message}),I.recordException(Q);I.end()}),delete A[DW]}function TDA(A,Q,B){let I,C=void 0;try{if(C=A(),qDA(C))C.then((E)=>Q(void 0,E),(E)=>Q(E))}catch(E){I=E}finally{if(!qDA(C)){if(Q(I,C),I)throw I}return C}}function qDA(A){return typeof A==="object"&&A&&typeof Object.getOwnPropertyDescriptor(A,"then")?.value==="function"||!1}var tZQ="0.1.0",eZQ="@sentry/instrumentation-fastify-v3",PDA="anonymous",A1Q=new Set(["onTimeout","onRequest","preParsing","preValidation","preSerialization","preHandler","onSend","onResponse","onError"]);class N2 extends CF.InstrumentationBase{constructor(A={}){super(eZQ,tZQ,A)}init(){return[new CF.InstrumentationNodeModuleDefinition("fastify",[">=3.0.0 <4"],(A)=>{return this._patchConstructor(A)})]}_hookOnRequest(){let A=this;return function(B,I,C){if(!A.isEnabled())return C();A._wrap(I,"send",A._patchSend());let E=B,Y=k5.getRPCMetadata(_C.context.active()),J=E.routeOptions?E.routeOptions.url:B.routerPath;if(J&&Y?.type===k5.RPCType.HTTP)Y.route=J;let F=B.method||"GET";ZA().setTransactionName(`${F} ${J}`),C()}}_wrapHandler(A,Q,B,I){let C=this;return this._diag.debug("Patching fastify route.handler function"),function(...E){if(!C.isEnabled())return B.apply(this,E);let Y=B.name||A||PDA,J=`${GW.MIDDLEWARE} - ${Y}`,F=E[1],G=M2(F,C.tracer,J,{[C0.FASTIFY_TYPE]:FW.MIDDLEWARE,[C0.PLUGIN_NAME]:A,[C0.HOOK_NAME]:Q}),D=I&&E[E.length-1];if(D)E[E.length-1]=function(...Z){P5(F),D.apply(this,Z)};return _C.context.with(_C.trace.setSpan(_C.context.active(),G),()=>{return TDA(()=>{return B.apply(this,E)},(Z)=>{if(Z instanceof Error)G.setStatus({code:_C.SpanStatusCode.ERROR,message:Z.message}),G.recordException(Z);if(!I)P5(F)})})}}_wrapAddHook(){let A=this;return this._diag.debug("Patching fastify server.addHook function"),function(Q){return function(...I){let C=I[0],E=I[1],Y=this.pluginName;if(!A1Q.has(C))return Q.apply(this,I);let J=typeof I[I.length-1]==="function"&&E.constructor.name!=="AsyncFunction";return Q.apply(this,[C,A._wrapHandler(Y,C,E,J)])}}}_patchConstructor(A){let Q=this;function B(...I){let C=A.fastify.apply(this,I);return C.addHook("onRequest",Q._hookOnRequest()),C.addHook("preHandler",Q._hookPreHandler()),Q1Q(),Q._wrap(C,"addHook",Q._wrapAddHook()),C}if(A.errorCodes!==void 0)B.errorCodes=A.errorCodes;return B.fastify=B,B.default=B,B}_patchSend(){let A=this;return this._diag.debug("Patching fastify reply.send function"),function(B){return function(...C){let E=C[0];if(!A.isEnabled())return B.apply(this,C);return CF.safeExecuteInTheMiddle(()=>{return B.apply(this,C)},(Y)=>{if(!Y&&E instanceof Error)Y=E;P5(this,Y)})}}}_hookPreHandler(){let A=this;return this._diag.debug("Patching fastify preHandler function"),function(B,I,C){if(!A.isEnabled())return C();let E=B,Y=E.routeOptions?.handler||E.context?.handler,J=Y?.name.startsWith("bound ")?Y.name.substring(6):Y?.name,F=`${GW.REQUEST_HANDLER} - ${J||this.pluginName||PDA}`,G={[C0.PLUGIN_NAME]:this.pluginName,[C0.FASTIFY_TYPE]:FW.REQUEST_HANDLER,[kDA.SEMATTRS_HTTP_ROUTE]:E.routeOptions?E.routeOptions.url:B.routerPath};if(J)G[C0.FASTIFY_NAME]=J;let D=M2(I,A.tracer,F,G);SDA(D);let{requestHook:Z}=A.getConfig();if(Z)CF.safeExecuteInTheMiddle(()=>Z(D,{request:B}),(W)=>{if(W)A._diag.error("request hook failed",W)},!0);return _C.context.with(_C.trace.setSpan(_C.context.active(),D),()=>{C()})}}}function Q1Q(){let A=u();if(A)A.on("spanStart",(Q)=>{SDA(Q)})}function SDA(A){let Q=i(A).data,B=Q["fastify.type"];if(Q[e]||!B)return;A.setAttributes({[n]:"auto.http.otel.fastify",[e]:`${B}.fastify`});let I=Q["fastify.name"]||Q["plugin.name"]||Q["hook.name"];if(typeof I==="string"){let C=I.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");A.updateName(C)}}var S5="Fastify",fDA=b(`${S5}.v3`,()=>new N2);function B1Q(){let A=u();if(!A)return;else return A.getIntegrationByName(S5)}function yDA(A,Q,B,I){let C=B1Q()?.getShouldHandleError()||xDA;if(I==="diagnostics-channel")this.diagnosticsChannelExists=!0;if(this.diagnosticsChannelExists&&I==="onError-hook"){hQ&&L.warn("Fastify error handler was already registered via diagnostics channel.","You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.");return}if(C(A,Q,B))IA(A,{mechanism:{handled:!1,type:"auto.function.fastify"}})}var gDA=b(`${S5}.v5`,()=>{let A=new _DA.FastifyOtelInstrumentation,Q=A.plugin();return j2.subscribe("fastify.initialization",(B)=>{let I=B.fastify;I?.register(Q).after((C)=>{if(C)hQ&&L.error("Failed to setup Fastify instrumentation",C);else if(C1Q(),I)E1Q(I)})}),j2.subscribe("tracing:fastify.request.handler:error",(B)=>{let{error:I,request:C,reply:E}=B;yDA.call(yDA,I,C,E,"diagnostics-channel")}),A}),I1Q=({shouldHandleError:A})=>{let Q;return{name:S5,setupOnce(){Q=A||xDA,fDA(),gDA()},getShouldHandleError(){return Q},setShouldHandleError(B){Q=B}}},hDA=S((A={})=>I1Q(A));function xDA(A,Q,B){let I=B.statusCode;return I>=500||I<=299}function vDA(A){let Q=i(A),B=Q.description,I=Q.data,C=I["fastify.type"],E=C==="hook",Y=C===B?.startsWith("handler -"),J=B==="request"||C==="request-handler";if(I[e]||!Y&&!J&&!E)return;let F=E?"hook":Y?"middleware":J?"request_handler":"";A.setAttributes({[n]:"auto.http.otel.fastify",[e]:`${F}.fastify`});let G=I["fastify.name"]||I["plugin.name"]||I["hook.name"];if(typeof G==="string"){let D=G.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");A.updateName(D)}}function C1Q(){let A=u();if(A)A.on("spanStart",(Q)=>{vDA(Q)})}function E1Q(A){A.addHook("onRequest",async(Q,B)=>{if(Q.opentelemetry){let{span:E}=Q.opentelemetry();if(E)vDA(E)}let I=Q.routeOptions?.url,C=Q.method||"GET";ZA().setTransactionName(`${C} ${I}`)})}var HZA=f(P(),1),MZA=f(LZA(),1);var NZA="Graphql",jZA=b(NZA,MZA.GraphQLInstrumentation,(A)=>{let Q=qZA(A);return{...Q,responseHook(B,I){if(vA(B,"auto.graphql.otel.graphql"),I.errors?.length&&!i(B).status)B.setStatus({code:HZA.SpanStatusCode.ERROR});let E=i(B).data,Y=E["graphql.operation.type"],J=E["graphql.operation.name"];if(Q.useOperationNameForRootSpan&&Y){let F=JQ(B),D=i(F).data[jD]||[],Z=J?`${Y} ${J}`:`${Y}`;if(Array.isArray(D))D.push(Z),F.setAttribute(jD,D);else if(typeof D==="string")F.setAttribute(jD,[D,Z]);else F.setAttribute(jD,Z);if(!i(F).data["original-description"])F.setAttribute("original-description",i(F).description);F.updateName(`${i(F).data["original-description"]} (${g1Q(D)})`)}}}}),f1Q=(A={})=>{return{name:NZA,setupOnce(){jZA(qZA(A))}}},RZA=S(f1Q);function qZA(A){return{ignoreResolveSpans:!0,ignoreTrivialResolveSpans:!0,useOperationNameForRootSpan:!0,...A}}function g1Q(A){if(Array.isArray(A)){let Q=A.slice().sort();if(Q.length<=5)return Q.join(", ");else return`${Q.slice(0,5).join(", ")}, +${Q.length-5}`}return`${A}`}var oZA=f(aZA(),1);var sZA="Kafka",rZA=b(sZA,()=>new oZA.KafkaJsInstrumentation({consumerHook(A){vA(A,"auto.kafkajs.otel.consumer")},producerHook(A){vA(A,"auto.kafkajs.otel.producer")}})),Q9Q=()=>{return{name:sZA,setupOnce(){rZA()}}},tZA=S(Q9Q);var D1A=f(G1A(),1);var Z1A="LruMemoizer",W1A=b(Z1A,()=>new D1A.LruMemoizerInstrumentation),E9Q=()=>{return{name:Z1A,setupOnce(){W1A()}}},X1A=S(E9Q);var k1A=f(P1A(),1);var S1A="Mongo",y1A=b(S1A,()=>new k1A.MongoDBInstrumentation({dbStatementSerializer:M9Q,responseHook(A){vA(A,"auto.db.otel.mongo")}}));function M9Q(A){let Q=x2(A);return JSON.stringify(Q)}function x2(A){if(Array.isArray(A))return A.map((Q)=>x2(Q));if(N9Q(A)){let Q={};return Object.entries(A).map(([B,I])=>[B,x2(I)]).reduce((B,I)=>{if(R9Q(I))B[I[0]]=I[1];return B},Q)}return"?"}function N9Q(A){return typeof A==="object"&&A!==null&&!j9Q(A)}function j9Q(A){let Q=!1;if(typeof Buffer<"u")Q=Buffer.isBuffer(A);return Q}function R9Q(A){return Array.isArray(A)}var q9Q=()=>{return{name:S1A,setupOnce(){y1A()}}},_1A=S(q9Q);var e1A=f(t1A(),1);var A9A="Mongoose",Q9A=b(A9A,()=>new e1A.MongooseInstrumentation({responseHook(A){vA(A,"auto.db.otel.mongoose")}})),n9Q=()=>{return{name:A9A,setupOnce(){Q9A()}}},B9A=S(n9Q);var L9A=f($9A(),1);var H9A="Mysql",M9A=b(H9A,()=>new L9A.MySQLInstrumentation({})),$WQ=()=>{return{name:H9A,setupOnce(){M9A()}}},N9A=S($WQ);var c9A=f(d9A(),1);var u9A="Mysql2",l9A=b(u9A,()=>new c9A.MySQL2Instrumentation({responseHook(A){vA(A,"auto.db.otel.mysql2")}})),nWQ=()=>{return{name:u9A,setupOnce(){l9A()}}},p9A=S(nWQ);var uWA=f(DWA(),1),lWA=f(vWA(),1);var k8Q=["get","set","setex"],EM=["get","mget"],S8Q=["set","setex"];function HW(A,Q){return A.includes(Q.toLowerCase())}function YM(A){if(HW(EM,A))return"cache.get";else if(HW(S8Q,A))return"cache.put";else return}function y8Q(A,Q){return Q.some((B)=>A.startsWith(B))}function mWA(A,Q){try{if(Q.length===0)return;let B=(C)=>{if(typeof C==="string"||typeof C==="number"||Buffer.isBuffer(C))return[C.toString()];else if(Array.isArray(C))return bWA(C.map((E)=>B(E)));else return[""]},I=Q[0];if(HW(k8Q,A)&&I!=null)return B(I);return bWA(Q.map((C)=>B(C)))}catch{return}}function dWA(A,Q,B){if(!YM(A))return!1;for(let I of Q)if(y8Q(I,B))return!0;return!1}function cWA(A){let Q=(B)=>{try{if(Buffer.isBuffer(B))return B.byteLength;else if(typeof B==="string")return B.length;else if(typeof B==="number")return B.toString().length;else if(B===null||B===void 0)return 0;return JSON.stringify(B).length}catch{return}};return Array.isArray(A)?A.reduce((B,I)=>{let C=Q(I);return typeof C==="number"?B!==void 0?B+C:C:B},0):Q(A)}function bWA(A){let Q=[],B=(I)=>{I.forEach((C)=>{if(Array.isArray(C))B(C);else Q.push(C)})};return B(A),Q}var p5="Redis",MW={},pWA=(A,Q,B,I)=>{A.setAttribute(n,"auto.db.otel.redis");let C=mWA(Q,B),E=YM(Q);if(!C||!E||!MW.cachePrefixes||!dWA(Q,C,MW.cachePrefixes))return;let Y=i(A).data["net.peer.name"],J=i(A).data["net.peer.port"];if(J&&Y)A.setAttributes({"network.peer.address":Y,"network.peer.port":J});let F=cWA(I);if(F)A.setAttribute(T$,F);if(HW(EM,Q)&&F!==void 0)A.setAttribute(q$,F>0);A.setAttributes({[e]:E,[O$]:C});let G=C.join(", ");A.updateName(MW.maxCacheKeyLength?t0(G,MW.maxCacheKeyLength):G)},_8Q=b(`${p5}.IORedis`,()=>{return new uWA.IORedisInstrumentation({responseHook:pWA})}),f8Q=b(`${p5}.Redis`,()=>{return new lWA.RedisInstrumentation({responseHook:pWA})}),iWA=Object.assign(()=>{_8Q(),f8Q()},{id:p5}),g8Q=(A={})=>{return{name:p5,setupOnce(){MW=A,iWA()}}},nWA=S(g8Q);var N8A=f(M8A(),1);var j8A="Postgres",R8A=b(j8A,N8A.PgInstrumentation,(A)=>({requireParentSpan:!0,requestHook(Q){vA(Q,"auto.db.otel.postgres")},ignoreConnectSpans:A?.ignoreConnectSpans??!1})),OXQ=(A)=>{return{name:j8A,setupOnce(){R8A(A)}}},q8A=S(OXQ);var xD=f(P(),1),yY=f(JA(),1),hC=f(HA(),1);var XM="PostgresJs",O8A=[">=3.0.0 <4"],TXQ=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,PXQ=Symbol.for("sentry.query.from.instrumented.sql"),T8A=b(XM,(A)=>new P8A({requireParentSpan:A?.requireParentSpan??!0,requestHook:A?.requestHook}));class P8A extends yY.InstrumentationBase{constructor(A){super("sentry-postgres-js",VA,A)}init(){let A=new yY.InstrumentationNodeModuleDefinition("postgres",O8A,(Q)=>{try{return this._patchPostgres(Q)}catch(B){return hQ&&L.error("Failed to patch postgres module:",B),Q}},(Q)=>Q);return["src","cf/src","cjs/src"].forEach((Q)=>{A.files.push(new yY.InstrumentationNodeModuleFile(`postgres/${Q}/query.js`,O8A,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),A}_patchPostgres(A){let Q=typeof A==="function",B=Q?A:A.default;if(typeof B!=="function")return hQ&&L.warn("postgres module does not export a function. Skipping instrumentation."),A;let I=this,C=function(...E){let Y=Reflect.construct(B,E);if(!Y||typeof Y!=="function")return hQ&&L.warn("postgres() did not return a valid instance"),Y;let J=I.getConfig();return $3(Y,{requireParentSpan:J.requireParentSpan,requestHook:J.requestHook})};Object.setPrototypeOf(C,B),Object.setPrototypeOf(C.prototype,B.prototype);for(let E of Object.getOwnPropertyNames(B))if(!["length","name","prototype"].includes(E)){let Y=Object.getOwnPropertyDescriptor(B,E);if(Y)Object.defineProperty(C,E,Y)}if(Q)return C;else return M9(A,"default",C),A}_shouldCreateSpans(){let A=this.getConfig();return xD.trace.getSpan(xD.context.active())!==void 0||!A.requireParentSpan}_setOperationName(A,Q,B){if(B){A.setAttribute(hC.ATTR_DB_OPERATION_NAME,B);return}let I=Q?.match(TXQ);if(I?.[1])A.setAttribute(hC.ATTR_DB_OPERATION_NAME,I[1].toUpperCase())}_reconstructQuery(A){if(!A?.length)return;if(A.length===1)return A[0]||void 0;return A.reduce((Q,B,I)=>I===0?B:`${Q}$${I}${B}`,"")}_sanitizeSqlQuery(A){if(!A)return"Unknown SQL Query";return A.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{vA(Y,"auto.db.postgresjs"),Y.setAttributes({[hC.ATTR_DB_SYSTEM_NAME]:"postgres",[hC.ATTR_DB_QUERY_TEXT]:E});let J=Q.getConfig(),{requestHook:F}=J;if(F)yY.safeExecuteInTheMiddle(()=>F(Y,E,void 0),(Z)=>{if(Z)Y.setAttribute("sentry.hook.error","requestHook failed"),hQ&&L.error(`Error in requestHook for ${XM} integration:`,Z)},!0);let G=this.resolve;this.resolve=new Proxy(G,{apply:(Z,W,X)=>{try{Q._setOperationName(Y,E,X?.[0]?.command),Y.end()}catch(w){hQ&&L.error("Error ending span in resolve callback:",w)}return Reflect.apply(Z,W,X)}});let D=this.reject;this.reject=new Proxy(D,{apply:(Z,W,X)=>{try{Y.setStatus({code:UA,message:X?.[0]?.message||"unknown_error"}),Y.setAttribute(hC.ATTR_DB_RESPONSE_STATUS_CODE,X?.[0]?.code||"unknown"),Y.setAttribute(hC.ATTR_ERROR_TYPE,X?.[0]?.name||"unknown"),Q._setOperationName(Y,E),Y.end()}catch(w){hQ&&L.error("Error ending span in reject callback:",w)}return Reflect.apply(Z,W,X)}});try{return B.apply(this,I)}catch(Z){throw Y.setStatus({code:UA,message:Z instanceof Error?Z.message:"unknown_error"}),Y.end(),Z}})},A.Query.prototype.handle.__sentry_original__=B,A}_unpatchQueryPrototype(A){if(A.Query.prototype.handle.__sentry_original__)A.Query.prototype.handle=A.Query.prototype.handle.__sentry_original__;return A}}var kXQ=(A)=>{return{name:XM,setupOnce(){T8A(A)}}},k8A=S(kXQ);var CC=f(P(),1);var $UA=f(P(),1),Cw=f(KUA(),1),_Y=f(P(),1);var R4Q={name:"@prisma/instrumentation-contract",version:"7.4.2",description:"Shared types and utilities for Prisma instrumentation",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{require:{types:"./dist/index.d.ts",default:"./dist/index.js"},import:{types:"./dist/index.d.mts",default:"./dist/index.mjs"}}},license:"Apache-2.0",homepage:"https://www.prisma.io",repository:{type:"git",url:"https://github.com/prisma/prisma.git",directory:"packages/instrumentation-contract"},bugs:"https://github.com/prisma/prisma/issues",scripts:{dev:"DEV=true tsx helpers/build.ts",build:"tsx helpers/build.ts",prepublishOnly:"pnpm run build",test:"vitest run"},files:["dist"],sideEffects:!1,devDependencies:{"@opentelemetry/api":"1.9.0"},peerDependencies:{"@opentelemetry/api":"^1.8"}},q4Q=R4Q.version.split(".")[0],lM="PRISMA_INSTRUMENTATION",pM=`V${q4Q}_PRISMA_INSTRUMENTATION`,mD=globalThis;function O4Q(){let A=mD[pM];if(A?.helper)return A.helper;return mD[lM]?.helper}function T4Q(A){let Q={helper:A};mD[pM]=Q,mD[lM]=Q}function P4Q(){delete mD[pM],delete mD[lM]}var k4Q=process.env.PRISMA_SHOW_ALL_TRACES==="true",S4Q="00-10-10-00";function y4Q(A){switch(A){case"client":return _Y.SpanKind.CLIENT;case"internal":default:return _Y.SpanKind.INTERNAL}}var _4Q=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:A,ignoreSpanTypes:Q}){this.tracerProvider=A,this.ignoreSpanTypes=Q}isEnabled(){return!0}getTraceParent(A){let Q=_Y.trace.getSpanContext(A??_Y.context.active());if(Q)return`00-${Q.traceId}-${Q.spanId}-0${Q.traceFlags}`;return S4Q}dispatchEngineSpans(A){let Q=this.tracerProvider.getTracer("prisma"),B=new Map,I=A.filter((C)=>C.parentId===null);for(let C of I)LUA(Q,C,A,B,this.ignoreSpanTypes)}getActiveContext(){return _Y.context.active()}runInChildSpan(A,Q){if(typeof A==="string")A={name:A};if(A.internal&&!k4Q)return Q();let B=this.tracerProvider.getTracer("prisma"),I=A.context??this.getActiveContext(),C=`prisma:client:${A.name}`;if(HUA(C,this.ignoreSpanTypes))return Q();if(A.active===!1){let E=B.startSpan(C,A,I);return zUA(E,Q(E,I))}return B.startActiveSpan(C,A,(E)=>zUA(E,Q(E,I)))}};function LUA(A,Q,B,I,C){if(HUA(Q.name,C))return;let E={attributes:Q.attributes,kind:y4Q(Q.kind),startTime:Q.startTime};A.startActiveSpan(Q.name,E,(Y)=>{if(I.set(Q.id,Y.spanContext().spanId),Q.links)Y.addLinks(Q.links.flatMap((F)=>{let G=I.get(F);if(!G)return[];return{context:{spanId:G,traceId:Y.spanContext().traceId,traceFlags:Y.spanContext().traceFlags}}}));let J=B.filter((F)=>F.parentId===Q.id);for(let F of J)LUA(A,F,B,I,C);Y.end(Q.endTime)})}function zUA(A,Q){if(f4Q(Q))return Q.then((B)=>{return A.end(),B},(B)=>{throw A.end(),B});return A.end(),Q}function f4Q(A){return A!=null&&typeof A.then==="function"}function HUA(A,Q){return Q.some((B)=>typeof B==="string"?B===A:B.test(A))}var MUA={name:"@prisma/instrumentation",version:"7.4.2",description:"OpenTelemetry compliant instrumentation for Prisma Client",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{require:{types:"./dist/index.d.ts",default:"./dist/index.js"},import:{types:"./dist/index.d.ts",default:"./dist/index.mjs"}}},license:"Apache-2.0",homepage:"https://www.prisma.io",repository:{type:"git",url:"https://github.com/prisma/prisma.git",directory:"packages/instrumentation"},bugs:"https://github.com/prisma/prisma/issues",devDependencies:{"@opentelemetry/api":"1.9.0","@prisma/instrumentation-contract":"workspace:*","@types/node":"~20.19.24",typescript:"5.4.5"},dependencies:{"@opentelemetry/instrumentation":"^0.207.0"},peerDependencies:{"@opentelemetry/api":"^1.8"},files:["dist"],keywords:["prisma","instrumentation","opentelemetry","otel"],scripts:{dev:"DEV=true tsx helpers/build.ts",build:"tsx helpers/build.ts",prepublishOnly:"pnpm run build",test:"vitest run"},sideEffects:!1},VUA=MUA.version,g4Q=MUA.name,h4Q="@prisma/client",NUA=class extends Cw.InstrumentationBase{tracerProvider;constructor(A={}){super(g4Q,VUA,A)}setTracerProvider(A){this.tracerProvider=A}init(){return[new Cw.InstrumentationNodeModuleDefinition(h4Q,[VUA])]}enable(){let A=this._config;T4Q(new _4Q({tracerProvider:this.tracerProvider??$UA.trace.getTracerProvider(),ignoreSpanTypes:A.ignoreSpanTypes??[]}))}disable(){P4Q()}isEnabled(){return O4Q()!==void 0}};var jUA="Prisma";function x4Q(A){return!!A&&typeof A==="object"&&"dispatchEngineSpans"in A}function RUA(){let A=globalThis.PRISMA_INSTRUMENTATION;return A&&typeof A==="object"&&"helper"in A?A.helper:void 0}class qUA extends NUA{constructor(A){super(A?.instrumentationConfig)}enable(){super.enable();let A=RUA();if(x4Q(A))A.createEngineSpan=(Q)=>{let B=CC.trace.getTracer("prismaV5Compatibility"),I=B._idGenerator;if(!I){HQ(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});return}try{Q.spans.forEach((C)=>{let E=v4Q(C.kind),Y=C.parent_span_id,J=C.span_id,F=C.trace_id,G=C.links?.map((Z)=>{return{context:{traceId:Z.trace_id,spanId:Z.span_id,traceFlags:CC.TraceFlags.SAMPLED}}}),D=CC.trace.setSpanContext(CC.context.active(),{traceId:F,spanId:Y,traceFlags:CC.TraceFlags.SAMPLED});CC.context.with(D,()=>{let Z={generateTraceId:()=>{return F},generateSpanId:()=>{return J}};B._idGenerator=Z,B.startSpan(C.name,{kind:E,links:G,startTime:C.start_time,attributes:C.attributes}).end(C.end_time),B._idGenerator=I})})}finally{B._idGenerator=I}}}}function v4Q(A){switch(A){case"client":return CC.SpanKind.CLIENT;case"internal":default:return CC.SpanKind.INTERNAL}}var b4Q=b(jUA,(A)=>{return new qUA(A)}),OUA=S((A)=>{return{name:jUA,setupOnce(){b4Q(A)},setup(Q){if(!RUA())return;Q.on("spanStart",(B)=>{let I=i(B);if(I.description?.startsWith("prisma:"))B.setAttribute(n,"auto.db.otel.prisma");if(I.description==="prisma:engine:db_query"&&I.data["db.query.text"])B.updateName(I.data["db.query.text"]);if(I.description==="prisma:engine:db_query"&&!I.data["db.system"])B.setAttribute("db.system","prisma")})}}});var oUA=f(aUA(),1);var sUA="Hapi",rUA=b(sUA,()=>new oUA.HapiInstrumentation),G5Q=()=>{return{name:sUA,setupOnce(){rUA()}}},tUA=S(G5Q);var Jw=f(HA(),1);var gY={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},_W={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"};var ZF=f(P(),1),Yw=f(JA(),1);var D5Q="@sentry/instrumentation-hono",Z5Q="0.0.1";class sM extends Yw.InstrumentationBase{constructor(A={}){super(D5Q,Z5Q,A)}init(){return[new Yw.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],(A)=>this._patch(A))]}_patch(A){let Q=this;class B extends A.Hono{constructor(...I){super(...I);Q._wrap(this,"get",Q._patchHandler()),Q._wrap(this,"post",Q._patchHandler()),Q._wrap(this,"put",Q._patchHandler()),Q._wrap(this,"delete",Q._patchHandler()),Q._wrap(this,"options",Q._patchHandler()),Q._wrap(this,"patch",Q._patchHandler()),Q._wrap(this,"all",Q._patchHandler()),Q._wrap(this,"on",Q._patchOnHandler()),Q._wrap(this,"use",Q._patchMiddlewareHandler())}}try{A.Hono=B}catch{return{...A,Hono:B}}return A}_patchHandler(){let A=this;return function(Q){return function(...I){if(typeof I[0]==="string"){let C=I[0];if(I.length===1)return Q.apply(this,[C]);let E=I.slice(1);return Q.apply(this,[C,...E.map((Y)=>A._wrapHandler(Y))])}return Q.apply(this,I.map((C)=>A._wrapHandler(C)))}}}_patchOnHandler(){let A=this;return function(Q){return function(...I){let C=I.slice(2);return Q.apply(this,[...I.slice(0,2),...C.map((E)=>A._wrapHandler(E))])}}}_patchMiddlewareHandler(){let A=this;return function(Q){return function(...I){if(typeof I[0]==="string"){let C=I[0];if(I.length===1)return Q.apply(this,[C]);let E=I.slice(1);return Q.apply(this,[C,...E.map((Y)=>A._wrapHandler(Y))])}return Q.apply(this,I.map((C)=>A._wrapHandler(C)))}}}_wrapHandler(A){let Q=this;return function(B,I){if(!Q.isEnabled())return A.apply(this,[B,I]);let C=B.req.path,E=Q.tracer.startSpan(C);return ZF.context.with(ZF.trace.setSpan(ZF.context.active(),E),()=>{return Q._safeExecute(()=>{let Y=A.apply(this,[B,I]);if(aQ(Y))return Y.then((J)=>{let F=Q._determineHandlerType(J);return E.setAttributes({[gY.HONO_TYPE]:F,[gY.HONO_NAME]:F===_W.REQUEST_HANDLER?C:A.name||"anonymous"}),Q.getConfig().responseHook?.(E),J});else{let J=Q._determineHandlerType(Y);return E.setAttributes({[gY.HONO_TYPE]:J,[gY.HONO_NAME]:J===_W.REQUEST_HANDLER?C:A.name||"anonymous"}),Q.getConfig().responseHook?.(E),Y}},()=>E.end(),(Y)=>{Q._handleError(E,Y),E.end()})})}}_safeExecute(A,Q,B){try{let I=A();if(aQ(I))I.then(()=>Q(),(C)=>B(C));else Q();return I}catch(I){throw B(I),I}}_determineHandlerType(A){return A===void 0?_W.MIDDLEWARE:_W.REQUEST_HANDLER}_handleError(A,Q){if(Q instanceof Error)A.setStatus({code:ZF.SpanStatusCode.ERROR,message:Q.message}),A.recordException(Q)}}var eUA="Hono";function W5Q(A){let Q=i(A).data,B=Q[gY.HONO_TYPE];if(Q[e]||!B)return;A.setAttributes({[n]:"auto.http.otel.hono",[e]:`${B}.hono`});let I=Q[gY.HONO_NAME];if(typeof I==="string")A.updateName(I);if(ZA()===UI()){hQ&&L.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let C=Q[Jw.ATTR_HTTP_ROUTE],E=Q[Jw.ATTR_HTTP_REQUEST_METHOD];if(typeof C==="string"&&typeof E==="string")ZA().setTransactionName(`${E} ${C}`)}var A4A=b(eUA,()=>new sM({responseHook:(A)=>{W5Q(A)}})),X5Q=()=>{return{name:eUA,setupOnce(){A4A()}}},Q4A=S(X5Q);var j4A=f(N4A(),1),R4A=f(HA(),1);var q4A="Koa",O4A=b(q4A,j4A.KoaInstrumentation,(A={})=>{return{ignoreLayersType:A.ignoreLayersType,requestHook(Q,B){vA(Q,"auto.http.otel.koa");let I=i(Q).data,C=I["koa.type"];if(C)Q.setAttribute(e,`${C}.koa`);let E=I["koa.name"];if(typeof E==="string")Q.updateName(E||"< unknown >");if(ZA()===UI()){hQ&&L.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let Y=I[R4A.ATTR_HTTP_ROUTE],J=B.context?.request?.method?.toUpperCase()||"GET";if(Y)ZA().setTransactionName(`${J} ${Y}`)}}}),R5Q=(A={})=>{return{name:q4A,setupOnce(){O4A(A)}}},T4A=S(R5Q);var o4A=f(a4A(),1);var s4A="Connect",r4A=b(s4A,()=>new o4A.ConnectInstrumentation),b5Q=()=>{return{name:s4A,setupOnce(){r4A()}}},t4A=S(b5Q);var K5A=f(w5A(),1);var AwQ=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),z5A="Tedious",V5A=b(z5A,()=>new K5A.TediousInstrumentation({})),QwQ=()=>{let A;return{name:z5A,setupOnce(){let Q=V5A();A=m9(Q)},setup(Q){A?.(()=>Q.on("spanStart",(B)=>{let{description:I,data:C}=i(B);if(!I||C["db.system"]!=="mssql")return;let E=I.split(" ")[0]||"";if(AwQ.has(E))B.setAttribute(n,"auto.db.otel.tedious")}))}}},$5A=S(QwQ);var P5A=f(T5A(),1);var k5A="GenericPool",S5A=b(k5A,()=>new P5A.GenericPoolInstrumentation({})),EwQ=()=>{let A;return{name:k5A,setupOnce(){let Q=S5A();A=m9(Q)},setup(Q){A?.(()=>Q.on("spanStart",(B)=>{let C=i(B).description;if(C==="generic-pool.aquire"||C==="generic-pool.acquire")B.setAttribute(n,"auto.db.otel.generic_pool")}))}}},y5A=S(EwQ);var BwA=f(QwA(),1);var IwA="Amqplib",bwQ={consumeEndHook:(A)=>{vA(A,"auto.amqplib.otel.consumer")},publishHook:(A)=>{vA(A,"auto.amqplib.otel.publisher")}},CwA=b(IwA,()=>new BwA.AmqplibInstrumentation(bwQ)),mwQ=()=>{return{name:IwA,setupOnce(){CwA()}}},EwA=S(mwQ);var vW="VercelAI";var Kw=f(JA(),1);var dwQ=[">=3.0.0 <7"],YwA=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function cwQ(A){if(typeof A!=="object"||A===null)return!1;let Q=A;return"type"in Q&&"error"in Q&&"toolName"in Q&&"toolCallId"in Q&&Q.type==="tool-error"&&Q.error instanceof Error}function uwQ(A){if(typeof A!=="object"||A===null||!("content"in A))return;let Q=A;if(!Array.isArray(Q.content))return;lwQ(Q.content),pwQ(Q.content)}function lwQ(A){for(let Q of A){if(!cwQ(Q))continue;let B=m3(Q.toolCallId);if(B)XB((I)=>{I.setContext("trace",{trace_id:B.traceId,span_id:B.spanId}),I.setTag("vercel.ai.tool.name",Q.toolName),I.setTag("vercel.ai.tool.callId",Q.toolCallId),I.setLevel("error"),IA(Q.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})});else XB((I)=>{I.setTag("vercel.ai.tool.name",Q.toolName),I.setTag("vercel.ai.tool.callId",Q.toolCallId),I.setLevel("error"),IA(Q.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}function pwQ(A){for(let Q of A)if(typeof Q==="object"&&Q!==null&&"toolCallId"in Q&&typeof Q.toolCallId==="string")d3(Q.toolCallId)}function iwQ(A,Q,B,I){let C=A?.recordInputs!==void 0?A.recordInputs:Q.recordInputs!==void 0?Q.recordInputs:B===!0?!0:I,E=A?.recordOutputs!==void 0?A.recordOutputs:Q.recordOutputs!==void 0?Q.recordOutputs:B===!0?!0:I;return{recordInputs:C,recordOutputs:E}}class bW extends Kw.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(A={}){super("@sentry/instrumentation-vercel-ai",VA,A);bW.prototype.__init.call(this),bW.prototype.__init2.call(this)}init(){return new Kw.InstrumentationNodeModuleDefinition("ai",dwQ,this._patch.bind(this))}callWhenPatched(A){if(this._isPatched)A();else this._callbacks.push(A)}_patch(A){this._isPatched=!0,this._callbacks.forEach((B)=>B()),this._callbacks=[];let Q=(B)=>{return new Proxy(B,{apply:(I,C,E)=>{let Y=E[0].experimental_telemetry||{},J=Y.isEnabled,F=u(),G=F?.getIntegrationByName(vW),D=G?.options,Z=G?Boolean(F?.getOptions().sendDefaultPii):!1,{recordInputs:W,recordOutputs:X}=iwQ(D,Y,J,Z);return E[0].experimental_telemetry={...Y,isEnabled:J!==void 0?J:!0,recordInputs:W,recordOutputs:X},OC(()=>Reflect.apply(I,C,E),(w)=>{if(w&&typeof w==="object")PQ(w,"_sentry_active_span",zI())},()=>{},(w)=>{uwQ(w)})}})};if(Object.prototype.toString.call(A)==="[object Module]"){for(let B of YwA)if(A[B]!=null)A[B]=Q(A[B]);return A}else{let B=YwA.reduce((I,C)=>{if(A[C]!=null)I[C]=Q(A[C]);return I},{});return{...A,...B}}}}var JwA=b(vW,()=>new bW({}));function nwQ(A){return!!A.getIntegrationByName("Modules")?.getModules?.()?.ai}var awQ=(A={})=>{let Q;return{name:vW,options:A,setupOnce(){Q=JwA()},afterAllSetup(B){if(A.force??nwQ(B))W4(B);else Q?.callWhenPatched(()=>W4(B))}}},FwA=S(awQ);var zw=f(JA(),1);var owQ=[">=4.0.0 <7"];class wN extends zw.InstrumentationBase{constructor(A={}){super("@sentry/instrumentation-openai",VA,A)}init(){return new zw.InstrumentationNodeModuleDefinition("openai",owQ,this._patch.bind(this))}_patch(A){let Q=A;return Q=this._patchClient(Q,"OpenAI"),Q=this._patchClient(Q,"AzureOpenAI"),Q}_patchClient(A,Q){let B=A[Q];if(!B)return A;let I=this.getConfig(),C=function(...E){if(xJ(KY))return Reflect.construct(B,E);let Y=Reflect.construct(B,E);return w4(Y,I)};Object.setPrototypeOf(C,B),Object.setPrototypeOf(C.prototype,B.prototype);for(let E of Object.getOwnPropertyNames(B))if(!["length","name","prototype"].includes(E)){let Y=Object.getOwnPropertyDescriptor(B,E);if(Y)Object.defineProperty(C,E,Y)}try{A[Q]=C}catch{Object.defineProperty(A,Q,{value:C,writable:!0,configurable:!0,enumerable:!0})}if(A.default===B)try{A.default=C}catch{Object.defineProperty(A,"default",{value:C,writable:!0,configurable:!0,enumerable:!0})}return A}}var GwA=b(KY,(A)=>new wN(A)),swQ=(A={})=>{return{name:KY,setupOnce(){GwA(A)}}},DwA=S(swQ);var Vw=f(JA(),1);var rwQ=[">=0.19.2 <1.0.0"];class KN extends Vw.InstrumentationBase{constructor(A={}){super("@sentry/instrumentation-anthropic-ai",VA,A)}init(){return new Vw.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",rwQ,this._patch.bind(this))}_patch(A){let Q=A.Anthropic,B=this.getConfig(),I=function(...C){if(xJ(zY))return Reflect.construct(Q,C);let E=Reflect.construct(Q,C);return K4(E,B)};Object.setPrototypeOf(I,Q),Object.setPrototypeOf(I.prototype,Q.prototype);for(let C of Object.getOwnPropertyNames(Q))if(!["length","name","prototype"].includes(C)){let E=Object.getOwnPropertyDescriptor(Q,C);if(E)Object.defineProperty(I,C,E)}try{A.Anthropic=I}catch{Object.defineProperty(A,"Anthropic",{value:I,writable:!0,configurable:!0,enumerable:!0})}if(A.default===Q)try{A.default=I}catch{Object.defineProperty(A,"default",{value:I,writable:!0,configurable:!0,enumerable:!0})}return A}}var ZwA=b(zY,(A)=>new KN(A)),twQ=(A={})=>{return{name:zY,options:A,setupOnce(){ZwA(A)}}},WwA=S(twQ);var lD=f(JA(),1);var XwA=[">=0.10.0 <2"];class zN extends lD.InstrumentationBase{constructor(A={}){super("@sentry/instrumentation-google-genai",VA,A)}init(){return new lD.InstrumentationNodeModuleDefinition("@google/genai",XwA,(Q)=>this._patch(Q),(Q)=>Q,[new lD.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",XwA,(Q)=>this._patch(Q),(Q)=>Q)])}_patch(A){let Q=A.GoogleGenAI,B=this.getConfig();if(typeof Q!=="function")return A;let I=function(...C){if(xJ(VY))return Reflect.construct(Q,C);let E=Reflect.construct(Q,C);return z4(E,B)};Object.setPrototypeOf(I,Q),Object.setPrototypeOf(I.prototype,Q.prototype);for(let C of Object.getOwnPropertyNames(Q))if(!["length","name","prototype"].includes(C)){let E=Object.getOwnPropertyDescriptor(Q,C);if(E)Object.defineProperty(I,C,E)}return M9(A,"GoogleGenAI",I),A}}var UwA=b(VY,(A)=>new zN(A)),ewQ=(A={})=>{return{name:VY,setupOnce(){UwA(A)}}},wwA=S(ewQ);var bY=f(JA(),1);var $w=[">=0.1.0 <2.0.0"];function AKQ(A,Q){if(!A)return[Q];if(Array.isArray(A)){if(A.includes(Q))return A;return[...A,Q]}if(typeof A==="object")return[A,Q];return A}function QKQ(A,Q,B){return new Proxy(A,{apply(I,C,E){let J=E[1];if(!J||typeof J!=="object"||Array.isArray(J))J={},E[1]=J;let F=J.callbacks,G=AKQ(F,Q);return J.callbacks=G,Reflect.apply(I,C,E)}})}class VN extends bY.InstrumentationBase{constructor(A={}){super("@sentry/instrumentation-langchain",VA,A)}init(){let A=[],Q=["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"];for(let B of Q)A.push(new bY.InstrumentationNodeModuleDefinition(B,$w,this._patch.bind(this),(I)=>I,[new bY.InstrumentationNodeModuleFile(`${B}/dist/index.cjs`,$w,this._patch.bind(this),(I)=>I)]));return A.push(new bY.InstrumentationNodeModuleDefinition("langchain",$w,this._patch.bind(this),(B)=>B,[new bY.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",$w,this._patch.bind(this),(B)=>B)])),A}_patch(A){G3([KY,zY,VY]);let Q=$4(this.getConfig());return this._patchRunnableMethods(A,Q),A}_patchRunnableMethods(A,Q){let B=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],I=A.universal_exports??A,C=Object.values(I).find((J)=>{return typeof J==="function"&&B.includes(J.name)});if(!C)return;let E=C.prototype;if(E.__sentry_patched__)return;E.__sentry_patched__=!0;let Y=["invoke","stream","batch"];for(let J of Y){let F=E[J];if(typeof F==="function")E[J]=QKQ(F,Q)}}}var KwA=b(V4,(A)=>new VN(A)),BKQ=(A={})=>{return{name:V4,setupOnce(){KwA(A)}}},zwA=S(BKQ);var pD=f(JA(),1);var VwA=[">=0.0.0 <2.0.0"];class $N extends pD.InstrumentationBase{constructor(A={}){super("@sentry/instrumentation-langgraph",VA,A)}init(){return new pD.InstrumentationNodeModuleDefinition("@langchain/langgraph",VwA,this._patch.bind(this),(Q)=>Q,[new pD.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",VwA,this._patch.bind(this),(Q)=>Q)])}_patch(A){if(A.StateGraph&&typeof A.StateGraph==="function")H4(A.StateGraph.prototype,this.getConfig());return A}}var $wA=b(L4,(A)=>new $N(A)),IKQ=(A={})=>{return{name:L4,setupOnce(){$wA(A)}}},LwA=S(IKQ);var TwA=f(JA(),1);var Z0=f(P(),1),W0=f(JA(),1),EC=f(HA(),1);import*as MwA from"node:net";function NwA(A,Q,B,I,C){let Y=()=>{},J=C.firestoreSpanCreationHook;if(typeof J==="function")Y=(D)=>{W0.safeExecuteInTheMiddle(()=>J(D),(Z)=>{if(!Z)return;Z0.diag.error(Z?.message)},!0)};let F=new W0.InstrumentationNodeModuleDefinition("@firebase/firestore",Q,(D)=>HwA(D,B,I,A,Y)),G=["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"];for(let D of G)F.files.push(new W0.InstrumentationNodeModuleFile(D,Q,(Z)=>HwA(Z,B,I,A,Y),(Z)=>jwA(Z,I)));return F}function HwA(A,Q,B,I,C){return jwA(A,B),Q(A,"addDoc",CKQ(I,C)),Q(A,"getDocs",YKQ(I,C)),Q(A,"setDoc",JKQ(I,C)),Q(A,"deleteDoc",EKQ(I,C)),A}function jwA(A,Q){for(let B of["addDoc","getDocs","setDoc","deleteDoc"])if(W0.isWrapped(A[B]))Q(A,B);return A}function CKQ(A,Q){return function(I){return function(C,E){let Y=Hw(A,"addDoc",C);return Q(Y),Lw(Y,()=>{return I(C,E)})}}}function EKQ(A,Q){return function(I){return function(C){let E=Hw(A,"deleteDoc",C.parent||C);return Q(E),Lw(E,()=>{return I(C)})}}}function YKQ(A,Q){return function(I){return function(C){let E=Hw(A,"getDocs",C);return Q(E),Lw(E,()=>{return I(C)})}}}function JKQ(A,Q){return function(I){return function(C,E,Y){let J=Hw(A,"setDoc",C.parent||C);return Q(J),Lw(J,()=>{return typeof Y<"u"?I(C,E,Y):I(C,E)})}}}function Lw(A,Q){return Z0.context.with(Z0.trace.setSpan(Z0.context.active(),A),()=>{return W0.safeExecuteInTheMiddle(()=>{return Q()},(B)=>{if(B)A.recordException(B);A.end()},!0)})}function Hw(A,Q,B){let I=A.startSpan(`${Q} ${B.path}`,{kind:Z0.SpanKind.CLIENT});return GKQ(I,B),I.setAttribute(EC.ATTR_DB_OPERATION_NAME,Q),I}function FKQ(A){let Q,B;if(typeof A.host==="string")if(A.host.startsWith("[")){if(A.host.endsWith("]"))Q=A.host.replace(/^\[|\]$/g,"");else if(A.host.includes("]:")){let I=A.host.lastIndexOf(":");if(I!==-1)Q=A.host.slice(1,I).replace(/^\[|\]$/g,""),B=A.host.slice(I+1)}}else if(MwA.isIPv6(A.host))Q=A.host;else{let I=A.host.lastIndexOf(":");if(I!==-1)Q=A.host.slice(0,I),B=A.host.slice(I+1);else Q=A.host}return{address:Q,port:B?parseInt(B,10):void 0}}function GKQ(A,Q){let B=Q.firestore.app,I=B.options,E=(Q.firestore.toJSON()||{}).settings||{},Y={[EC.ATTR_DB_COLLECTION_NAME]:Q.path,[EC.ATTR_DB_NAMESPACE]:B.name,[EC.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":Q.type,"firebase.firestore.options.projectId":I.projectId,"firebase.firestore.options.appId":I.appId,"firebase.firestore.options.messagingSenderId":I.messagingSenderId,"firebase.firestore.options.storageBucket":I.storageBucket},{address:J,port:F}=FKQ(E);if(J)Y[EC.ATTR_SERVER_ADDRESS]=J;if(F)Y[EC.ATTR_SERVER_PORT]=F;A.setAttributes(Y)}var zE=f(P(),1),X0=f(JA(),1);function RwA(A,Q,B,I,C){let E=()=>{},Y=()=>{},J=C.functions?.errorHook,F=C.functions?.requestHook,G=C.functions?.responseHook;if(typeof G==="function")Y=(W,X)=>{X0.safeExecuteInTheMiddle(()=>G(W,X),(w)=>{if(!w)return;zE.diag.error(w?.message)},!0)};if(typeof F==="function")E=(W)=>{X0.safeExecuteInTheMiddle(()=>F(W),(X)=>{if(!X)return;zE.diag.error(X?.message)},!0)};let D=new X0.InstrumentationNodeModuleDefinition("firebase-functions",Q);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:W,triggerType:X})=>{D.files.push(new X0.InstrumentationNodeModuleFile(W,Q,(w)=>DKQ(w,B,I,A,{requestHook:E,responseHook:Y,errorHook:J},X),(w)=>qwA(w,I)))}),D}function xB(A,Q,B){return function(C){return function(...E){let Y=typeof E[0]==="function"?E[0]:E[1],J=typeof E[0]==="function"?void 0:E[0];if(!Y)return C.call(this,...E);let F=async function(...G){let D=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",Z=A.startSpan(`firebase.function.${B}`,{kind:zE.SpanKind.SERVER}),W={"faas.name":D,"faas.trigger":B,"faas.provider":"firebase"};if(process.env.GCLOUD_PROJECT)W["cloud.project_id"]=process.env.GCLOUD_PROJECT;if(process.env.EVENTARC_CLOUD_EVENT_SOURCE)W["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE;return Z.setAttributes(W),Q?.requestHook?.(Z),zE.context.with(zE.trace.setSpan(zE.context.active(),Z),async()=>{let X,w;try{w=await Y.apply(this,G)}catch(K){X=K}if(Q?.responseHook?.(Z,X),X)Z.recordException(X);if(Z.end(),X)throw await Q?.errorHook?.(Z,X),X;return w})};if(J)return C.call(this,J,F);else return C.call(this,F)}}}function DKQ(A,Q,B,I,C,E){switch(qwA(A,B),E){case"function":Q(A,"onRequest",xB(I,C,"http.request")),Q(A,"onCall",xB(I,C,"http.call"));break;case"firestore":Q(A,"onDocumentCreated",xB(I,C,"firestore.document.created")),Q(A,"onDocumentUpdated",xB(I,C,"firestore.document.updated")),Q(A,"onDocumentDeleted",xB(I,C,"firestore.document.deleted")),Q(A,"onDocumentWritten",xB(I,C,"firestore.document.written")),Q(A,"onDocumentCreatedWithAuthContext",xB(I,C,"firestore.document.created")),Q(A,"onDocumentUpdatedWithAuthContext",xB(I,C,"firestore.document.updated")),Q(A,"onDocumentDeletedWithAuthContext",xB(I,C,"firestore.document.deleted")),Q(A,"onDocumentWrittenWithAuthContext",xB(I,C,"firestore.document.written"));break;case"scheduler":Q(A,"onSchedule",xB(I,C,"scheduler.scheduled"));break;case"storage":Q(A,"onObjectFinalized",xB(I,C,"storage.object.finalized")),Q(A,"onObjectArchived",xB(I,C,"storage.object.archived")),Q(A,"onObjectDeleted",xB(I,C,"storage.object.deleted")),Q(A,"onObjectMetadataUpdated",xB(I,C,"storage.object.metadataUpdated"));break}return A}function qwA(A,Q){let B=["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"];for(let I of B)if(X0.isWrapped(A[I]))Q(A,I);return A}var OwA={},ZKQ=[">=3.0.0 <5"],WKQ=[">=6.0.0 <7"];class LN extends TwA.InstrumentationBase{constructor(A=OwA){super("@sentry/instrumentation-firebase",VA,A)}setConfig(A={}){super.setConfig({...OwA,...A})}init(){let A=[];return A.push(NwA(this.tracer,ZKQ,this._wrap,this._unwrap,this.getConfig())),A.push(RwA(this.tracer,WKQ,this._wrap,this._unwrap,this.getConfig())),A}}var PwA="Firebase",XKQ={firestoreSpanCreationHook:(A)=>{vA(A,"auto.firebase.otel.firestore"),A.setAttribute(e,"db.query")},functions:{requestHook:(A)=>{vA(A,"auto.firebase.otel.functions"),A.setAttribute(e,"http.request")},errorHook:async(A,Q)=>{if(Q)IA(Q,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await hJ(2000)}}},kwA=b(PwA,()=>new LN(XKQ)),UKQ=()=>{return{name:PwA,setupOnce(){kwA()}}},SwA=S(UKQ);function ywA(){return[oJA(),hDA(),RZA(),Q4A(),_1A(),B9A(),N9A(),p9A(),nWA(),q8A(),OUA(),tUA(),T4A(),t4A(),$5A(),y5A(),tZA(),EwA(),X1A(),zwA(),LwA(),FwA(),DwA(),WwA(),wwA(),k8A(),SwA()]}var iD=f(P(),1),Mw=f(OL(),1),_wA=f(vL(),1),nD=f(HA(),1);var HN=1e6;function fwA(A,Q={}){if(A.getOptions().debug)QH();let[B,I]=wKQ(A,Q);A.traceProvider=B,A.asyncLocalStorageLookup=I}function wKQ(A,Q={}){let B=new _wA.BasicTracerProvider({sampler:new AH(A),resource:Mw.defaultResource().merge(Mw.resourceFromAttributes({[nD.ATTR_SERVICE_NAME]:"node",[nD.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[nD.ATTR_SERVICE_VERSION]:VA})),forceFlushTimeoutMillis:500,spanProcessors:[new eL({timeout:KKQ(A.getOptions().maxSpanWaitDuration)}),...Q.spanProcessors||[]]});iD.trace.setGlobalTracerProvider(B),iD.propagation.setGlobalPropagator(new tL);let I=new B5;return iD.context.setGlobalContextManager(I),[B,I.getAsyncLocalStorageLookup()]}function KKQ(A){if(A==null)return;if(A>HN)return hQ&&L.warn(`\`maxSpanWaitDuration\` is too high, using the maximum value of ${HN}`),HN;else if(A<=0||Number.isNaN(A)){hQ&&L.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return A}function gwA(){return G5().filter((Q)=>Q.name!=="Http"&&Q.name!=="NodeFetch").concat(ZJA(),jJA())}function hwA(A){return[...gwA(),...MQ(A)?ywA():[]]}function MN(A={}){return zKQ(A,hwA)}function zKQ(A={},Q){bJ(A,"node");let B=qH({...A,defaultIntegrations:A.defaultIntegrations??Q(A)});if(B&&!A.skipOpenTelemetrySetup)fwA(B,{spanProcessors:A.openTelemetrySpanProcessors}),D5();return B}var $KQ="https://b5a33745f4bf36a0f1e66dbcfceaa898@o4510814125228032.ingest.us.sentry.io/4511124523974656",xwA="1.0.0",aD=!1,LKQ=[/token/i,/secret/i,/password/i,/key/i,/credential/i,/auth/i,/^GITHUB_/i,/^AWS_/i,/^AZURE_/i,/^GCP_/i,/^NPM_/i,/^NODE_AUTH/i];function vwA(A){let Q=A;for(let[B,I]of Object.entries(process.env)){if(!I||I.length<8)continue;if(LKQ.some((C)=>C.test(B)))Q=Q.replaceAll(I,"[REDACTED]")}return Q}function bwA(A){if(delete A.server_name,delete A.extra,delete A.user,delete A.request,A.contexts={},A.breadcrumbs=[],A.exception?.values){for(let Q of A.exception.values)if(Q.value)Q.value=vwA(Q.value)}if(A.message)A.message=vwA(A.message);return A}function mwA(A,Q){if(aD=A,!A)return;MN({dsn:$KQ,defaultIntegrations:!1,environment:Q.channel,release:`setup-elide@${xwA}`,tracesSampleRate:1,beforeSend(B){return bwA(B)},beforeSendTransaction(B){return bwA(B)}}),Q9({installer:Q.installer,os:Q.os,arch:Q.arch,channel:Q.channel,version:Q.version,action_version:xwA})}function dwA(A,Q){if(!aD)return;XB((B)=>{if(Q)for(let[I,C]of Object.entries(Q))B.setTag(I,C);IA(A)})}async function Nw(A,Q,B){if(!aD)return B();return sB({name:A,op:Q,attributes:{"sentry.origin":"manual"}},async()=>B())}function cwA(A,Q,B,I){if(!aD)return;AD.gauge(A,Q,{unit:B,tags:I})}function jw(A,Q){if(!aD)return;e1(A,{level:"info",tags:Q})}async function uwA(){if(!aD)return;await hJ(2000)}import lwA from"node:os";import pwA from"node:path";var HKQ="C:\\Elide",MKQ=pwA.resolve(lwA.homedir(),"elide"),TAB=pwA.resolve(lwA.homedir(),".elide"),NKQ=process.platform==="win32"?HKQ:MKQ,qw={version:"latest",channel:"nightly",installer:"archive",telemetry:!0,no_cache:!1,export_path:!0,force:!1,os:NN(process.platform),arch:jN(process.arch),install_path:NKQ};function jKQ(A){switch(A.trim().toLowerCase()){case"archive":return"archive";case"shell":return"shell";case"msi":return"msi";case"pkg":return"pkg";case"apt":return"apt";case"rpm":return"rpm";default:return"archive"}}function iwA(A,Q){switch(A){case"archive":case"shell":return{valid:!0};case"msi":if(Q!=="windows")return{valid:!1,reason:"MSI is only available on Windows"};return{valid:!0};case"pkg":if(Q!=="darwin")return{valid:!1,reason:"PKG is only available on macOS"};return{valid:!0};case"apt":if(Q!=="linux")return{valid:!1,reason:"apt is only available on Linux"};return{valid:!0};case"rpm":if(Q!=="linux")return{valid:!1,reason:"RPM is only available on Linux"};return{valid:!0}}}function RKQ(A){switch(A.trim().toLowerCase()){case"nightly":return"nightly";case"preview":return"preview";case"release":case"stable":return"release";default:return"nightly"}}function NN(A){switch(A.trim().toLowerCase()){case"macos":return"darwin";case"mac":return"darwin";case"darwin":return"darwin";case"windows":return"windows";case"win":return"windows";case"win32":return"windows";case"linux":return"linux"}throw Error(`Unrecognized OS: ${A}`)}function jN(A){switch(A.trim().toLowerCase()){case"x64":return"amd64";case"amd64":return"amd64";case"x86_64":return"amd64";case"aarch64":return"aarch64";case"arm64":return"aarch64"}throw Error(`Unrecognized architecture: ${A}`)}function Ow(A){return{...qw,...A,os:NN(A?.os||qw.os),arch:jN(A?.arch||qw.arch)}}var qKQ=new Set(["token","secret","password"]);function OKQ(A){return qKQ.has(A)||A.toLowerCase().includes("token")||A.toLowerCase().includes("secret")}function U0(A,Q){let B=Az(A);if(OKQ(A))o(`Input: ${A}=${B?"":Q?"":""}`);else o(`Input: ${A}=${B||Q}`);return B||Q||void 0}function Rw(A,Q){try{return $g(A)}catch{return Q}}function nwA(){return Ow({version:U0("version","latest"),installer:jKQ(U0("installer","archive")),install_path:U0("install_path",process.env.ELIDE_HOME||qw.install_path),os:NN(U0("os",process.platform)),arch:jN(U0("arch",process.arch)),channel:RKQ(U0("channel","nightly")),force:Rw("force",!1),export_path:Rw("export_path",!0),no_cache:Rw("no_cache",!1),telemetry:Rw("telemetry",!0),token:U0("token",process.env.GITHUB_TOKEN),custom_url:U0("custom_url"),version_tag:U0("version_tag")})}function iQ(){if(typeof navigator==="object"&&"userAgent"in navigator)return navigator.userAgent;if(typeof process==="object"&&process.version!==void 0)return`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;return""}function Tw(A,Q,B,I){if(typeof B!=="function")throw Error("method for before hook must be a function");if(!I)I={};if(Array.isArray(Q))return Q.reverse().reduce((C,E)=>{return Tw.bind(null,A,E,C,I)},B)();return Promise.resolve().then(()=>{if(!A.registry[Q])return B(I);return A.registry[Q].reduce((C,E)=>{return E.hook.bind(null,C,I)},B)()})}function awA(A,Q,B,I){let C=I;if(!A.registry[B])A.registry[B]=[];if(Q==="before")I=(E,Y)=>{return Promise.resolve().then(C.bind(null,Y)).then(E.bind(null,Y))};if(Q==="after")I=(E,Y)=>{let J;return Promise.resolve().then(E.bind(null,Y)).then((F)=>{return J=F,C(J,Y)}).then(()=>{return J})};if(Q==="error")I=(E,Y)=>{return Promise.resolve().then(E.bind(null,Y)).catch((J)=>{return C(J,Y)})};A.registry[B].push({hook:I,orig:C})}function owA(A,Q,B){if(!A.registry[Q])return;let I=A.registry[Q].map((C)=>{return C.orig}).indexOf(B);if(I===-1)return;A.registry[Q].splice(I,1)}var swA=Function.bind,rwA=swA.bind(swA);function twA(A,Q,B){let I=rwA(owA,null).apply(null,B?[Q,B]:[Q]);A.api={remove:I},A.remove=I,["before","error","after","wrap"].forEach((C)=>{let E=B?[Q,C,B]:[Q,C];A[C]=A.api[C]=rwA(awA,null).apply(null,E)})}function TKQ(){let A=Symbol("Singular"),Q={registry:{}},B=Tw.bind(null,Q,A);return twA(B,Q,A),B}function PKQ(){let A={registry:{}},Q=Tw.bind(null,A);return twA(Q,A),Q}var ewA={Singular:TKQ,Collection:PKQ};var kKQ="0.0.0-development",SKQ=`octokit-endpoint.js/${kKQ} ${iQ()}`,yKQ={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":SKQ},mediaType:{format:""}};function _KQ(A){if(!A)return{};return Object.keys(A).reduce((Q,B)=>{return Q[B.toLowerCase()]=A[B],Q},{})}function fKQ(A){if(typeof A!=="object"||A===null)return!1;if(Object.prototype.toString.call(A)!=="[object Object]")return!1;let Q=Object.getPrototypeOf(A);if(Q===null)return!0;let B=Object.prototype.hasOwnProperty.call(Q,"constructor")&&Q.constructor;return typeof B==="function"&&B instanceof B&&Function.prototype.call(B)===Function.prototype.call(A)}function BKA(A,Q){let B=Object.assign({},A);return Object.keys(Q).forEach((I)=>{if(fKQ(Q[I]))if(!(I in A))Object.assign(B,{[I]:Q[I]});else B[I]=BKA(A[I],Q[I]);else Object.assign(B,{[I]:Q[I]})}),B}function AKA(A){for(let Q in A)if(A[Q]===void 0)delete A[Q];return A}function qN(A,Q,B){if(typeof Q==="string"){let[C,E]=Q.split(" ");B=Object.assign(E?{method:C,url:E}:{url:C},B)}else B=Object.assign({},Q);B.headers=_KQ(B.headers),AKA(B),AKA(B.headers);let I=BKA(A||{},B);if(B.url==="/graphql"){if(A&&A.mediaType.previews?.length)I.mediaType.previews=A.mediaType.previews.filter((C)=>!I.mediaType.previews.includes(C)).concat(I.mediaType.previews);I.mediaType.previews=(I.mediaType.previews||[]).map((C)=>C.replace(/-preview/,""))}return I}function gKQ(A,Q){let B=/\?/.test(A)?"&":"?",I=Object.keys(Q);if(I.length===0)return A;return A+B+I.map((C)=>{if(C==="q")return"q="+Q.q.split("+").map(encodeURIComponent).join("+");return`${C}=${encodeURIComponent(Q[C])}`}).join("&")}var hKQ=/\{[^{}}]+\}/g;function xKQ(A){return A.replace(/(?:^\W+)|(?:(?B.concat(I),[])}function QKA(A,Q){let B={__proto__:null};for(let I of Object.keys(A))if(Q.indexOf(I)===-1)B[I]=A[I];return B}function IKA(A){return A.split(/(%[0-9A-Fa-f]{2})/g).map(function(Q){if(!/%[0-9A-Fa-f]/.test(Q))Q=encodeURI(Q).replace(/%5B/g,"[").replace(/%5D/g,"]");return Q}).join("")}function sD(A){return encodeURIComponent(A).replace(/[!'()*]/g,function(Q){return"%"+Q.charCodeAt(0).toString(16).toUpperCase()})}function mW(A,Q,B){if(Q=A==="+"||A==="#"?IKA(Q):sD(Q),B)return sD(B)+"="+Q;else return Q}function oD(A){return A!==void 0&&A!==null}function RN(A){return A===";"||A==="&"||A==="?"}function bKQ(A,Q,B,I){var C=A[B],E=[];if(oD(C)&&C!=="")if(typeof C==="string"||typeof C==="number"||typeof C==="bigint"||typeof C==="boolean"){if(C=C.toString(),I&&I!=="*")C=C.substring(0,parseInt(I,10));E.push(mW(Q,C,RN(Q)?B:""))}else if(I==="*")if(Array.isArray(C))C.filter(oD).forEach(function(Y){E.push(mW(Q,Y,RN(Q)?B:""))});else Object.keys(C).forEach(function(Y){if(oD(C[Y]))E.push(mW(Q,C[Y],Y))});else{let Y=[];if(Array.isArray(C))C.filter(oD).forEach(function(J){Y.push(mW(Q,J))});else Object.keys(C).forEach(function(J){if(oD(C[J]))Y.push(sD(J)),Y.push(mW(Q,C[J].toString()))});if(RN(Q))E.push(sD(B)+"="+Y.join(","));else if(Y.length!==0)E.push(Y.join(","))}else if(Q===";"){if(oD(C))E.push(sD(B))}else if(C===""&&(Q==="&"||Q==="?"))E.push(sD(B)+"=");else if(C==="")E.push("");return E}function mKQ(A){return{expand:dKQ.bind(null,A)}}function dKQ(A,Q){var B=["+","#",".","/",";","?","&"];if(A=A.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(I,C,E){if(C){let J="",F=[];if(B.indexOf(C.charAt(0))!==-1)J=C.charAt(0),C=C.substr(1);if(C.split(/,/g).forEach(function(G){var D=/([^:\*]*)(?::(\d+)|(\*))?/.exec(G);F.push(bKQ(Q,J,D[1],D[2]||D[3]))}),J&&J!=="+"){var Y=",";if(J==="?")Y="&";else if(J!=="#")Y=J;return(F.length!==0?J:"")+F.join(Y)}else return F.join(",")}else return IKA(E)}),A==="/")return A;else return A.replace(/\/$/,"")}function CKA(A){let Q=A.method.toUpperCase(),B=(A.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),I=Object.assign({},A.headers),C,E=QKA(A,["method","baseUrl","url","headers","request","mediaType"]),Y=vKQ(B);if(B=mKQ(B).expand(E),!/^http/.test(B))B=A.baseUrl+B;let J=Object.keys(A).filter((D)=>Y.includes(D)).concat("baseUrl"),F=QKA(E,J);if(!/application\/octet-stream/i.test(I.accept)){if(A.mediaType.format)I.accept=I.accept.split(/,/).map((D)=>D.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${A.mediaType.format}`)).join(",");if(B.endsWith("/graphql")){if(A.mediaType.previews?.length){let D=I.accept.match(/(?{let W=A.mediaType.format?`.${A.mediaType.format}`:"+json";return`application/vnd.github.${Z}-preview${W}`}).join(",")}}}if(["GET","HEAD"].includes(Q))B=gKQ(B,F);else if("data"in F)C=F.data;else if(Object.keys(F).length)C=F;if(!I["content-type"]&&typeof C<"u")I["content-type"]="application/json; charset=utf-8";if(["PATCH","PUT"].includes(Q)&&typeof C>"u")C="";return Object.assign({method:Q,url:B,headers:I},typeof C<"u"?{body:C}:null,A.request?{request:A.request}:null)}function cKQ(A,Q,B){return CKA(qN(A,Q,B))}function EKA(A,Q){let B=qN(A,Q),I=cKQ.bind(null,B);return Object.assign(I,{DEFAULTS:B,defaults:EKA.bind(null,B),merge:qN.bind(null,B),parse:CKA})}var YKA=EKA(null,yKQ);var ON=function(){};ON.prototype=Object.create(null);var JKA=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,FKA=/\\([\v\u0020-\u00ff])/gu,uKQ=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,rD={type:"",parameters:new ON};Object.freeze(rD.parameters);Object.freeze(rD);function lKQ(A){if(typeof A!=="string")return rD;let Q=A.indexOf(";"),B=Q!==-1?A.slice(0,Q).trim():A.trim();if(uKQ.test(B)===!1)return rD;let I={type:B.toLowerCase(),parameters:new ON};if(Q===-1)return I;let C,E,Y;JKA.lastIndex=Q;while(E=JKA.exec(A)){if(E.index!==Q)return rD;if(Q+=E[0].length,C=E[1].toLowerCase(),Y=E[2],Y[0]==='"')Y=Y.slice(1,Y.length-1),FKA.test(Y)&&(Y=Y.replace(FKA,"$1"));I.parameters[C]=Y}if(Q!==A.length)return rD;return I}var TN=lKQ;var iKQ=/^-?\d+$/,ZKA=/^-?\d+n+$/,PN=JSON.stringify,GKA=JSON.parse,nKQ=/^-?\d+n$/,aKQ=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,oKQ=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,WKA=(A,Q,B)=>{if("rawJSON"in JSON)return PN(A,(Y,J)=>{if(typeof J==="bigint")return JSON.rawJSON(J.toString());if(typeof Q==="function")return Q(Y,J);if(Array.isArray(Q)&&Q.includes(Y))return J;return J},B);if(!A)return PN(A,Q,B);return PN(A,(Y,J)=>{if(typeof J==="string"&&ZKA.test(J))return J.toString()+"n";if(typeof J==="bigint")return J.toString()+"n";if(typeof Q==="function")return Q(Y,J);if(Array.isArray(Q)&&Q.includes(Y))return J;return J},B).replace(aKQ,"$1$2$3").replace(oKQ,"$1$2$3")},Pw=new Map,sKQ=()=>{let A=JSON.parse.toString();if(Pw.has(A))return Pw.get(A);try{let Q=JSON.parse("1",(B,I,C)=>!!C?.source&&C.source==="1");return Pw.set(A,Q),Q}catch{return Pw.set(A,!1),!1}},rKQ=(A,Q,B,I)=>{if(typeof Q==="string"&&nKQ.test(Q))return BigInt(Q.slice(0,-1));if(typeof Q==="string"&&ZKA.test(Q))return Q.slice(0,-1);if(typeof I!=="function")return Q;return I(A,Q,B)},tKQ=(A,Q)=>{return JSON.parse(A,(B,I,C)=>{let E=typeof I==="number"&&(I>Number.MAX_SAFE_INTEGER||I{if(!A)return GKA(A,Q);if(sKQ())return tKQ(A,Q);let B=A.replace(eKQ,(I,C,E,Y)=>{let J=I[0]==='"';if(J&&A6Q.test(I))return I.substring(0,I.length-1)+'n"';let G=E||Y,D=C&&(C.lengthrKQ(I,C,E,Q))};class VE extends Error{name;status;request;response;constructor(A,Q,B){super(A,{cause:B.cause});if(this.name="HttpError",this.status=Number.parseInt(Q),Number.isNaN(this.status))this.status=0;if("response"in B)this.response=B.response;let I=Object.assign({},B.request);if(B.request.headers.authorization)I.headers=Object.assign({},B.request.headers,{authorization:B.request.headers.authorization.replace(/(?"";async function KKA(A){let Q=A.request?.fetch||globalThis.fetch;if(!Q)throw Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");let B=A.request?.log||console,I=A.request?.parseSuccessResponseBody!==!1,C=I6Q(A.body)||Array.isArray(A.body)?WKA(A.body):A.body,E=Object.fromEntries(Object.entries(A.headers).map(([Z,W])=>[Z,String(W)])),Y;try{Y=await Q(A.url,{method:A.method,body:C,redirect:A.request?.redirect,headers:E,signal:A.request?.signal,...A.body&&{duplex:"half"}})}catch(Z){let W="Unknown Error";if(Z instanceof Error){if(Z.name==="AbortError")throw Z.status=500,Z;if(W=Z.message,Z.name==="TypeError"&&"cause"in Z){if(Z.cause instanceof Error)W=Z.cause.message;else if(typeof Z.cause==="string")W=Z.cause}}let X=new VE(W,500,{request:A});throw X.cause=Z,X}let{status:J,url:F}=Y,G={};for(let[Z,W]of Y.headers)G[Z]=W;let D={url:F,status:J,headers:G,data:""};if("deprecation"in G){let Z=G.link&&G.link.match(/<([^<>]+)>; rel="deprecation"/),W=Z&&Z.pop();B.warn(`[@octokit/request] "${A.method} ${A.url}" is deprecated. It is scheduled to be removed on ${G.sunset}${W?`. See ${W}`:""}`)}if(J===204||J===205)return D;if(A.method==="HEAD"){if(J<400)return D;throw new VE(Y.statusText,J,{response:D,request:A})}if(J===304)throw D.data=await kN(Y),new VE("Not modified",J,{response:D,request:A});if(J>=400)throw D.data=await kN(Y),new VE(E6Q(D.data),J,{response:D,request:A});return D.data=I?await kN(Y):Y.body,D}async function kN(A){let Q=A.headers.get("content-type");if(!Q)return A.text().catch(wKA);let B=TN(Q);if(C6Q(B)){let I="";try{return I=await A.text(),UKA(I)}catch(C){return I}}else if(B.type.startsWith("text/")||B.parameters.charset?.toLowerCase()==="utf-8")return A.text().catch(wKA);else return A.arrayBuffer().catch(()=>new ArrayBuffer(0))}function C6Q(A){return A.type==="application/json"||A.type==="application/scim+json"}function E6Q(A){if(typeof A==="string")return A;if(A instanceof ArrayBuffer)return"Unknown error";if("message"in A){let Q="documentation_url"in A?` - ${A.documentation_url}`:"";return Array.isArray(A.errors)?`${A.message}: ${A.errors.map((B)=>JSON.stringify(B)).join(", ")}${Q}`:`${A.message}${Q}`}return`Unknown error: ${JSON.stringify(A)}`}function SN(A,Q){let B=A.defaults(Q);return Object.assign(function(C,E){let Y=B.merge(C,E);if(!Y.request||!Y.request.hook)return KKA(B.parse(Y));let J=(F,G)=>{return KKA(B.parse(B.merge(F,G)))};return Object.assign(J,{endpoint:B,defaults:SN.bind(null,B)}),Y.request.hook(J,Y)},{endpoint:B,defaults:SN.bind(null,B)})}var OA=SN(YKA,B6Q);var Y6Q="0.0.0-development";function J6Q(A){return`Request failed due to following response errors: `+A.errors.map((Q)=>` - ${Q.message}`).join(` -`)}var Rq=class extends Error{constructor(A,Q,B){super(Zq(B));if(this.request=A,this.headers=Q,this.response=B,this.errors=B.errors,this.data=B.data,Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},Xq=["method","baseUrl","url","headers","request","query","mediaType","operationName"],Kq=["query","method","url"],a1=/\/api\/v3\/?$/;function zq(A,Q,B){if(B){if(typeof Q==="string"&&"query"in B)return Promise.reject(Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let g in B){if(!Kq.includes(g))continue;return Promise.reject(Error(`[@octokit/graphql] "${g}" cannot be used as variable name`))}}let I=typeof Q==="string"?Object.assign({query:Q},B):Q,E=Object.keys(I).reduce((g,F)=>{if(Xq.includes(F))return g[F]=I[F],g;if(!g.variables)g.variables={};return g.variables[F]=I[F],g},{}),C=I.baseUrl||A.endpoint.DEFAULTS.baseUrl;if(a1.test(C))E.url=C.replace(a1,"/api/graphql");return A(E).then((g)=>{if(g.data.errors){let F={};for(let D of Object.keys(g.headers))F[D]=g.headers[D];throw new Rq(E,F,g.data)}return g.data.data})}function PJ(A,Q){let B=A.defaults(Q);return Object.assign((E,C)=>{return zq(B,E,C)},{defaults:PJ.bind(null,B),endpoint:B.endpoint})}var Ic=PJ(o,{headers:{"user-agent":`octokit-graphql.js/${Vq} ${TA()}`},method:"POST",url:"/graphql"});function s1(A){return PJ(A,{method:"POST",url:"/graphql"})}var qJ="(?:[a-zA-Z0-9_-]+)",o1="\\.",r1=new RegExp(`^${qJ}${o1}${qJ}${o1}${qJ}$`),Sq=r1.test.bind(r1);async function $q(A){let Q=Sq(A),B=A.startsWith("v1.")||A.startsWith("ghs_"),I=A.startsWith("ghu_");return{type:"token",token:A,tokenType:Q?"app":B?"installation":I?"user-to-server":"oauth"}}function Hq(A){if(A.split(/\./).length===3)return`bearer ${A}`;return`token ${A}`}async function Tq(A,Q,B,I){let E=Q.endpoint.merge(B,I);return E.headers.authorization=Hq(A),Q(E)}var t1=function(Q){if(!Q)throw Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof Q!=="string")throw Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return Q=Q.replace(/^(token|bearer) +/i,""),Object.assign($q.bind(null,Q),{hook:Tq.bind(null,Q)})};var yJ="7.0.6";var e1=()=>{},_q=console.warn.bind(console),jq=console.error.bind(console);function xq(A={}){if(typeof A.debug!=="function")A.debug=e1;if(typeof A.info!=="function")A.info=e1;if(typeof A.warn!=="function")A.warn=_q;if(typeof A.error!=="function")A.error=jq;return A}var A9=`octokit-core.js/${yJ} ${TA()}`;class WB{static VERSION=yJ;static defaults(A){return class extends this{constructor(...B){let I=B[0]||{};if(typeof A==="function"){super(A(I));return}super(Object.assign({},A,I,I.userAgent&&A.userAgent?{userAgent:`${I.userAgent} ${A.userAgent}`}:null))}}}static plugins=[];static plugin(...A){let Q=this.plugins;return class extends this{static plugins=Q.concat(A.filter((I)=>!Q.includes(I)))}}constructor(A={}){let Q=new x1.Collection,B={baseUrl:o.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},A.request,{hook:Q.bind(null,"request")}),mediaType:{previews:[],format:""}};if(B.headers["user-agent"]=A.userAgent?`${A.userAgent} ${A9}`:A9,A.baseUrl)B.baseUrl=A.baseUrl;if(A.previews)B.mediaType.previews=A.previews;if(A.timeZone)B.headers["time-zone"]=A.timeZone;if(this.request=o.defaults(B),this.graphql=s1(this.request).defaults(B),this.log=xq(A.log),this.hook=Q,!A.authStrategy)if(!A.auth)this.auth=async()=>({type:"unauthenticated"});else{let E=t1(A.auth);Q.wrap("request",E.hook),this.auth=E}else{let{authStrategy:E,...C}=A,g=E(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:C},A.auth));Q.wrap("request",g.hook),this.auth=g}let I=this.constructor;for(let E=0;E({async next(){if(!F)return{done:!0};try{let D=await E({method:C,url:F,headers:g}),J=Pq(D);if(F=((J.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!F&&"total_commits"in J.data){let Y=new URL(J.url),U=Y.searchParams,N=parseInt(U.get("page")||"1",10),w=parseInt(U.get("per_page")||"250",10);if(N*w{if(E.done)return Q;let C=!1;function g(){C=!0}if(Q=Q.concat(I?I(E.value,g):E.value.data),C)return Q;return B9(A,Q,B,I)})}var eF=Object.assign(Q9,{iterator:hJ});function bC(A){return{paginate:Object.assign(Q9.bind(null,A),{iterator:hJ.bind(null,A)})}}bC.VERSION=Oq;var qq=(A,Q)=>`The cursor at "${A.join(",")}" did not change its value "${Q}" after a page transition. Please make sure your that your query is set up correctly.`,yq=class extends Error{constructor(A,Q){super(qq(A.pathInQuery,Q));if(this.pageInfo=A,this.cursorValue=Q,Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}name="MissingCursorChangeError"},hq=class extends Error{constructor(A){super(`No pageInfo property found in response. Please make sure to specify the pageInfo in your query. Response-Data: ${JSON.stringify(A,null,2)}`);if(this.response=A,Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}name="MissingPageInfo"},kq=(A)=>Object.prototype.toString.call(A)==="[object Object]";function I9(A){let Q=E9(A,"pageInfo");if(Q.length===0)throw new hq(A);return Q}var E9=(A,Q,B=[])=>{for(let I of Object.keys(A)){let E=[...B,I],C=A[I];if(kq(C)){if(C.hasOwnProperty(Q))return E;let g=E9(C,Q,E);if(g.length>0)return g}}return[]},mC=(A,Q)=>{return Q.reduce((B,I)=>B[I],A)},kJ=(A,Q,B)=>{let I=Q[Q.length-1],E=[...Q].slice(0,-1),C=mC(A,E);if(typeof B==="function")C[I]=B(C[I]);else C[I]=B},fq=(A)=>{let Q=I9(A);return{pathInQuery:Q,pageInfo:mC(A,[...Q,"pageInfo"])}},C9=(A)=>{return A.hasOwnProperty("hasNextPage")},vq=(A)=>C9(A)?A.endCursor:A.startCursor,bq=(A)=>C9(A)?A.hasNextPage:A.hasPreviousPage,g9=(A)=>{return(Q,B={})=>{let I=!0,E={...B};return{[Symbol.asyncIterator]:()=>({async next(){if(!I)return{done:!0,value:{}};let C=await A.graphql(Q,E),g=fq(C),F=vq(g.pageInfo);if(I=bq(g.pageInfo),I&&F===E.cursor)throw new yq(g,F);return E={...E,cursor:F},{done:!1,value:C}}})}}},mq=(A,Q)=>{if(Object.keys(A).length===0)return Object.assign(A,Q);let B=I9(A),I=[...B,"nodes"],E=mC(Q,I);if(E)kJ(A,I,(D)=>{return[...D,...E]});let C=[...B,"edges"],g=mC(Q,C);if(g)kJ(A,C,(D)=>{return[...D,...g]});let F=[...B,"pageInfo"];return kJ(A,F,mC(Q,F)),A},uq=(A)=>{let Q=g9(A);return async(B,I={})=>{let E={};for await(let C of Q(B,I))E=mq(E,C);return E}};function F9(A){return{graphql:Object.assign(A.graphql,{paginate:Object.assign(uq(A),{iterator:g9(A)})})}}var fJ="17.0.0";var cq={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createHostedRunnerForOrg:["POST /orgs/{org}/actions/hosted-runners"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],createRegistrationTokenForOrg:["POST /orgs/{org}/actions/runners/registration-token"],createRegistrationTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/registration-token"],createRemoveTokenForOrg:["POST /orgs/{org}/actions/runners/remove-token"],createRemoveTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/remove-token"],createRepoVariable:["POST /repos/{owner}/{repo}/actions/variables"],createWorkflowDispatch:["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],deleteActionsCacheById:["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],deleteActionsCacheByKey:["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],deleteArtifact:["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],deleteCustomImageFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],deleteCustomImageVersionFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],deleteEnvironmentSecret:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],deleteEnvironmentVariable:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],deleteHostedRunnerForOrg:["DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],deleteOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}"],deleteOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],deleteRepoVariable:["DELETE /repos/{owner}/{repo}/actions/variables/{name}"],deleteSelfHostedRunnerFromOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}"],deleteSelfHostedRunnerFromRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],deleteWorkflowRun:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],deleteWorkflowRunLogs:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],disableSelectedRepositoryGithubActionsOrganization:["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],disableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],downloadArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],downloadJobLogsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],downloadWorkflowRunAttemptLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],downloadWorkflowRunLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],enableSelectedRepositoryGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],enableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],forceCancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"],generateRunnerJitconfigForOrg:["POST /orgs/{org}/actions/runners/generate-jitconfig"],generateRunnerJitconfigForRepo:["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"],getActionsCacheList:["GET /repos/{owner}/{repo}/actions/caches"],getActionsCacheUsage:["GET /repos/{owner}/{repo}/actions/cache/usage"],getActionsCacheUsageByRepoForOrg:["GET /orgs/{org}/actions/cache/usage-by-repository"],getActionsCacheUsageForOrg:["GET /orgs/{org}/actions/cache/usage"],getAllowedActionsOrganization:["GET /orgs/{org}/actions/permissions/selected-actions"],getAllowedActionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],getArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],getCustomImageForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],getCustomImageVersionForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],getCustomOidcSubClaimForRepo:["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"],getEnvironmentPublicKey:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"],getEnvironmentSecret:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],getEnvironmentVariable:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],getGithubActionsDefaultWorkflowPermissionsOrganization:["GET /orgs/{org}/actions/permissions/workflow"],getGithubActionsDefaultWorkflowPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/workflow"],getGithubActionsPermissionsOrganization:["GET /orgs/{org}/actions/permissions"],getGithubActionsPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions"],getHostedRunnerForOrg:["GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],getHostedRunnersGithubOwnedImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/github-owned"],getHostedRunnersLimitsForOrg:["GET /orgs/{org}/actions/hosted-runners/limits"],getHostedRunnersMachineSpecsForOrg:["GET /orgs/{org}/actions/hosted-runners/machine-sizes"],getHostedRunnersPartnerImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/partner"],getHostedRunnersPlatformsForOrg:["GET /orgs/{org}/actions/hosted-runners/platforms"],getJobForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],getOrgPublicKey:["GET /orgs/{org}/actions/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}"],getOrgVariable:["GET /orgs/{org}/actions/variables/{name}"],getPendingDeploymentsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],getRepoPermissions:["GET /repos/{owner}/{repo}/actions/permissions",{},{renamed:["actions","getGithubActionsPermissionsRepository"]}],getRepoPublicKey:["GET /repos/{owner}/{repo}/actions/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],getRepoVariable:["GET /repos/{owner}/{repo}/actions/variables/{name}"],getReviewsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],getSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}"],getSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],getWorkflow:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],getWorkflowAccessToRepository:["GET /repos/{owner}/{repo}/actions/permissions/access"],getWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],getWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],getWorkflowRunUsage:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],getWorkflowUsage:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],listArtifactsForRepo:["GET /repos/{owner}/{repo}/actions/artifacts"],listCustomImageVersionsForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"],listCustomImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom"],listEnvironmentSecrets:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"],listEnvironmentVariables:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"],listGithubHostedRunnersInGroupForOrg:["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"],listHostedRunnersForOrg:["GET /orgs/{org}/actions/hosted-runners"],listJobsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],listJobsForWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],listLabelsForSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}/labels"],listLabelsForSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],listOrgSecrets:["GET /orgs/{org}/actions/secrets"],listOrgVariables:["GET /orgs/{org}/actions/variables"],listRepoOrganizationSecrets:["GET /repos/{owner}/{repo}/actions/organization-secrets"],listRepoOrganizationVariables:["GET /repos/{owner}/{repo}/actions/organization-variables"],listRepoSecrets:["GET /repos/{owner}/{repo}/actions/secrets"],listRepoVariables:["GET /repos/{owner}/{repo}/actions/variables"],listRepoWorkflows:["GET /repos/{owner}/{repo}/actions/workflows"],listRunnerApplicationsForOrg:["GET /orgs/{org}/actions/runners/downloads"],listRunnerApplicationsForRepo:["GET /repos/{owner}/{repo}/actions/runners/downloads"],listSelectedReposForOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],listSelectedReposForOrgVariable:["GET /orgs/{org}/actions/variables/{name}/repositories"],listSelectedRepositoriesEnabledGithubActionsOrganization:["GET /orgs/{org}/actions/permissions/repositories"],listSelfHostedRunnersForOrg:["GET /orgs/{org}/actions/runners"],listSelfHostedRunnersForRepo:["GET /repos/{owner}/{repo}/actions/runners"],listWorkflowRunArtifacts:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],listWorkflowRuns:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],listWorkflowRunsForRepo:["GET /repos/{owner}/{repo}/actions/runs"],reRunJobForWorkflowRun:["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],reRunWorkflow:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],reRunWorkflowFailedJobs:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],removeAllCustomLabelsFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],removeAllCustomLabelsFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],removeCustomLabelFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],removeCustomLabelFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],reviewCustomGatesForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"],reviewPendingDeploymentsForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],setAllowedActionsOrganization:["PUT /orgs/{org}/actions/permissions/selected-actions"],setAllowedActionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],setCustomLabelsForSelfHostedRunnerForOrg:["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],setCustomLabelsForSelfHostedRunnerForRepo:["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],setCustomOidcSubClaimForRepo:["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"],setGithubActionsDefaultWorkflowPermissionsOrganization:["PUT /orgs/{org}/actions/permissions/workflow"],setGithubActionsDefaultWorkflowPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],setGithubActionsPermissionsOrganization:["PUT /orgs/{org}/actions/permissions"],setGithubActionsPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],setSelectedReposForOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories"],setSelectedRepositoriesEnabledGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories"],setWorkflowAccessToRepository:["PUT /repos/{owner}/{repo}/actions/permissions/access"],updateEnvironmentVariable:["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],updateHostedRunnerForOrg:["PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],updateOrgVariable:["PATCH /orgs/{org}/actions/variables/{name}"],updateRepoVariable:["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]},activity:{checkRepoIsStarredByAuthenticatedUser:["GET /user/starred/{owner}/{repo}"],deleteRepoSubscription:["DELETE /repos/{owner}/{repo}/subscription"],deleteThreadSubscription:["DELETE /notifications/threads/{thread_id}/subscription"],getFeeds:["GET /feeds"],getRepoSubscription:["GET /repos/{owner}/{repo}/subscription"],getThread:["GET /notifications/threads/{thread_id}"],getThreadSubscriptionForAuthenticatedUser:["GET /notifications/threads/{thread_id}/subscription"],listEventsForAuthenticatedUser:["GET /users/{username}/events"],listNotificationsForAuthenticatedUser:["GET /notifications"],listOrgEventsForAuthenticatedUser:["GET /users/{username}/events/orgs/{org}"],listPublicEvents:["GET /events"],listPublicEventsForRepoNetwork:["GET /networks/{owner}/{repo}/events"],listPublicEventsForUser:["GET /users/{username}/events/public"],listPublicOrgEvents:["GET /orgs/{org}/events"],listReceivedEventsForUser:["GET /users/{username}/received_events"],listReceivedPublicEventsForUser:["GET /users/{username}/received_events/public"],listRepoEvents:["GET /repos/{owner}/{repo}/events"],listRepoNotificationsForAuthenticatedUser:["GET /repos/{owner}/{repo}/notifications"],listReposStarredByAuthenticatedUser:["GET /user/starred"],listReposStarredByUser:["GET /users/{username}/starred"],listReposWatchedByUser:["GET /users/{username}/subscriptions"],listStargazersForRepo:["GET /repos/{owner}/{repo}/stargazers"],listWatchedReposForAuthenticatedUser:["GET /user/subscriptions"],listWatchersForRepo:["GET /repos/{owner}/{repo}/subscribers"],markNotificationsAsRead:["PUT /notifications"],markRepoNotificationsAsRead:["PUT /repos/{owner}/{repo}/notifications"],markThreadAsDone:["DELETE /notifications/threads/{thread_id}"],markThreadAsRead:["PATCH /notifications/threads/{thread_id}"],setRepoSubscription:["PUT /repos/{owner}/{repo}/subscription"],setThreadSubscription:["PUT /notifications/threads/{thread_id}/subscription"],starRepoForAuthenticatedUser:["PUT /user/starred/{owner}/{repo}"],unstarRepoForAuthenticatedUser:["DELETE /user/starred/{owner}/{repo}"]},apps:{addRepoToInstallation:["PUT /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","addRepoToInstallationForAuthenticatedUser"]}],addRepoToInstallationForAuthenticatedUser:["PUT /user/installations/{installation_id}/repositories/{repository_id}"],checkToken:["POST /applications/{client_id}/token"],createFromManifest:["POST /app-manifests/{code}/conversions"],createInstallationAccessToken:["POST /app/installations/{installation_id}/access_tokens"],deleteAuthorization:["DELETE /applications/{client_id}/grant"],deleteInstallation:["DELETE /app/installations/{installation_id}"],deleteToken:["DELETE /applications/{client_id}/token"],getAuthenticated:["GET /app"],getBySlug:["GET /apps/{app_slug}"],getInstallation:["GET /app/installations/{installation_id}"],getOrgInstallation:["GET /orgs/{org}/installation"],getRepoInstallation:["GET /repos/{owner}/{repo}/installation"],getSubscriptionPlanForAccount:["GET /marketplace_listing/accounts/{account_id}"],getSubscriptionPlanForAccountStubbed:["GET /marketplace_listing/stubbed/accounts/{account_id}"],getUserInstallation:["GET /users/{username}/installation"],getWebhookConfigForApp:["GET /app/hook/config"],getWebhookDelivery:["GET /app/hook/deliveries/{delivery_id}"],listAccountsForPlan:["GET /marketplace_listing/plans/{plan_id}/accounts"],listAccountsForPlanStubbed:["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],listInstallationReposForAuthenticatedUser:["GET /user/installations/{installation_id}/repositories"],listInstallationRequestsForAuthenticatedApp:["GET /app/installation-requests"],listInstallations:["GET /app/installations"],listInstallationsForAuthenticatedUser:["GET /user/installations"],listPlans:["GET /marketplace_listing/plans"],listPlansStubbed:["GET /marketplace_listing/stubbed/plans"],listReposAccessibleToInstallation:["GET /installation/repositories"],listSubscriptionsForAuthenticatedUser:["GET /user/marketplace_purchases"],listSubscriptionsForAuthenticatedUserStubbed:["GET /user/marketplace_purchases/stubbed"],listWebhookDeliveries:["GET /app/hook/deliveries"],redeliverWebhookDelivery:["POST /app/hook/deliveries/{delivery_id}/attempts"],removeRepoFromInstallation:["DELETE /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","removeRepoFromInstallationForAuthenticatedUser"]}],removeRepoFromInstallationForAuthenticatedUser:["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],resetToken:["PATCH /applications/{client_id}/token"],revokeInstallationAccessToken:["DELETE /installation/token"],scopeToken:["POST /applications/{client_id}/token/scoped"],suspendInstallation:["PUT /app/installations/{installation_id}/suspended"],unsuspendInstallation:["DELETE /app/installations/{installation_id}/suspended"],updateWebhookConfigForApp:["PATCH /app/hook/config"]},billing:{getGithubActionsBillingOrg:["GET /orgs/{org}/settings/billing/actions"],getGithubActionsBillingUser:["GET /users/{username}/settings/billing/actions"],getGithubBillingPremiumRequestUsageReportOrg:["GET /organizations/{org}/settings/billing/premium_request/usage"],getGithubBillingPremiumRequestUsageReportUser:["GET /users/{username}/settings/billing/premium_request/usage"],getGithubBillingUsageReportOrg:["GET /organizations/{org}/settings/billing/usage"],getGithubBillingUsageReportUser:["GET /users/{username}/settings/billing/usage"],getGithubPackagesBillingOrg:["GET /orgs/{org}/settings/billing/packages"],getGithubPackagesBillingUser:["GET /users/{username}/settings/billing/packages"],getSharedStorageBillingOrg:["GET /orgs/{org}/settings/billing/shared-storage"],getSharedStorageBillingUser:["GET /users/{username}/settings/billing/shared-storage"]},campaigns:{createCampaign:["POST /orgs/{org}/campaigns"],deleteCampaign:["DELETE /orgs/{org}/campaigns/{campaign_number}"],getCampaignSummary:["GET /orgs/{org}/campaigns/{campaign_number}"],listOrgCampaigns:["GET /orgs/{org}/campaigns"],updateCampaign:["PATCH /orgs/{org}/campaigns/{campaign_number}"]},checks:{create:["POST /repos/{owner}/{repo}/check-runs"],createSuite:["POST /repos/{owner}/{repo}/check-suites"],get:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],getSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],listAnnotations:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],listForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],listForSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],listSuitesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],rerequestRun:["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],rerequestSuite:["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],setSuitesPreferences:["PATCH /repos/{owner}/{repo}/check-suites/preferences"],update:["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]},codeScanning:{commitAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"],createAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],createVariantAnalysis:["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"],deleteAnalysis:["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],deleteCodeqlDatabase:["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getAlert:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",{},{renamedParameters:{alert_id:"alert_number"}}],getAnalysis:["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],getAutofix:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],getCodeqlDatabase:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getDefaultSetup:["GET /repos/{owner}/{repo}/code-scanning/default-setup"],getSarif:["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],getVariantAnalysis:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"],getVariantAnalysisRepoTask:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"],listAlertInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],listAlertsForOrg:["GET /orgs/{org}/code-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/code-scanning/alerts"],listAlertsInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",{},{renamed:["codeScanning","listAlertInstances"]}],listCodeqlDatabases:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],listRecentAnalyses:["GET /repos/{owner}/{repo}/code-scanning/analyses"],updateAlert:["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],updateDefaultSetup:["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"],uploadSarif:["POST /repos/{owner}/{repo}/code-scanning/sarifs"]},codeSecurity:{attachConfiguration:["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"],attachEnterpriseConfiguration:["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"],createConfiguration:["POST /orgs/{org}/code-security/configurations"],createConfigurationForEnterprise:["POST /enterprises/{enterprise}/code-security/configurations"],deleteConfiguration:["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"],deleteConfigurationForEnterprise:["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],detachConfiguration:["DELETE /orgs/{org}/code-security/configurations/detach"],getConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}"],getConfigurationForRepository:["GET /repos/{owner}/{repo}/code-security-configuration"],getConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations"],getConfigurationsForOrg:["GET /orgs/{org}/code-security/configurations"],getDefaultConfigurations:["GET /orgs/{org}/code-security/configurations/defaults"],getDefaultConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/defaults"],getRepositoriesForConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"],getRepositoriesForEnterpriseConfiguration:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"],getSingleConfigurationForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],setConfigurationAsDefault:["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"],setConfigurationAsDefaultForEnterprise:["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"],updateConfiguration:["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"],updateEnterpriseConfiguration:["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]},codesOfConduct:{getAllCodesOfConduct:["GET /codes_of_conduct"],getConductCode:["GET /codes_of_conduct/{key}"]},codespaces:{addRepositoryForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],checkPermissionsForDevcontainer:["GET /repos/{owner}/{repo}/codespaces/permissions_check"],codespaceMachinesForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/machines"],createForAuthenticatedUser:["POST /user/codespaces"],createOrUpdateOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],createOrUpdateSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}"],createWithPrForAuthenticatedUser:["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],createWithRepoForAuthenticatedUser:["POST /repos/{owner}/{repo}/codespaces"],deleteForAuthenticatedUser:["DELETE /user/codespaces/{codespace_name}"],deleteFromOrganization:["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],deleteOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],deleteSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}"],exportForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/exports"],getCodespacesForUserInOrg:["GET /orgs/{org}/members/{username}/codespaces"],getExportDetailsForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/exports/{export_id}"],getForAuthenticatedUser:["GET /user/codespaces/{codespace_name}"],getOrgPublicKey:["GET /orgs/{org}/codespaces/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}"],getPublicKeyForAuthenticatedUser:["GET /user/codespaces/secrets/public-key"],getRepoPublicKey:["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],getSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}"],listDevcontainersInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/devcontainers"],listForAuthenticatedUser:["GET /user/codespaces"],listInOrganization:["GET /orgs/{org}/codespaces",{},{renamedParameters:{org_id:"org"}}],listInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces"],listOrgSecrets:["GET /orgs/{org}/codespaces/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/codespaces/secrets"],listRepositoriesForSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}/repositories"],listSecretsForAuthenticatedUser:["GET /user/codespaces/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],preFlightWithRepoForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/new"],publishForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/publish"],removeRepositoryForSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],repoMachinesForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/machines"],setRepositoriesForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],startForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/start"],stopForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/stop"],stopInOrganization:["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],updateForAuthenticatedUser:["PATCH /user/codespaces/{codespace_name}"]},copilot:{addCopilotSeatsForTeams:["POST /orgs/{org}/copilot/billing/selected_teams"],addCopilotSeatsForUsers:["POST /orgs/{org}/copilot/billing/selected_users"],cancelCopilotSeatAssignmentForTeams:["DELETE /orgs/{org}/copilot/billing/selected_teams"],cancelCopilotSeatAssignmentForUsers:["DELETE /orgs/{org}/copilot/billing/selected_users"],copilotMetricsForOrganization:["GET /orgs/{org}/copilot/metrics"],copilotMetricsForTeam:["GET /orgs/{org}/team/{team_slug}/copilot/metrics"],getCopilotOrganizationDetails:["GET /orgs/{org}/copilot/billing"],getCopilotSeatDetailsForUser:["GET /orgs/{org}/members/{username}/copilot"],listCopilotSeats:["GET /orgs/{org}/copilot/billing/seats"]},credentials:{revoke:["POST /credentials/revoke"]},dependabot:{addSelectedRepoToOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],deleteOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],getAlert:["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],getOrgPublicKey:["GET /orgs/{org}/dependabot/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}"],getRepoPublicKey:["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/dependabot/alerts"],listAlertsForOrg:["GET /orgs/{org}/dependabot/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/dependabot/alerts"],listOrgSecrets:["GET /orgs/{org}/dependabot/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/dependabot/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],repositoryAccessForOrg:["GET /organizations/{org}/dependabot/repository-access"],setRepositoryAccessDefaultLevel:["PUT /organizations/{org}/dependabot/repository-access/default-level"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],updateAlert:["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],updateRepositoryAccessForOrg:["PATCH /organizations/{org}/dependabot/repository-access"]},dependencyGraph:{createRepositorySnapshot:["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],diffRange:["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"],exportSbom:["GET /repos/{owner}/{repo}/dependency-graph/sbom"]},emojis:{get:["GET /emojis"]},enterpriseTeamMemberships:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"],get:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],list:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"],remove:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]},enterpriseTeamOrganizations:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"],delete:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignment:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignments:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]},enterpriseTeams:{create:["POST /enterprises/{enterprise}/teams"],delete:["DELETE /enterprises/{enterprise}/teams/{team_slug}"],get:["GET /enterprises/{enterprise}/teams/{team_slug}"],list:["GET /enterprises/{enterprise}/teams"],update:["PATCH /enterprises/{enterprise}/teams/{team_slug}"]},gists:{checkIsStarred:["GET /gists/{gist_id}/star"],create:["POST /gists"],createComment:["POST /gists/{gist_id}/comments"],delete:["DELETE /gists/{gist_id}"],deleteComment:["DELETE /gists/{gist_id}/comments/{comment_id}"],fork:["POST /gists/{gist_id}/forks"],get:["GET /gists/{gist_id}"],getComment:["GET /gists/{gist_id}/comments/{comment_id}"],getRevision:["GET /gists/{gist_id}/{sha}"],list:["GET /gists"],listComments:["GET /gists/{gist_id}/comments"],listCommits:["GET /gists/{gist_id}/commits"],listForUser:["GET /users/{username}/gists"],listForks:["GET /gists/{gist_id}/forks"],listPublic:["GET /gists/public"],listStarred:["GET /gists/starred"],star:["PUT /gists/{gist_id}/star"],unstar:["DELETE /gists/{gist_id}/star"],update:["PATCH /gists/{gist_id}"],updateComment:["PATCH /gists/{gist_id}/comments/{comment_id}"]},git:{createBlob:["POST /repos/{owner}/{repo}/git/blobs"],createCommit:["POST /repos/{owner}/{repo}/git/commits"],createRef:["POST /repos/{owner}/{repo}/git/refs"],createTag:["POST /repos/{owner}/{repo}/git/tags"],createTree:["POST /repos/{owner}/{repo}/git/trees"],deleteRef:["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],getBlob:["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],getCommit:["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],getRef:["GET /repos/{owner}/{repo}/git/ref/{ref}"],getTag:["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],getTree:["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],listMatchingRefs:["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],updateRef:["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]},gitignore:{getAllTemplates:["GET /gitignore/templates"],getTemplate:["GET /gitignore/templates/{name}"]},hostedCompute:{createNetworkConfigurationForOrg:["POST /orgs/{org}/settings/network-configurations"],deleteNetworkConfigurationFromOrg:["DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkConfigurationForOrg:["GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkSettingsForOrg:["GET /orgs/{org}/settings/network-settings/{network_settings_id}"],listNetworkConfigurationsForOrg:["GET /orgs/{org}/settings/network-configurations"],updateNetworkConfigurationForOrg:["PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"]},interactions:{getRestrictionsForAuthenticatedUser:["GET /user/interaction-limits"],getRestrictionsForOrg:["GET /orgs/{org}/interaction-limits"],getRestrictionsForRepo:["GET /repos/{owner}/{repo}/interaction-limits"],getRestrictionsForYourPublicRepos:["GET /user/interaction-limits",{},{renamed:["interactions","getRestrictionsForAuthenticatedUser"]}],removeRestrictionsForAuthenticatedUser:["DELETE /user/interaction-limits"],removeRestrictionsForOrg:["DELETE /orgs/{org}/interaction-limits"],removeRestrictionsForRepo:["DELETE /repos/{owner}/{repo}/interaction-limits"],removeRestrictionsForYourPublicRepos:["DELETE /user/interaction-limits",{},{renamed:["interactions","removeRestrictionsForAuthenticatedUser"]}],setRestrictionsForAuthenticatedUser:["PUT /user/interaction-limits"],setRestrictionsForOrg:["PUT /orgs/{org}/interaction-limits"],setRestrictionsForRepo:["PUT /repos/{owner}/{repo}/interaction-limits"],setRestrictionsForYourPublicRepos:["PUT /user/interaction-limits",{},{renamed:["interactions","setRestrictionsForAuthenticatedUser"]}]},issues:{addAssignees:["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],addBlockedByDependency:["POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],addLabels:["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],addSubIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],checkUserCanBeAssigned:["GET /repos/{owner}/{repo}/assignees/{assignee}"],checkUserCanBeAssignedToIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"],create:["POST /repos/{owner}/{repo}/issues"],createComment:["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],createLabel:["POST /repos/{owner}/{repo}/labels"],createMilestone:["POST /repos/{owner}/{repo}/milestones"],deleteComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],deleteLabel:["DELETE /repos/{owner}/{repo}/labels/{name}"],deleteMilestone:["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],get:["GET /repos/{owner}/{repo}/issues/{issue_number}"],getComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],getEvent:["GET /repos/{owner}/{repo}/issues/events/{event_id}"],getLabel:["GET /repos/{owner}/{repo}/labels/{name}"],getMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],getParent:["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"],list:["GET /issues"],listAssignees:["GET /repos/{owner}/{repo}/assignees"],listComments:["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],listCommentsForRepo:["GET /repos/{owner}/{repo}/issues/comments"],listDependenciesBlockedBy:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],listDependenciesBlocking:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"],listEvents:["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],listEventsForRepo:["GET /repos/{owner}/{repo}/issues/events"],listEventsForTimeline:["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],listForAuthenticatedUser:["GET /user/issues"],listForOrg:["GET /orgs/{org}/issues"],listForRepo:["GET /repos/{owner}/{repo}/issues"],listLabelsForMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],listLabelsForRepo:["GET /repos/{owner}/{repo}/labels"],listLabelsOnIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],listMilestones:["GET /repos/{owner}/{repo}/milestones"],listSubIssues:["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],lock:["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],removeAllLabels:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],removeAssignees:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],removeDependencyBlockedBy:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"],removeLabel:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],removeSubIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"],reprioritizeSubIssue:["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"],setLabels:["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],unlock:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],update:["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],updateComment:["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],updateLabel:["PATCH /repos/{owner}/{repo}/labels/{name}"],updateMilestone:["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]},licenses:{get:["GET /licenses/{license}"],getAllCommonlyUsed:["GET /licenses"],getForRepo:["GET /repos/{owner}/{repo}/license"]},markdown:{render:["POST /markdown"],renderRaw:["POST /markdown/raw",{headers:{"content-type":"text/plain; charset=utf-8"}}]},meta:{get:["GET /meta"],getAllVersions:["GET /versions"],getOctocat:["GET /octocat"],getZen:["GET /zen"],root:["GET /"]},migrations:{deleteArchiveForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/archive"],deleteArchiveForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/archive"],downloadArchiveForOrg:["GET /orgs/{org}/migrations/{migration_id}/archive"],getArchiveForAuthenticatedUser:["GET /user/migrations/{migration_id}/archive"],getStatusForAuthenticatedUser:["GET /user/migrations/{migration_id}"],getStatusForOrg:["GET /orgs/{org}/migrations/{migration_id}"],listForAuthenticatedUser:["GET /user/migrations"],listForOrg:["GET /orgs/{org}/migrations"],listReposForAuthenticatedUser:["GET /user/migrations/{migration_id}/repositories"],listReposForOrg:["GET /orgs/{org}/migrations/{migration_id}/repositories"],listReposForUser:["GET /user/migrations/{migration_id}/repositories",{},{renamed:["migrations","listReposForAuthenticatedUser"]}],startForAuthenticatedUser:["POST /user/migrations"],startForOrg:["POST /orgs/{org}/migrations"],unlockRepoForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],unlockRepoForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]},oidc:{getOidcCustomSubTemplateForOrg:["GET /orgs/{org}/actions/oidc/customization/sub"],updateOidcCustomSubTemplateForOrg:["PUT /orgs/{org}/actions/oidc/customization/sub"]},orgs:{addSecurityManagerTeam:["PUT /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team"}],assignTeamToOrgRole:["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],assignUserToOrgRole:["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"],blockUser:["PUT /orgs/{org}/blocks/{username}"],cancelInvitation:["DELETE /orgs/{org}/invitations/{invitation_id}"],checkBlockedUser:["GET /orgs/{org}/blocks/{username}"],checkMembershipForUser:["GET /orgs/{org}/members/{username}"],checkPublicMembershipForUser:["GET /orgs/{org}/public_members/{username}"],convertMemberToOutsideCollaborator:["PUT /orgs/{org}/outside_collaborators/{username}"],createArtifactStorageRecord:["POST /orgs/{org}/artifacts/metadata/storage-record"],createInvitation:["POST /orgs/{org}/invitations"],createIssueType:["POST /orgs/{org}/issue-types"],createWebhook:["POST /orgs/{org}/hooks"],customPropertiesForOrgsCreateOrUpdateOrganizationValues:["PATCH /organizations/{org}/org-properties/values"],customPropertiesForOrgsGetOrganizationValues:["GET /organizations/{org}/org-properties/values"],customPropertiesForReposCreateOrUpdateOrganizationDefinition:["PUT /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposCreateOrUpdateOrganizationDefinitions:["PATCH /orgs/{org}/properties/schema"],customPropertiesForReposCreateOrUpdateOrganizationValues:["PATCH /orgs/{org}/properties/values"],customPropertiesForReposDeleteOrganizationDefinition:["DELETE /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinition:["GET /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinitions:["GET /orgs/{org}/properties/schema"],customPropertiesForReposGetOrganizationValues:["GET /orgs/{org}/properties/values"],delete:["DELETE /orgs/{org}"],deleteAttestationsBulk:["POST /orgs/{org}/attestations/delete-request"],deleteAttestationsById:["DELETE /orgs/{org}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /orgs/{org}/attestations/digest/{subject_digest}"],deleteIssueType:["DELETE /orgs/{org}/issue-types/{issue_type_id}"],deleteWebhook:["DELETE /orgs/{org}/hooks/{hook_id}"],disableSelectedRepositoryImmutableReleasesOrganization:["DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],enableSelectedRepositoryImmutableReleasesOrganization:["PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],get:["GET /orgs/{org}"],getImmutableReleasesSettings:["GET /orgs/{org}/settings/immutable-releases"],getImmutableReleasesSettingsRepositories:["GET /orgs/{org}/settings/immutable-releases/repositories"],getMembershipForAuthenticatedUser:["GET /user/memberships/orgs/{org}"],getMembershipForUser:["GET /orgs/{org}/memberships/{username}"],getOrgRole:["GET /orgs/{org}/organization-roles/{role_id}"],getOrgRulesetHistory:["GET /orgs/{org}/rulesets/{ruleset_id}/history"],getOrgRulesetVersion:["GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"],getWebhook:["GET /orgs/{org}/hooks/{hook_id}"],getWebhookConfigForOrg:["GET /orgs/{org}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],list:["GET /organizations"],listAppInstallations:["GET /orgs/{org}/installations"],listArtifactStorageRecords:["GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"],listAttestationRepositories:["GET /orgs/{org}/attestations/repositories"],listAttestations:["GET /orgs/{org}/attestations/{subject_digest}"],listAttestationsBulk:["POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"],listBlockedUsers:["GET /orgs/{org}/blocks"],listFailedInvitations:["GET /orgs/{org}/failed_invitations"],listForAuthenticatedUser:["GET /user/orgs"],listForUser:["GET /users/{username}/orgs"],listInvitationTeams:["GET /orgs/{org}/invitations/{invitation_id}/teams"],listIssueTypes:["GET /orgs/{org}/issue-types"],listMembers:["GET /orgs/{org}/members"],listMembershipsForAuthenticatedUser:["GET /user/memberships/orgs"],listOrgRoleTeams:["GET /orgs/{org}/organization-roles/{role_id}/teams"],listOrgRoleUsers:["GET /orgs/{org}/organization-roles/{role_id}/users"],listOrgRoles:["GET /orgs/{org}/organization-roles"],listOrganizationFineGrainedPermissions:["GET /orgs/{org}/organization-fine-grained-permissions"],listOutsideCollaborators:["GET /orgs/{org}/outside_collaborators"],listPatGrantRepositories:["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"],listPatGrantRequestRepositories:["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"],listPatGrantRequests:["GET /orgs/{org}/personal-access-token-requests"],listPatGrants:["GET /orgs/{org}/personal-access-tokens"],listPendingInvitations:["GET /orgs/{org}/invitations"],listPublicMembers:["GET /orgs/{org}/public_members"],listSecurityManagerTeams:["GET /orgs/{org}/security-managers",{},{deprecated:"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams"}],listWebhookDeliveries:["GET /orgs/{org}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /orgs/{org}/hooks"],pingWebhook:["POST /orgs/{org}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeMember:["DELETE /orgs/{org}/members/{username}"],removeMembershipForUser:["DELETE /orgs/{org}/memberships/{username}"],removeOutsideCollaborator:["DELETE /orgs/{org}/outside_collaborators/{username}"],removePublicMembershipForAuthenticatedUser:["DELETE /orgs/{org}/public_members/{username}"],removeSecurityManagerTeam:["DELETE /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team"}],reviewPatGrantRequest:["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"],reviewPatGrantRequestsInBulk:["POST /orgs/{org}/personal-access-token-requests"],revokeAllOrgRolesTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"],revokeAllOrgRolesUser:["DELETE /orgs/{org}/organization-roles/users/{username}"],revokeOrgRoleTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],revokeOrgRoleUser:["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"],setImmutableReleasesSettings:["PUT /orgs/{org}/settings/immutable-releases"],setImmutableReleasesSettingsRepositories:["PUT /orgs/{org}/settings/immutable-releases/repositories"],setMembershipForUser:["PUT /orgs/{org}/memberships/{username}"],setPublicMembershipForAuthenticatedUser:["PUT /orgs/{org}/public_members/{username}"],unblockUser:["DELETE /orgs/{org}/blocks/{username}"],update:["PATCH /orgs/{org}"],updateIssueType:["PUT /orgs/{org}/issue-types/{issue_type_id}"],updateMembershipForAuthenticatedUser:["PATCH /user/memberships/orgs/{org}"],updatePatAccess:["POST /orgs/{org}/personal-access-tokens/{pat_id}"],updatePatAccesses:["POST /orgs/{org}/personal-access-tokens"],updateWebhook:["PATCH /orgs/{org}/hooks/{hook_id}"],updateWebhookConfigForOrg:["PATCH /orgs/{org}/hooks/{hook_id}/config"]},packages:{deletePackageForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}"],deletePackageForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],deletePackageForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}"],deletePackageVersionForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getAllPackageVersionsForAPackageOwnedByAnOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByOrg"]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions"],getPackageForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}"],getPackageForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}"],getPackageForUser:["GET /users/{username}/packages/{package_type}/{package_name}"],getPackageVersionForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],listDockerMigrationConflictingPackagesForAuthenticatedUser:["GET /user/docker/conflicts"],listDockerMigrationConflictingPackagesForOrganization:["GET /orgs/{org}/docker/conflicts"],listDockerMigrationConflictingPackagesForUser:["GET /users/{username}/docker/conflicts"],listPackagesForAuthenticatedUser:["GET /user/packages"],listPackagesForOrganization:["GET /orgs/{org}/packages"],listPackagesForUser:["GET /users/{username}/packages"],restorePackageForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForUser:["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageVersionForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForUser:["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]},privateRegistries:{createOrgPrivateRegistry:["POST /orgs/{org}/private-registries"],deleteOrgPrivateRegistry:["DELETE /orgs/{org}/private-registries/{secret_name}"],getOrgPrivateRegistry:["GET /orgs/{org}/private-registries/{secret_name}"],getOrgPublicKey:["GET /orgs/{org}/private-registries/public-key"],listOrgPrivateRegistries:["GET /orgs/{org}/private-registries"],updateOrgPrivateRegistry:["PATCH /orgs/{org}/private-registries/{secret_name}"]},projects:{addItemForOrg:["POST /orgs/{org}/projectsV2/{project_number}/items"],addItemForUser:["POST /users/{username}/projectsV2/{project_number}/items"],deleteItemForOrg:["DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],deleteItemForUser:["DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"],getFieldForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"],getFieldForUser:["GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"],getForOrg:["GET /orgs/{org}/projectsV2/{project_number}"],getForUser:["GET /users/{username}/projectsV2/{project_number}"],getOrgItem:["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],getUserItem:["GET /users/{username}/projectsV2/{project_number}/items/{item_id}"],listFieldsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields"],listFieldsForUser:["GET /users/{username}/projectsV2/{project_number}/fields"],listForOrg:["GET /orgs/{org}/projectsV2"],listForUser:["GET /users/{username}/projectsV2"],listItemsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/items"],listItemsForUser:["GET /users/{username}/projectsV2/{project_number}/items"],updateItemForOrg:["PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],updateItemForUser:["PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"]},pulls:{checkIfMerged:["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],create:["POST /repos/{owner}/{repo}/pulls"],createReplyForReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],createReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],createReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],deletePendingReview:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],deleteReviewComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],dismissReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],get:["GET /repos/{owner}/{repo}/pulls/{pull_number}"],getReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],getReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],list:["GET /repos/{owner}/{repo}/pulls"],listCommentsForReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],listCommits:["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],listFiles:["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],listRequestedReviewers:["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],listReviewComments:["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],listReviewCommentsForRepo:["GET /repos/{owner}/{repo}/pulls/comments"],listReviews:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],merge:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],removeRequestedReviewers:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],requestReviewers:["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],submitReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],update:["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],updateBranch:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],updateReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],updateReviewComment:["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]},rateLimit:{get:["GET /rate_limit"]},reactions:{createForCommitComment:["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],createForIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],createForIssueComment:["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],createForPullRequestReviewComment:["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],createForRelease:["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],createForTeamDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],createForTeamDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],deleteForCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],deleteForIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],deleteForIssueComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],deleteForPullRequestComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],deleteForRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],deleteForTeamDiscussion:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],deleteForTeamDiscussionComment:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],listForCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],listForIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],listForIssueComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],listForPullRequestReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],listForRelease:["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],listForTeamDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],listForTeamDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]},repos:{acceptInvitation:["PATCH /user/repository_invitations/{invitation_id}",{},{renamed:["repos","acceptInvitationForAuthenticatedUser"]}],acceptInvitationForAuthenticatedUser:["PATCH /user/repository_invitations/{invitation_id}"],addAppAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],addCollaborator:["PUT /repos/{owner}/{repo}/collaborators/{username}"],addStatusCheckContexts:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],addTeamAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],addUserAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],cancelPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"],checkAutomatedSecurityFixes:["GET /repos/{owner}/{repo}/automated-security-fixes"],checkCollaborator:["GET /repos/{owner}/{repo}/collaborators/{username}"],checkImmutableReleases:["GET /repos/{owner}/{repo}/immutable-releases"],checkPrivateVulnerabilityReporting:["GET /repos/{owner}/{repo}/private-vulnerability-reporting"],checkVulnerabilityAlerts:["GET /repos/{owner}/{repo}/vulnerability-alerts"],codeownersErrors:["GET /repos/{owner}/{repo}/codeowners/errors"],compareCommits:["GET /repos/{owner}/{repo}/compare/{base}...{head}"],compareCommitsWithBasehead:["GET /repos/{owner}/{repo}/compare/{basehead}"],createAttestation:["POST /repos/{owner}/{repo}/attestations"],createAutolink:["POST /repos/{owner}/{repo}/autolinks"],createCommitComment:["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],createCommitSignatureProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],createCommitStatus:["POST /repos/{owner}/{repo}/statuses/{sha}"],createDeployKey:["POST /repos/{owner}/{repo}/keys"],createDeployment:["POST /repos/{owner}/{repo}/deployments"],createDeploymentBranchPolicy:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],createDeploymentProtectionRule:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],createDeploymentStatus:["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],createDispatchEvent:["POST /repos/{owner}/{repo}/dispatches"],createForAuthenticatedUser:["POST /user/repos"],createFork:["POST /repos/{owner}/{repo}/forks"],createInOrg:["POST /orgs/{org}/repos"],createOrUpdateEnvironment:["PUT /repos/{owner}/{repo}/environments/{environment_name}"],createOrUpdateFileContents:["PUT /repos/{owner}/{repo}/contents/{path}"],createOrgRuleset:["POST /orgs/{org}/rulesets"],createPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments"],createPagesSite:["POST /repos/{owner}/{repo}/pages"],createRelease:["POST /repos/{owner}/{repo}/releases"],createRepoRuleset:["POST /repos/{owner}/{repo}/rulesets"],createUsingTemplate:["POST /repos/{template_owner}/{template_repo}/generate"],createWebhook:["POST /repos/{owner}/{repo}/hooks"],customPropertiesForReposCreateOrUpdateRepositoryValues:["PATCH /repos/{owner}/{repo}/properties/values"],customPropertiesForReposGetRepositoryValues:["GET /repos/{owner}/{repo}/properties/values"],declineInvitation:["DELETE /user/repository_invitations/{invitation_id}",{},{renamed:["repos","declineInvitationForAuthenticatedUser"]}],declineInvitationForAuthenticatedUser:["DELETE /user/repository_invitations/{invitation_id}"],delete:["DELETE /repos/{owner}/{repo}"],deleteAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],deleteAdminBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],deleteAnEnvironment:["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],deleteAutolink:["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],deleteBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],deleteCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],deleteCommitSignatureProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],deleteDeployKey:["DELETE /repos/{owner}/{repo}/keys/{key_id}"],deleteDeployment:["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],deleteDeploymentBranchPolicy:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],deleteFile:["DELETE /repos/{owner}/{repo}/contents/{path}"],deleteInvitation:["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],deleteOrgRuleset:["DELETE /orgs/{org}/rulesets/{ruleset_id}"],deletePagesSite:["DELETE /repos/{owner}/{repo}/pages"],deletePullRequestReviewProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],deleteRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}"],deleteReleaseAsset:["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],deleteRepoRuleset:["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],deleteWebhook:["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],disableAutomatedSecurityFixes:["DELETE /repos/{owner}/{repo}/automated-security-fixes"],disableDeploymentProtectionRule:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],disableImmutableReleases:["DELETE /repos/{owner}/{repo}/immutable-releases"],disablePrivateVulnerabilityReporting:["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"],disableVulnerabilityAlerts:["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],downloadArchive:["GET /repos/{owner}/{repo}/zipball/{ref}",{},{renamed:["repos","downloadZipballArchive"]}],downloadTarballArchive:["GET /repos/{owner}/{repo}/tarball/{ref}"],downloadZipballArchive:["GET /repos/{owner}/{repo}/zipball/{ref}"],enableAutomatedSecurityFixes:["PUT /repos/{owner}/{repo}/automated-security-fixes"],enableImmutableReleases:["PUT /repos/{owner}/{repo}/immutable-releases"],enablePrivateVulnerabilityReporting:["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"],enableVulnerabilityAlerts:["PUT /repos/{owner}/{repo}/vulnerability-alerts"],generateReleaseNotes:["POST /repos/{owner}/{repo}/releases/generate-notes"],get:["GET /repos/{owner}/{repo}"],getAccessRestrictions:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],getAdminBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],getAllDeploymentProtectionRules:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],getAllEnvironments:["GET /repos/{owner}/{repo}/environments"],getAllStatusCheckContexts:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],getAllTopics:["GET /repos/{owner}/{repo}/topics"],getAppsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],getAutolink:["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],getBranch:["GET /repos/{owner}/{repo}/branches/{branch}"],getBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection"],getBranchRules:["GET /repos/{owner}/{repo}/rules/branches/{branch}"],getClones:["GET /repos/{owner}/{repo}/traffic/clones"],getCodeFrequencyStats:["GET /repos/{owner}/{repo}/stats/code_frequency"],getCollaboratorPermissionLevel:["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],getCombinedStatusForRef:["GET /repos/{owner}/{repo}/commits/{ref}/status"],getCommit:["GET /repos/{owner}/{repo}/commits/{ref}"],getCommitActivityStats:["GET /repos/{owner}/{repo}/stats/commit_activity"],getCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}"],getCommitSignatureProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],getCommunityProfileMetrics:["GET /repos/{owner}/{repo}/community/profile"],getContent:["GET /repos/{owner}/{repo}/contents/{path}"],getContributorsStats:["GET /repos/{owner}/{repo}/stats/contributors"],getCustomDeploymentProtectionRule:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],getDeployKey:["GET /repos/{owner}/{repo}/keys/{key_id}"],getDeployment:["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],getDeploymentBranchPolicy:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],getDeploymentStatus:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],getEnvironment:["GET /repos/{owner}/{repo}/environments/{environment_name}"],getLatestPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/latest"],getLatestRelease:["GET /repos/{owner}/{repo}/releases/latest"],getOrgRuleSuite:["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],getOrgRuleSuites:["GET /orgs/{org}/rulesets/rule-suites"],getOrgRuleset:["GET /orgs/{org}/rulesets/{ruleset_id}"],getOrgRulesets:["GET /orgs/{org}/rulesets"],getPages:["GET /repos/{owner}/{repo}/pages"],getPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],getPagesDeployment:["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"],getPagesHealthCheck:["GET /repos/{owner}/{repo}/pages/health"],getParticipationStats:["GET /repos/{owner}/{repo}/stats/participation"],getPullRequestReviewProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],getPunchCardStats:["GET /repos/{owner}/{repo}/stats/punch_card"],getReadme:["GET /repos/{owner}/{repo}/readme"],getReadmeInDirectory:["GET /repos/{owner}/{repo}/readme/{dir}"],getRelease:["GET /repos/{owner}/{repo}/releases/{release_id}"],getReleaseAsset:["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],getReleaseByTag:["GET /repos/{owner}/{repo}/releases/tags/{tag}"],getRepoRuleSuite:["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"],getRepoRuleSuites:["GET /repos/{owner}/{repo}/rulesets/rule-suites"],getRepoRuleset:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],getRepoRulesetHistory:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"],getRepoRulesetVersion:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"],getRepoRulesets:["GET /repos/{owner}/{repo}/rulesets"],getStatusChecksProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],getTeamsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],getTopPaths:["GET /repos/{owner}/{repo}/traffic/popular/paths"],getTopReferrers:["GET /repos/{owner}/{repo}/traffic/popular/referrers"],getUsersWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],getViews:["GET /repos/{owner}/{repo}/traffic/views"],getWebhook:["GET /repos/{owner}/{repo}/hooks/{hook_id}"],getWebhookConfigForRepo:["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],listActivities:["GET /repos/{owner}/{repo}/activity"],listAttestations:["GET /repos/{owner}/{repo}/attestations/{subject_digest}"],listAutolinks:["GET /repos/{owner}/{repo}/autolinks"],listBranches:["GET /repos/{owner}/{repo}/branches"],listBranchesForHeadCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],listCollaborators:["GET /repos/{owner}/{repo}/collaborators"],listCommentsForCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],listCommitCommentsForRepo:["GET /repos/{owner}/{repo}/comments"],listCommitStatusesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],listCommits:["GET /repos/{owner}/{repo}/commits"],listContributors:["GET /repos/{owner}/{repo}/contributors"],listCustomDeploymentRuleIntegrations:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"],listDeployKeys:["GET /repos/{owner}/{repo}/keys"],listDeploymentBranchPolicies:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],listDeploymentStatuses:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],listDeployments:["GET /repos/{owner}/{repo}/deployments"],listForAuthenticatedUser:["GET /user/repos"],listForOrg:["GET /orgs/{org}/repos"],listForUser:["GET /users/{username}/repos"],listForks:["GET /repos/{owner}/{repo}/forks"],listInvitations:["GET /repos/{owner}/{repo}/invitations"],listInvitationsForAuthenticatedUser:["GET /user/repository_invitations"],listLanguages:["GET /repos/{owner}/{repo}/languages"],listPagesBuilds:["GET /repos/{owner}/{repo}/pages/builds"],listPublic:["GET /repositories"],listPullRequestsAssociatedWithCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],listReleaseAssets:["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],listReleases:["GET /repos/{owner}/{repo}/releases"],listTags:["GET /repos/{owner}/{repo}/tags"],listTeams:["GET /repos/{owner}/{repo}/teams"],listWebhookDeliveries:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /repos/{owner}/{repo}/hooks"],merge:["POST /repos/{owner}/{repo}/merges"],mergeUpstream:["POST /repos/{owner}/{repo}/merge-upstream"],pingWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeAppAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],removeCollaborator:["DELETE /repos/{owner}/{repo}/collaborators/{username}"],removeStatusCheckContexts:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],removeStatusCheckProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],removeTeamAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],removeUserAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],renameBranch:["POST /repos/{owner}/{repo}/branches/{branch}/rename"],replaceAllTopics:["PUT /repos/{owner}/{repo}/topics"],requestPagesBuild:["POST /repos/{owner}/{repo}/pages/builds"],setAdminBranchProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],setAppAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],setStatusCheckContexts:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],setTeamAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],setUserAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],testPushWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],transfer:["POST /repos/{owner}/{repo}/transfer"],update:["PATCH /repos/{owner}/{repo}"],updateBranchProtection:["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],updateCommitComment:["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],updateDeploymentBranchPolicy:["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],updateInformationAboutPagesSite:["PUT /repos/{owner}/{repo}/pages"],updateInvitation:["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],updateOrgRuleset:["PUT /orgs/{org}/rulesets/{ruleset_id}"],updatePullRequestReviewProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],updateRelease:["PATCH /repos/{owner}/{repo}/releases/{release_id}"],updateReleaseAsset:["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],updateRepoRuleset:["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],updateStatusCheckPotection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",{},{renamed:["repos","updateStatusCheckProtection"]}],updateStatusCheckProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],updateWebhook:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],updateWebhookConfigForRepo:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],uploadReleaseAsset:["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",{baseUrl:"https://uploads.github.com"}]},search:{code:["GET /search/code"],commits:["GET /search/commits"],issuesAndPullRequests:["GET /search/issues"],labels:["GET /search/labels"],repos:["GET /search/repositories"],topics:["GET /search/topics"],users:["GET /search/users"]},secretScanning:{createPushProtectionBypass:["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"],getAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],getScanHistory:["GET /repos/{owner}/{repo}/secret-scanning/scan-history"],listAlertsForOrg:["GET /orgs/{org}/secret-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/secret-scanning/alerts"],listLocationsForAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],listOrgPatternConfigs:["GET /orgs/{org}/secret-scanning/pattern-configurations"],updateAlert:["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],updateOrgPatternConfigs:["PATCH /orgs/{org}/secret-scanning/pattern-configurations"]},securityAdvisories:{createFork:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"],createPrivateVulnerabilityReport:["POST /repos/{owner}/{repo}/security-advisories/reports"],createRepositoryAdvisory:["POST /repos/{owner}/{repo}/security-advisories"],createRepositoryAdvisoryCveRequest:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"],getGlobalAdvisory:["GET /advisories/{ghsa_id}"],getRepositoryAdvisory:["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"],listGlobalAdvisories:["GET /advisories"],listOrgRepositoryAdvisories:["GET /orgs/{org}/security-advisories"],listRepositoryAdvisories:["GET /repos/{owner}/{repo}/security-advisories"],updateRepositoryAdvisory:["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]},teams:{addOrUpdateMembershipForUserInOrg:["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],addOrUpdateRepoPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],checkPermissionsForRepoInOrg:["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],create:["POST /orgs/{org}/teams"],createDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],createDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions"],deleteDiscussionCommentInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],deleteDiscussionInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],deleteInOrg:["DELETE /orgs/{org}/teams/{team_slug}"],getByName:["GET /orgs/{org}/teams/{team_slug}"],getDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],getDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],getMembershipForUserInOrg:["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],list:["GET /orgs/{org}/teams"],listChildInOrg:["GET /orgs/{org}/teams/{team_slug}/teams"],listDiscussionCommentsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],listDiscussionsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions"],listForAuthenticatedUser:["GET /user/teams"],listMembersInOrg:["GET /orgs/{org}/teams/{team_slug}/members"],listPendingInvitationsInOrg:["GET /orgs/{org}/teams/{team_slug}/invitations"],listReposInOrg:["GET /orgs/{org}/teams/{team_slug}/repos"],removeMembershipForUserInOrg:["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],removeRepoInOrg:["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],updateDiscussionCommentInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],updateDiscussionInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],updateInOrg:["PATCH /orgs/{org}/teams/{team_slug}"]},users:{addEmailForAuthenticated:["POST /user/emails",{},{renamed:["users","addEmailForAuthenticatedUser"]}],addEmailForAuthenticatedUser:["POST /user/emails"],addSocialAccountForAuthenticatedUser:["POST /user/social_accounts"],block:["PUT /user/blocks/{username}"],checkBlocked:["GET /user/blocks/{username}"],checkFollowingForUser:["GET /users/{username}/following/{target_user}"],checkPersonIsFollowedByAuthenticated:["GET /user/following/{username}"],createGpgKeyForAuthenticated:["POST /user/gpg_keys",{},{renamed:["users","createGpgKeyForAuthenticatedUser"]}],createGpgKeyForAuthenticatedUser:["POST /user/gpg_keys"],createPublicSshKeyForAuthenticated:["POST /user/keys",{},{renamed:["users","createPublicSshKeyForAuthenticatedUser"]}],createPublicSshKeyForAuthenticatedUser:["POST /user/keys"],createSshSigningKeyForAuthenticatedUser:["POST /user/ssh_signing_keys"],deleteAttestationsBulk:["POST /users/{username}/attestations/delete-request"],deleteAttestationsById:["DELETE /users/{username}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /users/{username}/attestations/digest/{subject_digest}"],deleteEmailForAuthenticated:["DELETE /user/emails",{},{renamed:["users","deleteEmailForAuthenticatedUser"]}],deleteEmailForAuthenticatedUser:["DELETE /user/emails"],deleteGpgKeyForAuthenticated:["DELETE /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","deleteGpgKeyForAuthenticatedUser"]}],deleteGpgKeyForAuthenticatedUser:["DELETE /user/gpg_keys/{gpg_key_id}"],deletePublicSshKeyForAuthenticated:["DELETE /user/keys/{key_id}",{},{renamed:["users","deletePublicSshKeyForAuthenticatedUser"]}],deletePublicSshKeyForAuthenticatedUser:["DELETE /user/keys/{key_id}"],deleteSocialAccountForAuthenticatedUser:["DELETE /user/social_accounts"],deleteSshSigningKeyForAuthenticatedUser:["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],follow:["PUT /user/following/{username}"],getAuthenticated:["GET /user"],getById:["GET /user/{account_id}"],getByUsername:["GET /users/{username}"],getContextForUser:["GET /users/{username}/hovercard"],getGpgKeyForAuthenticated:["GET /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","getGpgKeyForAuthenticatedUser"]}],getGpgKeyForAuthenticatedUser:["GET /user/gpg_keys/{gpg_key_id}"],getPublicSshKeyForAuthenticated:["GET /user/keys/{key_id}",{},{renamed:["users","getPublicSshKeyForAuthenticatedUser"]}],getPublicSshKeyForAuthenticatedUser:["GET /user/keys/{key_id}"],getSshSigningKeyForAuthenticatedUser:["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],list:["GET /users"],listAttestations:["GET /users/{username}/attestations/{subject_digest}"],listAttestationsBulk:["POST /users/{username}/attestations/bulk-list{?per_page,before,after}"],listBlockedByAuthenticated:["GET /user/blocks",{},{renamed:["users","listBlockedByAuthenticatedUser"]}],listBlockedByAuthenticatedUser:["GET /user/blocks"],listEmailsForAuthenticated:["GET /user/emails",{},{renamed:["users","listEmailsForAuthenticatedUser"]}],listEmailsForAuthenticatedUser:["GET /user/emails"],listFollowedByAuthenticated:["GET /user/following",{},{renamed:["users","listFollowedByAuthenticatedUser"]}],listFollowedByAuthenticatedUser:["GET /user/following"],listFollowersForAuthenticatedUser:["GET /user/followers"],listFollowersForUser:["GET /users/{username}/followers"],listFollowingForUser:["GET /users/{username}/following"],listGpgKeysForAuthenticated:["GET /user/gpg_keys",{},{renamed:["users","listGpgKeysForAuthenticatedUser"]}],listGpgKeysForAuthenticatedUser:["GET /user/gpg_keys"],listGpgKeysForUser:["GET /users/{username}/gpg_keys"],listPublicEmailsForAuthenticated:["GET /user/public_emails",{},{renamed:["users","listPublicEmailsForAuthenticatedUser"]}],listPublicEmailsForAuthenticatedUser:["GET /user/public_emails"],listPublicKeysForUser:["GET /users/{username}/keys"],listPublicSshKeysForAuthenticated:["GET /user/keys",{},{renamed:["users","listPublicSshKeysForAuthenticatedUser"]}],listPublicSshKeysForAuthenticatedUser:["GET /user/keys"],listSocialAccountsForAuthenticatedUser:["GET /user/social_accounts"],listSocialAccountsForUser:["GET /users/{username}/social_accounts"],listSshSigningKeysForAuthenticatedUser:["GET /user/ssh_signing_keys"],listSshSigningKeysForUser:["GET /users/{username}/ssh_signing_keys"],setPrimaryEmailVisibilityForAuthenticated:["PATCH /user/email/visibility",{},{renamed:["users","setPrimaryEmailVisibilityForAuthenticatedUser"]}],setPrimaryEmailVisibilityForAuthenticatedUser:["PATCH /user/email/visibility"],unblock:["DELETE /user/blocks/{username}"],unfollow:["DELETE /user/following/{username}"],updateAuthenticated:["PATCH /user"]}},D9=cq;var VI=new Map;for(let[A,Q]of Object.entries(D9))for(let[B,I]of Object.entries(Q)){let[E,C,g]=I,[F,D]=E.split(/ /),J=Object.assign({method:F,url:D},C);if(!VI.has(A))VI.set(A,new Map);VI.get(A).set(B,{scope:A,methodName:B,endpointDefaults:J,decorations:g})}var dq={has({scope:A},Q){return VI.get(A).has(Q)},getOwnPropertyDescriptor(A,Q){return{value:this.get(A,Q),configurable:!0,writable:!0,enumerable:!0}},defineProperty(A,Q,B){return Object.defineProperty(A.cache,Q,B),!0},deleteProperty(A,Q){return delete A.cache[Q],!0},ownKeys({scope:A}){return[...VI.get(A).keys()]},set(A,Q,B){return A.cache[Q]=B},get({octokit:A,scope:Q,cache:B},I){if(B[I])return B[I];let E=VI.get(Q).get(I);if(!E)return;let{endpointDefaults:C,decorations:g}=E;if(g)B[I]=lq(A,Q,I,C,g);else B[I]=A.request.defaults(C);return B[I]}};function vJ(A){let Q={};for(let B of VI.keys())Q[B]=new Proxy({octokit:A,scope:B,cache:{}},dq);return Q}function lq(A,Q,B,I,E){let C=A.request.defaults(I);function g(...F){let D=C.endpoint.merge(...F);if(E.mapToData)return D=Object.assign({},D,{data:D[E.mapToData],[E.mapToData]:void 0}),C(D);if(E.renamed){let[J,Y]=E.renamed;A.log.warn(`octokit.${Q}.${B}() has been renamed to octokit.${J}.${Y}()`)}if(E.deprecated)A.log.warn(E.deprecated);if(E.renamedParameters){let J=C.endpoint.merge(...F);for(let[Y,U]of Object.entries(E.renamedParameters))if(Y in J){if(A.log.warn(`"${Y}" parameter is deprecated for "octokit.${Q}.${B}()". Use "${U}" instead`),!(U in J))J[U]=J[Y];delete J[Y]}return C(J)}return C(...F)}return Object.assign(g,C)}function uC(A){return{rest:vJ(A)}}uC.VERSION=fJ;function pq(A){let Q=vJ(A);return{...Q,rest:Q}}pq.VERSION=fJ;var J9=RB(uJ(),1);var iq="0.0.0-development";function nq(A){return A.request!==void 0}async function Y9(A,Q,B,I){if(!nq(B)||!B?.request.request)throw B;if(B.status>=400&&!A.doNotRetry.includes(B.status)){let E=I.request.retries!=null?I.request.retries:A.retries,C=Math.pow((I.request.retryCount||0)+1,2);throw Q.retry.retryRequest(B,E,C)}throw B}async function aq(A,Q,B,I){let E=new J9.default;return E.on("failed",function(C,g){let F=~~C.request.request?.retries,D=~~C.request.request?.retryAfter;if(I.request.retryCount=g.retryCount+1,F>g.retryCount)return D*A.retryAfterBaseValue}),E.schedule(sq.bind(null,A,Q,B),I)}async function sq(A,Q,B,I){let E=await B(I);if(E.data&&E.data.errors&&E.data.errors.length>0&&/Something went wrong while executing your query/.test(E.data.errors[0].message)){let C=new rQ(E.data.errors[0].message,500,{request:I,response:E});return Y9(A,Q,C,I)}return E}function cJ(A,Q){let B=Object.assign({enabled:!0,retryAfterBaseValue:1000,doNotRetry:[400,401,403,404,410,422,451],retries:3},Q.retry),I={retry:{retryRequest:(E,C,g)=>{return E.request.request=Object.assign({},E.request.request,{retries:C,retryAfter:g}),E}}};if(B.enabled)A.hook.error("request",Y9.bind(null,B,I)),A.hook.wrap("request",aq.bind(null,B,I));return I}cJ.VERSION=iq;var G9=RB(uJ(),1),oq="0.0.0-development",dJ=()=>Promise.resolve();function rq(A,Q,B){return A.retryLimiter.schedule(tq,A,Q,B)}async function tq(A,Q,B){let{pathname:I}=new URL(B.url,"http://github.test"),E=eq(B.method,I),C=!E&&B.method!=="GET"&&B.method!=="HEAD",g=B.method==="GET"&&I.startsWith("/search/"),F=I.startsWith("/graphql"),J=~~Q.retryCount>0?{priority:0,weight:0}:{};if(A.clustering)J.expiration=60000;if(C||F)await A.write.key(A.id).schedule(J,dJ);if(C&&A.triggersNotification(I))await A.notifications.key(A.id).schedule(J,dJ);if(g)await A.search.key(A.id).schedule(J,dJ);let Y=(E?A.auth:A.global).key(A.id).schedule(J,Q,B);if(F){let U=await Y;if(U.data.errors!=null&&U.data.errors.some((N)=>N.type==="RATE_LIMITED"))throw Object.assign(Error("GraphQL Rate Limit Exceeded"),{response:U,data:U.data})}return Y}function eq(A,Q){return A==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(Q)||A==="POST"&&(/^\/applications\/[^/]+\/token$/.test(Q)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(Q)||Q==="/login/oauth/access_token")}var Ay=["/orgs/{org}/invitations","/orgs/{org}/invitations/{invitation_id}","/orgs/{org}/teams/{team_slug}/discussions","/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments","/repos/{owner}/{repo}/collaborators/{username}","/repos/{owner}/{repo}/commits/{commit_sha}/comments","/repos/{owner}/{repo}/issues","/repos/{owner}/{repo}/issues/{issue_number}/comments","/repos/{owner}/{repo}/issues/{issue_number}/sub_issue","/repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority","/repos/{owner}/{repo}/pulls","/repos/{owner}/{repo}/pulls/{pull_number}/comments","/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies","/repos/{owner}/{repo}/pulls/{pull_number}/merge","/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers","/repos/{owner}/{repo}/pulls/{pull_number}/reviews","/repos/{owner}/{repo}/releases","/teams/{team_id}/discussions","/teams/{team_id}/discussions/{discussion_number}/comments"];function Qy(A){let B=`^(?:${A.map((I)=>I.split("/").map((E)=>E.startsWith("{")?"(?:.+?)":E).join("/")).map((I)=>`(?:${I})`).join("|")})[^/]*$`;return new RegExp(B,"i")}var U9=Qy(Ay),N9=U9.test.bind(U9),ZI={},By=function(A,Q){ZI.global=new A.Group({id:"octokit-global",maxConcurrent:10,...Q}),ZI.auth=new A.Group({id:"octokit-auth",maxConcurrent:1,...Q}),ZI.search=new A.Group({id:"octokit-search",maxConcurrent:1,minTime:2000,...Q}),ZI.write=new A.Group({id:"octokit-write",maxConcurrent:1,minTime:1000,...Q}),ZI.notifications=new A.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3000,...Q})};function A0(A,Q){let{enabled:B=!0,Bottleneck:I=G9.default,id:E="no-id",timeout:C=120000,connection:g}=Q.throttle||{};if(!B)return{};let F={timeout:C};if(typeof g<"u")F.connection=g;if(ZI.global==null)By(I,F);let D=Object.assign({clustering:g!=null,triggersNotification:N9,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1000,retryLimiter:new I,id:E,...ZI},Q.throttle);if(typeof D.onSecondaryRateLimit!=="function"||typeof D.onRateLimit!=="function")throw Error(`octokit/plugin-throttling error: +`)}var F6Q=class extends Error{constructor(A,Q,B){super(J6Q(B));if(this.request=A,this.headers=Q,this.response=B,this.errors=B.errors,this.data=B.data,Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},G6Q=["method","baseUrl","url","headers","request","query","mediaType","operationName"],D6Q=["query","method","url"],zKA=/\/api\/v3\/?$/;function Z6Q(A,Q,B){if(B){if(typeof Q==="string"&&"query"in B)return Promise.reject(Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let Y in B){if(!D6Q.includes(Y))continue;return Promise.reject(Error(`[@octokit/graphql] "${Y}" cannot be used as variable name`))}}let I=typeof Q==="string"?Object.assign({query:Q},B):Q,C=Object.keys(I).reduce((Y,J)=>{if(G6Q.includes(J))return Y[J]=I[J],Y;if(!Y.variables)Y.variables={};return Y.variables[J]=I[J],Y},{}),E=I.baseUrl||A.endpoint.DEFAULTS.baseUrl;if(zKA.test(E))C.url=E.replace(zKA,"/api/graphql");return A(C).then((Y)=>{if(Y.data.errors){let J={};for(let F of Object.keys(Y.headers))J[F]=Y.headers[F];throw new F6Q(C,J,Y.data)}return Y.data.data})}function yN(A,Q){let B=A.defaults(Q);return Object.assign((C,E)=>{return Z6Q(B,C,E)},{defaults:yN.bind(null,B),endpoint:B.endpoint})}var rAB=yN(OA,{headers:{"user-agent":`octokit-graphql.js/${Y6Q} ${iQ()}`},method:"POST",url:"/graphql"});function VKA(A){return yN(A,{method:"POST",url:"/graphql"})}var _N="(?:[a-zA-Z0-9_-]+)",$KA="\\.",LKA=new RegExp(`^${_N}${$KA}${_N}${$KA}${_N}$`),W6Q=LKA.test.bind(LKA);async function X6Q(A){let Q=W6Q(A),B=A.startsWith("v1.")||A.startsWith("ghs_"),I=A.startsWith("ghu_");return{type:"token",token:A,tokenType:Q?"app":B?"installation":I?"user-to-server":"oauth"}}function U6Q(A){if(A.split(/\./).length===3)return`bearer ${A}`;return`token ${A}`}async function w6Q(A,Q,B,I){let C=Q.endpoint.merge(B,I);return C.headers.authorization=U6Q(A),Q(C)}var HKA=function(Q){if(!Q)throw Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof Q!=="string")throw Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return Q=Q.replace(/^(token|bearer) +/i,""),Object.assign(X6Q.bind(null,Q),{hook:w6Q.bind(null,Q)})};var fN="7.0.6";var MKA=()=>{},K6Q=console.warn.bind(console),z6Q=console.error.bind(console);function V6Q(A={}){if(typeof A.debug!=="function")A.debug=MKA;if(typeof A.info!=="function")A.info=MKA;if(typeof A.warn!=="function")A.warn=K6Q;if(typeof A.error!=="function")A.error=z6Q;return A}var NKA=`octokit-core.js/${fN} ${iQ()}`;class w0{static VERSION=fN;static defaults(A){return class extends this{constructor(...B){let I=B[0]||{};if(typeof A==="function"){super(A(I));return}super(Object.assign({},A,I,I.userAgent&&A.userAgent?{userAgent:`${I.userAgent} ${A.userAgent}`}:null))}}}static plugins=[];static plugin(...A){let Q=this.plugins;return class extends this{static plugins=Q.concat(A.filter((I)=>!Q.includes(I)))}}constructor(A={}){let Q=new ewA.Collection,B={baseUrl:OA.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},A.request,{hook:Q.bind(null,"request")}),mediaType:{previews:[],format:""}};if(B.headers["user-agent"]=A.userAgent?`${A.userAgent} ${NKA}`:NKA,A.baseUrl)B.baseUrl=A.baseUrl;if(A.previews)B.mediaType.previews=A.previews;if(A.timeZone)B.headers["time-zone"]=A.timeZone;if(this.request=OA.defaults(B),this.graphql=VKA(this.request).defaults(B),this.log=V6Q(A.log),this.hook=Q,!A.authStrategy)if(!A.auth)this.auth=async()=>({type:"unauthenticated"});else{let C=HKA(A.auth);Q.wrap("request",C.hook),this.auth=C}else{let{authStrategy:C,...E}=A,Y=C(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:E},A.auth));Q.wrap("request",Y.hook),this.auth=Y}let I=this.constructor;for(let C=0;C({async next(){if(!J)return{done:!0};try{let F=await C({method:E,url:J,headers:Y}),G=L6Q(F);if(J=((G.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!J&&"total_commits"in G.data){let D=new URL(G.url),Z=D.searchParams,W=parseInt(Z.get("page")||"1",10),X=parseInt(Z.get("per_page")||"250",10);if(W*X{if(C.done)return Q;let E=!1;function Y(){E=!0}if(Q=Q.concat(I?I(C.value,Y):C.value.data),E)return Q;return RKA(A,Q,B,I)})}var kw=Object.assign(jKA,{iterator:gN});function dW(A){return{paginate:Object.assign(jKA.bind(null,A),{iterator:gN.bind(null,A)})}}dW.VERSION=$6Q;var H6Q=(A,Q)=>`The cursor at "${A.join(",")}" did not change its value "${Q}" after a page transition. Please make sure your that your query is set up correctly.`,M6Q=class extends Error{constructor(A,Q){super(H6Q(A.pathInQuery,Q));if(this.pageInfo=A,this.cursorValue=Q,Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}name="MissingCursorChangeError"},N6Q=class extends Error{constructor(A){super(`No pageInfo property found in response. Please make sure to specify the pageInfo in your query. Response-Data: ${JSON.stringify(A,null,2)}`);if(this.response=A,Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}name="MissingPageInfo"},j6Q=(A)=>Object.prototype.toString.call(A)==="[object Object]";function qKA(A){let Q=OKA(A,"pageInfo");if(Q.length===0)throw new N6Q(A);return Q}var OKA=(A,Q,B=[])=>{for(let I of Object.keys(A)){let C=[...B,I],E=A[I];if(j6Q(E)){if(E.hasOwnProperty(Q))return C;let Y=OKA(E,Q,C);if(Y.length>0)return Y}}return[]},cW=(A,Q)=>{return Q.reduce((B,I)=>B[I],A)},hN=(A,Q,B)=>{let I=Q[Q.length-1],C=[...Q].slice(0,-1),E=cW(A,C);if(typeof B==="function")E[I]=B(E[I]);else E[I]=B},R6Q=(A)=>{let Q=qKA(A);return{pathInQuery:Q,pageInfo:cW(A,[...Q,"pageInfo"])}},TKA=(A)=>{return A.hasOwnProperty("hasNextPage")},q6Q=(A)=>TKA(A)?A.endCursor:A.startCursor,O6Q=(A)=>TKA(A)?A.hasNextPage:A.hasPreviousPage,PKA=(A)=>{return(Q,B={})=>{let I=!0,C={...B};return{[Symbol.asyncIterator]:()=>({async next(){if(!I)return{done:!0,value:{}};let E=await A.graphql(Q,C),Y=R6Q(E),J=q6Q(Y.pageInfo);if(I=O6Q(Y.pageInfo),I&&J===C.cursor)throw new M6Q(Y,J);return C={...C,cursor:J},{done:!1,value:E}}})}}},T6Q=(A,Q)=>{if(Object.keys(A).length===0)return Object.assign(A,Q);let B=qKA(A),I=[...B,"nodes"],C=cW(Q,I);if(C)hN(A,I,(F)=>{return[...F,...C]});let E=[...B,"edges"],Y=cW(Q,E);if(Y)hN(A,E,(F)=>{return[...F,...Y]});let J=[...B,"pageInfo"];return hN(A,J,cW(Q,J)),A},P6Q=(A)=>{let Q=PKA(A);return async(B,I={})=>{let C={};for await(let E of Q(B,I))C=T6Q(C,E);return C}};function kKA(A){return{graphql:Object.assign(A.graphql,{paginate:Object.assign(P6Q(A),{iterator:PKA(A)})})}}var xN="17.0.0";var k6Q={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createHostedRunnerForOrg:["POST /orgs/{org}/actions/hosted-runners"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],createRegistrationTokenForOrg:["POST /orgs/{org}/actions/runners/registration-token"],createRegistrationTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/registration-token"],createRemoveTokenForOrg:["POST /orgs/{org}/actions/runners/remove-token"],createRemoveTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/remove-token"],createRepoVariable:["POST /repos/{owner}/{repo}/actions/variables"],createWorkflowDispatch:["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],deleteActionsCacheById:["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],deleteActionsCacheByKey:["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],deleteArtifact:["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],deleteCustomImageFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],deleteCustomImageVersionFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],deleteEnvironmentSecret:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],deleteEnvironmentVariable:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],deleteHostedRunnerForOrg:["DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],deleteOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}"],deleteOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],deleteRepoVariable:["DELETE /repos/{owner}/{repo}/actions/variables/{name}"],deleteSelfHostedRunnerFromOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}"],deleteSelfHostedRunnerFromRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],deleteWorkflowRun:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],deleteWorkflowRunLogs:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],disableSelectedRepositoryGithubActionsOrganization:["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],disableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],downloadArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],downloadJobLogsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],downloadWorkflowRunAttemptLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],downloadWorkflowRunLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],enableSelectedRepositoryGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],enableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],forceCancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"],generateRunnerJitconfigForOrg:["POST /orgs/{org}/actions/runners/generate-jitconfig"],generateRunnerJitconfigForRepo:["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"],getActionsCacheList:["GET /repos/{owner}/{repo}/actions/caches"],getActionsCacheUsage:["GET /repos/{owner}/{repo}/actions/cache/usage"],getActionsCacheUsageByRepoForOrg:["GET /orgs/{org}/actions/cache/usage-by-repository"],getActionsCacheUsageForOrg:["GET /orgs/{org}/actions/cache/usage"],getAllowedActionsOrganization:["GET /orgs/{org}/actions/permissions/selected-actions"],getAllowedActionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],getArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],getCustomImageForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],getCustomImageVersionForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],getCustomOidcSubClaimForRepo:["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"],getEnvironmentPublicKey:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"],getEnvironmentSecret:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],getEnvironmentVariable:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],getGithubActionsDefaultWorkflowPermissionsOrganization:["GET /orgs/{org}/actions/permissions/workflow"],getGithubActionsDefaultWorkflowPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/workflow"],getGithubActionsPermissionsOrganization:["GET /orgs/{org}/actions/permissions"],getGithubActionsPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions"],getHostedRunnerForOrg:["GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],getHostedRunnersGithubOwnedImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/github-owned"],getHostedRunnersLimitsForOrg:["GET /orgs/{org}/actions/hosted-runners/limits"],getHostedRunnersMachineSpecsForOrg:["GET /orgs/{org}/actions/hosted-runners/machine-sizes"],getHostedRunnersPartnerImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/partner"],getHostedRunnersPlatformsForOrg:["GET /orgs/{org}/actions/hosted-runners/platforms"],getJobForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],getOrgPublicKey:["GET /orgs/{org}/actions/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}"],getOrgVariable:["GET /orgs/{org}/actions/variables/{name}"],getPendingDeploymentsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],getRepoPermissions:["GET /repos/{owner}/{repo}/actions/permissions",{},{renamed:["actions","getGithubActionsPermissionsRepository"]}],getRepoPublicKey:["GET /repos/{owner}/{repo}/actions/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],getRepoVariable:["GET /repos/{owner}/{repo}/actions/variables/{name}"],getReviewsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],getSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}"],getSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],getWorkflow:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],getWorkflowAccessToRepository:["GET /repos/{owner}/{repo}/actions/permissions/access"],getWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],getWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],getWorkflowRunUsage:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],getWorkflowUsage:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],listArtifactsForRepo:["GET /repos/{owner}/{repo}/actions/artifacts"],listCustomImageVersionsForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"],listCustomImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom"],listEnvironmentSecrets:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"],listEnvironmentVariables:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"],listGithubHostedRunnersInGroupForOrg:["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"],listHostedRunnersForOrg:["GET /orgs/{org}/actions/hosted-runners"],listJobsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],listJobsForWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],listLabelsForSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}/labels"],listLabelsForSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],listOrgSecrets:["GET /orgs/{org}/actions/secrets"],listOrgVariables:["GET /orgs/{org}/actions/variables"],listRepoOrganizationSecrets:["GET /repos/{owner}/{repo}/actions/organization-secrets"],listRepoOrganizationVariables:["GET /repos/{owner}/{repo}/actions/organization-variables"],listRepoSecrets:["GET /repos/{owner}/{repo}/actions/secrets"],listRepoVariables:["GET /repos/{owner}/{repo}/actions/variables"],listRepoWorkflows:["GET /repos/{owner}/{repo}/actions/workflows"],listRunnerApplicationsForOrg:["GET /orgs/{org}/actions/runners/downloads"],listRunnerApplicationsForRepo:["GET /repos/{owner}/{repo}/actions/runners/downloads"],listSelectedReposForOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],listSelectedReposForOrgVariable:["GET /orgs/{org}/actions/variables/{name}/repositories"],listSelectedRepositoriesEnabledGithubActionsOrganization:["GET /orgs/{org}/actions/permissions/repositories"],listSelfHostedRunnersForOrg:["GET /orgs/{org}/actions/runners"],listSelfHostedRunnersForRepo:["GET /repos/{owner}/{repo}/actions/runners"],listWorkflowRunArtifacts:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],listWorkflowRuns:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],listWorkflowRunsForRepo:["GET /repos/{owner}/{repo}/actions/runs"],reRunJobForWorkflowRun:["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],reRunWorkflow:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],reRunWorkflowFailedJobs:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],removeAllCustomLabelsFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],removeAllCustomLabelsFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],removeCustomLabelFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],removeCustomLabelFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],reviewCustomGatesForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"],reviewPendingDeploymentsForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],setAllowedActionsOrganization:["PUT /orgs/{org}/actions/permissions/selected-actions"],setAllowedActionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],setCustomLabelsForSelfHostedRunnerForOrg:["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],setCustomLabelsForSelfHostedRunnerForRepo:["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],setCustomOidcSubClaimForRepo:["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"],setGithubActionsDefaultWorkflowPermissionsOrganization:["PUT /orgs/{org}/actions/permissions/workflow"],setGithubActionsDefaultWorkflowPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],setGithubActionsPermissionsOrganization:["PUT /orgs/{org}/actions/permissions"],setGithubActionsPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],setSelectedReposForOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories"],setSelectedRepositoriesEnabledGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories"],setWorkflowAccessToRepository:["PUT /repos/{owner}/{repo}/actions/permissions/access"],updateEnvironmentVariable:["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],updateHostedRunnerForOrg:["PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],updateOrgVariable:["PATCH /orgs/{org}/actions/variables/{name}"],updateRepoVariable:["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]},activity:{checkRepoIsStarredByAuthenticatedUser:["GET /user/starred/{owner}/{repo}"],deleteRepoSubscription:["DELETE /repos/{owner}/{repo}/subscription"],deleteThreadSubscription:["DELETE /notifications/threads/{thread_id}/subscription"],getFeeds:["GET /feeds"],getRepoSubscription:["GET /repos/{owner}/{repo}/subscription"],getThread:["GET /notifications/threads/{thread_id}"],getThreadSubscriptionForAuthenticatedUser:["GET /notifications/threads/{thread_id}/subscription"],listEventsForAuthenticatedUser:["GET /users/{username}/events"],listNotificationsForAuthenticatedUser:["GET /notifications"],listOrgEventsForAuthenticatedUser:["GET /users/{username}/events/orgs/{org}"],listPublicEvents:["GET /events"],listPublicEventsForRepoNetwork:["GET /networks/{owner}/{repo}/events"],listPublicEventsForUser:["GET /users/{username}/events/public"],listPublicOrgEvents:["GET /orgs/{org}/events"],listReceivedEventsForUser:["GET /users/{username}/received_events"],listReceivedPublicEventsForUser:["GET /users/{username}/received_events/public"],listRepoEvents:["GET /repos/{owner}/{repo}/events"],listRepoNotificationsForAuthenticatedUser:["GET /repos/{owner}/{repo}/notifications"],listReposStarredByAuthenticatedUser:["GET /user/starred"],listReposStarredByUser:["GET /users/{username}/starred"],listReposWatchedByUser:["GET /users/{username}/subscriptions"],listStargazersForRepo:["GET /repos/{owner}/{repo}/stargazers"],listWatchedReposForAuthenticatedUser:["GET /user/subscriptions"],listWatchersForRepo:["GET /repos/{owner}/{repo}/subscribers"],markNotificationsAsRead:["PUT /notifications"],markRepoNotificationsAsRead:["PUT /repos/{owner}/{repo}/notifications"],markThreadAsDone:["DELETE /notifications/threads/{thread_id}"],markThreadAsRead:["PATCH /notifications/threads/{thread_id}"],setRepoSubscription:["PUT /repos/{owner}/{repo}/subscription"],setThreadSubscription:["PUT /notifications/threads/{thread_id}/subscription"],starRepoForAuthenticatedUser:["PUT /user/starred/{owner}/{repo}"],unstarRepoForAuthenticatedUser:["DELETE /user/starred/{owner}/{repo}"]},apps:{addRepoToInstallation:["PUT /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","addRepoToInstallationForAuthenticatedUser"]}],addRepoToInstallationForAuthenticatedUser:["PUT /user/installations/{installation_id}/repositories/{repository_id}"],checkToken:["POST /applications/{client_id}/token"],createFromManifest:["POST /app-manifests/{code}/conversions"],createInstallationAccessToken:["POST /app/installations/{installation_id}/access_tokens"],deleteAuthorization:["DELETE /applications/{client_id}/grant"],deleteInstallation:["DELETE /app/installations/{installation_id}"],deleteToken:["DELETE /applications/{client_id}/token"],getAuthenticated:["GET /app"],getBySlug:["GET /apps/{app_slug}"],getInstallation:["GET /app/installations/{installation_id}"],getOrgInstallation:["GET /orgs/{org}/installation"],getRepoInstallation:["GET /repos/{owner}/{repo}/installation"],getSubscriptionPlanForAccount:["GET /marketplace_listing/accounts/{account_id}"],getSubscriptionPlanForAccountStubbed:["GET /marketplace_listing/stubbed/accounts/{account_id}"],getUserInstallation:["GET /users/{username}/installation"],getWebhookConfigForApp:["GET /app/hook/config"],getWebhookDelivery:["GET /app/hook/deliveries/{delivery_id}"],listAccountsForPlan:["GET /marketplace_listing/plans/{plan_id}/accounts"],listAccountsForPlanStubbed:["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],listInstallationReposForAuthenticatedUser:["GET /user/installations/{installation_id}/repositories"],listInstallationRequestsForAuthenticatedApp:["GET /app/installation-requests"],listInstallations:["GET /app/installations"],listInstallationsForAuthenticatedUser:["GET /user/installations"],listPlans:["GET /marketplace_listing/plans"],listPlansStubbed:["GET /marketplace_listing/stubbed/plans"],listReposAccessibleToInstallation:["GET /installation/repositories"],listSubscriptionsForAuthenticatedUser:["GET /user/marketplace_purchases"],listSubscriptionsForAuthenticatedUserStubbed:["GET /user/marketplace_purchases/stubbed"],listWebhookDeliveries:["GET /app/hook/deliveries"],redeliverWebhookDelivery:["POST /app/hook/deliveries/{delivery_id}/attempts"],removeRepoFromInstallation:["DELETE /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","removeRepoFromInstallationForAuthenticatedUser"]}],removeRepoFromInstallationForAuthenticatedUser:["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],resetToken:["PATCH /applications/{client_id}/token"],revokeInstallationAccessToken:["DELETE /installation/token"],scopeToken:["POST /applications/{client_id}/token/scoped"],suspendInstallation:["PUT /app/installations/{installation_id}/suspended"],unsuspendInstallation:["DELETE /app/installations/{installation_id}/suspended"],updateWebhookConfigForApp:["PATCH /app/hook/config"]},billing:{getGithubActionsBillingOrg:["GET /orgs/{org}/settings/billing/actions"],getGithubActionsBillingUser:["GET /users/{username}/settings/billing/actions"],getGithubBillingPremiumRequestUsageReportOrg:["GET /organizations/{org}/settings/billing/premium_request/usage"],getGithubBillingPremiumRequestUsageReportUser:["GET /users/{username}/settings/billing/premium_request/usage"],getGithubBillingUsageReportOrg:["GET /organizations/{org}/settings/billing/usage"],getGithubBillingUsageReportUser:["GET /users/{username}/settings/billing/usage"],getGithubPackagesBillingOrg:["GET /orgs/{org}/settings/billing/packages"],getGithubPackagesBillingUser:["GET /users/{username}/settings/billing/packages"],getSharedStorageBillingOrg:["GET /orgs/{org}/settings/billing/shared-storage"],getSharedStorageBillingUser:["GET /users/{username}/settings/billing/shared-storage"]},campaigns:{createCampaign:["POST /orgs/{org}/campaigns"],deleteCampaign:["DELETE /orgs/{org}/campaigns/{campaign_number}"],getCampaignSummary:["GET /orgs/{org}/campaigns/{campaign_number}"],listOrgCampaigns:["GET /orgs/{org}/campaigns"],updateCampaign:["PATCH /orgs/{org}/campaigns/{campaign_number}"]},checks:{create:["POST /repos/{owner}/{repo}/check-runs"],createSuite:["POST /repos/{owner}/{repo}/check-suites"],get:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],getSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],listAnnotations:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],listForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],listForSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],listSuitesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],rerequestRun:["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],rerequestSuite:["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],setSuitesPreferences:["PATCH /repos/{owner}/{repo}/check-suites/preferences"],update:["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]},codeScanning:{commitAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"],createAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],createVariantAnalysis:["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"],deleteAnalysis:["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],deleteCodeqlDatabase:["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getAlert:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",{},{renamedParameters:{alert_id:"alert_number"}}],getAnalysis:["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],getAutofix:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],getCodeqlDatabase:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getDefaultSetup:["GET /repos/{owner}/{repo}/code-scanning/default-setup"],getSarif:["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],getVariantAnalysis:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"],getVariantAnalysisRepoTask:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"],listAlertInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],listAlertsForOrg:["GET /orgs/{org}/code-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/code-scanning/alerts"],listAlertsInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",{},{renamed:["codeScanning","listAlertInstances"]}],listCodeqlDatabases:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],listRecentAnalyses:["GET /repos/{owner}/{repo}/code-scanning/analyses"],updateAlert:["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],updateDefaultSetup:["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"],uploadSarif:["POST /repos/{owner}/{repo}/code-scanning/sarifs"]},codeSecurity:{attachConfiguration:["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"],attachEnterpriseConfiguration:["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"],createConfiguration:["POST /orgs/{org}/code-security/configurations"],createConfigurationForEnterprise:["POST /enterprises/{enterprise}/code-security/configurations"],deleteConfiguration:["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"],deleteConfigurationForEnterprise:["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],detachConfiguration:["DELETE /orgs/{org}/code-security/configurations/detach"],getConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}"],getConfigurationForRepository:["GET /repos/{owner}/{repo}/code-security-configuration"],getConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations"],getConfigurationsForOrg:["GET /orgs/{org}/code-security/configurations"],getDefaultConfigurations:["GET /orgs/{org}/code-security/configurations/defaults"],getDefaultConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/defaults"],getRepositoriesForConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"],getRepositoriesForEnterpriseConfiguration:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"],getSingleConfigurationForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],setConfigurationAsDefault:["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"],setConfigurationAsDefaultForEnterprise:["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"],updateConfiguration:["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"],updateEnterpriseConfiguration:["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]},codesOfConduct:{getAllCodesOfConduct:["GET /codes_of_conduct"],getConductCode:["GET /codes_of_conduct/{key}"]},codespaces:{addRepositoryForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],checkPermissionsForDevcontainer:["GET /repos/{owner}/{repo}/codespaces/permissions_check"],codespaceMachinesForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/machines"],createForAuthenticatedUser:["POST /user/codespaces"],createOrUpdateOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],createOrUpdateSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}"],createWithPrForAuthenticatedUser:["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],createWithRepoForAuthenticatedUser:["POST /repos/{owner}/{repo}/codespaces"],deleteForAuthenticatedUser:["DELETE /user/codespaces/{codespace_name}"],deleteFromOrganization:["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],deleteOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],deleteSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}"],exportForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/exports"],getCodespacesForUserInOrg:["GET /orgs/{org}/members/{username}/codespaces"],getExportDetailsForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/exports/{export_id}"],getForAuthenticatedUser:["GET /user/codespaces/{codespace_name}"],getOrgPublicKey:["GET /orgs/{org}/codespaces/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}"],getPublicKeyForAuthenticatedUser:["GET /user/codespaces/secrets/public-key"],getRepoPublicKey:["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],getSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}"],listDevcontainersInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/devcontainers"],listForAuthenticatedUser:["GET /user/codespaces"],listInOrganization:["GET /orgs/{org}/codespaces",{},{renamedParameters:{org_id:"org"}}],listInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces"],listOrgSecrets:["GET /orgs/{org}/codespaces/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/codespaces/secrets"],listRepositoriesForSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}/repositories"],listSecretsForAuthenticatedUser:["GET /user/codespaces/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],preFlightWithRepoForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/new"],publishForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/publish"],removeRepositoryForSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],repoMachinesForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/machines"],setRepositoriesForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],startForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/start"],stopForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/stop"],stopInOrganization:["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],updateForAuthenticatedUser:["PATCH /user/codespaces/{codespace_name}"]},copilot:{addCopilotSeatsForTeams:["POST /orgs/{org}/copilot/billing/selected_teams"],addCopilotSeatsForUsers:["POST /orgs/{org}/copilot/billing/selected_users"],cancelCopilotSeatAssignmentForTeams:["DELETE /orgs/{org}/copilot/billing/selected_teams"],cancelCopilotSeatAssignmentForUsers:["DELETE /orgs/{org}/copilot/billing/selected_users"],copilotMetricsForOrganization:["GET /orgs/{org}/copilot/metrics"],copilotMetricsForTeam:["GET /orgs/{org}/team/{team_slug}/copilot/metrics"],getCopilotOrganizationDetails:["GET /orgs/{org}/copilot/billing"],getCopilotSeatDetailsForUser:["GET /orgs/{org}/members/{username}/copilot"],listCopilotSeats:["GET /orgs/{org}/copilot/billing/seats"]},credentials:{revoke:["POST /credentials/revoke"]},dependabot:{addSelectedRepoToOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],deleteOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],getAlert:["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],getOrgPublicKey:["GET /orgs/{org}/dependabot/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}"],getRepoPublicKey:["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/dependabot/alerts"],listAlertsForOrg:["GET /orgs/{org}/dependabot/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/dependabot/alerts"],listOrgSecrets:["GET /orgs/{org}/dependabot/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/dependabot/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],repositoryAccessForOrg:["GET /organizations/{org}/dependabot/repository-access"],setRepositoryAccessDefaultLevel:["PUT /organizations/{org}/dependabot/repository-access/default-level"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],updateAlert:["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],updateRepositoryAccessForOrg:["PATCH /organizations/{org}/dependabot/repository-access"]},dependencyGraph:{createRepositorySnapshot:["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],diffRange:["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"],exportSbom:["GET /repos/{owner}/{repo}/dependency-graph/sbom"]},emojis:{get:["GET /emojis"]},enterpriseTeamMemberships:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"],get:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],list:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"],remove:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]},enterpriseTeamOrganizations:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"],delete:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignment:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignments:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]},enterpriseTeams:{create:["POST /enterprises/{enterprise}/teams"],delete:["DELETE /enterprises/{enterprise}/teams/{team_slug}"],get:["GET /enterprises/{enterprise}/teams/{team_slug}"],list:["GET /enterprises/{enterprise}/teams"],update:["PATCH /enterprises/{enterprise}/teams/{team_slug}"]},gists:{checkIsStarred:["GET /gists/{gist_id}/star"],create:["POST /gists"],createComment:["POST /gists/{gist_id}/comments"],delete:["DELETE /gists/{gist_id}"],deleteComment:["DELETE /gists/{gist_id}/comments/{comment_id}"],fork:["POST /gists/{gist_id}/forks"],get:["GET /gists/{gist_id}"],getComment:["GET /gists/{gist_id}/comments/{comment_id}"],getRevision:["GET /gists/{gist_id}/{sha}"],list:["GET /gists"],listComments:["GET /gists/{gist_id}/comments"],listCommits:["GET /gists/{gist_id}/commits"],listForUser:["GET /users/{username}/gists"],listForks:["GET /gists/{gist_id}/forks"],listPublic:["GET /gists/public"],listStarred:["GET /gists/starred"],star:["PUT /gists/{gist_id}/star"],unstar:["DELETE /gists/{gist_id}/star"],update:["PATCH /gists/{gist_id}"],updateComment:["PATCH /gists/{gist_id}/comments/{comment_id}"]},git:{createBlob:["POST /repos/{owner}/{repo}/git/blobs"],createCommit:["POST /repos/{owner}/{repo}/git/commits"],createRef:["POST /repos/{owner}/{repo}/git/refs"],createTag:["POST /repos/{owner}/{repo}/git/tags"],createTree:["POST /repos/{owner}/{repo}/git/trees"],deleteRef:["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],getBlob:["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],getCommit:["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],getRef:["GET /repos/{owner}/{repo}/git/ref/{ref}"],getTag:["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],getTree:["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],listMatchingRefs:["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],updateRef:["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]},gitignore:{getAllTemplates:["GET /gitignore/templates"],getTemplate:["GET /gitignore/templates/{name}"]},hostedCompute:{createNetworkConfigurationForOrg:["POST /orgs/{org}/settings/network-configurations"],deleteNetworkConfigurationFromOrg:["DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkConfigurationForOrg:["GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkSettingsForOrg:["GET /orgs/{org}/settings/network-settings/{network_settings_id}"],listNetworkConfigurationsForOrg:["GET /orgs/{org}/settings/network-configurations"],updateNetworkConfigurationForOrg:["PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"]},interactions:{getRestrictionsForAuthenticatedUser:["GET /user/interaction-limits"],getRestrictionsForOrg:["GET /orgs/{org}/interaction-limits"],getRestrictionsForRepo:["GET /repos/{owner}/{repo}/interaction-limits"],getRestrictionsForYourPublicRepos:["GET /user/interaction-limits",{},{renamed:["interactions","getRestrictionsForAuthenticatedUser"]}],removeRestrictionsForAuthenticatedUser:["DELETE /user/interaction-limits"],removeRestrictionsForOrg:["DELETE /orgs/{org}/interaction-limits"],removeRestrictionsForRepo:["DELETE /repos/{owner}/{repo}/interaction-limits"],removeRestrictionsForYourPublicRepos:["DELETE /user/interaction-limits",{},{renamed:["interactions","removeRestrictionsForAuthenticatedUser"]}],setRestrictionsForAuthenticatedUser:["PUT /user/interaction-limits"],setRestrictionsForOrg:["PUT /orgs/{org}/interaction-limits"],setRestrictionsForRepo:["PUT /repos/{owner}/{repo}/interaction-limits"],setRestrictionsForYourPublicRepos:["PUT /user/interaction-limits",{},{renamed:["interactions","setRestrictionsForAuthenticatedUser"]}]},issues:{addAssignees:["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],addBlockedByDependency:["POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],addLabels:["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],addSubIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],checkUserCanBeAssigned:["GET /repos/{owner}/{repo}/assignees/{assignee}"],checkUserCanBeAssignedToIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"],create:["POST /repos/{owner}/{repo}/issues"],createComment:["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],createLabel:["POST /repos/{owner}/{repo}/labels"],createMilestone:["POST /repos/{owner}/{repo}/milestones"],deleteComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],deleteLabel:["DELETE /repos/{owner}/{repo}/labels/{name}"],deleteMilestone:["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],get:["GET /repos/{owner}/{repo}/issues/{issue_number}"],getComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],getEvent:["GET /repos/{owner}/{repo}/issues/events/{event_id}"],getLabel:["GET /repos/{owner}/{repo}/labels/{name}"],getMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],getParent:["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"],list:["GET /issues"],listAssignees:["GET /repos/{owner}/{repo}/assignees"],listComments:["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],listCommentsForRepo:["GET /repos/{owner}/{repo}/issues/comments"],listDependenciesBlockedBy:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],listDependenciesBlocking:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"],listEvents:["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],listEventsForRepo:["GET /repos/{owner}/{repo}/issues/events"],listEventsForTimeline:["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],listForAuthenticatedUser:["GET /user/issues"],listForOrg:["GET /orgs/{org}/issues"],listForRepo:["GET /repos/{owner}/{repo}/issues"],listLabelsForMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],listLabelsForRepo:["GET /repos/{owner}/{repo}/labels"],listLabelsOnIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],listMilestones:["GET /repos/{owner}/{repo}/milestones"],listSubIssues:["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],lock:["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],removeAllLabels:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],removeAssignees:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],removeDependencyBlockedBy:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"],removeLabel:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],removeSubIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"],reprioritizeSubIssue:["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"],setLabels:["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],unlock:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],update:["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],updateComment:["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],updateLabel:["PATCH /repos/{owner}/{repo}/labels/{name}"],updateMilestone:["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]},licenses:{get:["GET /licenses/{license}"],getAllCommonlyUsed:["GET /licenses"],getForRepo:["GET /repos/{owner}/{repo}/license"]},markdown:{render:["POST /markdown"],renderRaw:["POST /markdown/raw",{headers:{"content-type":"text/plain; charset=utf-8"}}]},meta:{get:["GET /meta"],getAllVersions:["GET /versions"],getOctocat:["GET /octocat"],getZen:["GET /zen"],root:["GET /"]},migrations:{deleteArchiveForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/archive"],deleteArchiveForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/archive"],downloadArchiveForOrg:["GET /orgs/{org}/migrations/{migration_id}/archive"],getArchiveForAuthenticatedUser:["GET /user/migrations/{migration_id}/archive"],getStatusForAuthenticatedUser:["GET /user/migrations/{migration_id}"],getStatusForOrg:["GET /orgs/{org}/migrations/{migration_id}"],listForAuthenticatedUser:["GET /user/migrations"],listForOrg:["GET /orgs/{org}/migrations"],listReposForAuthenticatedUser:["GET /user/migrations/{migration_id}/repositories"],listReposForOrg:["GET /orgs/{org}/migrations/{migration_id}/repositories"],listReposForUser:["GET /user/migrations/{migration_id}/repositories",{},{renamed:["migrations","listReposForAuthenticatedUser"]}],startForAuthenticatedUser:["POST /user/migrations"],startForOrg:["POST /orgs/{org}/migrations"],unlockRepoForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],unlockRepoForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]},oidc:{getOidcCustomSubTemplateForOrg:["GET /orgs/{org}/actions/oidc/customization/sub"],updateOidcCustomSubTemplateForOrg:["PUT /orgs/{org}/actions/oidc/customization/sub"]},orgs:{addSecurityManagerTeam:["PUT /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team"}],assignTeamToOrgRole:["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],assignUserToOrgRole:["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"],blockUser:["PUT /orgs/{org}/blocks/{username}"],cancelInvitation:["DELETE /orgs/{org}/invitations/{invitation_id}"],checkBlockedUser:["GET /orgs/{org}/blocks/{username}"],checkMembershipForUser:["GET /orgs/{org}/members/{username}"],checkPublicMembershipForUser:["GET /orgs/{org}/public_members/{username}"],convertMemberToOutsideCollaborator:["PUT /orgs/{org}/outside_collaborators/{username}"],createArtifactStorageRecord:["POST /orgs/{org}/artifacts/metadata/storage-record"],createInvitation:["POST /orgs/{org}/invitations"],createIssueType:["POST /orgs/{org}/issue-types"],createWebhook:["POST /orgs/{org}/hooks"],customPropertiesForOrgsCreateOrUpdateOrganizationValues:["PATCH /organizations/{org}/org-properties/values"],customPropertiesForOrgsGetOrganizationValues:["GET /organizations/{org}/org-properties/values"],customPropertiesForReposCreateOrUpdateOrganizationDefinition:["PUT /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposCreateOrUpdateOrganizationDefinitions:["PATCH /orgs/{org}/properties/schema"],customPropertiesForReposCreateOrUpdateOrganizationValues:["PATCH /orgs/{org}/properties/values"],customPropertiesForReposDeleteOrganizationDefinition:["DELETE /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinition:["GET /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinitions:["GET /orgs/{org}/properties/schema"],customPropertiesForReposGetOrganizationValues:["GET /orgs/{org}/properties/values"],delete:["DELETE /orgs/{org}"],deleteAttestationsBulk:["POST /orgs/{org}/attestations/delete-request"],deleteAttestationsById:["DELETE /orgs/{org}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /orgs/{org}/attestations/digest/{subject_digest}"],deleteIssueType:["DELETE /orgs/{org}/issue-types/{issue_type_id}"],deleteWebhook:["DELETE /orgs/{org}/hooks/{hook_id}"],disableSelectedRepositoryImmutableReleasesOrganization:["DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],enableSelectedRepositoryImmutableReleasesOrganization:["PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],get:["GET /orgs/{org}"],getImmutableReleasesSettings:["GET /orgs/{org}/settings/immutable-releases"],getImmutableReleasesSettingsRepositories:["GET /orgs/{org}/settings/immutable-releases/repositories"],getMembershipForAuthenticatedUser:["GET /user/memberships/orgs/{org}"],getMembershipForUser:["GET /orgs/{org}/memberships/{username}"],getOrgRole:["GET /orgs/{org}/organization-roles/{role_id}"],getOrgRulesetHistory:["GET /orgs/{org}/rulesets/{ruleset_id}/history"],getOrgRulesetVersion:["GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"],getWebhook:["GET /orgs/{org}/hooks/{hook_id}"],getWebhookConfigForOrg:["GET /orgs/{org}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],list:["GET /organizations"],listAppInstallations:["GET /orgs/{org}/installations"],listArtifactStorageRecords:["GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"],listAttestationRepositories:["GET /orgs/{org}/attestations/repositories"],listAttestations:["GET /orgs/{org}/attestations/{subject_digest}"],listAttestationsBulk:["POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"],listBlockedUsers:["GET /orgs/{org}/blocks"],listFailedInvitations:["GET /orgs/{org}/failed_invitations"],listForAuthenticatedUser:["GET /user/orgs"],listForUser:["GET /users/{username}/orgs"],listInvitationTeams:["GET /orgs/{org}/invitations/{invitation_id}/teams"],listIssueTypes:["GET /orgs/{org}/issue-types"],listMembers:["GET /orgs/{org}/members"],listMembershipsForAuthenticatedUser:["GET /user/memberships/orgs"],listOrgRoleTeams:["GET /orgs/{org}/organization-roles/{role_id}/teams"],listOrgRoleUsers:["GET /orgs/{org}/organization-roles/{role_id}/users"],listOrgRoles:["GET /orgs/{org}/organization-roles"],listOrganizationFineGrainedPermissions:["GET /orgs/{org}/organization-fine-grained-permissions"],listOutsideCollaborators:["GET /orgs/{org}/outside_collaborators"],listPatGrantRepositories:["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"],listPatGrantRequestRepositories:["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"],listPatGrantRequests:["GET /orgs/{org}/personal-access-token-requests"],listPatGrants:["GET /orgs/{org}/personal-access-tokens"],listPendingInvitations:["GET /orgs/{org}/invitations"],listPublicMembers:["GET /orgs/{org}/public_members"],listSecurityManagerTeams:["GET /orgs/{org}/security-managers",{},{deprecated:"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams"}],listWebhookDeliveries:["GET /orgs/{org}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /orgs/{org}/hooks"],pingWebhook:["POST /orgs/{org}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeMember:["DELETE /orgs/{org}/members/{username}"],removeMembershipForUser:["DELETE /orgs/{org}/memberships/{username}"],removeOutsideCollaborator:["DELETE /orgs/{org}/outside_collaborators/{username}"],removePublicMembershipForAuthenticatedUser:["DELETE /orgs/{org}/public_members/{username}"],removeSecurityManagerTeam:["DELETE /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team"}],reviewPatGrantRequest:["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"],reviewPatGrantRequestsInBulk:["POST /orgs/{org}/personal-access-token-requests"],revokeAllOrgRolesTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"],revokeAllOrgRolesUser:["DELETE /orgs/{org}/organization-roles/users/{username}"],revokeOrgRoleTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],revokeOrgRoleUser:["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"],setImmutableReleasesSettings:["PUT /orgs/{org}/settings/immutable-releases"],setImmutableReleasesSettingsRepositories:["PUT /orgs/{org}/settings/immutable-releases/repositories"],setMembershipForUser:["PUT /orgs/{org}/memberships/{username}"],setPublicMembershipForAuthenticatedUser:["PUT /orgs/{org}/public_members/{username}"],unblockUser:["DELETE /orgs/{org}/blocks/{username}"],update:["PATCH /orgs/{org}"],updateIssueType:["PUT /orgs/{org}/issue-types/{issue_type_id}"],updateMembershipForAuthenticatedUser:["PATCH /user/memberships/orgs/{org}"],updatePatAccess:["POST /orgs/{org}/personal-access-tokens/{pat_id}"],updatePatAccesses:["POST /orgs/{org}/personal-access-tokens"],updateWebhook:["PATCH /orgs/{org}/hooks/{hook_id}"],updateWebhookConfigForOrg:["PATCH /orgs/{org}/hooks/{hook_id}/config"]},packages:{deletePackageForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}"],deletePackageForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],deletePackageForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}"],deletePackageVersionForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getAllPackageVersionsForAPackageOwnedByAnOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByOrg"]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions"],getPackageForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}"],getPackageForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}"],getPackageForUser:["GET /users/{username}/packages/{package_type}/{package_name}"],getPackageVersionForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],listDockerMigrationConflictingPackagesForAuthenticatedUser:["GET /user/docker/conflicts"],listDockerMigrationConflictingPackagesForOrganization:["GET /orgs/{org}/docker/conflicts"],listDockerMigrationConflictingPackagesForUser:["GET /users/{username}/docker/conflicts"],listPackagesForAuthenticatedUser:["GET /user/packages"],listPackagesForOrganization:["GET /orgs/{org}/packages"],listPackagesForUser:["GET /users/{username}/packages"],restorePackageForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForUser:["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageVersionForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForUser:["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]},privateRegistries:{createOrgPrivateRegistry:["POST /orgs/{org}/private-registries"],deleteOrgPrivateRegistry:["DELETE /orgs/{org}/private-registries/{secret_name}"],getOrgPrivateRegistry:["GET /orgs/{org}/private-registries/{secret_name}"],getOrgPublicKey:["GET /orgs/{org}/private-registries/public-key"],listOrgPrivateRegistries:["GET /orgs/{org}/private-registries"],updateOrgPrivateRegistry:["PATCH /orgs/{org}/private-registries/{secret_name}"]},projects:{addItemForOrg:["POST /orgs/{org}/projectsV2/{project_number}/items"],addItemForUser:["POST /users/{username}/projectsV2/{project_number}/items"],deleteItemForOrg:["DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],deleteItemForUser:["DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"],getFieldForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"],getFieldForUser:["GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"],getForOrg:["GET /orgs/{org}/projectsV2/{project_number}"],getForUser:["GET /users/{username}/projectsV2/{project_number}"],getOrgItem:["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],getUserItem:["GET /users/{username}/projectsV2/{project_number}/items/{item_id}"],listFieldsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields"],listFieldsForUser:["GET /users/{username}/projectsV2/{project_number}/fields"],listForOrg:["GET /orgs/{org}/projectsV2"],listForUser:["GET /users/{username}/projectsV2"],listItemsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/items"],listItemsForUser:["GET /users/{username}/projectsV2/{project_number}/items"],updateItemForOrg:["PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],updateItemForUser:["PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"]},pulls:{checkIfMerged:["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],create:["POST /repos/{owner}/{repo}/pulls"],createReplyForReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],createReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],createReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],deletePendingReview:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],deleteReviewComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],dismissReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],get:["GET /repos/{owner}/{repo}/pulls/{pull_number}"],getReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],getReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],list:["GET /repos/{owner}/{repo}/pulls"],listCommentsForReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],listCommits:["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],listFiles:["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],listRequestedReviewers:["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],listReviewComments:["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],listReviewCommentsForRepo:["GET /repos/{owner}/{repo}/pulls/comments"],listReviews:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],merge:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],removeRequestedReviewers:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],requestReviewers:["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],submitReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],update:["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],updateBranch:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],updateReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],updateReviewComment:["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]},rateLimit:{get:["GET /rate_limit"]},reactions:{createForCommitComment:["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],createForIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],createForIssueComment:["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],createForPullRequestReviewComment:["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],createForRelease:["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],createForTeamDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],createForTeamDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],deleteForCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],deleteForIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],deleteForIssueComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],deleteForPullRequestComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],deleteForRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],deleteForTeamDiscussion:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],deleteForTeamDiscussionComment:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],listForCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],listForIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],listForIssueComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],listForPullRequestReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],listForRelease:["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],listForTeamDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],listForTeamDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]},repos:{acceptInvitation:["PATCH /user/repository_invitations/{invitation_id}",{},{renamed:["repos","acceptInvitationForAuthenticatedUser"]}],acceptInvitationForAuthenticatedUser:["PATCH /user/repository_invitations/{invitation_id}"],addAppAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],addCollaborator:["PUT /repos/{owner}/{repo}/collaborators/{username}"],addStatusCheckContexts:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],addTeamAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],addUserAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],cancelPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"],checkAutomatedSecurityFixes:["GET /repos/{owner}/{repo}/automated-security-fixes"],checkCollaborator:["GET /repos/{owner}/{repo}/collaborators/{username}"],checkImmutableReleases:["GET /repos/{owner}/{repo}/immutable-releases"],checkPrivateVulnerabilityReporting:["GET /repos/{owner}/{repo}/private-vulnerability-reporting"],checkVulnerabilityAlerts:["GET /repos/{owner}/{repo}/vulnerability-alerts"],codeownersErrors:["GET /repos/{owner}/{repo}/codeowners/errors"],compareCommits:["GET /repos/{owner}/{repo}/compare/{base}...{head}"],compareCommitsWithBasehead:["GET /repos/{owner}/{repo}/compare/{basehead}"],createAttestation:["POST /repos/{owner}/{repo}/attestations"],createAutolink:["POST /repos/{owner}/{repo}/autolinks"],createCommitComment:["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],createCommitSignatureProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],createCommitStatus:["POST /repos/{owner}/{repo}/statuses/{sha}"],createDeployKey:["POST /repos/{owner}/{repo}/keys"],createDeployment:["POST /repos/{owner}/{repo}/deployments"],createDeploymentBranchPolicy:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],createDeploymentProtectionRule:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],createDeploymentStatus:["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],createDispatchEvent:["POST /repos/{owner}/{repo}/dispatches"],createForAuthenticatedUser:["POST /user/repos"],createFork:["POST /repos/{owner}/{repo}/forks"],createInOrg:["POST /orgs/{org}/repos"],createOrUpdateEnvironment:["PUT /repos/{owner}/{repo}/environments/{environment_name}"],createOrUpdateFileContents:["PUT /repos/{owner}/{repo}/contents/{path}"],createOrgRuleset:["POST /orgs/{org}/rulesets"],createPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments"],createPagesSite:["POST /repos/{owner}/{repo}/pages"],createRelease:["POST /repos/{owner}/{repo}/releases"],createRepoRuleset:["POST /repos/{owner}/{repo}/rulesets"],createUsingTemplate:["POST /repos/{template_owner}/{template_repo}/generate"],createWebhook:["POST /repos/{owner}/{repo}/hooks"],customPropertiesForReposCreateOrUpdateRepositoryValues:["PATCH /repos/{owner}/{repo}/properties/values"],customPropertiesForReposGetRepositoryValues:["GET /repos/{owner}/{repo}/properties/values"],declineInvitation:["DELETE /user/repository_invitations/{invitation_id}",{},{renamed:["repos","declineInvitationForAuthenticatedUser"]}],declineInvitationForAuthenticatedUser:["DELETE /user/repository_invitations/{invitation_id}"],delete:["DELETE /repos/{owner}/{repo}"],deleteAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],deleteAdminBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],deleteAnEnvironment:["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],deleteAutolink:["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],deleteBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],deleteCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],deleteCommitSignatureProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],deleteDeployKey:["DELETE /repos/{owner}/{repo}/keys/{key_id}"],deleteDeployment:["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],deleteDeploymentBranchPolicy:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],deleteFile:["DELETE /repos/{owner}/{repo}/contents/{path}"],deleteInvitation:["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],deleteOrgRuleset:["DELETE /orgs/{org}/rulesets/{ruleset_id}"],deletePagesSite:["DELETE /repos/{owner}/{repo}/pages"],deletePullRequestReviewProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],deleteRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}"],deleteReleaseAsset:["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],deleteRepoRuleset:["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],deleteWebhook:["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],disableAutomatedSecurityFixes:["DELETE /repos/{owner}/{repo}/automated-security-fixes"],disableDeploymentProtectionRule:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],disableImmutableReleases:["DELETE /repos/{owner}/{repo}/immutable-releases"],disablePrivateVulnerabilityReporting:["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"],disableVulnerabilityAlerts:["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],downloadArchive:["GET /repos/{owner}/{repo}/zipball/{ref}",{},{renamed:["repos","downloadZipballArchive"]}],downloadTarballArchive:["GET /repos/{owner}/{repo}/tarball/{ref}"],downloadZipballArchive:["GET /repos/{owner}/{repo}/zipball/{ref}"],enableAutomatedSecurityFixes:["PUT /repos/{owner}/{repo}/automated-security-fixes"],enableImmutableReleases:["PUT /repos/{owner}/{repo}/immutable-releases"],enablePrivateVulnerabilityReporting:["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"],enableVulnerabilityAlerts:["PUT /repos/{owner}/{repo}/vulnerability-alerts"],generateReleaseNotes:["POST /repos/{owner}/{repo}/releases/generate-notes"],get:["GET /repos/{owner}/{repo}"],getAccessRestrictions:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],getAdminBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],getAllDeploymentProtectionRules:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],getAllEnvironments:["GET /repos/{owner}/{repo}/environments"],getAllStatusCheckContexts:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],getAllTopics:["GET /repos/{owner}/{repo}/topics"],getAppsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],getAutolink:["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],getBranch:["GET /repos/{owner}/{repo}/branches/{branch}"],getBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection"],getBranchRules:["GET /repos/{owner}/{repo}/rules/branches/{branch}"],getClones:["GET /repos/{owner}/{repo}/traffic/clones"],getCodeFrequencyStats:["GET /repos/{owner}/{repo}/stats/code_frequency"],getCollaboratorPermissionLevel:["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],getCombinedStatusForRef:["GET /repos/{owner}/{repo}/commits/{ref}/status"],getCommit:["GET /repos/{owner}/{repo}/commits/{ref}"],getCommitActivityStats:["GET /repos/{owner}/{repo}/stats/commit_activity"],getCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}"],getCommitSignatureProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],getCommunityProfileMetrics:["GET /repos/{owner}/{repo}/community/profile"],getContent:["GET /repos/{owner}/{repo}/contents/{path}"],getContributorsStats:["GET /repos/{owner}/{repo}/stats/contributors"],getCustomDeploymentProtectionRule:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],getDeployKey:["GET /repos/{owner}/{repo}/keys/{key_id}"],getDeployment:["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],getDeploymentBranchPolicy:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],getDeploymentStatus:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],getEnvironment:["GET /repos/{owner}/{repo}/environments/{environment_name}"],getLatestPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/latest"],getLatestRelease:["GET /repos/{owner}/{repo}/releases/latest"],getOrgRuleSuite:["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],getOrgRuleSuites:["GET /orgs/{org}/rulesets/rule-suites"],getOrgRuleset:["GET /orgs/{org}/rulesets/{ruleset_id}"],getOrgRulesets:["GET /orgs/{org}/rulesets"],getPages:["GET /repos/{owner}/{repo}/pages"],getPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],getPagesDeployment:["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"],getPagesHealthCheck:["GET /repos/{owner}/{repo}/pages/health"],getParticipationStats:["GET /repos/{owner}/{repo}/stats/participation"],getPullRequestReviewProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],getPunchCardStats:["GET /repos/{owner}/{repo}/stats/punch_card"],getReadme:["GET /repos/{owner}/{repo}/readme"],getReadmeInDirectory:["GET /repos/{owner}/{repo}/readme/{dir}"],getRelease:["GET /repos/{owner}/{repo}/releases/{release_id}"],getReleaseAsset:["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],getReleaseByTag:["GET /repos/{owner}/{repo}/releases/tags/{tag}"],getRepoRuleSuite:["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"],getRepoRuleSuites:["GET /repos/{owner}/{repo}/rulesets/rule-suites"],getRepoRuleset:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],getRepoRulesetHistory:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"],getRepoRulesetVersion:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"],getRepoRulesets:["GET /repos/{owner}/{repo}/rulesets"],getStatusChecksProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],getTeamsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],getTopPaths:["GET /repos/{owner}/{repo}/traffic/popular/paths"],getTopReferrers:["GET /repos/{owner}/{repo}/traffic/popular/referrers"],getUsersWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],getViews:["GET /repos/{owner}/{repo}/traffic/views"],getWebhook:["GET /repos/{owner}/{repo}/hooks/{hook_id}"],getWebhookConfigForRepo:["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],listActivities:["GET /repos/{owner}/{repo}/activity"],listAttestations:["GET /repos/{owner}/{repo}/attestations/{subject_digest}"],listAutolinks:["GET /repos/{owner}/{repo}/autolinks"],listBranches:["GET /repos/{owner}/{repo}/branches"],listBranchesForHeadCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],listCollaborators:["GET /repos/{owner}/{repo}/collaborators"],listCommentsForCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],listCommitCommentsForRepo:["GET /repos/{owner}/{repo}/comments"],listCommitStatusesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],listCommits:["GET /repos/{owner}/{repo}/commits"],listContributors:["GET /repos/{owner}/{repo}/contributors"],listCustomDeploymentRuleIntegrations:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"],listDeployKeys:["GET /repos/{owner}/{repo}/keys"],listDeploymentBranchPolicies:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],listDeploymentStatuses:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],listDeployments:["GET /repos/{owner}/{repo}/deployments"],listForAuthenticatedUser:["GET /user/repos"],listForOrg:["GET /orgs/{org}/repos"],listForUser:["GET /users/{username}/repos"],listForks:["GET /repos/{owner}/{repo}/forks"],listInvitations:["GET /repos/{owner}/{repo}/invitations"],listInvitationsForAuthenticatedUser:["GET /user/repository_invitations"],listLanguages:["GET /repos/{owner}/{repo}/languages"],listPagesBuilds:["GET /repos/{owner}/{repo}/pages/builds"],listPublic:["GET /repositories"],listPullRequestsAssociatedWithCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],listReleaseAssets:["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],listReleases:["GET /repos/{owner}/{repo}/releases"],listTags:["GET /repos/{owner}/{repo}/tags"],listTeams:["GET /repos/{owner}/{repo}/teams"],listWebhookDeliveries:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /repos/{owner}/{repo}/hooks"],merge:["POST /repos/{owner}/{repo}/merges"],mergeUpstream:["POST /repos/{owner}/{repo}/merge-upstream"],pingWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeAppAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],removeCollaborator:["DELETE /repos/{owner}/{repo}/collaborators/{username}"],removeStatusCheckContexts:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],removeStatusCheckProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],removeTeamAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],removeUserAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],renameBranch:["POST /repos/{owner}/{repo}/branches/{branch}/rename"],replaceAllTopics:["PUT /repos/{owner}/{repo}/topics"],requestPagesBuild:["POST /repos/{owner}/{repo}/pages/builds"],setAdminBranchProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],setAppAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],setStatusCheckContexts:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],setTeamAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],setUserAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],testPushWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],transfer:["POST /repos/{owner}/{repo}/transfer"],update:["PATCH /repos/{owner}/{repo}"],updateBranchProtection:["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],updateCommitComment:["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],updateDeploymentBranchPolicy:["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],updateInformationAboutPagesSite:["PUT /repos/{owner}/{repo}/pages"],updateInvitation:["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],updateOrgRuleset:["PUT /orgs/{org}/rulesets/{ruleset_id}"],updatePullRequestReviewProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],updateRelease:["PATCH /repos/{owner}/{repo}/releases/{release_id}"],updateReleaseAsset:["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],updateRepoRuleset:["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],updateStatusCheckPotection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",{},{renamed:["repos","updateStatusCheckProtection"]}],updateStatusCheckProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],updateWebhook:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],updateWebhookConfigForRepo:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],uploadReleaseAsset:["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",{baseUrl:"https://uploads.github.com"}]},search:{code:["GET /search/code"],commits:["GET /search/commits"],issuesAndPullRequests:["GET /search/issues"],labels:["GET /search/labels"],repos:["GET /search/repositories"],topics:["GET /search/topics"],users:["GET /search/users"]},secretScanning:{createPushProtectionBypass:["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"],getAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],getScanHistory:["GET /repos/{owner}/{repo}/secret-scanning/scan-history"],listAlertsForOrg:["GET /orgs/{org}/secret-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/secret-scanning/alerts"],listLocationsForAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],listOrgPatternConfigs:["GET /orgs/{org}/secret-scanning/pattern-configurations"],updateAlert:["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],updateOrgPatternConfigs:["PATCH /orgs/{org}/secret-scanning/pattern-configurations"]},securityAdvisories:{createFork:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"],createPrivateVulnerabilityReport:["POST /repos/{owner}/{repo}/security-advisories/reports"],createRepositoryAdvisory:["POST /repos/{owner}/{repo}/security-advisories"],createRepositoryAdvisoryCveRequest:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"],getGlobalAdvisory:["GET /advisories/{ghsa_id}"],getRepositoryAdvisory:["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"],listGlobalAdvisories:["GET /advisories"],listOrgRepositoryAdvisories:["GET /orgs/{org}/security-advisories"],listRepositoryAdvisories:["GET /repos/{owner}/{repo}/security-advisories"],updateRepositoryAdvisory:["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]},teams:{addOrUpdateMembershipForUserInOrg:["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],addOrUpdateRepoPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],checkPermissionsForRepoInOrg:["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],create:["POST /orgs/{org}/teams"],createDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],createDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions"],deleteDiscussionCommentInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],deleteDiscussionInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],deleteInOrg:["DELETE /orgs/{org}/teams/{team_slug}"],getByName:["GET /orgs/{org}/teams/{team_slug}"],getDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],getDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],getMembershipForUserInOrg:["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],list:["GET /orgs/{org}/teams"],listChildInOrg:["GET /orgs/{org}/teams/{team_slug}/teams"],listDiscussionCommentsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],listDiscussionsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions"],listForAuthenticatedUser:["GET /user/teams"],listMembersInOrg:["GET /orgs/{org}/teams/{team_slug}/members"],listPendingInvitationsInOrg:["GET /orgs/{org}/teams/{team_slug}/invitations"],listReposInOrg:["GET /orgs/{org}/teams/{team_slug}/repos"],removeMembershipForUserInOrg:["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],removeRepoInOrg:["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],updateDiscussionCommentInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],updateDiscussionInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],updateInOrg:["PATCH /orgs/{org}/teams/{team_slug}"]},users:{addEmailForAuthenticated:["POST /user/emails",{},{renamed:["users","addEmailForAuthenticatedUser"]}],addEmailForAuthenticatedUser:["POST /user/emails"],addSocialAccountForAuthenticatedUser:["POST /user/social_accounts"],block:["PUT /user/blocks/{username}"],checkBlocked:["GET /user/blocks/{username}"],checkFollowingForUser:["GET /users/{username}/following/{target_user}"],checkPersonIsFollowedByAuthenticated:["GET /user/following/{username}"],createGpgKeyForAuthenticated:["POST /user/gpg_keys",{},{renamed:["users","createGpgKeyForAuthenticatedUser"]}],createGpgKeyForAuthenticatedUser:["POST /user/gpg_keys"],createPublicSshKeyForAuthenticated:["POST /user/keys",{},{renamed:["users","createPublicSshKeyForAuthenticatedUser"]}],createPublicSshKeyForAuthenticatedUser:["POST /user/keys"],createSshSigningKeyForAuthenticatedUser:["POST /user/ssh_signing_keys"],deleteAttestationsBulk:["POST /users/{username}/attestations/delete-request"],deleteAttestationsById:["DELETE /users/{username}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /users/{username}/attestations/digest/{subject_digest}"],deleteEmailForAuthenticated:["DELETE /user/emails",{},{renamed:["users","deleteEmailForAuthenticatedUser"]}],deleteEmailForAuthenticatedUser:["DELETE /user/emails"],deleteGpgKeyForAuthenticated:["DELETE /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","deleteGpgKeyForAuthenticatedUser"]}],deleteGpgKeyForAuthenticatedUser:["DELETE /user/gpg_keys/{gpg_key_id}"],deletePublicSshKeyForAuthenticated:["DELETE /user/keys/{key_id}",{},{renamed:["users","deletePublicSshKeyForAuthenticatedUser"]}],deletePublicSshKeyForAuthenticatedUser:["DELETE /user/keys/{key_id}"],deleteSocialAccountForAuthenticatedUser:["DELETE /user/social_accounts"],deleteSshSigningKeyForAuthenticatedUser:["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],follow:["PUT /user/following/{username}"],getAuthenticated:["GET /user"],getById:["GET /user/{account_id}"],getByUsername:["GET /users/{username}"],getContextForUser:["GET /users/{username}/hovercard"],getGpgKeyForAuthenticated:["GET /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","getGpgKeyForAuthenticatedUser"]}],getGpgKeyForAuthenticatedUser:["GET /user/gpg_keys/{gpg_key_id}"],getPublicSshKeyForAuthenticated:["GET /user/keys/{key_id}",{},{renamed:["users","getPublicSshKeyForAuthenticatedUser"]}],getPublicSshKeyForAuthenticatedUser:["GET /user/keys/{key_id}"],getSshSigningKeyForAuthenticatedUser:["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],list:["GET /users"],listAttestations:["GET /users/{username}/attestations/{subject_digest}"],listAttestationsBulk:["POST /users/{username}/attestations/bulk-list{?per_page,before,after}"],listBlockedByAuthenticated:["GET /user/blocks",{},{renamed:["users","listBlockedByAuthenticatedUser"]}],listBlockedByAuthenticatedUser:["GET /user/blocks"],listEmailsForAuthenticated:["GET /user/emails",{},{renamed:["users","listEmailsForAuthenticatedUser"]}],listEmailsForAuthenticatedUser:["GET /user/emails"],listFollowedByAuthenticated:["GET /user/following",{},{renamed:["users","listFollowedByAuthenticatedUser"]}],listFollowedByAuthenticatedUser:["GET /user/following"],listFollowersForAuthenticatedUser:["GET /user/followers"],listFollowersForUser:["GET /users/{username}/followers"],listFollowingForUser:["GET /users/{username}/following"],listGpgKeysForAuthenticated:["GET /user/gpg_keys",{},{renamed:["users","listGpgKeysForAuthenticatedUser"]}],listGpgKeysForAuthenticatedUser:["GET /user/gpg_keys"],listGpgKeysForUser:["GET /users/{username}/gpg_keys"],listPublicEmailsForAuthenticated:["GET /user/public_emails",{},{renamed:["users","listPublicEmailsForAuthenticatedUser"]}],listPublicEmailsForAuthenticatedUser:["GET /user/public_emails"],listPublicKeysForUser:["GET /users/{username}/keys"],listPublicSshKeysForAuthenticated:["GET /user/keys",{},{renamed:["users","listPublicSshKeysForAuthenticatedUser"]}],listPublicSshKeysForAuthenticatedUser:["GET /user/keys"],listSocialAccountsForAuthenticatedUser:["GET /user/social_accounts"],listSocialAccountsForUser:["GET /users/{username}/social_accounts"],listSshSigningKeysForAuthenticatedUser:["GET /user/ssh_signing_keys"],listSshSigningKeysForUser:["GET /users/{username}/ssh_signing_keys"],setPrimaryEmailVisibilityForAuthenticated:["PATCH /user/email/visibility",{},{renamed:["users","setPrimaryEmailVisibilityForAuthenticatedUser"]}],setPrimaryEmailVisibilityForAuthenticatedUser:["PATCH /user/email/visibility"],unblock:["DELETE /user/blocks/{username}"],unfollow:["DELETE /user/following/{username}"],updateAuthenticated:["PATCH /user"]}},SKA=k6Q;var wF=new Map;for(let[A,Q]of Object.entries(SKA))for(let[B,I]of Object.entries(Q)){let[C,E,Y]=I,[J,F]=C.split(/ /),G=Object.assign({method:J,url:F},E);if(!wF.has(A))wF.set(A,new Map);wF.get(A).set(B,{scope:A,methodName:B,endpointDefaults:G,decorations:Y})}var S6Q={has({scope:A},Q){return wF.get(A).has(Q)},getOwnPropertyDescriptor(A,Q){return{value:this.get(A,Q),configurable:!0,writable:!0,enumerable:!0}},defineProperty(A,Q,B){return Object.defineProperty(A.cache,Q,B),!0},deleteProperty(A,Q){return delete A.cache[Q],!0},ownKeys({scope:A}){return[...wF.get(A).keys()]},set(A,Q,B){return A.cache[Q]=B},get({octokit:A,scope:Q,cache:B},I){if(B[I])return B[I];let C=wF.get(Q).get(I);if(!C)return;let{endpointDefaults:E,decorations:Y}=C;if(Y)B[I]=y6Q(A,Q,I,E,Y);else B[I]=A.request.defaults(E);return B[I]}};function vN(A){let Q={};for(let B of wF.keys())Q[B]=new Proxy({octokit:A,scope:B,cache:{}},S6Q);return Q}function y6Q(A,Q,B,I,C){let E=A.request.defaults(I);function Y(...J){let F=E.endpoint.merge(...J);if(C.mapToData)return F=Object.assign({},F,{data:F[C.mapToData],[C.mapToData]:void 0}),E(F);if(C.renamed){let[G,D]=C.renamed;A.log.warn(`octokit.${Q}.${B}() has been renamed to octokit.${G}.${D}()`)}if(C.deprecated)A.log.warn(C.deprecated);if(C.renamedParameters){let G=E.endpoint.merge(...J);for(let[D,Z]of Object.entries(C.renamedParameters))if(D in G){if(A.log.warn(`"${D}" parameter is deprecated for "octokit.${Q}.${B}()". Use "${Z}" instead`),!(Z in G))G[Z]=G[D];delete G[D]}return E(G)}return E(...J)}return Object.assign(Y,E)}function uW(A){return{rest:vN(A)}}uW.VERSION=xN;function _6Q(A){let Q=vN(A);return{...Q,rest:Q}}_6Q.VERSION=xN;var _KA=f(dN(),1);var f6Q="0.0.0-development";function g6Q(A){return A.request!==void 0}async function yKA(A,Q,B,I){if(!g6Q(B)||!B?.request.request)throw B;if(B.status>=400&&!A.doNotRetry.includes(B.status)){let C=I.request.retries!=null?I.request.retries:A.retries,E=Math.pow((I.request.retryCount||0)+1,2);throw Q.retry.retryRequest(B,C,E)}throw B}async function h6Q(A,Q,B,I){let C=new _KA.default;return C.on("failed",function(E,Y){let J=~~E.request.request?.retries,F=~~E.request.request?.retryAfter;if(I.request.retryCount=Y.retryCount+1,J>Y.retryCount)return F*A.retryAfterBaseValue}),C.schedule(x6Q.bind(null,A,Q,B),I)}async function x6Q(A,Q,B,I){let C=await B(I);if(C.data&&C.data.errors&&C.data.errors.length>0&&/Something went wrong while executing your query/.test(C.data.errors[0].message)){let E=new VE(C.data.errors[0].message,500,{request:I,response:C});return yKA(A,Q,E,I)}return C}function cN(A,Q){let B=Object.assign({enabled:!0,retryAfterBaseValue:1000,doNotRetry:[400,401,403,404,410,422,451],retries:3},Q.retry),I={retry:{retryRequest:(C,E,Y)=>{return C.request.request=Object.assign({},C.request.request,{retries:E,retryAfter:Y}),C}}};if(B.enabled)A.hook.error("request",yKA.bind(null,B,I)),A.hook.wrap("request",h6Q.bind(null,B,I));return I}cN.VERSION=f6Q;var gKA=f(dN(),1),v6Q="0.0.0-development",uN=()=>Promise.resolve();function b6Q(A,Q,B){return A.retryLimiter.schedule(m6Q,A,Q,B)}async function m6Q(A,Q,B){let{pathname:I}=new URL(B.url,"http://github.test"),C=d6Q(B.method,I),E=!C&&B.method!=="GET"&&B.method!=="HEAD",Y=B.method==="GET"&&I.startsWith("/search/"),J=I.startsWith("/graphql"),G=~~Q.retryCount>0?{priority:0,weight:0}:{};if(A.clustering)G.expiration=60000;if(E||J)await A.write.key(A.id).schedule(G,uN);if(E&&A.triggersNotification(I))await A.notifications.key(A.id).schedule(G,uN);if(Y)await A.search.key(A.id).schedule(G,uN);let D=(C?A.auth:A.global).key(A.id).schedule(G,Q,B);if(J){let Z=await D;if(Z.data.errors!=null&&Z.data.errors.some((W)=>W.type==="RATE_LIMITED"))throw Object.assign(Error("GraphQL Rate Limit Exceeded"),{response:Z,data:Z.data})}return D}function d6Q(A,Q){return A==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(Q)||A==="POST"&&(/^\/applications\/[^/]+\/token$/.test(Q)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(Q)||Q==="/login/oauth/access_token")}var c6Q=["/orgs/{org}/invitations","/orgs/{org}/invitations/{invitation_id}","/orgs/{org}/teams/{team_slug}/discussions","/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments","/repos/{owner}/{repo}/collaborators/{username}","/repos/{owner}/{repo}/commits/{commit_sha}/comments","/repos/{owner}/{repo}/issues","/repos/{owner}/{repo}/issues/{issue_number}/comments","/repos/{owner}/{repo}/issues/{issue_number}/sub_issue","/repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority","/repos/{owner}/{repo}/pulls","/repos/{owner}/{repo}/pulls/{pull_number}/comments","/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies","/repos/{owner}/{repo}/pulls/{pull_number}/merge","/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers","/repos/{owner}/{repo}/pulls/{pull_number}/reviews","/repos/{owner}/{repo}/releases","/teams/{team_id}/discussions","/teams/{team_id}/discussions/{discussion_number}/comments"];function u6Q(A){let B=`^(?:${A.map((I)=>I.split("/").map((C)=>C.startsWith("{")?"(?:.+?)":C).join("/")).map((I)=>`(?:${I})`).join("|")})[^/]*$`;return new RegExp(B,"i")}var fKA=u6Q(c6Q),hKA=fKA.test.bind(fKA),KF={},l6Q=function(A,Q){KF.global=new A.Group({id:"octokit-global",maxConcurrent:10,...Q}),KF.auth=new A.Group({id:"octokit-auth",maxConcurrent:1,...Q}),KF.search=new A.Group({id:"octokit-search",maxConcurrent:1,minTime:2000,...Q}),KF.write=new A.Group({id:"octokit-write",maxConcurrent:1,minTime:1000,...Q}),KF.notifications=new A.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3000,...Q})};function Sw(A,Q){let{enabled:B=!0,Bottleneck:I=gKA.default,id:C="no-id",timeout:E=120000,connection:Y}=Q.throttle||{};if(!B)return{};let J={timeout:E};if(typeof Y<"u")J.connection=Y;if(KF.global==null)l6Q(I,J);let F=Object.assign({clustering:Y!=null,triggersNotification:hKA,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1000,retryLimiter:new I,id:C,...KF},Q.throttle);if(typeof F.onSecondaryRateLimit!=="function"||typeof F.onRateLimit!=="function")throw Error(`octokit/plugin-throttling error: You must pass the onSecondaryRateLimit and onRateLimit error handlers. See https://octokit.github.io/rest.js/#throttling @@ -55,10 +92,10 @@ ${E}`;break;case"retry":if(PR(E))Q[I]=E;break;case"id":if(qR(E))Q[I]=E;break;cas onRateLimit: (retryAfter, options) => {/* ... */} } }) - `);let J={},Y=new I.Events(J);return J.on("secondary-limit",D.onSecondaryRateLimit),J.on("rate-limit",D.onRateLimit),J.on("error",(U)=>A.log.warn("Error in throttling-plugin limit handler",U)),D.retryLimiter.on("failed",async function(U,N){let[w,L,S]=N.args,{pathname:Z}=new URL(S.url,"http://github.test");if(!(Z.startsWith("/graphql")&&U.status!==401||U.status===403||U.status===429))return;let x=~~L.retryCount;L.retryCount=x,S.request.retryCount=x;let{wantRetry:O,retryAfter:q=0}=await async function(){if(/\bsecondary rate\b/i.test(U.message)){let a=Number(U.response.headers["retry-after"])||w.fallbackSecondaryRateRetryAfter;return{wantRetry:await Y.trigger("secondary-limit",a,S,A,x),retryAfter:a}}if(U.response.headers!=null&&U.response.headers["x-ratelimit-remaining"]==="0"||(U.response.data?.errors??[]).some((a)=>a.type==="RATE_LIMITED")){let a=new Date(~~U.response.headers["x-ratelimit-reset"]*1000).getTime(),t=Math.max(Math.ceil((a-Date.now())/1000)+1,0);return{wantRetry:await Y.trigger("rate-limit",t,S,A,x),retryAfter:t}}return{}}();if(O)return L.retryCount++,q*w.retryAfterBaseValue}),A.hook.wrap("request",rq.bind(null,D)),{}}A0.VERSION=oq;A0.triggersNotification=N9;function M9(A){let Q=A.clientType||"oauth-app",B=A.baseUrl||"https://github.com",I={clientType:Q,allowSignup:A.allowSignup===!1?!1:!0,clientId:A.clientId,login:A.login||null,redirectUrl:A.redirectUrl||null,state:A.state||Math.random().toString(36).substr(2),url:""};if(Q==="oauth-app"){let E="scopes"in A?A.scopes:[];I.scopes=typeof E==="string"?E.split(/[,\s]+/).filter(Boolean):E}return I.url=Iy(`${B}/login/oauth/authorize`,I),I}function Iy(A,Q){let B={allowSignup:"allow_signup",clientId:"client_id",login:"login",redirectUrl:"redirect_uri",scopes:"scope",state:"state"},I=A;return Object.keys(B).filter((E)=>Q[E]!==null).filter((E)=>{if(E!=="scopes")return!0;if(Q.clientType==="github-app")return!1;return!Array.isArray(Q[E])||Q[E].length>0}).map((E)=>[B[E],`${Q[E]}`]).forEach(([E,C],g)=>{I+=g===0?"?":"&",I+=`${E}=${encodeURIComponent(C)}`}),I}function V9(A){let Q=A.endpoint.DEFAULTS;return/^https:\/\/(api\.)?github\.com$/.test(Q.baseUrl)?"https://github.com":Q.baseUrl.replace("/api/v3","")}async function Q0(A,Q,B){let I={baseUrl:V9(A),headers:{accept:"application/json"},...B},E=await A(Q,I);if("error"in E.data){let C=new rQ(`${E.data.error_description} (${E.data.error}, ${E.data.error_uri})`,400,{request:A.endpoint.merge(Q,I)});throw C.response=E,C}return E}function Z9({request:A=o,...Q}){let B=V9(A);return M9({...Q,baseUrl:B})}async function R9(A){let Q=A.request||o,B=await Q0(Q,"POST /login/oauth/access_token",{client_id:A.clientId,client_secret:A.clientSecret,code:A.code,redirect_uri:A.redirectUrl}),I={clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:B.data.access_token,scopes:B.data.scope.split(/\s+/).filter(Boolean)};if(A.clientType==="github-app"){if("refresh_token"in B.data){let E=new Date(B.headers.date).getTime();I.refreshToken=B.data.refresh_token,I.expiresAt=w9(E,B.data.expires_in),I.refreshTokenExpiresAt=w9(E,B.data.refresh_token_expires_in)}delete I.scopes}return{...B,authentication:I}}function w9(A,Q){return new Date(A+Q*1000).toISOString()}async function X9(A){let Q=A.request||o,B={client_id:A.clientId};if("scopes"in A&&Array.isArray(A.scopes))B.scope=A.scopes.join(" ");return Q0(Q,"POST /login/device/code",B)}async function lJ(A){let Q=A.request||o,B=await Q0(Q,"POST /login/oauth/access_token",{client_id:A.clientId,device_code:A.code,grant_type:"urn:ietf:params:oauth:grant-type:device_code"}),I={clientType:A.clientType,clientId:A.clientId,token:B.data.access_token,scopes:B.data.scope.split(/\s+/).filter(Boolean)};if("clientSecret"in A)I.clientSecret=A.clientSecret;if(A.clientType==="github-app"){if("refresh_token"in B.data){let E=new Date(B.headers.date).getTime();I.refreshToken=B.data.refresh_token,I.expiresAt=W9(E,B.data.expires_in),I.refreshTokenExpiresAt=W9(E,B.data.refresh_token_expires_in)}delete I.scopes}return{...B,authentication:I}}function W9(A,Q){return new Date(A+Q*1000).toISOString()}async function B0(A){let B=await(A.request||o)("POST /applications/{client_id}/token",{headers:{authorization:`basic ${btoa(`${A.clientId}:${A.clientSecret}`)}`},client_id:A.clientId,access_token:A.token}),I={clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:A.token,scopes:B.data.scopes};if(B.data.expires_at)I.expiresAt=B.data.expires_at;if(A.clientType==="github-app")delete I.scopes;return{...B,authentication:I}}async function I0(A){let Q=A.request||o,B=await Q0(Q,"POST /login/oauth/access_token",{client_id:A.clientId,client_secret:A.clientSecret,grant_type:"refresh_token",refresh_token:A.refreshToken}),I=new Date(B.headers.date).getTime(),E={clientType:"github-app",clientId:A.clientId,clientSecret:A.clientSecret,token:B.data.access_token,refreshToken:B.data.refresh_token,expiresAt:L9(I,B.data.expires_in),refreshTokenExpiresAt:L9(I,B.data.refresh_token_expires_in)};return{...B,authentication:E}}function L9(A,Q){return new Date(A+Q*1000).toISOString()}async function K9(A){let{request:Q,clientType:B,clientId:I,clientSecret:E,token:C,...g}=A,D=await(A.request||o)("POST /applications/{client_id}/token/scoped",{headers:{authorization:`basic ${btoa(`${I}:${E}`)}`},client_id:I,access_token:C,...g}),J=Object.assign({clientType:B,clientId:I,clientSecret:E,token:D.data.token},D.data.expires_at?{expiresAt:D.data.expires_at}:{});return{...D,authentication:J}}async function cC(A){let Q=A.request||o,B=btoa(`${A.clientId}:${A.clientSecret}`),I=await Q("PATCH /applications/{client_id}/token",{headers:{authorization:`basic ${B}`},client_id:A.clientId,access_token:A.token}),E={clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:I.data.token,scopes:I.data.scopes};if(I.data.expires_at)E.expiresAt=I.data.expires_at;if(A.clientType==="github-app")delete E.scopes;return{...I,authentication:E}}async function dC(A){let Q=A.request||o,B=btoa(`${A.clientId}:${A.clientSecret}`);return Q("DELETE /applications/{client_id}/token",{headers:{authorization:`basic ${B}`},client_id:A.clientId,access_token:A.token})}async function lC(A){let Q=A.request||o,B=btoa(`${A.clientId}:${A.clientSecret}`);return Q("DELETE /applications/{client_id}/grant",{headers:{authorization:`basic ${B}`},client_id:A.clientId,access_token:A.token})}async function S9(A,Q){let B=Ey(A,Q.auth);if(B)return B;let{data:I}=await X9({clientType:A.clientType,clientId:A.clientId,request:Q.request||A.request,scopes:Q.auth.scopes||A.scopes});await A.onVerification(I);let E=await pJ(Q.request||A.request,A.clientId,A.clientType,I);return A.authentication=E,E}function Ey(A,Q){if(Q.refresh===!0)return!1;if(!A.authentication)return!1;if(A.clientType==="github-app")return A.authentication;let B=A.authentication,I=(("scopes"in Q)&&Q.scopes||A.scopes).join(" "),E=B.scopes.join(" ");return I===E?B:!1}async function z9(A){await new Promise((Q)=>setTimeout(Q,A*1000))}async function pJ(A,Q,B,I){try{let E={clientId:Q,request:A,code:I.device_code},{authentication:C}=B==="oauth-app"?await lJ({...E,clientType:"oauth-app"}):await lJ({...E,clientType:"github-app"});return{type:"token",tokenType:"oauth",...C}}catch(E){if(!E.response)throw E;let C=E.response.data.error;if(C==="authorization_pending")return await z9(I.interval),pJ(A,Q,B,I);if(C==="slow_down")return await z9(I.interval+7),pJ(A,Q,B,I);throw E}}async function Cy(A,Q){return S9(A,{auth:Q})}async function gy(A,Q,B,I){let E=Q.endpoint.merge(B,I);if(/\/login\/(oauth\/access_token|device\/code)$/.test(E.url))return Q(E);let{token:C}=await S9(A,{request:Q,auth:{type:"oauth"}});return E.headers.authorization=`token ${C}`,Q(E)}var Fy="0.0.0-development";function $9(A){let Q=A.request||o.defaults({headers:{"user-agent":`octokit-auth-oauth-device.js/${Fy} ${TA()}`}}),{request:B=Q,...I}=A,E=A.clientType==="github-app"?{...I,clientType:"github-app",request:B}:{...I,clientType:"oauth-app",request:B,scopes:A.scopes||[]};if(!A.clientId)throw Error('[@octokit/auth-oauth-device] "clientId" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)');if(!A.onVerification)throw Error('[@octokit/auth-oauth-device] "onVerification" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)');return Object.assign(Cy.bind(null,E),{hook:gy.bind(null,E)})}var T9="0.0.0-development";async function H9(A){if("code"in A.strategyOptions){let{authentication:Q}=await R9({clientId:A.clientId,clientSecret:A.clientSecret,clientType:A.clientType,onTokenCreated:A.onTokenCreated,...A.strategyOptions,request:A.request});return{type:"token",tokenType:"oauth",...Q}}if("onVerification"in A.strategyOptions){let B=await $9({clientType:A.clientType,clientId:A.clientId,onTokenCreated:A.onTokenCreated,...A.strategyOptions,request:A.request})({type:"oauth"});return{clientSecret:A.clientSecret,...B}}if("token"in A.strategyOptions)return{type:"token",tokenType:"oauth",clientId:A.clientId,clientSecret:A.clientSecret,clientType:A.clientType,onTokenCreated:A.onTokenCreated,...A.strategyOptions};throw Error("[@octokit/auth-oauth-user] Invalid strategy options")}async function iJ(A,Q={}){if(!A.authentication)A.authentication=A.clientType==="oauth-app"?await H9(A):await H9(A);if(A.authentication.invalid)throw Error("[@octokit/auth-oauth-user] Token is invalid");let B=A.authentication;if("expiresAt"in B){if(Q.type==="refresh"||new Date(B.expiresAt)0){let A=this.first;if(delete this.items[A.key],--this.size===0)this.first=null,this.last=null;else this.first=A.next,this.first.prev=null}}expiresAt(A){if(Object.prototype.hasOwnProperty.call(this.items,A))return this.items[A].expiry}get(A){if(Object.prototype.hasOwnProperty.call(this.items,A)){let Q=this.items[A];if(this.ttl>0&&Q.expiry<=Date.now()){this.delete(A);return}return this.bumpLru(Q),Q.value}}getMany(A){let Q=[];for(var B=0;B0?Date.now()+this.ttl:this.ttl,this.last!==I)this.bumpLru(I);return}if(this.max>0&&this.size===this.max)this.evict();let B={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:A,prev:this.last,next:null,value:Q};if(this.items[A]=B,++this.size===1)this.first=B;else this.last.next=B;this.last=B}}async function F0({appId:A,privateKey:Q,timeDifference:B,createJwt:I}){try{if(I){let{jwt:g,expiresAt:F}=await I(A,B);return{type:"app",token:g,appId:A,expiresAt:F}}let E={id:A,privateKey:Q};if(B)Object.assign(E,{now:Math.floor(Date.now()/1000)+B});let C=await sJ(E);return{type:"app",token:C.token,appId:C.appId,expiresAt:new Date(C.expiration*1000).toISOString()}}catch(E){if(Q==="-----BEGIN RSA PRIVATE KEY-----")throw Error("The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\n'");else throw E}}function wy(){return new oJ(15000,3540000)}async function Wy(A,Q){let B=rJ(Q),I=await A.get(B);if(!I)return;let[E,C,g,F,D,J]=I.split("|"),Y=Q.permissions||D.split(/,/).reduce((U,N)=>{if(/!$/.test(N))U[N.slice(0,-1)]="write";else U[N]="read";return U},{});return{token:E,createdAt:C,expiresAt:g,permissions:Y,repositoryIds:Q.repositoryIds,repositoryNames:Q.repositoryNames,singleFileName:J,repositorySelection:F}}async function Ly(A,Q,B){let I=rJ(Q),E=Q.permissions?"":Object.keys(B.permissions).map((g)=>`${g}${B.permissions[g]==="write"?"!":""}`).join(","),C=[B.token,B.createdAt,B.expiresAt,B.repositorySelection,E,B.singleFileName].join("|");await A.set(I,C)}function rJ({installationId:A,permissions:Q={},repositoryIds:B=[],repositoryNames:I=[]}){let E=Object.keys(Q).sort().map((F)=>Q[F]==="read"?F:`${F}!`).join(","),C=B.sort().join(","),g=I.join(",");return[A,C,g,E].filter(Boolean).join("|")}function k9({installationId:A,token:Q,createdAt:B,expiresAt:I,repositorySelection:E,permissions:C,repositoryIds:g,repositoryNames:F,singleFileName:D}){return Object.assign({type:"token",tokenType:"installation",token:Q,installationId:A,permissions:C,createdAt:B,expiresAt:I,repositorySelection:E},g?{repositoryIds:g}:null,F?{repositoryNames:F}:null,D?{singleFileName:D}:null)}async function f9(A,Q,B){let I=Number(Q.installationId||A.installationId);if(!I)throw Error("[@octokit/auth-app] installationId option is required for installation authentication.");if(Q.factory){let{type:C,factory:g,oauthApp:F,...D}={...A,...Q};return g(D)}let E=B||A.request;return Vy(A,{...Q,installationId:I},E)}var g0=new Map;function Vy(A,Q,B){let I=rJ(Q);if(g0.has(I))return g0.get(I);let E=Zy(A,Q,B).finally(()=>g0.delete(I));return g0.set(I,E),E}async function Zy(A,Q,B){if(!Q.refresh){let x=await Wy(A.cache,Q);if(x){let{token:O,createdAt:q,expiresAt:a,permissions:t,repositoryIds:AA,repositoryNames:SQ,singleFileName:OA,repositorySelection:UQ}=x;return k9({installationId:Q.installationId,token:O,createdAt:q,expiresAt:a,permissions:t,repositorySelection:UQ,repositoryIds:AA,repositoryNames:SQ,singleFileName:OA})}}let I=await F0(A),E={installation_id:Q.installationId,mediaType:{previews:["machine-man"]},headers:{authorization:`bearer ${I.token}`}};if(Q.repositoryIds)Object.assign(E,{repository_ids:Q.repositoryIds});if(Q.repositoryNames)Object.assign(E,{repositories:Q.repositoryNames});if(Q.permissions)Object.assign(E,{permissions:Q.permissions});let{data:{token:C,expires_at:g,repositories:F,permissions:D,repository_selection:J,single_file:Y}}=await B("POST /app/installations/{installation_id}/access_tokens",E),U=D||{},N=J||"all",w=F?F.map((x)=>x.id):void 0,L=F?F.map((x)=>x.name):void 0,S=new Date().toISOString(),Z={token:C,createdAt:S,expiresAt:g,repositorySelection:N,permissions:U,repositoryIds:w,repositoryNames:L};if(Y)Object.assign(E,{singleFileName:Y});await Ly(A.cache,Q,Z);let R={installationId:Q.installationId,token:C,createdAt:S,expiresAt:g,repositorySelection:N,permissions:U,repositoryIds:w,repositoryNames:L};if(Y)Object.assign(R,{singleFileName:Y});return k9(R)}async function Ry(A,Q){switch(Q.type){case"app":return F0(A);case"oauth-app":return A.oauthApp({type:"oauth-app"});case"installation":return f9(A,{...Q,type:"installation"});case"oauth-user":return A.oauthApp(Q);default:throw Error(`Invalid auth type: ${Q.type}`)}}var Xy=["/app","/app/hook/config","/app/hook/deliveries","/app/hook/deliveries/{delivery_id}","/app/hook/deliveries/{delivery_id}/attempts","/app/installations","/app/installations/{installation_id}","/app/installations/{installation_id}/access_tokens","/app/installations/{installation_id}/suspended","/app/installation-requests","/marketplace_listing/accounts/{account_id}","/marketplace_listing/plan","/marketplace_listing/plans","/marketplace_listing/plans/{plan_id}/accounts","/marketplace_listing/stubbed/accounts/{account_id}","/marketplace_listing/stubbed/plan","/marketplace_listing/stubbed/plans","/marketplace_listing/stubbed/plans/{plan_id}/accounts","/orgs/{org}/installation","/repos/{owner}/{repo}/installation","/users/{username}/installation","/enterprises/{enterprise}/installation"];function Ky(A){let B=`^(?:${A.map((I)=>I.split("/").map((E)=>E.startsWith("{")?"(?:.+?)":E).join("/")).map((I)=>`(?:${I})`).join("|")})$`;return new RegExp(B,"i")}var zy=Ky(Xy);function Sy(A){return!!A&&zy.test(A.split("?")[0])}var $y=5000;function Hy(A){return!(A.message.match(/'Expiration time' claim \('exp'\) is too far in the future/)||A.message.match(/'Expiration time' claim \('exp'\) must be a numeric value representing the future time at which the assertion expires/)||A.message.match(/'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/))}async function Ty(A,Q,B,I){let E=Q.endpoint.merge(B,I),C=E.url;if(/\/login\/oauth\/access_token$/.test(C))return Q(E);if(Sy(C.replace(Q.endpoint.DEFAULTS.baseUrl,""))){let{token:D}=await F0(A);E.headers.authorization=`bearer ${D}`;let J;try{J=await Q(E)}catch(Y){if(Hy(Y))throw Y;if(typeof Y.response.headers.date>"u")throw Y;let U=Math.floor((Date.parse(Y.response.headers.date)-Date.parse(new Date().toString()))/1000);A.log.warn(Y.message),A.log.warn(`[@octokit/auth-app] GitHub API time and system time are different by ${U} seconds. Retrying request with the difference accounted for.`);let{token:N}=await F0({...A,timeDifference:U});return E.headers.authorization=`bearer ${N}`,Q(E)}return J}if(pC(C)){let D=await A.oauthApp({type:"oauth-app"});return E.headers.authorization=D.headers.authorization,Q(E)}let{token:g,createdAt:F}=await f9(A,{},Q.defaults({baseUrl:E.baseUrl}));return E.headers.authorization=`token ${g}`,v9(A,Q,E,F)}async function v9(A,Q,B,I,E=0){let C=+new Date-+new Date(I);try{return await Q(B)}catch(g){if(g.status!==401)throw g;if(C>=$y){if(E>0)g.message=`After ${E} retries within ${C/1000}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`;throw g}++E;let F=E*1000;return A.log.warn(`[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${E}, wait: ${F/1000}s)`),await new Promise((D)=>setTimeout(D,F)),v9(A,Q,B,I,E)}}var _y="8.2.0";function _E(A){if(!A.appId)throw Error("[@octokit/auth-app] appId option is required");if(!A.privateKey&&!A.createJwt)throw Error("[@octokit/auth-app] privateKey option is required");else if(A.privateKey&&A.createJwt)throw Error("[@octokit/auth-app] privateKey and createJwt options are mutually exclusive");if("installationId"in A&&!A.installationId)throw Error("[@octokit/auth-app] installationId is set to a falsy value");let Q=A.log||{};if(typeof Q.warn!=="function")Q.warn=console.warn.bind(console);let B=A.request||o.defaults({headers:{"user-agent":`octokit-auth-app.js/${_y} ${TA()}`}}),I=Object.assign({request:B,cache:wy()},A,A.installationId?{installationId:Number(A.installationId)}:{},{log:Q,oauthApp:E0({clientType:"github-app",clientId:A.clientId||"",clientSecret:A.clientSecret||"",request:B})});return Object.assign(Ry.bind(null,I),{hook:Ty.bind(null,I)})}async function jy(A){return{type:"unauthenticated",reason:A}}function xy(A){if(A.status!==403)return!1;if(!A.response)return!1;return A.response.headers["x-ratelimit-remaining"]==="0"}var Oy=/\babuse\b/i;function Py(A){if(A.status!==403)return!1;return Oy.test(A.message)}async function qy(A,Q,B,I){let E=Q.endpoint.merge(B,I);return Q(E).catch((C)=>{if(C.status===404)throw C.message=`Not found. May be due to lack of authentication. Reason: ${A}`,C;if(xy(C))throw C.message=`API rate limit exceeded. This maybe caused by the lack of authentication. Reason: ${A}`,C;if(Py(C))throw C.message=`You have triggered an abuse detection mechanism. This maybe caused by the lack of authentication. Reason: ${A}`,C;if(C.status===401)throw C.message=`Unauthorized. "${E.method} ${E.url}" failed most likely due to lack of authentication. Reason: ${A}`,C;if(C.status>=400&&C.status<500)C.message=C.message.replace(/\.?$/,`. May be caused by lack of authentication (${A}).`);throw C})}var XI=function(Q){if(!Q||!Q.reason)throw Error("[@octokit/auth-unauthenticated] No reason passed to createUnauthenticatedAuth");return Object.assign(jy.bind(null,Q.reason),{hook:qy.bind(null,Q.reason)})};var b9="8.0.3";function m9(A,Q,B){if(Array.isArray(Q)){for(let I of Q)m9(A,I,B);return}if(!A.eventHandlers[Q])A.eventHandlers[Q]=[];A.eventHandlers[Q].push(B)}var yy=WB.defaults({userAgent:`octokit-oauth-app.js/${b9} ${TA()}`});async function LB(A,Q){let{name:B,action:I}=Q;if(A.eventHandlers[`${B}.${I}`])for(let E of A.eventHandlers[`${B}.${I}`])await E(Q);if(A.eventHandlers[B])for(let E of A.eventHandlers[B])await E(Q)}async function hy(A,Q){return A.octokit.auth({type:"oauth-user",...Q,async factory(B){let I=new A.Octokit({authStrategy:mA,auth:B}),E=await I.auth({type:"get"});return await LB(A,{name:"token",action:"created",token:E.token,scopes:E.scopes,authentication:E,octokit:I}),I}})}function ky(A,Q){let B={clientId:A.clientId,request:A.octokit.request,...Q,allowSignup:A.allowSignup??Q.allowSignup,redirectUrl:Q.redirectUrl??A.redirectUrl,scopes:Q.scopes??A.defaultScopes};return Z9({clientType:A.clientType,...B})}async function fy(A,Q){let B=await A.octokit.auth({type:"oauth-user",...Q});return await LB(A,{name:"token",action:"created",token:B.token,scopes:B.scopes,authentication:B,octokit:new A.Octokit({authStrategy:mA,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:B.token,scopes:B.scopes,refreshToken:B.refreshToken,expiresAt:B.expiresAt,refreshTokenExpiresAt:B.refreshTokenExpiresAt}})}),{authentication:B}}async function vy(A,Q){let B=await B0({clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q});return Object.assign(B.authentication,{type:"token",tokenType:"oauth"}),B}async function by(A,Q){let B={clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q};if(A.clientType==="oauth-app"){let C=await cC({clientType:"oauth-app",...B}),g=Object.assign(C.authentication,{type:"token",tokenType:"oauth"});return await LB(A,{name:"token",action:"reset",token:C.authentication.token,scopes:C.authentication.scopes||void 0,authentication:g,octokit:new A.Octokit({authStrategy:mA,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:C.authentication.token,scopes:C.authentication.scopes}})}),{...C,authentication:g}}let I=await cC({clientType:"github-app",...B}),E=Object.assign(I.authentication,{type:"token",tokenType:"oauth"});return await LB(A,{name:"token",action:"reset",token:I.authentication.token,authentication:E,octokit:new A.Octokit({authStrategy:mA,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:I.authentication.token}})}),{...I,authentication:E}}async function my(A,Q){if(A.clientType==="oauth-app")throw Error("[@octokit/oauth-app] app.refreshToken() is not supported for OAuth Apps");let B=await I0({clientType:"github-app",clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,refreshToken:Q.refreshToken}),I=Object.assign(B.authentication,{type:"token",tokenType:"oauth"});return await LB(A,{name:"token",action:"refreshed",token:B.authentication.token,authentication:I,octokit:new A.Octokit({authStrategy:mA,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:B.authentication.token}})}),{...B,authentication:I}}async function uy(A,Q){if(A.clientType==="oauth-app")throw Error("[@octokit/oauth-app] app.scopeToken() is not supported for OAuth Apps");let B=await K9({clientType:"github-app",clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q}),I=Object.assign(B.authentication,{type:"token",tokenType:"oauth"});return await LB(A,{name:"token",action:"scoped",token:B.authentication.token,authentication:I,octokit:new A.Octokit({authStrategy:mA,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:B.authentication.token}})}),{...B,authentication:I}}async function cy(A,Q){let B={clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q},I=A.clientType==="oauth-app"?await dC({clientType:"oauth-app",...B}):await dC({clientType:"github-app",...B});return await LB(A,{name:"token",action:"deleted",token:Q.token,octokit:new A.Octokit({authStrategy:XI,auth:{reason:'Handling "token.deleted" event. The access for the token has been revoked.'}})}),I}async function dy(A,Q){let B={clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q},I=A.clientType==="oauth-app"?await lC({clientType:"oauth-app",...B}):await lC({clientType:"github-app",...B});return await LB(A,{name:"token",action:"deleted",token:Q.token,octokit:new A.Octokit({authStrategy:XI,auth:{reason:'Handling "token.deleted" event. The access for the token has been revoked.'}})}),await LB(A,{name:"authorization",action:"deleted",token:Q.token,octokit:new A.Octokit({authStrategy:XI,auth:{reason:'Handling "authorization.deleted" event. The access for the app has been revoked.'}})}),I}var D0=class{static VERSION=b9;static defaults(A){return class extends this{constructor(...B){super({...A,...B[0]})}}}constructor(A){let Q=A.Octokit||yy;this.type=A.clientType||"oauth-app";let B=new Q({authStrategy:E0,auth:{clientType:this.type,clientId:A.clientId,clientSecret:A.clientSecret}}),I={clientType:this.type,clientId:A.clientId,clientSecret:A.clientSecret,defaultScopes:A.defaultScopes||[],allowSignup:A.allowSignup,baseUrl:A.baseUrl,redirectUrl:A.redirectUrl,log:A.log,Octokit:Q,octokit:B,eventHandlers:{}};this.on=m9.bind(null,I),this.octokit=B,this.getUserOctokit=hy.bind(null,I),this.getWebFlowAuthorizationUrl=ky.bind(null,I),this.createToken=fy.bind(null,I),this.checkToken=vy.bind(null,I),this.resetToken=by.bind(null,I),this.refreshToken=my.bind(null,I),this.scopeToken=uy.bind(null,I),this.deleteToken=cy.bind(null,I),this.deleteAuthorization=dy.bind(null,I)}type;on;octokit;getUserOctokit;getWebFlowAuthorizationUrl;createToken;checkToken;resetToken;refreshToken;scopeToken;deleteToken;deleteAuthorization};import{createHmac as ly}from"node:crypto";import{timingSafeEqual as py}from"node:crypto";import{Buffer as u9}from"node:buffer";var c9="6.0.0";async function Y0(A,Q){if(!A||!Q)throw TypeError("[@octokit/webhooks-methods] secret & payload required for sign()");if(typeof Q!=="string")throw TypeError("[@octokit/webhooks-methods] payload must be a string");let B="sha256";return`${B}=${ly(B,A).update(Q).digest("hex")}`}Y0.VERSION=c9;async function iC(A,Q,B){if(!A||!Q||!B)throw TypeError("[@octokit/webhooks-methods] secret, eventPayload & signature required");if(typeof Q!=="string")throw TypeError("[@octokit/webhooks-methods] eventPayload must be a string");let I=u9.from(B),E=u9.from(await Y0(A,Q));if(I.length!==E.length)return!1;return py(I,E)}iC.VERSION=c9;async function d9(A,Q,B,I){if(await iC(A,Q,B))return!0;if(I!==void 0)for(let C of I){let g=await iC(C,Q,B);if(g)return g}return!1}var i9=(A={})=>{if(typeof A.debug!=="function")A.debug=()=>{};if(typeof A.info!=="function")A.info=()=>{};if(typeof A.warn!=="function")A.warn=console.warn.bind(console);if(typeof A.error!=="function")A.error=console.error.bind(console);return A},iy=["branch_protection_configuration","branch_protection_configuration.disabled","branch_protection_configuration.enabled","branch_protection_rule","branch_protection_rule.created","branch_protection_rule.deleted","branch_protection_rule.edited","check_run","check_run.completed","check_run.created","check_run.requested_action","check_run.rerequested","check_suite","check_suite.completed","check_suite.requested","check_suite.rerequested","code_scanning_alert","code_scanning_alert.appeared_in_branch","code_scanning_alert.closed_by_user","code_scanning_alert.created","code_scanning_alert.fixed","code_scanning_alert.reopened","code_scanning_alert.reopened_by_user","commit_comment","commit_comment.created","create","custom_property","custom_property.created","custom_property.deleted","custom_property.promote_to_enterprise","custom_property.updated","custom_property_values","custom_property_values.updated","delete","dependabot_alert","dependabot_alert.auto_dismissed","dependabot_alert.auto_reopened","dependabot_alert.created","dependabot_alert.dismissed","dependabot_alert.fixed","dependabot_alert.reintroduced","dependabot_alert.reopened","deploy_key","deploy_key.created","deploy_key.deleted","deployment","deployment.created","deployment_protection_rule","deployment_protection_rule.requested","deployment_review","deployment_review.approved","deployment_review.rejected","deployment_review.requested","deployment_status","deployment_status.created","discussion","discussion.answered","discussion.category_changed","discussion.closed","discussion.created","discussion.deleted","discussion.edited","discussion.labeled","discussion.locked","discussion.pinned","discussion.reopened","discussion.transferred","discussion.unanswered","discussion.unlabeled","discussion.unlocked","discussion.unpinned","discussion_comment","discussion_comment.created","discussion_comment.deleted","discussion_comment.edited","fork","github_app_authorization","github_app_authorization.revoked","gollum","installation","installation.created","installation.deleted","installation.new_permissions_accepted","installation.suspend","installation.unsuspend","installation_repositories","installation_repositories.added","installation_repositories.removed","installation_target","installation_target.renamed","issue_comment","issue_comment.created","issue_comment.deleted","issue_comment.edited","issue_dependencies","issue_dependencies.blocked_by_added","issue_dependencies.blocked_by_removed","issue_dependencies.blocking_added","issue_dependencies.blocking_removed","issues","issues.assigned","issues.closed","issues.deleted","issues.demilestoned","issues.edited","issues.labeled","issues.locked","issues.milestoned","issues.opened","issues.pinned","issues.reopened","issues.transferred","issues.typed","issues.unassigned","issues.unlabeled","issues.unlocked","issues.unpinned","issues.untyped","label","label.created","label.deleted","label.edited","marketplace_purchase","marketplace_purchase.cancelled","marketplace_purchase.changed","marketplace_purchase.pending_change","marketplace_purchase.pending_change_cancelled","marketplace_purchase.purchased","member","member.added","member.edited","member.removed","membership","membership.added","membership.removed","merge_group","merge_group.checks_requested","merge_group.destroyed","meta","meta.deleted","milestone","milestone.closed","milestone.created","milestone.deleted","milestone.edited","milestone.opened","org_block","org_block.blocked","org_block.unblocked","organization","organization.deleted","organization.member_added","organization.member_invited","organization.member_removed","organization.renamed","package","package.published","package.updated","page_build","personal_access_token_request","personal_access_token_request.approved","personal_access_token_request.cancelled","personal_access_token_request.created","personal_access_token_request.denied","ping","project","project.closed","project.created","project.deleted","project.edited","project.reopened","project_card","project_card.converted","project_card.created","project_card.deleted","project_card.edited","project_card.moved","project_column","project_column.created","project_column.deleted","project_column.edited","project_column.moved","projects_v2","projects_v2.closed","projects_v2.created","projects_v2.deleted","projects_v2.edited","projects_v2.reopened","projects_v2_item","projects_v2_item.archived","projects_v2_item.converted","projects_v2_item.created","projects_v2_item.deleted","projects_v2_item.edited","projects_v2_item.reordered","projects_v2_item.restored","projects_v2_status_update","projects_v2_status_update.created","projects_v2_status_update.deleted","projects_v2_status_update.edited","public","pull_request","pull_request.assigned","pull_request.auto_merge_disabled","pull_request.auto_merge_enabled","pull_request.closed","pull_request.converted_to_draft","pull_request.demilestoned","pull_request.dequeued","pull_request.edited","pull_request.enqueued","pull_request.labeled","pull_request.locked","pull_request.milestoned","pull_request.opened","pull_request.ready_for_review","pull_request.reopened","pull_request.review_request_removed","pull_request.review_requested","pull_request.synchronize","pull_request.unassigned","pull_request.unlabeled","pull_request.unlocked","pull_request_review","pull_request_review.dismissed","pull_request_review.edited","pull_request_review.submitted","pull_request_review_comment","pull_request_review_comment.created","pull_request_review_comment.deleted","pull_request_review_comment.edited","pull_request_review_thread","pull_request_review_thread.resolved","pull_request_review_thread.unresolved","push","registry_package","registry_package.published","registry_package.updated","release","release.created","release.deleted","release.edited","release.prereleased","release.published","release.released","release.unpublished","repository","repository.archived","repository.created","repository.deleted","repository.edited","repository.privatized","repository.publicized","repository.renamed","repository.transferred","repository.unarchived","repository_advisory","repository_advisory.published","repository_advisory.reported","repository_dispatch","repository_dispatch.sample.collected","repository_import","repository_ruleset","repository_ruleset.created","repository_ruleset.deleted","repository_ruleset.edited","repository_vulnerability_alert","repository_vulnerability_alert.create","repository_vulnerability_alert.dismiss","repository_vulnerability_alert.reopen","repository_vulnerability_alert.resolve","secret_scanning_alert","secret_scanning_alert.assigned","secret_scanning_alert.created","secret_scanning_alert.publicly_leaked","secret_scanning_alert.reopened","secret_scanning_alert.resolved","secret_scanning_alert.unassigned","secret_scanning_alert.validated","secret_scanning_alert_location","secret_scanning_alert_location.created","secret_scanning_scan","secret_scanning_scan.completed","security_advisory","security_advisory.published","security_advisory.updated","security_advisory.withdrawn","security_and_analysis","sponsorship","sponsorship.cancelled","sponsorship.created","sponsorship.edited","sponsorship.pending_cancellation","sponsorship.pending_tier_change","sponsorship.tier_changed","star","star.created","star.deleted","status","sub_issues","sub_issues.parent_issue_added","sub_issues.parent_issue_removed","sub_issues.sub_issue_added","sub_issues.sub_issue_removed","team","team.added_to_repository","team.created","team.deleted","team.edited","team.removed_from_repository","team_add","watch","watch.started","workflow_dispatch","workflow_job","workflow_job.completed","workflow_job.in_progress","workflow_job.queued","workflow_job.waiting","workflow_run","workflow_run.completed","workflow_run.in_progress","workflow_run.requested"];function ny(A,Q={}){if(typeof A!=="string")throw TypeError("eventName must be of type string");if(A==="*")throw TypeError('Using the "*" event with the regular Webhooks.on() function is not supported. Please use the Webhooks.onAny() method instead');if(A==="error")throw TypeError('Using the "error" event with the regular Webhooks.on() function is not supported. Please use the Webhooks.onError() method instead');if(Q.onUnknownEventName==="ignore")return;if(!iy.includes(A))if(Q.onUnknownEventName!=="warn")throw TypeError(`"${A}" is not a known webhook name (https://developer.github.com/v3/activity/events/types/)`);else(Q.log||console).warn(`"${A}" is not a known webhook name (https://developer.github.com/v3/activity/events/types/)`)}function tJ(A,Q,B){if(!A.hooks[Q])A.hooks[Q]=[];A.hooks[Q].push(B)}function n9(A,Q,B){if(Array.isArray(Q)){Q.forEach((I)=>n9(A,I,B));return}ny(Q,{onUnknownEventName:"warn",log:A.log}),tJ(A,Q,B)}function ay(A,Q){tJ(A,"*",Q)}function sy(A,Q){tJ(A,"error",Q)}function l9(A,Q){let B;try{B=A(Q)}catch(I){console.log('FATAL: Error occurred in "error" event handler'),console.log(I)}if(B&&B.catch)B.catch((I)=>{console.log('FATAL: Error occurred in "error" event handler'),console.log(I)})}function oy(A,Q,B){let I=[A.hooks[B],A.hooks["*"]];if(Q)I.unshift(A.hooks[`${B}.${Q}`]);return[].concat(...I.filter(Boolean))}function ry(A,Q){let B=A.hooks.error||[];if(Q instanceof Error){let g=Object.assign(AggregateError([Q],Q.message),{event:Q});return B.forEach((F)=>l9(F,g)),Promise.reject(g)}if(!Q||!Q.name){let g=Error("Event name not passed");throw AggregateError([g],g.message)}if(!Q.payload){let g=Error("Event name not passed");throw AggregateError([g],g.message)}let I=oy(A,"action"in Q.payload?Q.payload.action:null,Q.name);if(I.length===0)return Promise.resolve();let E=[],C=I.map((g)=>{let F=Promise.resolve(Q);if(A.transform)F=F.then(A.transform);return F.then((D)=>{return g(D)}).catch((D)=>E.push(Object.assign(D,{event:Q})))});return Promise.all(C).then(()=>{if(E.length===0)return;let g=AggregateError(E,E.map((F)=>F.message).join(` -`));throw Object.assign(g,{event:Q}),B.forEach((F)=>l9(F,g)),g})}function a9(A,Q,B){if(Array.isArray(Q)){Q.forEach((I)=>a9(A,I,B));return}if(!A.hooks[Q])return;for(let I=A.hooks[Q].length-1;I>=0;I--)if(A.hooks[Q][I]===B){A.hooks[Q].splice(I,1);return}}function ty(A){let Q={hooks:{},log:i9(A&&A.log)};if(A&&A.transform)Q.transform=A.transform;return{on:n9.bind(null,Q),onAny:ay.bind(null,Q),onError:sy.bind(null,Q),removeListener:a9.bind(null,Q),receive:ry.bind(null,Q)}}async function ey(A,Q){if(!await d9(A.secret,Q.payload,Q.signature,A.additionalSecrets).catch(()=>!1)){let E=Error("[@octokit/webhooks] signature does not match event payload and secret");return E.event=Q,E.status=400,A.eventHandler.receive(E)}let I;try{I=JSON.parse(Q.payload)}catch(E){throw E.message="Invalid JSON",E.status=400,AggregateError([E],E.message)}return A.eventHandler.receive({id:Q.id,name:Q.name,payload:I})}var p9=new TextDecoder("utf-8",{fatal:!1}),cd=p9.decode.bind(p9);var s9=class{sign;verify;on;onAny;onError;removeListener;receive;verifyAndReceive;constructor(A){if(!A||!A.secret)throw Error("[@octokit/webhooks] options.secret required");let Q={eventHandler:ty(A),secret:A.secret,additionalSecrets:A.additionalSecrets,hooks:{},log:i9(A.log)};this.sign=Y0.bind(null,A.secret),this.verify=iC.bind(null,A.secret),this.on=Q.eventHandler.on,this.onAny=Q.eventHandler.onAny,this.onError=Q.eventHandler.onError,this.removeListener=Q.eventHandler.removeListener,this.receive=Q.eventHandler.receive,this.verifyAndReceive=ey.bind(null,Q)}};var Ah="16.1.2";function Qh(A,Q){return new s9({secret:Q.secret,transform:async(B)=>{if(!("installation"in B.payload)||typeof B.payload.installation!=="object"){let C=new A.constructor({authStrategy:XI,auth:{reason:'"installation" key missing in webhook event payload'}});return{...B,octokit:C}}let I=B.payload.installation.id,E=await A.auth({type:"installation",installationId:I,factory(C){return new C.octokit.constructor({...C.octokitOptions,authStrategy:_E,...{auth:{...C,installationId:I}}})}});return E.hook.before("request",(C)=>{C.headers["x-github-delivery"]=B.id}),{...B,octokit:E}}})}async function o9(A,Q){return A.octokit.auth({type:"installation",installationId:Q,factory(B){let I={...B.octokitOptions,authStrategy:_E,...{auth:{...B,installationId:Q}}};return new B.octokit.constructor(I)}})}function Bh(A){return Object.assign(Ih.bind(null,A),{iterator:r9.bind(null,A)})}async function Ih(A,Q){let B=r9(A)[Symbol.asyncIterator](),I=await B.next();while(!I.done)await Q(I.value),I=await B.next()}function r9(A){return{async*[Symbol.asyncIterator](){let Q=eF.iterator(A.octokit,"GET /app/installations");for await(let{data:B}of Q)for(let I of B)yield{octokit:await o9(A,I.id),installation:I}}}}function Eh(A){return Object.assign(Ch.bind(null,A),{iterator:t9.bind(null,A)})}async function Ch(A,Q,B){let I=t9(A,B?Q:void 0)[Symbol.asyncIterator](),E=await I.next();while(!E.done){if(B)await B(E.value);else await Q(E.value);E=await I.next()}}function gh(A,Q){return{async*[Symbol.asyncIterator](){yield{octokit:await A.getInstallationOctokit(Q)}}}}function t9(A,Q){return{async*[Symbol.asyncIterator](){let B=Q?gh(A,Q.installationId):A.eachInstallation.iterator();for await(let{octokit:I}of B){let E=eF.iterator(I,"GET /installation/repositories");for await(let{data:C}of E)for(let g of C)yield{octokit:I,repository:g}}}}}function Fh(A){let Q;return async function(I={}){if(!Q)Q=Dh(A);let E=await Q,C=new URL(E);if(I.target_id!==void 0)C.pathname+="/permissions",C.searchParams.append("target_id",I.target_id.toFixed());if(I.state!==void 0)C.searchParams.append("state",I.state);return C.href}}async function Dh(A){let{data:Q}=await A.octokit.request("GET /app");if(!Q)throw Error("[@octokit/app] unable to fetch metadata for app");return`${Q.html_url}/installations/new`}var e9=class{static VERSION=Ah;static defaults(A){return class extends this{constructor(...B){super({...A,...B[0]})}}}octokit;webhooks;oauth;getInstallationOctokit;eachInstallation;eachRepository;getInstallationUrl;log;constructor(A){let Q=A.Octokit||WB,B=Object.assign({appId:A.appId,privateKey:A.privateKey},A.oauth?{clientId:A.oauth.clientId,clientSecret:A.oauth.clientSecret}:{}),I={authStrategy:_E,auth:B};if("log"in A&&typeof A.log<"u")I.log=A.log;if(this.octokit=new Q(I),this.log=Object.assign({debug:()=>{},info:()=>{},warn:console.warn.bind(console),error:console.error.bind(console)},A.log),A.webhooks)this.webhooks=Qh(this.octokit,A.webhooks);else Object.defineProperty(this,"webhooks",{get(){throw Error("[@octokit/app] webhooks option not set")}});if(A.oauth)this.oauth=new D0({...A.oauth,clientType:"github-app",Octokit:Q});else Object.defineProperty(this,"oauth",{get(){throw Error("[@octokit/app] oauth.clientId / oauth.clientSecret options are not set")}});this.getInstallationOctokit=o9.bind(null,this),this.eachInstallation=Bh(this),this.eachRepository=Eh(this),this.getInstallationUrl=Fh(this)}};var Yh="0.0.0-development",J0=WB.plugin(uC,bC,F9,cJ,A0).defaults({userAgent:`octokit.js/${Yh}`,throttle:{onRateLimit:Jh,onSecondaryRateLimit:Uh}});function Jh(A,Q,B){if(B.log.warn(`Request quota exhausted for request ${Q.method} ${Q.url}`),Q.request.retryCount===0)return B.log.info(`Retrying after ${A} seconds!`),!0}function Uh(A,Q,B){if(B.log.warn(`SecondaryRateLimit detected for request ${Q.method} ${Q.url}`),Q.request.retryCount===0)return B.log.info(`Retrying after ${A} seconds!`),!0}var Ul=e9.defaults({Octokit:J0}),Gl=D0.defaults({Octokit:J0});import*as LU from"crypto";import*as dA from"fs";var Cv=RB(MU(),1);import*as S0 from"os";import*as yQ from"path";var KQ=RB(MU(),1);import*as lK from"stream";import*as pK from"util";import{ok as iK}from"assert";var dK=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})};class wU{constructor(A,Q,B){if(A<1)throw Error("max attempts should be greater than or equal to 1");if(this.maxAttempts=A,this.minSeconds=Math.floor(Q),this.maxSeconds=Math.floor(B),this.minSeconds>this.maxSeconds)throw Error("min seconds should be less than or equal to max seconds")}execute(A,Q){return dK(this,void 0,void 0,function*(){let B=1;while(BsetTimeout(Q,A*1000))})}}var __dirname="/Volumes/VAULTROOM/elide/setup-elide/node_modules/@actions/tool-cache/lib",eQ=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})};class VU extends Error{constructor(A){super(`Unexpected HTTP response: ${A}`);this.httpStatusCode=A,Object.setPrototypeOf(this,new.target.prototype)}}var nK=process.platform==="win32",Jp=process.platform==="darwin",Fv="actions/tool-cache";function Qg(A,Q,B,I){return eQ(this,void 0,void 0,function*(){Q=Q||yQ.join(tK(),LU.randomUUID()),yield KE(yQ.dirname(Q)),y(`Downloading ${A}`),y(`Destination ${Q}`);let E=3,C=WU("TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS",10),g=WU("TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS",20);return yield new wU(E,C,g).execute(()=>eQ(this,void 0,void 0,function*(){return yield Dv(A,Q||"",B,I)}),(D)=>{if(D instanceof VU&&D.httpStatusCode){if(D.httpStatusCode<500&&D.httpStatusCode!==408&&D.httpStatusCode!==429)return!1}return!0})})}function Dv(A,Q,B,I){return eQ(this,void 0,void 0,function*(){if(dA.existsSync(Q))throw Error(`Destination file path ${Q} already exists`);let E=new uF(Fv,[],{allowRetries:!1});if(B){if(y("set auth"),I===void 0)I={};I.authorization=B}let C=yield E.get(A,I);if(C.message.statusCode!==200){let Y=new VU(C.message.statusCode);throw y(`Failed to download from "${A}". Code(${C.message.statusCode}) Message(${C.message.statusMessage})`),Y}let g=pK.promisify(lK.pipeline),D=WU("TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY",()=>C.message)(),J=!1;try{return yield g(D,dA.createWriteStream(Q)),y("download complete"),J=!0,Q}finally{if(!J){y("download failed");try{yield yC(Q)}catch(Y){y(`Failed to delete '${Q}'. ${Y.message}`)}}}})}function ZU(A,Q){return eQ(this,arguments,void 0,function*(B,I,E="xz"){if(!B)throw Error("parameter 'file' is required");I=yield oK(I),y("Checking tar --version");let C="";yield bA("tar --version",[],{ignoreReturnCode:!0,silent:!0,listeners:{stdout:(Y)=>C+=Y.toString(),stderr:(Y)=>C+=Y.toString()}}),y(C.trim());let g=C.toUpperCase().includes("GNU TAR"),F;if(E instanceof Array)F=E;else F=[E];if(SJ()&&!E.includes("v"))F.push("-v");let D=I,J=B;if(nK&&g)F.push("--force-local"),D=I.replace(/\\/g,"/"),J=B.replace(/\\/g,"/");if(g)F.push("--warning=no-unknown-keyword"),F.push("--overwrite");return F.push("-C",D,"-f",J),yield bA("tar",F),I})}function RU(A,Q){return eQ(this,void 0,void 0,function*(){if(!A)throw Error("parameter 'file' is required");if(Q=yield oK(Q),nK)yield Yv(A,Q);else yield Jv(A,Q);return Q})}function Yv(A,Q){return eQ(this,void 0,void 0,function*(){let B=A.replace(/'/g,"''").replace(/"|\n|\r/g,""),I=Q.replace(/'/g,"''").replace(/"|\n|\r/g,""),E=yield xA("pwsh",!1);if(E){let g=["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Unrestricted","-Command",["$ErrorActionPreference = 'Stop' ;","try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;",`try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${B}', '${I}', $true) }`,`catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${B}' -DestinationPath '${I}' -Force } else { throw $_ } } ;`].join(" ")];y(`Using pwsh at path: ${E}`),yield bA(`"${E}"`,g)}else{let g=["-NoLogo","-Sta","-NoProfile","-NonInteractive","-ExecutionPolicy","Unrestricted","-Command",["$ErrorActionPreference = 'Stop' ;","try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;",`if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${B}' -DestinationPath '${I}' -Force }`,`else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${B}', '${I}', $true) }`].join(" ")],F=yield xA("powershell",!0);y(`Using powershell at path: ${F}`),yield bA(`"${F}"`,g)}})}function Jv(A,Q){return eQ(this,void 0,void 0,function*(){let B=yield xA("unzip",!0),I=[A];if(!SJ())I.unshift("-q");I.unshift("-o"),yield bA(`"${B}"`,I,{cwd:Q})})}function aK(A,Q,B,I){return eQ(this,void 0,void 0,function*(){if(B=KQ.clean(B)||B,I=I||S0.arch(),y(`Caching tool ${Q} ${B} ${I}`),y(`source dir: ${A}`),!dA.statSync(A).isDirectory())throw Error("sourceDir is not a directory");let E=yield Gv(Q,B,I);for(let C of dA.readdirSync(A)){let g=yQ.join(A,C);yield D1(g,E,{recursive:!0})}return Nv(Q,B,I),E})}function sK(A,Q,B){if(!A)throw Error("toolName parameter is required");if(!Q)throw Error("versionSpec parameter is required");if(B=B||S0.arch(),!rK(Q)){let E=Uv(A,B);Q=Mv(E,Q)}let I="";if(Q){Q=KQ.clean(Q)||"";let E=yQ.join($0(),A,Q,B);if(y(`checking cache: ${E}`),dA.existsSync(E)&&dA.existsSync(`${E}.complete`))y(`Found tool in cache ${A} ${Q} ${B}`),I=E;else y("not found")}return I}function Uv(A,Q){let B=[];Q=Q||S0.arch();let I=yQ.join($0(),A);if(dA.existsSync(I)){let E=dA.readdirSync(I);for(let C of E)if(rK(C)){let g=yQ.join(I,C,Q||"");if(dA.existsSync(g)&&dA.existsSync(`${g}.complete`))B.push(C)}}return B}function oK(A){return eQ(this,void 0,void 0,function*(){if(!A)A=yQ.join(tK(),LU.randomUUID());return yield KE(A),A})}function Gv(A,Q,B){return eQ(this,void 0,void 0,function*(){let I=yQ.join($0(),A,KQ.clean(Q)||Q,B||"");y(`destination ${I}`);let E=`${I}.complete`;return yield yC(I),yield yC(E),yield KE(I),I})}function Nv(A,Q,B){let E=`${yQ.join($0(),A,KQ.clean(Q)||Q,B||"")}.complete`;dA.writeFileSync(E,""),y("finished caching tool")}function rK(A){let Q=KQ.clean(A)||"";y(`isExplicit: ${Q}`);let B=KQ.valid(Q)!=null;return y(`explicit? ${B}`),B}function Mv(A,Q){let B="";y(`evaluating ${A.length} versions`),A=A.sort((I,E)=>{if(KQ.gt(I,E))return 1;return-1});for(let I=A.length-1;I>=0;I--){let E=A[I];if(KQ.satisfies(E,Q)){B=E;break}}if(B)y(`matched: ${B}`);else y("match not found");return B}function $0(){let A=process.env.RUNNER_TOOL_CACHE||"";return iK(A,"Expected RUNNER_TOOL_CACHE to be defined"),A}function tK(){let A=process.env.RUNNER_TEMP||"";return iK(A,"Expected RUNNER_TEMP to be defined"),A}function WU(A,Q){let B=global[A];return B!==void 0?B:Q}import{readFileSync as wv,existsSync as Wv}from"fs";import{EOL as Lv}from"os";class Bg{constructor(){var A,Q,B;if(this.payload={},process.env.GITHUB_EVENT_PATH)if(Wv(process.env.GITHUB_EVENT_PATH))this.payload=JSON.parse(wv(process.env.GITHUB_EVENT_PATH,{encoding:"utf8"}));else{let I=process.env.GITHUB_EVENT_PATH;process.stdout.write(`GITHUB_EVENT_PATH ${I} does not exist${Lv}`)}this.eventName=process.env.GITHUB_EVENT_NAME,this.sha=process.env.GITHUB_SHA,this.ref=process.env.GITHUB_REF,this.workflow=process.env.GITHUB_WORKFLOW,this.action=process.env.GITHUB_ACTION,this.actor=process.env.GITHUB_ACTOR,this.job=process.env.GITHUB_JOB,this.runAttempt=parseInt(process.env.GITHUB_RUN_ATTEMPT,10),this.runNumber=parseInt(process.env.GITHUB_RUN_NUMBER,10),this.runId=parseInt(process.env.GITHUB_RUN_ID,10),this.apiUrl=(A=process.env.GITHUB_API_URL)!==null&&A!==void 0?A:"https://api.github.com",this.serverUrl=(Q=process.env.GITHUB_SERVER_URL)!==null&&Q!==void 0?Q:"https://github.com",this.graphqlUrl=(B=process.env.GITHUB_GRAPHQL_URL)!==null&&B!==void 0?B:"https://api.github.com/graphql"}get issue(){let A=this.payload;return Object.assign(Object.assign({},this.repo),{number:(A.issue||A.pull_request||A).number})}get repo(){if(process.env.GITHUB_REPOSITORY){let[A,Q]=process.env.GITHUB_REPOSITORY.split("/");return{owner:A,repo:Q}}if(this.payload.repository)return{owner:this.payload.repository.owner.login,repo:this.payload.repository.name};throw Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'")}}var $U=RB(g8(),1),F8=RB(mF(),1),Pv=function(A,Q,B,I){function E(C){return C instanceof B?C:new B(function(g){g(C)})}return new(B||(B=Promise))(function(C,g){function F(Y){try{J(I.next(Y))}catch(U){g(U)}}function D(Y){try{J(I.throw(Y))}catch(U){g(U)}}function J(Y){Y.done?C(Y.value):E(Y.value).then(F,D)}J((I=I.apply(A,Q||[])).next())})};function D8(A,Q){if(!A&&!Q.auth)throw Error("Parameter token or opts.auth is required");else if(A&&Q.auth)throw Error("Parameters token and opts.auth may not both be specified");return typeof Q.auth==="string"?Q.auth:`token ${A}`}function Y8(A){return new $U.HttpClient().getAgent(A)}function qv(A){return new $U.HttpClient().getAgentDispatcher(A)}function J8(A){let Q=qv(A);return(I,E)=>Pv(this,void 0,void 0,function*(){return F8.fetch(I,Object.assign(Object.assign({},E),{dispatcher:Q}))})}function U8(){return process.env.GITHUB_API_URL||"https://api.github.com"}var Vp=new Bg,HU=U8(),hv={baseUrl:HU,request:{agent:Y8(HU),fetch:J8(HU)}},G8=WB.plugin(uC,bC).defaults(hv);function N8(A,Q){let B=Object.assign({},Q||{}),I=D8(A,B);if(I)B.auth=I;return B}var Xp=new Bg;function M8(A,Q,...B){return new(G8.plugin(...B))(N8(A,Q))}var w8={"X-GitHub-Api-Version":"2022-11-28"};import{spawnSync as fv}from"node:child_process";import{existsSync as vv}from"node:fs";var bv="https://elide.zip";function mv(A){return A==="darwin"?"macos":A}function uv(A){return A==="aarch64"?"arm64":A}async function cv(A,Q){let B="tgz",I="gzip",E=await xA("xz");if(A.os==="windows")B="zip",I="zip";else if(E)B="txz",I="txz";let C="release",g=Q.tag_name;if(Q.tag_name.startsWith("nightly-"))C="nightly",g=Q.tag_name.slice(8);else if(Q.tag_name.startsWith("preview-"))C="preview",g=Q.tag_name.slice(8);if(A.version==="latest")g="latest";let F=mv(A.os),D=uv(A.arch);return{archiveType:I,url:new URL(`${bv}/artifacts/${C}/${g}/elide.${F}-${D}.${B}`)}}async function W8(A,Q,B,I,E){let C;try{if(E.os==="windows")y(`Extracting as zip on Windows, from: ${A}, to: ${Q}`),C=await RU(A,Q);else{let g=`${A}.tar`;switch(B){case"zip":y(`Extracting as zip on Unix or Linux, from: ${A}, to: ${Q}`),C=await RU(A,Q);break;case"gzip":y(`Extracting as tgz on Unix or Linux, from: ${A}, to: ${Q}`),C=await ZU(A,Q,["xz","--strip-components=1"]);break;case"txz":{y(`Extracting as txz on Unix or Linux, from: ${A}, to: ${Q}`);let F=await xA("xz");if(!F)throw Error("xz command not found, please install xz-utils");y(`xz command found at: ${F}`);let D=`${g}.xz`;if(await Y1(A,D,{force:!1}),!vv(D))throw Error(`Archive not found (renaming failed?): ${D} (renamed)`);let J=fv(F,["-v","-d",D],{encoding:"utf-8"});if(J.status!==0)throw console.log("XZ output: ",J.stdout),console.error("XZ error output: ",J.stderr),Error(`xz extraction failed: ${J.stderr}`);y(`XZ extraction completed: ${J.status}`)}C=await ZU(g,Q,["x","--strip-components=1"]);break}}}catch(g){nF(`Failed to extract Elide release: ${g}`),C=Q}if(I==="1.0.0-alpha7"||I==="1.0.0-alpha8")return C;return y(`Elide release ${I} extracted at ${C}`),C}async function dv(A){let B=await(A?M8(A):new J0({})).request("GET /repos/{owner}/{repo}/releases/latest",{owner:"elide-dev",repo:"elide",headers:w8});if(!B)throw Error("Failed to fetch the latest Elide version");return{name:B.data?.name||void 0,tag_name:B.data.tag_name,userProvided:!!A}}async function lv(A,Q){let{url:B,archiveType:I}=await cv(Q,A),E=Q.os==="windows"?"\\":"/",C=Q.os==="windows"?"elide.exe":"elide",g=`${Q.install_path}${E}bin${E}${C}`;if(Q.no_cache===!0)console.info("Tool caching is disabled.");let F=g,D=process.env.ELIDE_HOME||Q.install_path,J=D,Y=`${D}${E}bin`,U=null;try{y(`Checking for cached tool 'elide' at version '${A.tag_name}'`),U=sK("elide",A.tag_name,Q.arch)}catch(w){y(`Failed to locate Elide in tool cache: ${w}`)}if(Q.no_cache!==!0&&U)y("Caching enabled and cached Elide release found; using it"),F=`${U}${E}bin${E}${C}`,J=U,Y=`${U}${E}bin`,JA(`Using cached copy of Elide at version ${A.tag_name}`);else{if(Q.no_cache)y("Cache disabled; forcing a fetch of the specified Elide release");else y("Cache enabled but no hit was found; downloading release");JA(`Installing from URL: ${B} (type: ${I})`);let w=null;try{w=await Qg(B.toString())}catch(L){if(SE(`Failed to download Elide release: ${L}`),L instanceof Error)zE(L);throw L}if(y(`Elide release downloaded to: ${w}`),D=await W8(w,D,I,A.tag_name,Q),J=D,Q.no_cache!==!0){let L=await aK(D,"elide",A.tag_name,Q.arch);J=L,Y=`${L}${E}bin`,y(`Elide release cached at: ${L}`)}else y("Tool caching is disabled; not caching downloaded release")}let N={version:A,elidePath:F,elideHome:J,elideBin:Y};return y(`Elide release info: ${JSON.stringify(N)}`),N}async function j0(A){if(A.custom_url)try{y(`Downloading custom archive: ${A.custom_url}`);let Q=await Qg(A.custom_url),B=A.version_tag||"dev",I="gzip";if(A.custom_url.endsWith(".txz"))I="txz";else if(A.custom_url.endsWith(".zip"))I="zip";let E=process.env.ELIDE_HOME||A.install_path;E=await W8(Q,E,I,B,A);let C=A.os==="windows"?"\\":"/",g=A.os==="windows"?"elide.exe":"elide",F=`${E}${C}bin`,D=`${F}${C}${g}`;return{version:{tag_name:await wB(D),userProvided:!0},elideHome:E,elideBin:F,elidePath:D}}catch(Q){if(SE(`Failed to download custom release: ${Q}`),Q instanceof Error)zE(Q);throw Q}else{let Q;if(A.version==="latest")y("Resolving latest version via GitHub API"),Q=await dv(A.token);else Q={tag_name:A.version,userProvided:!0};return lv(Q,A)}}import{access as pv}from"node:fs/promises";async function L8(){try{return await pv("/etc/debian_version"),!0}catch{return!1}}import iv from"node:path";function nv(A){switch(A){case"amd64":return"amd64";case"aarch64":return"arm64"}}async function V8(A){let Q=nv(A.arch);JA("Adding Elide apt repository GPG key"),await bA("bash",["-c","set -o pipefail && curl -fsSL https://keys.elide.dev/gpg.key | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/elide.gpg"]),JA("Adding Elide apt repository");let B=`deb [arch=${Q} signed-by=/usr/share/keyrings/elide.gpg] https://dl.elide.dev nightly main`;await bA("sudo",["tee","/etc/apt/sources.list.d/elide.list"],{input:Buffer.from(B)}),JA("Installing Elide via apt"),await bA("sudo",["apt-get","update","-qq"]);let I=["apt-get","install","-y","-qq"];if(A.version&&A.version!=="latest"&&A.version!=="local")I.push(`elide=${A.version}`);else I.push("elide");await bA("sudo",I);let E=await xA("elide",!0),C=await wB(E),g=iv.dirname(E),F=g;return JA(`Elide ${C} installed via apt at ${E}`),{version:{tag_name:C,userProvided:A.version!=="latest"},elidePath:E,elideHome:F,elideBin:g}}import av from"node:path";var sv="https://dl.elide.dev/cli/install.sh";async function Z8(A){JA("Downloading Elide install script");let B=[await Qg(sv)];if(A.version&&A.version!=="latest"&&A.version!=="local")B.push("--version",A.version);JA("Running Elide install script"),await bA("bash",B);let I;try{I=await xA("elide",!0)}catch{let D=`${process.env.HOME||process.env.USERPROFILE||"~"}/.elide/bin`;iF(D),I=await xA("elide",!0)}let E=await wB(I),C=av.dirname(I),g=C;return JA(`Elide ${E} installed via script at ${I}`),{version:{tag_name:E,userProvided:A.version!=="latest"},elidePath:I,elideHome:g,elideBin:C}}function zI(A,Q){let B=zJ(A);return y(`Property value: ${A}=${B||Q}`),B||Q||void 0}function ov(A){let Q=["true","True","TRUE","yes","Yes","YES","y","Y","on","On","ON"],B=["false","False","FALSE","no","No","NO","n","N","off","Off","OFF"],I=zJ(A);if(Q.includes(I))return!0;if(B.includes(I))return!1;return!1}function rv(A,Q){let B=ov(A);return B!==null&&B!==void 0?B:Q}function tv(A){let Q=`${A.os}-${A.arch}`;switch(Q){case"linux-amd64":case"linux-aarch64":case"darwin-aarch64":case"darwin-amd64":case"windows-amd64":return null;default:return SE(`Platform is not supported: ${Q}`),Error(`Platform not supported: ${Q}`)}}async function R8(A,Q){if(Q.prewarm)try{await X1(A)}catch(B){y(`Prewarm failed; proceeding anyway. Error: ${B instanceof Error?B.message:B}`)}try{await K1(A)}catch(B){y(`Info command failed; proceeding anyway. Error: ${B instanceof Error?B.message:B}`)}}async function ev(){try{return await xA("elide",!0)}catch{return null}}async function X8(A){try{JA("Installing Elide with GitHub Actions");let Q=A?oF(A):oF({version:zI("version","latest"),install_path:zI("install_path",process.env.ELIDE_HOME||fC.install_path),os:aF(zI("os",process.platform)),arch:sF(zI("arch",process.arch)),export_path:rv("export_path",!0),token:zI("token",process.env.GITHUB_TOKEN),custom_url:zI("custom_url"),version_tag:zI("version_tag")}),B=tv(Q);if(B){zE(B.message);return}if(!Q.force){let F=await ev();if(F){y(`Located existing Elide binary at: '${F}'. Obtaining version...`),await R8(F,Q);let D=await wB(F);if(D===Q.version||Q.version==="local"){JA(`Existing Elide installation at version '${D}' was preserved`),kC("path",F),kC("version",D);return}}}let I;if(Q.custom_url)I=await j0(Q);else if(Q.os==="linux"&&await L8())JA("Detected Debian/Ubuntu -- installing via apt repository"),I=await V8(Q);else if(Q.os==="windows")JA("Detected Windows -- installing via archive download"),I=await j0(Q);else if(Q.os==="linux"||Q.os==="darwin")JA("Installing via install script"),I=await Z8(Q);else I=await j0(Q);if(y(`Release version: '${I.version.tag_name}'`),Q.export_path)JA(`Adding '${I.elideBin}' to PATH`),iF(I.elideBin);let E={path:I.elidePath,version:Q.version};await R8(I.elidePath,Q);let C=await wB(I.elidePath);if(!I.version.tag_name.startsWith("nightly-")&&C!==I.version.tag_name)nF(`Elide version mismatch: expected '${I.version.tag_name}', but got '${C}'`);kC("path",E.path),kC("version",C),JA(`Elide installed at version ${I.version.tag_name}`)}catch(Q){if(Q instanceof Error)zE(Q.message)}}X8(); + `);let G={},D=new I.Events(G);return G.on("secondary-limit",F.onSecondaryRateLimit),G.on("rate-limit",F.onRateLimit),G.on("error",(Z)=>A.log.warn("Error in throttling-plugin limit handler",Z)),F.retryLimiter.on("failed",async function(Z,W){let[X,w,K]=W.args,{pathname:z}=new URL(K.url,"http://github.test");if(!(z.startsWith("/graphql")&&Z.status!==401||Z.status===403||Z.status===429))return;let N=~~w.retryCount;w.retryCount=N,K.request.retryCount=N;let{wantRetry:j,retryAfter:O=0}=await async function(){if(/\bsecondary rate\b/i.test(Z.message)){let k=Number(Z.response.headers["retry-after"])||X.fallbackSecondaryRateRetryAfter;return{wantRetry:await D.trigger("secondary-limit",k,K,A,N),retryAfter:k}}if(Z.response.headers!=null&&Z.response.headers["x-ratelimit-remaining"]==="0"||(Z.response.data?.errors??[]).some((k)=>k.type==="RATE_LIMITED")){let k=new Date(~~Z.response.headers["x-ratelimit-reset"]*1000).getTime(),g=Math.max(Math.ceil((k-Date.now())/1000)+1,0);return{wantRetry:await D.trigger("rate-limit",g,K,A,N),retryAfter:g}}return{}}();if(j)return w.retryCount++,O*X.retryAfterBaseValue}),A.hook.wrap("request",b6Q.bind(null,F)),{}}Sw.VERSION=v6Q;Sw.triggersNotification=hKA;function xKA(A){let Q=A.clientType||"oauth-app",B=A.baseUrl||"https://github.com",I={clientType:Q,allowSignup:A.allowSignup===!1?!1:!0,clientId:A.clientId,login:A.login||null,redirectUrl:A.redirectUrl||null,state:A.state||Math.random().toString(36).substr(2),url:""};if(Q==="oauth-app"){let C="scopes"in A?A.scopes:[];I.scopes=typeof C==="string"?C.split(/[,\s]+/).filter(Boolean):C}return I.url=p6Q(`${B}/login/oauth/authorize`,I),I}function p6Q(A,Q){let B={allowSignup:"allow_signup",clientId:"client_id",login:"login",redirectUrl:"redirect_uri",scopes:"scope",state:"state"},I=A;return Object.keys(B).filter((C)=>Q[C]!==null).filter((C)=>{if(C!=="scopes")return!0;if(Q.clientType==="github-app")return!1;return!Array.isArray(Q[C])||Q[C].length>0}).map((C)=>[B[C],`${Q[C]}`]).forEach(([C,E],Y)=>{I+=Y===0?"?":"&",I+=`${C}=${encodeURIComponent(E)}`}),I}function dKA(A){let Q=A.endpoint.DEFAULTS;return/^https:\/\/(api\.)?github\.com$/.test(Q.baseUrl)?"https://github.com":Q.baseUrl.replace("/api/v3","")}async function yw(A,Q,B){let I={baseUrl:dKA(A),headers:{accept:"application/json"},...B},C=await A(Q,I);if("error"in C.data){let E=new VE(`${C.data.error_description} (${C.data.error}, ${C.data.error_uri})`,400,{request:A.endpoint.merge(Q,I)});throw E.response=C,E}return C}function cKA({request:A=OA,...Q}){let B=dKA(A);return xKA({...Q,baseUrl:B})}async function uKA(A){let Q=A.request||OA,B=await yw(Q,"POST /login/oauth/access_token",{client_id:A.clientId,client_secret:A.clientSecret,code:A.code,redirect_uri:A.redirectUrl}),I={clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:B.data.access_token,scopes:B.data.scope.split(/\s+/).filter(Boolean)};if(A.clientType==="github-app"){if("refresh_token"in B.data){let C=new Date(B.headers.date).getTime();I.refreshToken=B.data.refresh_token,I.expiresAt=vKA(C,B.data.expires_in),I.refreshTokenExpiresAt=vKA(C,B.data.refresh_token_expires_in)}delete I.scopes}return{...B,authentication:I}}function vKA(A,Q){return new Date(A+Q*1000).toISOString()}async function lKA(A){let Q=A.request||OA,B={client_id:A.clientId};if("scopes"in A&&Array.isArray(A.scopes))B.scope=A.scopes.join(" ");return yw(Q,"POST /login/device/code",B)}async function lN(A){let Q=A.request||OA,B=await yw(Q,"POST /login/oauth/access_token",{client_id:A.clientId,device_code:A.code,grant_type:"urn:ietf:params:oauth:grant-type:device_code"}),I={clientType:A.clientType,clientId:A.clientId,token:B.data.access_token,scopes:B.data.scope.split(/\s+/).filter(Boolean)};if("clientSecret"in A)I.clientSecret=A.clientSecret;if(A.clientType==="github-app"){if("refresh_token"in B.data){let C=new Date(B.headers.date).getTime();I.refreshToken=B.data.refresh_token,I.expiresAt=bKA(C,B.data.expires_in),I.refreshTokenExpiresAt=bKA(C,B.data.refresh_token_expires_in)}delete I.scopes}return{...B,authentication:I}}function bKA(A,Q){return new Date(A+Q*1000).toISOString()}async function _w(A){let B=await(A.request||OA)("POST /applications/{client_id}/token",{headers:{authorization:`basic ${btoa(`${A.clientId}:${A.clientSecret}`)}`},client_id:A.clientId,access_token:A.token}),I={clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:A.token,scopes:B.data.scopes};if(B.data.expires_at)I.expiresAt=B.data.expires_at;if(A.clientType==="github-app")delete I.scopes;return{...B,authentication:I}}async function fw(A){let Q=A.request||OA,B=await yw(Q,"POST /login/oauth/access_token",{client_id:A.clientId,client_secret:A.clientSecret,grant_type:"refresh_token",refresh_token:A.refreshToken}),I=new Date(B.headers.date).getTime(),C={clientType:"github-app",clientId:A.clientId,clientSecret:A.clientSecret,token:B.data.access_token,refreshToken:B.data.refresh_token,expiresAt:mKA(I,B.data.expires_in),refreshTokenExpiresAt:mKA(I,B.data.refresh_token_expires_in)};return{...B,authentication:C}}function mKA(A,Q){return new Date(A+Q*1000).toISOString()}async function pKA(A){let{request:Q,clientType:B,clientId:I,clientSecret:C,token:E,...Y}=A,F=await(A.request||OA)("POST /applications/{client_id}/token/scoped",{headers:{authorization:`basic ${btoa(`${I}:${C}`)}`},client_id:I,access_token:E,...Y}),G=Object.assign({clientType:B,clientId:I,clientSecret:C,token:F.data.token},F.data.expires_at?{expiresAt:F.data.expires_at}:{});return{...F,authentication:G}}async function lW(A){let Q=A.request||OA,B=btoa(`${A.clientId}:${A.clientSecret}`),I=await Q("PATCH /applications/{client_id}/token",{headers:{authorization:`basic ${B}`},client_id:A.clientId,access_token:A.token}),C={clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:I.data.token,scopes:I.data.scopes};if(I.data.expires_at)C.expiresAt=I.data.expires_at;if(A.clientType==="github-app")delete C.scopes;return{...I,authentication:C}}async function pW(A){let Q=A.request||OA,B=btoa(`${A.clientId}:${A.clientSecret}`);return Q("DELETE /applications/{client_id}/token",{headers:{authorization:`basic ${B}`},client_id:A.clientId,access_token:A.token})}async function iW(A){let Q=A.request||OA,B=btoa(`${A.clientId}:${A.clientSecret}`);return Q("DELETE /applications/{client_id}/grant",{headers:{authorization:`basic ${B}`},client_id:A.clientId,access_token:A.token})}async function nKA(A,Q){let B=i6Q(A,Q.auth);if(B)return B;let{data:I}=await lKA({clientType:A.clientType,clientId:A.clientId,request:Q.request||A.request,scopes:Q.auth.scopes||A.scopes});await A.onVerification(I);let C=await pN(Q.request||A.request,A.clientId,A.clientType,I);return A.authentication=C,C}function i6Q(A,Q){if(Q.refresh===!0)return!1;if(!A.authentication)return!1;if(A.clientType==="github-app")return A.authentication;let B=A.authentication,I=(("scopes"in Q)&&Q.scopes||A.scopes).join(" "),C=B.scopes.join(" ");return I===C?B:!1}async function iKA(A){await new Promise((Q)=>setTimeout(Q,A*1000))}async function pN(A,Q,B,I){try{let C={clientId:Q,request:A,code:I.device_code},{authentication:E}=B==="oauth-app"?await lN({...C,clientType:"oauth-app"}):await lN({...C,clientType:"github-app"});return{type:"token",tokenType:"oauth",...E}}catch(C){if(!C.response)throw C;let E=C.response.data.error;if(E==="authorization_pending")return await iKA(I.interval),pN(A,Q,B,I);if(E==="slow_down")return await iKA(I.interval+7),pN(A,Q,B,I);throw C}}async function n6Q(A,Q){return nKA(A,{auth:Q})}async function a6Q(A,Q,B,I){let C=Q.endpoint.merge(B,I);if(/\/login\/(oauth\/access_token|device\/code)$/.test(C.url))return Q(C);let{token:E}=await nKA(A,{request:Q,auth:{type:"oauth"}});return C.headers.authorization=`token ${E}`,Q(C)}var o6Q="0.0.0-development";function aKA(A){let Q=A.request||OA.defaults({headers:{"user-agent":`octokit-auth-oauth-device.js/${o6Q} ${iQ()}`}}),{request:B=Q,...I}=A,C=A.clientType==="github-app"?{...I,clientType:"github-app",request:B}:{...I,clientType:"oauth-app",request:B,scopes:A.scopes||[]};if(!A.clientId)throw Error('[@octokit/auth-oauth-device] "clientId" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)');if(!A.onVerification)throw Error('[@octokit/auth-oauth-device] "onVerification" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)');return Object.assign(n6Q.bind(null,C),{hook:a6Q.bind(null,C)})}var sKA="0.0.0-development";async function oKA(A){if("code"in A.strategyOptions){let{authentication:Q}=await uKA({clientId:A.clientId,clientSecret:A.clientSecret,clientType:A.clientType,onTokenCreated:A.onTokenCreated,...A.strategyOptions,request:A.request});return{type:"token",tokenType:"oauth",...Q}}if("onVerification"in A.strategyOptions){let B=await aKA({clientType:A.clientType,clientId:A.clientId,onTokenCreated:A.onTokenCreated,...A.strategyOptions,request:A.request})({type:"oauth"});return{clientSecret:A.clientSecret,...B}}if("token"in A.strategyOptions)return{type:"token",tokenType:"oauth",clientId:A.clientId,clientSecret:A.clientSecret,clientType:A.clientType,onTokenCreated:A.onTokenCreated,...A.strategyOptions};throw Error("[@octokit/auth-oauth-user] Invalid strategy options")}async function iN(A,Q={}){if(!A.authentication)A.authentication=A.clientType==="oauth-app"?await oKA(A):await oKA(A);if(A.authentication.invalid)throw Error("[@octokit/auth-oauth-user] Token is invalid");let B=A.authentication;if("expiresAt"in B){if(Q.type==="refresh"||new Date(B.expiresAt)0){let A=this.first;if(delete this.items[A.key],--this.size===0)this.first=null,this.last=null;else this.first=A.next,this.first.prev=null}}expiresAt(A){if(Object.prototype.hasOwnProperty.call(this.items,A))return this.items[A].expiry}get(A){if(Object.prototype.hasOwnProperty.call(this.items,A)){let Q=this.items[A];if(this.ttl>0&&Q.expiry<=Date.now()){this.delete(A);return}return this.bumpLru(Q),Q.value}}getMany(A){let Q=[];for(var B=0;B0?Date.now()+this.ttl:this.ttl,this.last!==I)this.bumpLru(I);return}if(this.max>0&&this.size===this.max)this.evict();let B={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:A,prev:this.last,next:null,value:Q};if(this.items[A]=B,++this.size===1)this.first=B;else this.last.next=B;this.last=B}}async function vw({appId:A,privateKey:Q,timeDifference:B,createJwt:I}){try{if(I){let{jwt:Y,expiresAt:J}=await I(A,B);return{type:"app",token:Y,appId:A,expiresAt:J}}let C={id:A,privateKey:Q};if(B)Object.assign(C,{now:Math.floor(Date.now()/1000)+B});let E=await oN(C);return{type:"app",token:E.token,appId:E.appId,expiresAt:new Date(E.expiration*1000).toISOString()}}catch(C){if(Q==="-----BEGIN RSA PRIVATE KEY-----")throw Error("The 'privateKey` option contains only the first line '-----BEGIN RSA PRIVATE KEY-----'. If you are setting it using a `.env` file, make sure it is set on a single line with newlines replaced by '\n'");else throw C}}function I7Q(){return new sN(15000,3540000)}async function C7Q(A,Q){let B=rN(Q),I=await A.get(B);if(!I)return;let[C,E,Y,J,F,G]=I.split("|"),D=Q.permissions||F.split(/,/).reduce((Z,W)=>{if(/!$/.test(W))Z[W.slice(0,-1)]="write";else Z[W]="read";return Z},{});return{token:C,createdAt:E,expiresAt:Y,permissions:D,repositoryIds:Q.repositoryIds,repositoryNames:Q.repositoryNames,singleFileName:G,repositorySelection:J}}async function E7Q(A,Q,B){let I=rN(Q),C=Q.permissions?"":Object.keys(B.permissions).map((Y)=>`${Y}${B.permissions[Y]==="write"?"!":""}`).join(","),E=[B.token,B.createdAt,B.expiresAt,B.repositorySelection,C,B.singleFileName].join("|");await A.set(I,E)}function rN({installationId:A,permissions:Q={},repositoryIds:B=[],repositoryNames:I=[]}){let C=Object.keys(Q).sort().map((J)=>Q[J]==="read"?J:`${J}!`).join(","),E=B.sort().join(","),Y=I.join(",");return[A,E,Y,C].filter(Boolean).join("|")}function E6A({installationId:A,token:Q,createdAt:B,expiresAt:I,repositorySelection:C,permissions:E,repositoryIds:Y,repositoryNames:J,singleFileName:F}){return Object.assign({type:"token",tokenType:"installation",token:Q,installationId:A,permissions:E,createdAt:B,expiresAt:I,repositorySelection:C},Y?{repositoryIds:Y}:null,J?{repositoryNames:J}:null,F?{singleFileName:F}:null)}async function Y6A(A,Q,B){let I=Number(Q.installationId||A.installationId);if(!I)throw Error("[@octokit/auth-app] installationId option is required for installation authentication.");if(Q.factory){let{type:E,factory:Y,oauthApp:J,...F}={...A,...Q};return Y(F)}let C=B||A.request;return Y7Q(A,{...Q,installationId:I},C)}var xw=new Map;function Y7Q(A,Q,B){let I=rN(Q);if(xw.has(I))return xw.get(I);let C=J7Q(A,Q,B).finally(()=>xw.delete(I));return xw.set(I,C),C}async function J7Q(A,Q,B){if(!Q.refresh){let N=await C7Q(A.cache,Q);if(N){let{token:j,createdAt:O,expiresAt:k,permissions:g,repositoryIds:x,repositoryNames:dA,singleFileName:cA,repositorySelection:qQ}=N;return E6A({installationId:Q.installationId,token:j,createdAt:O,expiresAt:k,permissions:g,repositorySelection:qQ,repositoryIds:x,repositoryNames:dA,singleFileName:cA})}}let I=await vw(A),C={installation_id:Q.installationId,mediaType:{previews:["machine-man"]},headers:{authorization:`bearer ${I.token}`}};if(Q.repositoryIds)Object.assign(C,{repository_ids:Q.repositoryIds});if(Q.repositoryNames)Object.assign(C,{repositories:Q.repositoryNames});if(Q.permissions)Object.assign(C,{permissions:Q.permissions});let{data:{token:E,expires_at:Y,repositories:J,permissions:F,repository_selection:G,single_file:D}}=await B("POST /app/installations/{installation_id}/access_tokens",C),Z=F||{},W=G||"all",X=J?J.map((N)=>N.id):void 0,w=J?J.map((N)=>N.name):void 0,K=new Date().toISOString(),z={token:E,createdAt:K,expiresAt:Y,repositorySelection:W,permissions:Z,repositoryIds:X,repositoryNames:w};if(D)Object.assign(C,{singleFileName:D});await E7Q(A.cache,Q,z);let $={installationId:Q.installationId,token:E,createdAt:K,expiresAt:Y,repositorySelection:W,permissions:Z,repositoryIds:X,repositoryNames:w};if(D)Object.assign($,{singleFileName:D});return E6A($)}async function F7Q(A,Q){switch(Q.type){case"app":return vw(A);case"oauth-app":return A.oauthApp({type:"oauth-app"});case"installation":return Y6A(A,{...Q,type:"installation"});case"oauth-user":return A.oauthApp(Q);default:throw Error(`Invalid auth type: ${Q.type}`)}}var G7Q=["/app","/app/hook/config","/app/hook/deliveries","/app/hook/deliveries/{delivery_id}","/app/hook/deliveries/{delivery_id}/attempts","/app/installations","/app/installations/{installation_id}","/app/installations/{installation_id}/access_tokens","/app/installations/{installation_id}/suspended","/app/installation-requests","/marketplace_listing/accounts/{account_id}","/marketplace_listing/plan","/marketplace_listing/plans","/marketplace_listing/plans/{plan_id}/accounts","/marketplace_listing/stubbed/accounts/{account_id}","/marketplace_listing/stubbed/plan","/marketplace_listing/stubbed/plans","/marketplace_listing/stubbed/plans/{plan_id}/accounts","/orgs/{org}/installation","/repos/{owner}/{repo}/installation","/users/{username}/installation","/enterprises/{enterprise}/installation"];function D7Q(A){let B=`^(?:${A.map((I)=>I.split("/").map((C)=>C.startsWith("{")?"(?:.+?)":C).join("/")).map((I)=>`(?:${I})`).join("|")})$`;return new RegExp(B,"i")}var Z7Q=D7Q(G7Q);function W7Q(A){return!!A&&Z7Q.test(A.split("?")[0])}var X7Q=5000;function U7Q(A){return!(A.message.match(/'Expiration time' claim \('exp'\) is too far in the future/)||A.message.match(/'Expiration time' claim \('exp'\) must be a numeric value representing the future time at which the assertion expires/)||A.message.match(/'Issued at' claim \('iat'\) must be an Integer representing the time that the assertion was issued/))}async function w7Q(A,Q,B,I){let C=Q.endpoint.merge(B,I),E=C.url;if(/\/login\/oauth\/access_token$/.test(E))return Q(C);if(W7Q(E.replace(Q.endpoint.DEFAULTS.baseUrl,""))){let{token:F}=await vw(A);C.headers.authorization=`bearer ${F}`;let G;try{G=await Q(C)}catch(D){if(U7Q(D))throw D;if(typeof D.response.headers.date>"u")throw D;let Z=Math.floor((Date.parse(D.response.headers.date)-Date.parse(new Date().toString()))/1000);A.log.warn(D.message),A.log.warn(`[@octokit/auth-app] GitHub API time and system time are different by ${Z} seconds. Retrying request with the difference accounted for.`);let{token:W}=await vw({...A,timeDifference:Z});return C.headers.authorization=`bearer ${W}`,Q(C)}return G}if(nW(E)){let F=await A.oauthApp({type:"oauth-app"});return C.headers.authorization=F.headers.authorization,Q(C)}let{token:Y,createdAt:J}=await Y6A(A,{},Q.defaults({baseUrl:C.baseUrl}));return C.headers.authorization=`token ${Y}`,J6A(A,Q,C,J)}async function J6A(A,Q,B,I,C=0){let E=+new Date-+new Date(I);try{return await Q(B)}catch(Y){if(Y.status!==401)throw Y;if(E>=X7Q){if(C>0)Y.message=`After ${C} retries within ${E/1000}s of creating the installation access token, the response remains 401. At this point, the cause may be an authentication problem or a system outage. Please check https://www.githubstatus.com for status information`;throw Y}++C;let J=C*1000;return A.log.warn(`[@octokit/auth-app] Retrying after 401 response to account for token replication delay (retry: ${C}, wait: ${J/1000}s)`),await new Promise((F)=>setTimeout(F,J)),J6A(A,Q,B,I,C)}}var K7Q="8.2.0";function tD(A){if(!A.appId)throw Error("[@octokit/auth-app] appId option is required");if(!A.privateKey&&!A.createJwt)throw Error("[@octokit/auth-app] privateKey option is required");else if(A.privateKey&&A.createJwt)throw Error("[@octokit/auth-app] privateKey and createJwt options are mutually exclusive");if("installationId"in A&&!A.installationId)throw Error("[@octokit/auth-app] installationId is set to a falsy value");let Q=A.log||{};if(typeof Q.warn!=="function")Q.warn=console.warn.bind(console);let B=A.request||OA.defaults({headers:{"user-agent":`octokit-auth-app.js/${K7Q} ${iQ()}`}}),I=Object.assign({request:B,cache:I7Q()},A,A.installationId?{installationId:Number(A.installationId)}:{},{log:Q,oauthApp:gw({clientType:"github-app",clientId:A.clientId||"",clientSecret:A.clientSecret||"",request:B})});return Object.assign(F7Q.bind(null,I),{hook:w7Q.bind(null,I)})}async function z7Q(A){return{type:"unauthenticated",reason:A}}function V7Q(A){if(A.status!==403)return!1;if(!A.response)return!1;return A.response.headers["x-ratelimit-remaining"]==="0"}var $7Q=/\babuse\b/i;function L7Q(A){if(A.status!==403)return!1;return $7Q.test(A.message)}async function H7Q(A,Q,B,I){let C=Q.endpoint.merge(B,I);return Q(C).catch((E)=>{if(E.status===404)throw E.message=`Not found. May be due to lack of authentication. Reason: ${A}`,E;if(V7Q(E))throw E.message=`API rate limit exceeded. This maybe caused by the lack of authentication. Reason: ${A}`,E;if(L7Q(E))throw E.message=`You have triggered an abuse detection mechanism. This maybe caused by the lack of authentication. Reason: ${A}`,E;if(E.status===401)throw E.message=`Unauthorized. "${C.method} ${C.url}" failed most likely due to lack of authentication. Reason: ${A}`,E;if(E.status>=400&&E.status<500)E.message=E.message.replace(/\.?$/,`. May be caused by lack of authentication (${A}).`);throw E})}var VF=function(Q){if(!Q||!Q.reason)throw Error("[@octokit/auth-unauthenticated] No reason passed to createUnauthenticatedAuth");return Object.assign(z7Q.bind(null,Q.reason),{hook:H7Q.bind(null,Q.reason)})};var F6A="8.0.3";function G6A(A,Q,B){if(Array.isArray(Q)){for(let I of Q)G6A(A,I,B);return}if(!A.eventHandlers[Q])A.eventHandlers[Q]=[];A.eventHandlers[Q].push(B)}var M7Q=w0.defaults({userAgent:`octokit-oauth-app.js/${F6A} ${iQ()}`});async function K0(A,Q){let{name:B,action:I}=Q;if(A.eventHandlers[`${B}.${I}`])for(let C of A.eventHandlers[`${B}.${I}`])await C(Q);if(A.eventHandlers[B])for(let C of A.eventHandlers[B])await C(Q)}async function N7Q(A,Q){return A.octokit.auth({type:"oauth-user",...Q,async factory(B){let I=new A.Octokit({authStrategy:KB,auth:B}),C=await I.auth({type:"get"});return await K0(A,{name:"token",action:"created",token:C.token,scopes:C.scopes,authentication:C,octokit:I}),I}})}function j7Q(A,Q){let B={clientId:A.clientId,request:A.octokit.request,...Q,allowSignup:A.allowSignup??Q.allowSignup,redirectUrl:Q.redirectUrl??A.redirectUrl,scopes:Q.scopes??A.defaultScopes};return cKA({clientType:A.clientType,...B})}async function R7Q(A,Q){let B=await A.octokit.auth({type:"oauth-user",...Q});return await K0(A,{name:"token",action:"created",token:B.token,scopes:B.scopes,authentication:B,octokit:new A.Octokit({authStrategy:KB,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:B.token,scopes:B.scopes,refreshToken:B.refreshToken,expiresAt:B.expiresAt,refreshTokenExpiresAt:B.refreshTokenExpiresAt}})}),{authentication:B}}async function q7Q(A,Q){let B=await _w({clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q});return Object.assign(B.authentication,{type:"token",tokenType:"oauth"}),B}async function O7Q(A,Q){let B={clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q};if(A.clientType==="oauth-app"){let E=await lW({clientType:"oauth-app",...B}),Y=Object.assign(E.authentication,{type:"token",tokenType:"oauth"});return await K0(A,{name:"token",action:"reset",token:E.authentication.token,scopes:E.authentication.scopes||void 0,authentication:Y,octokit:new A.Octokit({authStrategy:KB,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:E.authentication.token,scopes:E.authentication.scopes}})}),{...E,authentication:Y}}let I=await lW({clientType:"github-app",...B}),C=Object.assign(I.authentication,{type:"token",tokenType:"oauth"});return await K0(A,{name:"token",action:"reset",token:I.authentication.token,authentication:C,octokit:new A.Octokit({authStrategy:KB,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:I.authentication.token}})}),{...I,authentication:C}}async function T7Q(A,Q){if(A.clientType==="oauth-app")throw Error("[@octokit/oauth-app] app.refreshToken() is not supported for OAuth Apps");let B=await fw({clientType:"github-app",clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,refreshToken:Q.refreshToken}),I=Object.assign(B.authentication,{type:"token",tokenType:"oauth"});return await K0(A,{name:"token",action:"refreshed",token:B.authentication.token,authentication:I,octokit:new A.Octokit({authStrategy:KB,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:B.authentication.token}})}),{...B,authentication:I}}async function P7Q(A,Q){if(A.clientType==="oauth-app")throw Error("[@octokit/oauth-app] app.scopeToken() is not supported for OAuth Apps");let B=await pKA({clientType:"github-app",clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q}),I=Object.assign(B.authentication,{type:"token",tokenType:"oauth"});return await K0(A,{name:"token",action:"scoped",token:B.authentication.token,authentication:I,octokit:new A.Octokit({authStrategy:KB,auth:{clientType:A.clientType,clientId:A.clientId,clientSecret:A.clientSecret,token:B.authentication.token}})}),{...B,authentication:I}}async function k7Q(A,Q){let B={clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q},I=A.clientType==="oauth-app"?await pW({clientType:"oauth-app",...B}):await pW({clientType:"github-app",...B});return await K0(A,{name:"token",action:"deleted",token:Q.token,octokit:new A.Octokit({authStrategy:VF,auth:{reason:'Handling "token.deleted" event. The access for the token has been revoked.'}})}),I}async function S7Q(A,Q){let B={clientId:A.clientId,clientSecret:A.clientSecret,request:A.octokit.request,...Q},I=A.clientType==="oauth-app"?await iW({clientType:"oauth-app",...B}):await iW({clientType:"github-app",...B});return await K0(A,{name:"token",action:"deleted",token:Q.token,octokit:new A.Octokit({authStrategy:VF,auth:{reason:'Handling "token.deleted" event. The access for the token has been revoked.'}})}),await K0(A,{name:"authorization",action:"deleted",token:Q.token,octokit:new A.Octokit({authStrategy:VF,auth:{reason:'Handling "authorization.deleted" event. The access for the app has been revoked.'}})}),I}var bw=class{static VERSION=F6A;static defaults(A){return class extends this{constructor(...B){super({...A,...B[0]})}}}constructor(A){let Q=A.Octokit||M7Q;this.type=A.clientType||"oauth-app";let B=new Q({authStrategy:gw,auth:{clientType:this.type,clientId:A.clientId,clientSecret:A.clientSecret}}),I={clientType:this.type,clientId:A.clientId,clientSecret:A.clientSecret,defaultScopes:A.defaultScopes||[],allowSignup:A.allowSignup,baseUrl:A.baseUrl,redirectUrl:A.redirectUrl,log:A.log,Octokit:Q,octokit:B,eventHandlers:{}};this.on=G6A.bind(null,I),this.octokit=B,this.getUserOctokit=N7Q.bind(null,I),this.getWebFlowAuthorizationUrl=j7Q.bind(null,I),this.createToken=R7Q.bind(null,I),this.checkToken=q7Q.bind(null,I),this.resetToken=O7Q.bind(null,I),this.refreshToken=T7Q.bind(null,I),this.scopeToken=P7Q.bind(null,I),this.deleteToken=k7Q.bind(null,I),this.deleteAuthorization=S7Q.bind(null,I)}type;on;octokit;getUserOctokit;getWebFlowAuthorizationUrl;createToken;checkToken;resetToken;refreshToken;scopeToken;deleteToken;deleteAuthorization};import{createHmac as y7Q}from"node:crypto";import{timingSafeEqual as _7Q}from"node:crypto";import{Buffer as D6A}from"node:buffer";var Z6A="6.0.0";async function mw(A,Q){if(!A||!Q)throw TypeError("[@octokit/webhooks-methods] secret & payload required for sign()");if(typeof Q!=="string")throw TypeError("[@octokit/webhooks-methods] payload must be a string");let B="sha256";return`${B}=${y7Q(B,A).update(Q).digest("hex")}`}mw.VERSION=Z6A;async function aW(A,Q,B){if(!A||!Q||!B)throw TypeError("[@octokit/webhooks-methods] secret, eventPayload & signature required");if(typeof Q!=="string")throw TypeError("[@octokit/webhooks-methods] eventPayload must be a string");let I=D6A.from(B),C=D6A.from(await mw(A,Q));if(I.length!==C.length)return!1;return _7Q(I,C)}aW.VERSION=Z6A;async function W6A(A,Q,B,I){if(await aW(A,Q,B))return!0;if(I!==void 0)for(let E of I){let Y=await aW(E,Q,B);if(Y)return Y}return!1}var w6A=(A={})=>{if(typeof A.debug!=="function")A.debug=()=>{};if(typeof A.info!=="function")A.info=()=>{};if(typeof A.warn!=="function")A.warn=console.warn.bind(console);if(typeof A.error!=="function")A.error=console.error.bind(console);return A},f7Q=["branch_protection_configuration","branch_protection_configuration.disabled","branch_protection_configuration.enabled","branch_protection_rule","branch_protection_rule.created","branch_protection_rule.deleted","branch_protection_rule.edited","check_run","check_run.completed","check_run.created","check_run.requested_action","check_run.rerequested","check_suite","check_suite.completed","check_suite.requested","check_suite.rerequested","code_scanning_alert","code_scanning_alert.appeared_in_branch","code_scanning_alert.closed_by_user","code_scanning_alert.created","code_scanning_alert.fixed","code_scanning_alert.reopened","code_scanning_alert.reopened_by_user","commit_comment","commit_comment.created","create","custom_property","custom_property.created","custom_property.deleted","custom_property.promote_to_enterprise","custom_property.updated","custom_property_values","custom_property_values.updated","delete","dependabot_alert","dependabot_alert.auto_dismissed","dependabot_alert.auto_reopened","dependabot_alert.created","dependabot_alert.dismissed","dependabot_alert.fixed","dependabot_alert.reintroduced","dependabot_alert.reopened","deploy_key","deploy_key.created","deploy_key.deleted","deployment","deployment.created","deployment_protection_rule","deployment_protection_rule.requested","deployment_review","deployment_review.approved","deployment_review.rejected","deployment_review.requested","deployment_status","deployment_status.created","discussion","discussion.answered","discussion.category_changed","discussion.closed","discussion.created","discussion.deleted","discussion.edited","discussion.labeled","discussion.locked","discussion.pinned","discussion.reopened","discussion.transferred","discussion.unanswered","discussion.unlabeled","discussion.unlocked","discussion.unpinned","discussion_comment","discussion_comment.created","discussion_comment.deleted","discussion_comment.edited","fork","github_app_authorization","github_app_authorization.revoked","gollum","installation","installation.created","installation.deleted","installation.new_permissions_accepted","installation.suspend","installation.unsuspend","installation_repositories","installation_repositories.added","installation_repositories.removed","installation_target","installation_target.renamed","issue_comment","issue_comment.created","issue_comment.deleted","issue_comment.edited","issue_dependencies","issue_dependencies.blocked_by_added","issue_dependencies.blocked_by_removed","issue_dependencies.blocking_added","issue_dependencies.blocking_removed","issues","issues.assigned","issues.closed","issues.deleted","issues.demilestoned","issues.edited","issues.labeled","issues.locked","issues.milestoned","issues.opened","issues.pinned","issues.reopened","issues.transferred","issues.typed","issues.unassigned","issues.unlabeled","issues.unlocked","issues.unpinned","issues.untyped","label","label.created","label.deleted","label.edited","marketplace_purchase","marketplace_purchase.cancelled","marketplace_purchase.changed","marketplace_purchase.pending_change","marketplace_purchase.pending_change_cancelled","marketplace_purchase.purchased","member","member.added","member.edited","member.removed","membership","membership.added","membership.removed","merge_group","merge_group.checks_requested","merge_group.destroyed","meta","meta.deleted","milestone","milestone.closed","milestone.created","milestone.deleted","milestone.edited","milestone.opened","org_block","org_block.blocked","org_block.unblocked","organization","organization.deleted","organization.member_added","organization.member_invited","organization.member_removed","organization.renamed","package","package.published","package.updated","page_build","personal_access_token_request","personal_access_token_request.approved","personal_access_token_request.cancelled","personal_access_token_request.created","personal_access_token_request.denied","ping","project","project.closed","project.created","project.deleted","project.edited","project.reopened","project_card","project_card.converted","project_card.created","project_card.deleted","project_card.edited","project_card.moved","project_column","project_column.created","project_column.deleted","project_column.edited","project_column.moved","projects_v2","projects_v2.closed","projects_v2.created","projects_v2.deleted","projects_v2.edited","projects_v2.reopened","projects_v2_item","projects_v2_item.archived","projects_v2_item.converted","projects_v2_item.created","projects_v2_item.deleted","projects_v2_item.edited","projects_v2_item.reordered","projects_v2_item.restored","projects_v2_status_update","projects_v2_status_update.created","projects_v2_status_update.deleted","projects_v2_status_update.edited","public","pull_request","pull_request.assigned","pull_request.auto_merge_disabled","pull_request.auto_merge_enabled","pull_request.closed","pull_request.converted_to_draft","pull_request.demilestoned","pull_request.dequeued","pull_request.edited","pull_request.enqueued","pull_request.labeled","pull_request.locked","pull_request.milestoned","pull_request.opened","pull_request.ready_for_review","pull_request.reopened","pull_request.review_request_removed","pull_request.review_requested","pull_request.synchronize","pull_request.unassigned","pull_request.unlabeled","pull_request.unlocked","pull_request_review","pull_request_review.dismissed","pull_request_review.edited","pull_request_review.submitted","pull_request_review_comment","pull_request_review_comment.created","pull_request_review_comment.deleted","pull_request_review_comment.edited","pull_request_review_thread","pull_request_review_thread.resolved","pull_request_review_thread.unresolved","push","registry_package","registry_package.published","registry_package.updated","release","release.created","release.deleted","release.edited","release.prereleased","release.published","release.released","release.unpublished","repository","repository.archived","repository.created","repository.deleted","repository.edited","repository.privatized","repository.publicized","repository.renamed","repository.transferred","repository.unarchived","repository_advisory","repository_advisory.published","repository_advisory.reported","repository_dispatch","repository_dispatch.sample.collected","repository_import","repository_ruleset","repository_ruleset.created","repository_ruleset.deleted","repository_ruleset.edited","repository_vulnerability_alert","repository_vulnerability_alert.create","repository_vulnerability_alert.dismiss","repository_vulnerability_alert.reopen","repository_vulnerability_alert.resolve","secret_scanning_alert","secret_scanning_alert.assigned","secret_scanning_alert.created","secret_scanning_alert.publicly_leaked","secret_scanning_alert.reopened","secret_scanning_alert.resolved","secret_scanning_alert.unassigned","secret_scanning_alert.validated","secret_scanning_alert_location","secret_scanning_alert_location.created","secret_scanning_scan","secret_scanning_scan.completed","security_advisory","security_advisory.published","security_advisory.updated","security_advisory.withdrawn","security_and_analysis","sponsorship","sponsorship.cancelled","sponsorship.created","sponsorship.edited","sponsorship.pending_cancellation","sponsorship.pending_tier_change","sponsorship.tier_changed","star","star.created","star.deleted","status","sub_issues","sub_issues.parent_issue_added","sub_issues.parent_issue_removed","sub_issues.sub_issue_added","sub_issues.sub_issue_removed","team","team.added_to_repository","team.created","team.deleted","team.edited","team.removed_from_repository","team_add","watch","watch.started","workflow_dispatch","workflow_job","workflow_job.completed","workflow_job.in_progress","workflow_job.queued","workflow_job.waiting","workflow_run","workflow_run.completed","workflow_run.in_progress","workflow_run.requested"];function g7Q(A,Q={}){if(typeof A!=="string")throw TypeError("eventName must be of type string");if(A==="*")throw TypeError('Using the "*" event with the regular Webhooks.on() function is not supported. Please use the Webhooks.onAny() method instead');if(A==="error")throw TypeError('Using the "error" event with the regular Webhooks.on() function is not supported. Please use the Webhooks.onError() method instead');if(Q.onUnknownEventName==="ignore")return;if(!f7Q.includes(A))if(Q.onUnknownEventName!=="warn")throw TypeError(`"${A}" is not a known webhook name (https://developer.github.com/v3/activity/events/types/)`);else(Q.log||console).warn(`"${A}" is not a known webhook name (https://developer.github.com/v3/activity/events/types/)`)}function tN(A,Q,B){if(!A.hooks[Q])A.hooks[Q]=[];A.hooks[Q].push(B)}function K6A(A,Q,B){if(Array.isArray(Q)){Q.forEach((I)=>K6A(A,I,B));return}g7Q(Q,{onUnknownEventName:"warn",log:A.log}),tN(A,Q,B)}function h7Q(A,Q){tN(A,"*",Q)}function x7Q(A,Q){tN(A,"error",Q)}function X6A(A,Q){let B;try{B=A(Q)}catch(I){console.log('FATAL: Error occurred in "error" event handler'),console.log(I)}if(B&&B.catch)B.catch((I)=>{console.log('FATAL: Error occurred in "error" event handler'),console.log(I)})}function v7Q(A,Q,B){let I=[A.hooks[B],A.hooks["*"]];if(Q)I.unshift(A.hooks[`${B}.${Q}`]);return[].concat(...I.filter(Boolean))}function b7Q(A,Q){let B=A.hooks.error||[];if(Q instanceof Error){let Y=Object.assign(AggregateError([Q],Q.message),{event:Q});return B.forEach((J)=>X6A(J,Y)),Promise.reject(Y)}if(!Q||!Q.name){let Y=Error("Event name not passed");throw AggregateError([Y],Y.message)}if(!Q.payload){let Y=Error("Event name not passed");throw AggregateError([Y],Y.message)}let I=v7Q(A,"action"in Q.payload?Q.payload.action:null,Q.name);if(I.length===0)return Promise.resolve();let C=[],E=I.map((Y)=>{let J=Promise.resolve(Q);if(A.transform)J=J.then(A.transform);return J.then((F)=>{return Y(F)}).catch((F)=>C.push(Object.assign(F,{event:Q})))});return Promise.all(E).then(()=>{if(C.length===0)return;let Y=AggregateError(C,C.map((J)=>J.message).join(` +`));throw Object.assign(Y,{event:Q}),B.forEach((J)=>X6A(J,Y)),Y})}function z6A(A,Q,B){if(Array.isArray(Q)){Q.forEach((I)=>z6A(A,I,B));return}if(!A.hooks[Q])return;for(let I=A.hooks[Q].length-1;I>=0;I--)if(A.hooks[Q][I]===B){A.hooks[Q].splice(I,1);return}}function m7Q(A){let Q={hooks:{},log:w6A(A&&A.log)};if(A&&A.transform)Q.transform=A.transform;return{on:K6A.bind(null,Q),onAny:h7Q.bind(null,Q),onError:x7Q.bind(null,Q),removeListener:z6A.bind(null,Q),receive:b7Q.bind(null,Q)}}async function d7Q(A,Q){if(!await W6A(A.secret,Q.payload,Q.signature,A.additionalSecrets).catch(()=>!1)){let C=Error("[@octokit/webhooks] signature does not match event payload and secret");return C.event=Q,C.status=400,A.eventHandler.receive(C)}let I;try{I=JSON.parse(Q.payload)}catch(C){throw C.message="Invalid JSON",C.status=400,AggregateError([C],C.message)}return A.eventHandler.receive({id:Q.id,name:Q.name,payload:I})}var U6A=new TextDecoder("utf-8",{fatal:!1}),hBB=U6A.decode.bind(U6A);var V6A=class{sign;verify;on;onAny;onError;removeListener;receive;verifyAndReceive;constructor(A){if(!A||!A.secret)throw Error("[@octokit/webhooks] options.secret required");let Q={eventHandler:m7Q(A),secret:A.secret,additionalSecrets:A.additionalSecrets,hooks:{},log:w6A(A.log)};this.sign=mw.bind(null,A.secret),this.verify=aW.bind(null,A.secret),this.on=Q.eventHandler.on,this.onAny=Q.eventHandler.onAny,this.onError=Q.eventHandler.onError,this.removeListener=Q.eventHandler.removeListener,this.receive=Q.eventHandler.receive,this.verifyAndReceive=d7Q.bind(null,Q)}};var c7Q="16.1.2";function u7Q(A,Q){return new V6A({secret:Q.secret,transform:async(B)=>{if(!("installation"in B.payload)||typeof B.payload.installation!=="object"){let E=new A.constructor({authStrategy:VF,auth:{reason:'"installation" key missing in webhook event payload'}});return{...B,octokit:E}}let I=B.payload.installation.id,C=await A.auth({type:"installation",installationId:I,factory(E){return new E.octokit.constructor({...E.octokitOptions,authStrategy:tD,...{auth:{...E,installationId:I}}})}});return C.hook.before("request",(E)=>{E.headers["x-github-delivery"]=B.id}),{...B,octokit:C}}})}async function $6A(A,Q){return A.octokit.auth({type:"installation",installationId:Q,factory(B){let I={...B.octokitOptions,authStrategy:tD,...{auth:{...B,installationId:Q}}};return new B.octokit.constructor(I)}})}function l7Q(A){return Object.assign(p7Q.bind(null,A),{iterator:L6A.bind(null,A)})}async function p7Q(A,Q){let B=L6A(A)[Symbol.asyncIterator](),I=await B.next();while(!I.done)await Q(I.value),I=await B.next()}function L6A(A){return{async*[Symbol.asyncIterator](){let Q=kw.iterator(A.octokit,"GET /app/installations");for await(let{data:B}of Q)for(let I of B)yield{octokit:await $6A(A,I.id),installation:I}}}}function i7Q(A){return Object.assign(n7Q.bind(null,A),{iterator:H6A.bind(null,A)})}async function n7Q(A,Q,B){let I=H6A(A,B?Q:void 0)[Symbol.asyncIterator](),C=await I.next();while(!C.done){if(B)await B(C.value);else await Q(C.value);C=await I.next()}}function a7Q(A,Q){return{async*[Symbol.asyncIterator](){yield{octokit:await A.getInstallationOctokit(Q)}}}}function H6A(A,Q){return{async*[Symbol.asyncIterator](){let B=Q?a7Q(A,Q.installationId):A.eachInstallation.iterator();for await(let{octokit:I}of B){let C=kw.iterator(I,"GET /installation/repositories");for await(let{data:E}of C)for(let Y of E)yield{octokit:I,repository:Y}}}}}function o7Q(A){let Q;return async function(I={}){if(!Q)Q=s7Q(A);let C=await Q,E=new URL(C);if(I.target_id!==void 0)E.pathname+="/permissions",E.searchParams.append("target_id",I.target_id.toFixed());if(I.state!==void 0)E.searchParams.append("state",I.state);return E.href}}async function s7Q(A){let{data:Q}=await A.octokit.request("GET /app");if(!Q)throw Error("[@octokit/app] unable to fetch metadata for app");return`${Q.html_url}/installations/new`}var M6A=class{static VERSION=c7Q;static defaults(A){return class extends this{constructor(...B){super({...A,...B[0]})}}}octokit;webhooks;oauth;getInstallationOctokit;eachInstallation;eachRepository;getInstallationUrl;log;constructor(A){let Q=A.Octokit||w0,B=Object.assign({appId:A.appId,privateKey:A.privateKey},A.oauth?{clientId:A.oauth.clientId,clientSecret:A.oauth.clientSecret}:{}),I={authStrategy:tD,auth:B};if("log"in A&&typeof A.log<"u")I.log=A.log;if(this.octokit=new Q(I),this.log=Object.assign({debug:()=>{},info:()=>{},warn:console.warn.bind(console),error:console.error.bind(console)},A.log),A.webhooks)this.webhooks=u7Q(this.octokit,A.webhooks);else Object.defineProperty(this,"webhooks",{get(){throw Error("[@octokit/app] webhooks option not set")}});if(A.oauth)this.oauth=new bw({...A.oauth,clientType:"github-app",Octokit:Q});else Object.defineProperty(this,"oauth",{get(){throw Error("[@octokit/app] oauth.clientId / oauth.clientSecret options are not set")}});this.getInstallationOctokit=$6A.bind(null,this),this.eachInstallation=l7Q(this),this.eachRepository=i7Q(this),this.getInstallationUrl=o7Q(this)}};var r7Q="0.0.0-development",dw=w0.plugin(uW,dW,kKA,cN,Sw).defaults({userAgent:`octokit.js/${r7Q}`,throttle:{onRateLimit:t7Q,onSecondaryRateLimit:e7Q}});function t7Q(A,Q,B){if(B.log.warn(`Request quota exhausted for request ${Q.method} ${Q.url}`),Q.request.retryCount===0)return B.log.info(`Retrying after ${A} seconds!`),!0}function e7Q(A,Q,B){if(B.log.warn(`SecondaryRateLimit detected for request ${Q.method} ${Q.url}`),Q.request.retryCount===0)return B.log.info(`Retrying after ${A} seconds!`),!0}var EIB=M6A.defaults({Octokit:dw}),YIB=bw.defaults({Octokit:dw});import*as zj from"crypto";import*as $B from"fs";var i$Q=f(Uj(),1);import*as QK from"os";import*as bC from"path";var FC=f(Uj(),1);import*as XzA from"stream";import*as UzA from"util";import{ok as wzA}from"assert";var WzA=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})};class wj{constructor(A,Q,B){if(A<1)throw Error("max attempts should be greater than or equal to 1");if(this.maxAttempts=A,this.minSeconds=Math.floor(Q),this.maxSeconds=Math.floor(B),this.minSeconds>this.maxSeconds)throw Error("min seconds should be less than or equal to max seconds")}execute(A,Q){return WzA(this,void 0,void 0,function*(){let B=1;while(BsetTimeout(Q,A*1000))})}}var __dirname="/Volumes/VAULTROOM/elide/setup-elide/node_modules/@actions/tool-cache/lib",LE=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})};class Vj extends Error{constructor(A){super(`Unexpected HTTP response: ${A}`);this.httpStatusCode=A,Object.setPrototypeOf(this,new.target.prototype)}}var KzA=process.platform==="win32",CCB=process.platform==="darwin",a$Q="actions/tool-cache";function GC(A,Q,B,I){return LE(this,void 0,void 0,function*(){Q=Q||bC.join(HzA(),zj.randomUUID()),yield zG(bC.dirname(Q)),o(`Downloading ${A}`),o(`Destination ${Q}`);let C=3,E=Kj("TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS",10),Y=Kj("TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS",20);return yield new wj(C,E,Y).execute(()=>LE(this,void 0,void 0,function*(){return yield o$Q(A,Q||"",B,I)}),(F)=>{if(F instanceof Vj&&F.httpStatusCode){if(F.httpStatusCode<500&&F.httpStatusCode!==408&&F.httpStatusCode!==429)return!1}return!0})})}function o$Q(A,Q,B,I){return LE(this,void 0,void 0,function*(){if($B.existsSync(Q))throw Error(`Destination file path ${Q} already exists`);let C=new lX(a$Q,[],{allowRetries:!1});if(B){if(o("set auth"),I===void 0)I={};I.authorization=B}let E=yield C.get(A,I);if(E.message.statusCode!==200){let D=new Vj(E.message.statusCode);throw o(`Failed to download from "${A}". Code(${E.message.statusCode}) Message(${E.message.statusMessage})`),D}let Y=UzA.promisify(XzA.pipeline),F=Kj("TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY",()=>E.message)(),G=!1;try{return yield Y(F,$B.createWriteStream(Q)),o("download complete"),G=!0,Q}finally{if(!G){o("download failed");try{yield Y1(Q)}catch(D){o(`Failed to delete '${Q}'. ${D.message}`)}}}})}function $j(A,Q){return LE(this,arguments,void 0,function*(B,I,C="xz"){if(!B)throw Error("parameter 'file' is required");I=yield $zA(I),o("Checking tar --version");let E="";yield QQ("tar --version",[],{ignoreReturnCode:!0,silent:!0,listeners:{stdout:(D)=>E+=D.toString(),stderr:(D)=>E+=D.toString()}}),o(E.trim());let Y=E.toUpperCase().includes("GNU TAR"),J;if(C instanceof Array)J=C;else J=[C];if(Qz()&&!C.includes("v"))J.push("-v");let F=I,G=B;if(KzA&&Y)J.push("--force-local"),F=I.replace(/\\/g,"/"),G=B.replace(/\\/g,"/");if(Y)J.push("--warning=no-unknown-keyword"),J.push("--overwrite");return J.push("-C",F,"-f",G),yield QQ("tar",J),I})}function Lj(A,Q){return LE(this,void 0,void 0,function*(){if(!A)throw Error("parameter 'file' is required");if(Q=yield $zA(Q),KzA)yield s$Q(A,Q);else yield r$Q(A,Q);return Q})}function s$Q(A,Q){return LE(this,void 0,void 0,function*(){let B=A.replace(/'/g,"''").replace(/"|\n|\r/g,""),I=Q.replace(/'/g,"''").replace(/"|\n|\r/g,""),C=yield nA("pwsh",!1);if(C){let Y=["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Unrestricted","-Command",["$ErrorActionPreference = 'Stop' ;","try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;",`try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${B}', '${I}', $true) }`,`catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${B}' -DestinationPath '${I}' -Force } else { throw $_ } } ;`].join(" ")];o(`Using pwsh at path: ${C}`),yield QQ(`"${C}"`,Y)}else{let Y=["-NoLogo","-Sta","-NoProfile","-NonInteractive","-ExecutionPolicy","Unrestricted","-Command",["$ErrorActionPreference = 'Stop' ;","try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;",`if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${B}' -DestinationPath '${I}' -Force }`,`else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${B}', '${I}', $true) }`].join(" ")],J=yield nA("powershell",!0);o(`Using powershell at path: ${J}`),yield QQ(`"${J}"`,Y)}})}function r$Q(A,Q){return LE(this,void 0,void 0,function*(){let B=yield nA("unzip",!0),I=[A];if(!Qz())I.unshift("-q");I.unshift("-o"),yield QQ(`"${B}"`,I,{cwd:Q})})}function zzA(A,Q,B,I){return LE(this,void 0,void 0,function*(){if(B=FC.clean(B)||B,I=I||QK.arch(),o(`Caching tool ${Q} ${B} ${I}`),o(`source dir: ${A}`),!$B.statSync(A).isDirectory())throw Error("sourceDir is not a directory");let C=yield e$Q(Q,B,I);for(let E of $B.readdirSync(A)){let Y=bC.join(A,E);yield Jg(Y,C,{recursive:!0})}return A3Q(Q,B,I),C})}function VzA(A,Q,B){if(!A)throw Error("toolName parameter is required");if(!Q)throw Error("versionSpec parameter is required");if(B=B||QK.arch(),!LzA(Q)){let C=t$Q(A,B);Q=Q3Q(C,Q)}let I="";if(Q){Q=FC.clean(Q)||"";let C=bC.join(BK(),A,Q,B);if(o(`checking cache: ${C}`),$B.existsSync(C)&&$B.existsSync(`${C}.complete`))o(`Found tool in cache ${A} ${Q} ${B}`),I=C;else o("not found")}return I}function t$Q(A,Q){let B=[];Q=Q||QK.arch();let I=bC.join(BK(),A);if($B.existsSync(I)){let C=$B.readdirSync(I);for(let E of C)if(LzA(E)){let Y=bC.join(I,E,Q||"");if($B.existsSync(Y)&&$B.existsSync(`${Y}.complete`))B.push(E)}}return B}function $zA(A){return LE(this,void 0,void 0,function*(){if(!A)A=bC.join(HzA(),zj.randomUUID());return yield zG(A),A})}function e$Q(A,Q,B){return LE(this,void 0,void 0,function*(){let I=bC.join(BK(),A,FC.clean(Q)||Q,B||"");o(`destination ${I}`);let C=`${I}.complete`;return yield Y1(I),yield Y1(C),yield zG(I),I})}function A3Q(A,Q,B){let C=`${bC.join(BK(),A,FC.clean(Q)||Q,B||"")}.complete`;$B.writeFileSync(C,""),o("finished caching tool")}function LzA(A){let Q=FC.clean(A)||"";o(`isExplicit: ${Q}`);let B=FC.valid(Q)!=null;return o(`explicit? ${B}`),B}function Q3Q(A,Q){let B="";o(`evaluating ${A.length} versions`),A=A.sort((I,C)=>{if(FC.gt(I,C))return 1;return-1});for(let I=A.length-1;I>=0;I--){let C=A[I];if(FC.satisfies(C,Q)){B=C;break}}if(B)o(`matched: ${B}`);else o("match not found");return B}function BK(){let A=process.env.RUNNER_TOOL_CACHE||"";return wzA(A,"Expected RUNNER_TOOL_CACHE to be defined"),A}function HzA(){let A=process.env.RUNNER_TEMP||"";return wzA(A,"Expected RUNNER_TEMP to be defined"),A}function Kj(A,Q){let B=global[A];return B!==void 0?B:Q}import{readFileSync as B3Q,existsSync as I3Q}from"fs";import{EOL as C3Q}from"os";class C8{constructor(){var A,Q,B;if(this.payload={},process.env.GITHUB_EVENT_PATH)if(I3Q(process.env.GITHUB_EVENT_PATH))this.payload=JSON.parse(B3Q(process.env.GITHUB_EVENT_PATH,{encoding:"utf8"}));else{let I=process.env.GITHUB_EVENT_PATH;process.stdout.write(`GITHUB_EVENT_PATH ${I} does not exist${C3Q}`)}this.eventName=process.env.GITHUB_EVENT_NAME,this.sha=process.env.GITHUB_SHA,this.ref=process.env.GITHUB_REF,this.workflow=process.env.GITHUB_WORKFLOW,this.action=process.env.GITHUB_ACTION,this.actor=process.env.GITHUB_ACTOR,this.job=process.env.GITHUB_JOB,this.runAttempt=parseInt(process.env.GITHUB_RUN_ATTEMPT,10),this.runNumber=parseInt(process.env.GITHUB_RUN_NUMBER,10),this.runId=parseInt(process.env.GITHUB_RUN_ID,10),this.apiUrl=(A=process.env.GITHUB_API_URL)!==null&&A!==void 0?A:"https://api.github.com",this.serverUrl=(Q=process.env.GITHUB_SERVER_URL)!==null&&Q!==void 0?Q:"https://github.com",this.graphqlUrl=(B=process.env.GITHUB_GRAPHQL_URL)!==null&&B!==void 0?B:"https://api.github.com/graphql"}get issue(){let A=this.payload;return Object.assign(Object.assign({},this.repo),{number:(A.issue||A.pull_request||A).number})}get repo(){if(process.env.GITHUB_REPOSITORY){let[A,Q]=process.env.GITHUB_REPOSITORY.split("/");return{owner:A,repo:Q}}if(this.payload.repository)return{owner:this.payload.repository.owner.login,repo:this.payload.repository.name};throw Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'")}}var Rj=f(TzA(),1),PzA=f(uX(),1),$3Q=function(A,Q,B,I){function C(E){return E instanceof B?E:new B(function(Y){Y(E)})}return new(B||(B=Promise))(function(E,Y){function J(D){try{G(I.next(D))}catch(Z){Y(Z)}}function F(D){try{G(I.throw(D))}catch(Z){Y(Z)}}function G(D){D.done?E(D.value):C(D.value).then(J,F)}G((I=I.apply(A,Q||[])).next())})};function kzA(A,Q){if(!A&&!Q.auth)throw Error("Parameter token or opts.auth is required");else if(A&&Q.auth)throw Error("Parameters token and opts.auth may not both be specified");return typeof Q.auth==="string"?Q.auth:`token ${A}`}function SzA(A){return new Rj.HttpClient().getAgent(A)}function L3Q(A){return new Rj.HttpClient().getAgentDispatcher(A)}function yzA(A){let Q=L3Q(A);return(I,C)=>$3Q(this,void 0,void 0,function*(){return PzA.fetch(I,Object.assign(Object.assign({},C),{dispatcher:Q}))})}function _zA(){return process.env.GITHUB_API_URL||"https://api.github.com"}var WCB=new C8,qj=_zA(),M3Q={baseUrl:qj,request:{agent:SzA(qj),fetch:yzA(qj)}},fzA=w0.plugin(uW,dW).defaults(M3Q);function gzA(A,Q){let B=Object.assign({},Q||{}),I=kzA(A,B);if(I)B.auth=I;return B}var wCB=new C8;function hzA(A,Q,...B){return new(fzA.plugin(...B))(gzA(A,Q))}import{spawnSync as j3Q}from"node:child_process";import{existsSync as R3Q}from"node:fs";var q3Q="https://elide.zip",O3Q="2022-11-28",T3Q={"X-GitHub-Api-Version":O3Q},P3Q=/^nightly-(.+)$/;function k3Q(A){let Q=A.match(P3Q);if(Q)return`0.0.0-nightly.${Q[1].replaceAll("-","")}`;return A}function S3Q(A){return A==="darwin"?"macos":A}function y3Q(A){return A==="aarch64"?"arm64":A}function LF(A,Q){let B=A.channel||"nightly",I=A.version==="latest"?"latest":A.version,C=S3Q(A.os),E=y3Q(A.arch);return new URL(`${q3Q}/artifacts/${B}/${I}/elide.${C}-${E}.${Q}?source=gha`)}async function _3Q(A){let Q="tgz",B="gzip",I=await nA("xz");if(A.os==="windows")Q="zip",B="zip";else if(I)Q="txz",B="txz";return{archiveType:B,url:LF(A,Q)}}async function xzA(A,Q,B,I,C){let E;try{if(C.os==="windows")o(`Extracting as zip on Windows, from: ${A}, to: ${Q}`),E=await Lj(A,Q);else{let Y=`${A}.tar`;switch(B){case"zip":o(`Extracting as zip on Unix or Linux, from: ${A}, to: ${Q}`),E=await Lj(A,Q);break;case"gzip":o(`Extracting as tgz on Unix or Linux, from: ${A}, to: ${Q}`),E=await $j(A,Q,["xz","--strip-components=1"]);break;case"txz":{o(`Extracting as txz on Unix or Linux, from: ${A}, to: ${Q}`);let J=await nA("xz");if(!J)throw Error("xz command not found, please install xz-utils");o(`xz command found at: ${J}`);let F=`${Y}.xz`;if(await Fg(A,F,{force:!1}),!R3Q(F))throw Error(`Archive not found (renaming failed?): ${F} (renamed)`);let G=j3Q(J,["-v","-d",F],{encoding:"utf-8"});if(G.status!==0)throw console.log("XZ output: ",G.stdout),console.error("XZ error output: ",G.stderr),Error(`xz extraction failed: ${G.stderr}`);o(`XZ extraction completed: ${G.status}`)}E=await $j(Y,Q,["x","--strip-components=1"]);break}}}catch(Y){ZJ(`Failed to extract Elide release: ${Y}`),E=Q}return o(`Elide release ${I} extracted at ${E}`),E}var Oj=3,f3Q=1000;async function g3Q(A){if(!A)ZJ("No GitHub token provided. API requests may be rate-limited. Set the `token` input or ensure GITHUB_TOKEN is available.");let Q=A?hzA(A):new dw({}),B;for(let I=1;I<=Oj;I++)try{let C=await Q.request("GET /repos/{owner}/{repo}/releases/latest",{owner:"elide-dev",repo:"elide",headers:T3Q});if(!C)throw Error("Failed to fetch the latest Elide version");return{name:C.data?.name||void 0,tag_name:C.data.tag_name,userProvided:!!A}}catch(C){B=C instanceof Error?C:Error(String(C));let E=B.message.includes("rate limit")||B.message.includes("quota exhausted")||B.message.includes("403")||B.message.includes("429");if(IsetTimeout(J,Y))}else if(E)p0("GitHub API rate limit exhausted. Provide a token via the `token` input to increase the limit.",{title:"Rate Limited"})}throw B}async function h3Q(A,Q){let{url:B,archiveType:I}=await _3Q(Q),C=Q.os==="windows"?"\\":"/",E=Q.os==="windows"?"elide.exe":"elide",Y=`${Q.install_path}${C}bin${C}${E}`;if(Q.no_cache===!0)console.info("Tool caching is disabled.");let J=Y,F=process.env.ELIDE_HOME||Q.install_path,G=F,D=`${F}${C}bin`,Z=null,W=k3Q(A.tag_name);try{o(`Checking for cached tool 'elide' at version '${A.tag_name}' (cache key: ${W})`),Z=VzA("elide",W,Q.arch)}catch(K){o(`Failed to locate Elide in tool cache: ${K}`)}if(Q.no_cache!==!0&&Z)o("Caching enabled and cached Elide release found; using it"),J=`${Z}${C}bin${C}${E}`,G=Z,D=`${Z}${C}bin`,LA(`Using cached copy of Elide at version ${A.tag_name}`);else{if(Q.no_cache)o("Cache disabled; forcing a fetch of the specified Elide release");else o("Cache enabled but no hit was found; downloading release");LA(`Installing from URL: ${B} (type: ${I})`);let K=null;try{K=await GC(B.toString())}catch(z){if(p0(`Failed to download Elide release: ${z}`),z instanceof Error)VG(z);throw z}if(o(`Elide release downloaded to: ${K}`),F=await xzA(K,F,I,A.tag_name,Q),G=F,Q.no_cache!==!0){let z=await zzA(F,"elide",W,Q.arch);G=z,D=`${z}${C}bin`,o(`Elide release cached at: ${z}`)}else o("Tool caching is disabled; not caching downloaded release")}let X=!!(Q.no_cache!==!0&&Z),w={version:A,elidePath:J,elideHome:G,elideBin:D,cached:X};return o(`Elide release info: ${JSON.stringify(w)}`),w}async function Tj(A){if(A.custom_url)try{o(`Downloading custom archive: ${A.custom_url}`);let Q=await GC(A.custom_url),B=A.version_tag||"dev",I="gzip";if(A.custom_url.endsWith(".txz"))I="txz";else if(A.custom_url.endsWith(".zip"))I="zip";let C=process.env.ELIDE_HOME||A.install_path;C=await xzA(Q,C,I,B,A);let E=A.os==="windows"?"\\":"/",Y=A.os==="windows"?"elide.exe":"elide",J=`${C}${E}bin`,F=`${J}${E}${Y}`;return{version:{tag_name:await ZB(F),userProvided:!0},elideHome:C,elideBin:J,elidePath:F}}catch(Q){if(p0(`Failed to download custom release: ${Q}`),Q instanceof Error)VG(Q);throw Q}else{let Q;if(A.version==="latest")o("Resolving latest version via GitHub API"),Q=await g3Q(A.token);else Q={tag_name:A.version,userProvided:!0};return h3Q(Q,A)}}import x3Q from"node:path";function v3Q(A){switch(A){case"amd64":return"amd64";case"aarch64":return"arm64"}}async function vzA(A){let Q=v3Q(A.arch);LA("Adding Elide apt repository GPG key"),await QQ("bash",["-c","set -o pipefail && curl -fsSL https://keys.elide.dev/gpg.key | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/elide.gpg"]),LA("Adding Elide apt repository");let B=A.channel||"nightly",I=`deb [arch=${Q} signed-by=/usr/share/keyrings/elide.gpg] https://dl.elide.dev ${B} main`;await QQ("sudo",["tee","/etc/apt/sources.list.d/elide.list"],{input:Buffer.from(I)}),LA("Installing Elide via apt"),await QQ("sudo",["apt-get","update","-qq"]);let C=["apt-get","install","-y","-qq"];if(A.version&&A.version!=="latest"&&A.version!=="local")C.push(`elide=${A.version}`);else C.push("elide");await QQ("sudo",C);let E=await nA("elide",!0),Y=await ZB(E),J=x3Q.dirname(E),F=J;return LA(`Elide ${Y} installed via apt at ${E}`),{version:{tag_name:Y,userProvided:A.version!=="latest"},elidePath:E,elideHome:F,elideBin:J}}import bzA from"node:path";var b3Q="https://dl.elide.dev/cli/install.sh",m3Q="https://dl.elide.dev/cli/install.ps1";async function mzA(A){if(A.os==="windows")return c3Q(A);return d3Q(A)}async function d3Q(A){LA("Downloading Elide install script (bash)");let B=[await GC(b3Q),"--gha"];if(A.version&&A.version!=="latest"&&A.version!=="local")B.push("--version",A.version);LA("Running Elide install script"),await QQ("bash",B);let I;try{I=await nA("elide",!0)}catch{let F=`${process.env.HOME||process.env.USERPROFILE||"~"}/.elide/bin`;oX(F),I=await nA("elide",!0)}let C=await ZB(I),E=bzA.dirname(I),Y=E;return LA(`Elide ${C} installed via bash script at ${I}`),{version:{tag_name:C,userProvided:A.version!=="latest"},elidePath:I,elideHome:Y,elideBin:E}}async function c3Q(A){LA("Downloading Elide install script (PowerShell)");let B=["-ExecutionPolicy","Bypass","-File",await GC(m3Q),"-Gha"];if(A.version&&A.version!=="latest"&&A.version!=="local")B.push("-Version",A.version);LA("Running Elide install script (PowerShell)"),await QQ("powershell",B);let I=await nA("elide",!0),C=await ZB(I),E=bzA.dirname(I),Y=E;return LA(`Elide ${C} installed via PowerShell script at ${I}`),{version:{tag_name:C,userProvided:A.version!=="latest"},elidePath:I,elideHome:Y,elideBin:E}}import u3Q from"node:path";async function dzA(A){let Q=LF(A,"msi");LA(`Downloading Elide MSI from ${Q}`);let B=await GC(Q.toString());LA("Installing Elide via MSI");let I=A.install_path||"C:\\Elide";await QQ("msiexec",["/i",B,"/quiet","/norestart",`INSTALLDIR=${I}`]);let C=await nA("elide",!0),E=await ZB(C),Y=u3Q.dirname(C),J=Y;return LA(`Elide ${E} installed via MSI at ${C}`),{version:{tag_name:E,userProvided:A.version!=="latest"},elidePath:C,elideHome:J,elideBin:Y}}import l3Q from"node:path";async function czA(A){let Q=LF(A,"pkg");LA(`Downloading Elide PKG from ${Q}`);let B=await GC(Q.toString());LA("Installing Elide via PKG"),await QQ("sudo",["installer","-pkg",B,"-target","/"]);let I=await nA("elide",!0),C=await ZB(I),E=l3Q.dirname(I),Y=E;return LA(`Elide ${C} installed via PKG at ${I}`),{version:{tag_name:C,userProvided:A.version!=="latest"},elidePath:I,elideHome:Y,elideBin:E}}import p3Q from"node:path";async function uzA(A){let Q=LF(A,"rpm");LA(`Downloading Elide RPM from ${Q}`);let B=await GC(Q.toString()),I=!1;try{await nA("dnf",!0),I=!0}catch{}if(I)LA("Installing Elide via dnf"),await QQ("sudo",["dnf","install","-y",B]);else LA("Installing Elide via rpm"),await QQ("sudo",["rpm","-U","--replacepkgs",B]);let C=await nA("elide",!0),E=await ZB(C),Y=p3Q.dirname(C),J=Y;return LA(`Elide ${E} installed via RPM at ${C}`),{version:{tag_name:E,userProvided:A.version!=="latest"},elidePath:C,elideHome:J,elideBin:Y}}function i3Q(A){let Q=`${A.os}-${A.arch}`;switch(Q){case"linux-amd64":case"linux-aarch64":case"darwin-aarch64":case"darwin-amd64":case"windows-amd64":return null;default:return Error(`Platform not supported: ${Q}`)}}async function lzA(A){try{await Lg(A)}catch(Q){o(`Post-install info failed; proceeding anyway. Error: ${Q instanceof Error?Q.message:Q}`)}}async function n3Q(){try{return await nA("elide",!0)}catch{return null}}async function a3Q(A,Q,B,I,C,E){try{let Y=E<1000?`${Math.round(E)}ms`:`${(E/1000).toFixed(1)}s`;await pX.addHeading("Elide Installed",2).addTable([[{data:"Version",header:!0},{data:A,header:!1}],[{data:"Channel",header:!0},{data:Q.channel,header:!1}],[{data:"Installer",header:!0},{data:B,header:!1}],[{data:"Platform",header:!0},{data:`${Q.os}-${Q.arch}`,header:!1}],[{data:"Path",header:!0},{data:I,header:!1}],[{data:"Cached",header:!0},{data:C?"yes":"no",header:!1}],[{data:"Time",header:!0},{data:Y,header:!1}]]).write()}catch{}}async function o3Q(A){try{await pX.addHeading("Setup Elide Failed",2).addCodeBlock(A.message,"text").addLink("Report this issue","https://github.com/elide-dev/setup-elide/issues/new").write()}catch{}}async function pzA(A){let Q=Date.now();try{let B=await sX("⚙️ Resolving options",async()=>{let I=A?Ow(A):nwA();return LA(`Options: version=${I.version} channel=${I.channel} installer=${I.installer} os=${I.os} arch=${I.arch}`),I});mwA(B.telemetry,B),jw("setup-elide.start",{installer:B.installer,version:B.version,os:B.os,arch:B.arch}),await Nw("setup-elide","setup",async()=>{let I=i3Q(B);if(I){p0(I.message,{title:"Platform Not Supported"}),VG(I.message);return}if(!B.force){let D=await n3Q();if(D){o(`Located existing Elide binary at: '${D}'. Obtaining version...`),await lzA(D);let Z=await ZB(D);if(Z===B.version||B.version==="local"){Bz(`Existing Elide ${Z} preserved at ${D}`,{title:"Already Installed"}),xE("path",D),xE("version",Z),xE("cached","true"),xE("installer","none"),jw("setup-elide.exit",{status:"cached"});return}}}let C=B.installer,E=iwA(C,B.os);if(!E.valid)ZJ(`Installer '${C}' is not supported on ${B.os}: ${E.reason}. Falling back to 'archive'.`,{title:"Installer Fallback"}),C="archive";let Y=await sX(`\uD83D\uDCE6 Installing Elide via ${C}`,async()=>Nw(`install.${C}`,"install",async()=>{if(B.custom_url)return LA(`Using custom URL: ${B.custom_url}`),Tj(B);switch(C){case"archive":return Tj(B);case"shell":return mzA(B);case"msi":return dzA(B);case"pkg":return czA(B);case"apt":return vzA(B);case"rpm":return uzA(B)}}));o(`Release version: '${Y.version.tag_name}'`);let J=await sX("✅ Verifying installation",async()=>Nw("verify","verify",async()=>{if(B.export_path)LA(`Adding '${Y.elideBin}' to PATH`),oX(Y.elideBin);await lzA(Y.elidePath);let D=await ZB(Y.elidePath);if(!Y.version.tag_name.startsWith("nightly-")&&D!==Y.version.tag_name)ZJ(`Elide version mismatch: expected '${Y.version.tag_name}', but got '${D}'`,{title:"Version Mismatch"});return D})),F=Y.cached??!1;if(xE("path",Y.elidePath),xE("version",J),xE("cached",F?"true":"false"),xE("installer",C),F)Bz(`Using cached Elide ${Y.version.tag_name}`,{title:"Cache Hit"});let G=Date.now()-Q;LA(`Elide ${Y.version.tag_name} installed in ${G<1000?`${G}ms`:`${(G/1000).toFixed(1)}s`}`),cwA("setup_elide.duration_ms",G,"millisecond",{installer:C,os:B.os,arch:B.arch,cached:F?"true":"false"}),jw("setup-elide.exit",{status:"success",installer:C,version:J,cached:F?"true":"false"}),await a3Q(J,B,C,Y.elidePath,F,G)})}catch(B){if(B instanceof Error)dwA(B),p0(B.message,{title:"Installation Failed"}),VG(B.message),await o3Q(B)}finally{await uwA()}}pzA(); -//# debugId=1720B86932B8DA3364756E2164756E21 +//# debugId=C959AC204FAA6F0C64756E2164756E21 //# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map index 2b5033e..04bb096 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1,6 +1,6 @@ { "version": 3, - "sources": ["../node_modules/tunnel/lib/tunnel.js", "../node_modules/undici/lib/core/symbols.js", "../node_modules/undici/lib/core/errors.js", "../node_modules/undici/lib/core/constants.js", "../node_modules/undici/lib/core/tree.js", "../node_modules/undici/lib/core/util.js", "../node_modules/undici/lib/core/diagnostics.js", "../node_modules/undici/lib/core/request.js", "../node_modules/undici/lib/dispatcher/dispatcher.js", "../node_modules/undici/lib/dispatcher/dispatcher-base.js", "../node_modules/undici/lib/util/timers.js", "../node_modules/undici/lib/core/connect.js", "../node_modules/undici/lib/llhttp/utils.js", "../node_modules/undici/lib/llhttp/constants.js", "../node_modules/undici/lib/llhttp/llhttp-wasm.js", "../node_modules/undici/lib/llhttp/llhttp_simd-wasm.js", "../node_modules/undici/lib/web/fetch/constants.js", "../node_modules/undici/lib/web/fetch/global.js", "../node_modules/undici/lib/web/fetch/data-url.js", "../node_modules/undici/lib/web/fetch/webidl.js", "../node_modules/undici/lib/web/fetch/util.js", "../node_modules/undici/lib/web/fetch/symbols.js", "../node_modules/undici/lib/web/fetch/file.js", "../node_modules/undici/lib/web/fetch/formdata.js", "../node_modules/undici/lib/web/fetch/formdata-parser.js", "../node_modules/undici/lib/web/fetch/body.js", "../node_modules/undici/lib/dispatcher/client-h1.js", "../node_modules/undici/lib/dispatcher/client-h2.js", "../node_modules/undici/lib/handler/redirect-handler.js", "../node_modules/undici/lib/interceptor/redirect-interceptor.js", "../node_modules/undici/lib/dispatcher/client.js", "../node_modules/undici/lib/dispatcher/fixed-queue.js", "../node_modules/undici/lib/dispatcher/pool-stats.js", "../node_modules/undici/lib/dispatcher/pool-base.js", "../node_modules/undici/lib/dispatcher/pool.js", "../node_modules/undici/lib/dispatcher/balanced-pool.js", "../node_modules/undici/lib/dispatcher/agent.js", "../node_modules/undici/lib/dispatcher/proxy-agent.js", "../node_modules/undici/lib/dispatcher/env-http-proxy-agent.js", "../node_modules/undici/lib/handler/retry-handler.js", "../node_modules/undici/lib/dispatcher/retry-agent.js", "../node_modules/undici/lib/api/readable.js", "../node_modules/undici/lib/api/util.js", "../node_modules/undici/lib/api/api-request.js", "../node_modules/undici/lib/api/abort-signal.js", "../node_modules/undici/lib/api/api-stream.js", "../node_modules/undici/lib/api/api-pipeline.js", "../node_modules/undici/lib/api/api-upgrade.js", "../node_modules/undici/lib/api/api-connect.js", "../node_modules/undici/lib/api/index.js", "../node_modules/undici/lib/mock/mock-errors.js", "../node_modules/undici/lib/mock/mock-symbols.js", "../node_modules/undici/lib/mock/mock-utils.js", "../node_modules/undici/lib/mock/mock-interceptor.js", "../node_modules/undici/lib/mock/mock-client.js", "../node_modules/undici/lib/mock/mock-pool.js", "../node_modules/undici/lib/mock/pluralizer.js", "../node_modules/undici/lib/mock/pending-interceptors-formatter.js", "../node_modules/undici/lib/mock/mock-agent.js", "../node_modules/undici/lib/global.js", "../node_modules/undici/lib/handler/decorator-handler.js", "../node_modules/undici/lib/interceptor/redirect.js", "../node_modules/undici/lib/interceptor/retry.js", "../node_modules/undici/lib/interceptor/dump.js", "../node_modules/undici/lib/interceptor/dns.js", "../node_modules/undici/lib/web/fetch/headers.js", "../node_modules/undici/lib/web/fetch/response.js", "../node_modules/undici/lib/web/fetch/dispatcher-weakref.js", "../node_modules/undici/lib/web/fetch/request.js", "../node_modules/undici/lib/web/fetch/index.js", "../node_modules/undici/lib/web/fileapi/symbols.js", "../node_modules/undici/lib/web/fileapi/progressevent.js", "../node_modules/undici/lib/web/fileapi/encoding.js", "../node_modules/undici/lib/web/fileapi/util.js", "../node_modules/undici/lib/web/fileapi/filereader.js", "../node_modules/undici/lib/web/cache/symbols.js", "../node_modules/undici/lib/web/cache/util.js", "../node_modules/undici/lib/web/cache/cache.js", "../node_modules/undici/lib/web/cache/cachestorage.js", "../node_modules/undici/lib/web/cookies/constants.js", "../node_modules/undici/lib/web/cookies/util.js", "../node_modules/undici/lib/web/cookies/parse.js", "../node_modules/undici/lib/web/cookies/index.js", "../node_modules/undici/lib/web/websocket/events.js", "../node_modules/undici/lib/web/websocket/constants.js", "../node_modules/undici/lib/web/websocket/symbols.js", "../node_modules/undici/lib/web/websocket/util.js", "../node_modules/undici/lib/web/websocket/frame.js", "../node_modules/undici/lib/web/websocket/connection.js", "../node_modules/undici/lib/web/websocket/permessage-deflate.js", "../node_modules/undici/lib/web/websocket/receiver.js", "../node_modules/undici/lib/web/websocket/sender.js", "../node_modules/undici/lib/web/websocket/websocket.js", "../node_modules/undici/lib/web/eventsource/util.js", "../node_modules/undici/lib/web/eventsource/eventsource-stream.js", "../node_modules/undici/lib/web/eventsource/eventsource.js", "../node_modules/undici/index.js", "../node_modules/bottleneck/light.js", "../node_modules/semver/internal/constants.js", "../node_modules/semver/internal/debug.js", "../node_modules/semver/internal/re.js", "../node_modules/semver/internal/parse-options.js", "../node_modules/semver/internal/identifiers.js", "../node_modules/semver/classes/semver.js", "../node_modules/semver/functions/parse.js", "../node_modules/semver/functions/valid.js", "../node_modules/semver/functions/clean.js", "../node_modules/semver/functions/inc.js", "../node_modules/semver/functions/diff.js", "../node_modules/semver/functions/major.js", "../node_modules/semver/functions/minor.js", "../node_modules/semver/functions/patch.js", "../node_modules/semver/functions/prerelease.js", "../node_modules/semver/functions/compare.js", "../node_modules/semver/functions/rcompare.js", "../node_modules/semver/functions/compare-loose.js", "../node_modules/semver/functions/compare-build.js", "../node_modules/semver/functions/sort.js", "../node_modules/semver/functions/rsort.js", "../node_modules/semver/functions/gt.js", "../node_modules/semver/functions/lt.js", "../node_modules/semver/functions/eq.js", "../node_modules/semver/functions/neq.js", "../node_modules/semver/functions/gte.js", "../node_modules/semver/functions/lte.js", "../node_modules/semver/functions/cmp.js", "../node_modules/semver/functions/coerce.js", "../node_modules/semver/internal/lrucache.js", "../node_modules/semver/classes/range.js", "../node_modules/semver/classes/comparator.js", "../node_modules/semver/functions/satisfies.js", "../node_modules/semver/ranges/to-comparators.js", "../node_modules/semver/ranges/max-satisfying.js", "../node_modules/semver/ranges/min-satisfying.js", "../node_modules/semver/ranges/min-version.js", "../node_modules/semver/ranges/valid.js", "../node_modules/semver/ranges/outside.js", "../node_modules/semver/ranges/gtr.js", "../node_modules/semver/ranges/ltr.js", "../node_modules/semver/ranges/intersects.js", "../node_modules/semver/ranges/simplify.js", "../node_modules/semver/ranges/subset.js", "../node_modules/semver/index.js", "../node_modules/@actions/github/node_modules/@actions/http-client/lib/proxy.js", "../node_modules/@actions/github/node_modules/@actions/http-client/lib/index.js", "../node_modules/@actions/core/lib/command.js", "../node_modules/@actions/core/lib/utils.js", "../node_modules/@actions/core/lib/file-command.js", "../node_modules/@actions/core/lib/core.js", "../node_modules/@actions/http-client/lib/index.js", "../node_modules/@actions/http-client/lib/proxy.js", "../node_modules/@actions/core/lib/summary.js", "../node_modules/@actions/core/lib/platform.js", "../node_modules/@actions/exec/lib/exec.js", "../node_modules/@actions/exec/lib/toolrunner.js", "../node_modules/@actions/io/lib/io.js", "../node_modules/@actions/io/lib/io-util.js", "../src/command.ts", "../src/options.ts", "../node_modules/universal-user-agent/index.js", "../node_modules/before-after-hook/lib/register.js", "../node_modules/before-after-hook/lib/add.js", "../node_modules/before-after-hook/lib/remove.js", "../node_modules/before-after-hook/index.js", "../node_modules/@octokit/endpoint/dist-bundle/index.js", "../node_modules/fast-content-type-parse/index.js", "../node_modules/json-with-bigint/json-with-bigint.js", "../node_modules/@octokit/request-error/dist-src/index.js", "../node_modules/@octokit/request/dist-bundle/index.js", "../node_modules/@octokit/graphql/dist-bundle/index.js", "../node_modules/@octokit/auth-token/dist-bundle/index.js", "../node_modules/@octokit/core/dist-src/version.js", "../node_modules/@octokit/core/dist-src/index.js", "../node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js", "../node_modules/@octokit/plugin-paginate-graphql/dist-bundle/index.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js", "../node_modules/@octokit/plugin-retry/dist-bundle/index.js", "../node_modules/@octokit/plugin-throttling/dist-bundle/index.js", "../node_modules/@octokit/oauth-authorization-url/dist-src/index.js", "../node_modules/@octokit/oauth-methods/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-device/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-user/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-app/dist-bundle/index.js", "../node_modules/universal-github-app-jwt/lib/utils.js", "../node_modules/universal-github-app-jwt/lib/crypto-node.js", "../node_modules/universal-github-app-jwt/lib/get-token.js", "../node_modules/universal-github-app-jwt/index.js", "../node_modules/toad-cache/dist/toad-cache.mjs", "../node_modules/@octokit/auth-app/dist-node/index.js", "../node_modules/@octokit/auth-unauthenticated/dist-node/index.js", "../node_modules/@octokit/oauth-app/dist-node/index.js", "../node_modules/@octokit/webhooks-methods/dist-node/index.js", "../node_modules/@octokit/webhooks/dist-bundle/index.js", "../node_modules/@octokit/app/dist-node/index.js", "../node_modules/octokit/dist-bundle/index.js", "../node_modules/@actions/tool-cache/lib/tool-cache.js", "../node_modules/@actions/tool-cache/lib/manifest.js", "../node_modules/@actions/tool-cache/lib/retry-helper.js", "../node_modules/@actions/github/lib/context.js", "../node_modules/@actions/github/lib/internal/utils.js", "../node_modules/@actions/github/lib/utils.js", "../node_modules/@actions/github/lib/github.js", "../src/config.ts", "../src/releases.ts", "../src/platform.ts", "../src/install-apt.ts", "../src/install-script.ts", "../src/main.ts", "../src/index.ts"], + "sources": ["../node_modules/tunnel/lib/tunnel.js", "../node_modules/undici/lib/core/symbols.js", "../node_modules/undici/lib/core/errors.js", "../node_modules/undici/lib/core/constants.js", "../node_modules/undici/lib/core/tree.js", "../node_modules/undici/lib/core/util.js", "../node_modules/undici/lib/core/diagnostics.js", "../node_modules/undici/lib/core/request.js", "../node_modules/undici/lib/dispatcher/dispatcher.js", "../node_modules/undici/lib/dispatcher/dispatcher-base.js", "../node_modules/undici/lib/util/timers.js", "../node_modules/undici/lib/core/connect.js", "../node_modules/undici/lib/llhttp/utils.js", "../node_modules/undici/lib/llhttp/constants.js", "../node_modules/undici/lib/llhttp/llhttp-wasm.js", "../node_modules/undici/lib/llhttp/llhttp_simd-wasm.js", "../node_modules/undici/lib/web/fetch/constants.js", "../node_modules/undici/lib/web/fetch/global.js", "../node_modules/undici/lib/web/fetch/data-url.js", "../node_modules/undici/lib/web/fetch/webidl.js", "../node_modules/undici/lib/web/fetch/util.js", "../node_modules/undici/lib/web/fetch/symbols.js", "../node_modules/undici/lib/web/fetch/file.js", "../node_modules/undici/lib/web/fetch/formdata.js", "../node_modules/undici/lib/web/fetch/formdata-parser.js", "../node_modules/undici/lib/web/fetch/body.js", "../node_modules/undici/lib/dispatcher/client-h1.js", "../node_modules/undici/lib/dispatcher/client-h2.js", "../node_modules/undici/lib/handler/redirect-handler.js", "../node_modules/undici/lib/interceptor/redirect-interceptor.js", "../node_modules/undici/lib/dispatcher/client.js", "../node_modules/undici/lib/dispatcher/fixed-queue.js", "../node_modules/undici/lib/dispatcher/pool-stats.js", "../node_modules/undici/lib/dispatcher/pool-base.js", "../node_modules/undici/lib/dispatcher/pool.js", "../node_modules/undici/lib/dispatcher/balanced-pool.js", "../node_modules/undici/lib/dispatcher/agent.js", "../node_modules/undici/lib/dispatcher/proxy-agent.js", "../node_modules/undici/lib/dispatcher/env-http-proxy-agent.js", "../node_modules/undici/lib/handler/retry-handler.js", "../node_modules/undici/lib/dispatcher/retry-agent.js", "../node_modules/undici/lib/api/readable.js", "../node_modules/undici/lib/api/util.js", "../node_modules/undici/lib/api/api-request.js", "../node_modules/undici/lib/api/abort-signal.js", "../node_modules/undici/lib/api/api-stream.js", "../node_modules/undici/lib/api/api-pipeline.js", "../node_modules/undici/lib/api/api-upgrade.js", "../node_modules/undici/lib/api/api-connect.js", "../node_modules/undici/lib/api/index.js", "../node_modules/undici/lib/mock/mock-errors.js", "../node_modules/undici/lib/mock/mock-symbols.js", "../node_modules/undici/lib/mock/mock-utils.js", "../node_modules/undici/lib/mock/mock-interceptor.js", "../node_modules/undici/lib/mock/mock-client.js", "../node_modules/undici/lib/mock/mock-pool.js", "../node_modules/undici/lib/mock/pluralizer.js", "../node_modules/undici/lib/mock/pending-interceptors-formatter.js", "../node_modules/undici/lib/mock/mock-agent.js", "../node_modules/undici/lib/global.js", "../node_modules/undici/lib/handler/decorator-handler.js", "../node_modules/undici/lib/interceptor/redirect.js", "../node_modules/undici/lib/interceptor/retry.js", "../node_modules/undici/lib/interceptor/dump.js", "../node_modules/undici/lib/interceptor/dns.js", "../node_modules/undici/lib/web/fetch/headers.js", "../node_modules/undici/lib/web/fetch/response.js", "../node_modules/undici/lib/web/fetch/dispatcher-weakref.js", "../node_modules/undici/lib/web/fetch/request.js", "../node_modules/undici/lib/web/fetch/index.js", "../node_modules/undici/lib/web/fileapi/symbols.js", "../node_modules/undici/lib/web/fileapi/progressevent.js", "../node_modules/undici/lib/web/fileapi/encoding.js", "../node_modules/undici/lib/web/fileapi/util.js", "../node_modules/undici/lib/web/fileapi/filereader.js", "../node_modules/undici/lib/web/cache/symbols.js", "../node_modules/undici/lib/web/cache/util.js", "../node_modules/undici/lib/web/cache/cache.js", "../node_modules/undici/lib/web/cache/cachestorage.js", "../node_modules/undici/lib/web/cookies/constants.js", "../node_modules/undici/lib/web/cookies/util.js", "../node_modules/undici/lib/web/cookies/parse.js", "../node_modules/undici/lib/web/cookies/index.js", "../node_modules/undici/lib/web/websocket/events.js", "../node_modules/undici/lib/web/websocket/constants.js", "../node_modules/undici/lib/web/websocket/symbols.js", "../node_modules/undici/lib/web/websocket/util.js", "../node_modules/undici/lib/web/websocket/frame.js", "../node_modules/undici/lib/web/websocket/connection.js", "../node_modules/undici/lib/web/websocket/permessage-deflate.js", "../node_modules/undici/lib/web/websocket/receiver.js", "../node_modules/undici/lib/web/websocket/sender.js", "../node_modules/undici/lib/web/websocket/websocket.js", "../node_modules/undici/lib/web/eventsource/util.js", "../node_modules/undici/lib/web/eventsource/eventsource-stream.js", "../node_modules/undici/lib/web/eventsource/eventsource.js", "../node_modules/undici/index.js", "../node_modules/@opentelemetry/api/build/src/version.js", "../node_modules/@opentelemetry/api/build/src/internal/semver.js", "../node_modules/@opentelemetry/api/build/src/internal/global-utils.js", "../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js", "../node_modules/@opentelemetry/api/build/src/diag/types.js", "../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js", "../node_modules/@opentelemetry/api/build/src/api/diag.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js", "../node_modules/@opentelemetry/api/build/src/baggage/utils.js", "../node_modules/@opentelemetry/api/build/src/context/context.js", "../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js", "../node_modules/@opentelemetry/api/build/src/metrics/Metric.js", "../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js", "../node_modules/@opentelemetry/api/build/src/api/context.js", "../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js", "../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js", "../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js", "../node_modules/@opentelemetry/api/build/src/trace/context-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js", "../node_modules/@opentelemetry/api/build/src/trace/span_kind.js", "../node_modules/@opentelemetry/api/build/src/trace/status.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js", "../node_modules/@opentelemetry/api/build/src/context-api.js", "../node_modules/@opentelemetry/api/build/src/diag-api.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js", "../node_modules/@opentelemetry/api/build/src/api/metrics.js", "../node_modules/@opentelemetry/api/build/src/metrics-api.js", "../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js", "../node_modules/@opentelemetry/api/build/src/api/propagation.js", "../node_modules/@opentelemetry/api/build/src/propagation-api.js", "../node_modules/@opentelemetry/api/build/src/api/trace.js", "../node_modules/@opentelemetry/api/build/src/trace-api.js", "../node_modules/@opentelemetry/api/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/baggage/constants.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/baggage/utils.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/anchored-clock.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/attributes.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/global-error-handler.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/platform/node/environment.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/globalThis.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/version.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/platform/node/index.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/platform/index.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/time.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/timer-util.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/ExportResult.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/propagation/composite.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/internal/validators.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/trace/TraceState.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/merge.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/timeout.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/url.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/promise.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/callback.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/configuration.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/internal/exporter.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/version.js", "../node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js", "../node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js", "../node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js", "../node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js", "../node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js", "../node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js", "../node_modules/@opentelemetry/api-logs/build/src/api/logs.js", "../node_modules/@opentelemetry/api-logs/build/src/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js", "../node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js", "../node_modules/@opentelemetry/instrumentation/build/src/semver.js", "../node_modules/@opentelemetry/instrumentation/build/src/shimmer.js", "../node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js", "../node_modules/ms/index.js", "../node_modules/debug/src/common.js", "../node_modules/debug/src/browser.js", "../node_modules/has-flag/index.js", "../node_modules/supports-color/index.js", "../node_modules/debug/src/node.js", "../node_modules/debug/src/index.js", "../node_modules/module-details-from-path/index.js", "../node_modules/require-in-the-middle/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js", "../node_modules/import-in-the-middle/lib/register.js", "../node_modules/import-in-the-middle/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js", "../node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js", "../node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js", "../node_modules/@opentelemetry/instrumentation/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.js", "../node_modules/forwarded-parse/lib/error.js", "../node_modules/forwarded-parse/lib/ascii.js", "../node_modules/forwarded-parse/index.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/http.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/index.js", "../node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js", "../node_modules/@opentelemetry/core/build/src/baggage/constants.js", "../node_modules/@opentelemetry/core/build/src/baggage/utils.js", "../node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js", "../node_modules/@opentelemetry/core/build/src/common/anchored-clock.js", "../node_modules/@opentelemetry/core/build/src/common/attributes.js", "../node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js", "../node_modules/@opentelemetry/core/build/src/common/global-error-handler.js", "../node_modules/@opentelemetry/core/build/src/platform/node/environment.js", "../node_modules/@opentelemetry/core/build/src/common/globalThis.js", "../node_modules/@opentelemetry/core/build/src/version.js", "../node_modules/@opentelemetry/core/build/src/semconv.js", "../node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js", "../node_modules/@opentelemetry/core/build/src/platform/node/index.js", "../node_modules/@opentelemetry/core/build/src/platform/index.js", "../node_modules/@opentelemetry/core/build/src/common/time.js", "../node_modules/@opentelemetry/core/build/src/common/timer-util.js", "../node_modules/@opentelemetry/core/build/src/ExportResult.js", "../node_modules/@opentelemetry/core/build/src/propagation/composite.js", "../node_modules/@opentelemetry/core/build/src/internal/validators.js", "../node_modules/@opentelemetry/core/build/src/trace/TraceState.js", "../node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js", "../node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js", "../node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js", "../node_modules/@opentelemetry/core/build/src/utils/merge.js", "../node_modules/@opentelemetry/core/build/src/utils/timeout.js", "../node_modules/@opentelemetry/core/build/src/utils/url.js", "../node_modules/@opentelemetry/core/build/src/utils/promise.js", "../node_modules/@opentelemetry/core/build/src/utils/callback.js", "../node_modules/@opentelemetry/core/build/src/utils/configuration.js", "../node_modules/@opentelemetry/core/build/src/internal/exporter.js", "../node_modules/@opentelemetry/core/build/src/index.js", "../node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js", "../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js", "../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js", "../node_modules/@opentelemetry/context-async-hooks/build/src/index.js", "../node_modules/@opentelemetry/resources/build/src/default-service-name.js", "../node_modules/@opentelemetry/resources/build/src/utils.js", "../node_modules/@opentelemetry/resources/build/src/ResourceImpl.js", "../node_modules/@opentelemetry/resources/build/src/detect-resources.js", "../node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js", "../node_modules/@opentelemetry/resources/build/src/semconv.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js", "../node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/index.js", "../node_modules/@opentelemetry/resources/build/src/index.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/config.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/semconv.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/TracerMetrics.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/version.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-undici/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-undici/build/src/undici.js", "../node_modules/@opentelemetry/instrumentation-undici/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/semver.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/lib/register.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/utils.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/index.js", "../node_modules/@fastify/otel/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/dist/commonjs/index.js", "../node_modules/@fastify/otel/node_modules/minimatch/node_modules/brace-expansion/dist/commonjs/index.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/brace-expressions.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/unescape.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/ast.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/escape.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/index.js", "../node_modules/@fastify/otel/index.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.js", "../node_modules/@opentelemetry/sql-common/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.js", "../node_modules/@opentelemetry/redis-common/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/redis.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/lib/register.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/types.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js", "../node_modules/bottleneck/light.js", "../node_modules/semver/internal/constants.js", "../node_modules/semver/internal/debug.js", "../node_modules/semver/internal/re.js", "../node_modules/semver/internal/parse-options.js", "../node_modules/semver/internal/identifiers.js", "../node_modules/semver/classes/semver.js", "../node_modules/semver/functions/parse.js", "../node_modules/semver/functions/valid.js", "../node_modules/semver/functions/clean.js", "../node_modules/semver/functions/inc.js", "../node_modules/semver/functions/diff.js", "../node_modules/semver/functions/major.js", "../node_modules/semver/functions/minor.js", "../node_modules/semver/functions/patch.js", "../node_modules/semver/functions/prerelease.js", "../node_modules/semver/functions/compare.js", "../node_modules/semver/functions/rcompare.js", "../node_modules/semver/functions/compare-loose.js", "../node_modules/semver/functions/compare-build.js", "../node_modules/semver/functions/sort.js", "../node_modules/semver/functions/rsort.js", "../node_modules/semver/functions/gt.js", "../node_modules/semver/functions/lt.js", "../node_modules/semver/functions/eq.js", "../node_modules/semver/functions/neq.js", "../node_modules/semver/functions/gte.js", "../node_modules/semver/functions/lte.js", "../node_modules/semver/functions/cmp.js", "../node_modules/semver/functions/coerce.js", "../node_modules/semver/internal/lrucache.js", "../node_modules/semver/classes/range.js", "../node_modules/semver/classes/comparator.js", "../node_modules/semver/functions/satisfies.js", "../node_modules/semver/ranges/to-comparators.js", "../node_modules/semver/ranges/max-satisfying.js", "../node_modules/semver/ranges/min-satisfying.js", "../node_modules/semver/ranges/min-version.js", "../node_modules/semver/ranges/valid.js", "../node_modules/semver/ranges/outside.js", "../node_modules/semver/ranges/gtr.js", "../node_modules/semver/ranges/ltr.js", "../node_modules/semver/ranges/intersects.js", "../node_modules/semver/ranges/simplify.js", "../node_modules/semver/ranges/subset.js", "../node_modules/semver/index.js", "../node_modules/@actions/github/node_modules/@actions/http-client/lib/proxy.js", "../node_modules/@actions/github/node_modules/@actions/http-client/lib/index.js", "../node_modules/@actions/core/lib/command.js", "../node_modules/@actions/core/lib/utils.js", "../node_modules/@actions/core/lib/file-command.js", "../node_modules/@actions/core/lib/core.js", "../node_modules/@actions/http-client/lib/index.js", "../node_modules/@actions/http-client/lib/proxy.js", "../node_modules/@actions/core/lib/summary.js", "../node_modules/@actions/core/lib/platform.js", "../node_modules/@actions/exec/lib/exec.js", "../node_modules/@actions/exec/lib/toolrunner.js", "../node_modules/@actions/io/lib/io.js", "../node_modules/@actions/io/lib/io-util.js", "../src/command.ts", "../node_modules/@sentry/node/build/esm/integrations/http.js", "../node_modules/@sentry/core/build/esm/debug-build.js", "../node_modules/@sentry/core/build/esm/utils/is.js", "../node_modules/@sentry/core/build/esm/utils/worldwide.js", "../node_modules/@sentry/core/build/esm/utils/browser.js", "../node_modules/@sentry/core/build/esm/utils/version.js", "../node_modules/@sentry/core/build/esm/carrier.js", "../node_modules/@sentry/core/build/esm/utils/debug-logger.js", "../node_modules/@sentry/core/build/esm/utils/object.js", "../node_modules/@sentry/core/build/esm/tracing/utils.js", "../node_modules/@sentry/core/build/esm/tracing/spanstatus.js", "../node_modules/@sentry/core/build/esm/utils/randomSafeContext.js", "../node_modules/@sentry/core/build/esm/utils/stacktrace.js", "../node_modules/@sentry/core/build/esm/utils/string.js", "../node_modules/@sentry/core/build/esm/utils/misc.js", "../node_modules/@sentry/core/build/esm/utils/time.js", "../node_modules/@sentry/core/build/esm/session.js", "../node_modules/@sentry/core/build/esm/utils/merge.js", "../node_modules/@sentry/core/build/esm/utils/propagationContext.js", "../node_modules/@sentry/core/build/esm/utils/spanOnScope.js", "../node_modules/@sentry/core/build/esm/scope.js", "../node_modules/@sentry/core/build/esm/defaultScopes.js", "../node_modules/@sentry/core/build/esm/utils/chain-and-copy-promiselike.js", "../node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js", "../node_modules/@sentry/core/build/esm/asyncContext/index.js", "../node_modules/@sentry/core/build/esm/currentScopes.js", "../node_modules/@sentry/core/build/esm/semanticAttributes.js", "../node_modules/@sentry/core/build/esm/utils/baggage.js", "../node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js", "../node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js", "../node_modules/@sentry/core/build/esm/utils/parseSampleRate.js", "../node_modules/@sentry/core/build/esm/utils/dsn.js", "../node_modules/@sentry/core/build/esm/utils/tracing.js", "../node_modules/@sentry/core/build/esm/utils/spanUtils.js", "../node_modules/@sentry/core/build/esm/constants.js", "../node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js", "../node_modules/@sentry/core/build/esm/tracing/logSpans.js", "../node_modules/@sentry/core/build/esm/tracing/sampling.js", "../node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js", "../node_modules/@sentry/core/build/esm/utils/normalize.js", "../node_modules/@sentry/core/build/esm/utils/envelope.js", "../node_modules/@sentry/core/build/esm/utils/should-ignore-span.js", "../node_modules/@sentry/core/build/esm/envelope.js", "../node_modules/@sentry/core/build/esm/tracing/measurement.js", "../node_modules/@sentry/core/build/esm/tracing/sentrySpan.js", "../node_modules/@sentry/core/build/esm/tracing/trace.js", "../node_modules/@sentry/core/build/esm/utils/syncpromise.js", "../node_modules/@sentry/core/build/esm/eventProcessors.js", "../node_modules/@sentry/core/build/esm/utils/debug-ids.js", "../node_modules/@sentry/core/build/esm/utils/scopeData.js", "../node_modules/@sentry/core/build/esm/utils/prepareEvent.js", "../node_modules/@sentry/core/build/esm/exports.js", "../node_modules/@sentry/core/build/esm/checkin.js", "../node_modules/@sentry/core/build/esm/api.js", "../node_modules/@sentry/core/build/esm/integration.js", "../node_modules/@sentry/core/build/esm/attributes.js", "../node_modules/@sentry/core/build/esm/utils/timestampSequence.js", "../node_modules/@sentry/core/build/esm/utils/trace-info.js", "../node_modules/@sentry/core/build/esm/logs/envelope.js", "../node_modules/@sentry/core/build/esm/logs/internal.js", "../node_modules/@sentry/core/build/esm/metrics/envelope.js", "../node_modules/@sentry/core/build/esm/metrics/internal.js", "../node_modules/@sentry/core/build/esm/utils/timer.js", "../node_modules/@sentry/core/build/esm/utils/promisebuffer.js", "../node_modules/@sentry/core/build/esm/utils/ratelimit.js", "../node_modules/@sentry/core/build/esm/transports/base.js", "../node_modules/@sentry/core/build/esm/utils/clientreport.js", "../node_modules/@sentry/core/build/esm/utils/eventUtils.js", "../node_modules/@sentry/core/build/esm/utils/transactionEvent.js", "../node_modules/@sentry/core/build/esm/client.js", "../node_modules/@sentry/core/build/esm/instrument/handlers.js", "../node_modules/@sentry/core/build/esm/instrument/globalError.js", "../node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js", "../node_modules/@sentry/core/build/esm/tracing/errors.js", "../node_modules/@sentry/core/build/esm/transports/userAgent.js", "../node_modules/@sentry/core/build/esm/utils/eventbuilder.js", "../node_modules/@sentry/core/build/esm/server-runtime-client.js", "../node_modules/@sentry/core/build/esm/utils/ai/providerSkip.js", "../node_modules/@sentry/core/build/esm/utils/envToBool.js", "../node_modules/@sentry/core/build/esm/utils/url.js", "../node_modules/@sentry/core/build/esm/utils/sdkMetadata.js", "../node_modules/@sentry/core/build/esm/utils/traceData.js", "../node_modules/@sentry/core/build/esm/utils/tracePropagationTargets.js", "../node_modules/@sentry/core/build/esm/utils/debounce.js", "../node_modules/@sentry/core/build/esm/utils/request.js", "../node_modules/@sentry/core/build/esm/breadcrumbs.js", "../node_modules/@sentry/core/build/esm/integrations/functiontostring.js", "../node_modules/@sentry/core/build/esm/integrations/eventFilters.js", "../node_modules/@sentry/core/build/esm/utils/aggregate-errors.js", "../node_modules/@sentry/core/build/esm/integrations/linkederrors.js", "../node_modules/@sentry/core/build/esm/utils/cookie.js", "../node_modules/@sentry/core/build/esm/vendor/getIpAddress.js", "../node_modules/@sentry/core/build/esm/integrations/requestdata.js", "../node_modules/@sentry/core/build/esm/instrument/console.js", "../node_modules/@sentry/core/build/esm/utils/severity.js", "../node_modules/@sentry/core/build/esm/utils/path.js", "../node_modules/@sentry/core/build/esm/integrations/postgresjs.js", "../node_modules/@sentry/core/build/esm/integrations/console.js", "../node_modules/@sentry/core/build/esm/integrations/conversationId.js", "../node_modules/@sentry/core/build/esm/metrics/public-api.js", "../node_modules/@sentry/core/build/esm/tracing/ai/gen-ai-attributes.js", "../node_modules/@sentry/core/build/esm/tracing/vercel-ai/constants.js", "../node_modules/@sentry/core/build/esm/tracing/ai/mediaStripping.js", "../node_modules/@sentry/core/build/esm/tracing/ai/messageTruncation.js", "../node_modules/@sentry/core/build/esm/tracing/ai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/vercel-ai/vercel-ai-attributes.js", "../node_modules/@sentry/core/build/esm/tracing/vercel-ai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/vercel-ai/index.js", "../node_modules/@sentry/core/build/esm/tracing/openai/constants.js", "../node_modules/@sentry/core/build/esm/tracing/openai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/openai/streaming.js", "../node_modules/@sentry/core/build/esm/tracing/openai/index.js", "../node_modules/@sentry/core/build/esm/tracing/anthropic-ai/constants.js", "../node_modules/@sentry/core/build/esm/tracing/anthropic-ai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/anthropic-ai/streaming.js", "../node_modules/@sentry/core/build/esm/tracing/anthropic-ai/index.js", "../node_modules/@sentry/core/build/esm/tracing/google-genai/constants.js", "../node_modules/@sentry/core/build/esm/tracing/google-genai/streaming.js", "../node_modules/@sentry/core/build/esm/tracing/google-genai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/google-genai/index.js", "../node_modules/@sentry/core/build/esm/tracing/langchain/constants.js", "../node_modules/@sentry/core/build/esm/tracing/langchain/utils.js", "../node_modules/@sentry/core/build/esm/tracing/langchain/index.js", "../node_modules/@sentry/core/build/esm/tracing/langgraph/constants.js", "../node_modules/@sentry/core/build/esm/tracing/langgraph/utils.js", "../node_modules/@sentry/core/build/esm/tracing/langgraph/index.js", "../node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js", "../node_modules/@sentry/core/build/esm/utils/exports.js", "../node_modules/@sentry/core/build/esm/utils/node-stack-trace.js", "../node_modules/@sentry/core/build/esm/utils/lru.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/httpServerSpansIntegration.js", "../node_modules/@sentry/node-core/build/esm/debug-build.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/httpServerIntegration.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/constants.js", "../node_modules/@sentry/node-core/build/esm/utils/captureRequestBody.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/SentryHttpInstrumentation.js", "../node_modules/@sentry/node-core/build/esm/utils/baggage.js", "../node_modules/@sentry/node-core/build/esm/utils/outgoingHttpRequest.js", "../node_modules/@sentry/node-core/build/esm/integrations/node-fetch/SentryNodeFetchInstrumentation.js", "../node_modules/@sentry/node-core/build/esm/nodeVersion.js", "../node_modules/@sentry/node-core/build/esm/utils/outgoingFetchRequest.js", "../node_modules/@sentry/node-core/build/esm/otel/contextManager.js", "../node_modules/@sentry/opentelemetry/build/esm/index.js", "../node_modules/@sentry/node-core/build/esm/otel/logger.js", "../node_modules/@sentry/node-core/build/esm/otel/instrument.js", "../node_modules/@sentry/node-core/build/esm/integrations/childProcess.js", "../node_modules/@sentry/node-core/build/esm/integrations/context.js", "../node_modules/@sentry/node-core/build/esm/integrations/contextlines.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/index.js", "../node_modules/@sentry/node-core/build/esm/integrations/local-variables/local-variables-async.js", "../node_modules/@sentry/node-core/build/esm/utils/debug.js", "../node_modules/@sentry/node-core/build/esm/integrations/local-variables/common.js", "../node_modules/@sentry/node-core/build/esm/integrations/local-variables/local-variables-sync.js", "../node_modules/@sentry/node-core/build/esm/integrations/local-variables/index.js", "../node_modules/@sentry/node-core/build/esm/integrations/modules.js", "../node_modules/@sentry/node-core/build/esm/utils/detection.js", "../node_modules/@sentry/node-core/build/esm/integrations/node-fetch/index.js", "../node_modules/@sentry/node-core/build/esm/integrations/onuncaughtexception.js", "../node_modules/@sentry/node-core/build/esm/utils/errorhandling.js", "../node_modules/@sentry/node-core/build/esm/integrations/onunhandledrejection.js", "../node_modules/@sentry/node-core/build/esm/integrations/processSession.js", "../node_modules/@sentry/node-core/build/esm/integrations/spotlight.js", "../node_modules/@sentry/node-core/build/esm/integrations/systemError.js", "../node_modules/@sentry/node-core/build/esm/transports/http.js", "../node_modules/@sentry/node-core/build/esm/proxy/index.js", "../node_modules/@sentry/node-core/build/esm/proxy/base.js", "../node_modules/@sentry/node-core/build/esm/proxy/parse-proxy-response.js", "../node_modules/@sentry/node-core/build/esm/utils/spotlight.js", "../node_modules/@sentry/node-core/build/esm/utils/module.js", "../node_modules/@sentry/node-core/build/esm/sdk/api.js", "../node_modules/@sentry/node-core/build/esm/sdk/client.js", "../node_modules/@sentry/node-core/build/esm/sdk/esmLoader.js", "../node_modules/@sentry/node-core/build/esm/sdk/index.js", "../node_modules/@sentry/node-core/build/esm/utils/addOriginToSpan.js", "../node_modules/@sentry/node-core/build/esm/utils/getRequestUrl.js", "../node_modules/@sentry/node/build/esm/integrations/node-fetch.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/express.js", "../node_modules/@sentry/node/build/esm/debug-build.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/v3/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/v3/enums/AttributeNames.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/v3/utils.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/v3/constants.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/graphql.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/kafka.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/lrumemoizer.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/mongo.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/mongoose.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/mysql.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/mysql2.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/redis.js", "../node_modules/@sentry/node/build/esm/utils/redisCache.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/postgres.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/postgresjs.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/prisma.js", "../node_modules/@prisma/instrumentation/dist/index.mjs", "../node_modules/@sentry/node/build/esm/integrations/tracing/hapi/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/hono/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/hono/constants.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/hono/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/koa.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/connect.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/tedious.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/genericPool.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/amqplib.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/vercelai/constants.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/vercelai/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/vercelai/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/openai/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/openai/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/anthropic-ai/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/anthropic-ai/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/google-genai/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/google-genai/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/langchain/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/langchain/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/langgraph/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/langgraph/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/firebase/otel/firebaseInstrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/firebase/otel/patches/firestore.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/firebase/otel/patches/functions.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/firebase/firebase.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/index.js", "../node_modules/@sentry/node/build/esm/sdk/initOtel.js", "../node_modules/@sentry/node/build/esm/sdk/index.js", "../src/telemetry.ts", "../src/options.ts", "../node_modules/universal-user-agent/index.js", "../node_modules/before-after-hook/lib/register.js", "../node_modules/before-after-hook/lib/add.js", "../node_modules/before-after-hook/lib/remove.js", "../node_modules/before-after-hook/index.js", "../node_modules/@octokit/endpoint/dist-bundle/index.js", "../node_modules/fast-content-type-parse/index.js", "../node_modules/json-with-bigint/json-with-bigint.js", "../node_modules/@octokit/request-error/dist-src/index.js", "../node_modules/@octokit/request/dist-bundle/index.js", "../node_modules/@octokit/graphql/dist-bundle/index.js", "../node_modules/@octokit/auth-token/dist-bundle/index.js", "../node_modules/@octokit/core/dist-src/version.js", "../node_modules/@octokit/core/dist-src/index.js", "../node_modules/@octokit/plugin-paginate-rest/dist-bundle/index.js", "../node_modules/@octokit/plugin-paginate-graphql/dist-bundle/index.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/version.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/generated/endpoints.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js", "../node_modules/@octokit/plugin-rest-endpoint-methods/dist-src/index.js", "../node_modules/@octokit/plugin-retry/dist-bundle/index.js", "../node_modules/@octokit/plugin-throttling/dist-bundle/index.js", "../node_modules/@octokit/oauth-authorization-url/dist-src/index.js", "../node_modules/@octokit/oauth-methods/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-device/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-user/dist-bundle/index.js", "../node_modules/@octokit/auth-oauth-app/dist-bundle/index.js", "../node_modules/universal-github-app-jwt/lib/utils.js", "../node_modules/universal-github-app-jwt/lib/crypto-node.js", "../node_modules/universal-github-app-jwt/lib/get-token.js", "../node_modules/universal-github-app-jwt/index.js", "../node_modules/toad-cache/dist/toad-cache.mjs", "../node_modules/@octokit/auth-app/dist-node/index.js", "../node_modules/@octokit/auth-unauthenticated/dist-node/index.js", "../node_modules/@octokit/oauth-app/dist-node/index.js", "../node_modules/@octokit/webhooks-methods/dist-node/index.js", "../node_modules/@octokit/webhooks/dist-bundle/index.js", "../node_modules/@octokit/app/dist-node/index.js", "../node_modules/octokit/dist-bundle/index.js", "../node_modules/@actions/tool-cache/lib/tool-cache.js", "../node_modules/@actions/tool-cache/lib/manifest.js", "../node_modules/@actions/tool-cache/lib/retry-helper.js", "../node_modules/@actions/github/lib/context.js", "../node_modules/@actions/github/lib/internal/utils.js", "../node_modules/@actions/github/lib/utils.js", "../node_modules/@actions/github/lib/github.js", "../src/releases.ts", "../src/install-apt.ts", "../src/install-shell.ts", "../src/install-msi.ts", "../src/install-pkg.ts", "../src/install-rpm.ts", "../src/main.ts", "../src/index.ts"], "sourcesContent": [ "'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n", "module.exports = {\n kClose: Symbol('close'),\n kDestroy: Symbol('destroy'),\n kDispatch: Symbol('dispatch'),\n kUrl: Symbol('url'),\n kWriting: Symbol('writing'),\n kResuming: Symbol('resuming'),\n kQueue: Symbol('queue'),\n kConnect: Symbol('connect'),\n kConnecting: Symbol('connecting'),\n kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n kKeepAlive: Symbol('keep alive'),\n kHeadersTimeout: Symbol('headers timeout'),\n kBodyTimeout: Symbol('body timeout'),\n kServerName: Symbol('server name'),\n kLocalAddress: Symbol('local address'),\n kHost: Symbol('host'),\n kNoRef: Symbol('no ref'),\n kBodyUsed: Symbol('used'),\n kBody: Symbol('abstracted request body'),\n kRunning: Symbol('running'),\n kBlocking: Symbol('blocking'),\n kPending: Symbol('pending'),\n kSize: Symbol('size'),\n kBusy: Symbol('busy'),\n kQueued: Symbol('queued'),\n kFree: Symbol('free'),\n kConnected: Symbol('connected'),\n kClosed: Symbol('closed'),\n kNeedDrain: Symbol('need drain'),\n kReset: Symbol('reset'),\n kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n kResume: Symbol('resume'),\n kOnError: Symbol('on error'),\n kMaxHeadersSize: Symbol('max headers size'),\n kRunningIdx: Symbol('running index'),\n kPendingIdx: Symbol('pending index'),\n kError: Symbol('error'),\n kClients: Symbol('clients'),\n kClient: Symbol('client'),\n kParser: Symbol('parser'),\n kOnDestroyed: Symbol('destroy callbacks'),\n kPipelining: Symbol('pipelining'),\n kSocket: Symbol('socket'),\n kHostHeader: Symbol('host header'),\n kConnector: Symbol('connector'),\n kStrictContentLength: Symbol('strict content length'),\n kMaxRedirections: Symbol('maxRedirections'),\n kMaxRequests: Symbol('maxRequestsPerClient'),\n kProxy: Symbol('proxy agent options'),\n kCounter: Symbol('socket request counter'),\n kInterceptors: Symbol('dispatch interceptors'),\n kMaxResponseSize: Symbol('max response size'),\n kHTTP2Session: Symbol('http2Session'),\n kHTTP2SessionState: Symbol('http2Session state'),\n kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n kConstruct: Symbol('constructable'),\n kListeners: Symbol('listeners'),\n kHTTPContext: Symbol('http context'),\n kMaxConcurrentStreams: Symbol('max concurrent streams'),\n kNoProxyAgent: Symbol('no proxy agent'),\n kHttpProxyAgent: Symbol('http proxy agent'),\n kHttpsProxyAgent: Symbol('https proxy agent')\n}\n", @@ -99,6 +99,391 @@ "'use strict'\nconst { Transform } = require('node:stream')\nconst { isASCIINumber, isValidLastEventId } = require('./util')\n\n/**\n * @type {number[]} BOM\n */\nconst BOM = [0xEF, 0xBB, 0xBF]\n/**\n * @type {10} LF\n */\nconst LF = 0x0A\n/**\n * @type {13} CR\n */\nconst CR = 0x0D\n/**\n * @type {58} COLON\n */\nconst COLON = 0x3A\n/**\n * @type {32} SPACE\n */\nconst SPACE = 0x20\n\n/**\n * @typedef {object} EventSourceStreamEvent\n * @type {object}\n * @property {string} [event] The event type.\n * @property {string} [data] The data of the message.\n * @property {string} [id] A unique ID for the event.\n * @property {string} [retry] The reconnection time, in milliseconds.\n */\n\n/**\n * @typedef eventSourceSettings\n * @type {object}\n * @property {string} lastEventId The last event ID received from the server.\n * @property {string} origin The origin of the event source.\n * @property {number} reconnectionTime The reconnection time, in milliseconds.\n */\n\nclass EventSourceStream extends Transform {\n /**\n * @type {eventSourceSettings}\n */\n state = null\n\n /**\n * Leading byte-order-mark check.\n * @type {boolean}\n */\n checkBOM = true\n\n /**\n * @type {boolean}\n */\n crlfCheck = false\n\n /**\n * @type {boolean}\n */\n eventEndCheck = false\n\n /**\n * @type {Buffer}\n */\n buffer = null\n\n pos = 0\n\n event = {\n data: undefined,\n event: undefined,\n id: undefined,\n retry: undefined\n }\n\n /**\n * @param {object} options\n * @param {eventSourceSettings} options.eventSourceSettings\n * @param {Function} [options.push]\n */\n constructor (options = {}) {\n // Enable object mode as EventSourceStream emits objects of shape\n // EventSourceStreamEvent\n options.readableObjectMode = true\n\n super(options)\n\n this.state = options.eventSourceSettings || {}\n if (options.push) {\n this.push = options.push\n }\n }\n\n /**\n * @param {Buffer} chunk\n * @param {string} _encoding\n * @param {Function} callback\n * @returns {void}\n */\n _transform (chunk, _encoding, callback) {\n if (chunk.length === 0) {\n callback()\n return\n }\n\n // Cache the chunk in the buffer, as the data might not be complete while\n // processing it\n // TODO: Investigate if there is a more performant way to handle\n // incoming chunks\n // see: https://github.com/nodejs/undici/issues/2630\n if (this.buffer) {\n this.buffer = Buffer.concat([this.buffer, chunk])\n } else {\n this.buffer = chunk\n }\n\n // Strip leading byte-order-mark if we opened the stream and started\n // the processing of the incoming data\n if (this.checkBOM) {\n switch (this.buffer.length) {\n case 1:\n // Check if the first byte is the same as the first byte of the BOM\n if (this.buffer[0] === BOM[0]) {\n // If it is, we need to wait for more data\n callback()\n return\n }\n // Set the checkBOM flag to false as we don't need to check for the\n // BOM anymore\n this.checkBOM = false\n\n // The buffer only contains one byte so we need to wait for more data\n callback()\n return\n case 2:\n // Check if the first two bytes are the same as the first two bytes\n // of the BOM\n if (\n this.buffer[0] === BOM[0] &&\n this.buffer[1] === BOM[1]\n ) {\n // If it is, we need to wait for more data, because the third byte\n // is needed to determine if it is the BOM or not\n callback()\n return\n }\n\n // Set the checkBOM flag to false as we don't need to check for the\n // BOM anymore\n this.checkBOM = false\n break\n case 3:\n // Check if the first three bytes are the same as the first three\n // bytes of the BOM\n if (\n this.buffer[0] === BOM[0] &&\n this.buffer[1] === BOM[1] &&\n this.buffer[2] === BOM[2]\n ) {\n // If it is, we can drop the buffered data, as it is only the BOM\n this.buffer = Buffer.alloc(0)\n // Set the checkBOM flag to false as we don't need to check for the\n // BOM anymore\n this.checkBOM = false\n\n // Await more data\n callback()\n return\n }\n // If it is not the BOM, we can start processing the data\n this.checkBOM = false\n break\n default:\n // The buffer is longer than 3 bytes, so we can drop the BOM if it is\n // present\n if (\n this.buffer[0] === BOM[0] &&\n this.buffer[1] === BOM[1] &&\n this.buffer[2] === BOM[2]\n ) {\n // Remove the BOM from the buffer\n this.buffer = this.buffer.subarray(3)\n }\n\n // Set the checkBOM flag to false as we don't need to check for the\n this.checkBOM = false\n break\n }\n }\n\n while (this.pos < this.buffer.length) {\n // If the previous line ended with an end-of-line, we need to check\n // if the next character is also an end-of-line.\n if (this.eventEndCheck) {\n // If the the current character is an end-of-line, then the event\n // is finished and we can process it\n\n // If the previous line ended with a carriage return, we need to\n // check if the current character is a line feed and remove it\n // from the buffer.\n if (this.crlfCheck) {\n // If the current character is a line feed, we can remove it\n // from the buffer and reset the crlfCheck flag\n if (this.buffer[this.pos] === LF) {\n this.buffer = this.buffer.subarray(this.pos + 1)\n this.pos = 0\n this.crlfCheck = false\n\n // It is possible that the line feed is not the end of the\n // event. We need to check if the next character is an\n // end-of-line character to determine if the event is\n // finished. We simply continue the loop to check the next\n // character.\n\n // As we removed the line feed from the buffer and set the\n // crlfCheck flag to false, we basically don't make any\n // distinction between a line feed and a carriage return.\n continue\n }\n this.crlfCheck = false\n }\n\n if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {\n // If the current character is a carriage return, we need to\n // set the crlfCheck flag to true, as we need to check if the\n // next character is a line feed so we can remove it from the\n // buffer\n if (this.buffer[this.pos] === CR) {\n this.crlfCheck = true\n }\n\n this.buffer = this.buffer.subarray(this.pos + 1)\n this.pos = 0\n if (\n this.event.data !== undefined || this.event.event || this.event.id || this.event.retry) {\n this.processEvent(this.event)\n }\n this.clearEvent()\n continue\n }\n // If the current character is not an end-of-line, then the event\n // is not finished and we have to reset the eventEndCheck flag\n this.eventEndCheck = false\n continue\n }\n\n // If the current character is an end-of-line, we can process the\n // line\n if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {\n // If the current character is a carriage return, we need to\n // set the crlfCheck flag to true, as we need to check if the\n // next character is a line feed\n if (this.buffer[this.pos] === CR) {\n this.crlfCheck = true\n }\n\n // In any case, we can process the line as we reached an\n // end-of-line character\n this.parseLine(this.buffer.subarray(0, this.pos), this.event)\n\n // Remove the processed line from the buffer\n this.buffer = this.buffer.subarray(this.pos + 1)\n // Reset the position as we removed the processed line from the buffer\n this.pos = 0\n // A line was processed and this could be the end of the event. We need\n // to check if the next line is empty to determine if the event is\n // finished.\n this.eventEndCheck = true\n continue\n }\n\n this.pos++\n }\n\n callback()\n }\n\n /**\n * @param {Buffer} line\n * @param {EventStreamEvent} event\n */\n parseLine (line, event) {\n // If the line is empty (a blank line)\n // Dispatch the event, as defined below.\n // This will be handled in the _transform method\n if (line.length === 0) {\n return\n }\n\n // If the line starts with a U+003A COLON character (:)\n // Ignore the line.\n const colonPosition = line.indexOf(COLON)\n if (colonPosition === 0) {\n return\n }\n\n let field = ''\n let value = ''\n\n // If the line contains a U+003A COLON character (:)\n if (colonPosition !== -1) {\n // Collect the characters on the line before the first U+003A COLON\n // character (:), and let field be that string.\n // TODO: Investigate if there is a more performant way to extract the\n // field\n // see: https://github.com/nodejs/undici/issues/2630\n field = line.subarray(0, colonPosition).toString('utf8')\n\n // Collect the characters on the line after the first U+003A COLON\n // character (:), and let value be that string.\n // If value starts with a U+0020 SPACE character, remove it from value.\n let valueStart = colonPosition + 1\n if (line[valueStart] === SPACE) {\n ++valueStart\n }\n // TODO: Investigate if there is a more performant way to extract the\n // value\n // see: https://github.com/nodejs/undici/issues/2630\n value = line.subarray(valueStart).toString('utf8')\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON\n // character (:)\n } else {\n // Process the field using the steps described below, using the whole\n // line as the field name, and the empty string as the field value.\n field = line.toString('utf8')\n value = ''\n }\n\n // Modify the event with the field name and value. The value is also\n // decoded as UTF-8\n switch (field) {\n case 'data':\n if (event[field] === undefined) {\n event[field] = value\n } else {\n event[field] += `\\n${value}`\n }\n break\n case 'retry':\n if (isASCIINumber(value)) {\n event[field] = value\n }\n break\n case 'id':\n if (isValidLastEventId(value)) {\n event[field] = value\n }\n break\n case 'event':\n if (value.length > 0) {\n event[field] = value\n }\n break\n }\n }\n\n /**\n * @param {EventSourceStreamEvent} event\n */\n processEvent (event) {\n if (event.retry && isASCIINumber(event.retry)) {\n this.state.reconnectionTime = parseInt(event.retry, 10)\n }\n\n if (event.id && isValidLastEventId(event.id)) {\n this.state.lastEventId = event.id\n }\n\n // only dispatch event, when data is provided\n if (event.data !== undefined) {\n this.push({\n type: event.event || 'message',\n options: {\n data: event.data,\n lastEventId: this.state.lastEventId,\n origin: this.state.origin\n }\n })\n }\n }\n\n clearEvent () {\n this.event = {\n data: undefined,\n event: undefined,\n id: undefined,\n retry: undefined\n }\n }\n}\n\nmodule.exports = {\n EventSourceStream\n}\n", "'use strict'\n\nconst { pipeline } = require('node:stream')\nconst { fetching } = require('../fetch')\nconst { makeRequest } = require('../fetch/request')\nconst { webidl } = require('../fetch/webidl')\nconst { EventSourceStream } = require('./eventsource-stream')\nconst { parseMIMEType } = require('../fetch/data-url')\nconst { createFastMessageEvent } = require('../websocket/events')\nconst { isNetworkError } = require('../fetch/response')\nconst { delay } = require('./util')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { environmentSettingsObject } = require('../fetch/util')\n\nlet experimentalWarned = false\n\n/**\n * A reconnection time, in milliseconds. This must initially be an implementation-defined value,\n * probably in the region of a few seconds.\n *\n * In Comparison:\n * - Chrome uses 3000ms.\n * - Deno uses 5000ms.\n *\n * @type {3000}\n */\nconst defaultReconnectionTime = 3000\n\n/**\n * The readyState attribute represents the state of the connection.\n * @enum\n * @readonly\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsource-readystate-dev\n */\n\n/**\n * The connection has not yet been established, or it was closed and the user\n * agent is reconnecting.\n * @type {0}\n */\nconst CONNECTING = 0\n\n/**\n * The user agent has an open connection and is dispatching events as it\n * receives them.\n * @type {1}\n */\nconst OPEN = 1\n\n/**\n * The connection is not open, and the user agent is not trying to reconnect.\n * @type {2}\n */\nconst CLOSED = 2\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"same-origin\".\n * @type {'anonymous'}\n */\nconst ANONYMOUS = 'anonymous'\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"include\".\n * @type {'use-credentials'}\n */\nconst USE_CREDENTIALS = 'use-credentials'\n\n/**\n * The EventSource interface is used to receive server-sent events. It\n * connects to a server over HTTP and receives events in text/event-stream\n * format without closing the connection.\n * @extends {EventTarget}\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events\n * @api public\n */\nclass EventSource extends EventTarget {\n #events = {\n open: null,\n error: null,\n message: null\n }\n\n #url = null\n #withCredentials = false\n\n #readyState = CONNECTING\n\n #request = null\n #controller = null\n\n #dispatcher\n\n /**\n * @type {import('./eventsource-stream').eventSourceSettings}\n */\n #state\n\n /**\n * Creates a new EventSource object.\n * @param {string} url\n * @param {EventSourceInit} [eventSourceInitDict]\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface\n */\n constructor (url, eventSourceInitDict = {}) {\n // 1. Let ev be a new EventSource object.\n super()\n\n webidl.util.markAsUncloneable(this)\n\n const prefix = 'EventSource constructor'\n webidl.argumentLengthCheck(arguments, 1, prefix)\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('EventSource is experimental, expect them to change at any time.', {\n code: 'UNDICI-ES'\n })\n }\n\n url = webidl.converters.USVString(url, prefix, 'url')\n eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict')\n\n this.#dispatcher = eventSourceInitDict.dispatcher\n this.#state = {\n lastEventId: '',\n reconnectionTime: defaultReconnectionTime\n }\n\n // 2. Let settings be ev's relevant settings object.\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n const settings = environmentSettingsObject\n\n let urlRecord\n\n try {\n // 3. Let urlRecord be the result of encoding-parsing a URL given url, relative to settings.\n urlRecord = new URL(url, settings.settingsObject.baseUrl)\n this.#state.origin = urlRecord.origin\n } catch (e) {\n // 4. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 5. Set ev's url to urlRecord.\n this.#url = urlRecord.href\n\n // 6. Let corsAttributeState be Anonymous.\n let corsAttributeState = ANONYMOUS\n\n // 7. If the value of eventSourceInitDict's withCredentials member is true,\n // then set corsAttributeState to Use Credentials and set ev's\n // withCredentials attribute to true.\n if (eventSourceInitDict.withCredentials) {\n corsAttributeState = USE_CREDENTIALS\n this.#withCredentials = true\n }\n\n // 8. Let request be the result of creating a potential-CORS request given\n // urlRecord, the empty string, and corsAttributeState.\n const initRequest = {\n redirect: 'follow',\n keepalive: true,\n // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes\n mode: 'cors',\n credentials: corsAttributeState === 'anonymous'\n ? 'same-origin'\n : 'omit',\n referrer: 'no-referrer'\n }\n\n // 9. Set request's client to settings.\n initRequest.client = environmentSettingsObject.settingsObject\n\n // 10. User agents may set (`Accept`, `text/event-stream`) in request's header list.\n initRequest.headersList = [['accept', { name: 'accept', value: 'text/event-stream' }]]\n\n // 11. Set request's cache mode to \"no-store\".\n initRequest.cache = 'no-store'\n\n // 12. Set request's initiator type to \"other\".\n initRequest.initiator = 'other'\n\n initRequest.urlList = [new URL(this.#url)]\n\n // 13. Set ev's request to request.\n this.#request = makeRequest(initRequest)\n\n this.#connect()\n }\n\n /**\n * Returns the state of this EventSource object's connection. It can have the\n * values described below.\n * @returns {0|1|2}\n * @readonly\n */\n get readyState () {\n return this.#readyState\n }\n\n /**\n * Returns the URL providing the event stream.\n * @readonly\n * @returns {string}\n */\n get url () {\n return this.#url\n }\n\n /**\n * Returns a boolean indicating whether the EventSource object was\n * instantiated with CORS credentials set (true), or not (false, the default).\n */\n get withCredentials () {\n return this.#withCredentials\n }\n\n #connect () {\n if (this.#readyState === CLOSED) return\n\n this.#readyState = CONNECTING\n\n const fetchParams = {\n request: this.#request,\n dispatcher: this.#dispatcher\n }\n\n // 14. Let processEventSourceEndOfBody given response res be the following step: if res is not a network error, then reestablish the connection.\n const processEventSourceEndOfBody = (response) => {\n if (isNetworkError(response)) {\n this.dispatchEvent(new Event('error'))\n this.close()\n }\n\n this.#reconnect()\n }\n\n // 15. Fetch request, with processResponseEndOfBody set to processEventSourceEndOfBody...\n fetchParams.processResponseEndOfBody = processEventSourceEndOfBody\n\n // and processResponse set to the following steps given response res:\n fetchParams.processResponse = (response) => {\n // 1. If res is an aborted network error, then fail the connection.\n\n if (isNetworkError(response)) {\n // 1. When a user agent is to fail the connection, the user agent\n // must queue a task which, if the readyState attribute is set to a\n // value other than CLOSED, sets the readyState attribute to CLOSED\n // and fires an event named error at the EventSource object. Once the\n // user agent has failed the connection, it does not attempt to\n // reconnect.\n if (response.aborted) {\n this.close()\n this.dispatchEvent(new Event('error'))\n return\n // 2. Otherwise, if res is a network error, then reestablish the\n // connection, unless the user agent knows that to be futile, in\n // which case the user agent may fail the connection.\n } else {\n this.#reconnect()\n return\n }\n }\n\n // 3. Otherwise, if res's status is not 200, or if res's `Content-Type`\n // is not `text/event-stream`, then fail the connection.\n const contentType = response.headersList.get('content-type', true)\n const mimeType = contentType !== null ? parseMIMEType(contentType) : 'failure'\n const contentTypeValid = mimeType !== 'failure' && mimeType.essence === 'text/event-stream'\n if (\n response.status !== 200 ||\n contentTypeValid === false\n ) {\n this.close()\n this.dispatchEvent(new Event('error'))\n return\n }\n\n // 4. Otherwise, announce the connection and interpret res's body\n // line by line.\n\n // When a user agent is to announce the connection, the user agent\n // must queue a task which, if the readyState attribute is set to a\n // value other than CLOSED, sets the readyState attribute to OPEN\n // and fires an event named open at the EventSource object.\n // @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n this.#readyState = OPEN\n this.dispatchEvent(new Event('open'))\n\n // If redirected to a different origin, set the origin to the new origin.\n this.#state.origin = response.urlList[response.urlList.length - 1].origin\n\n const eventSourceStream = new EventSourceStream({\n eventSourceSettings: this.#state,\n push: (event) => {\n this.dispatchEvent(createFastMessageEvent(\n event.type,\n event.options\n ))\n }\n })\n\n pipeline(response.body.stream,\n eventSourceStream,\n (error) => {\n if (\n error?.aborted === false\n ) {\n this.close()\n this.dispatchEvent(new Event('error'))\n }\n })\n }\n\n this.#controller = fetching(fetchParams)\n }\n\n /**\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n * @returns {Promise}\n */\n async #reconnect () {\n // When a user agent is to reestablish the connection, the user agent must\n // run the following steps. These steps are run in parallel, not as part of\n // a task. (The tasks that it queues, of course, are run like normal tasks\n // and not themselves in parallel.)\n\n // 1. Queue a task to run the following steps:\n\n // 1. If the readyState attribute is set to CLOSED, abort the task.\n if (this.#readyState === CLOSED) return\n\n // 2. Set the readyState attribute to CONNECTING.\n this.#readyState = CONNECTING\n\n // 3. Fire an event named error at the EventSource object.\n this.dispatchEvent(new Event('error'))\n\n // 2. Wait a delay equal to the reconnection time of the event source.\n await delay(this.#state.reconnectionTime)\n\n // 5. Queue a task to run the following steps:\n\n // 1. If the EventSource object's readyState attribute is not set to\n // CONNECTING, then return.\n if (this.#readyState !== CONNECTING) return\n\n // 2. Let request be the EventSource object's request.\n // 3. If the EventSource object's last event ID string is not the empty\n // string, then:\n // 1. Let lastEventIDValue be the EventSource object's last event ID\n // string, encoded as UTF-8.\n // 2. Set (`Last-Event-ID`, lastEventIDValue) in request's header\n // list.\n if (this.#state.lastEventId.length) {\n this.#request.headersList.set('last-event-id', this.#state.lastEventId, true)\n }\n\n // 4. Fetch request and process the response obtained in this fashion, if any, as described earlier in this section.\n this.#connect()\n }\n\n /**\n * Closes the connection, if any, and sets the readyState attribute to\n * CLOSED.\n */\n close () {\n webidl.brandCheck(this, EventSource)\n\n if (this.#readyState === CLOSED) return\n this.#readyState = CLOSED\n this.#controller.abort()\n this.#request = null\n }\n\n get onopen () {\n return this.#events.open\n }\n\n set onopen (fn) {\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onmessage () {\n return this.#events.message\n }\n\n set onmessage (fn) {\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get onerror () {\n return this.#events.error\n }\n\n set onerror (fn) {\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n}\n\nconst constantsPropertyDescriptors = {\n CONNECTING: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: CONNECTING,\n writable: false\n },\n OPEN: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: OPEN,\n writable: false\n },\n CLOSED: {\n __proto__: null,\n configurable: false,\n enumerable: true,\n value: CLOSED,\n writable: false\n }\n}\n\nObject.defineProperties(EventSource, constantsPropertyDescriptors)\nObject.defineProperties(EventSource.prototype, constantsPropertyDescriptors)\n\nObject.defineProperties(EventSource.prototype, {\n close: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n onopen: kEnumerableProperty,\n readyState: kEnumerableProperty,\n url: kEnumerableProperty,\n withCredentials: kEnumerableProperty\n})\n\nwebidl.converters.EventSourceInitDict = webidl.dictionaryConverter([\n {\n key: 'withCredentials',\n converter: webidl.converters.boolean,\n defaultValue: () => false\n },\n {\n key: 'dispatcher', // undici only\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n EventSource,\n defaultReconnectionTime\n}\n", "'use strict'\n\nconst Client = require('./lib/dispatcher/client')\nconst Dispatcher = require('./lib/dispatcher/dispatcher')\nconst Pool = require('./lib/dispatcher/pool')\nconst BalancedPool = require('./lib/dispatcher/balanced-pool')\nconst Agent = require('./lib/dispatcher/agent')\nconst ProxyAgent = require('./lib/dispatcher/proxy-agent')\nconst EnvHttpProxyAgent = require('./lib/dispatcher/env-http-proxy-agent')\nconst RetryAgent = require('./lib/dispatcher/retry-agent')\nconst errors = require('./lib/core/errors')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst RetryHandler = require('./lib/handler/retry-handler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/decorator-handler')\nconst RedirectHandler = require('./lib/handler/redirect-handler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirect-interceptor')\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.EnvHttpProxyAgent = EnvHttpProxyAgent\nmodule.exports.RetryAgent = RetryAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\nmodule.exports.interceptors = {\n redirect: require('./lib/interceptor/redirect'),\n retry: require('./lib/interceptor/retry'),\n dump: require('./lib/interceptor/dump'),\n dns: require('./lib/interceptor/dns')\n}\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\nmodule.exports.util = {\n parseHeaders: util.parseHeaders,\n headerNameToString: util.headerNameToString\n}\n\nfunction makeDispatcher (fn) {\n return (url, opts, handler) => {\n if (typeof opts === 'function') {\n handler = opts\n opts = null\n }\n\n if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n throw new InvalidArgumentError('invalid url')\n }\n\n if (opts != null && typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (opts && opts.path != null) {\n if (typeof opts.path !== 'string') {\n throw new InvalidArgumentError('invalid opts.path')\n }\n\n let path = opts.path\n if (!opts.path.startsWith('/')) {\n path = `/${path}`\n }\n\n url = new URL(util.parseOrigin(url).origin + path)\n } else {\n if (!opts) {\n opts = typeof url === 'object' ? url : {}\n }\n\n url = util.parseURL(url)\n }\n\n const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n if (agent) {\n throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n }\n\n return fn.call(dispatcher, {\n ...opts,\n origin: url.origin,\n path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n method: opts.method || (opts.body ? 'PUT' : 'GET')\n }, handler)\n }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nconst fetchImpl = require('./lib/web/fetch').fetch\nmodule.exports.fetch = async function fetch (init, options = undefined) {\n try {\n return await fetchImpl(init, options)\n } catch (err) {\n if (err && typeof err === 'object') {\n Error.captureStackTrace(err)\n }\n\n throw err\n }\n}\nmodule.exports.Headers = require('./lib/web/fetch/headers').Headers\nmodule.exports.Response = require('./lib/web/fetch/response').Response\nmodule.exports.Request = require('./lib/web/fetch/request').Request\nmodule.exports.FormData = require('./lib/web/fetch/formdata').FormData\nmodule.exports.File = globalThis.File ?? require('node:buffer').File\nmodule.exports.FileReader = require('./lib/web/fileapi/filereader').FileReader\n\nconst { setGlobalOrigin, getGlobalOrigin } = require('./lib/web/fetch/global')\n\nmodule.exports.setGlobalOrigin = setGlobalOrigin\nmodule.exports.getGlobalOrigin = getGlobalOrigin\n\nconst { CacheStorage } = require('./lib/web/cache/cachestorage')\nconst { kConstruct } = require('./lib/web/cache/symbols')\n\n// Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n// in an older version of Node, it doesn't have any use without fetch.\nmodule.exports.caches = new CacheStorage(kConstruct)\n\nconst { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/web/cookies')\n\nmodule.exports.deleteCookie = deleteCookie\nmodule.exports.getCookies = getCookies\nmodule.exports.getSetCookies = getSetCookies\nmodule.exports.setCookie = setCookie\n\nconst { parseMIMEType, serializeAMimeType } = require('./lib/web/fetch/data-url')\n\nmodule.exports.parseMIMEType = parseMIMEType\nmodule.exports.serializeAMimeType = serializeAMimeType\n\nconst { CloseEvent, ErrorEvent, MessageEvent } = require('./lib/web/websocket/events')\nmodule.exports.WebSocket = require('./lib/web/websocket/websocket').WebSocket\nmodule.exports.CloseEvent = CloseEvent\nmodule.exports.ErrorEvent = ErrorEvent\nmodule.exports.MessageEvent = MessageEvent\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n\nconst { EventSource } = require('./lib/web/eventsource/eventsource')\n\nmodule.exports.EventSource = EventSource\n", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '1.9.1';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCompatible = exports._makeCompatibilityCheck = void 0;\nconst version_1 = require(\"../version\");\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nfunction _makeCompatibilityCheck(ownVersion) {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion) {\n return globalVersion === ownVersion;\n };\n }\n function _reject(v) {\n rejectedVersions.add(v);\n return false;\n }\n function _accept(v) {\n acceptedVersions.add(v);\n return true;\n }\n return function isCompatible(globalVersion) {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n const globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n if (ownVersionParsed.major === 0) {\n if (ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n }\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n };\n}\nexports._makeCompatibilityCheck = _makeCompatibilityCheck;\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);\n//# sourceMappingURL=semver.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;\nconst version_1 = require(\"../version\");\nconst semver_1 = require(\"./semver\");\nconst major = version_1.VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(`opentelemetry.js.api.${major}`);\nconst _global = (typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : {});\nfunction registerGlobal(type, instance, diag, allowOverride = false) {\n var _a;\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n version: version_1.VERSION,\n });\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${type}`);\n diag.error(err.stack || err.message);\n return false;\n }\n if (api.version !== version_1.VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(`@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${version_1.VERSION}`);\n diag.error(err.stack || err.message);\n return false;\n }\n api[type] = instance;\n diag.debug(`@opentelemetry/api: Registered a global for ${type} v${version_1.VERSION}.`);\n return true;\n}\nexports.registerGlobal = registerGlobal;\nfunction getGlobal(type) {\n var _a, _b;\n const globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n if (!globalVersion || !(0, semver_1.isCompatible)(globalVersion)) {\n return;\n }\n return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexports.getGlobal = getGlobal;\nfunction unregisterGlobal(type, diag) {\n diag.debug(`@opentelemetry/api: Unregistering a global for ${type} v${version_1.VERSION}.`);\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n if (api) {\n delete api[type];\n }\n}\nexports.unregisterGlobal = unregisterGlobal;\n//# sourceMappingURL=global-utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagComponentLogger = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nclass DiagComponentLogger {\n constructor(props) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n debug(...args) {\n return logProxy('debug', this._namespace, args);\n }\n error(...args) {\n return logProxy('error', this._namespace, args);\n }\n info(...args) {\n return logProxy('info', this._namespace, args);\n }\n warn(...args) {\n return logProxy('warn', this._namespace, args);\n }\n verbose(...args) {\n return logProxy('verbose', this._namespace, args);\n }\n}\nexports.DiagComponentLogger = DiagComponentLogger;\nfunction logProxy(funcName, namespace, args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n return logger[funcName](namespace, ...args);\n}\n//# sourceMappingURL=ComponentLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagLogLevel = void 0;\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nvar DiagLogLevel;\n(function (DiagLogLevel) {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n /** Identifies an error scenario */\n DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n /** Identifies a warning scenario */\n DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n /** General informational log message */\n DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n /** General debug log message */\n DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n /** Used to set the logging level to include all logging */\n DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLogLevelDiagLogger = void 0;\nconst types_1 = require(\"../types\");\nfunction createLogLevelDiagLogger(maxLevel, logger) {\n if (maxLevel < types_1.DiagLogLevel.NONE) {\n maxLevel = types_1.DiagLogLevel.NONE;\n }\n else if (maxLevel > types_1.DiagLogLevel.ALL) {\n maxLevel = types_1.DiagLogLevel.ALL;\n }\n // In case the logger is null or undefined\n logger = logger || {};\n function _filterFunc(funcName, theLevel) {\n const theFunc = logger[funcName];\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () { };\n }\n return {\n error: _filterFunc('error', types_1.DiagLogLevel.ERROR),\n warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),\n info: _filterFunc('info', types_1.DiagLogLevel.INFO),\n debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),\n };\n}\nexports.createLogLevelDiagLogger = createLogLevelDiagLogger;\n//# sourceMappingURL=logLevelLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagAPI = void 0;\nconst ComponentLogger_1 = require(\"../diag/ComponentLogger\");\nconst logLevelLogger_1 = require(\"../diag/internal/logLevelLogger\");\nconst types_1 = require(\"../diag/types\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n *\n * @since 1.0.0\n */\nclass DiagAPI {\n /** Get the singleton instance of the DiagAPI API */\n static instance() {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n return this._instance;\n }\n /**\n * Private internal constructor\n * @private\n */\n constructor() {\n function _logProxy(funcName) {\n return function (...args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger)\n return;\n return logger[funcName](...args);\n };\n }\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n // DiagAPI specific functions\n const setLogger = (logger, optionsOrLogLevel = { logLevel: types_1.DiagLogLevel.INFO }) => {\n var _a, _b, _c;\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n return false;\n }\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n const oldLogger = (0, global_utils_1.getGlobal)('diag');\n const newLogger = (0, logLevelLogger_1.createLogLevelDiagLogger)((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : types_1.DiagLogLevel.INFO, logger);\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(`Current logger will overwrite one already registered from ${stack}`);\n }\n return (0, global_utils_1.registerGlobal)('diag', newLogger, self, true);\n };\n self.setLogger = setLogger;\n self.disable = () => {\n (0, global_utils_1.unregisterGlobal)(API_NAME, self);\n };\n self.createComponentLogger = (options) => {\n return new ComponentLogger_1.DiagComponentLogger(options);\n };\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n}\nexports.DiagAPI = DiagAPI;\n//# sourceMappingURL=diag.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaggageImpl = void 0;\nclass BaggageImpl {\n constructor(entries) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n getEntry(key) {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n return Object.assign({}, entry);\n }\n getAllEntries() {\n return Array.from(this._entries.entries());\n }\n setEntry(key, entry) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n removeEntry(key) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n removeEntries(...keys) {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n clear() {\n return new BaggageImpl();\n }\n}\nexports.BaggageImpl = BaggageImpl;\n//# sourceMappingURL=baggage-impl.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataSymbol = void 0;\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n//# sourceMappingURL=symbol.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataFromString = exports.createBaggage = void 0;\nconst diag_1 = require(\"../api/diag\");\nconst baggage_impl_1 = require(\"./internal/baggage-impl\");\nconst symbol_1 = require(\"./internal/symbol\");\nconst diag = diag_1.DiagAPI.instance();\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nfunction createBaggage(entries = {}) {\n return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));\n}\nexports.createBaggage = createBaggage;\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n * @since 1.0.0\n */\nfunction baggageEntryMetadataFromString(str) {\n if (typeof str !== 'string') {\n diag.error(`Cannot create baggage metadata from unknown type: ${typeof str}`);\n str = '';\n }\n return {\n __TYPE__: symbol_1.baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\nexports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ROOT_CONTEXT = exports.createContextKey = void 0;\n/**\n * Get a key to uniquely identify a context value\n *\n * @since 1.0.0\n */\nfunction createContextKey(description) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\nexports.createContextKey = createContextKey;\nclass BaseContext {\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext) {\n // for minification\n const self = this;\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n self.getValue = (key) => self._currentContext.get(key);\n self.setValue = (key, value) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n self.deleteValue = (key) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n}\n/**\n * The root context is used as the default parent context when there is no active context\n *\n * @since 1.0.0\n */\nexports.ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagConsoleLogger = exports._originalConsoleMethods = void 0;\nconst consoleMap = [\n { n: 'error', c: 'error' },\n { n: 'warn', c: 'warn' },\n { n: 'info', c: 'info' },\n { n: 'debug', c: 'debug' },\n { n: 'verbose', c: 'trace' },\n];\n// Save original console methods at module load time, before any instrumentation\n// can wrap them. This ensures DiagConsoleLogger calls the unwrapped originals.\n// Exported for testing only — not part of the public API.\nexports._originalConsoleMethods = {};\nif (typeof console !== 'undefined') {\n const keys = [\n 'error',\n 'warn',\n 'info',\n 'debug',\n 'trace',\n 'log',\n ];\n for (const key of keys) {\n // eslint-disable-next-line no-console\n if (typeof console[key] === 'function') {\n // eslint-disable-next-line no-console\n exports._originalConsoleMethods[key] = console[key];\n }\n }\n}\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n *\n * @since 1.0.0\n */\nclass DiagConsoleLogger {\n constructor() {\n function _consoleFunc(funcName) {\n return function (...args) {\n // Prefer original (pre-instrumentation) methods saved at module load time.\n let theFunc = exports._originalConsoleMethods[funcName];\n // Some environments only expose the console when the F12 developer console is open\n if (typeof theFunc !== 'function') {\n theFunc = exports._originalConsoleMethods['log'];\n }\n // Fall back in case console was not available at module load time but became available later.\n if (typeof theFunc !== 'function' && console) {\n // eslint-disable-next-line no-console\n theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n }\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n };\n }\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n}\nexports.DiagConsoleLogger = DiagConsoleLogger;\n//# sourceMappingURL=consoleLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoopMeter = exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = exports.NOOP_OBSERVABLE_GAUGE_METRIC = exports.NOOP_OBSERVABLE_COUNTER_METRIC = exports.NOOP_UP_DOWN_COUNTER_METRIC = exports.NOOP_HISTOGRAM_METRIC = exports.NOOP_GAUGE_METRIC = exports.NOOP_COUNTER_METRIC = exports.NOOP_METER = exports.NoopObservableUpDownCounterMetric = exports.NoopObservableGaugeMetric = exports.NoopObservableCounterMetric = exports.NoopObservableMetric = exports.NoopHistogramMetric = exports.NoopGaugeMetric = exports.NoopUpDownCounterMetric = exports.NoopCounterMetric = exports.NoopMetric = exports.NoopMeter = void 0;\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nclass NoopMeter {\n constructor() { }\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name, _options) {\n return exports.NOOP_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name, _options) {\n return exports.NOOP_HISTOGRAM_METRIC;\n }\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name, _options) {\n return exports.NOOP_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name, _options) {\n return exports.NOOP_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(_name, _options) {\n return exports.NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(_callback, _observables) { }\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback) { }\n}\nexports.NoopMeter = NoopMeter;\nclass NoopMetric {\n}\nexports.NoopMetric = NoopMetric;\nclass NoopCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopCounterMetric = NoopCounterMetric;\nclass NoopUpDownCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopUpDownCounterMetric = NoopUpDownCounterMetric;\nclass NoopGaugeMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopGaugeMetric = NoopGaugeMetric;\nclass NoopHistogramMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopHistogramMetric = NoopHistogramMetric;\nclass NoopObservableMetric {\n addCallback(_callback) { }\n removeCallback(_callback) { }\n}\nexports.NoopObservableMetric = NoopObservableMetric;\nclass NoopObservableCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableCounterMetric = NoopObservableCounterMetric;\nclass NoopObservableGaugeMetric extends NoopObservableMetric {\n}\nexports.NoopObservableGaugeMetric = NoopObservableGaugeMetric;\nclass NoopObservableUpDownCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric;\nexports.NOOP_METER = new NoopMeter();\n// Synchronous instruments\nexports.NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexports.NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexports.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexports.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n// Asynchronous instruments\nexports.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexports.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric();\n/**\n * Create a no-op Meter\n *\n * @since 1.3.0\n */\nfunction createNoopMeter() {\n return exports.NOOP_METER;\n}\nexports.createNoopMeter = createNoopMeter;\n//# sourceMappingURL=NoopMeter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueType = void 0;\n/**\n * The Type of value. It describes how the data is reported.\n *\n * @since 1.3.0\n */\nvar ValueType;\n(function (ValueType) {\n ValueType[ValueType[\"INT\"] = 0] = \"INT\";\n ValueType[ValueType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n})(ValueType = exports.ValueType || (exports.ValueType = {}));\n//# sourceMappingURL=Metric.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;\n/**\n * @since 1.0.0\n */\nexports.defaultTextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\n/**\n * @since 1.0.0\n */\nexports.defaultTextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n carrier[key] = value;\n },\n};\n//# sourceMappingURL=TextMapPropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopContextManager = void 0;\nconst context_1 = require(\"./context\");\nclass NoopContextManager {\n active() {\n return context_1.ROOT_CONTEXT;\n }\n with(_context, fn, thisArg, ...args) {\n return fn.call(thisArg, ...args);\n }\n bind(_context, target) {\n return target;\n }\n enable() {\n return this;\n }\n disable() {\n return this;\n }\n}\nexports.NoopContextManager = NoopContextManager;\n//# sourceMappingURL=NoopContextManager.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextAPI = void 0;\nconst NoopContextManager_1 = require(\"../context/NoopContextManager\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n *\n * @since 1.0.0\n */\nclass ContextAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Context API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n return this._instance;\n }\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n setGlobalContextManager(contextManager) {\n return (0, global_utils_1.registerGlobal)(API_NAME, contextManager, diag_1.DiagAPI.instance());\n }\n /**\n * Get the currently active context\n */\n active() {\n return this._getContextManager().active();\n }\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with(context, fn, thisArg, ...args) {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n bind(context, target) {\n return this._getContextManager().bind(context, target);\n }\n _getContextManager() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n /** Disable and remove the global context manager */\n disable() {\n this._getContextManager().disable();\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.ContextAPI = ContextAPI;\n//# sourceMappingURL=context.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceFlags = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @since 1.0.0\n */\nvar TraceFlags;\n(function (TraceFlags) {\n /** Represents no flag set. */\n TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n /** Bit to represent whether trace is sampled in trace flags. */\n TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags = exports.TraceFlags || (exports.TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;\nconst trace_flags_1 = require(\"./trace_flags\");\n/**\n * @since 1.0.0\n */\nexports.INVALID_SPANID = '0000000000000000';\n/**\n * @since 1.0.0\n */\nexports.INVALID_TRACEID = '00000000000000000000000000000000';\n/**\n * @since 1.0.0\n */\nexports.INVALID_SPAN_CONTEXT = {\n traceId: exports.INVALID_TRACEID,\n spanId: exports.INVALID_SPANID,\n traceFlags: trace_flags_1.TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonRecordingSpan = void 0;\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nclass NonRecordingSpan {\n constructor(spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT) {\n this._spanContext = spanContext;\n }\n // Returns a SpanContext.\n spanContext() {\n return this._spanContext;\n }\n // By default does nothing\n setAttribute(_key, _value) {\n return this;\n }\n // By default does nothing\n setAttributes(_attributes) {\n return this;\n }\n // By default does nothing\n addEvent(_name, _attributes) {\n return this;\n }\n addLink(_link) {\n return this;\n }\n addLinks(_links) {\n return this;\n }\n // By default does nothing\n setStatus(_status) {\n return this;\n }\n // By default does nothing\n updateName(_name) {\n return this;\n }\n // By default does nothing\n end(_endTime) { }\n // isRecording always returns false for NonRecordingSpan.\n isRecording() {\n return false;\n }\n // By default does nothing\n recordException(_exception, _time) { }\n}\nexports.NonRecordingSpan = NonRecordingSpan;\n//# sourceMappingURL=NonRecordingSpan.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getActiveSpan = exports.getSpan = void 0;\nconst context_1 = require(\"../context/context\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst context_2 = require(\"../api/context\");\n/**\n * span key\n */\nconst SPAN_KEY = (0, context_1.createContextKey)('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nfunction getSpan(context) {\n return context.getValue(SPAN_KEY) || undefined;\n}\nexports.getSpan = getSpan;\n/**\n * Gets the span from the current context, if one exists.\n */\nfunction getActiveSpan() {\n return getSpan(context_2.ContextAPI.getInstance().active());\n}\nexports.getActiveSpan = getActiveSpan;\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nfunction setSpan(context, span) {\n return context.setValue(SPAN_KEY, span);\n}\nexports.setSpan = setSpan;\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nfunction deleteSpan(context) {\n return context.deleteValue(SPAN_KEY);\n}\nexports.deleteSpan = deleteSpan;\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nfunction setSpanContext(context, spanContext) {\n return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));\n}\nexports.setSpanContext = setSpanContext;\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nfunction getSpanContext(context) {\n var _a;\n return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\nexports.getSpanContext = getSpanContext;\n//# sourceMappingURL=context-utils.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\n// Valid characters (0-9, a-f, A-F) are marked as 1.\nconst isHex = new Uint8Array([\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,\n]);\nfunction isValidHex(id, length) {\n // As of 1.9.0 the id was allowed to be a non-string value,\n // even though it was not possible in the types.\n if (typeof id !== 'string' || id.length !== length)\n return false;\n let r = 0;\n for (let i = 0; i < id.length; i += 4) {\n r +=\n (isHex[id.charCodeAt(i)] | 0) +\n (isHex[id.charCodeAt(i + 1)] | 0) +\n (isHex[id.charCodeAt(i + 2)] | 0) +\n (isHex[id.charCodeAt(i + 3)] | 0);\n }\n return r === length;\n}\n/**\n * @since 1.0.0\n */\nfunction isValidTraceId(traceId) {\n return isValidHex(traceId, 32) && traceId !== invalid_span_constants_1.INVALID_TRACEID;\n}\nexports.isValidTraceId = isValidTraceId;\n/**\n * @since 1.0.0\n */\nfunction isValidSpanId(spanId) {\n return isValidHex(spanId, 16) && spanId !== invalid_span_constants_1.INVALID_SPANID;\n}\nexports.isValidSpanId = isValidSpanId;\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n *\n * @since 1.0.0\n */\nfunction isSpanContextValid(spanContext) {\n return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\nexports.isSpanContextValid = isSpanContextValid;\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nfunction wrapSpanContext(spanContext) {\n return new NonRecordingSpan_1.NonRecordingSpan(spanContext);\n}\nexports.wrapSpanContext = wrapSpanContext;\n//# sourceMappingURL=spancontext-utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracer = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst spancontext_utils_1 = require(\"./spancontext-utils\");\nconst contextApi = context_1.ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nclass NoopTracer {\n // startSpan starts a noop span.\n startSpan(name, options, context = contextApi.active()) {\n const root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n if (root) {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n const parentFromContext = context && (0, context_utils_1.getSpanContext)(context);\n if (isSpanContext(parentFromContext) &&\n (0, spancontext_utils_1.isSpanContextValid)(parentFromContext)) {\n return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);\n }\n else {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n }\n startActiveSpan(name, arg2, arg3, arg4) {\n let opts;\n let ctx;\n let fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n const parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = (0, context_utils_1.setSpan)(parentContext, span);\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\nexports.NoopTracer = NoopTracer;\nfunction isSpanContext(spanContext) {\n return (spanContext !== null &&\n typeof spanContext === 'object' &&\n 'spanId' in spanContext &&\n typeof spanContext['spanId'] === 'string' &&\n 'traceId' in spanContext &&\n typeof spanContext['traceId'] === 'string' &&\n 'traceFlags' in spanContext &&\n typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracer = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\nconst NOOP_TRACER = new NoopTracer_1.NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n *\n * @since 1.0.0\n */\nclass ProxyTracer {\n constructor(provider, name, version, options) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n startSpan(name, options, context) {\n return this._getTracer().startSpan(name, options, context);\n }\n startActiveSpan(_name, _options, _context, _fn) {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!tracer) {\n return NOOP_TRACER;\n }\n this._delegate = tracer;\n return this._delegate;\n }\n}\nexports.ProxyTracer = ProxyTracer;\n//# sourceMappingURL=ProxyTracer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracerProvider = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nclass NoopTracerProvider {\n getTracer(_name, _version, _options) {\n return new NoopTracer_1.NoopTracer();\n }\n}\nexports.NoopTracerProvider = NoopTracerProvider;\n//# sourceMappingURL=NoopTracerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracerProvider = void 0;\nconst ProxyTracer_1 = require(\"./ProxyTracer\");\nconst NoopTracerProvider_1 = require(\"./NoopTracerProvider\");\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n *\n * @deprecated This will be removed in the next major version.\n * @since 1.0.0\n */\nclass ProxyTracerProvider {\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name, version, options) {\n var _a;\n return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version, options));\n }\n getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n }\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate) {\n this._delegate = delegate;\n }\n getDelegateTracer(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n }\n}\nexports.ProxyTracerProvider = ProxyTracerProvider;\n//# sourceMappingURL=ProxyTracerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n *\n * @since 1.0.0\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=SamplingResult.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanKind = void 0;\n/**\n * @since 1.0.0\n */\nvar SpanKind;\n(function (SpanKind) {\n /** Default value. Indicates that the span is used internally. */\n SpanKind[SpanKind[\"INTERNAL\"] = 0] = \"INTERNAL\";\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SpanKind[SpanKind[\"SERVER\"] = 1] = \"SERVER\";\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n SpanKind[SpanKind[\"CLIENT\"] = 2] = \"CLIENT\";\n /**\n * Indicates that the span describes producer sending a message to a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"PRODUCER\"] = 3] = \"PRODUCER\";\n /**\n * Indicates that the span describes consumer receiving a message from a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"CONSUMER\"] = 4] = \"CONSUMER\";\n})(SpanKind = exports.SpanKind || (exports.SpanKind = {}));\n//# sourceMappingURL=span_kind.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanStatusCode = void 0;\n/**\n * An enumeration of status codes.\n *\n * @since 1.0.0\n */\nvar SpanStatusCode;\n(function (SpanStatusCode) {\n /**\n * The default status.\n */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /**\n * The operation contains an error.\n */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));\n//# sourceMappingURL=status.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=tracestate-validators.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceStateImpl = void 0;\nconst tracestate_validators_1 = require(\"./tracestate-validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceStateImpl {\n constructor(rawTraceState) {\n this._internalState = new Map();\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return (Array.from(this._internalState.keys())\n // Use reduceRight() because keys are stored in reverse insertion order.\n .reduceRight((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR));\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n // Use reduceRight() so new keys (.set(...)) will be placed at the beginning\n .reduceRight((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, tracestate_validators_1.validateKey)(key) && (0, tracestate_validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n // @ts-expect-error TS6133 Accessed in tests only.\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceStateImpl = TraceStateImpl;\n//# sourceMappingURL=tracestate-impl.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTraceState = void 0;\nconst tracestate_impl_1 = require(\"./tracestate-impl\");\n/**\n * @since 1.1.0\n */\nfunction createTraceState(rawTraceState) {\n return new tracestate_impl_1.TraceStateImpl(rawTraceState);\n}\nexports.createTraceState = createTraceState;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.context = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_1 = require(\"./api/context\");\n/**\n * Entrypoint for context API\n * @since 1.0.0\n */\nexports.context = context_1.ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diag = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst diag_1 = require(\"./api/diag\");\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n *\n * @since 1.0.0\n */\nexports.diag = diag_1.DiagAPI.instance();\n//# sourceMappingURL=diag-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0;\nconst NoopMeter_1 = require(\"./NoopMeter\");\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nclass NoopMeterProvider {\n getMeter(_name, _version, _options) {\n return NoopMeter_1.NOOP_METER;\n }\n}\nexports.NoopMeterProvider = NoopMeterProvider;\nexports.NOOP_METER_PROVIDER = new NoopMeterProvider();\n//# sourceMappingURL=NoopMeterProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsAPI = void 0;\nconst NoopMeterProvider_1 = require(\"../metrics/NoopMeterProvider\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'metrics';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nclass MetricsAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Metrics API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n setGlobalMeterProvider(provider) {\n return (0, global_utils_1.registerGlobal)(API_NAME, provider, diag_1.DiagAPI.instance());\n }\n /**\n * Returns the global meter provider.\n */\n getMeterProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NoopMeterProvider_1.NOOP_METER_PROVIDER;\n }\n /**\n * Returns a meter from the global meter provider.\n */\n getMeter(name, version, options) {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n /** Remove the global meter provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.MetricsAPI = MetricsAPI;\n//# sourceMappingURL=metrics.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.metrics = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst metrics_1 = require(\"./api/metrics\");\n/**\n * Entrypoint for metrics API\n *\n * @since 1.3.0\n */\nexports.metrics = metrics_1.MetricsAPI.getInstance();\n//# sourceMappingURL=metrics-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTextMapPropagator = void 0;\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nclass NoopTextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context, _carrier) { }\n /** Noop extract function does nothing and returns the input context */\n extract(context, _carrier) {\n return context;\n }\n fields() {\n return [];\n }\n}\nexports.NoopTextMapPropagator = NoopTextMapPropagator;\n//# sourceMappingURL=NoopTextMapPropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deleteBaggage = exports.setBaggage = exports.getActiveBaggage = exports.getBaggage = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_2 = require(\"../context/context\");\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = (0, context_2.createContextKey)('OpenTelemetry Baggage Key');\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getBaggage(context) {\n return context.getValue(BAGGAGE_KEY) || undefined;\n}\nexports.getBaggage = getBaggage;\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getActiveBaggage() {\n return getBaggage(context_1.ContextAPI.getInstance().active());\n}\nexports.getActiveBaggage = getActiveBaggage;\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nfunction setBaggage(context, baggage) {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\nexports.setBaggage = setBaggage;\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nfunction deleteBaggage(context) {\n return context.deleteValue(BAGGAGE_KEY);\n}\nexports.deleteBaggage = deleteBaggage;\n//# sourceMappingURL=context-helpers.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PropagationAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopTextMapPropagator_1 = require(\"../propagation/NoopTextMapPropagator\");\nconst TextMapPropagator_1 = require(\"../propagation/TextMapPropagator\");\nconst context_helpers_1 = require(\"../baggage/context-helpers\");\nconst utils_1 = require(\"../baggage/utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n *\n * @since 1.0.0\n */\nclass PropagationAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this.createBaggage = utils_1.createBaggage;\n this.getBaggage = context_helpers_1.getBaggage;\n this.getActiveBaggage = context_helpers_1.getActiveBaggage;\n this.setBaggage = context_helpers_1.setBaggage;\n this.deleteBaggage = context_helpers_1.deleteBaggage;\n }\n /** Get the singleton instance of the Propagator API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n return this._instance;\n }\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n setGlobalPropagator(propagator) {\n return (0, global_utils_1.registerGlobal)(API_NAME, propagator, diag_1.DiagAPI.instance());\n }\n /**\n * Inject context into a carrier to be propagated inter-process\n *\n * @param context Context carrying tracing data to inject\n * @param carrier carrier to inject context into\n * @param setter Function used to set values on the carrier\n */\n inject(context, carrier, setter = TextMapPropagator_1.defaultTextMapSetter) {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\n /**\n * Extract context from a carrier\n *\n * @param context Context which the newly created context will inherit from\n * @param carrier Carrier to extract context from\n * @param getter Function used to extract keys from a carrier\n */\n extract(context, carrier, getter = TextMapPropagator_1.defaultTextMapGetter) {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields() {\n return this._getGlobalPropagator().fields();\n }\n /** Remove the global propagator */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n _getGlobalPropagator() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\nexports.PropagationAPI = PropagationAPI;\n//# sourceMappingURL=propagation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propagation = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst propagation_1 = require(\"./api/propagation\");\n/**\n * Entrypoint for propagation API\n *\n * @since 1.0.0\n */\nexports.propagation = propagation_1.PropagationAPI.getInstance();\n//# sourceMappingURL=propagation-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst ProxyTracerProvider_1 = require(\"../trace/ProxyTracerProvider\");\nconst spancontext_utils_1 = require(\"../trace/spancontext-utils\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n *\n * @since 1.0.0\n */\nclass TraceAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;\n this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;\n this.deleteSpan = context_utils_1.deleteSpan;\n this.getSpan = context_utils_1.getSpan;\n this.getActiveSpan = context_utils_1.getActiveSpan;\n this.getSpanContext = context_utils_1.getSpanContext;\n this.setSpan = context_utils_1.setSpan;\n this.setSpanContext = context_utils_1.setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n setGlobalTracerProvider(provider) {\n const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n /**\n * Returns the global tracer provider.\n */\n getTracerProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;\n }\n /**\n * Returns a tracer from the global tracer provider.\n */\n getTracer(name, version) {\n return this.getTracerProvider().getTracer(name, version);\n }\n /** Remove the global tracer provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n }\n}\nexports.TraceAPI = TraceAPI;\n//# sourceMappingURL=trace.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst trace_1 = require(\"./api/trace\");\n/**\n * Entrypoint for trace API\n *\n * @since 1.0.0\n */\nexports.trace = trace_1.TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = exports.propagation = exports.metrics = exports.diag = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.createTraceState = exports.TraceFlags = exports.SpanStatusCode = exports.SpanKind = exports.SamplingDecision = exports.ProxyTracerProvider = exports.ProxyTracer = exports.defaultTextMapSetter = exports.defaultTextMapGetter = exports.ValueType = exports.createNoopMeter = exports.DiagLogLevel = exports.DiagConsoleLogger = exports.ROOT_CONTEXT = exports.createContextKey = exports.baggageEntryMetadataFromString = void 0;\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"baggageEntryMetadataFromString\", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });\n// Context APIs\nvar context_1 = require(\"./context/context\");\nObject.defineProperty(exports, \"createContextKey\", { enumerable: true, get: function () { return context_1.createContextKey; } });\nObject.defineProperty(exports, \"ROOT_CONTEXT\", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } });\n// Diag APIs\nvar consoleLogger_1 = require(\"./diag/consoleLogger\");\nObject.defineProperty(exports, \"DiagConsoleLogger\", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } });\nvar types_1 = require(\"./diag/types\");\nObject.defineProperty(exports, \"DiagLogLevel\", { enumerable: true, get: function () { return types_1.DiagLogLevel; } });\n// Metrics APIs\nvar NoopMeter_1 = require(\"./metrics/NoopMeter\");\nObject.defineProperty(exports, \"createNoopMeter\", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } });\nvar Metric_1 = require(\"./metrics/Metric\");\nObject.defineProperty(exports, \"ValueType\", { enumerable: true, get: function () { return Metric_1.ValueType; } });\n// Propagation APIs\nvar TextMapPropagator_1 = require(\"./propagation/TextMapPropagator\");\nObject.defineProperty(exports, \"defaultTextMapGetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } });\nObject.defineProperty(exports, \"defaultTextMapSetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } });\nvar ProxyTracer_1 = require(\"./trace/ProxyTracer\");\nObject.defineProperty(exports, \"ProxyTracer\", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } });\n// TODO: Remove ProxyTracerProvider export in the next major version.\nvar ProxyTracerProvider_1 = require(\"./trace/ProxyTracerProvider\");\nObject.defineProperty(exports, \"ProxyTracerProvider\", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } });\nvar SamplingResult_1 = require(\"./trace/SamplingResult\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } });\nvar span_kind_1 = require(\"./trace/span_kind\");\nObject.defineProperty(exports, \"SpanKind\", { enumerable: true, get: function () { return span_kind_1.SpanKind; } });\nvar status_1 = require(\"./trace/status\");\nObject.defineProperty(exports, \"SpanStatusCode\", { enumerable: true, get: function () { return status_1.SpanStatusCode; } });\nvar trace_flags_1 = require(\"./trace/trace_flags\");\nObject.defineProperty(exports, \"TraceFlags\", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } });\nvar utils_2 = require(\"./trace/internal/utils\");\nObject.defineProperty(exports, \"createTraceState\", { enumerable: true, get: function () { return utils_2.createTraceState; } });\nvar spancontext_utils_1 = require(\"./trace/spancontext-utils\");\nObject.defineProperty(exports, \"isSpanContextValid\", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });\nObject.defineProperty(exports, \"isValidTraceId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });\nObject.defineProperty(exports, \"isValidSpanId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });\nvar invalid_span_constants_1 = require(\"./trace/invalid-span-constants\");\nObject.defineProperty(exports, \"INVALID_SPANID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });\nObject.defineProperty(exports, \"INVALID_TRACEID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });\nObject.defineProperty(exports, \"INVALID_SPAN_CONTEXT\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_api_1 = require(\"./context-api\");\nObject.defineProperty(exports, \"context\", { enumerable: true, get: function () { return context_api_1.context; } });\nconst diag_api_1 = require(\"./diag-api\");\nObject.defineProperty(exports, \"diag\", { enumerable: true, get: function () { return diag_api_1.diag; } });\nconst metrics_api_1 = require(\"./metrics-api\");\nObject.defineProperty(exports, \"metrics\", { enumerable: true, get: function () { return metrics_api_1.metrics; } });\nconst propagation_api_1 = require(\"./propagation-api\");\nObject.defineProperty(exports, \"propagation\", { enumerable: true, get: function () { return propagation_api_1.propagation; } });\nconst trace_api_1 = require(\"./trace-api\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return trace_api_1.trace; } });\n// Default export.\nexports.default = {\n context: context_api_1.context,\n diag: diag_api_1.diag,\n metrics: metrics_api_1.metrics,\n propagation: propagation_api_1.propagation,\n trace: trace_api_1.trace,\n};\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracingSuppressed = exports.unsuppressTracing = exports.suppressTracing = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst SUPPRESS_TRACING_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key SUPPRESS_TRACING');\nfunction suppressTracing(context) {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\nexports.suppressTracing = suppressTracing;\nfunction unsuppressTracing(context) {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\nexports.unsuppressTracing = unsuppressTracing;\nfunction isTracingSuppressed(context) {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\nexports.isTracingSuppressed = isTracingSuppressed;\n//# sourceMappingURL=suppress-tracing.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BAGGAGE_MAX_TOTAL_LENGTH = exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = exports.BAGGAGE_HEADER = exports.BAGGAGE_ITEMS_SEPARATOR = exports.BAGGAGE_PROPERTIES_SEPARATOR = exports.BAGGAGE_KEY_PAIR_SEPARATOR = void 0;\nexports.BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexports.BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexports.BAGGAGE_ITEMS_SEPARATOR = ',';\n// Name of the http header used to propagate the baggage\nexports.BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n//# sourceMappingURL=constants.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseKeyPairsIntoRecord = exports.parsePairKeyValue = exports.getKeyPairs = exports.serializeKeyPairs = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst constants_1 = require(\"./constants\");\nfunction serializeKeyPairs(keyPairs) {\n return keyPairs.reduce((hValue, current) => {\n const value = `${hValue}${hValue !== '' ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ''}${current}`;\n return value.length > constants_1.BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\nexports.serializeKeyPairs = serializeKeyPairs;\nfunction getKeyPairs(baggage) {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += constants_1.BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n return entry;\n });\n}\nexports.getKeyPairs = getKeyPairs;\nfunction parsePairKeyValue(entry) {\n if (!entry)\n return;\n const metadataSeparatorIndex = entry.indexOf(constants_1.BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart = metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n const separatorIndex = keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0)\n return;\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n if (!rawKey || !rawValue)\n return;\n let key;\n let value;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n }\n catch {\n return;\n }\n let metadata;\n if (metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = (0, api_1.baggageEntryMetadataFromString)(metadataString);\n }\n return { key, value, metadata };\n}\nexports.parsePairKeyValue = parsePairKeyValue;\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nfunction parseKeyPairsIntoRecord(value) {\n const result = {};\n if (typeof value === 'string' && value.length > 0) {\n value.split(constants_1.BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n return result;\n}\nexports.parseKeyPairsIntoRecord = parseKeyPairsIntoRecord;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CBaggagePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../../trace/suppress-tracing\");\nconst constants_1 = require(\"../constants\");\nconst utils_1 = require(\"../utils\");\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nclass W3CBaggagePropagator {\n inject(context, carrier, setter) {\n const baggage = api_1.propagation.getBaggage(context);\n if (!baggage || (0, suppress_tracing_1.isTracingSuppressed)(context))\n return;\n const keyPairs = (0, utils_1.getKeyPairs)(baggage)\n .filter((pair) => {\n return pair.length <= constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = (0, utils_1.serializeKeyPairs)(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, constants_1.BAGGAGE_HEADER, headerValue);\n }\n }\n extract(context, carrier, getter) {\n const headerValue = getter.get(carrier, constants_1.BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString)\n return context;\n const baggage = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(constants_1.BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = (0, utils_1.parsePairKeyValue)(entry);\n if (keyPair) {\n const baggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return api_1.propagation.setBaggage(context, api_1.propagation.createBaggage(baggage));\n }\n fields() {\n return [constants_1.BAGGAGE_HEADER];\n }\n}\nexports.W3CBaggagePropagator = W3CBaggagePropagator;\n//# sourceMappingURL=W3CBaggagePropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnchoredClock = void 0;\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nclass AnchoredClock {\n _monotonicClock;\n _epochMillis;\n _performanceMillis;\n /**\n * Create a new AnchoredClock anchored to the current time returned by systemClock.\n *\n * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n */\n constructor(systemClock, monotonicClock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\n /**\n * Returns the current time by adding the number of milliseconds since the\n * AnchoredClock was created to the creation epoch time\n */\n now() {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\nexports.AnchoredClock = AnchoredClock;\n//# sourceMappingURL=anchored-clock.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAttributeValue = exports.isAttributeKey = exports.sanitizeAttributes = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nfunction sanitizeAttributes(attributes) {\n const out = {};\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n api_1.diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = attributes[key];\n if (!isAttributeValue(val)) {\n api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n }\n else {\n out[key] = val;\n }\n }\n return out;\n}\nexports.sanitizeAttributes = sanitizeAttributes;\nfunction isAttributeKey(key) {\n return typeof key === 'string' && key !== '';\n}\nexports.isAttributeKey = isAttributeKey;\nfunction isAttributeValue(val) {\n if (val == null) {\n return true;\n }\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n return isValidPrimitiveAttributeValueType(typeof val);\n}\nexports.isAttributeValue = isAttributeValue;\nfunction isHomogeneousAttributeValueArray(arr) {\n let type;\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null)\n continue;\n const elementType = typeof element;\n if (elementType === type) {\n continue;\n }\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n return false;\n }\n return true;\n}\nfunction isValidPrimitiveAttributeValueType(valType) {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n return false;\n}\n//# sourceMappingURL=attributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loggingErrorHandler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nfunction loggingErrorHandler() {\n return (ex) => {\n api_1.diag.error(stringifyException(ex));\n };\n}\nexports.loggingErrorHandler = loggingErrorHandler;\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex) {\n if (typeof ex === 'string') {\n return ex;\n }\n else {\n return JSON.stringify(flattenException(ex));\n }\n}\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex) {\n const result = {};\n let current = ex;\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName])\n return;\n const value = current[propertyName];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n return result;\n}\n//# sourceMappingURL=logging-error-handler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalErrorHandler = exports.setGlobalErrorHandler = void 0;\nconst logging_error_handler_1 = require(\"./logging-error-handler\");\n/** The global error handler delegate */\nlet delegateHandler = (0, logging_error_handler_1.loggingErrorHandler)();\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nfunction setGlobalErrorHandler(handler) {\n delegateHandler = handler;\n}\nexports.setGlobalErrorHandler = setGlobalErrorHandler;\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nfunction globalErrorHandler(ex) {\n try {\n delegateHandler(ex);\n }\n catch { } // eslint-disable-line no-empty\n}\nexports.globalErrorHandler = globalErrorHandler;\n//# sourceMappingURL=global-error-handler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringListFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports.getNumberFromEnv = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst util_1 = require(\"util\");\n/**\n * Retrieves a number from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number.\n * - Returns a number in all other cases.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {number | undefined} - The number value or `undefined`.\n */\nfunction getNumberFromEnv(key) {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n const value = Number(raw);\n if (isNaN(value)) {\n api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected a number, using defaults`);\n return undefined;\n }\n return value;\n}\nexports.getNumberFromEnv = getNumberFromEnv;\n/**\n * Retrieves a string from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string | undefined} - The string value or `undefined`.\n */\nfunction getStringFromEnv(key) {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\nexports.getStringFromEnv = getStringFromEnv;\n/**\n * Retrieves a boolean value from an environment variable.\n * - Trims leading and trailing whitespace and ignores casing.\n * - Returns `false` if the environment variable is empty, unset, or contains only whitespace.\n * - Returns `false` for strings that cannot be mapped to a boolean.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace.\n */\nfunction getBooleanFromEnv(key) {\n const raw = process.env[key]?.trim().toLowerCase();\n if (raw == null || raw === '') {\n // NOTE: falling back to `false` instead of `undefined` as required by the specification.\n // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary\n // normalizations in the consuming code.\n return false;\n }\n if (raw === 'true') {\n return true;\n }\n else if (raw === 'false') {\n return false;\n }\n else {\n api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`);\n return false;\n }\n}\nexports.getBooleanFromEnv = getBooleanFromEnv;\n/**\n * Retrieves a list of strings from an environment variable.\n * - Uses ',' as the delimiter.\n * - Trims leading and trailing whitespace from each entry.\n * - Excludes empty entries.\n * - Returns `undefined` if the environment variable is empty or contains only whitespace.\n * - Returns an empty array if all entries are empty or whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string[] | undefined} - The list of strings or `undefined`.\n */\nfunction getStringListFromEnv(key) {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\nexports.getStringListFromEnv = getStringListFromEnv;\n//# sourceMappingURL=environment.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/**\n * @deprecated Use globalThis directly instead.\n */\nexports._globalThis = globalThis;\n//# sourceMappingURL=globalThis.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '2.6.0';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConstMap = void 0;\n/**\n * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction createConstMap(values) {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res = {};\n const len = values.length;\n for (let lp = 0; lp < len; lp++) {\n const val = values[lp];\n if (val) {\n res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n }\n }\n return res;\n}\nexports.createConstMap = createConstMap;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEMATTRS_NET_HOST_CARRIER_ICC = exports.SEMATTRS_NET_HOST_CARRIER_MNC = exports.SEMATTRS_NET_HOST_CARRIER_MCC = exports.SEMATTRS_NET_HOST_CARRIER_NAME = exports.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = exports.SEMATTRS_NET_HOST_CONNECTION_TYPE = exports.SEMATTRS_NET_HOST_NAME = exports.SEMATTRS_NET_HOST_PORT = exports.SEMATTRS_NET_HOST_IP = exports.SEMATTRS_NET_PEER_NAME = exports.SEMATTRS_NET_PEER_PORT = exports.SEMATTRS_NET_PEER_IP = exports.SEMATTRS_NET_TRANSPORT = exports.SEMATTRS_FAAS_INVOKED_REGION = exports.SEMATTRS_FAAS_INVOKED_PROVIDER = exports.SEMATTRS_FAAS_INVOKED_NAME = exports.SEMATTRS_FAAS_COLDSTART = exports.SEMATTRS_FAAS_CRON = exports.SEMATTRS_FAAS_TIME = exports.SEMATTRS_FAAS_DOCUMENT_NAME = exports.SEMATTRS_FAAS_DOCUMENT_TIME = exports.SEMATTRS_FAAS_DOCUMENT_OPERATION = exports.SEMATTRS_FAAS_DOCUMENT_COLLECTION = exports.SEMATTRS_FAAS_EXECUTION = exports.SEMATTRS_FAAS_TRIGGER = exports.SEMATTRS_EXCEPTION_ESCAPED = exports.SEMATTRS_EXCEPTION_STACKTRACE = exports.SEMATTRS_EXCEPTION_MESSAGE = exports.SEMATTRS_EXCEPTION_TYPE = exports.SEMATTRS_DB_SQL_TABLE = exports.SEMATTRS_DB_MONGODB_COLLECTION = exports.SEMATTRS_DB_REDIS_DATABASE_INDEX = exports.SEMATTRS_DB_HBASE_NAMESPACE = exports.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = exports.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = exports.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = exports.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = exports.SEMATTRS_DB_CASSANDRA_TABLE = exports.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = exports.SEMATTRS_DB_CASSANDRA_PAGE_SIZE = exports.SEMATTRS_DB_CASSANDRA_KEYSPACE = exports.SEMATTRS_DB_MSSQL_INSTANCE_NAME = exports.SEMATTRS_DB_OPERATION = exports.SEMATTRS_DB_STATEMENT = exports.SEMATTRS_DB_NAME = exports.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = exports.SEMATTRS_DB_USER = exports.SEMATTRS_DB_CONNECTION_STRING = exports.SEMATTRS_DB_SYSTEM = exports.SEMATTRS_AWS_LAMBDA_INVOKED_ARN = void 0;\nexports.SEMATTRS_MESSAGING_DESTINATION_KIND = exports.SEMATTRS_MESSAGING_DESTINATION = exports.SEMATTRS_MESSAGING_SYSTEM = exports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = exports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = exports.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = exports.SEMATTRS_AWS_DYNAMODB_COUNT = exports.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = exports.SEMATTRS_AWS_DYNAMODB_SEGMENT = exports.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = exports.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = exports.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = exports.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = exports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = exports.SEMATTRS_AWS_DYNAMODB_SELECT = exports.SEMATTRS_AWS_DYNAMODB_INDEX_NAME = exports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = exports.SEMATTRS_AWS_DYNAMODB_LIMIT = exports.SEMATTRS_AWS_DYNAMODB_PROJECTION = exports.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = exports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = exports.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = exports.SEMATTRS_HTTP_CLIENT_IP = exports.SEMATTRS_HTTP_ROUTE = exports.SEMATTRS_HTTP_SERVER_NAME = exports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = exports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = exports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = exports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = exports.SEMATTRS_HTTP_USER_AGENT = exports.SEMATTRS_HTTP_FLAVOR = exports.SEMATTRS_HTTP_STATUS_CODE = exports.SEMATTRS_HTTP_SCHEME = exports.SEMATTRS_HTTP_HOST = exports.SEMATTRS_HTTP_TARGET = exports.SEMATTRS_HTTP_URL = exports.SEMATTRS_HTTP_METHOD = exports.SEMATTRS_CODE_LINENO = exports.SEMATTRS_CODE_FILEPATH = exports.SEMATTRS_CODE_NAMESPACE = exports.SEMATTRS_CODE_FUNCTION = exports.SEMATTRS_THREAD_NAME = exports.SEMATTRS_THREAD_ID = exports.SEMATTRS_ENDUSER_SCOPE = exports.SEMATTRS_ENDUSER_ROLE = exports.SEMATTRS_ENDUSER_ID = exports.SEMATTRS_PEER_SERVICE = void 0;\nexports.DBSYSTEMVALUES_FILEMAKER = exports.DBSYSTEMVALUES_DERBY = exports.DBSYSTEMVALUES_FIREBIRD = exports.DBSYSTEMVALUES_ADABAS = exports.DBSYSTEMVALUES_CACHE = exports.DBSYSTEMVALUES_EDB = exports.DBSYSTEMVALUES_FIRSTSQL = exports.DBSYSTEMVALUES_INGRES = exports.DBSYSTEMVALUES_HANADB = exports.DBSYSTEMVALUES_MAXDB = exports.DBSYSTEMVALUES_PROGRESS = exports.DBSYSTEMVALUES_HSQLDB = exports.DBSYSTEMVALUES_CLOUDSCAPE = exports.DBSYSTEMVALUES_HIVE = exports.DBSYSTEMVALUES_REDSHIFT = exports.DBSYSTEMVALUES_POSTGRESQL = exports.DBSYSTEMVALUES_DB2 = exports.DBSYSTEMVALUES_ORACLE = exports.DBSYSTEMVALUES_MYSQL = exports.DBSYSTEMVALUES_MSSQL = exports.DBSYSTEMVALUES_OTHER_SQL = exports.SemanticAttributes = exports.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = exports.SEMATTRS_MESSAGE_COMPRESSED_SIZE = exports.SEMATTRS_MESSAGE_ID = exports.SEMATTRS_MESSAGE_TYPE = exports.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = exports.SEMATTRS_RPC_JSONRPC_ERROR_CODE = exports.SEMATTRS_RPC_JSONRPC_REQUEST_ID = exports.SEMATTRS_RPC_JSONRPC_VERSION = exports.SEMATTRS_RPC_GRPC_STATUS_CODE = exports.SEMATTRS_RPC_METHOD = exports.SEMATTRS_RPC_SERVICE = exports.SEMATTRS_RPC_SYSTEM = exports.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = exports.SEMATTRS_MESSAGING_KAFKA_PARTITION = exports.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = exports.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = exports.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = exports.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = exports.SEMATTRS_MESSAGING_CONSUMER_ID = exports.SEMATTRS_MESSAGING_OPERATION = exports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = exports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = exports.SEMATTRS_MESSAGING_CONVERSATION_ID = exports.SEMATTRS_MESSAGING_MESSAGE_ID = exports.SEMATTRS_MESSAGING_URL = exports.SEMATTRS_MESSAGING_PROTOCOL_VERSION = exports.SEMATTRS_MESSAGING_PROTOCOL = exports.SEMATTRS_MESSAGING_TEMP_DESTINATION = void 0;\nexports.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = exports.FaasDocumentOperationValues = exports.FAASDOCUMENTOPERATIONVALUES_DELETE = exports.FAASDOCUMENTOPERATIONVALUES_EDIT = exports.FAASDOCUMENTOPERATIONVALUES_INSERT = exports.FaasTriggerValues = exports.FAASTRIGGERVALUES_OTHER = exports.FAASTRIGGERVALUES_TIMER = exports.FAASTRIGGERVALUES_PUBSUB = exports.FAASTRIGGERVALUES_HTTP = exports.FAASTRIGGERVALUES_DATASOURCE = exports.DbCassandraConsistencyLevelValues = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = exports.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ANY = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_THREE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_TWO = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ONE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ALL = exports.DbSystemValues = exports.DBSYSTEMVALUES_COCKROACHDB = exports.DBSYSTEMVALUES_MEMCACHED = exports.DBSYSTEMVALUES_ELASTICSEARCH = exports.DBSYSTEMVALUES_GEODE = exports.DBSYSTEMVALUES_NEO4J = exports.DBSYSTEMVALUES_DYNAMODB = exports.DBSYSTEMVALUES_COSMOSDB = exports.DBSYSTEMVALUES_COUCHDB = exports.DBSYSTEMVALUES_COUCHBASE = exports.DBSYSTEMVALUES_REDIS = exports.DBSYSTEMVALUES_MONGODB = exports.DBSYSTEMVALUES_HBASE = exports.DBSYSTEMVALUES_CASSANDRA = exports.DBSYSTEMVALUES_COLDFUSION = exports.DBSYSTEMVALUES_H2 = exports.DBSYSTEMVALUES_VERTICA = exports.DBSYSTEMVALUES_TERADATA = exports.DBSYSTEMVALUES_SYBASE = exports.DBSYSTEMVALUES_SQLITE = exports.DBSYSTEMVALUES_POINTBASE = exports.DBSYSTEMVALUES_PERVASIVE = exports.DBSYSTEMVALUES_NETEZZA = exports.DBSYSTEMVALUES_MARIADB = exports.DBSYSTEMVALUES_INTERBASE = exports.DBSYSTEMVALUES_INSTANTDB = exports.DBSYSTEMVALUES_INFORMIX = void 0;\nexports.MESSAGINGOPERATIONVALUES_RECEIVE = exports.MessagingDestinationKindValues = exports.MESSAGINGDESTINATIONKINDVALUES_TOPIC = exports.MESSAGINGDESTINATIONKINDVALUES_QUEUE = exports.HttpFlavorValues = exports.HTTPFLAVORVALUES_QUIC = exports.HTTPFLAVORVALUES_SPDY = exports.HTTPFLAVORVALUES_HTTP_2_0 = exports.HTTPFLAVORVALUES_HTTP_1_1 = exports.HTTPFLAVORVALUES_HTTP_1_0 = exports.NetHostConnectionSubtypeValues = exports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_NR = exports.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = exports.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_GSM = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = exports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = exports.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = exports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = exports.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = exports.NetHostConnectionTypeValues = exports.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = exports.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = exports.NETHOSTCONNECTIONTYPEVALUES_CELL = exports.NETHOSTCONNECTIONTYPEVALUES_WIRED = exports.NETHOSTCONNECTIONTYPEVALUES_WIFI = exports.NetTransportValues = exports.NETTRANSPORTVALUES_OTHER = exports.NETTRANSPORTVALUES_INPROC = exports.NETTRANSPORTVALUES_PIPE = exports.NETTRANSPORTVALUES_UNIX = exports.NETTRANSPORTVALUES_IP = exports.NETTRANSPORTVALUES_IP_UDP = exports.NETTRANSPORTVALUES_IP_TCP = exports.FaasInvokedProviderValues = exports.FAASINVOKEDPROVIDERVALUES_GCP = exports.FAASINVOKEDPROVIDERVALUES_AZURE = exports.FAASINVOKEDPROVIDERVALUES_AWS = void 0;\nexports.MessageTypeValues = exports.MESSAGETYPEVALUES_RECEIVED = exports.MESSAGETYPEVALUES_SENT = exports.RpcGrpcStatusCodeValues = exports.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = exports.RPCGRPCSTATUSCODEVALUES_DATA_LOSS = exports.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = exports.RPCGRPCSTATUSCODEVALUES_INTERNAL = exports.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = exports.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = exports.RPCGRPCSTATUSCODEVALUES_ABORTED = exports.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = exports.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = exports.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = exports.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = exports.RPCGRPCSTATUSCODEVALUES_NOT_FOUND = exports.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = exports.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = exports.RPCGRPCSTATUSCODEVALUES_UNKNOWN = exports.RPCGRPCSTATUSCODEVALUES_CANCELLED = exports.RPCGRPCSTATUSCODEVALUES_OK = exports.MessagingOperationValues = exports.MESSAGINGOPERATIONVALUES_PROCESS = void 0;\nconst utils_1 = require(\"../internal/utils\");\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nconst TMP_DB_SYSTEM = 'db.system';\nconst TMP_DB_CONNECTION_STRING = 'db.connection_string';\nconst TMP_DB_USER = 'db.user';\nconst TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nconst TMP_DB_NAME = 'db.name';\nconst TMP_DB_STATEMENT = 'db.statement';\nconst TMP_DB_OPERATION = 'db.operation';\nconst TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nconst TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nconst TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nconst TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nconst TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nconst TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nconst TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count';\nconst TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nconst TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nconst TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nconst TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nconst TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nconst TMP_DB_SQL_TABLE = 'db.sql.table';\nconst TMP_EXCEPTION_TYPE = 'exception.type';\nconst TMP_EXCEPTION_MESSAGE = 'exception.message';\nconst TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nconst TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nconst TMP_FAAS_TRIGGER = 'faas.trigger';\nconst TMP_FAAS_EXECUTION = 'faas.execution';\nconst TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nconst TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nconst TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nconst TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nconst TMP_FAAS_TIME = 'faas.time';\nconst TMP_FAAS_CRON = 'faas.cron';\nconst TMP_FAAS_COLDSTART = 'faas.coldstart';\nconst TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nconst TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nconst TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nconst TMP_NET_TRANSPORT = 'net.transport';\nconst TMP_NET_PEER_IP = 'net.peer.ip';\nconst TMP_NET_PEER_PORT = 'net.peer.port';\nconst TMP_NET_PEER_NAME = 'net.peer.name';\nconst TMP_NET_HOST_IP = 'net.host.ip';\nconst TMP_NET_HOST_PORT = 'net.host.port';\nconst TMP_NET_HOST_NAME = 'net.host.name';\nconst TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nconst TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nconst TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nconst TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nconst TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nconst TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nconst TMP_PEER_SERVICE = 'peer.service';\nconst TMP_ENDUSER_ID = 'enduser.id';\nconst TMP_ENDUSER_ROLE = 'enduser.role';\nconst TMP_ENDUSER_SCOPE = 'enduser.scope';\nconst TMP_THREAD_ID = 'thread.id';\nconst TMP_THREAD_NAME = 'thread.name';\nconst TMP_CODE_FUNCTION = 'code.function';\nconst TMP_CODE_NAMESPACE = 'code.namespace';\nconst TMP_CODE_FILEPATH = 'code.filepath';\nconst TMP_CODE_LINENO = 'code.lineno';\nconst TMP_HTTP_METHOD = 'http.method';\nconst TMP_HTTP_URL = 'http.url';\nconst TMP_HTTP_TARGET = 'http.target';\nconst TMP_HTTP_HOST = 'http.host';\nconst TMP_HTTP_SCHEME = 'http.scheme';\nconst TMP_HTTP_STATUS_CODE = 'http.status_code';\nconst TMP_HTTP_FLAVOR = 'http.flavor';\nconst TMP_HTTP_USER_AGENT = 'http.user_agent';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed';\nconst TMP_HTTP_SERVER_NAME = 'http.server_name';\nconst TMP_HTTP_ROUTE = 'http.route';\nconst TMP_HTTP_CLIENT_IP = 'http.client_ip';\nconst TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nconst TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nconst TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity';\nconst TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nconst TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nconst TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nconst TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nconst TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nconst TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table';\nconst TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nconst TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nconst TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nconst TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nconst TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nconst TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nconst TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates';\nconst TMP_MESSAGING_SYSTEM = 'messaging.system';\nconst TMP_MESSAGING_DESTINATION = 'messaging.destination';\nconst TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nconst TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nconst TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nconst TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nconst TMP_MESSAGING_URL = 'messaging.url';\nconst TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nconst TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes';\nconst TMP_MESSAGING_OPERATION = 'messaging.operation';\nconst TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nconst TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nconst TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nconst TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nconst TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nconst TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nconst TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nconst TMP_RPC_SYSTEM = 'rpc.system';\nconst TMP_RPC_SERVICE = 'rpc.service';\nconst TMP_RPC_METHOD = 'rpc.method';\nconst TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nconst TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nconst TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nconst TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nconst TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nconst TMP_MESSAGE_TYPE = 'message.type';\nconst TMP_MESSAGE_ID = 'message.id';\nconst TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nconst TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_USER = TMP_DB_USER;\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_NAME = TMP_DB_NAME;\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID;\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC;\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexports.SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexports.SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexports.SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexports.SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE;\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n/**\n * Current "managed" thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n/**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH;\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexports.SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexports.SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ;\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT;\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND;\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION;\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexports.SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexports.SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION;\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexports.SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexports.SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexports.SemanticAttributes = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_AWS_LAMBDA_INVOKED_ARN,\n TMP_DB_SYSTEM,\n TMP_DB_CONNECTION_STRING,\n TMP_DB_USER,\n TMP_DB_JDBC_DRIVER_CLASSNAME,\n TMP_DB_NAME,\n TMP_DB_STATEMENT,\n TMP_DB_OPERATION,\n TMP_DB_MSSQL_INSTANCE_NAME,\n TMP_DB_CASSANDRA_KEYSPACE,\n TMP_DB_CASSANDRA_PAGE_SIZE,\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n TMP_DB_CASSANDRA_TABLE,\n TMP_DB_CASSANDRA_IDEMPOTENCE,\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n TMP_DB_CASSANDRA_COORDINATOR_ID,\n TMP_DB_CASSANDRA_COORDINATOR_DC,\n TMP_DB_HBASE_NAMESPACE,\n TMP_DB_REDIS_DATABASE_INDEX,\n TMP_DB_MONGODB_COLLECTION,\n TMP_DB_SQL_TABLE,\n TMP_EXCEPTION_TYPE,\n TMP_EXCEPTION_MESSAGE,\n TMP_EXCEPTION_STACKTRACE,\n TMP_EXCEPTION_ESCAPED,\n TMP_FAAS_TRIGGER,\n TMP_FAAS_EXECUTION,\n TMP_FAAS_DOCUMENT_COLLECTION,\n TMP_FAAS_DOCUMENT_OPERATION,\n TMP_FAAS_DOCUMENT_TIME,\n TMP_FAAS_DOCUMENT_NAME,\n TMP_FAAS_TIME,\n TMP_FAAS_CRON,\n TMP_FAAS_COLDSTART,\n TMP_FAAS_INVOKED_NAME,\n TMP_FAAS_INVOKED_PROVIDER,\n TMP_FAAS_INVOKED_REGION,\n TMP_NET_TRANSPORT,\n TMP_NET_PEER_IP,\n TMP_NET_PEER_PORT,\n TMP_NET_PEER_NAME,\n TMP_NET_HOST_IP,\n TMP_NET_HOST_PORT,\n TMP_NET_HOST_NAME,\n TMP_NET_HOST_CONNECTION_TYPE,\n TMP_NET_HOST_CONNECTION_SUBTYPE,\n TMP_NET_HOST_CARRIER_NAME,\n TMP_NET_HOST_CARRIER_MCC,\n TMP_NET_HOST_CARRIER_MNC,\n TMP_NET_HOST_CARRIER_ICC,\n TMP_PEER_SERVICE,\n TMP_ENDUSER_ID,\n TMP_ENDUSER_ROLE,\n TMP_ENDUSER_SCOPE,\n TMP_THREAD_ID,\n TMP_THREAD_NAME,\n TMP_CODE_FUNCTION,\n TMP_CODE_NAMESPACE,\n TMP_CODE_FILEPATH,\n TMP_CODE_LINENO,\n TMP_HTTP_METHOD,\n TMP_HTTP_URL,\n TMP_HTTP_TARGET,\n TMP_HTTP_HOST,\n TMP_HTTP_SCHEME,\n TMP_HTTP_STATUS_CODE,\n TMP_HTTP_FLAVOR,\n TMP_HTTP_USER_AGENT,\n TMP_HTTP_REQUEST_CONTENT_LENGTH,\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_SERVER_NAME,\n TMP_HTTP_ROUTE,\n TMP_HTTP_CLIENT_IP,\n TMP_AWS_DYNAMODB_TABLE_NAMES,\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n TMP_AWS_DYNAMODB_CONSISTENT_READ,\n TMP_AWS_DYNAMODB_PROJECTION,\n TMP_AWS_DYNAMODB_LIMIT,\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n TMP_AWS_DYNAMODB_INDEX_NAME,\n TMP_AWS_DYNAMODB_SELECT,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n TMP_AWS_DYNAMODB_TABLE_COUNT,\n TMP_AWS_DYNAMODB_SCAN_FORWARD,\n TMP_AWS_DYNAMODB_SEGMENT,\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n TMP_AWS_DYNAMODB_COUNT,\n TMP_AWS_DYNAMODB_SCANNED_COUNT,\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n TMP_MESSAGING_SYSTEM,\n TMP_MESSAGING_DESTINATION,\n TMP_MESSAGING_DESTINATION_KIND,\n TMP_MESSAGING_TEMP_DESTINATION,\n TMP_MESSAGING_PROTOCOL,\n TMP_MESSAGING_PROTOCOL_VERSION,\n TMP_MESSAGING_URL,\n TMP_MESSAGING_MESSAGE_ID,\n TMP_MESSAGING_CONVERSATION_ID,\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n TMP_MESSAGING_OPERATION,\n TMP_MESSAGING_CONSUMER_ID,\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n TMP_MESSAGING_KAFKA_CLIENT_ID,\n TMP_MESSAGING_KAFKA_PARTITION,\n TMP_MESSAGING_KAFKA_TOMBSTONE,\n TMP_RPC_SYSTEM,\n TMP_RPC_SERVICE,\n TMP_RPC_METHOD,\n TMP_RPC_GRPC_STATUS_CODE,\n TMP_RPC_JSONRPC_VERSION,\n TMP_RPC_JSONRPC_REQUEST_ID,\n TMP_RPC_JSONRPC_ERROR_CODE,\n TMP_RPC_JSONRPC_ERROR_MESSAGE,\n TMP_MESSAGE_TYPE,\n TMP_MESSAGE_ID,\n TMP_MESSAGE_COMPRESSED_SIZE,\n TMP_MESSAGE_UNCOMPRESSED_SIZE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nconst TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nconst TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nconst TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nconst TMP_DBSYSTEMVALUES_DB2 = 'db2';\nconst TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nconst TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nconst TMP_DBSYSTEMVALUES_HIVE = 'hive';\nconst TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nconst TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nconst TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nconst TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nconst TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nconst TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nconst TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nconst TMP_DBSYSTEMVALUES_EDB = 'edb';\nconst TMP_DBSYSTEMVALUES_CACHE = 'cache';\nconst TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nconst TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nconst TMP_DBSYSTEMVALUES_DERBY = 'derby';\nconst TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nconst TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nconst TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nconst TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nconst TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nconst TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nconst TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nconst TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nconst TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nconst TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nconst TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nconst TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nconst TMP_DBSYSTEMVALUES_H2 = 'h2';\nconst TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nconst TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nconst TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nconst TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nconst TMP_DBSYSTEMVALUES_REDIS = 'redis';\nconst TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nconst TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nconst TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nconst TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nconst TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nconst TMP_DBSYSTEMVALUES_GEODE = 'geode';\nconst TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nconst TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nconst TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexports.DbSystemValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_DBSYSTEMVALUES_OTHER_SQL,\n TMP_DBSYSTEMVALUES_MSSQL,\n TMP_DBSYSTEMVALUES_MYSQL,\n TMP_DBSYSTEMVALUES_ORACLE,\n TMP_DBSYSTEMVALUES_DB2,\n TMP_DBSYSTEMVALUES_POSTGRESQL,\n TMP_DBSYSTEMVALUES_REDSHIFT,\n TMP_DBSYSTEMVALUES_HIVE,\n TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n TMP_DBSYSTEMVALUES_HSQLDB,\n TMP_DBSYSTEMVALUES_PROGRESS,\n TMP_DBSYSTEMVALUES_MAXDB,\n TMP_DBSYSTEMVALUES_HANADB,\n TMP_DBSYSTEMVALUES_INGRES,\n TMP_DBSYSTEMVALUES_FIRSTSQL,\n TMP_DBSYSTEMVALUES_EDB,\n TMP_DBSYSTEMVALUES_CACHE,\n TMP_DBSYSTEMVALUES_ADABAS,\n TMP_DBSYSTEMVALUES_FIREBIRD,\n TMP_DBSYSTEMVALUES_DERBY,\n TMP_DBSYSTEMVALUES_FILEMAKER,\n TMP_DBSYSTEMVALUES_INFORMIX,\n TMP_DBSYSTEMVALUES_INSTANTDB,\n TMP_DBSYSTEMVALUES_INTERBASE,\n TMP_DBSYSTEMVALUES_MARIADB,\n TMP_DBSYSTEMVALUES_NETEZZA,\n TMP_DBSYSTEMVALUES_PERVASIVE,\n TMP_DBSYSTEMVALUES_POINTBASE,\n TMP_DBSYSTEMVALUES_SQLITE,\n TMP_DBSYSTEMVALUES_SYBASE,\n TMP_DBSYSTEMVALUES_TERADATA,\n TMP_DBSYSTEMVALUES_VERTICA,\n TMP_DBSYSTEMVALUES_H2,\n TMP_DBSYSTEMVALUES_COLDFUSION,\n TMP_DBSYSTEMVALUES_CASSANDRA,\n TMP_DBSYSTEMVALUES_HBASE,\n TMP_DBSYSTEMVALUES_MONGODB,\n TMP_DBSYSTEMVALUES_REDIS,\n TMP_DBSYSTEMVALUES_COUCHBASE,\n TMP_DBSYSTEMVALUES_COUCHDB,\n TMP_DBSYSTEMVALUES_COSMOSDB,\n TMP_DBSYSTEMVALUES_DYNAMODB,\n TMP_DBSYSTEMVALUES_NEO4J,\n TMP_DBSYSTEMVALUES_GEODE,\n TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n TMP_DBSYSTEMVALUES_MEMCACHED,\n TMP_DBSYSTEMVALUES_COCKROACHDB,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexports.DbCassandraConsistencyLevelValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nconst TMP_FAASTRIGGERVALUES_HTTP = 'http';\nconst TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nconst TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nconst TMP_FAASTRIGGERVALUES_OTHER = 'other';\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexports.FaasTriggerValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexports.FaasDocumentOperationValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexports.FaasInvokedProviderValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nconst TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nconst TMP_NETTRANSPORTVALUES_IP = 'ip';\nconst TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nconst TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nconst TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nconst TMP_NETTRANSPORTVALUES_OTHER = 'other';\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexports.NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexports.NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexports.NetTransportValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETTRANSPORTVALUES_IP_TCP,\n TMP_NETTRANSPORTVALUES_IP_UDP,\n TMP_NETTRANSPORTVALUES_IP,\n TMP_NETTRANSPORTVALUES_UNIX,\n TMP_NETTRANSPORTVALUES_PIPE,\n TMP_NETTRANSPORTVALUES_INPROC,\n TMP_NETTRANSPORTVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexports.NetHostConnectionTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexports.NetHostConnectionSubtypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nconst TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nconst TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nconst TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nconst TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexports.HttpFlavorValues = {\n HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexports.MessagingDestinationKindValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nconst TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexports.MessagingOperationValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nconst TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nconst TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nconst TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nconst TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nconst TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nconst TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexports.RpcGrpcStatusCodeValues = {\n OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nconst TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexports.MessageTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n]);\n//# sourceMappingURL=SemanticAttributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\n__exportStar(require(\"./SemanticAttributes\"), exports);\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEMRESATTRS_K8S_STATEFULSET_NAME = exports.SEMRESATTRS_K8S_STATEFULSET_UID = exports.SEMRESATTRS_K8S_DEPLOYMENT_NAME = exports.SEMRESATTRS_K8S_DEPLOYMENT_UID = exports.SEMRESATTRS_K8S_REPLICASET_NAME = exports.SEMRESATTRS_K8S_REPLICASET_UID = exports.SEMRESATTRS_K8S_CONTAINER_NAME = exports.SEMRESATTRS_K8S_POD_NAME = exports.SEMRESATTRS_K8S_POD_UID = exports.SEMRESATTRS_K8S_NAMESPACE_NAME = exports.SEMRESATTRS_K8S_NODE_UID = exports.SEMRESATTRS_K8S_NODE_NAME = exports.SEMRESATTRS_K8S_CLUSTER_NAME = exports.SEMRESATTRS_HOST_IMAGE_VERSION = exports.SEMRESATTRS_HOST_IMAGE_ID = exports.SEMRESATTRS_HOST_IMAGE_NAME = exports.SEMRESATTRS_HOST_ARCH = exports.SEMRESATTRS_HOST_TYPE = exports.SEMRESATTRS_HOST_NAME = exports.SEMRESATTRS_HOST_ID = exports.SEMRESATTRS_FAAS_MAX_MEMORY = exports.SEMRESATTRS_FAAS_INSTANCE = exports.SEMRESATTRS_FAAS_VERSION = exports.SEMRESATTRS_FAAS_ID = exports.SEMRESATTRS_FAAS_NAME = exports.SEMRESATTRS_DEVICE_MODEL_NAME = exports.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = exports.SEMRESATTRS_DEVICE_ID = exports.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = exports.SEMRESATTRS_CONTAINER_IMAGE_TAG = exports.SEMRESATTRS_CONTAINER_IMAGE_NAME = exports.SEMRESATTRS_CONTAINER_RUNTIME = exports.SEMRESATTRS_CONTAINER_ID = exports.SEMRESATTRS_CONTAINER_NAME = exports.SEMRESATTRS_AWS_LOG_STREAM_ARNS = exports.SEMRESATTRS_AWS_LOG_STREAM_NAMES = exports.SEMRESATTRS_AWS_LOG_GROUP_ARNS = exports.SEMRESATTRS_AWS_LOG_GROUP_NAMES = exports.SEMRESATTRS_AWS_EKS_CLUSTER_ARN = exports.SEMRESATTRS_AWS_ECS_TASK_REVISION = exports.SEMRESATTRS_AWS_ECS_TASK_FAMILY = exports.SEMRESATTRS_AWS_ECS_TASK_ARN = exports.SEMRESATTRS_AWS_ECS_LAUNCHTYPE = exports.SEMRESATTRS_AWS_ECS_CLUSTER_ARN = exports.SEMRESATTRS_AWS_ECS_CONTAINER_ARN = exports.SEMRESATTRS_CLOUD_PLATFORM = exports.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = exports.SEMRESATTRS_CLOUD_REGION = exports.SEMRESATTRS_CLOUD_ACCOUNT_ID = exports.SEMRESATTRS_CLOUD_PROVIDER = void 0;\nexports.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = exports.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = exports.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = exports.CLOUDPLATFORMVALUES_AZURE_AKS = exports.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = exports.CLOUDPLATFORMVALUES_AZURE_VM = exports.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = exports.CLOUDPLATFORMVALUES_AWS_LAMBDA = exports.CLOUDPLATFORMVALUES_AWS_EKS = exports.CLOUDPLATFORMVALUES_AWS_ECS = exports.CLOUDPLATFORMVALUES_AWS_EC2 = exports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = exports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = exports.CloudProviderValues = exports.CLOUDPROVIDERVALUES_GCP = exports.CLOUDPROVIDERVALUES_AZURE = exports.CLOUDPROVIDERVALUES_AWS = exports.CLOUDPROVIDERVALUES_ALIBABA_CLOUD = exports.SemanticResourceAttributes = exports.SEMRESATTRS_WEBENGINE_DESCRIPTION = exports.SEMRESATTRS_WEBENGINE_VERSION = exports.SEMRESATTRS_WEBENGINE_NAME = exports.SEMRESATTRS_TELEMETRY_AUTO_VERSION = exports.SEMRESATTRS_TELEMETRY_SDK_VERSION = exports.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = exports.SEMRESATTRS_TELEMETRY_SDK_NAME = exports.SEMRESATTRS_SERVICE_VERSION = exports.SEMRESATTRS_SERVICE_INSTANCE_ID = exports.SEMRESATTRS_SERVICE_NAMESPACE = exports.SEMRESATTRS_SERVICE_NAME = exports.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = exports.SEMRESATTRS_PROCESS_RUNTIME_VERSION = exports.SEMRESATTRS_PROCESS_RUNTIME_NAME = exports.SEMRESATTRS_PROCESS_OWNER = exports.SEMRESATTRS_PROCESS_COMMAND_ARGS = exports.SEMRESATTRS_PROCESS_COMMAND_LINE = exports.SEMRESATTRS_PROCESS_COMMAND = exports.SEMRESATTRS_PROCESS_EXECUTABLE_PATH = exports.SEMRESATTRS_PROCESS_EXECUTABLE_NAME = exports.SEMRESATTRS_PROCESS_PID = exports.SEMRESATTRS_OS_VERSION = exports.SEMRESATTRS_OS_NAME = exports.SEMRESATTRS_OS_DESCRIPTION = exports.SEMRESATTRS_OS_TYPE = exports.SEMRESATTRS_K8S_CRONJOB_NAME = exports.SEMRESATTRS_K8S_CRONJOB_UID = exports.SEMRESATTRS_K8S_JOB_NAME = exports.SEMRESATTRS_K8S_JOB_UID = exports.SEMRESATTRS_K8S_DAEMONSET_NAME = exports.SEMRESATTRS_K8S_DAEMONSET_UID = void 0;\nexports.TelemetrySdkLanguageValues = exports.TELEMETRYSDKLANGUAGEVALUES_WEBJS = exports.TELEMETRYSDKLANGUAGEVALUES_RUBY = exports.TELEMETRYSDKLANGUAGEVALUES_PYTHON = exports.TELEMETRYSDKLANGUAGEVALUES_PHP = exports.TELEMETRYSDKLANGUAGEVALUES_NODEJS = exports.TELEMETRYSDKLANGUAGEVALUES_JAVA = exports.TELEMETRYSDKLANGUAGEVALUES_GO = exports.TELEMETRYSDKLANGUAGEVALUES_ERLANG = exports.TELEMETRYSDKLANGUAGEVALUES_DOTNET = exports.TELEMETRYSDKLANGUAGEVALUES_CPP = exports.OsTypeValues = exports.OSTYPEVALUES_Z_OS = exports.OSTYPEVALUES_SOLARIS = exports.OSTYPEVALUES_AIX = exports.OSTYPEVALUES_HPUX = exports.OSTYPEVALUES_DRAGONFLYBSD = exports.OSTYPEVALUES_OPENBSD = exports.OSTYPEVALUES_NETBSD = exports.OSTYPEVALUES_FREEBSD = exports.OSTYPEVALUES_DARWIN = exports.OSTYPEVALUES_LINUX = exports.OSTYPEVALUES_WINDOWS = exports.HostArchValues = exports.HOSTARCHVALUES_X86 = exports.HOSTARCHVALUES_PPC64 = exports.HOSTARCHVALUES_PPC32 = exports.HOSTARCHVALUES_IA64 = exports.HOSTARCHVALUES_ARM64 = exports.HOSTARCHVALUES_ARM32 = exports.HOSTARCHVALUES_AMD64 = exports.AwsEcsLaunchtypeValues = exports.AWSECSLAUNCHTYPEVALUES_FARGATE = exports.AWSECSLAUNCHTYPEVALUES_EC2 = exports.CloudPlatformValues = exports.CLOUDPLATFORMVALUES_GCP_APP_ENGINE = exports.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = exports.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = exports.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = void 0;\nconst utils_1 = require(\"../internal/utils\");\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUD_PROVIDER = 'cloud.provider';\nconst TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nconst TMP_CLOUD_REGION = 'cloud.region';\nconst TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nconst TMP_CLOUD_PLATFORM = 'cloud.platform';\nconst TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nconst TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nconst TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nconst TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nconst TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nconst TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nconst TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nconst TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nconst TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nconst TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nconst TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nconst TMP_CONTAINER_NAME = 'container.name';\nconst TMP_CONTAINER_ID = 'container.id';\nconst TMP_CONTAINER_RUNTIME = 'container.runtime';\nconst TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nconst TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nconst TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nconst TMP_DEVICE_ID = 'device.id';\nconst TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nconst TMP_DEVICE_MODEL_NAME = 'device.model.name';\nconst TMP_FAAS_NAME = 'faas.name';\nconst TMP_FAAS_ID = 'faas.id';\nconst TMP_FAAS_VERSION = 'faas.version';\nconst TMP_FAAS_INSTANCE = 'faas.instance';\nconst TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nconst TMP_HOST_ID = 'host.id';\nconst TMP_HOST_NAME = 'host.name';\nconst TMP_HOST_TYPE = 'host.type';\nconst TMP_HOST_ARCH = 'host.arch';\nconst TMP_HOST_IMAGE_NAME = 'host.image.name';\nconst TMP_HOST_IMAGE_ID = 'host.image.id';\nconst TMP_HOST_IMAGE_VERSION = 'host.image.version';\nconst TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nconst TMP_K8S_NODE_NAME = 'k8s.node.name';\nconst TMP_K8S_NODE_UID = 'k8s.node.uid';\nconst TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nconst TMP_K8S_POD_UID = 'k8s.pod.uid';\nconst TMP_K8S_POD_NAME = 'k8s.pod.name';\nconst TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nconst TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nconst TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nconst TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nconst TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nconst TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nconst TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nconst TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nconst TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nconst TMP_K8S_JOB_UID = 'k8s.job.uid';\nconst TMP_K8S_JOB_NAME = 'k8s.job.name';\nconst TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nconst TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nconst TMP_OS_TYPE = 'os.type';\nconst TMP_OS_DESCRIPTION = 'os.description';\nconst TMP_OS_NAME = 'os.name';\nconst TMP_OS_VERSION = 'os.version';\nconst TMP_PROCESS_PID = 'process.pid';\nconst TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nconst TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nconst TMP_PROCESS_COMMAND = 'process.command';\nconst TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nconst TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nconst TMP_PROCESS_OWNER = 'process.owner';\nconst TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nconst TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nconst TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nconst TMP_SERVICE_NAME = 'service.name';\nconst TMP_SERVICE_NAMESPACE = 'service.namespace';\nconst TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nconst TMP_SERVICE_VERSION = 'service.version';\nconst TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nconst TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nconst TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nconst TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nconst TMP_WEBENGINE_NAME = 'webengine.name';\nconst TMP_WEBENGINE_VERSION = 'webengine.version';\nconst TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n/**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n/**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n/**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexports.SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexports.SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION;\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexports.SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexports.SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexports.SemanticResourceAttributes = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUD_PROVIDER,\n TMP_CLOUD_ACCOUNT_ID,\n TMP_CLOUD_REGION,\n TMP_CLOUD_AVAILABILITY_ZONE,\n TMP_CLOUD_PLATFORM,\n TMP_AWS_ECS_CONTAINER_ARN,\n TMP_AWS_ECS_CLUSTER_ARN,\n TMP_AWS_ECS_LAUNCHTYPE,\n TMP_AWS_ECS_TASK_ARN,\n TMP_AWS_ECS_TASK_FAMILY,\n TMP_AWS_ECS_TASK_REVISION,\n TMP_AWS_EKS_CLUSTER_ARN,\n TMP_AWS_LOG_GROUP_NAMES,\n TMP_AWS_LOG_GROUP_ARNS,\n TMP_AWS_LOG_STREAM_NAMES,\n TMP_AWS_LOG_STREAM_ARNS,\n TMP_CONTAINER_NAME,\n TMP_CONTAINER_ID,\n TMP_CONTAINER_RUNTIME,\n TMP_CONTAINER_IMAGE_NAME,\n TMP_CONTAINER_IMAGE_TAG,\n TMP_DEPLOYMENT_ENVIRONMENT,\n TMP_DEVICE_ID,\n TMP_DEVICE_MODEL_IDENTIFIER,\n TMP_DEVICE_MODEL_NAME,\n TMP_FAAS_NAME,\n TMP_FAAS_ID,\n TMP_FAAS_VERSION,\n TMP_FAAS_INSTANCE,\n TMP_FAAS_MAX_MEMORY,\n TMP_HOST_ID,\n TMP_HOST_NAME,\n TMP_HOST_TYPE,\n TMP_HOST_ARCH,\n TMP_HOST_IMAGE_NAME,\n TMP_HOST_IMAGE_ID,\n TMP_HOST_IMAGE_VERSION,\n TMP_K8S_CLUSTER_NAME,\n TMP_K8S_NODE_NAME,\n TMP_K8S_NODE_UID,\n TMP_K8S_NAMESPACE_NAME,\n TMP_K8S_POD_UID,\n TMP_K8S_POD_NAME,\n TMP_K8S_CONTAINER_NAME,\n TMP_K8S_REPLICASET_UID,\n TMP_K8S_REPLICASET_NAME,\n TMP_K8S_DEPLOYMENT_UID,\n TMP_K8S_DEPLOYMENT_NAME,\n TMP_K8S_STATEFULSET_UID,\n TMP_K8S_STATEFULSET_NAME,\n TMP_K8S_DAEMONSET_UID,\n TMP_K8S_DAEMONSET_NAME,\n TMP_K8S_JOB_UID,\n TMP_K8S_JOB_NAME,\n TMP_K8S_CRONJOB_UID,\n TMP_K8S_CRONJOB_NAME,\n TMP_OS_TYPE,\n TMP_OS_DESCRIPTION,\n TMP_OS_NAME,\n TMP_OS_VERSION,\n TMP_PROCESS_PID,\n TMP_PROCESS_EXECUTABLE_NAME,\n TMP_PROCESS_EXECUTABLE_PATH,\n TMP_PROCESS_COMMAND,\n TMP_PROCESS_COMMAND_LINE,\n TMP_PROCESS_COMMAND_ARGS,\n TMP_PROCESS_OWNER,\n TMP_PROCESS_RUNTIME_NAME,\n TMP_PROCESS_RUNTIME_VERSION,\n TMP_PROCESS_RUNTIME_DESCRIPTION,\n TMP_SERVICE_NAME,\n TMP_SERVICE_NAMESPACE,\n TMP_SERVICE_INSTANCE_ID,\n TMP_SERVICE_VERSION,\n TMP_TELEMETRY_SDK_NAME,\n TMP_TELEMETRY_SDK_LANGUAGE,\n TMP_TELEMETRY_SDK_VERSION,\n TMP_TELEMETRY_AUTO_VERSION,\n TMP_WEBENGINE_NAME,\n TMP_WEBENGINE_VERSION,\n TMP_WEBENGINE_DESCRIPTION,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nconst TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexports.CloudProviderValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nconst TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nconst TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nconst TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nconst TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexports.CloudPlatformValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nconst TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexports.AwsEcsLaunchtypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nconst TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nconst TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nconst TMP_HOSTARCHVALUES_IA64 = 'ia64';\nconst TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nconst TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nconst TMP_HOSTARCHVALUES_X86 = 'x86';\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexports.HostArchValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_HOSTARCHVALUES_AMD64,\n TMP_HOSTARCHVALUES_ARM32,\n TMP_HOSTARCHVALUES_ARM64,\n TMP_HOSTARCHVALUES_IA64,\n TMP_HOSTARCHVALUES_PPC32,\n TMP_HOSTARCHVALUES_PPC64,\n TMP_HOSTARCHVALUES_X86,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_OSTYPEVALUES_WINDOWS = 'windows';\nconst TMP_OSTYPEVALUES_LINUX = 'linux';\nconst TMP_OSTYPEVALUES_DARWIN = 'darwin';\nconst TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nconst TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nconst TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nconst TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nconst TMP_OSTYPEVALUES_HPUX = 'hpux';\nconst TMP_OSTYPEVALUES_AIX = 'aix';\nconst TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nconst TMP_OSTYPEVALUES_Z_OS = 'z_os';\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexports.OsTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_OSTYPEVALUES_WINDOWS,\n TMP_OSTYPEVALUES_LINUX,\n TMP_OSTYPEVALUES_DARWIN,\n TMP_OSTYPEVALUES_FREEBSD,\n TMP_OSTYPEVALUES_NETBSD,\n TMP_OSTYPEVALUES_OPENBSD,\n TMP_OSTYPEVALUES_DRAGONFLYBSD,\n TMP_OSTYPEVALUES_HPUX,\n TMP_OSTYPEVALUES_AIX,\n TMP_OSTYPEVALUES_SOLARIS,\n TMP_OSTYPEVALUES_Z_OS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexports.TelemetrySdkLanguageValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n]);\n//# sourceMappingURL=SemanticResourceAttributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\n__exportStar(require(\"./SemanticResourceAttributes\"), exports);\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_EXCEPTION_TYPE = exports.ATTR_EXCEPTION_STACKTRACE = exports.ATTR_EXCEPTION_MESSAGE = exports.ATTR_EXCEPTION_ESCAPED = exports.ERROR_TYPE_VALUE_OTHER = exports.ATTR_ERROR_TYPE = exports.DOTNET_GC_HEAP_GENERATION_VALUE_POH = exports.DOTNET_GC_HEAP_GENERATION_VALUE_LOH = exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = exports.ATTR_DOTNET_GC_HEAP_GENERATION = exports.DB_SYSTEM_NAME_VALUE_POSTGRESQL = exports.DB_SYSTEM_NAME_VALUE_MYSQL = exports.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = exports.DB_SYSTEM_NAME_VALUE_MARIADB = exports.ATTR_DB_SYSTEM_NAME = exports.ATTR_DB_STORED_PROCEDURE_NAME = exports.ATTR_DB_RESPONSE_STATUS_CODE = exports.ATTR_DB_QUERY_TEXT = exports.ATTR_DB_QUERY_SUMMARY = exports.ATTR_DB_OPERATION_NAME = exports.ATTR_DB_OPERATION_BATCH_SIZE = exports.ATTR_DB_NAMESPACE = exports.ATTR_DB_COLLECTION_NAME = exports.ATTR_CODE_STACKTRACE = exports.ATTR_CODE_LINE_NUMBER = exports.ATTR_CODE_FUNCTION_NAME = exports.ATTR_CODE_FILE_PATH = exports.ATTR_CODE_COLUMN_NUMBER = exports.ATTR_CLIENT_PORT = exports.ATTR_CLIENT_ADDRESS = exports.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = exports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = exports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = exports.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = exports.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = exports.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = exports.ATTR_ASPNETCORE_RATE_LIMITING_RESULT = exports.ATTR_ASPNETCORE_RATE_LIMITING_POLICY = exports.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = exports.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = void 0;\nexports.OTEL_STATUS_CODE_VALUE_ERROR = exports.ATTR_OTEL_STATUS_CODE = exports.ATTR_OTEL_SCOPE_VERSION = exports.ATTR_OTEL_SCOPE_NAME = exports.NETWORK_TYPE_VALUE_IPV6 = exports.NETWORK_TYPE_VALUE_IPV4 = exports.ATTR_NETWORK_TYPE = exports.NETWORK_TRANSPORT_VALUE_UNIX = exports.NETWORK_TRANSPORT_VALUE_UDP = exports.NETWORK_TRANSPORT_VALUE_TCP = exports.NETWORK_TRANSPORT_VALUE_QUIC = exports.NETWORK_TRANSPORT_VALUE_PIPE = exports.ATTR_NETWORK_TRANSPORT = exports.ATTR_NETWORK_PROTOCOL_VERSION = exports.ATTR_NETWORK_PROTOCOL_NAME = exports.ATTR_NETWORK_PEER_PORT = exports.ATTR_NETWORK_PEER_ADDRESS = exports.ATTR_NETWORK_LOCAL_PORT = exports.ATTR_NETWORK_LOCAL_ADDRESS = exports.JVM_THREAD_STATE_VALUE_WAITING = exports.JVM_THREAD_STATE_VALUE_TIMED_WAITING = exports.JVM_THREAD_STATE_VALUE_TERMINATED = exports.JVM_THREAD_STATE_VALUE_RUNNABLE = exports.JVM_THREAD_STATE_VALUE_NEW = exports.JVM_THREAD_STATE_VALUE_BLOCKED = exports.ATTR_JVM_THREAD_STATE = exports.ATTR_JVM_THREAD_DAEMON = exports.JVM_MEMORY_TYPE_VALUE_NON_HEAP = exports.JVM_MEMORY_TYPE_VALUE_HEAP = exports.ATTR_JVM_MEMORY_TYPE = exports.ATTR_JVM_MEMORY_POOL_NAME = exports.ATTR_JVM_GC_NAME = exports.ATTR_JVM_GC_ACTION = exports.ATTR_HTTP_ROUTE = exports.ATTR_HTTP_RESPONSE_STATUS_CODE = exports.ATTR_HTTP_RESPONSE_HEADER = exports.ATTR_HTTP_REQUEST_RESEND_COUNT = exports.ATTR_HTTP_REQUEST_METHOD_ORIGINAL = exports.HTTP_REQUEST_METHOD_VALUE_TRACE = exports.HTTP_REQUEST_METHOD_VALUE_PUT = exports.HTTP_REQUEST_METHOD_VALUE_POST = exports.HTTP_REQUEST_METHOD_VALUE_PATCH = exports.HTTP_REQUEST_METHOD_VALUE_OPTIONS = exports.HTTP_REQUEST_METHOD_VALUE_HEAD = exports.HTTP_REQUEST_METHOD_VALUE_GET = exports.HTTP_REQUEST_METHOD_VALUE_DELETE = exports.HTTP_REQUEST_METHOD_VALUE_CONNECT = exports.HTTP_REQUEST_METHOD_VALUE_OTHER = exports.ATTR_HTTP_REQUEST_METHOD = exports.ATTR_HTTP_REQUEST_HEADER = void 0;\nexports.ATTR_USER_AGENT_ORIGINAL = exports.ATTR_URL_SCHEME = exports.ATTR_URL_QUERY = exports.ATTR_URL_PATH = exports.ATTR_URL_FULL = exports.ATTR_URL_FRAGMENT = exports.ATTR_TELEMETRY_SDK_VERSION = exports.ATTR_TELEMETRY_SDK_NAME = exports.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = exports.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = exports.TELEMETRY_SDK_LANGUAGE_VALUE_RUST = exports.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = exports.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = exports.TELEMETRY_SDK_LANGUAGE_VALUE_PHP = exports.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = exports.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = exports.TELEMETRY_SDK_LANGUAGE_VALUE_GO = exports.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = exports.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = exports.TELEMETRY_SDK_LANGUAGE_VALUE_CPP = exports.ATTR_TELEMETRY_SDK_LANGUAGE = exports.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = exports.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = exports.SIGNALR_TRANSPORT_VALUE_LONG_POLLING = exports.ATTR_SIGNALR_TRANSPORT = exports.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = exports.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = exports.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = exports.ATTR_SIGNALR_CONNECTION_STATUS = exports.ATTR_SERVICE_VERSION = exports.ATTR_SERVICE_NAMESPACE = exports.ATTR_SERVICE_NAME = exports.ATTR_SERVICE_INSTANCE_ID = exports.ATTR_SERVER_PORT = exports.ATTR_SERVER_ADDRESS = exports.ATTR_OTEL_STATUS_DESCRIPTION = exports.OTEL_STATUS_CODE_VALUE_OK = void 0;\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexports.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result';\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling didn't run because the request was aborted.\n */\nexports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\";\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\";\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling was skipped because the response had started.\n */\nexports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\";\n/**\n * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was not handled by the exception handling middleware.\n */\nexports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\";\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexports.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type';\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexports.ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy';\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexports.ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result';\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\";\n/**\n * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the endpoint limiter\n */\nexports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\";\n/**\n * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the global limiter\n */\nexports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\";\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\";\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexports.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled';\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexports.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback';\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexports.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status';\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\";\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\";\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexports.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated';\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries, for example proxies, if it's available.\n */\nexports.ATTR_CLIENT_ADDRESS = 'client.address';\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries, for example proxies, if it's available.\n */\nexports.ATTR_CLIENT_PORT = 'client.port';\n/**\n * The column number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 16\n */\nexports.ATTR_CODE_COLUMN_NUMBER = 'code.column.number';\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\n */\nexports.ATTR_CODE_FILE_PATH = 'code.file.path';\n/**\n * The method or function fully-qualified name without arguments. The value should fit the natural representation of the language runtime, which is also likely the same used within `code.stacktrace` attribute value. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example com.example.MyHttpService.serveRequest\n * @example GuzzleHttp\\\\Client::transfer\n * @example fopen\n *\n * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples.\n * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in\n * `code.stacktrace` without information on arguments.\n *\n * Examples:\n *\n * - Java method: `com.example.MyHttpService.serveRequest`\n * - Java anonymous class method: `com.mycompany.Main$1.myMethod`\n * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod`\n * - PHP function: `GuzzleHttp\\Client::transfer`\n * - Go function: `github.com/my/repo/pkg.foo.func5`\n * - Elixir: `OpenTelemetry.Ctx.new`\n * - Erlang: `opentelemetry_ctx:new`\n * - Rust: `playground::my_module::my_cool_func`\n * - C function: `fopen`\n */\nexports.ATTR_CODE_FUNCTION_NAME = 'code.function.name';\n/**\n * The line number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 42\n */\nexports.ATTR_CODE_LINE_NUMBER = 'code.line.number';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is identical to [`exception.stacktrace`](/docs/exceptions/exceptions-spans.md#stacktrace-representation). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Location'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexports.ATTR_CODE_STACKTRACE = 'code.stacktrace';\n/**\n * The name of a collection (table, container) within the database.\n *\n * @example public.users\n * @example customers\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The collection name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple collections\n * in non-batch operations.\n *\n * For batch operations, if the individual operations are known to have the same\n * collection name then that collection name **SHOULD** be used.\n */\nexports.ATTR_DB_COLLECTION_NAME = 'db.collection.name';\n/**\n * The name of the database, fully qualified within the server address and port.\n *\n * @example customers\n * @example test.users\n *\n * @note If a database system has multiple namespace components, they **SHOULD** be concatenated from the most general to the most specific namespace component, using `|` as a separator between the components. Any missing components (and their associated separators) **SHOULD** be omitted.\n * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system.\n * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.\n */\nexports.ATTR_DB_NAMESPACE = 'db.namespace';\n/**\n * The number of queries included in a batch operation.\n *\n * @example 2\n * @example 3\n * @example 4\n *\n * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`.\n */\nexports.ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size';\n/**\n * The name of the operation or command being executed.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The operation name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple operations\n * in non-batch operations.\n *\n * If spaces can occur in the operation name, multiple consecutive spaces\n * **SHOULD** be normalized to a single space.\n *\n * For batch operations, if the individual operations are known to have the same operation name\n * then that operation name **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexports.ATTR_DB_OPERATION_NAME = 'db.operation.name';\n/**\n * Low cardinality summary of a database query.\n *\n * @example SELECT wuser_table\n * @example INSERT shipping_details SELECT orders\n * @example get user by id\n *\n * @note The query summary describes a class of database queries and is useful\n * as a grouping key, especially when analyzing telemetry for database\n * calls involving complex queries.\n *\n * Summary may be available to the instrumentation through\n * instrumentation hooks or other means. If it is not available, instrumentations\n * that support query parsing **SHOULD** generate a summary following\n * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query)\n * section.\n *\n * For batch operations, if the individual operations are known to have the same query summary\n * then that query summary **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.query.summary` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexports.ATTR_DB_QUERY_SUMMARY = 'db.query.summary';\n/**\n * The database query being executed.\n *\n * @example SELECT * FROM wuser_table where username = ?\n * @example SET mykey ?\n *\n * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext).\n * For batch operations, if the individual operations are known to have the same query text then that query text **SHOULD** be used, otherwise all of the individual query texts **SHOULD** be concatenated with separator `; ` or some other database system specific separator if more applicable.\n * Parameterized query text **SHOULD NOT** be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk.\n */\nexports.ATTR_DB_QUERY_TEXT = 'db.query.text';\n/**\n * Database response status code.\n *\n * @example 102\n * @example ORA-17002\n * @example 08P01\n * @example 404\n *\n * @note The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.\n * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system.\n */\nexports.ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code';\n/**\n * The name of a stored procedure within the database.\n *\n * @example GetCustomer\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * For batch operations, if the individual operations are known to have the same\n * stored procedure name then that stored procedure name **SHOULD** be used.\n */\nexports.ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name';\n/**\n * The database management system (DBMS) product as identified by the client instrumentation.\n *\n * @note The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge.\n */\nexports.ATTR_DB_SYSTEM_NAME = 'db.system.name';\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexports.DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\";\n/**\n * Enum value \"microsoft.sql_server\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Microsoft SQL Server](https://www.microsoft.com/sql-server)\n */\nexports.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\";\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexports.DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\";\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexports.DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\";\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexports.ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation';\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\";\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\";\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\";\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\";\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\";\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes),\n * it's **RECOMMENDED** to:\n *\n * - Use a domain-specific attribute\n * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexports.ATTR_ERROR_TYPE = 'error.type';\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n *\n * A fallback error value to be used when the instrumentation doesn't define a custom value.\n */\nexports.ERROR_TYPE_VALUE_OTHER = \"_OTHER\";\n/**\n * Indicates that the exception is escaping the scope of the span.\n *\n * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span.\n */\nexports.ATTR_EXCEPTION_ESCAPED = 'exception.escaped';\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n */\nexports.ATTR_EXCEPTION_MESSAGE = 'exception.message';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexports.ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace';\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexports.ATTR_EXCEPTION_TYPE = 'exception.type';\n/**\n * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * The `User-Agent` header is already captured in the `user_agent.original` attribute.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for`\n * attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]` or `[\"1.2.3.4, 1.2.3.5\"]` depending on the HTTP library.\n */\nconst ATTR_HTTP_REQUEST_HEADER = (key) => `http.request.header.${key}`;\nexports.ATTR_HTTP_REQUEST_HEADER = ATTR_HTTP_REQUEST_HEADER;\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods),\n * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html)\n * and the QUERY method defined in [httpbis-safe-method-w-body](https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/?include_text=1).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods.\n *\n *\n * If this override is done via declarative configuration, then the list **MUST** be configurable via the `known_methods` property\n * (an array of case-sensitive strings with minimum items 0) under `.instrumentation/development.general.http.client` and/or\n * `.instrumentation/development.general.http.server`.\n *\n * In either case, this list **MUST** be a full override of the default known methods,\n * it is not a list of known methods in addition to the defaults.\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexports.ATTR_HTTP_REQUEST_METHOD = 'http.request.method';\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * Any HTTP method that the instrumentation has no prior knowledge of.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\";\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\";\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\";\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_GET = \"GET\";\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\";\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\";\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\";\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_POST = \"POST\";\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\";\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\";\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexports.ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original';\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexports.ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count';\n/**\n * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header`\n * attribute with value `[\"abc\", \"def\"]` or `[\"abc, def\"]` depending on the HTTP library.\n */\nconst ATTR_HTTP_RESPONSE_HEADER = (key) => `http.response.header.${key}`;\nexports.ATTR_HTTP_RESPONSE_HEADER = ATTR_HTTP_RESPONSE_HEADER;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexports.ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code';\n/**\n * The matched route template for the request. This **MUST** be low-cardinality and include all static path segments, with dynamic path segments represented with placeholders.\n *\n * @example /users/:userID?\n * @example my-controller/my-action/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n *\n * A static path segment is a part of the route template with a fixed, low-cardinality value. This includes literal strings like `/users/` and placeholders that\n * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`.\n *\n * A dynamic path segment is a placeholder for a value that can have high cardinality and is not constrained to a predefined list like static path segments.\n *\n * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY**\n * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string.\n */\nexports.ATTR_HTTP_ROUTE = 'http.route';\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexports.ATTR_JVM_GC_ACTION = 'jvm.gc.action';\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexports.ATTR_JVM_GC_NAME = 'jvm.gc.name';\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexports.ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name';\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexports.ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type';\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexports.JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\";\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexports.JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\";\n/**\n * Whether the thread is daemon or not.\n */\nexports.ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon';\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexports.ATTR_JVM_THREAD_STATE = 'jvm.thread.state';\n/**\n * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is blocked waiting for a monitor lock is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\";\n/**\n * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has not yet started is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_NEW = \"new\";\n/**\n * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread executing in the Java virtual machine is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\";\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\";\n/**\n * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\";\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting indefinitely for another thread to perform a particular action is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_WAITING = \"waiting\";\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexports.ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address';\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexports.ATTR_NETWORK_LOCAL_PORT = 'network.local.port';\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexports.ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address';\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexports.ATTR_NETWORK_PEER_PORT = 'network.peer.port';\n/**\n * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexports.ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name';\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexports.ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version';\n/**\n * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexports.ATTR_NETWORK_TRANSPORT = 'network.transport';\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexports.NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\";\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexports.NETWORK_TRANSPORT_VALUE_QUIC = \"quic\";\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexports.NETWORK_TRANSPORT_VALUE_TCP = \"tcp\";\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexports.NETWORK_TRANSPORT_VALUE_UDP = \"udp\";\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexports.NETWORK_TRANSPORT_VALUE_UNIX = \"unix\";\n/**\n * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexports.ATTR_NETWORK_TYPE = 'network.type';\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexports.NETWORK_TYPE_VALUE_IPV4 = \"ipv4\";\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexports.NETWORK_TYPE_VALUE_IPV6 = \"ipv6\";\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexports.ATTR_OTEL_SCOPE_NAME = 'otel.scope.name';\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexports.ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version';\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexports.ATTR_OTEL_STATUS_CODE = 'otel.status_code';\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexports.OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\";\n/**\n * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation has been validated by an Application developer or Operator to have completed successfully.\n */\nexports.OTEL_STATUS_CODE_VALUE_OK = \"OK\";\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexports.ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description';\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexports.ATTR_SERVER_ADDRESS = 'server.address';\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexports.ATTR_SERVER_PORT = 'server.port';\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n */\nexports.ATTR_SERVICE_INSTANCE_ID = 'service.instance.id';\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexports.ATTR_SERVICE_NAME = 'service.name';\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\nexports.ATTR_SERVICE_NAMESPACE = 'service.namespace';\n/**\n * The version string of the service component. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexports.ATTR_SERVICE_VERSION = 'service.version';\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexports.ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status';\n/**\n * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed because the app is shutting down.\n */\nexports.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\";\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexports.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\";\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexports.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\";\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexports.ATTR_SIGNALR_TRANSPORT = 'signalr.transport';\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexports.SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\";\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexports.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\";\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexports.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\";\n/**\n * The language of the telemetry SDK.\n */\nexports.ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\";\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\";\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\";\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\";\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\";\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\";\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\";\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\";\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\";\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\";\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\";\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\";\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexports.ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexports.ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexports.ATTR_URL_FRAGMENT = 'url.fragment';\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment\n * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n *\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`.\n * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n *\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed).\n *\n * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the\n * value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `https://www.example.com/path?color=blue&sig=REDACTED`.\n */\nexports.ATTR_URL_FULL = 'url.full';\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexports.ATTR_URL_PATH = 'url.path';\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexports.ATTR_URL_QUERY = 'url.query';\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexports.ATTR_URL_SCHEME = 'url.scheme';\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexports.ATTR_USER_AGENT_ORIGINAL = 'user_agent.original';\n//# sourceMappingURL=stable_attributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = exports.METRIC_KESTREL_UPGRADED_CONNECTIONS = exports.METRIC_KESTREL_TLS_HANDSHAKE_DURATION = exports.METRIC_KESTREL_REJECTED_CONNECTIONS = exports.METRIC_KESTREL_QUEUED_REQUESTS = exports.METRIC_KESTREL_QUEUED_CONNECTIONS = exports.METRIC_KESTREL_CONNECTION_DURATION = exports.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = exports.METRIC_KESTREL_ACTIVE_CONNECTIONS = exports.METRIC_JVM_THREAD_COUNT = exports.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = exports.METRIC_JVM_MEMORY_USED = exports.METRIC_JVM_MEMORY_LIMIT = exports.METRIC_JVM_MEMORY_COMMITTED = exports.METRIC_JVM_GC_DURATION = exports.METRIC_JVM_CPU_TIME = exports.METRIC_JVM_CPU_RECENT_UTILIZATION = exports.METRIC_JVM_CPU_COUNT = exports.METRIC_JVM_CLASS_UNLOADED = exports.METRIC_JVM_CLASS_LOADED = exports.METRIC_JVM_CLASS_COUNT = exports.METRIC_HTTP_SERVER_REQUEST_DURATION = exports.METRIC_HTTP_CLIENT_REQUEST_DURATION = exports.METRIC_DOTNET_TIMER_COUNT = exports.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = exports.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = exports.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = exports.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = exports.METRIC_DOTNET_PROCESS_CPU_TIME = exports.METRIC_DOTNET_PROCESS_CPU_COUNT = exports.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = exports.METRIC_DOTNET_JIT_COMPILED_METHODS = exports.METRIC_DOTNET_JIT_COMPILED_IL_SIZE = exports.METRIC_DOTNET_JIT_COMPILATION_TIME = exports.METRIC_DOTNET_GC_PAUSE_TIME = exports.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = exports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = exports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = exports.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = exports.METRIC_DOTNET_GC_COLLECTIONS = exports.METRIC_DOTNET_EXCEPTIONS = exports.METRIC_DOTNET_ASSEMBLY_COUNT = exports.METRIC_DB_CLIENT_OPERATION_DURATION = exports.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = exports.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = exports.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = exports.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = void 0;\nexports.METRIC_SIGNALR_SERVER_CONNECTION_DURATION = void 0;\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions';\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases';\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests';\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue';\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration';\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n * - Rejected by global or endpoint rate limiting policies\n * - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests';\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts';\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexports.METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration';\n/**\n * The number of .NET assemblies that are currently loaded.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies).\n */\nexports.METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count';\n/**\n * The number of exceptions that have been thrown in managed code.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception).\n */\nexports.METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions';\n/**\n * The number of garbage collections that have occurred since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation.\n */\nexports.METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections';\n/**\n * The *approximate* number of bytes allocated on the managed GC heap since the process has started. The returned value does not include any native allocations.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes).\n */\nexports.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated';\n/**\n * The heap fragmentation, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes).\n */\nexports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size';\n/**\n * The managed GC heap size (including fragmentation), as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes).\n */\nexports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size';\n/**\n * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().TotalCommittedBytes`](https://learn.microsoft.com/dotnet/api/system.gcmemoryinfo.totalcommittedbytes). Committed virtual memory may be larger than the heap size because it includes both memory for storing existing objects (the heap size) and some extra memory that is ready to handle newly allocated objects in the future.\n */\nexports.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size';\n/**\n * The total amount of time paused in GC since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration).\n */\nexports.METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time';\n/**\n * The amount of time the JIT compiler has spent compiling methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime).\n */\nexports.METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time';\n/**\n * Count of bytes of intermediate language that have been compiled since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes).\n */\nexports.METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size';\n/**\n * The number of times the JIT compiler (re)compiled methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount).\n */\nexports.METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods';\n/**\n * The number of times there was contention when trying to acquire a monitor lock since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount).\n */\nexports.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions';\n/**\n * The number of processors available to the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount).\n */\nexports.METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count';\n/**\n * CPU time used by the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing the corresponding processor time properties on [`System.Diagnostics.Process`](https://learn.microsoft.com/dotnet/api/system.diagnostics.process).\n */\nexports.METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time';\n/**\n * The number of bytes of physical memory mapped to the process context.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset).\n */\nexports.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set';\n/**\n * The number of work items that are currently queued to be processed by the thread pool.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount).\n */\nexports.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length';\n/**\n * The number of thread pool threads that currently exist.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount).\n */\nexports.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count';\n/**\n * The number of work items that the thread pool has completed since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount).\n */\nexports.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count';\n/**\n * The number of timer instances that are currently active.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount).\n */\nexports.METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count';\n/**\n * Duration of HTTP client requests.\n */\nexports.METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration';\n/**\n * Duration of HTTP server requests.\n */\nexports.METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration';\n/**\n * Number of classes currently loaded.\n */\nexports.METRIC_JVM_CLASS_COUNT = 'jvm.class.count';\n/**\n * Number of classes loaded since JVM start.\n */\nexports.METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded';\n/**\n * Number of classes unloaded since JVM start.\n */\nexports.METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded';\n/**\n * Number of processors available to the Java virtual machine.\n */\nexports.METRIC_JVM_CPU_COUNT = 'jvm.cpu.count';\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexports.METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization';\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexports.METRIC_JVM_CPU_TIME = 'jvm.cpu.time';\n/**\n * Duration of JVM garbage collection actions.\n */\nexports.METRIC_JVM_GC_DURATION = 'jvm.gc.duration';\n/**\n * Measure of memory committed.\n */\nexports.METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed';\n/**\n * Measure of max obtainable memory.\n */\nexports.METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit';\n/**\n * Measure of memory used.\n */\nexports.METRIC_JVM_MEMORY_USED = 'jvm.memory.used';\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexports.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc';\n/**\n * Number of executing platform threads.\n */\nexports.METRIC_JVM_THREAD_COUNT = 'jvm.thread.count';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections';\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration';\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections';\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests';\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections';\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration';\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration';\n//# sourceMappingURL=stable_metrics.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENT_EXCEPTION = void 0;\n//-----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n/**\n * This event describes a single exception.\n */\nexports.EVENT_EXCEPTION = 'exception';\n//# sourceMappingURL=stable_events.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n// Deprecated. These are kept around for compatibility purposes\n__exportStar(require(\"./trace\"), exports);\n__exportStar(require(\"./resource\"), exports);\n// Use these instead\n__exportStar(require(\"./stable_attributes\"), exports);\n__exportStar(require(\"./stable_metrics\"), exports);\n__exportStar(require(\"./stable_events\"), exports);\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_PROCESS_RUNTIME_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SDK_INFO = void 0;\nconst version_1 = require(\"../../version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../../semconv\");\n/** Constants describing the SDK in use */\nexports.SDK_INFO = {\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: semantic_conventions_1.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: version_1.VERSION,\n};\n//# sourceMappingURL=sdk-info.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.otperformance = exports.SDK_INFO = exports._globalThis = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = void 0;\nvar environment_1 = require(\"./environment\");\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return environment_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return environment_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return environment_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return environment_1.getStringListFromEnv; } });\nvar globalThis_1 = require(\"../../common/globalThis\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return globalThis_1._globalThis; } });\nvar sdk_info_1 = require(\"./sdk-info\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return sdk_info_1.SDK_INFO; } });\n/**\n * @deprecated Use performance directly.\n */\nexports.otperformance = performance;\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringListFromEnv = exports.getNumberFromEnv = exports.getStringFromEnv = exports.getBooleanFromEnv = exports.otperformance = exports._globalThis = exports.SDK_INFO = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return node_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return node_1._globalThis; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return node_1.otperformance; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return node_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return node_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return node_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return node_1.getStringListFromEnv; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addHrTimes = exports.isTimeInput = exports.isTimeInputHrTime = exports.hrTimeToMicroseconds = exports.hrTimeToMilliseconds = exports.hrTimeToNanoseconds = exports.hrTimeToTimeStamp = exports.hrTimeDuration = exports.timeInputToHrTime = exports.hrTime = exports.getTimeOrigin = exports.millisToHrTime = void 0;\nconst platform_1 = require(\"../platform\");\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nfunction millisToHrTime(epochMillis) {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\nexports.millisToHrTime = millisToHrTime;\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nfunction getTimeOrigin() {\n return platform_1.otperformance.timeOrigin;\n}\nexports.getTimeOrigin = getTimeOrigin;\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nfunction hrTime(performanceNow) {\n const timeOrigin = millisToHrTime(platform_1.otperformance.timeOrigin);\n const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : platform_1.otperformance.now());\n return addHrTimes(timeOrigin, now);\n}\nexports.hrTime = hrTime;\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nfunction timeInputToHrTime(time) {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time;\n }\n else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < platform_1.otperformance.timeOrigin) {\n return hrTime(time);\n }\n else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n }\n else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n }\n else {\n throw TypeError('Invalid input type');\n }\n}\nexports.timeInputToHrTime = timeInputToHrTime;\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nfunction hrTimeDuration(startTime, endTime) {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n return [seconds, nanos];\n}\nexports.hrTimeDuration = hrTimeDuration;\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nfunction hrTimeToTimeStamp(time) {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\nexports.hrTimeToTimeStamp = hrTimeToTimeStamp;\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nfunction hrTimeToNanoseconds(time) {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\nexports.hrTimeToNanoseconds = hrTimeToNanoseconds;\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nfunction hrTimeToMilliseconds(time) {\n return time[0] * 1e3 + time[1] / 1e6;\n}\nexports.hrTimeToMilliseconds = hrTimeToMilliseconds;\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nfunction hrTimeToMicroseconds(time) {\n return time[0] * 1e6 + time[1] / 1e3;\n}\nexports.hrTimeToMicroseconds = hrTimeToMicroseconds;\n/**\n * check if time is HrTime\n * @param value\n */\nfunction isTimeInputHrTime(value) {\n return (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number');\n}\nexports.isTimeInputHrTime = isTimeInputHrTime;\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nfunction isTimeInput(value) {\n return (isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date);\n}\nexports.isTimeInput = isTimeInput;\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nfunction addHrTimes(time1, time2) {\n const out = [time1[0] + time2[0], time1[1] + time2[1]];\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n return out;\n}\nexports.addHrTimes = addHrTimes;\n//# sourceMappingURL=time.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unrefTimer = void 0;\n/**\n * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package.\n * @param timer\n */\nfunction unrefTimer(timer) {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\nexports.unrefTimer = unrefTimer;\n//# sourceMappingURL=timer-util.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportResultCode = void 0;\nvar ExportResultCode;\n(function (ExportResultCode) {\n ExportResultCode[ExportResultCode[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExportResultCode[ExportResultCode[\"FAILED\"] = 1] = \"FAILED\";\n})(ExportResultCode = exports.ExportResultCode || (exports.ExportResultCode = {}));\n//# sourceMappingURL=ExportResult.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompositePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/** Combines multiple propagators into a single propagator. */\nclass CompositePropagator {\n _propagators;\n _fields;\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config = {}) {\n this._propagators = config.propagators ?? [];\n this._fields = Array.from(new Set(this._propagators\n // older propagators may not have fields function, null check to be sure\n .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n .reduce((x, y) => x.concat(y), [])));\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same carrier key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to inject\n * @param carrier Carrier into which context will be injected\n */\n inject(context, carrier, setter) {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n }\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same context key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to add values to\n * @param carrier Carrier from which to extract context\n */\n extract(context, carrier, getter) {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n return ctx;\n }, context);\n }\n fields() {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\nexports.CompositePropagator = CompositePropagator;\n//# sourceMappingURL=composite.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=validators.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceState = void 0;\nconst validators_1 = require(\"../internal/validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceState {\n _internalState = new Map();\n constructor(rawTraceState) {\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return this._keys()\n .reduce((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, validators_1.validateKey)(key) && (0, validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceState = TraceState;\n//# sourceMappingURL=TraceState.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CTraceContextPropagator = exports.parseTraceParent = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"./suppress-tracing\");\nconst TraceState_1 = require(\"./TraceState\");\nexports.TRACE_PARENT_HEADER = 'traceparent';\nexports.TRACE_STATE_HEADER = 'tracestate';\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(`^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`);\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n * It should be dynamically generated server side to have the server's request trace Id,\n * a parent span Id that was set on the server's request span,\n * and the trace flags to indicate the server's sampling decision\n * (01 = sampled, 00 = not sampled).\n * for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n * For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nfunction parseTraceParent(traceParent) {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match)\n return null;\n // According to the specification the implementation should be compatible\n // with future versions. If there are more parts, we only reject it if it's using version 00\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n if (match[1] === '00' && match[5])\n return null;\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\nexports.parseTraceParent = parseTraceParent;\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nclass W3CTraceContextPropagator {\n inject(context, carrier, setter) {\n const spanContext = api_1.trace.getSpanContext(context);\n if (!spanContext ||\n (0, suppress_tracing_1.isTracingSuppressed)(context) ||\n !(0, api_1.isSpanContextValid)(spanContext))\n return;\n const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || api_1.TraceFlags.NONE).toString(16)}`;\n setter.set(carrier, exports.TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(carrier, exports.TRACE_STATE_HEADER, spanContext.traceState.serialize());\n }\n }\n extract(context, carrier, getter) {\n const traceParentHeader = getter.get(carrier, exports.TRACE_PARENT_HEADER);\n if (!traceParentHeader)\n return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string')\n return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext)\n return context;\n spanContext.isRemote = true;\n const traceStateHeader = getter.get(carrier, exports.TRACE_STATE_HEADER);\n if (traceStateHeader) {\n // If more than one `tracestate` header is found, we merge them into a\n // single header.\n const state = Array.isArray(traceStateHeader)\n ? traceStateHeader.join(',')\n : traceStateHeader;\n spanContext.traceState = new TraceState_1.TraceState(typeof state === 'string' ? state : undefined);\n }\n return api_1.trace.setSpanContext(context, spanContext);\n }\n fields() {\n return [exports.TRACE_PARENT_HEADER, exports.TRACE_STATE_HEADER];\n }\n}\nexports.W3CTraceContextPropagator = W3CTraceContextPropagator;\n//# sourceMappingURL=W3CTraceContextPropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRPCMetadata = exports.deleteRPCMetadata = exports.setRPCMetadata = exports.RPCType = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst RPC_METADATA_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key RPC_METADATA');\nvar RPCType;\n(function (RPCType) {\n RPCType[\"HTTP\"] = \"http\";\n})(RPCType = exports.RPCType || (exports.RPCType = {}));\nfunction setRPCMetadata(context, meta) {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\nexports.setRPCMetadata = setRPCMetadata;\nfunction deleteRPCMetadata(context) {\n return context.deleteValue(RPC_METADATA_KEY);\n}\nexports.deleteRPCMetadata = deleteRPCMetadata;\nfunction getRPCMetadata(context) {\n return context.getValue(RPC_METADATA_KEY);\n}\nexports.getRPCMetadata = getRPCMetadata;\n//# sourceMappingURL=rpc-metadata.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPlainObject = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n return false;\n }\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString);\n}\nexports.isPlainObject = isPlainObject;\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value)\n ? getRawTag(value)\n : objectToString(value);\n}\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n }\n catch {\n // silence\n }\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n }\n else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n//# sourceMappingURL=lodash.merge.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst lodash_merge_1 = require(\"./lodash.merge\");\nconst MAX_LEVEL = 20;\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nfunction merge(...args) {\n let result = args.shift();\n const objects = new WeakMap();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n return result;\n}\nexports.merge = merge;\nfunction takeValue(value) {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(one, two, level = 0, objects) {\n let result;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\n }\n else if (isArray(one)) {\n result = one.slice();\n if (isArray(two)) {\n for (let i = 0, j = two.length; i < j; i++) {\n result.push(takeValue(two[i]));\n }\n }\n else if (isObject(two)) {\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n result[key] = takeValue(two[key]);\n }\n }\n }\n else if (isObject(one)) {\n if (isObject(two)) {\n if (!shouldMerge(one, two)) {\n return two;\n }\n result = Object.assign({}, one);\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n }\n else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n }\n else {\n const obj1 = result[key];\n const obj2 = twoValue;\n if (wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)) {\n delete result[key];\n }\n else {\n if (isObject(obj1) && isObject(obj2)) {\n const arr1 = objects.get(obj1) || [];\n const arr2 = objects.get(obj2) || [];\n arr1.push({ obj: one, key });\n arr2.push({ obj: two, key });\n objects.set(obj1, arr1);\n objects.set(obj2, arr2);\n }\n result[key] = mergeTwoObjects(result[key], twoValue, level, objects);\n }\n }\n }\n }\n else {\n result = two;\n }\n }\n return result;\n}\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(obj, key, objects) {\n const arr = objects.get(obj[key]) || [];\n for (let i = 0, j = arr.length; i < j; i++) {\n const info = arr[i];\n if (info.key === key && info.obj === obj) {\n return true;\n }\n }\n return false;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isObject(value) {\n return (!isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object');\n}\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined' ||\n value instanceof Date ||\n value instanceof RegExp ||\n value === null);\n}\nfunction shouldMerge(one, two) {\n if (!(0, lodash_merge_1.isPlainObject)(one) || !(0, lodash_merge_1.isPlainObject)(two)) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=merge.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callWithTimeout = exports.TimeoutError = void 0;\n/**\n * Error that is thrown on timeouts.\n */\nclass TimeoutError extends Error {\n constructor(message) {\n super(message);\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\nexports.TimeoutError = TimeoutError;\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *

NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nfunction callWithTimeout(promise, timeout) {\n let timeoutHandle;\n const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n return Promise.race([promise, timeoutPromise]).then(result => {\n clearTimeout(timeoutHandle);\n return result;\n }, reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n });\n}\nexports.callWithTimeout = callWithTimeout;\n//# sourceMappingURL=timeout.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isUrlIgnored = exports.urlMatches = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nfunction urlMatches(url, urlToMatch) {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n }\n else {\n return !!url.match(urlToMatch);\n }\n}\nexports.urlMatches = urlMatches;\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nfunction isUrlIgnored(url, ignoredUrls) {\n if (!ignoredUrls) {\n return false;\n }\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\nexports.isUrlIgnored = isUrlIgnored;\n//# sourceMappingURL=url.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deferred = void 0;\nclass Deferred {\n _promise;\n _resolve;\n _reject;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n get promise() {\n return this._promise;\n }\n resolve(val) {\n this._resolve(val);\n }\n reject(err) {\n this._reject(err);\n }\n}\nexports.Deferred = Deferred;\n//# sourceMappingURL=promise.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindOnceFuture = void 0;\nconst promise_1 = require(\"./promise\");\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nclass BindOnceFuture {\n _isCalled = false;\n _deferred = new promise_1.Deferred();\n _callback;\n _that;\n constructor(callback, that) {\n this._callback = callback;\n this._that = that;\n }\n get isCalled() {\n return this._isCalled;\n }\n get promise() {\n return this._deferred.promise;\n }\n call(...args) {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err));\n }\n catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\nexports.BindOnceFuture = BindOnceFuture;\n//# sourceMappingURL=callback.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diagLogLevelFromString = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst logLevelMap = {\n ALL: api_1.DiagLogLevel.ALL,\n VERBOSE: api_1.DiagLogLevel.VERBOSE,\n DEBUG: api_1.DiagLogLevel.DEBUG,\n INFO: api_1.DiagLogLevel.INFO,\n WARN: api_1.DiagLogLevel.WARN,\n ERROR: api_1.DiagLogLevel.ERROR,\n NONE: api_1.DiagLogLevel.NONE,\n};\n/**\n * Convert a string to a {@link DiagLogLevel}, defaults to {@link DiagLogLevel} if the log level does not exist or undefined if the input is undefined.\n * @param value\n */\nfunction diagLogLevelFromString(value) {\n if (value == null) {\n // don't fall back to default - no value set has different semantics for ús than an incorrect value (do not set vs. fall back to default)\n return undefined;\n }\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n if (resolvedLogLevel == null) {\n api_1.diag.warn(`Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`);\n return api_1.DiagLogLevel.INFO;\n }\n return resolvedLogLevel;\n}\nexports.diagLogLevelFromString = diagLogLevelFromString;\n//# sourceMappingURL=configuration.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._export = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../trace/suppress-tracing\");\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nfunction _export(exporter, arg) {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n api_1.context.with((0, suppress_tracing_1.suppressTracing)(api_1.context.active()), () => {\n exporter.export(arg, resolve);\n });\n });\n}\nexports._export = _export;\n//# sourceMappingURL=exporter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.internal = exports.diagLogLevelFromString = exports.BindOnceFuture = exports.urlMatches = exports.isUrlIgnored = exports.callWithTimeout = exports.TimeoutError = exports.merge = exports.TraceState = exports.unsuppressTracing = exports.suppressTracing = exports.isTracingSuppressed = exports.setRPCMetadata = exports.getRPCMetadata = exports.deleteRPCMetadata = exports.RPCType = exports.parseTraceParent = exports.W3CTraceContextPropagator = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = exports.CompositePropagator = exports.otperformance = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports._globalThis = exports.SDK_INFO = exports.parseKeyPairsIntoRecord = exports.ExportResultCode = exports.unrefTimer = exports.timeInputToHrTime = exports.millisToHrTime = exports.isTimeInputHrTime = exports.isTimeInput = exports.hrTimeToTimeStamp = exports.hrTimeToNanoseconds = exports.hrTimeToMilliseconds = exports.hrTimeToMicroseconds = exports.hrTimeDuration = exports.hrTime = exports.getTimeOrigin = exports.addHrTimes = exports.loggingErrorHandler = exports.setGlobalErrorHandler = exports.globalErrorHandler = exports.sanitizeAttributes = exports.isAttributeValue = exports.AnchoredClock = exports.W3CBaggagePropagator = void 0;\nvar W3CBaggagePropagator_1 = require(\"./baggage/propagation/W3CBaggagePropagator\");\nObject.defineProperty(exports, \"W3CBaggagePropagator\", { enumerable: true, get: function () { return W3CBaggagePropagator_1.W3CBaggagePropagator; } });\nvar anchored_clock_1 = require(\"./common/anchored-clock\");\nObject.defineProperty(exports, \"AnchoredClock\", { enumerable: true, get: function () { return anchored_clock_1.AnchoredClock; } });\nvar attributes_1 = require(\"./common/attributes\");\nObject.defineProperty(exports, \"isAttributeValue\", { enumerable: true, get: function () { return attributes_1.isAttributeValue; } });\nObject.defineProperty(exports, \"sanitizeAttributes\", { enumerable: true, get: function () { return attributes_1.sanitizeAttributes; } });\nvar global_error_handler_1 = require(\"./common/global-error-handler\");\nObject.defineProperty(exports, \"globalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.globalErrorHandler; } });\nObject.defineProperty(exports, \"setGlobalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.setGlobalErrorHandler; } });\nvar logging_error_handler_1 = require(\"./common/logging-error-handler\");\nObject.defineProperty(exports, \"loggingErrorHandler\", { enumerable: true, get: function () { return logging_error_handler_1.loggingErrorHandler; } });\nvar time_1 = require(\"./common/time\");\nObject.defineProperty(exports, \"addHrTimes\", { enumerable: true, get: function () { return time_1.addHrTimes; } });\nObject.defineProperty(exports, \"getTimeOrigin\", { enumerable: true, get: function () { return time_1.getTimeOrigin; } });\nObject.defineProperty(exports, \"hrTime\", { enumerable: true, get: function () { return time_1.hrTime; } });\nObject.defineProperty(exports, \"hrTimeDuration\", { enumerable: true, get: function () { return time_1.hrTimeDuration; } });\nObject.defineProperty(exports, \"hrTimeToMicroseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMicroseconds; } });\nObject.defineProperty(exports, \"hrTimeToMilliseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMilliseconds; } });\nObject.defineProperty(exports, \"hrTimeToNanoseconds\", { enumerable: true, get: function () { return time_1.hrTimeToNanoseconds; } });\nObject.defineProperty(exports, \"hrTimeToTimeStamp\", { enumerable: true, get: function () { return time_1.hrTimeToTimeStamp; } });\nObject.defineProperty(exports, \"isTimeInput\", { enumerable: true, get: function () { return time_1.isTimeInput; } });\nObject.defineProperty(exports, \"isTimeInputHrTime\", { enumerable: true, get: function () { return time_1.isTimeInputHrTime; } });\nObject.defineProperty(exports, \"millisToHrTime\", { enumerable: true, get: function () { return time_1.millisToHrTime; } });\nObject.defineProperty(exports, \"timeInputToHrTime\", { enumerable: true, get: function () { return time_1.timeInputToHrTime; } });\nvar timer_util_1 = require(\"./common/timer-util\");\nObject.defineProperty(exports, \"unrefTimer\", { enumerable: true, get: function () { return timer_util_1.unrefTimer; } });\nvar ExportResult_1 = require(\"./ExportResult\");\nObject.defineProperty(exports, \"ExportResultCode\", { enumerable: true, get: function () { return ExportResult_1.ExportResultCode; } });\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"parseKeyPairsIntoRecord\", { enumerable: true, get: function () { return utils_1.parseKeyPairsIntoRecord; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return platform_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return platform_1._globalThis; } });\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return platform_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return platform_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return platform_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return platform_1.getStringListFromEnv; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return platform_1.otperformance; } });\nvar composite_1 = require(\"./propagation/composite\");\nObject.defineProperty(exports, \"CompositePropagator\", { enumerable: true, get: function () { return composite_1.CompositePropagator; } });\nvar W3CTraceContextPropagator_1 = require(\"./trace/W3CTraceContextPropagator\");\nObject.defineProperty(exports, \"TRACE_PARENT_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_PARENT_HEADER; } });\nObject.defineProperty(exports, \"TRACE_STATE_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_STATE_HEADER; } });\nObject.defineProperty(exports, \"W3CTraceContextPropagator\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.W3CTraceContextPropagator; } });\nObject.defineProperty(exports, \"parseTraceParent\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.parseTraceParent; } });\nvar rpc_metadata_1 = require(\"./trace/rpc-metadata\");\nObject.defineProperty(exports, \"RPCType\", { enumerable: true, get: function () { return rpc_metadata_1.RPCType; } });\nObject.defineProperty(exports, \"deleteRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.deleteRPCMetadata; } });\nObject.defineProperty(exports, \"getRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.getRPCMetadata; } });\nObject.defineProperty(exports, \"setRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.setRPCMetadata; } });\nvar suppress_tracing_1 = require(\"./trace/suppress-tracing\");\nObject.defineProperty(exports, \"isTracingSuppressed\", { enumerable: true, get: function () { return suppress_tracing_1.isTracingSuppressed; } });\nObject.defineProperty(exports, \"suppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.suppressTracing; } });\nObject.defineProperty(exports, \"unsuppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.unsuppressTracing; } });\nvar TraceState_1 = require(\"./trace/TraceState\");\nObject.defineProperty(exports, \"TraceState\", { enumerable: true, get: function () { return TraceState_1.TraceState; } });\nvar merge_1 = require(\"./utils/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar timeout_1 = require(\"./utils/timeout\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return timeout_1.TimeoutError; } });\nObject.defineProperty(exports, \"callWithTimeout\", { enumerable: true, get: function () { return timeout_1.callWithTimeout; } });\nvar url_1 = require(\"./utils/url\");\nObject.defineProperty(exports, \"isUrlIgnored\", { enumerable: true, get: function () { return url_1.isUrlIgnored; } });\nObject.defineProperty(exports, \"urlMatches\", { enumerable: true, get: function () { return url_1.urlMatches; } });\nvar callback_1 = require(\"./utils/callback\");\nObject.defineProperty(exports, \"BindOnceFuture\", { enumerable: true, get: function () { return callback_1.BindOnceFuture; } });\nvar configuration_1 = require(\"./utils/configuration\");\nObject.defineProperty(exports, \"diagLogLevelFromString\", { enumerable: true, get: function () { return configuration_1.diagLogLevelFromString; } });\nconst exporter_1 = require(\"./internal/exporter\");\nexports.internal = {\n _export: exporter_1._export,\n};\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '0.213.0';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeverityNumber = void 0;\nvar SeverityNumber;\n(function (SeverityNumber) {\n SeverityNumber[SeverityNumber[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n SeverityNumber[SeverityNumber[\"TRACE\"] = 1] = \"TRACE\";\n SeverityNumber[SeverityNumber[\"TRACE2\"] = 2] = \"TRACE2\";\n SeverityNumber[SeverityNumber[\"TRACE3\"] = 3] = \"TRACE3\";\n SeverityNumber[SeverityNumber[\"TRACE4\"] = 4] = \"TRACE4\";\n SeverityNumber[SeverityNumber[\"DEBUG\"] = 5] = \"DEBUG\";\n SeverityNumber[SeverityNumber[\"DEBUG2\"] = 6] = \"DEBUG2\";\n SeverityNumber[SeverityNumber[\"DEBUG3\"] = 7] = \"DEBUG3\";\n SeverityNumber[SeverityNumber[\"DEBUG4\"] = 8] = \"DEBUG4\";\n SeverityNumber[SeverityNumber[\"INFO\"] = 9] = \"INFO\";\n SeverityNumber[SeverityNumber[\"INFO2\"] = 10] = \"INFO2\";\n SeverityNumber[SeverityNumber[\"INFO3\"] = 11] = \"INFO3\";\n SeverityNumber[SeverityNumber[\"INFO4\"] = 12] = \"INFO4\";\n SeverityNumber[SeverityNumber[\"WARN\"] = 13] = \"WARN\";\n SeverityNumber[SeverityNumber[\"WARN2\"] = 14] = \"WARN2\";\n SeverityNumber[SeverityNumber[\"WARN3\"] = 15] = \"WARN3\";\n SeverityNumber[SeverityNumber[\"WARN4\"] = 16] = \"WARN4\";\n SeverityNumber[SeverityNumber[\"ERROR\"] = 17] = \"ERROR\";\n SeverityNumber[SeverityNumber[\"ERROR2\"] = 18] = \"ERROR2\";\n SeverityNumber[SeverityNumber[\"ERROR3\"] = 19] = \"ERROR3\";\n SeverityNumber[SeverityNumber[\"ERROR4\"] = 20] = \"ERROR4\";\n SeverityNumber[SeverityNumber[\"FATAL\"] = 21] = \"FATAL\";\n SeverityNumber[SeverityNumber[\"FATAL2\"] = 22] = \"FATAL2\";\n SeverityNumber[SeverityNumber[\"FATAL3\"] = 23] = \"FATAL3\";\n SeverityNumber[SeverityNumber[\"FATAL4\"] = 24] = \"FATAL4\";\n})(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {}));\n//# sourceMappingURL=LogRecord.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER = exports.NoopLogger = void 0;\nclass NoopLogger {\n emit(_logRecord) { }\n}\nexports.NoopLogger = NoopLogger;\nexports.NOOP_LOGGER = new NoopLogger();\n//# sourceMappingURL=NoopLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = void 0;\nexports.GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\nexports._global = globalThis;\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nfunction makeGetter(requiredVersion, instance, fallback) {\n return (version) => version === requiredVersion ? instance : fallback;\n}\nexports.makeGetter = makeGetter;\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n//# sourceMappingURL=global-utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass NoopLoggerProvider {\n getLogger(_name, _version, _options) {\n return new NoopLogger_1.NoopLogger();\n }\n}\nexports.NoopLoggerProvider = NoopLoggerProvider;\nexports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n//# sourceMappingURL=NoopLoggerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLogger = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass ProxyLogger {\n constructor(provider, name, version, options) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord) {\n this._getLogger().emit(logRecord);\n }\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(this.name, this.version, this.options);\n if (!logger) {\n return NoopLogger_1.NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\nexports.ProxyLogger = ProxyLogger;\n//# sourceMappingURL=ProxyLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLoggerProvider = void 0;\nconst NoopLoggerProvider_1 = require(\"./NoopLoggerProvider\");\nconst ProxyLogger_1 = require(\"./ProxyLogger\");\nclass ProxyLoggerProvider {\n getLogger(name, version, options) {\n var _a;\n return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger_1.ProxyLogger(this, name, version, options));\n }\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER;\n }\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate) {\n this._delegate = delegate;\n }\n /**\n * @internal\n */\n _getDelegateLogger(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options);\n }\n}\nexports.ProxyLoggerProvider = ProxyLoggerProvider;\n//# sourceMappingURL=ProxyLoggerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogsAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopLoggerProvider_1 = require(\"../NoopLoggerProvider\");\nconst ProxyLoggerProvider_1 = require(\"../ProxyLoggerProvider\");\nclass LogsAPI {\n constructor() {\n this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n }\n static getInstance() {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n return this._instance;\n }\n setGlobalLoggerProvider(provider) {\n if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY] = (0, global_utils_1.makeGetter)(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER);\n this._proxyLoggerProvider._setDelegate(provider);\n return provider;\n }\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n getLoggerProvider() {\n var _a, _b;\n return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider);\n }\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n getLogger(name, version, options) {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n /** Remove the global logger provider */\n disable() {\n delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n }\n}\nexports.LogsAPI = LogsAPI;\n//# sourceMappingURL=logs.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logs = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = void 0;\nvar LogRecord_1 = require(\"./types/LogRecord\");\nObject.defineProperty(exports, \"SeverityNumber\", { enumerable: true, get: function () { return LogRecord_1.SeverityNumber; } });\nvar NoopLogger_1 = require(\"./NoopLogger\");\nObject.defineProperty(exports, \"NOOP_LOGGER\", { enumerable: true, get: function () { return NoopLogger_1.NOOP_LOGGER; } });\nObject.defineProperty(exports, \"NoopLogger\", { enumerable: true, get: function () { return NoopLogger_1.NoopLogger; } });\nconst logs_1 = require(\"./api/logs\");\nexports.logs = logs_1.LogsAPI.getInstance();\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.disableInstrumentations = exports.enableInstrumentations = void 0;\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nfunction enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\nexports.enableInstrumentations = enableInstrumentations;\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nfunction disableInstrumentations(instrumentations) {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\nexports.disableInstrumentations = disableInstrumentations;\n//# sourceMappingURL=autoLoaderUtils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerInstrumentations = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst autoLoaderUtils_1 = require(\"./autoLoaderUtils\");\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nfunction registerInstrumentations(options) {\n const tracerProvider = options.tracerProvider || api_1.trace.getTracerProvider();\n const meterProvider = options.meterProvider || api_1.metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || api_logs_1.logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n (0, autoLoaderUtils_1.enableInstrumentations)(instrumentations, tracerProvider, meterProvider, loggerProvider);\n return () => {\n (0, autoLoaderUtils_1.disableInstrumentations)(instrumentations);\n };\n}\nexports.registerInstrumentations = registerInstrumentations;\n//# sourceMappingURL=autoLoader.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.satisfies = void 0;\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\nconst api_1 = require(\"@opentelemetry/api\");\nconst VERSION_REGEXP = /^(?:v)?(?(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*))(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst RANGE_REGEXP = /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|0|[1-9]\\d*))?)(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nfunction satisfies(version, range, options) {\n // Strict semver format check\n if (!_validateVersion(version)) {\n api_1.diag.error(`Invalid version: ${version}`);\n return false;\n }\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n // Parse version\n const parsedVersion = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n const allParsedRanges = [];\n // Check given version whether it satisfies given range expression\n const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options);\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\nexports.satisfies = satisfies;\nfunction _validateVersion(version) {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\nfunction _doSatisfies(parsedVersion, range, allParsedRanges, options) {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n }\n else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n }\n else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\nfunction _checkRange(parsedVersion, range, allParsedRanges, options) {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n }\n else {\n // Validate and parse range\n const parsedRange = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\nfunction _satisfies(parsedVersion, parsedRange) {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n // Compare version segment first\n let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []);\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments = parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments = parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n }\n else if (!versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length) {\n comparisonResult = 1;\n }\n else if (versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length) {\n comparisonResult = -1;\n }\n else {\n comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments);\n }\n }\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op]?.includes(comparisonResult);\n}\nfunction _doPreleaseCheck(parsedVersion, allParsedRanges) {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version);\n }\n return true;\n}\nfunction _normalizeRange(range, options) {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\nfunction _parseVersion(versionString) {\n const match = versionString.match(VERSION_REGEXP);\n if (!match) {\n api_1.diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n const version = match.groups.version;\n const prerelease = match.groups.prerelease;\n const build = match.groups.build;\n const versionSegments = version.split('.');\n const prereleaseSegments = prerelease?.split('.');\n return {\n op: undefined,\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n build,\n };\n}\nfunction _parseRange(rangeString) {\n if (!rangeString) {\n return {};\n }\n const match = rangeString.match(RANGE_REGEXP);\n if (!match) {\n api_1.diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n let op = match.groups.op;\n const version = match.groups.version;\n const prerelease = match.groups.prerelease;\n const build = match.groups.build;\n const versionSegments = version.split('.');\n const prereleaseSegments = prerelease?.split('.');\n if (op === '==') {\n op = '=';\n }\n return {\n op: op || '=',\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n build,\n };\n}\nfunction _isWildcard(s) {\n return s === '*' || s === 'x' || s === 'X';\n}\nfunction _parseVersionString(v) {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\nfunction _normalizeVersionType(a, b) {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a, b];\n }\n else if (typeof a === 'string') {\n return [a, b];\n }\n else {\n throw new Error('Version segments can only be strings or numbers');\n }\n }\n else {\n return [String(a), String(b)];\n }\n}\nfunction _compareVersionStrings(v1, v2) {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2));\n if (parsedV1 > parsedV2) {\n return 1;\n }\n else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\nfunction _compareVersionSegments(v1, v2) {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN = `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\nconst HYPHENRANGE = `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp) {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n if (isX(M)) {\n ret = '';\n }\n else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n }\n else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n }\n else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp, options) {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n if (isX(M)) {\n ret = '';\n }\n else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n }\n else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n }\n else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n }\n else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n }\n else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n }\n else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n }\n else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n }\n else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n }\n else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp, options) {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n }\n else {\n // nothing is forbidden\n ret = '*';\n }\n }\n else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n }\n else {\n m = +m + 1;\n p = 0;\n }\n }\n else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n }\n else {\n m = +m + 1;\n }\n }\n if (gtlt === '<') {\n pr = '-0';\n }\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n }\n else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n }\n else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp, options) {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n }\n else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n }\n else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n }\n else if (fpr) {\n from = `>=${from}`;\n }\n else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n if (isX(tM)) {\n to = '';\n }\n else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n }\n else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n }\n else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n }\n else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n }\n else {\n to = `<=${to}`;\n }\n return `${from} ${to}`.trim();\n });\n}\n//# sourceMappingURL=semver.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massUnwrap = exports.unwrap = exports.massWrap = exports.wrap = void 0;\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger = console.error.bind(console);\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj, name, value) {\n const enumerable = !!obj[name] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\nconst wrap = (nodule, name, wrapper) => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n const original = nodule[name];\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n const wrapped = wrapper(original, name);\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped;\n};\nexports.wrap = wrap;\nconst massWrap = (nodules, names, wrapper) => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n }\n else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n nodules.forEach(nodule => {\n names.forEach(name => {\n (0, exports.wrap)(nodule, name, wrapper);\n });\n });\n};\nexports.massWrap = massWrap;\nconst unwrap = (nodule, name) => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n const wrapped = nodule[name];\n if (!wrapped.__unwrap) {\n logger('no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?');\n }\n else {\n wrapped.__unwrap();\n return;\n }\n};\nexports.unwrap = unwrap;\nconst massUnwrap = (nodules, names) => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n }\n else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n nodules.forEach(nodule => {\n names.forEach(name => {\n (0, exports.unwrap)(nodule, name);\n });\n });\n};\nexports.massUnwrap = massUnwrap;\nfunction shimmer(options) {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n }\n else {\n logger = options.logger;\n }\n }\n}\nexports.default = shimmer;\nshimmer.wrap = exports.wrap;\nshimmer.massWrap = exports.massWrap;\nshimmer.unwrap = exports.unwrap;\nshimmer.massUnwrap = exports.massUnwrap;\n//# sourceMappingURL=shimmer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationAbstract = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst shimmer = require(\"./shimmer\");\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nclass InstrumentationAbstract {\n _config = {};\n _tracer;\n _meter;\n _logger;\n _diag;\n instrumentationName;\n instrumentationVersion;\n constructor(instrumentationName, instrumentationVersion, config) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n this.setConfig(config);\n this._diag = api_1.diag.createComponentLogger({\n namespace: instrumentationName,\n });\n this._tracer = api_1.trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = api_1.metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = api_logs_1.logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n /* Api to wrap instrumented method */\n _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n _massUnwrap = shimmer.massUnwrap;\n /* Returns meter */\n get meter() {\n return this._meter;\n }\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n setMeterProvider(meterProvider) {\n this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion);\n this._updateMetricInstruments();\n }\n /* Returns logger */\n get logger() {\n return this._logger;\n }\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n setLoggerProvider(loggerProvider) {\n this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion);\n }\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n getModuleDefinitions() {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n return initResult;\n }\n /**\n * Sets the new metric instruments with the current Meter.\n */\n _updateMetricInstruments() {\n return;\n }\n /* Returns InstrumentationConfig */\n getConfig() {\n return this._config;\n }\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n setConfig(config) {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n setTracerProvider(tracerProvider) {\n this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion);\n }\n /* Returns tracer */\n get tracer() {\n return this._tracer;\n }\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n _runSpanCustomizationHook(hookHandler, triggerName, span, info) {\n if (!hookHandler) {\n return;\n }\n try {\n hookHandler(span, info);\n }\n catch (e) {\n this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e);\n }\n }\n}\nexports.InstrumentationAbstract = InstrumentationAbstract;\n//# sourceMappingURL=instrumentation.js.map", + "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", + "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", + "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", + "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", + "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", + "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", + "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", + "'use strict'\n\nvar sep = require('path').sep\n\nmodule.exports = function (file) {\n var segments = file.split(sep)\n var index = segments.lastIndexOf('node_modules')\n\n if (index === -1) return\n if (!segments[index + 1]) return\n\n var scoped = segments[index + 1][0] === '@'\n var name = scoped ? segments[index + 1] + '/' + segments[index + 2] : segments[index + 1]\n var offset = scoped ? 3 : 2\n\n var basedir = ''\n var lastBaseDirSegmentIndex = index + offset - 1\n for (var i = 0; i <= lastBaseDirSegmentIndex; i++) {\n if (i === lastBaseDirSegmentIndex) {\n basedir += segments[i]\n } else {\n basedir += segments[i] + sep\n }\n }\n\n var path = ''\n var lastSegmentIndex = segments.length - 1\n for (var i2 = index + offset; i2 <= lastSegmentIndex; i2++) {\n if (i2 === lastSegmentIndex) {\n path += segments[i2]\n } else {\n path += segments[i2] + sep\n }\n }\n\n return {\n name: name,\n basedir: basedir,\n path: path\n }\n}\n", + "'use strict'\n\nconst path = require('path')\nconst Module = require('module')\nconst debug = require('debug')('require-in-the-middle')\nconst moduleDetailsFromPath = require('module-details-from-path')\n\n// Using the default export is discouraged, but kept for backward compatibility.\n// Use this instead:\n// const { Hook } = require('require-in-the-middle')\nmodule.exports = Hook\nmodule.exports.Hook = Hook\n\nlet builtinModules // Set\n\n/**\n * Is the given module a \"core\" module?\n * https://nodejs.org/api/modules.html#core-modules\n *\n * @type {(moduleName: string) => boolean}\n */\nlet isCore\nif (Module.isBuiltin) { // Added in node v18.6.0, v16.17.0\n isCore = Module.isBuiltin\n} else if (Module.builtinModules) { // Added in node v9.3.0, v8.10.0, v6.13.0\n isCore = moduleName => {\n if (moduleName.startsWith('node:')) {\n return true\n }\n\n if (builtinModules === undefined) {\n builtinModules = new Set(Module.builtinModules)\n }\n\n return builtinModules.has(moduleName)\n }\n} else {\n throw new Error('\\'require-in-the-middle\\' requires Node.js >=v9.3.0 or >=v8.10.0')\n}\n\n// 'foo/bar.js' or 'foo/bar/index.js' => 'foo/bar'\nconst normalize = /([/\\\\]index)?(\\.js)?$/\n\n// Cache `onrequire`-patched exports for modules.\n//\n// Exports for built-in (a.k.a. \"core\") modules are stored in an internal Map.\n//\n// Exports for non-core modules are stored on a private field on the `Module`\n// object in `require.cache`. This allows users to delete from `require.cache`\n// to trigger a re-load (and re-run of the hook's `onrequire`) of a module the\n// next time it is required.\n// https://nodejs.org/docs/latest/api/all.html#all_modules_requirecache\n//\n// In some special cases -- e.g. some other `require()` hook swapping out\n// `Module._cache` like `@babel/register` -- a non-core module won't be in\n// `require.cache`. In that case this falls back to caching on the internal Map.\nclass ExportsCache {\n constructor () {\n this._localCache = new Map() // -> \n this._kRitmExports = Symbol('RitmExports')\n }\n\n has (filename, isBuiltin) {\n if (this._localCache.has(filename)) {\n return true\n } else if (!isBuiltin) {\n const mod = require.cache[filename]\n return !!(mod && this._kRitmExports in mod)\n } else {\n return false\n }\n }\n\n get (filename, isBuiltin) {\n const cachedExports = this._localCache.get(filename)\n if (cachedExports !== undefined) {\n return cachedExports\n } else if (!isBuiltin) {\n const mod = require.cache[filename]\n return (mod && mod[this._kRitmExports])\n }\n }\n\n set (filename, exports, isBuiltin) {\n if (isBuiltin) {\n this._localCache.set(filename, exports)\n } else if (filename in require.cache) {\n require.cache[filename][this._kRitmExports] = exports\n } else {\n debug('non-core module is unexpectedly not in require.cache: \"%s\"', filename)\n this._localCache.set(filename, exports)\n }\n }\n}\n\nfunction Hook (modules, options, onrequire) {\n if ((this instanceof Hook) === false) return new Hook(modules, options, onrequire)\n if (typeof modules === 'function') {\n onrequire = modules\n modules = null\n options = null\n } else if (typeof options === 'function') {\n onrequire = options\n options = null\n }\n\n if (typeof Module._resolveFilename !== 'function') {\n console.error('Error: Expected Module._resolveFilename to be a function (was: %s) - aborting!', typeof Module._resolveFilename)\n console.error('Please report this error as an issue related to Node.js %s at https://github.com/nodejs/require-in-the-middle/issues', process.version)\n return\n }\n\n this._cache = new ExportsCache()\n\n this._unhooked = false\n this._origRequire = Module.prototype.require\n\n const self = this\n const patching = new Set()\n const internals = options ? options.internals === true : false\n const hasWhitelist = Array.isArray(modules)\n\n debug('registering require hook')\n\n this._require = Module.prototype.require = function (id) {\n if (self._unhooked === true) {\n // if the patched require function could not be removed because\n // someone else patched it after it was patched here, we just\n // abort and pass the request onwards to the original require\n debug('ignoring require call - module is soft-unhooked')\n return self._origRequire.apply(this, arguments)\n }\n\n return patchedRequire.call(this, arguments, false)\n }\n\n if (typeof process.getBuiltinModule === 'function') {\n this._origGetBuiltinModule = process.getBuiltinModule\n this._getBuiltinModule = process.getBuiltinModule = function (id) {\n if (self._unhooked === true) {\n // if the patched process.getBuiltinModule function could not be removed because\n // someone else patched it after it was patched here, we just abort and pass the\n // request onwards to the original process.getBuiltinModule\n debug('ignoring process.getBuiltinModule call - module is soft-unhooked')\n return self._origGetBuiltinModule.apply(this, arguments)\n }\n\n return patchedRequire.call(this, arguments, true)\n }\n }\n\n // Preserve the original require/process.getBuiltinModule arguments in `args`\n function patchedRequire (args, coreOnly) {\n const id = args[0]\n const core = isCore(id)\n let filename // the string used for caching\n if (core) {\n filename = id\n // If this is a builtin module that can be identified both as 'foo' and\n // 'node:foo', then prefer 'foo' as the caching key.\n if (id.startsWith('node:')) {\n const idWithoutPrefix = id.slice(5)\n if (isCore(idWithoutPrefix)) {\n filename = idWithoutPrefix\n }\n }\n } else if (coreOnly) {\n // `coreOnly` is `true` if this was a call to `process.getBuiltinModule`, in which case\n // we don't want to return anything if the requested `id` isn't a core module. Falling\n // back to default behaviour, which at the time of this wrting is simply returning `undefined`\n debug('call to process.getBuiltinModule with unknown built-in id')\n return self._origGetBuiltinModule.apply(this, args)\n } else {\n try {\n filename = Module._resolveFilename(id, this)\n } catch (resolveErr) {\n // If someone *else* monkey-patches before this monkey-patch, then that\n // code might expect `require(someId)` to get through so it can be\n // handled, even if `someId` cannot be resolved to a filename. In this\n // case, instead of throwing we defer to the underlying `require`.\n //\n // For example the Azure Functions Node.js worker module does this,\n // where `@azure/functions-core` resolves to an internal object.\n // https://github.com/Azure/azure-functions-nodejs-worker/blob/v3.5.2/src/setupCoreModule.ts#L46-L54\n debug('Module._resolveFilename(\"%s\") threw %j, calling original Module.require', id, resolveErr.message)\n return self._origRequire.apply(this, args)\n }\n }\n\n let moduleName, basedir\n\n debug('processing %s module require(\\'%s\\'): %s', core === true ? 'core' : 'non-core', id, filename)\n\n // return known patched modules immediately\n if (self._cache.has(filename, core) === true) {\n debug('returning already patched cached module: %s', filename)\n return self._cache.get(filename, core)\n }\n\n // Check if this module has a patcher in-progress already.\n // Otherwise, mark this module as patching in-progress.\n const isPatching = patching.has(filename)\n if (isPatching === false) {\n patching.add(filename)\n }\n\n const exports = coreOnly\n ? self._origGetBuiltinModule.apply(this, args)\n : self._origRequire.apply(this, args)\n\n // If it's already patched, just return it as-is.\n if (isPatching === true) {\n debug('module is in the process of being patched already - ignoring: %s', filename)\n return exports\n }\n\n // The module has already been loaded,\n // so the patching mark can be cleaned up.\n patching.delete(filename)\n\n if (core === true) {\n if (hasWhitelist === true && modules.includes(filename) === false) {\n debug('ignoring core module not on whitelist: %s', filename)\n return exports // abort if module name isn't on whitelist\n }\n moduleName = filename\n } else if (hasWhitelist === true && modules.includes(filename)) {\n // whitelist includes the absolute path to the file including extension\n const parsedPath = path.parse(filename)\n moduleName = parsedPath.name\n basedir = parsedPath.dir\n } else {\n const stat = moduleDetailsFromPath(filename)\n if (stat === undefined) {\n debug('could not parse filename: %s', filename)\n return exports // abort if filename could not be parsed\n }\n moduleName = stat.name\n basedir = stat.basedir\n\n // Ex: require('foo/lib/../bar.js')\n // moduleName = 'foo'\n // fullModuleName = 'foo/bar'\n const fullModuleName = resolveModuleName(stat)\n\n debug('resolved filename to module: %s (id: %s, resolved: %s, basedir: %s)', moduleName, id, fullModuleName, basedir)\n\n let matchFound = false\n if (hasWhitelist) {\n if (!id.startsWith('.') && modules.includes(id)) {\n // Not starting with '.' means `id` is identifying a module path,\n // as opposed to a local file path. (Note: I'm not sure about\n // absolute paths, but those are handled above.)\n // If this `id` is in `modules`, then this could be a match to an\n // package \"exports\" entry point that wouldn't otherwise match below.\n moduleName = id\n matchFound = true\n }\n\n // abort if module name isn't on whitelist\n if (!modules.includes(moduleName) && !modules.includes(fullModuleName)) {\n return exports\n }\n\n if (modules.includes(fullModuleName) && fullModuleName !== moduleName) {\n // if we get to this point, it means that we're requiring a whitelisted sub-module\n moduleName = fullModuleName\n matchFound = true\n }\n }\n\n if (!matchFound) {\n // figure out if this is the main module file, or a file inside the module\n let res\n try {\n res = require.resolve(moduleName, { paths: [basedir] })\n } catch (e) {\n debug('could not resolve module: %s', moduleName)\n self._cache.set(filename, exports, core)\n return exports // abort if module could not be resolved (e.g. no main in package.json and no index.js file)\n }\n\n if (res !== filename) {\n // this is a module-internal file\n if (internals === true) {\n // use the module-relative path to the file, prefixed by original module name\n moduleName = moduleName + path.sep + path.relative(basedir, filename)\n debug('preparing to process require of internal file: %s', moduleName)\n } else {\n debug('ignoring require of non-main module file: %s', res)\n self._cache.set(filename, exports, core)\n return exports // abort if not main module file\n }\n }\n }\n }\n\n // ensure that the cache entry is assigned a value before calling\n // onrequire, in case calling onrequire requires the same module.\n self._cache.set(filename, exports, core)\n debug('calling require hook: %s', moduleName)\n const patchedExports = onrequire(exports, moduleName, basedir)\n self._cache.set(filename, patchedExports, core)\n\n debug('returning module: %s', moduleName)\n return patchedExports\n }\n}\n\nHook.prototype.unhook = function () {\n this._unhooked = true\n\n if (this._require === Module.prototype.require) {\n Module.prototype.require = this._origRequire\n debug('require unhook successful')\n } else {\n debug('require unhook unsuccessful')\n }\n\n if (process.getBuiltinModule !== undefined) {\n if (this._getBuiltinModule === process.getBuiltinModule) {\n process.getBuiltinModule = this._origGetBuiltinModule\n debug('process.getBuiltinModule unhook successful')\n } else {\n debug('process.getBuiltinModule unhook unsuccessful')\n }\n }\n}\n\nfunction resolveModuleName (stat) {\n const normalizedPath = path.sep !== '/' ? stat.path.split(path.sep).join('/') : stat.path\n return path.posix.join(stat.name, normalizedPath).replace(normalize, '')\n}\n", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleNameTrie = exports.ModuleNameSeparator = void 0;\nexports.ModuleNameSeparator = '/';\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks = [];\n children = new Map();\n}\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nclass ModuleNameTrie {\n _trie = new ModuleNameTrieNode();\n _counter = 0;\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook) {\n let trieNode = this._trie;\n for (const moduleNamePart of hook.moduleName.split(exports.ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(moduleName, { maintainInsertionOrder, fullOnly } = {}) {\n let trieNode = this._trie;\n const results = [];\n let foundFull = true;\n for (const moduleNamePart of moduleName.split(exports.ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\nexports.ModuleNameTrie = ModuleNameTrie;\n//# sourceMappingURL=ModuleNameTrie.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequireInTheMiddleSingleton = void 0;\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst path = require(\"path\");\nconst ModuleNameTrie_1 = require(\"./ModuleNameTrie\");\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nclass RequireInTheMiddleSingleton {\n _moduleNameTrie = new ModuleNameTrie_1.ModuleNameTrie();\n static _instance;\n constructor() {\n this._initialize();\n }\n _initialize() {\n new require_in_the_middle_1.Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null, { internals: true }, (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n return exports;\n });\n }\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName, onRequire) {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance() {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha)\n return new RequireInTheMiddleSingleton();\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\nexports.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton;\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath) {\n return path.sep !== ModuleNameTrie_1.ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameTrie_1.ModuleNameSeparator)\n : moduleNameOrPath;\n}\n//# sourceMappingURL=RequireInTheMiddleSingleton.js.map", + "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst importHooks = [] // TODO should this be a Set?\nconst setters = new WeakMap()\nconst getters = new WeakMap()\nconst specifiers = new Map()\nconst toHook = []\n\nconst proxyHandler = {\n set (target, name, value) {\n const set = setters.get(target)\n const setter = set && set[name]\n if (typeof setter === 'function') {\n return setter(value)\n }\n // If a module doesn't export the property being assigned (e.g. no default\n // export), there is no setter to call. Don't crash userland code.\n return true\n },\n\n get (target, name) {\n if (name === Symbol.toStringTag) {\n return 'Module'\n }\n\n const getter = getters.get(target)[name]\n\n if (typeof getter === 'function') {\n return getter()\n }\n },\n\n defineProperty (target, property, descriptor) {\n if ((!('value' in descriptor))) {\n throw new Error('Getters/setters are not supported for exports property descriptors.')\n }\n\n const set = setters.get(target)\n const setter = set && set[property]\n if (typeof setter === 'function') {\n return setter(descriptor.value)\n }\n return true\n }\n}\n\nfunction register (name, namespace, set, get, specifier) {\n specifiers.set(name, specifier)\n setters.set(namespace, set)\n getters.set(namespace, get)\n const proxy = new Proxy(namespace, proxyHandler)\n importHooks.forEach(hook => hook(name, proxy, specifier))\n toHook.push([name, proxy, specifier])\n}\n\nexports.register = register\nexports.importHooks = importHooks\nexports.specifiers = specifiers\nexports.toHook = toHook\n", + "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst path = require('path')\nconst moduleDetailsFromPath = require('module-details-from-path')\nconst { fileURLToPath } = require('url')\nconst { MessageChannel } = require('worker_threads')\n\nlet { isBuiltin } = require('module')\nif (!isBuiltin) {\n isBuiltin = () => true\n}\n\nconst {\n importHooks,\n specifiers,\n toHook\n} = require('./lib/register')\n\nfunction addHook (hook) {\n importHooks.push(hook)\n toHook.forEach(([name, namespace, specifier]) => hook(name, namespace, specifier))\n}\n\nfunction removeHook (hook) {\n const index = importHooks.indexOf(hook)\n if (index > -1) {\n importHooks.splice(index, 1)\n }\n}\n\nfunction callHookFn (hookFn, namespace, name, baseDir) {\n const newDefault = hookFn(namespace, name, baseDir)\n if (newDefault && newDefault !== namespace) {\n // Only ESM modules that actually export `default` can have it reassigned.\n // Some hooks return a value unconditionally; avoid crashing when the module\n // has no default export (see issue #188).\n if ('default' in namespace) {\n namespace.default = newDefault\n }\n }\n}\n\nlet sendModulesToLoader\n\n/**\n * EXPERIMENTAL\n * This feature is experimental and may change in minor versions.\n * **NOTE** This feature is incompatible with the {internals: true} Hook option.\n *\n * Creates a message channel with a port that can be used to add hooks to the\n * list of exclusively included modules.\n *\n * This can be used to only wrap modules that are Hook'ed, however modules need\n * to be hooked before they are imported.\n *\n * ```ts\n * import { register } from 'module'\n * import { Hook, createAddHookMessageChannel } from 'import-in-the-middle'\n *\n * const { registerOptions, waitForAllMessagesAcknowledged } = createAddHookMessageChannel()\n *\n * register('import-in-the-middle/hook.mjs', import.meta.url, registerOptions)\n *\n * Hook(['fs'], (exported, name, baseDir) => {\n * // Instrument the fs module\n * })\n *\n * // Ensure that the loader has acknowledged all the modules\n * // before we allow execution to continue\n * await waitForAllMessagesAcknowledged()\n * ```\n */\nfunction createAddHookMessageChannel () {\n const { port1, port2 } = new MessageChannel()\n let pendingAckCount = 0\n let resolveFn\n\n sendModulesToLoader = (modules) => {\n pendingAckCount++\n port1.postMessage(modules)\n }\n\n port1.on('message', () => {\n pendingAckCount--\n\n if (resolveFn && pendingAckCount <= 0) {\n resolveFn()\n }\n }).unref()\n\n function waitForAllMessagesAcknowledged () {\n // This timer is to prevent the process from exiting with code 13:\n // 13: Unsettled Top-Level Await.\n const timer = setInterval(() => { }, 1000)\n const promise = new Promise((resolve) => {\n resolveFn = resolve\n }).then(() => { clearInterval(timer) })\n\n if (pendingAckCount === 0) {\n resolveFn()\n }\n\n return promise\n }\n\n const addHookMessagePort = port2\n const registerOptions = { data: { addHookMessagePort, include: [] }, transferList: [addHookMessagePort] }\n\n return { registerOptions, addHookMessagePort, waitForAllMessagesAcknowledged }\n}\n\nfunction Hook (modules, options, hookFn) {\n if ((this instanceof Hook) === false) return new Hook(modules, options, hookFn)\n if (typeof modules === 'function') {\n hookFn = modules\n modules = null\n options = null\n } else if (typeof options === 'function') {\n hookFn = options\n options = null\n }\n const internals = options ? options.internals === true : false\n\n if (sendModulesToLoader && Array.isArray(modules)) {\n sendModulesToLoader(modules)\n }\n\n this._iitmHook = (name, namespace, specifier) => {\n const loadUrl = name\n const isNodeUrl = loadUrl.startsWith('node:')\n let filePath, baseDir\n\n if (isNodeUrl) {\n // Normalize builtin module name to *not* have 'node:' prefix, unless\n // required, as it is for 'node:test' and some others. `module.isBuiltin`\n // is available in all Node.js versions that have node:-only modules.\n const unprefixed = name.slice(5)\n if (isBuiltin(unprefixed)) {\n name = unprefixed\n }\n } else if (loadUrl.startsWith('file://')) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n filePath = fileURLToPath(name)\n name = filePath\n } catch (e) {}\n Error.stackTraceLimit = stackTraceLimit\n\n if (filePath) {\n const details = moduleDetailsFromPath(filePath)\n if (details) {\n name = details.name\n baseDir = details.basedir\n }\n }\n }\n\n if (modules) {\n for (const matchArg of modules) {\n if (filePath && matchArg === filePath) {\n // abspath match\n callHookFn(hookFn, namespace, filePath, undefined)\n } else if (matchArg === name) {\n if (!baseDir) {\n // built-in module (or unexpected non file:// name?)\n callHookFn(hookFn, namespace, name, baseDir)\n } else if (baseDir.endsWith(specifiers.get(loadUrl))) {\n // An import of the top-level module (e.g. `import 'ioredis'`).\n // Note: Slight behaviour difference from RITM. RITM uses\n // `require.resolve(name)` to see if filename is the module\n // main file, which will catch `require('ioredis/built/index.js')`.\n // The check here will not catch `import 'ioredis/built/index.js'`.\n callHookFn(hookFn, namespace, name, baseDir)\n } else if (internals) {\n const internalPath = name + path.sep + path.relative(baseDir, filePath)\n callHookFn(hookFn, namespace, internalPath, baseDir)\n }\n } else if (matchArg === specifier) {\n callHookFn(hookFn, namespace, specifier, baseDir)\n }\n }\n } else {\n callHookFn(hookFn, namespace, name, baseDir)\n }\n }\n\n addHook(this._iitmHook)\n}\n\nHook.prototype.unhook = function () {\n removeHook(this._iitmHook)\n}\n\nmodule.exports = Hook\nmodule.exports.Hook = Hook\nmodule.exports.addHook = addHook\nmodule.exports.removeHook = removeHook\nmodule.exports.createAddHookMessageChannel = createAddHookMessageChannel\n", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0;\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nfunction safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) {\n let error;\n let result;\n try {\n result = execute();\n }\n catch (e) {\n error = e;\n }\n finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\nexports.safeExecuteInTheMiddle = safeExecuteInTheMiddle;\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nasync function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) {\n let error;\n let result;\n try {\n result = await execute();\n }\n catch (e) {\n error = e;\n }\n finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\nexports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync;\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nfunction isWrapped(func) {\n return (typeof func === 'function' &&\n typeof func.__original === 'function' &&\n typeof func.__unwrap === 'function' &&\n func.__wrapped === true);\n}\nexports.isWrapped = isWrapped;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationBase = void 0;\nconst path = require(\"path\");\nconst util_1 = require(\"util\");\nconst semver_1 = require(\"../../semver\");\nconst shimmer_1 = require(\"../../shimmer\");\nconst instrumentation_1 = require(\"../../instrumentation\");\nconst RequireInTheMiddleSingleton_1 = require(\"./RequireInTheMiddleSingleton\");\nconst import_in_the_middle_1 = require(\"import-in-the-middle\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst fs_1 = require(\"fs\");\nconst utils_1 = require(\"../../utils\");\n/**\n * Base abstract class for instrumenting node plugins\n */\nclass InstrumentationBase extends instrumentation_1.InstrumentationAbstract {\n _modules;\n _hooks = [];\n _requireInTheMiddleSingleton = RequireInTheMiddleSingleton_1.RequireInTheMiddleSingleton.getInstance();\n _enabled = false;\n constructor(instrumentationName, instrumentationVersion, config) {\n super(instrumentationName, instrumentationVersion, config);\n let modules = this.init();\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n this._modules = modules || [];\n if (this._config.enabled) {\n this.enable();\n }\n }\n _wrap = (moduleExports, name, wrapper) => {\n if ((0, utils_1.isWrapped)(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!util_1.types.isProxy(moduleExports)) {\n return (0, shimmer_1.wrap)(moduleExports, name, wrapper);\n }\n else {\n const wrapped = (0, shimmer_1.wrap)(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n _unwrap = (moduleExports, name) => {\n if (!util_1.types.isProxy(moduleExports)) {\n return (0, shimmer_1.unwrap)(moduleExports, name);\n }\n else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n _massWrap = (moduleExportsArray, names, wrapper) => {\n if (!moduleExportsArray) {\n api_1.diag.error('must provide one or more modules to patch');\n return;\n }\n else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n if (!(names && Array.isArray(names))) {\n api_1.diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n _massUnwrap = (moduleExportsArray, names) => {\n if (!moduleExportsArray) {\n api_1.diag.error('must provide one or more modules to patch');\n return;\n }\n else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n if (!(names && Array.isArray(names))) {\n api_1.diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n _warnOnPreloadedModules() {\n this._modules.forEach((module) => {\n const { name } = module;\n try {\n const resolvedModule = require.resolve(name);\n if (require.cache[resolvedModule]) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`);\n }\n }\n catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n _extractPackageVersion(baseDir) {\n try {\n const json = (0, fs_1.readFileSync)(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n }\n catch {\n api_1.diag.warn('Failed extracting version', baseDir);\n }\n return undefined;\n }\n _onRequire(module, exports, name, baseDir) {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', {\n module: module.name,\n });\n return module.patch(exports);\n }\n }\n return exports;\n }\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (isSupported(module.supportedVersions, version, module.includePrerelease)) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for module on require hook', {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n });\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(f => f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease));\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n });\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion);\n }\n return patchedExports;\n }, exports);\n }\n enable() {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', {\n module: module.name,\n version: module.moduleVersion,\n });\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n });\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new require_in_the_middle_1.Hook([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n this._hooks.push(hook);\n const esmHook = new import_in_the_middle_1.Hook([module.name], { internals: true }, hookFn);\n this._hooks.push(esmHook);\n }\n }\n disable() {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', {\n module: module.name,\n version: module.moduleVersion,\n });\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n });\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n isEnabled() {\n return this._enabled;\n }\n}\nexports.InstrumentationBase = InstrumentationBase;\nfunction isSupported(supportedVersions, version, includePrerelease) {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n return supportedVersions.some(supportedVersion => {\n return (0, semver_1.satisfies)(version, supportedVersion, { includePrerelease });\n });\n}\n//# sourceMappingURL=instrumentation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nvar path_1 = require(\"path\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return path_1.normalize; } });\n//# sourceMappingURL=normalize.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } });\nvar normalize_1 = require(\"./normalize\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return normalize_1.normalize; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return node_1.InstrumentationBase; } });\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return node_1.normalize; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleDefinition = void 0;\nclass InstrumentationNodeModuleDefinition {\n files;\n name;\n supportedVersions;\n patch;\n unpatch;\n constructor(name, supportedVersions, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch, files) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\nexports.InstrumentationNodeModuleDefinition = InstrumentationNodeModuleDefinition;\n//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleFile = void 0;\nconst index_1 = require(\"./platform/index\");\nclass InstrumentationNodeModuleFile {\n name;\n supportedVersions;\n patch;\n unpatch;\n constructor(name, supportedVersions, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch) {\n this.name = (0, index_1.normalize)(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\nexports.InstrumentationNodeModuleFile = InstrumentationNodeModuleFile;\n//# sourceMappingURL=instrumentationNodeModuleFile.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = void 0;\nvar SemconvStability;\n(function (SemconvStability) {\n /** Emit only stable semantic conventions. */\n SemconvStability[SemconvStability[\"STABLE\"] = 1] = \"STABLE\";\n /** Emit only old semantic conventions. */\n SemconvStability[SemconvStability[\"OLD\"] = 2] = \"OLD\";\n /** Emit both stable and old semantic conventions. */\n SemconvStability[SemconvStability[\"DUPLICATE\"] = 3] = \"DUPLICATE\";\n})(SemconvStability = exports.SemconvStability || (exports.SemconvStability = {}));\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nfunction semconvStabilityFromStr(namespace, str) {\n let semconvStability = SemconvStability.OLD;\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n }\n else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n return semconvStability;\n}\nexports.semconvStabilityFromStr = semconvStabilityFromStr;\n//# sourceMappingURL=semconvStability.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = exports.isWrapped = exports.InstrumentationNodeModuleFile = exports.InstrumentationNodeModuleDefinition = exports.InstrumentationBase = exports.registerInstrumentations = void 0;\nvar autoLoader_1 = require(\"./autoLoader\");\nObject.defineProperty(exports, \"registerInstrumentations\", { enumerable: true, get: function () { return autoLoader_1.registerInstrumentations; } });\nvar index_1 = require(\"./platform/index\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return index_1.InstrumentationBase; } });\nvar instrumentationNodeModuleDefinition_1 = require(\"./instrumentationNodeModuleDefinition\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleDefinition\", { enumerable: true, get: function () { return instrumentationNodeModuleDefinition_1.InstrumentationNodeModuleDefinition; } });\nvar instrumentationNodeModuleFile_1 = require(\"./instrumentationNodeModuleFile\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleFile\", { enumerable: true, get: function () { return instrumentationNodeModuleFile_1.InstrumentationNodeModuleFile; } });\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"isWrapped\", { enumerable: true, get: function () { return utils_1.isWrapped; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddle\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddle; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddleAsync\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddleAsync; } });\nvar semconvStability_1 = require(\"./semconvStability\");\nObject.defineProperty(exports, \"SemconvStability\", { enumerable: true, get: function () { return semconvStability_1.SemconvStability; } });\nObject.defineProperty(exports, \"semconvStabilityFromStr\", { enumerable: true, get: function () { return semconvStability_1.semconvStabilityFromStr; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HTTP_FLAVOR_VALUE_HTTP_1_1 = exports.NET_TRANSPORT_VALUE_IP_UDP = exports.NET_TRANSPORT_VALUE_IP_TCP = exports.ATTR_NET_TRANSPORT = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_NET_PEER_IP = exports.ATTR_NET_HOST_PORT = exports.ATTR_NET_HOST_NAME = exports.ATTR_NET_HOST_IP = exports.ATTR_HTTP_USER_AGENT = exports.ATTR_HTTP_URL = exports.ATTR_HTTP_TARGET = exports.ATTR_HTTP_STATUS_CODE = exports.ATTR_HTTP_SERVER_NAME = exports.ATTR_HTTP_SCHEME = exports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = exports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH = exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH = exports.ATTR_HTTP_METHOD = exports.ATTR_HTTP_HOST = exports.ATTR_HTTP_FLAVOR = exports.ATTR_HTTP_CLIENT_IP = exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = exports.ATTR_USER_AGENT_SYNTHETIC_TYPE = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Specifies the category of synthetic traffic, such as tests or bots.\n *\n * @note This attribute **MAY** be derived from the contents of the `user_agent.original` attribute. Components that populate the attribute are responsible for determining what they consider to be synthetic bot or test traffic. This attribute can either be set for self-identification purposes, or on telemetry detected to be generated as a result of a synthetic request. This attribute is useful for distinguishing between genuine client traffic and synthetic traffic generated by bots or tests.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type';\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexports.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = 'bot';\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexports.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = 'test';\n/**\n * Deprecated, use `client.address` instead.\n *\n * @example \"83.164.160.102\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `client.address`.\n */\nexports.ATTR_HTTP_CLIENT_IP = 'http.client_ip';\n/**\n * Deprecated, use `network.protocol.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.protocol.name`.\n */\nexports.ATTR_HTTP_FLAVOR = 'http.flavor';\n/**\n * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage.\n *\n * @example www.example.org\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage.\n */\nexports.ATTR_HTTP_HOST = 'http.host';\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexports.ATTR_HTTP_METHOD = 'http.method';\n/**\n * Deprecated, use `http.request.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.header.`.\n */\nexports.ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\n/**\n * Deprecated, use `http.request.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.body.size`.\n */\nexports.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed';\n/**\n * Deprecated, use `http.response.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.header.`.\n */\nexports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\n/**\n * Deprecated, use `http.response.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replace by `http.response.body.size`.\n */\nexports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed';\n/**\n * Deprecated, use `url.scheme` instead.\n *\n * @example http\n * @example https\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.scheme` instead.\n */\nexports.ATTR_HTTP_SCHEME = 'http.scheme';\n/**\n * Deprecated, use `server.address` instead.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexports.ATTR_HTTP_SERVER_NAME = 'http.server_name';\n/**\n * Deprecated, use `http.response.status_code` instead.\n *\n * @example 200\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.status_code`.\n */\nexports.ATTR_HTTP_STATUS_CODE = 'http.status_code';\n/**\n * Deprecated, use `url.path` and `url.query` instead.\n *\n * @example /search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Split to `url.path` and `url.query.\n */\nexports.ATTR_HTTP_TARGET = 'http.target';\n/**\n * Deprecated, use `url.full` instead.\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.full`.\n */\nexports.ATTR_HTTP_URL = 'http.url';\n/**\n * Deprecated, use `user_agent.original` instead.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `user_agent.original`.\n */\nexports.ATTR_HTTP_USER_AGENT = 'http.user_agent';\n/**\n * Deprecated, use `network.local.address`.\n *\n * @example \"192.168.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.local.address`.\n */\nexports.ATTR_NET_HOST_IP = 'net.host.ip';\n/**\n * Deprecated, use `server.address`.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexports.ATTR_NET_HOST_NAME = 'net.host.name';\n/**\n * Deprecated, use `server.port`.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port`.\n */\nexports.ATTR_NET_HOST_PORT = 'net.host.port';\n/**\n * Deprecated, use `network.peer.address`.\n *\n * @example \"127.0.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.peer.address`.\n */\nexports.ATTR_NET_PEER_IP = 'net.peer.ip';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Deprecated, use `network.transport`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.transport`.\n */\nexports.ATTR_NET_TRANSPORT = 'net.transport';\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexports.NET_TRANSPORT_VALUE_IP_TCP = 'ip_tcp';\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexports.NET_TRANSPORT_VALUE_IP_UDP = 'ip_udp';\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexports.HTTP_FLAVOR_VALUE_HTTP_1_1 = '1.1';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/**\n * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md\n */\nvar AttributeNames;\n(function (AttributeNames) {\n AttributeNames[\"HTTP_ERROR_NAME\"] = \"http.error_name\";\n AttributeNames[\"HTTP_ERROR_MESSAGE\"] = \"http.error_message\";\n AttributeNames[\"HTTP_STATUS_TEXT\"] = \"http.status_text\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_QUERY_STRINGS_TO_REDACT = exports.STR_REDACTED = exports.SYNTHETIC_BOT_NAMES = exports.SYNTHETIC_TEST_NAMES = void 0;\n/**\n * Names of possible synthetic test sources.\n */\nexports.SYNTHETIC_TEST_NAMES = ['alwayson'];\n/**\n * Names of possible synthetic bot sources.\n */\nexports.SYNTHETIC_BOT_NAMES = ['googlebot', 'bingbot'];\n/**\n * REDACTED string used to replace sensitive information in URLs.\n */\nexports.STR_REDACTED = 'REDACTED';\n/**\n * List of URL query keys that are considered sensitive and whose value should be redacted.\n */\nexports.DEFAULT_QUERY_STRINGS_TO_REDACT = [\n 'sig',\n 'Signature',\n 'AWSAccessKeyId',\n 'X-Goog-Signature',\n];\n//# sourceMappingURL=internal-types.js.map", + "'use strict';\n\nvar util = require('util');\n\n/**\n * An error thrown by the parser on unexpected input.\n *\n * @constructor\n * @param {string} message The error message.\n * @param {string} input The unexpected input.\n * @public\n */\nfunction ParseError(message, input) {\n Error.captureStackTrace(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = message;\n this.input = input;\n}\n\nutil.inherits(ParseError, Error);\n\nmodule.exports = ParseError;\n", + "'use strict';\n\n/**\n * Check if a character is a delimiter as defined in section 3.2.6 of RFC 7230.\n *\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is a delimiter, else `false`.\n * @public\n */\nfunction isDelimiter(code) {\n return code === 0x22 // '\"'\n || code === 0x28 // '('\n || code === 0x29 // ')'\n || code === 0x2C // ','\n || code === 0x2F // '/'\n || code >= 0x3A && code <= 0x40 // ':', ';', '<', '=', '>', '?' '@'\n || code >= 0x5B && code <= 0x5D // '[', '\\', ']'\n || code === 0x7B // '{'\n || code === 0x7D; // '}'\n}\n\n/**\n * Check if a character is allowed in a token as defined in section 3.2.6\n * of RFC 7230.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is allowed, else `false`.\n * @public\n */\nfunction isTokenChar(code) {\n return code === 0x21 // '!'\n || code >= 0x23 && code <= 0x27 // '#', '$', '%', '&', '''\n || code === 0x2A // '*'\n || code === 0x2B // '+'\n || code === 0x2D // '-'\n || code === 0x2E // '.'\n || code >= 0x30 && code <= 0x39 // 0-9\n || code >= 0x41 && code <= 0x5A // A-Z\n || code >= 0x5E && code <= 0x7A // '^', '_', '`', a-z\n || code === 0x7C // '|'\n || code === 0x7E; // '~'\n}\n\n/**\n * Check if a character is a printable ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x20-7E range, else `false`.\n * @public\n */\nfunction isPrint(code) {\n return code >= 0x20 && code <= 0x7E;\n}\n\n/**\n * Check if a character is an extended ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x80-FF range, else `false`.\n * @public\n */\nfunction isExtended(code) {\n return code >= 0x80 && code <= 0xFF;\n}\n\nmodule.exports = {\n isDelimiter: isDelimiter,\n isTokenChar: isTokenChar,\n isExtended: isExtended,\n isPrint: isPrint\n};\n", + "'use strict';\n\nvar util = require('util');\n\nvar ParseError = require('./lib/error');\nvar ascii = require('./lib/ascii');\n\nvar isDelimiter = ascii.isDelimiter;\nvar isTokenChar = ascii.isTokenChar;\nvar isExtended = ascii.isExtended;\nvar isPrint = ascii.isPrint;\n\n/**\n * Unescape a string.\n *\n * @param {string} str The string to unescape.\n * @returns {string} A new unescaped string.\n * @private\n */\nfunction decode(str) {\n return str.replace(/\\\\(.)/g, '$1');\n}\n\n/**\n * Build an error message when an unexpected character is found.\n *\n * @param {string} header The header field value.\n * @param {number} position The position of the unexpected character.\n * @returns {string} The error message.\n * @private\n */\nfunction unexpectedCharacterMessage(header, position) {\n return util.format(\n \"Unexpected character '%s' at index %d\",\n header.charAt(position),\n position\n );\n}\n\n/**\n * Parse the `Forwarded` header field value into an array of objects.\n *\n * @param {string} header The header field value.\n * @returns {Object[]}\n * @public\n */\nfunction parse(header) {\n var mustUnescape = false;\n var isEscaping = false;\n var inQuotes = false;\n var forwarded = {};\n var output = [];\n var start = -1;\n var end = -1;\n var parameter;\n var code;\n\n for (var i = 0; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (parameter === undefined) {\n if (\n i !== 0 &&\n start === -1 &&\n (code === 0x20/*' '*/ || code === 0x09/*'\\t'*/)\n ) {\n continue;\n }\n\n if (isTokenChar(code)) {\n if (start === -1) start = i;\n } else if (code === 0x3D/*'='*/ && start !== -1) {\n parameter = header.slice(start, i).toLowerCase();\n start = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n if (isEscaping && (code === 0x09 || isPrint(code) || isExtended(code))) {\n isEscaping = false;\n } else if (isTokenChar(code)) {\n if (end !== -1) {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n\n if (start === -1) start = i;\n } else if (isDelimiter(code) || isExtended(code)) {\n if (inQuotes) {\n if (code === 0x22/*'\"'*/) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5C/*'\\'*/) {\n if (start === -1) start = i;\n isEscaping = mustUnescape = true;\n } else if (start === -1) {\n start = i;\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3D) {\n inQuotes = true;\n } else if (\n (code === 0x2C/*','*/|| code === 0x3B/*';'*/) &&\n (start !== -1 || end !== -1)\n ) {\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n if (code === 0x2C) {\n output.push(forwarded);\n forwarded = {};\n }\n\n parameter = undefined;\n start = end = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else if (code === 0x20 || code === 0x09) {\n if (end !== -1) continue;\n\n if (inQuotes) {\n if (start === -1) start = i;\n } else if (start !== -1) {\n end = i;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n }\n }\n\n if (\n parameter === undefined ||\n inQuotes ||\n (start === -1 && end === -1) ||\n code === 0x20 ||\n code === 0x09\n ) {\n throw new ParseError('Unexpected end of input', header);\n }\n\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n output.push(forwarded);\n return output;\n}\n\nmodule.exports = parse;\n", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.headerCapture = exports.getIncomingStableRequestMetricAttributesOnResponse = exports.getIncomingRequestMetricAttributesOnResponse = exports.getIncomingRequestAttributesOnResponse = exports.getIncomingRequestMetricAttributes = exports.getIncomingRequestAttributes = exports.getRemoteClientAddress = exports.getOutgoingStableRequestMetricAttributesOnResponse = exports.getOutgoingRequestMetricAttributesOnResponse = exports.getOutgoingRequestAttributesOnResponse = exports.setAttributesFromHttpKind = exports.getOutgoingRequestMetricAttributes = exports.getOutgoingRequestAttributes = exports.extractHostnameAndPort = exports.isValidOptionsType = exports.getRequestInfo = exports.isCompressed = exports.setResponseContentLengthAttribute = exports.setRequestContentLengthAttribute = exports.setSpanWithError = exports.satisfiesPattern = exports.parseResponseStatus = exports.getAbsoluteUrl = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst url = require(\"url\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst internal_types_1 = require(\"./internal-types\");\nconst internal_types_2 = require(\"./internal-types\");\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst forwardedParse = require(\"forwarded-parse\");\n/**\n * Get an absolute url\n */\nconst getAbsoluteUrl = (requestUrl, headers, fallbackProtocol = 'http:', redactedQueryParams = Array.from(internal_types_2.DEFAULT_QUERY_STRINGS_TO_REDACT)) => {\n const reqUrlObject = requestUrl || {};\n const protocol = reqUrlObject.protocol || fallbackProtocol;\n const port = (reqUrlObject.port || '').toString();\n let path = reqUrlObject.path || '/';\n let host = reqUrlObject.host || reqUrlObject.hostname || headers.host || 'localhost';\n // if there is no port in host and there is a port\n // it should be displayed if it's not 80 and 443 (default ports)\n if (host.indexOf(':') === -1 &&\n port &&\n port !== '80' &&\n port !== '443') {\n host += `:${port}`;\n }\n // Redact sensitive query parameters\n if (path.includes('?')) {\n try {\n const parsedUrl = new URL(path, 'http://localhost');\n const sensitiveParamsToRedact = redactedQueryParams || [];\n for (const sensitiveParam of sensitiveParamsToRedact) {\n if (parsedUrl.searchParams.get(sensitiveParam)) {\n parsedUrl.searchParams.set(sensitiveParam, internal_types_2.STR_REDACTED);\n }\n }\n path = `${parsedUrl.pathname}${parsedUrl.search}`;\n }\n catch {\n // Ignore error, as the path was not a valid URL.\n }\n }\n const authPart = reqUrlObject.auth ? `${internal_types_2.STR_REDACTED}:${internal_types_2.STR_REDACTED}@` : '';\n return `${protocol}//${authPart}${host}${path}`;\n};\nexports.getAbsoluteUrl = getAbsoluteUrl;\n/**\n * Parse status code from HTTP response. [More details](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-http.md#status)\n */\nconst parseResponseStatus = (kind, statusCode) => {\n const upperBound = kind === api_1.SpanKind.CLIENT ? 400 : 500;\n // 1xx, 2xx, 3xx are OK on client and server\n // 4xx is OK on server\n if (statusCode && statusCode >= 100 && statusCode < upperBound) {\n return api_1.SpanStatusCode.UNSET;\n }\n // All other codes are error\n return api_1.SpanStatusCode.ERROR;\n};\nexports.parseResponseStatus = parseResponseStatus;\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (constant, pattern) => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n }\n else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n }\n else if (typeof pattern === 'function') {\n return pattern(constant);\n }\n else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\nexports.satisfiesPattern = satisfiesPattern;\n/**\n * Sets the span with the error passed in params\n * @param {Span} span the span that need to be set\n * @param {Error} error error that will be set to span\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nconst setSpanWithError = (span, error, semconvStability) => {\n const message = error.message;\n if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n span.setAttribute(AttributeNames_1.AttributeNames.HTTP_ERROR_NAME, error.name);\n span.setAttribute(AttributeNames_1.AttributeNames.HTTP_ERROR_MESSAGE, message);\n }\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n span.setAttribute(semantic_conventions_1.ATTR_ERROR_TYPE, error.name);\n }\n span.setStatus({ code: api_1.SpanStatusCode.ERROR, message });\n span.recordException(error);\n};\nexports.setSpanWithError = setSpanWithError;\n/**\n * Adds attributes for request content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Request object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n */\nconst setRequestContentLengthAttribute = (request, attributes) => {\n const length = getContentLength(request.headers);\n if (length === null)\n return;\n if ((0, exports.isCompressed)(request.headers)) {\n attributes[semconv_1.ATTR_HTTP_REQUEST_CONTENT_LENGTH] = length;\n }\n else {\n attributes[semconv_1.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\nexports.setRequestContentLengthAttribute = setRequestContentLengthAttribute;\n/**\n * Adds attributes for response content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Response object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n *\n * @deprecated this is for an older version of semconv. It is retained for compatibility using OTEL_SEMCONV_STABILITY_OPT_IN\n */\nconst setResponseContentLengthAttribute = (response, attributes) => {\n const length = getContentLength(response.headers);\n if (length === null)\n return;\n if ((0, exports.isCompressed)(response.headers)) {\n attributes[semconv_1.ATTR_HTTP_RESPONSE_CONTENT_LENGTH] = length;\n }\n else {\n attributes[semconv_1.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\nexports.setResponseContentLengthAttribute = setResponseContentLengthAttribute;\nfunction getContentLength(headers) {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined)\n return null;\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength))\n return null;\n return contentLength;\n}\nconst isCompressed = (headers) => {\n const encoding = headers['content-encoding'];\n return !!encoding && encoding !== 'identity';\n};\nexports.isCompressed = isCompressed;\n/**\n * Mimics Node.js conversion of URL strings to RequestOptions expected by\n * `http.request` and `https.request` APIs.\n *\n * See https://github.com/nodejs/node/blob/2505e217bba05fc581b572c685c5cf280a16c5a3/lib/internal/url.js#L1415-L1437\n *\n * @param stringUrl\n * @throws TypeError if the URL is not valid.\n */\nfunction stringUrlToHttpOptions(stringUrl) {\n // This is heavily inspired by Node.js handling of the same situation, trying\n // to follow it as closely as possible while keeping in mind that we only\n // deal with string URLs, not URL objects.\n const { hostname, pathname, port, username, password, search, protocol, hash, href, origin, host, } = new URL(stringUrl);\n const options = {\n protocol: protocol,\n hostname: hostname && hostname[0] === '[' ? hostname.slice(1, -1) : hostname,\n hash: hash,\n search: search,\n pathname: pathname,\n path: `${pathname || ''}${search || ''}`,\n href: href,\n origin: origin,\n host: host,\n };\n if (port !== '') {\n options.port = Number(port);\n }\n if (username || password) {\n options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(password)}`;\n }\n return options;\n}\n/**\n * Makes sure options is an url object\n * return an object with default value and parsed options\n * @param logger component logger\n * @param options original options for the request\n * @param [extraOptions] additional options for the request\n */\nconst getRequestInfo = (logger, options, extraOptions) => {\n let pathname;\n let origin;\n let optionsParsed;\n let invalidUrl = false;\n if (typeof options === 'string') {\n try {\n const convertedOptions = stringUrlToHttpOptions(options);\n optionsParsed = convertedOptions;\n pathname = convertedOptions.pathname || '/';\n }\n catch (e) {\n invalidUrl = true;\n logger.verbose('Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:', e);\n // for backward compatibility with how url.parse() behaved.\n optionsParsed = {\n path: options,\n };\n pathname = optionsParsed.path || '/';\n }\n origin = `${optionsParsed.protocol || 'http:'}//${optionsParsed.host}`;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n }\n else if (options instanceof url.URL) {\n optionsParsed = {\n protocol: options.protocol,\n hostname: typeof options.hostname === 'string' && options.hostname.startsWith('[')\n ? options.hostname.slice(1, -1)\n : options.hostname,\n path: `${options.pathname || ''}${options.search || ''}`,\n };\n if (options.port !== '') {\n optionsParsed.port = Number(options.port);\n }\n if (options.username || options.password) {\n optionsParsed.auth = `${options.username}:${options.password}`;\n }\n pathname = options.pathname;\n origin = options.origin;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n }\n else {\n optionsParsed = Object.assign({ protocol: options.host ? 'http:' : undefined }, options);\n const hostname = optionsParsed.host ||\n (optionsParsed.port != null\n ? `${optionsParsed.hostname}${optionsParsed.port}`\n : optionsParsed.hostname);\n origin = `${optionsParsed.protocol || 'http:'}//${hostname}`;\n pathname = options.pathname;\n if (!pathname && optionsParsed.path) {\n try {\n const parsedUrl = new URL(optionsParsed.path, origin);\n pathname = parsedUrl.pathname || '/';\n }\n catch {\n pathname = '/';\n }\n }\n }\n // some packages return method in lowercase..\n // ensure upperCase for consistency\n const method = optionsParsed.method\n ? optionsParsed.method.toUpperCase()\n : 'GET';\n return { origin, pathname, method, optionsParsed, invalidUrl };\n};\nexports.getRequestInfo = getRequestInfo;\n/**\n * Makes sure options is of type string or object\n * @param options for the request\n */\nconst isValidOptionsType = (options) => {\n if (!options) {\n return false;\n }\n const type = typeof options;\n return type === 'string' || (type === 'object' && !Array.isArray(options));\n};\nexports.isValidOptionsType = isValidOptionsType;\nconst extractHostnameAndPort = (requestOptions) => {\n if (requestOptions.hostname && requestOptions.port) {\n return { hostname: requestOptions.hostname, port: requestOptions.port };\n }\n const matches = requestOptions.host?.match(/^([^:/ ]+)(:\\d{1,5})?/) || null;\n const hostname = requestOptions.hostname || (matches === null ? 'localhost' : matches[1]);\n let port = requestOptions.port;\n if (!port) {\n if (matches && matches[2]) {\n // remove the leading \":\". The extracted port would be something like \":8080\"\n port = matches[2].substring(1);\n }\n else {\n port = requestOptions.protocol === 'https:' ? '443' : '80';\n }\n }\n return { hostname, port };\n};\nexports.extractHostnameAndPort = extractHostnameAndPort;\n/**\n * Returns outgoing request attributes scoped to the options passed to the request\n * @param {ParsedRequestOptions} requestOptions the same options used to make the request\n * @param {{ component: string, hostname: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nconst getOutgoingRequestAttributes = (requestOptions, options, semconvStability, enableSyntheticSourceDetection) => {\n const hostname = options.hostname;\n const port = options.port;\n const method = requestOptions.method ?? 'GET';\n const normalizedMethod = normalizeMethod(method);\n const headers = (requestOptions.headers || {});\n const userAgent = headers['user-agent'];\n const urlFull = (0, exports.getAbsoluteUrl)(requestOptions, headers, `${options.component}:`, options.redactedQueryParams);\n const oldAttributes = {\n [semconv_1.ATTR_HTTP_URL]: urlFull,\n [semconv_1.ATTR_HTTP_METHOD]: method,\n [semconv_1.ATTR_HTTP_TARGET]: requestOptions.path || '/',\n [semconv_1.ATTR_NET_PEER_NAME]: hostname,\n [semconv_1.ATTR_HTTP_HOST]: headers.host ?? `${hostname}:${port}`,\n };\n const newAttributes = {\n // Required attributes\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: hostname,\n [semantic_conventions_1.ATTR_SERVER_PORT]: Number(port),\n [semantic_conventions_1.ATTR_URL_FULL]: urlFull,\n [semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL]: userAgent,\n // leaving out protocol version, it is not yet negotiated\n // leaving out protocol name, it is only required when protocol version is set\n // retries and redirects not supported\n // Opt-in attributes left off for now\n };\n // conditionally required if request method required case normalization\n if (method !== normalizedMethod) {\n newAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[semconv_1.ATTR_USER_AGENT_SYNTHETIC_TYPE] = getSyntheticType(userAgent);\n }\n if (userAgent !== undefined) {\n oldAttributes[semconv_1.ATTR_HTTP_USER_AGENT] = userAgent;\n }\n switch (semconvStability) {\n case instrumentation_1.SemconvStability.STABLE:\n return Object.assign(newAttributes, options.hookAttributes);\n case instrumentation_1.SemconvStability.OLD:\n return Object.assign(oldAttributes, options.hookAttributes);\n }\n return Object.assign(oldAttributes, newAttributes, options.hookAttributes);\n};\nexports.getOutgoingRequestAttributes = getOutgoingRequestAttributes;\n/**\n * Returns outgoing request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nconst getOutgoingRequestMetricAttributes = (spanAttributes) => {\n const metricAttributes = {};\n metricAttributes[semconv_1.ATTR_HTTP_METHOD] = spanAttributes[semconv_1.ATTR_HTTP_METHOD];\n metricAttributes[semconv_1.ATTR_NET_PEER_NAME] = spanAttributes[semconv_1.ATTR_NET_PEER_NAME];\n //TODO: http.url attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\nexports.getOutgoingRequestMetricAttributes = getOutgoingRequestMetricAttributes;\n/**\n * Returns attributes related to the kind of HTTP protocol used\n * @param {string} [kind] Kind of HTTP protocol used: \"1.0\", \"1.1\", \"2\", \"SPDY\" or \"QUIC\".\n */\nconst setAttributesFromHttpKind = (kind, attributes) => {\n if (kind) {\n attributes[semconv_1.ATTR_HTTP_FLAVOR] = kind;\n if (kind.toUpperCase() !== 'QUIC') {\n attributes[semconv_1.ATTR_NET_TRANSPORT] = semconv_1.NET_TRANSPORT_VALUE_IP_TCP;\n }\n else {\n attributes[semconv_1.ATTR_NET_TRANSPORT] = semconv_1.NET_TRANSPORT_VALUE_IP_UDP;\n }\n }\n};\nexports.setAttributesFromHttpKind = setAttributesFromHttpKind;\n/**\n * Returns the type of synthetic source based on the user agent\n * @param {OutgoingHttpHeader} userAgent the user agent string\n */\nconst getSyntheticType = (userAgent) => {\n const userAgentString = String(userAgent).toLowerCase();\n for (const name of internal_types_1.SYNTHETIC_TEST_NAMES) {\n if (userAgentString.includes(name)) {\n return semconv_1.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST;\n }\n }\n for (const name of internal_types_1.SYNTHETIC_BOT_NAMES) {\n if (userAgentString.includes(name)) {\n return semconv_1.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT;\n }\n }\n return;\n};\n/**\n * Returns outgoing request attributes scoped to the response data\n * @param {IncomingMessage} response the response object\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nconst getOutgoingRequestAttributesOnResponse = (response, semconvStability) => {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n const oldAttributes = {};\n const stableAttributes = {};\n if (statusCode != null) {\n stableAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] = statusCode;\n }\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n oldAttributes[semconv_1.ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[semconv_1.ATTR_NET_PEER_PORT] = remotePort;\n // Recommended\n stableAttributes[semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n stableAttributes[semantic_conventions_1.ATTR_NETWORK_PEER_PORT] = remotePort;\n stableAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] = response.httpVersion;\n }\n (0, exports.setResponseContentLengthAttribute)(response, oldAttributes);\n if (statusCode) {\n oldAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames_1.AttributeNames.HTTP_STATUS_TEXT] = (statusMessage || '').toUpperCase();\n }\n (0, exports.setAttributesFromHttpKind)(httpVersion, oldAttributes);\n switch (semconvStability) {\n case instrumentation_1.SemconvStability.STABLE:\n return stableAttributes;\n case instrumentation_1.SemconvStability.OLD:\n return oldAttributes;\n }\n return Object.assign(oldAttributes, stableAttributes);\n};\nexports.getOutgoingRequestAttributesOnResponse = getOutgoingRequestAttributesOnResponse;\n/**\n * Returns outgoing request Metric attributes scoped to the response data\n * @param {Attributes} spanAttributes the span attributes\n */\nconst getOutgoingRequestMetricAttributesOnResponse = (spanAttributes) => {\n const metricAttributes = {};\n metricAttributes[semconv_1.ATTR_NET_PEER_PORT] = spanAttributes[semconv_1.ATTR_NET_PEER_PORT];\n metricAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] =\n spanAttributes[semconv_1.ATTR_HTTP_STATUS_CODE];\n metricAttributes[semconv_1.ATTR_HTTP_FLAVOR] = spanAttributes[semconv_1.ATTR_HTTP_FLAVOR];\n return metricAttributes;\n};\nexports.getOutgoingRequestMetricAttributesOnResponse = getOutgoingRequestMetricAttributesOnResponse;\nconst getOutgoingStableRequestMetricAttributesOnResponse = (spanAttributes) => {\n const metricAttributes = {};\n if (spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) {\n metricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION];\n }\n if (spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\nexports.getOutgoingStableRequestMetricAttributesOnResponse = getOutgoingStableRequestMetricAttributesOnResponse;\nfunction parseHostHeader(hostHeader, proto) {\n const parts = hostHeader.split(':');\n // no semicolon implies ipv4 dotted syntax or host name without port\n // x.x.x.x\n // example.com\n if (parts.length === 1) {\n if (proto === 'http') {\n return { host: parts[0], port: '80' };\n }\n if (proto === 'https') {\n return { host: parts[0], port: '443' };\n }\n return { host: parts[0] };\n }\n // single semicolon implies ipv4 dotted syntax or host name with port\n // x.x.x.x:yyyy\n // example.com:yyyy\n if (parts.length === 2) {\n return {\n host: parts[0],\n port: parts[1],\n };\n }\n // more than 2 parts implies ipv6 syntax with multiple colons\n // [x:x:x:x:x:x:x:x]\n // [x:x:x:x:x:x:x:x]:yyyy\n if (parts[0].startsWith('[')) {\n if (parts[parts.length - 1].endsWith(']')) {\n if (proto === 'http') {\n return { host: hostHeader, port: '80' };\n }\n if (proto === 'https') {\n return { host: hostHeader, port: '443' };\n }\n }\n else if (parts[parts.length - 2].endsWith(']')) {\n return {\n host: parts.slice(0, -1).join(':'),\n port: parts[parts.length - 1],\n };\n }\n }\n // if nothing above matches just return the host header\n return { host: hostHeader };\n}\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nfunction getServerAddress(request, component) {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.host) {\n return parseHostHeader(entry.host, entry.proto);\n }\n }\n }\n const xForwardedHost = request.headers['x-forwarded-host'];\n if (typeof xForwardedHost === 'string') {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(xForwardedHost, request.headers['x-forwarded-proto']);\n }\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(xForwardedHost, request.headers['x-forwarded-proto'][0]);\n }\n return parseHostHeader(xForwardedHost);\n }\n else if (Array.isArray(xForwardedHost) &&\n typeof xForwardedHost[0] === 'string' &&\n xForwardedHost[0].length > 0) {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(xForwardedHost[0], request.headers['x-forwarded-proto']);\n }\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(xForwardedHost[0], request.headers['x-forwarded-proto'][0]);\n }\n return parseHostHeader(xForwardedHost[0]);\n }\n const host = request.headers['host'];\n if (typeof host === 'string' && host.length > 0) {\n return parseHostHeader(host, component);\n }\n return null;\n}\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nfunction getRemoteClientAddress(request) {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.for) {\n return removePortFromAddress(entry.for);\n }\n }\n }\n const xForwardedFor = request.headers['x-forwarded-for'];\n if (xForwardedFor) {\n let xForwardedForVal;\n if (typeof xForwardedFor === 'string') {\n xForwardedForVal = xForwardedFor;\n }\n else if (Array.isArray(xForwardedFor)) {\n xForwardedForVal = xForwardedFor[0];\n }\n if (typeof xForwardedForVal === 'string') {\n xForwardedForVal = xForwardedForVal.split(',')[0].trim();\n return removePortFromAddress(xForwardedForVal);\n }\n }\n const remote = request.socket.remoteAddress;\n if (remote) {\n return remote;\n }\n return null;\n}\nexports.getRemoteClientAddress = getRemoteClientAddress;\nfunction removePortFromAddress(input) {\n // This function can be replaced with SocketAddress.parse() once the minimum\n // supported Node.js version allows it.\n try {\n const { hostname: address } = new URL(`http://${input}`);\n if (address.startsWith('[') && address.endsWith(']')) {\n return address.slice(1, -1);\n }\n return address;\n }\n catch {\n return input;\n }\n}\nfunction getInfoFromIncomingMessage(component, request, logger) {\n try {\n if (request.headers.host) {\n return new URL(request.url ?? '/', `${component}://${request.headers.host}`);\n }\n else {\n const unsafeParsedUrl = new URL(request.url ?? '/', \n // using localhost as a workaround to still use the URL constructor for parsing\n `${component}://localhost`);\n // since we use localhost as a workaround, ensure we hide the rest of the properties to avoid\n // our workaround leaking though.\n return {\n pathname: unsafeParsedUrl.pathname,\n search: unsafeParsedUrl.search,\n toString: function () {\n // we cannot use the result of unsafeParsedUrl.toString as it's potentially wrong.\n return unsafeParsedUrl.pathname + unsafeParsedUrl.search;\n },\n };\n }\n }\n catch (e) {\n // something is wrong, use undefined - this *should* never happen, logging\n // for troubleshooting in case it does happen.\n logger.verbose('Unable to get URL from request', e);\n return {};\n }\n}\n/**\n * Returns incoming request attributes scoped to the request data\n * @param {IncomingMessage} request the request object\n * @param {{ component: string, serverName?: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nconst getIncomingRequestAttributes = (request, options, logger) => {\n const { component, enableSyntheticSourceDetection, hookAttributes, semconvStability, serverName, } = options;\n const { headers, httpVersion, method } = request;\n const { host, 'user-agent': userAgent, 'x-forwarded-for': ips } = headers;\n const parsedUrl = getInfoFromIncomingMessage(component, request, logger);\n let newAttributes;\n let oldAttributes;\n if (semconvStability !== instrumentation_1.SemconvStability.OLD) {\n // Stable attributes are used.\n const normalizedMethod = normalizeMethod(method);\n const serverAddress = getServerAddress(request, component);\n const remoteClientAddress = getRemoteClientAddress(request);\n newAttributes = {\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [semantic_conventions_1.ATTR_URL_SCHEME]: component,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: serverAddress?.host,\n [semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS]: request.socket.remoteAddress,\n [semantic_conventions_1.ATTR_NETWORK_PEER_PORT]: request.socket.remotePort,\n [semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]: request.httpVersion,\n [semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL]: userAgent,\n };\n if (parsedUrl.pathname != null) {\n newAttributes[semantic_conventions_1.ATTR_URL_PATH] = parsedUrl.pathname;\n }\n if (parsedUrl.search) {\n // Remove leading '?' from URL search (https://developer.mozilla.org/en-US/docs/Web/API/URL/search).\n newAttributes[semantic_conventions_1.ATTR_URL_QUERY] = parsedUrl.search.slice(1);\n }\n if (remoteClientAddress != null) {\n newAttributes[semantic_conventions_1.ATTR_CLIENT_ADDRESS] = remoteClientAddress;\n }\n if (serverAddress?.port != null) {\n newAttributes[semantic_conventions_1.ATTR_SERVER_PORT] = Number(serverAddress.port);\n }\n // Conditionally required if request method required case normalization.\n if (method !== normalizedMethod) {\n newAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[semconv_1.ATTR_USER_AGENT_SYNTHETIC_TYPE] =\n getSyntheticType(userAgent);\n }\n }\n if (semconvStability !== instrumentation_1.SemconvStability.STABLE) {\n // Old attributes are used.\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n oldAttributes = {\n [semconv_1.ATTR_HTTP_URL]: parsedUrl.toString(),\n [semconv_1.ATTR_HTTP_HOST]: host,\n [semconv_1.ATTR_NET_HOST_NAME]: hostname,\n [semconv_1.ATTR_HTTP_METHOD]: method,\n [semconv_1.ATTR_HTTP_SCHEME]: component,\n };\n if (typeof ips === 'string') {\n oldAttributes[semconv_1.ATTR_HTTP_CLIENT_IP] = ips.split(',')[0];\n }\n if (typeof serverName === 'string') {\n oldAttributes[semconv_1.ATTR_HTTP_SERVER_NAME] = serverName;\n }\n if (parsedUrl.pathname) {\n oldAttributes[semconv_1.ATTR_HTTP_TARGET] =\n parsedUrl.pathname + parsedUrl.search || '/';\n }\n if (userAgent !== undefined) {\n oldAttributes[semconv_1.ATTR_HTTP_USER_AGENT] = userAgent;\n }\n (0, exports.setRequestContentLengthAttribute)(request, oldAttributes);\n (0, exports.setAttributesFromHttpKind)(httpVersion, oldAttributes);\n }\n switch (semconvStability) {\n case instrumentation_1.SemconvStability.STABLE:\n return Object.assign(newAttributes, hookAttributes);\n case instrumentation_1.SemconvStability.OLD:\n return Object.assign(oldAttributes, hookAttributes);\n default:\n return Object.assign(oldAttributes, newAttributes, hookAttributes);\n }\n};\nexports.getIncomingRequestAttributes = getIncomingRequestAttributes;\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n * @param {{ component: string }} options used to pass data needed to create attributes\n */\nconst getIncomingRequestMetricAttributes = (spanAttributes) => {\n const metricAttributes = {};\n metricAttributes[semconv_1.ATTR_HTTP_SCHEME] = spanAttributes[semconv_1.ATTR_HTTP_SCHEME];\n metricAttributes[semconv_1.ATTR_HTTP_METHOD] = spanAttributes[semconv_1.ATTR_HTTP_METHOD];\n metricAttributes[semconv_1.ATTR_NET_HOST_NAME] = spanAttributes[semconv_1.ATTR_NET_HOST_NAME];\n metricAttributes[semconv_1.ATTR_HTTP_FLAVOR] = spanAttributes[semconv_1.ATTR_HTTP_FLAVOR];\n //TODO: http.target attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\nexports.getIncomingRequestMetricAttributes = getIncomingRequestMetricAttributes;\n/**\n * Returns incoming request attributes scoped to the response data\n * @param {(ServerResponse & { socket: Socket; })} response the response object\n */\nconst getIncomingRequestAttributesOnResponse = (request, response, semconvStability) => {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n const newAttributes = {\n [semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n };\n const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active());\n const oldAttributes = {};\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n oldAttributes[semconv_1.ATTR_NET_HOST_IP] = localAddress;\n oldAttributes[semconv_1.ATTR_NET_HOST_PORT] = localPort;\n oldAttributes[semconv_1.ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[semconv_1.ATTR_NET_PEER_PORT] = remotePort;\n }\n oldAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames_1.AttributeNames.HTTP_STATUS_TEXT] = (statusMessage || '').toUpperCase();\n if (rpcMetadata?.type === core_1.RPCType.HTTP && rpcMetadata.route !== undefined) {\n oldAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = rpcMetadata.route;\n newAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = rpcMetadata.route;\n }\n switch (semconvStability) {\n case instrumentation_1.SemconvStability.STABLE:\n return newAttributes;\n case instrumentation_1.SemconvStability.OLD:\n return oldAttributes;\n }\n return Object.assign(oldAttributes, newAttributes);\n};\nexports.getIncomingRequestAttributesOnResponse = getIncomingRequestAttributesOnResponse;\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nconst getIncomingRequestMetricAttributesOnResponse = (spanAttributes) => {\n const metricAttributes = {};\n metricAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] =\n spanAttributes[semconv_1.ATTR_HTTP_STATUS_CODE];\n metricAttributes[semconv_1.ATTR_NET_HOST_PORT] = spanAttributes[semconv_1.ATTR_NET_HOST_PORT];\n if (spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE];\n }\n return metricAttributes;\n};\nexports.getIncomingRequestMetricAttributesOnResponse = getIncomingRequestMetricAttributesOnResponse;\n/**\n * Returns incoming stable request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nconst getIncomingStableRequestMetricAttributesOnResponse = (spanAttributes) => {\n const metricAttributes = {};\n if (spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE];\n }\n // required if and only if one was sent, same as span requirement\n if (spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\nexports.getIncomingStableRequestMetricAttributesOnResponse = getIncomingStableRequestMetricAttributesOnResponse;\nfunction headerCapture(type, headers, semconvStability) {\n const normalizedHeaders = new Map();\n for (let i = 0, len = headers.length; i < len; i++) {\n const capturedHeader = headers[i].toLowerCase();\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n normalizedHeaders.set(capturedHeader, capturedHeader);\n }\n else {\n // In old semconv, the header name converted hypen to underscore, e.g.:\n // `http.request.header.content_length`.\n normalizedHeaders.set(capturedHeader, capturedHeader.replaceAll('-', '_'));\n }\n }\n return (getHeader) => {\n const attributes = {};\n for (const capturedHeader of normalizedHeaders.keys()) {\n const value = getHeader(capturedHeader);\n if (value === undefined) {\n continue;\n }\n const normalizedHeader = normalizedHeaders.get(capturedHeader);\n const key = `http.${type}.header.${normalizedHeader}`;\n if (typeof value === 'string') {\n attributes[key] = [value];\n }\n else if (Array.isArray(value)) {\n attributes[key] = value;\n }\n else {\n attributes[key] = [value];\n }\n }\n return attributes;\n };\n}\nexports.headerCapture = headerCapture;\nconst KNOWN_METHODS = new Set([\n // methods from https://www.rfc-editor.org/rfc/rfc9110.html#name-methods\n 'GET',\n 'HEAD',\n 'POST',\n 'PUT',\n 'DELETE',\n 'CONNECT',\n 'OPTIONS',\n 'TRACE',\n // PATCH from https://www.rfc-editor.org/rfc/rfc5789.html\n 'PATCH',\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n 'QUERY',\n]);\nfunction normalizeMethod(method) {\n if (method == null) {\n return 'GET';\n }\n const upper = method.toUpperCase();\n if (KNOWN_METHODS.has(upper)) {\n return upper;\n }\n return '_OTHER';\n}\nfunction parseForwardedHeader(header) {\n try {\n return forwardedParse(header);\n }\n catch {\n return [];\n }\n}\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst url = require(\"url\");\nconst version_1 = require(\"./version\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst events_1 = require(\"events\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst utils_1 = require(\"./utils\");\n/**\n * `node:http` and `node:https` instrumentation for OpenTelemetry\n */\nclass HttpInstrumentation extends instrumentation_1.InstrumentationBase {\n /** keep track on spans not ended */\n _spanNotEnded = new WeakSet();\n _headerCapture;\n _httpPatched = false;\n _httpsPatched = false;\n _semconvStability = instrumentation_1.SemconvStability.OLD;\n constructor(config = {}) {\n super('@opentelemetry/instrumentation-http', version_1.VERSION, config);\n this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n _updateMetricInstruments() {\n this._oldHttpServerDurationHistogram = this.meter.createHistogram('http.server.duration', {\n description: 'Measures the duration of inbound HTTP requests.',\n unit: 'ms',\n valueType: api_1.ValueType.DOUBLE,\n });\n this._oldHttpClientDurationHistogram = this.meter.createHistogram('http.client.duration', {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 'ms',\n valueType: api_1.ValueType.DOUBLE,\n });\n this._stableHttpServerDurationHistogram = this.meter.createHistogram(semantic_conventions_1.METRIC_HTTP_SERVER_REQUEST_DURATION, {\n description: 'Duration of HTTP server requests.',\n unit: 's',\n valueType: api_1.ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n });\n this._stableHttpClientDurationHistogram = this.meter.createHistogram(semantic_conventions_1.METRIC_HTTP_CLIENT_REQUEST_DURATION, {\n description: 'Duration of HTTP client requests.',\n unit: 's',\n valueType: api_1.ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n });\n }\n _recordServerDuration(durationMs, oldAttributes, stableAttributes) {\n if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpServerDurationHistogram.record(durationMs, oldAttributes);\n }\n if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpServerDurationHistogram.record(durationMs / 1000, stableAttributes);\n }\n }\n _recordClientDuration(durationMs, oldAttributes, stableAttributes) {\n if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpClientDurationHistogram.record(durationMs, oldAttributes);\n }\n if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpClientDurationHistogram.record(durationMs / 1000, stableAttributes);\n }\n }\n setConfig(config = {}) {\n super.setConfig(config);\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n init() {\n return [this._getHttpsInstrumentation(), this._getHttpInstrumentation()];\n }\n _getHttpInstrumentation() {\n return new instrumentation_1.InstrumentationNodeModuleDefinition('http', ['*'], (moduleExports) => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpPatched) {\n return moduleExports;\n }\n this._httpPatched = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = moduleExports[Symbol.toStringTag] === 'Module';\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(moduleExports, 'request', this._getPatchOutgoingRequestFunction('http'));\n const patchedGet = this._wrap(moduleExports, 'get', this._getPatchOutgoingGetFunction(patchedRequest));\n if (isESM) {\n // To handle `import http from 'http'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports.default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports.default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(moduleExports.Server.prototype, 'emit', this._getPatchIncomingRequestFunction('http'));\n }\n return moduleExports;\n }, (moduleExports) => {\n this._httpPatched = false;\n if (moduleExports === undefined)\n return;\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n });\n }\n _getHttpsInstrumentation() {\n return new instrumentation_1.InstrumentationNodeModuleDefinition('https', ['*'], (moduleExports) => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpsPatched) {\n return moduleExports;\n }\n this._httpsPatched = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = moduleExports[Symbol.toStringTag] === 'Module';\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(moduleExports, 'request', this._getPatchHttpsOutgoingRequestFunction('https'));\n const patchedGet = this._wrap(moduleExports, 'get', this._getPatchHttpsOutgoingGetFunction(patchedRequest));\n if (isESM) {\n // To handle `import https from 'https'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports.default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports.default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(moduleExports.Server.prototype, 'emit', this._getPatchIncomingRequestFunction('https'));\n }\n return moduleExports;\n }, (moduleExports) => {\n this._httpsPatched = false;\n if (moduleExports === undefined)\n return;\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n });\n }\n /**\n * Creates spans for incoming requests, restoring spans' context if applied.\n */\n _getPatchIncomingRequestFunction(component) {\n return (original) => {\n return this._incomingRequestFunction(component, original);\n };\n }\n /**\n * Creates spans for outgoing requests, sending spans' context for distributed\n * tracing.\n */\n _getPatchOutgoingRequestFunction(component) {\n return (original) => {\n return this._outgoingRequestFunction(component, original);\n };\n }\n _getPatchOutgoingGetFunction(clientRequest) {\n return (_original) => {\n // Re-implement http.get. This needs to be done (instead of using\n // getPatchOutgoingRequestFunction to patch it) because we need to\n // set the trace context header before the returned http.ClientRequest is\n // ended. The Node.js docs state that the only differences between\n // request and get are that (1) get defaults to the HTTP GET method and\n // (2) the returned request object is ended immediately. The former is\n // already true (at least in supported Node versions up to v10), so we\n // simply follow the latter. Ref:\n // https://nodejs.org/dist/latest/docs/api/http.html#http_http_get_options_callback\n // https://github.com/googleapis/cloud-trace-nodejs/blob/master/src/instrumentations/instrumentation-http.ts#L198\n return function outgoingGetRequest(options, ...args) {\n const req = clientRequest(options, ...args);\n req.end();\n return req;\n };\n };\n }\n /** Patches HTTPS outgoing requests */\n _getPatchHttpsOutgoingRequestFunction(component) {\n return (original) => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options, ...args) {\n // Makes sure options will have default HTTPS parameters\n if (component === 'https' &&\n typeof options === 'object' &&\n options?.constructor?.name !== 'URL') {\n options = Object.assign({}, options);\n instrumentation._setDefaultOptions(options);\n }\n return instrumentation._getPatchOutgoingRequestFunction(component)(original)(options, ...args);\n };\n };\n }\n _setDefaultOptions(options) {\n options.protocol = options.protocol || 'https:';\n options.port = options.port || 443;\n }\n /** Patches HTTPS outgoing get requests */\n _getPatchHttpsOutgoingGetFunction(clientRequest) {\n return (original) => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options, ...args) {\n return instrumentation._getPatchOutgoingGetFunction(clientRequest)(original)(options, ...args);\n };\n };\n }\n /**\n * Attach event listeners to a client request to end span and add span attributes.\n *\n * @param request The original request object.\n * @param span representing the current operation\n * @param startTime representing the start time of the request to calculate duration in Metric\n * @param oldMetricAttributes metric attributes for old semantic conventions\n * @param stableMetricAttributes metric attributes for new semantic conventions\n */\n _traceClientRequest(request, span, startTime, oldMetricAttributes, stableMetricAttributes) {\n if (this.getConfig().requestHook) {\n this._callRequestHook(span, request);\n }\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n /*\n * User 'response' event listeners can be added before our listener,\n * force our listener to be the first, so response emitter is bound\n * before any user listeners are added to it.\n */\n request.prependListener('response', (response) => {\n this._diag.debug('outgoingRequest on response()');\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n const responseAttributes = (0, utils_1.getOutgoingRequestAttributesOnResponse)(response, this._semconvStability);\n span.setAttributes(responseAttributes);\n oldMetricAttributes = Object.assign(oldMetricAttributes, (0, utils_1.getOutgoingRequestMetricAttributesOnResponse)(responseAttributes));\n stableMetricAttributes = Object.assign(stableMetricAttributes, (0, utils_1.getOutgoingStableRequestMetricAttributesOnResponse)(responseAttributes));\n if (this.getConfig().responseHook) {\n this._callResponseHook(span, response);\n }\n span.setAttributes(this._headerCapture.client.captureRequestHeaders(header => request.getHeader(header)));\n span.setAttributes(this._headerCapture.client.captureResponseHeaders(header => response.headers[header]));\n api_1.context.bind(api_1.context.active(), response);\n const endHandler = () => {\n this._diag.debug('outgoingRequest on end()');\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n let status;\n if (response.aborted && !response.complete) {\n status = { code: api_1.SpanStatusCode.ERROR };\n }\n else {\n // behaves same for new and old semconv\n status = {\n code: (0, utils_1.parseResponseStatus)(api_1.SpanKind.CLIENT, response.statusCode),\n };\n }\n span.setStatus(status);\n if (this.getConfig().applyCustomAttributesOnSpan) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().applyCustomAttributesOnSpan(span, request, response), () => { }, true);\n }\n this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes);\n };\n response.on('end', endHandler);\n response.on(events_1.errorMonitor, (error) => {\n this._diag.debug('outgoingRequest on error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error);\n });\n });\n request.on('close', () => {\n this._diag.debug('outgoingRequest on request close()');\n if (request.aborted || responseFinished) {\n return;\n }\n responseFinished = true;\n this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes);\n });\n request.on(events_1.errorMonitor, (error) => {\n this._diag.debug('outgoingRequest on request error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error);\n });\n this._diag.debug('http.ClientRequest return request');\n return request;\n }\n _incomingRequestFunction(component, original) {\n const instrumentation = this;\n return function incomingRequest(event, ...args) {\n // Only traces request events\n if (event !== 'request') {\n return original.apply(this, [event, ...args]);\n }\n const request = args[0];\n const response = args[1];\n const method = request.method || 'GET';\n instrumentation._diag.debug(`${component} instrumentation incomingRequest`);\n if ((0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation.getConfig().ignoreIncomingRequestHook?.(request), (e) => {\n if (e != null) {\n instrumentation._diag.error('caught ignoreIncomingRequestHook error: ', e);\n }\n }, true)) {\n return api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => {\n api_1.context.bind(api_1.context.active(), request);\n api_1.context.bind(api_1.context.active(), response);\n return original.apply(this, [event, ...args]);\n });\n }\n const headers = request.headers;\n const spanAttributes = (0, utils_1.getIncomingRequestAttributes)(request, {\n component: component,\n serverName: instrumentation.getConfig().serverName,\n hookAttributes: instrumentation._callStartSpanHook(request, instrumentation.getConfig().startIncomingSpanHook),\n semconvStability: instrumentation._semconvStability,\n enableSyntheticSourceDetection: instrumentation.getConfig().enableSyntheticSourceDetection || false,\n }, instrumentation._diag);\n Object.assign(spanAttributes, instrumentation._headerCapture.server.captureRequestHeaders(header => request.headers[header]));\n const spanOptions = {\n kind: api_1.SpanKind.SERVER,\n attributes: spanAttributes,\n };\n const startTime = (0, core_1.hrTime)();\n const oldMetricAttributes = (0, utils_1.getIncomingRequestMetricAttributes)(spanAttributes);\n // request method and url.scheme are both required span attributes\n const stableMetricAttributes = {\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: spanAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD],\n [semantic_conventions_1.ATTR_URL_SCHEME]: spanAttributes[semantic_conventions_1.ATTR_URL_SCHEME],\n };\n // recommended if and only if one was sent, same as span recommendation\n if (spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION];\n }\n const ctx = api_1.propagation.extract(api_1.ROOT_CONTEXT, headers);\n const span = instrumentation._startHttpSpan(method, spanOptions, ctx);\n const rpcMetadata = {\n type: core_1.RPCType.HTTP,\n span,\n };\n return api_1.context.with((0, core_1.setRPCMetadata)(api_1.trace.setSpan(ctx, span), rpcMetadata), () => {\n api_1.context.bind(api_1.context.active(), request);\n api_1.context.bind(api_1.context.active(), response);\n if (instrumentation.getConfig().requestHook) {\n instrumentation._callRequestHook(span, request);\n }\n if (instrumentation.getConfig().responseHook) {\n instrumentation._callResponseHook(span, response);\n }\n // After 'error', no further events other than 'close' should be emitted.\n let hasError = false;\n response.on('close', () => {\n if (hasError) {\n return;\n }\n instrumentation._onServerResponseFinish(request, response, span, oldMetricAttributes, stableMetricAttributes, startTime);\n });\n response.on(events_1.errorMonitor, (err) => {\n hasError = true;\n instrumentation._onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, err);\n });\n return (0, instrumentation_1.safeExecuteInTheMiddle)(() => original.apply(this, [event, ...args]), error => {\n if (error) {\n instrumentation._onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, error);\n throw error;\n }\n });\n });\n };\n }\n _outgoingRequestFunction(component, original) {\n const instrumentation = this;\n return function outgoingRequest(options, ...args) {\n if (!(0, utils_1.isValidOptionsType)(options)) {\n return original.apply(this, [options, ...args]);\n }\n const extraOptions = typeof args[0] === 'object' &&\n (typeof options === 'string' || options instanceof url.URL)\n ? args.shift()\n : undefined;\n const { method, invalidUrl, optionsParsed } = (0, utils_1.getRequestInfo)(instrumentation._diag, options, extraOptions);\n if ((0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation\n .getConfig()\n .ignoreOutgoingRequestHook?.(optionsParsed), (e) => {\n if (e != null) {\n instrumentation._diag.error('caught ignoreOutgoingRequestHook error: ', e);\n }\n }, true)) {\n return original.apply(this, [optionsParsed, ...args]);\n }\n const { hostname, port } = (0, utils_1.extractHostnameAndPort)(optionsParsed);\n const attributes = (0, utils_1.getOutgoingRequestAttributes)(optionsParsed, {\n component,\n port,\n hostname,\n hookAttributes: instrumentation._callStartSpanHook(optionsParsed, instrumentation.getConfig().startOutgoingSpanHook),\n redactedQueryParams: instrumentation.getConfig().redactedQueryParams, // Added config for adding custom query strings\n }, instrumentation._semconvStability, instrumentation.getConfig().enableSyntheticSourceDetection || false);\n const startTime = (0, core_1.hrTime)();\n const oldMetricAttributes = (0, utils_1.getOutgoingRequestMetricAttributes)(attributes);\n // request method, server address, and server port are both required span attributes\n const stableMetricAttributes = {\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: attributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD],\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS],\n [semantic_conventions_1.ATTR_SERVER_PORT]: attributes[semantic_conventions_1.ATTR_SERVER_PORT],\n };\n // required if and only if one was sent, same as span requirement\n if (attributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n stableMetricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] =\n attributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n // recommended if and only if one was sent, same as span recommendation\n if (attributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] =\n attributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION];\n }\n const spanOptions = {\n kind: api_1.SpanKind.CLIENT,\n attributes,\n };\n const span = instrumentation._startHttpSpan(method, spanOptions);\n const parentContext = api_1.context.active();\n const requestContext = api_1.trace.setSpan(parentContext, span);\n if (!optionsParsed.headers) {\n optionsParsed.headers = {};\n }\n else {\n // Make a copy of the headers object to avoid mutating an object the\n // caller might have a reference to.\n optionsParsed.headers = Object.assign({}, optionsParsed.headers);\n }\n api_1.propagation.inject(requestContext, optionsParsed.headers);\n return api_1.context.with(requestContext, () => {\n /*\n * The response callback is registered before ClientRequest is bound,\n * thus it is needed to bind it before the function call.\n */\n const cb = args[args.length - 1];\n if (typeof cb === 'function') {\n args[args.length - 1] = api_1.context.bind(parentContext, cb);\n }\n const request = (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n if (invalidUrl) {\n // we know that the url is invalid, there's no point in injecting context as it will fail validation.\n // Passing in what the user provided will give the user an error that matches what they'd see without\n // the instrumentation.\n return original.apply(this, [options, ...args]);\n }\n else {\n return original.apply(this, [optionsParsed, ...args]);\n }\n }, error => {\n if (error) {\n instrumentation._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error);\n throw error;\n }\n });\n instrumentation._diag.debug(`${component} instrumentation outgoingRequest`);\n api_1.context.bind(parentContext, request);\n return instrumentation._traceClientRequest(request, span, startTime, oldMetricAttributes, stableMetricAttributes);\n });\n };\n }\n _onServerResponseFinish(request, response, span, oldMetricAttributes, stableMetricAttributes, startTime) {\n const attributes = (0, utils_1.getIncomingRequestAttributesOnResponse)(request, response, this._semconvStability);\n oldMetricAttributes = Object.assign(oldMetricAttributes, (0, utils_1.getIncomingRequestMetricAttributesOnResponse)(attributes));\n stableMetricAttributes = Object.assign(stableMetricAttributes, (0, utils_1.getIncomingStableRequestMetricAttributesOnResponse)(attributes));\n span.setAttributes(this._headerCapture.server.captureResponseHeaders(header => response.getHeader(header)));\n span.setAttributes(attributes).setStatus({\n code: (0, utils_1.parseResponseStatus)(api_1.SpanKind.SERVER, response.statusCode),\n });\n const route = attributes[semantic_conventions_1.ATTR_HTTP_ROUTE];\n if (route) {\n span.updateName(`${request.method || 'GET'} ${route}`);\n }\n if (this.getConfig().applyCustomAttributesOnSpan) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().applyCustomAttributesOnSpan(span, request, response), () => { }, true);\n }\n this._closeHttpSpan(span, api_1.SpanKind.SERVER, startTime, oldMetricAttributes, stableMetricAttributes);\n }\n _onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error) {\n (0, utils_1.setSpanWithError)(span, error, this._semconvStability);\n stableMetricAttributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.name;\n this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes);\n }\n _onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, error) {\n (0, utils_1.setSpanWithError)(span, error, this._semconvStability);\n stableMetricAttributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.name;\n this._closeHttpSpan(span, api_1.SpanKind.SERVER, startTime, oldMetricAttributes, stableMetricAttributes);\n }\n _startHttpSpan(name, options, ctx = api_1.context.active()) {\n /*\n * If a parent is required but not present, we use a `NoopSpan` to still\n * propagate context without recording it.\n */\n const requireParent = options.kind === api_1.SpanKind.CLIENT\n ? this.getConfig().requireParentforOutgoingSpans\n : this.getConfig().requireParentforIncomingSpans;\n let span;\n const currentSpan = api_1.trace.getSpan(ctx);\n if (requireParent === true &&\n (!currentSpan || !api_1.trace.isSpanContextValid(currentSpan.spanContext()))) {\n span = api_1.trace.wrapSpanContext(api_1.INVALID_SPAN_CONTEXT);\n }\n else if (requireParent === true && currentSpan?.spanContext().isRemote) {\n span = currentSpan;\n }\n else {\n span = this.tracer.startSpan(name, options, ctx);\n }\n this._spanNotEnded.add(span);\n return span;\n }\n _closeHttpSpan(span, spanKind, startTime, oldMetricAttributes, stableMetricAttributes) {\n if (!this._spanNotEnded.has(span)) {\n return;\n }\n span.end();\n this._spanNotEnded.delete(span);\n // Record metrics\n const duration = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)()));\n if (spanKind === api_1.SpanKind.SERVER) {\n this._recordServerDuration(duration, oldMetricAttributes, stableMetricAttributes);\n }\n else if (spanKind === api_1.SpanKind.CLIENT) {\n this._recordClientDuration(duration, oldMetricAttributes, stableMetricAttributes);\n }\n }\n _callResponseHook(span, response) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().responseHook(span, response), () => { }, true);\n }\n _callRequestHook(span, request) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().requestHook(span, request), () => { }, true);\n }\n _callStartSpanHook(request, hookFunc) {\n if (typeof hookFunc === 'function') {\n return (0, instrumentation_1.safeExecuteInTheMiddle)(() => hookFunc(request), () => { }, true);\n }\n }\n _createHeaderCapture(semconvStability) {\n const config = this.getConfig();\n return {\n client: {\n captureRequestHeaders: (0, utils_1.headerCapture)('request', config.headersToSpanAttributes?.client?.requestHeaders ?? [], semconvStability),\n captureResponseHeaders: (0, utils_1.headerCapture)('response', config.headersToSpanAttributes?.client?.responseHeaders ?? [], semconvStability),\n },\n server: {\n captureRequestHeaders: (0, utils_1.headerCapture)('request', config.headersToSpanAttributes?.server?.requestHeaders ?? [], semconvStability),\n captureResponseHeaders: (0, utils_1.headerCapture)('response', config.headersToSpanAttributes?.server?.responseHeaders ?? [], semconvStability),\n },\n };\n }\n}\nexports.HttpInstrumentation = HttpInstrumentation;\n//# sourceMappingURL=http.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpInstrumentation = void 0;\nvar http_1 = require(\"./http\");\nObject.defineProperty(exports, \"HttpInstrumentation\", { enumerable: true, get: function () { return http_1.HttpInstrumentation; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracingSuppressed = exports.unsuppressTracing = exports.suppressTracing = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst SUPPRESS_TRACING_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key SUPPRESS_TRACING');\nfunction suppressTracing(context) {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\nexports.suppressTracing = suppressTracing;\nfunction unsuppressTracing(context) {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\nexports.unsuppressTracing = unsuppressTracing;\nfunction isTracingSuppressed(context) {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\nexports.isTracingSuppressed = isTracingSuppressed;\n//# sourceMappingURL=suppress-tracing.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BAGGAGE_MAX_TOTAL_LENGTH = exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = exports.BAGGAGE_HEADER = exports.BAGGAGE_ITEMS_SEPARATOR = exports.BAGGAGE_PROPERTIES_SEPARATOR = exports.BAGGAGE_KEY_PAIR_SEPARATOR = void 0;\nexports.BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexports.BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexports.BAGGAGE_ITEMS_SEPARATOR = ',';\n// Name of the http header used to propagate the baggage\nexports.BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n//# sourceMappingURL=constants.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseKeyPairsIntoRecord = exports.parsePairKeyValue = exports.getKeyPairs = exports.serializeKeyPairs = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst constants_1 = require(\"./constants\");\nfunction serializeKeyPairs(keyPairs) {\n return keyPairs.reduce((hValue, current) => {\n const value = `${hValue}${hValue !== '' ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ''}${current}`;\n return value.length > constants_1.BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\nexports.serializeKeyPairs = serializeKeyPairs;\nfunction getKeyPairs(baggage) {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += constants_1.BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n return entry;\n });\n}\nexports.getKeyPairs = getKeyPairs;\nfunction parsePairKeyValue(entry) {\n if (!entry)\n return;\n const metadataSeparatorIndex = entry.indexOf(constants_1.BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart = metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n const separatorIndex = keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0)\n return;\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n if (!rawKey || !rawValue)\n return;\n let key;\n let value;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n }\n catch {\n return;\n }\n let metadata;\n if (metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = (0, api_1.baggageEntryMetadataFromString)(metadataString);\n }\n return { key, value, metadata };\n}\nexports.parsePairKeyValue = parsePairKeyValue;\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nfunction parseKeyPairsIntoRecord(value) {\n const result = {};\n if (typeof value === 'string' && value.length > 0) {\n value.split(constants_1.BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n return result;\n}\nexports.parseKeyPairsIntoRecord = parseKeyPairsIntoRecord;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CBaggagePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../../trace/suppress-tracing\");\nconst constants_1 = require(\"../constants\");\nconst utils_1 = require(\"../utils\");\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nclass W3CBaggagePropagator {\n inject(context, carrier, setter) {\n const baggage = api_1.propagation.getBaggage(context);\n if (!baggage || (0, suppress_tracing_1.isTracingSuppressed)(context))\n return;\n const keyPairs = (0, utils_1.getKeyPairs)(baggage)\n .filter((pair) => {\n return pair.length <= constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = (0, utils_1.serializeKeyPairs)(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, constants_1.BAGGAGE_HEADER, headerValue);\n }\n }\n extract(context, carrier, getter) {\n const headerValue = getter.get(carrier, constants_1.BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString)\n return context;\n const baggage = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(constants_1.BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = (0, utils_1.parsePairKeyValue)(entry);\n if (keyPair) {\n const baggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return api_1.propagation.setBaggage(context, api_1.propagation.createBaggage(baggage));\n }\n fields() {\n return [constants_1.BAGGAGE_HEADER];\n }\n}\nexports.W3CBaggagePropagator = W3CBaggagePropagator;\n//# sourceMappingURL=W3CBaggagePropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnchoredClock = void 0;\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nclass AnchoredClock {\n _monotonicClock;\n _epochMillis;\n _performanceMillis;\n /**\n * Create a new AnchoredClock anchored to the current time returned by systemClock.\n *\n * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n */\n constructor(systemClock, monotonicClock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\n /**\n * Returns the current time by adding the number of milliseconds since the\n * AnchoredClock was created to the creation epoch time\n */\n now() {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\nexports.AnchoredClock = AnchoredClock;\n//# sourceMappingURL=anchored-clock.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAttributeValue = exports.isAttributeKey = exports.sanitizeAttributes = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nfunction sanitizeAttributes(attributes) {\n const out = {};\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n api_1.diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = attributes[key];\n if (!isAttributeValue(val)) {\n api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n }\n else {\n out[key] = val;\n }\n }\n return out;\n}\nexports.sanitizeAttributes = sanitizeAttributes;\nfunction isAttributeKey(key) {\n return typeof key === 'string' && key !== '';\n}\nexports.isAttributeKey = isAttributeKey;\nfunction isAttributeValue(val) {\n if (val == null) {\n return true;\n }\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n return isValidPrimitiveAttributeValueType(typeof val);\n}\nexports.isAttributeValue = isAttributeValue;\nfunction isHomogeneousAttributeValueArray(arr) {\n let type;\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null)\n continue;\n const elementType = typeof element;\n if (elementType === type) {\n continue;\n }\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n return false;\n }\n return true;\n}\nfunction isValidPrimitiveAttributeValueType(valType) {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n return false;\n}\n//# sourceMappingURL=attributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loggingErrorHandler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nfunction loggingErrorHandler() {\n return (ex) => {\n api_1.diag.error(stringifyException(ex));\n };\n}\nexports.loggingErrorHandler = loggingErrorHandler;\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex) {\n if (typeof ex === 'string') {\n return ex;\n }\n else {\n return JSON.stringify(flattenException(ex));\n }\n}\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex) {\n const result = {};\n let current = ex;\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName])\n return;\n const value = current[propertyName];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n return result;\n}\n//# sourceMappingURL=logging-error-handler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalErrorHandler = exports.setGlobalErrorHandler = void 0;\nconst logging_error_handler_1 = require(\"./logging-error-handler\");\n/** The global error handler delegate */\nlet delegateHandler = (0, logging_error_handler_1.loggingErrorHandler)();\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nfunction setGlobalErrorHandler(handler) {\n delegateHandler = handler;\n}\nexports.setGlobalErrorHandler = setGlobalErrorHandler;\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nfunction globalErrorHandler(ex) {\n try {\n delegateHandler(ex);\n }\n catch { } // eslint-disable-line no-empty\n}\nexports.globalErrorHandler = globalErrorHandler;\n//# sourceMappingURL=global-error-handler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringListFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports.getNumberFromEnv = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst util_1 = require(\"util\");\n/**\n * Retrieves a number from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number.\n * - Returns a number in all other cases.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {number | undefined} - The number value or `undefined`.\n */\nfunction getNumberFromEnv(key) {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n const value = Number(raw);\n if (isNaN(value)) {\n api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected a number, using defaults`);\n return undefined;\n }\n return value;\n}\nexports.getNumberFromEnv = getNumberFromEnv;\n/**\n * Retrieves a string from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string | undefined} - The string value or `undefined`.\n */\nfunction getStringFromEnv(key) {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\nexports.getStringFromEnv = getStringFromEnv;\n/**\n * Retrieves a boolean value from an environment variable.\n * - Trims leading and trailing whitespace and ignores casing.\n * - Returns `false` if the environment variable is empty, unset, or contains only whitespace.\n * - Returns `false` for strings that cannot be mapped to a boolean.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace.\n */\nfunction getBooleanFromEnv(key) {\n const raw = process.env[key]?.trim().toLowerCase();\n if (raw == null || raw === '') {\n // NOTE: falling back to `false` instead of `undefined` as required by the specification.\n // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary\n // normalizations in the consuming code.\n return false;\n }\n if (raw === 'true') {\n return true;\n }\n else if (raw === 'false') {\n return false;\n }\n else {\n api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`);\n return false;\n }\n}\nexports.getBooleanFromEnv = getBooleanFromEnv;\n/**\n * Retrieves a list of strings from an environment variable.\n * - Uses ',' as the delimiter.\n * - Trims leading and trailing whitespace from each entry.\n * - Excludes empty entries.\n * - Returns `undefined` if the environment variable is empty or contains only whitespace.\n * - Returns an empty array if all entries are empty or whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string[] | undefined} - The list of strings or `undefined`.\n */\nfunction getStringListFromEnv(key) {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\nexports.getStringListFromEnv = getStringListFromEnv;\n//# sourceMappingURL=environment.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/**\n * @deprecated Use globalThis directly instead.\n */\nexports._globalThis = globalThis;\n//# sourceMappingURL=globalThis.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '2.6.1';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_PROCESS_RUNTIME_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SDK_INFO = void 0;\nconst version_1 = require(\"../../version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../../semconv\");\n/** Constants describing the SDK in use */\nexports.SDK_INFO = {\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: semantic_conventions_1.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: version_1.VERSION,\n};\n//# sourceMappingURL=sdk-info.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.otperformance = exports.SDK_INFO = exports._globalThis = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = void 0;\nvar environment_1 = require(\"./environment\");\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return environment_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return environment_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return environment_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return environment_1.getStringListFromEnv; } });\nvar globalThis_1 = require(\"../../common/globalThis\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return globalThis_1._globalThis; } });\nvar sdk_info_1 = require(\"./sdk-info\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return sdk_info_1.SDK_INFO; } });\n/**\n * @deprecated Use performance directly.\n */\nexports.otperformance = performance;\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringListFromEnv = exports.getNumberFromEnv = exports.getStringFromEnv = exports.getBooleanFromEnv = exports.otperformance = exports._globalThis = exports.SDK_INFO = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return node_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return node_1._globalThis; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return node_1.otperformance; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return node_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return node_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return node_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return node_1.getStringListFromEnv; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addHrTimes = exports.isTimeInput = exports.isTimeInputHrTime = exports.hrTimeToMicroseconds = exports.hrTimeToMilliseconds = exports.hrTimeToNanoseconds = exports.hrTimeToTimeStamp = exports.hrTimeDuration = exports.timeInputToHrTime = exports.hrTime = exports.getTimeOrigin = exports.millisToHrTime = void 0;\nconst platform_1 = require(\"../platform\");\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nfunction millisToHrTime(epochMillis) {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\nexports.millisToHrTime = millisToHrTime;\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nfunction getTimeOrigin() {\n return platform_1.otperformance.timeOrigin;\n}\nexports.getTimeOrigin = getTimeOrigin;\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nfunction hrTime(performanceNow) {\n const timeOrigin = millisToHrTime(platform_1.otperformance.timeOrigin);\n const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : platform_1.otperformance.now());\n return addHrTimes(timeOrigin, now);\n}\nexports.hrTime = hrTime;\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nfunction timeInputToHrTime(time) {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time;\n }\n else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < platform_1.otperformance.timeOrigin) {\n return hrTime(time);\n }\n else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n }\n else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n }\n else {\n throw TypeError('Invalid input type');\n }\n}\nexports.timeInputToHrTime = timeInputToHrTime;\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nfunction hrTimeDuration(startTime, endTime) {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n return [seconds, nanos];\n}\nexports.hrTimeDuration = hrTimeDuration;\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nfunction hrTimeToTimeStamp(time) {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\nexports.hrTimeToTimeStamp = hrTimeToTimeStamp;\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nfunction hrTimeToNanoseconds(time) {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\nexports.hrTimeToNanoseconds = hrTimeToNanoseconds;\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nfunction hrTimeToMilliseconds(time) {\n return time[0] * 1e3 + time[1] / 1e6;\n}\nexports.hrTimeToMilliseconds = hrTimeToMilliseconds;\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nfunction hrTimeToMicroseconds(time) {\n return time[0] * 1e6 + time[1] / 1e3;\n}\nexports.hrTimeToMicroseconds = hrTimeToMicroseconds;\n/**\n * check if time is HrTime\n * @param value\n */\nfunction isTimeInputHrTime(value) {\n return (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number');\n}\nexports.isTimeInputHrTime = isTimeInputHrTime;\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nfunction isTimeInput(value) {\n return (isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date);\n}\nexports.isTimeInput = isTimeInput;\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nfunction addHrTimes(time1, time2) {\n const out = [time1[0] + time2[0], time1[1] + time2[1]];\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n return out;\n}\nexports.addHrTimes = addHrTimes;\n//# sourceMappingURL=time.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unrefTimer = void 0;\n/**\n * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package.\n * @param timer\n */\nfunction unrefTimer(timer) {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\nexports.unrefTimer = unrefTimer;\n//# sourceMappingURL=timer-util.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportResultCode = void 0;\nvar ExportResultCode;\n(function (ExportResultCode) {\n ExportResultCode[ExportResultCode[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExportResultCode[ExportResultCode[\"FAILED\"] = 1] = \"FAILED\";\n})(ExportResultCode = exports.ExportResultCode || (exports.ExportResultCode = {}));\n//# sourceMappingURL=ExportResult.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompositePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/** Combines multiple propagators into a single propagator. */\nclass CompositePropagator {\n _propagators;\n _fields;\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config = {}) {\n this._propagators = config.propagators ?? [];\n this._fields = Array.from(new Set(this._propagators\n // older propagators may not have fields function, null check to be sure\n .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n .reduce((x, y) => x.concat(y), [])));\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same carrier key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to inject\n * @param carrier Carrier into which context will be injected\n */\n inject(context, carrier, setter) {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n }\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same context key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to add values to\n * @param carrier Carrier from which to extract context\n */\n extract(context, carrier, getter) {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n return ctx;\n }, context);\n }\n fields() {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\nexports.CompositePropagator = CompositePropagator;\n//# sourceMappingURL=composite.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=validators.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceState = void 0;\nconst validators_1 = require(\"../internal/validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceState {\n _internalState = new Map();\n constructor(rawTraceState) {\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return this._keys()\n .reduce((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, validators_1.validateKey)(key) && (0, validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceState = TraceState;\n//# sourceMappingURL=TraceState.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CTraceContextPropagator = exports.parseTraceParent = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"./suppress-tracing\");\nconst TraceState_1 = require(\"./TraceState\");\nexports.TRACE_PARENT_HEADER = 'traceparent';\nexports.TRACE_STATE_HEADER = 'tracestate';\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(`^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`);\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n * It should be dynamically generated server side to have the server's request trace Id,\n * a parent span Id that was set on the server's request span,\n * and the trace flags to indicate the server's sampling decision\n * (01 = sampled, 00 = not sampled).\n * for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n * For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nfunction parseTraceParent(traceParent) {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match)\n return null;\n // According to the specification the implementation should be compatible\n // with future versions. If there are more parts, we only reject it if it's using version 00\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n if (match[1] === '00' && match[5])\n return null;\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\nexports.parseTraceParent = parseTraceParent;\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nclass W3CTraceContextPropagator {\n inject(context, carrier, setter) {\n const spanContext = api_1.trace.getSpanContext(context);\n if (!spanContext ||\n (0, suppress_tracing_1.isTracingSuppressed)(context) ||\n !(0, api_1.isSpanContextValid)(spanContext))\n return;\n const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || api_1.TraceFlags.NONE).toString(16)}`;\n setter.set(carrier, exports.TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(carrier, exports.TRACE_STATE_HEADER, spanContext.traceState.serialize());\n }\n }\n extract(context, carrier, getter) {\n const traceParentHeader = getter.get(carrier, exports.TRACE_PARENT_HEADER);\n if (!traceParentHeader)\n return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string')\n return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext)\n return context;\n spanContext.isRemote = true;\n const traceStateHeader = getter.get(carrier, exports.TRACE_STATE_HEADER);\n if (traceStateHeader) {\n // If more than one `tracestate` header is found, we merge them into a\n // single header.\n const state = Array.isArray(traceStateHeader)\n ? traceStateHeader.join(',')\n : traceStateHeader;\n spanContext.traceState = new TraceState_1.TraceState(typeof state === 'string' ? state : undefined);\n }\n return api_1.trace.setSpanContext(context, spanContext);\n }\n fields() {\n return [exports.TRACE_PARENT_HEADER, exports.TRACE_STATE_HEADER];\n }\n}\nexports.W3CTraceContextPropagator = W3CTraceContextPropagator;\n//# sourceMappingURL=W3CTraceContextPropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRPCMetadata = exports.deleteRPCMetadata = exports.setRPCMetadata = exports.RPCType = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst RPC_METADATA_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key RPC_METADATA');\nvar RPCType;\n(function (RPCType) {\n RPCType[\"HTTP\"] = \"http\";\n})(RPCType = exports.RPCType || (exports.RPCType = {}));\nfunction setRPCMetadata(context, meta) {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\nexports.setRPCMetadata = setRPCMetadata;\nfunction deleteRPCMetadata(context) {\n return context.deleteValue(RPC_METADATA_KEY);\n}\nexports.deleteRPCMetadata = deleteRPCMetadata;\nfunction getRPCMetadata(context) {\n return context.getValue(RPC_METADATA_KEY);\n}\nexports.getRPCMetadata = getRPCMetadata;\n//# sourceMappingURL=rpc-metadata.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPlainObject = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n return false;\n }\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString);\n}\nexports.isPlainObject = isPlainObject;\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value)\n ? getRawTag(value)\n : objectToString(value);\n}\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n }\n catch {\n // silence\n }\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n }\n else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n//# sourceMappingURL=lodash.merge.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst lodash_merge_1 = require(\"./lodash.merge\");\nconst MAX_LEVEL = 20;\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nfunction merge(...args) {\n let result = args.shift();\n const objects = new WeakMap();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n return result;\n}\nexports.merge = merge;\nfunction takeValue(value) {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(one, two, level = 0, objects) {\n let result;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\n }\n else if (isArray(one)) {\n result = one.slice();\n if (isArray(two)) {\n for (let i = 0, j = two.length; i < j; i++) {\n result.push(takeValue(two[i]));\n }\n }\n else if (isObject(two)) {\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n result[key] = takeValue(two[key]);\n }\n }\n }\n else if (isObject(one)) {\n if (isObject(two)) {\n if (!shouldMerge(one, two)) {\n return two;\n }\n result = Object.assign({}, one);\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n }\n else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n }\n else {\n const obj1 = result[key];\n const obj2 = twoValue;\n if (wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)) {\n delete result[key];\n }\n else {\n if (isObject(obj1) && isObject(obj2)) {\n const arr1 = objects.get(obj1) || [];\n const arr2 = objects.get(obj2) || [];\n arr1.push({ obj: one, key });\n arr2.push({ obj: two, key });\n objects.set(obj1, arr1);\n objects.set(obj2, arr2);\n }\n result[key] = mergeTwoObjects(result[key], twoValue, level, objects);\n }\n }\n }\n }\n else {\n result = two;\n }\n }\n return result;\n}\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(obj, key, objects) {\n const arr = objects.get(obj[key]) || [];\n for (let i = 0, j = arr.length; i < j; i++) {\n const info = arr[i];\n if (info.key === key && info.obj === obj) {\n return true;\n }\n }\n return false;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isObject(value) {\n return (!isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object');\n}\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined' ||\n value instanceof Date ||\n value instanceof RegExp ||\n value === null);\n}\nfunction shouldMerge(one, two) {\n if (!(0, lodash_merge_1.isPlainObject)(one) || !(0, lodash_merge_1.isPlainObject)(two)) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=merge.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callWithTimeout = exports.TimeoutError = void 0;\n/**\n * Error that is thrown on timeouts.\n */\nclass TimeoutError extends Error {\n constructor(message) {\n super(message);\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\nexports.TimeoutError = TimeoutError;\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *

NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nfunction callWithTimeout(promise, timeout) {\n let timeoutHandle;\n const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n return Promise.race([promise, timeoutPromise]).then(result => {\n clearTimeout(timeoutHandle);\n return result;\n }, reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n });\n}\nexports.callWithTimeout = callWithTimeout;\n//# sourceMappingURL=timeout.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isUrlIgnored = exports.urlMatches = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nfunction urlMatches(url, urlToMatch) {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n }\n else {\n return !!url.match(urlToMatch);\n }\n}\nexports.urlMatches = urlMatches;\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nfunction isUrlIgnored(url, ignoredUrls) {\n if (!ignoredUrls) {\n return false;\n }\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\nexports.isUrlIgnored = isUrlIgnored;\n//# sourceMappingURL=url.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deferred = void 0;\nclass Deferred {\n _promise;\n _resolve;\n _reject;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n get promise() {\n return this._promise;\n }\n resolve(val) {\n this._resolve(val);\n }\n reject(err) {\n this._reject(err);\n }\n}\nexports.Deferred = Deferred;\n//# sourceMappingURL=promise.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindOnceFuture = void 0;\nconst promise_1 = require(\"./promise\");\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nclass BindOnceFuture {\n _isCalled = false;\n _deferred = new promise_1.Deferred();\n _callback;\n _that;\n constructor(callback, that) {\n this._callback = callback;\n this._that = that;\n }\n get isCalled() {\n return this._isCalled;\n }\n get promise() {\n return this._deferred.promise;\n }\n call(...args) {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err));\n }\n catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\nexports.BindOnceFuture = BindOnceFuture;\n//# sourceMappingURL=callback.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diagLogLevelFromString = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst logLevelMap = {\n ALL: api_1.DiagLogLevel.ALL,\n VERBOSE: api_1.DiagLogLevel.VERBOSE,\n DEBUG: api_1.DiagLogLevel.DEBUG,\n INFO: api_1.DiagLogLevel.INFO,\n WARN: api_1.DiagLogLevel.WARN,\n ERROR: api_1.DiagLogLevel.ERROR,\n NONE: api_1.DiagLogLevel.NONE,\n};\n/**\n * Convert a string to a {@link DiagLogLevel}, defaults to {@link DiagLogLevel} if the log level does not exist or undefined if the input is undefined.\n * @param value\n */\nfunction diagLogLevelFromString(value) {\n if (value == null) {\n // don't fall back to default - no value set has different semantics for ús than an incorrect value (do not set vs. fall back to default)\n return undefined;\n }\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n if (resolvedLogLevel == null) {\n api_1.diag.warn(`Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`);\n return api_1.DiagLogLevel.INFO;\n }\n return resolvedLogLevel;\n}\nexports.diagLogLevelFromString = diagLogLevelFromString;\n//# sourceMappingURL=configuration.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._export = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../trace/suppress-tracing\");\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nfunction _export(exporter, arg) {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n api_1.context.with((0, suppress_tracing_1.suppressTracing)(api_1.context.active()), () => {\n exporter.export(arg, resolve);\n });\n });\n}\nexports._export = _export;\n//# sourceMappingURL=exporter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.internal = exports.diagLogLevelFromString = exports.BindOnceFuture = exports.urlMatches = exports.isUrlIgnored = exports.callWithTimeout = exports.TimeoutError = exports.merge = exports.TraceState = exports.unsuppressTracing = exports.suppressTracing = exports.isTracingSuppressed = exports.setRPCMetadata = exports.getRPCMetadata = exports.deleteRPCMetadata = exports.RPCType = exports.parseTraceParent = exports.W3CTraceContextPropagator = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = exports.CompositePropagator = exports.otperformance = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports._globalThis = exports.SDK_INFO = exports.parseKeyPairsIntoRecord = exports.ExportResultCode = exports.unrefTimer = exports.timeInputToHrTime = exports.millisToHrTime = exports.isTimeInputHrTime = exports.isTimeInput = exports.hrTimeToTimeStamp = exports.hrTimeToNanoseconds = exports.hrTimeToMilliseconds = exports.hrTimeToMicroseconds = exports.hrTimeDuration = exports.hrTime = exports.getTimeOrigin = exports.addHrTimes = exports.loggingErrorHandler = exports.setGlobalErrorHandler = exports.globalErrorHandler = exports.sanitizeAttributes = exports.isAttributeValue = exports.AnchoredClock = exports.W3CBaggagePropagator = void 0;\nvar W3CBaggagePropagator_1 = require(\"./baggage/propagation/W3CBaggagePropagator\");\nObject.defineProperty(exports, \"W3CBaggagePropagator\", { enumerable: true, get: function () { return W3CBaggagePropagator_1.W3CBaggagePropagator; } });\nvar anchored_clock_1 = require(\"./common/anchored-clock\");\nObject.defineProperty(exports, \"AnchoredClock\", { enumerable: true, get: function () { return anchored_clock_1.AnchoredClock; } });\nvar attributes_1 = require(\"./common/attributes\");\nObject.defineProperty(exports, \"isAttributeValue\", { enumerable: true, get: function () { return attributes_1.isAttributeValue; } });\nObject.defineProperty(exports, \"sanitizeAttributes\", { enumerable: true, get: function () { return attributes_1.sanitizeAttributes; } });\nvar global_error_handler_1 = require(\"./common/global-error-handler\");\nObject.defineProperty(exports, \"globalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.globalErrorHandler; } });\nObject.defineProperty(exports, \"setGlobalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.setGlobalErrorHandler; } });\nvar logging_error_handler_1 = require(\"./common/logging-error-handler\");\nObject.defineProperty(exports, \"loggingErrorHandler\", { enumerable: true, get: function () { return logging_error_handler_1.loggingErrorHandler; } });\nvar time_1 = require(\"./common/time\");\nObject.defineProperty(exports, \"addHrTimes\", { enumerable: true, get: function () { return time_1.addHrTimes; } });\nObject.defineProperty(exports, \"getTimeOrigin\", { enumerable: true, get: function () { return time_1.getTimeOrigin; } });\nObject.defineProperty(exports, \"hrTime\", { enumerable: true, get: function () { return time_1.hrTime; } });\nObject.defineProperty(exports, \"hrTimeDuration\", { enumerable: true, get: function () { return time_1.hrTimeDuration; } });\nObject.defineProperty(exports, \"hrTimeToMicroseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMicroseconds; } });\nObject.defineProperty(exports, \"hrTimeToMilliseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMilliseconds; } });\nObject.defineProperty(exports, \"hrTimeToNanoseconds\", { enumerable: true, get: function () { return time_1.hrTimeToNanoseconds; } });\nObject.defineProperty(exports, \"hrTimeToTimeStamp\", { enumerable: true, get: function () { return time_1.hrTimeToTimeStamp; } });\nObject.defineProperty(exports, \"isTimeInput\", { enumerable: true, get: function () { return time_1.isTimeInput; } });\nObject.defineProperty(exports, \"isTimeInputHrTime\", { enumerable: true, get: function () { return time_1.isTimeInputHrTime; } });\nObject.defineProperty(exports, \"millisToHrTime\", { enumerable: true, get: function () { return time_1.millisToHrTime; } });\nObject.defineProperty(exports, \"timeInputToHrTime\", { enumerable: true, get: function () { return time_1.timeInputToHrTime; } });\nvar timer_util_1 = require(\"./common/timer-util\");\nObject.defineProperty(exports, \"unrefTimer\", { enumerable: true, get: function () { return timer_util_1.unrefTimer; } });\nvar ExportResult_1 = require(\"./ExportResult\");\nObject.defineProperty(exports, \"ExportResultCode\", { enumerable: true, get: function () { return ExportResult_1.ExportResultCode; } });\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"parseKeyPairsIntoRecord\", { enumerable: true, get: function () { return utils_1.parseKeyPairsIntoRecord; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return platform_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return platform_1._globalThis; } });\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return platform_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return platform_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return platform_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return platform_1.getStringListFromEnv; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return platform_1.otperformance; } });\nvar composite_1 = require(\"./propagation/composite\");\nObject.defineProperty(exports, \"CompositePropagator\", { enumerable: true, get: function () { return composite_1.CompositePropagator; } });\nvar W3CTraceContextPropagator_1 = require(\"./trace/W3CTraceContextPropagator\");\nObject.defineProperty(exports, \"TRACE_PARENT_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_PARENT_HEADER; } });\nObject.defineProperty(exports, \"TRACE_STATE_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_STATE_HEADER; } });\nObject.defineProperty(exports, \"W3CTraceContextPropagator\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.W3CTraceContextPropagator; } });\nObject.defineProperty(exports, \"parseTraceParent\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.parseTraceParent; } });\nvar rpc_metadata_1 = require(\"./trace/rpc-metadata\");\nObject.defineProperty(exports, \"RPCType\", { enumerable: true, get: function () { return rpc_metadata_1.RPCType; } });\nObject.defineProperty(exports, \"deleteRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.deleteRPCMetadata; } });\nObject.defineProperty(exports, \"getRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.getRPCMetadata; } });\nObject.defineProperty(exports, \"setRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.setRPCMetadata; } });\nvar suppress_tracing_1 = require(\"./trace/suppress-tracing\");\nObject.defineProperty(exports, \"isTracingSuppressed\", { enumerable: true, get: function () { return suppress_tracing_1.isTracingSuppressed; } });\nObject.defineProperty(exports, \"suppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.suppressTracing; } });\nObject.defineProperty(exports, \"unsuppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.unsuppressTracing; } });\nvar TraceState_1 = require(\"./trace/TraceState\");\nObject.defineProperty(exports, \"TraceState\", { enumerable: true, get: function () { return TraceState_1.TraceState; } });\nvar merge_1 = require(\"./utils/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar timeout_1 = require(\"./utils/timeout\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return timeout_1.TimeoutError; } });\nObject.defineProperty(exports, \"callWithTimeout\", { enumerable: true, get: function () { return timeout_1.callWithTimeout; } });\nvar url_1 = require(\"./utils/url\");\nObject.defineProperty(exports, \"isUrlIgnored\", { enumerable: true, get: function () { return url_1.isUrlIgnored; } });\nObject.defineProperty(exports, \"urlMatches\", { enumerable: true, get: function () { return url_1.urlMatches; } });\nvar callback_1 = require(\"./utils/callback\");\nObject.defineProperty(exports, \"BindOnceFuture\", { enumerable: true, get: function () { return callback_1.BindOnceFuture; } });\nvar configuration_1 = require(\"./utils/configuration\");\nObject.defineProperty(exports, \"diagLogLevelFromString\", { enumerable: true, get: function () { return configuration_1.diagLogLevelFromString; } });\nconst exporter_1 = require(\"./internal/exporter\");\nexports.internal = {\n _export: exporter_1._export,\n};\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractAsyncHooksContextManager = void 0;\nconst events_1 = require(\"events\");\nconst ADD_LISTENER_METHODS = [\n 'addListener',\n 'on',\n 'once',\n 'prependListener',\n 'prependOnceListener',\n];\nclass AbstractAsyncHooksContextManager {\n /**\n * Binds a the certain context or the active one to the target function and then returns the target\n * @param context A context (span) to be bind to target\n * @param target a function or event emitter. When target or one of its callbacks is called,\n * the provided context will be used as the active context for the duration of the call.\n */\n bind(context, target) {\n if (target instanceof events_1.EventEmitter) {\n return this._bindEventEmitter(context, target);\n }\n if (typeof target === 'function') {\n return this._bindFunction(context, target);\n }\n return target;\n }\n _bindFunction(context, target) {\n const manager = this;\n const contextWrapper = function (...args) {\n return manager.with(context, () => target.apply(this, args));\n };\n Object.defineProperty(contextWrapper, 'length', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: target.length,\n });\n /**\n * It isn't possible to tell Typescript that contextWrapper is the same as T\n * so we forced to cast as any here.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return contextWrapper;\n }\n /**\n * By default, EventEmitter call their callback with their context, which we do\n * not want, instead we will bind a specific context to all callbacks that\n * go through it.\n * @param context the context we want to bind\n * @param ee EventEmitter an instance of EventEmitter to patch\n */\n _bindEventEmitter(context, ee) {\n const map = this._getPatchMap(ee);\n if (map !== undefined)\n return ee;\n this._createPatchMap(ee);\n // patch methods that add a listener to propagate context\n ADD_LISTENER_METHODS.forEach(methodName => {\n if (ee[methodName] === undefined)\n return;\n ee[methodName] = this._patchAddListener(ee, ee[methodName], context);\n });\n // patch methods that remove a listener\n if (typeof ee.removeListener === 'function') {\n ee.removeListener = this._patchRemoveListener(ee, ee.removeListener);\n }\n if (typeof ee.off === 'function') {\n ee.off = this._patchRemoveListener(ee, ee.off);\n }\n // patch method that remove all listeners\n if (typeof ee.removeAllListeners === 'function') {\n ee.removeAllListeners = this._patchRemoveAllListeners(ee, ee.removeAllListeners);\n }\n return ee;\n }\n /**\n * Patch methods that remove a given listener so that we match the \"patched\"\n * version of that listener (the one that propagate context).\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n _patchRemoveListener(ee, original) {\n const contextManager = this;\n return function (event, listener) {\n const events = contextManager._getPatchMap(ee)?.[event];\n if (events === undefined) {\n return original.call(this, event, listener);\n }\n const patchedListener = events.get(listener);\n return original.call(this, event, patchedListener || listener);\n };\n }\n /**\n * Patch methods that remove all listeners so we remove our\n * internal references for a given event.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n _patchRemoveAllListeners(ee, original) {\n const contextManager = this;\n return function (event) {\n const map = contextManager._getPatchMap(ee);\n if (map !== undefined) {\n if (arguments.length === 0) {\n contextManager._createPatchMap(ee);\n }\n else if (map[event] !== undefined) {\n delete map[event];\n }\n }\n return original.apply(this, arguments);\n };\n }\n /**\n * Patch methods on an event emitter instance that can add listeners so we\n * can force them to propagate a given context.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n * @param [context] context to propagate when calling listeners\n */\n _patchAddListener(ee, original, context) {\n const contextManager = this;\n return function (event, listener) {\n /**\n * This check is required to prevent double-wrapping the listener.\n * The implementation for ee.once wraps the listener and calls ee.on.\n * Without this check, we would wrap that wrapped listener.\n * This causes an issue because ee.removeListener depends on the onceWrapper\n * to properly remove the listener. If we wrap their wrapper, we break\n * that detection.\n */\n if (contextManager._wrapped) {\n return original.call(this, event, listener);\n }\n let map = contextManager._getPatchMap(ee);\n if (map === undefined) {\n map = contextManager._createPatchMap(ee);\n }\n let listeners = map[event];\n if (listeners === undefined) {\n listeners = new WeakMap();\n map[event] = listeners;\n }\n const patchedListener = contextManager.bind(context, listener);\n // store a weak reference of the user listener to ours\n listeners.set(listener, patchedListener);\n /**\n * See comment at the start of this function for the explanation of this property.\n */\n contextManager._wrapped = true;\n try {\n return original.call(this, event, patchedListener);\n }\n finally {\n contextManager._wrapped = false;\n }\n };\n }\n _createPatchMap(ee) {\n const map = Object.create(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ee[this._kOtListeners] = map;\n return map;\n }\n _getPatchMap(ee) {\n return ee[this._kOtListeners];\n }\n _kOtListeners = Symbol('OtListeners');\n _wrapped = false;\n}\nexports.AbstractAsyncHooksContextManager = AbstractAsyncHooksContextManager;\n//# sourceMappingURL=AbstractAsyncHooksContextManager.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncHooksContextManager = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst asyncHooks = require(\"async_hooks\");\nconst AbstractAsyncHooksContextManager_1 = require(\"./AbstractAsyncHooksContextManager\");\n/**\n * @deprecated Use AsyncLocalStorageContextManager instead.\n */\nclass AsyncHooksContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager {\n _asyncHook;\n _contexts = new Map();\n _stack = [];\n constructor() {\n super();\n this._asyncHook = asyncHooks.createHook({\n init: this._init.bind(this),\n before: this._before.bind(this),\n after: this._after.bind(this),\n destroy: this._destroy.bind(this),\n promiseResolve: this._destroy.bind(this),\n });\n }\n active() {\n return this._stack[this._stack.length - 1] ?? api_1.ROOT_CONTEXT;\n }\n with(context, fn, thisArg, ...args) {\n this._enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n }\n finally {\n this._exitContext();\n }\n }\n enable() {\n this._asyncHook.enable();\n return this;\n }\n disable() {\n this._asyncHook.disable();\n this._contexts.clear();\n this._stack = [];\n return this;\n }\n /**\n * Init hook will be called when userland create a async context, setting the\n * context as the current one if it exist.\n * @param uid id of the async context\n * @param type the resource type\n */\n _init(uid, type) {\n // ignore TIMERWRAP as they combine timers with same timeout which can lead to\n // false context propagation. TIMERWRAP has been removed in node 11\n // every timer has it's own `Timeout` resource anyway which is used to propagate\n // context.\n if (type === 'TIMERWRAP')\n return;\n const context = this._stack[this._stack.length - 1];\n if (context !== undefined) {\n this._contexts.set(uid, context);\n }\n }\n /**\n * Destroy hook will be called when a given context is no longer used so we can\n * remove its attached context.\n * @param uid uid of the async context\n */\n _destroy(uid) {\n this._contexts.delete(uid);\n }\n /**\n * Before hook is called just before executing a async context.\n * @param uid uid of the async context\n */\n _before(uid) {\n const context = this._contexts.get(uid);\n if (context !== undefined) {\n this._enterContext(context);\n }\n }\n /**\n * After hook is called just after completing the execution of a async context.\n */\n _after() {\n this._exitContext();\n }\n /**\n * Set the given context as active\n */\n _enterContext(context) {\n this._stack.push(context);\n }\n /**\n * Remove the context at the root of the stack\n */\n _exitContext() {\n this._stack.pop();\n }\n}\nexports.AsyncHooksContextManager = AsyncHooksContextManager;\n//# sourceMappingURL=AsyncHooksContextManager.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncLocalStorageContextManager = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst async_hooks_1 = require(\"async_hooks\");\nconst AbstractAsyncHooksContextManager_1 = require(\"./AbstractAsyncHooksContextManager\");\nclass AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager {\n _asyncLocalStorage;\n constructor() {\n super();\n this._asyncLocalStorage = new async_hooks_1.AsyncLocalStorage();\n }\n active() {\n return this._asyncLocalStorage.getStore() ?? api_1.ROOT_CONTEXT;\n }\n with(context, fn, thisArg, ...args) {\n const cb = thisArg == null ? fn : fn.bind(thisArg);\n return this._asyncLocalStorage.run(context, cb, ...args);\n }\n enable() {\n return this;\n }\n disable() {\n this._asyncLocalStorage.disable();\n return this;\n }\n}\nexports.AsyncLocalStorageContextManager = AsyncLocalStorageContextManager;\n//# sourceMappingURL=AsyncLocalStorageContextManager.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncLocalStorageContextManager = exports.AsyncHooksContextManager = void 0;\nvar AsyncHooksContextManager_1 = require(\"./AsyncHooksContextManager\");\nObject.defineProperty(exports, \"AsyncHooksContextManager\", { enumerable: true, get: function () { return AsyncHooksContextManager_1.AsyncHooksContextManager; } });\nvar AsyncLocalStorageContextManager_1 = require(\"./AsyncLocalStorageContextManager\");\nObject.defineProperty(exports, \"AsyncLocalStorageContextManager\", { enumerable: true, get: function () { return AsyncLocalStorageContextManager_1.AsyncLocalStorageContextManager; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._clearDefaultServiceNameCache = exports.defaultServiceName = void 0;\nlet serviceName;\n/**\n * Returns the default service name for OpenTelemetry resources.\n * In Node.js environments, returns \"unknown_service:\".\n * In browser/edge environments, returns \"unknown_service\".\n */\nfunction defaultServiceName() {\n if (serviceName === undefined) {\n try {\n const argv0 = globalThis.process.argv0;\n serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service';\n }\n catch {\n serviceName = 'unknown_service';\n }\n }\n return serviceName;\n}\nexports.defaultServiceName = defaultServiceName;\n/** @internal For testing purposes only */\nfunction _clearDefaultServiceNameCache() {\n serviceName = undefined;\n}\nexports._clearDefaultServiceNameCache = _clearDefaultServiceNameCache;\n//# sourceMappingURL=default-service-name.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPromiseLike = void 0;\nconst isPromiseLike = (val) => {\n return (val !== null &&\n typeof val === 'object' &&\n typeof val.then === 'function');\n};\nexports.isPromiseLike = isPromiseLike;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultResource = exports.emptyResource = exports.resourceFromDetectedResource = exports.resourceFromAttributes = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst default_service_name_1 = require(\"./default-service-name\");\nconst utils_1 = require(\"./utils\");\nclass ResourceImpl {\n _rawAttributes;\n _asyncAttributesPending = false;\n _schemaUrl;\n _memoizedAttributes;\n static FromAttributeList(attributes, options) {\n const res = new ResourceImpl({}, options);\n res._rawAttributes = guardedRawAttributes(attributes);\n res._asyncAttributesPending =\n attributes.filter(([_, val]) => (0, utils_1.isPromiseLike)(val)).length > 0;\n return res;\n }\n constructor(\n /**\n * A dictionary of attributes with string keys and values that provide\n * information about the entity as numbers, strings or booleans\n * TODO: Consider to add check/validation on attributes.\n */\n resource, options) {\n const attributes = resource.attributes ?? {};\n this._rawAttributes = Object.entries(attributes).map(([k, v]) => {\n if ((0, utils_1.isPromiseLike)(v)) {\n // side-effect\n this._asyncAttributesPending = true;\n }\n return [k, v];\n });\n this._rawAttributes = guardedRawAttributes(this._rawAttributes);\n this._schemaUrl = validateSchemaUrl(options?.schemaUrl);\n }\n get asyncAttributesPending() {\n return this._asyncAttributesPending;\n }\n async waitForAsyncAttributes() {\n if (!this.asyncAttributesPending) {\n return;\n }\n for (let i = 0; i < this._rawAttributes.length; i++) {\n const [k, v] = this._rawAttributes[i];\n this._rawAttributes[i] = [k, (0, utils_1.isPromiseLike)(v) ? await v : v];\n }\n this._asyncAttributesPending = false;\n }\n get attributes() {\n if (this.asyncAttributesPending) {\n api_1.diag.error('Accessing resource attributes before async attributes settled');\n }\n if (this._memoizedAttributes) {\n return this._memoizedAttributes;\n }\n const attrs = {};\n for (const [k, v] of this._rawAttributes) {\n if ((0, utils_1.isPromiseLike)(v)) {\n api_1.diag.debug(`Unsettled resource attribute ${k} skipped`);\n continue;\n }\n if (v != null) {\n attrs[k] ??= v;\n }\n }\n // only memoize output if all attributes are settled\n if (!this._asyncAttributesPending) {\n this._memoizedAttributes = attrs;\n }\n return attrs;\n }\n getRawAttributes() {\n return this._rawAttributes;\n }\n get schemaUrl() {\n return this._schemaUrl;\n }\n merge(resource) {\n if (resource == null)\n return this;\n // Order is important\n // Spec states incoming attributes override existing attributes\n const mergedSchemaUrl = mergeSchemaUrl(this, resource);\n const mergedOptions = mergedSchemaUrl\n ? { schemaUrl: mergedSchemaUrl }\n : undefined;\n return ResourceImpl.FromAttributeList([...resource.getRawAttributes(), ...this.getRawAttributes()], mergedOptions);\n }\n}\nfunction resourceFromAttributes(attributes, options) {\n return ResourceImpl.FromAttributeList(Object.entries(attributes), options);\n}\nexports.resourceFromAttributes = resourceFromAttributes;\nfunction resourceFromDetectedResource(detectedResource, options) {\n return new ResourceImpl(detectedResource, options);\n}\nexports.resourceFromDetectedResource = resourceFromDetectedResource;\nfunction emptyResource() {\n return resourceFromAttributes({});\n}\nexports.emptyResource = emptyResource;\nfunction defaultResource() {\n return resourceFromAttributes({\n [semantic_conventions_1.ATTR_SERVICE_NAME]: (0, default_service_name_1.defaultServiceName)(),\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE],\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME],\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION],\n });\n}\nexports.defaultResource = defaultResource;\nfunction guardedRawAttributes(attributes) {\n return attributes.map(([k, v]) => {\n if ((0, utils_1.isPromiseLike)(v)) {\n return [\n k,\n v.catch(err => {\n api_1.diag.debug('promise rejection for resource attribute: %s - %s', k, err);\n return undefined;\n }),\n ];\n }\n return [k, v];\n });\n}\nfunction validateSchemaUrl(schemaUrl) {\n if (typeof schemaUrl === 'string' || schemaUrl === undefined) {\n return schemaUrl;\n }\n api_1.diag.warn('Schema URL must be string or undefined, got %s. Schema URL will be ignored.', schemaUrl);\n return undefined;\n}\nfunction mergeSchemaUrl(old, updating) {\n const oldSchemaUrl = old?.schemaUrl;\n const updatingSchemaUrl = updating?.schemaUrl;\n const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === '';\n const isUpdatingEmpty = updatingSchemaUrl === undefined || updatingSchemaUrl === '';\n if (isOldEmpty) {\n return updatingSchemaUrl;\n }\n if (isUpdatingEmpty) {\n return oldSchemaUrl;\n }\n if (oldSchemaUrl === updatingSchemaUrl) {\n return oldSchemaUrl;\n }\n api_1.diag.warn('Schema URL merge conflict: old resource has \"%s\", updating resource has \"%s\". Resulting resource will have undefined Schema URL.', oldSchemaUrl, updatingSchemaUrl);\n return undefined;\n}\n//# sourceMappingURL=ResourceImpl.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detectResources = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst ResourceImpl_1 = require(\"./ResourceImpl\");\n/**\n * Runs all resource detectors and returns the results merged into a single Resource.\n *\n * @param config Configuration for resource detection\n */\nconst detectResources = (config = {}) => {\n const resources = (config.detectors || []).map(d => {\n try {\n const resource = (0, ResourceImpl_1.resourceFromDetectedResource)(d.detect(config));\n api_1.diag.debug(`${d.constructor.name} found resource.`, resource);\n return resource;\n }\n catch (e) {\n api_1.diag.debug(`${d.constructor.name} failed: ${e.message}`);\n return (0, ResourceImpl_1.emptyResource)();\n }\n });\n return resources.reduce((acc, resource) => acc.merge(resource), (0, ResourceImpl_1.emptyResource)());\n};\nexports.detectResources = detectResources;\n//# sourceMappingURL=detect-resources.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envDetector = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * EnvDetector can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetector {\n // Type, attribute keys, and attribute values should not exceed 256 characters.\n _MAX_LENGTH = 255;\n // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n _COMMA_SEPARATOR = ',';\n // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n _LABEL_KEY_VALUE_SPLITTER = '=';\n /**\n * Returns a {@link Resource} populated with attributes from the\n * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n * function to conform to the Detector interface.\n *\n * @param config The resource detection config\n */\n detect(_config) {\n const attributes = {};\n const rawAttributes = (0, core_1.getStringFromEnv)('OTEL_RESOURCE_ATTRIBUTES');\n const serviceName = (0, core_1.getStringFromEnv)('OTEL_SERVICE_NAME');\n if (rawAttributes) {\n try {\n const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n Object.assign(attributes, parsedAttributes);\n }\n catch (e) {\n api_1.diag.debug(`EnvDetector failed: ${e instanceof Error ? e.message : e}`);\n }\n }\n if (serviceName) {\n attributes[semantic_conventions_1.ATTR_SERVICE_NAME] = serviceName;\n }\n return { attributes };\n }\n /**\n * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment\n * variable.\n *\n * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes in the\n * format \"key1=value1,key2=value2\". The ',' and '=' characters in keys\n * and values MUST be percent-encoded. Other characters MAY be percent-encoded.\n *\n * Per the spec, on any error (e.g., decoding failure), the entire environment\n * variable value is discarded.\n *\n * @param rawEnvAttributes The resource attributes as a comma-separated list\n * of key/value pairs.\n * @returns The parsed resource attributes.\n * @throws Error if parsing fails (caller handles by discarding all attributes)\n */\n _parseResourceAttributes(rawEnvAttributes) {\n if (!rawEnvAttributes)\n return {};\n const attributes = {};\n const rawAttributes = rawEnvAttributes.split(this._COMMA_SEPARATOR);\n for (const rawAttribute of rawAttributes) {\n const keyValuePair = rawAttribute.split(this._LABEL_KEY_VALUE_SPLITTER);\n // Per spec: ',' and '=' MUST be percent-encoded in keys and values.\n // If we get != 2 parts, there's an unencoded '=' which is an error.\n if (keyValuePair.length !== 2) {\n throw new Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: \"${rawAttribute}\". ` +\n `Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);\n }\n const [rawKey, rawValue] = keyValuePair;\n const key = rawKey.trim();\n const value = rawValue.trim();\n if (key.length === 0) {\n throw new Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in \"${rawAttribute}\".`);\n }\n let decodedKey;\n let decodedValue;\n try {\n decodedKey = decodeURIComponent(key);\n decodedValue = decodeURIComponent(value);\n }\n catch (e) {\n throw new Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry \"${rawAttribute}\": ${e instanceof Error ? e.message : e}`);\n }\n if (decodedKey.length > this._MAX_LENGTH) {\n throw new Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: \"${decodedKey}\".`);\n }\n if (decodedValue.length > this._MAX_LENGTH) {\n throw new Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key \"${decodedKey}\".`);\n }\n attributes[decodedKey] = decodedValue;\n }\n return attributes;\n }\n}\nexports.envDetector = new EnvDetector();\n//# sourceMappingURL=EnvDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_WEBENGINE_VERSION = exports.ATTR_WEBENGINE_NAME = exports.ATTR_WEBENGINE_DESCRIPTION = exports.ATTR_SERVICE_NAMESPACE = exports.ATTR_SERVICE_INSTANCE_ID = exports.ATTR_PROCESS_RUNTIME_VERSION = exports.ATTR_PROCESS_RUNTIME_NAME = exports.ATTR_PROCESS_RUNTIME_DESCRIPTION = exports.ATTR_PROCESS_PID = exports.ATTR_PROCESS_OWNER = exports.ATTR_PROCESS_EXECUTABLE_PATH = exports.ATTR_PROCESS_EXECUTABLE_NAME = exports.ATTR_PROCESS_COMMAND_ARGS = exports.ATTR_PROCESS_COMMAND = exports.ATTR_OS_VERSION = exports.ATTR_OS_TYPE = exports.ATTR_K8S_POD_NAME = exports.ATTR_K8S_NAMESPACE_NAME = exports.ATTR_K8S_DEPLOYMENT_NAME = exports.ATTR_K8S_CLUSTER_NAME = exports.ATTR_HOST_TYPE = exports.ATTR_HOST_NAME = exports.ATTR_HOST_IMAGE_VERSION = exports.ATTR_HOST_IMAGE_NAME = exports.ATTR_HOST_IMAGE_ID = exports.ATTR_HOST_ID = exports.ATTR_HOST_ARCH = exports.ATTR_CONTAINER_NAME = exports.ATTR_CONTAINER_IMAGE_TAGS = exports.ATTR_CONTAINER_IMAGE_NAME = exports.ATTR_CONTAINER_ID = exports.ATTR_CLOUD_REGION = exports.ATTR_CLOUD_PROVIDER = exports.ATTR_CLOUD_AVAILABILITY_ZONE = exports.ATTR_CLOUD_ACCOUNT_ID = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @example 111111111111\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id';\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * @example us-east-1c\n *\n * @note Availability zones are called \"zones\" on Alibaba Cloud and Google Cloud.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\n/**\n * Name of the cloud provider.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CLOUD_PROVIDER = 'cloud.provider';\n/**\n * The geographical region the resource is running.\n *\n * @example us-central1\n * @example us-east-1\n *\n * @note Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/global-infrastructure/geographies/), [Google Cloud regions](https://cloud.google.com/about/locations), or [Tencent Cloud regions](https://www.tencentcloud.com/document/product/213/6091).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CLOUD_REGION = 'cloud.region';\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated.\n *\n * @example a3bf90e006b2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CONTAINER_ID = 'container.id';\n/**\n * Name of the image the container was built on.\n *\n * @example gcr.io/opentelemetry/operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CONTAINER_IMAGE_NAME = 'container.image.name';\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`.\n *\n * @example [\"v1.27.1\", \"3.5.7-0\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags';\n/**\n * Container name used by container runtime.\n *\n * @example opentelemetry-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CONTAINER_NAME = 'container.name';\n/**\n * The CPU architecture the host system is running on.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_ARCH = 'host.arch';\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system.\n *\n * @example fdbf79e8af94cb7f9e8df36789187052\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_ID = 'host.id';\n/**\n * VM image ID or host OS image ID. For Cloud, this value is from the provider.\n *\n * @example ami-07b06b442921831e5\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_IMAGE_ID = 'host.image.id';\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @example infra-ami-eks-worker-node-7d4ec78312\n * @example CentOS-8-x86_64-1905\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_IMAGE_NAME = 'host.image.name';\n/**\n * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 0.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_IMAGE_VERSION = 'host.image.version';\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @example opentelemetry-test\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_NAME = 'host.name';\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @example n1-standard-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_TYPE = 'host.type';\n/**\n * The name of the cluster.\n *\n * @example opentelemetry-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name';\n/**\n * The name of the Deployment.\n *\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\n/**\n * The name of the namespace that the pod is running in.\n *\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\n/**\n * The name of the Pod.\n *\n * @example opentelemetry-pod-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_K8S_POD_NAME = 'k8s.pod.name';\n/**\n * The operating system type.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_OS_TYPE = 'os.type';\n/**\n * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 14.2.1\n * @example 18.04.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_OS_VERSION = 'os.version';\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @example cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_COMMAND = 'process.command';\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @example [\"cmd/otecol\", \"--config=config.yaml\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_COMMAND_ARGS = 'process.command_args';\n/**\n * The name of the process executable. On Linux based systems, this **SHOULD** be set to the base name of the target of `/proc/[pid]/exe`. On Windows, this **SHOULD** be set to the base name of `GetProcessImageFileNameW`.\n *\n * @example otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @example /usr/bin/cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\n/**\n * The username of the user that owns the process.\n *\n * @example root\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_OWNER = 'process.owner';\n/**\n * Process identifier (PID).\n *\n * @example 1234\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_PID = 'process.pid';\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @example \"Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name';\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @example \"14.0.2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_SERVICE_INSTANCE_ID = 'service.instance.id';\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_SERVICE_NAMESPACE = 'service.namespace';\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_WEBENGINE_DESCRIPTION = 'webengine.description';\n/**\n * The name of the web engine.\n *\n * @example WildFly\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_WEBENGINE_NAME = 'webengine.name';\n/**\n * The version of the web engine.\n *\n * @example 21.0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_WEBENGINE_VERSION = 'webengine.version';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.execAsync = void 0;\nconst child_process = require(\"child_process\");\nconst util = require(\"util\");\nexports.execAsync = util.promisify(child_process.exec);\n//# sourceMappingURL=execAsync.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n try {\n const result = await (0, execAsync_1.execAsync)('ioreg -rd1 -c \"IOPlatformExpertDevice\"');\n const idLine = result.stdout\n .split('\\n')\n .find(line => line.includes('IOPlatformUUID'));\n if (!idLine) {\n return undefined;\n }\n const parts = idLine.split('\" = \"');\n if (parts.length === 2) {\n return parts[1].slice(0, -1);\n }\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-darwin.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst fs_1 = require(\"fs\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id'];\n for (const path of paths) {\n try {\n const result = await fs_1.promises.readFile(path, { encoding: 'utf8' });\n return result.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n }\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-linux.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst fs_1 = require(\"fs\");\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n try {\n const result = await fs_1.promises.readFile('/etc/hostid', { encoding: 'utf8' });\n return result.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n try {\n const result = await (0, execAsync_1.execAsync)('kenv -q smbios.system.uuid');\n return result.stdout.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-bsd.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst process = require(\"process\");\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n const args = 'QUERY HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Cryptography /v MachineGuid';\n let command = '%windir%\\\\System32\\\\REG.exe';\n if (process.arch === 'ia32' && 'PROCESSOR_ARCHITEW6432' in process.env) {\n command = '%windir%\\\\sysnative\\\\cmd.exe /c ' + command;\n }\n try {\n const result = await (0, execAsync_1.execAsync)(`${command} ${args}`);\n const parts = result.stdout.split('REG_SZ');\n if (parts.length === 2) {\n return parts[1].trim();\n }\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-win.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n api_1.diag.debug('could not read machine-id: unsupported platform');\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-unsupported.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst process = require(\"process\");\nlet getMachineIdImpl;\nasync function getMachineId() {\n if (!getMachineIdImpl) {\n switch (process.platform) {\n case 'darwin':\n getMachineIdImpl = (await import('./getMachineId-darwin.js'))\n .getMachineId;\n break;\n case 'linux':\n getMachineIdImpl = (await import('./getMachineId-linux.js'))\n .getMachineId;\n break;\n case 'freebsd':\n getMachineIdImpl = (await import('./getMachineId-bsd.js')).getMachineId;\n break;\n case 'win32':\n getMachineIdImpl = (await import('./getMachineId-win.js')).getMachineId;\n break;\n default:\n getMachineIdImpl = (await import('./getMachineId-unsupported.js'))\n .getMachineId;\n break;\n }\n }\n return getMachineIdImpl();\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeType = exports.normalizeArch = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst normalizeArch = (nodeArchString) => {\n // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec:\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md\n switch (nodeArchString) {\n case 'arm':\n return 'arm32';\n case 'ppc':\n return 'ppc32';\n case 'x64':\n return 'amd64';\n default:\n return nodeArchString;\n }\n};\nexports.normalizeArch = normalizeArch;\nconst normalizeType = (nodePlatform) => {\n // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec:\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md\n switch (nodePlatform) {\n case 'sunos':\n return 'solaris';\n case 'win32':\n return 'windows';\n default:\n return nodePlatform;\n }\n};\nexports.normalizeType = normalizeType;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hostDetector = void 0;\nconst semconv_1 = require(\"../../../semconv\");\nconst os_1 = require(\"os\");\nconst getMachineId_1 = require(\"./machine-id/getMachineId\");\nconst utils_1 = require(\"./utils\");\n/**\n * HostDetector detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetector {\n detect(_config) {\n const attributes = {\n [semconv_1.ATTR_HOST_NAME]: (0, os_1.hostname)(),\n [semconv_1.ATTR_HOST_ARCH]: (0, utils_1.normalizeArch)((0, os_1.arch)()),\n [semconv_1.ATTR_HOST_ID]: (0, getMachineId_1.getMachineId)(),\n };\n return { attributes };\n }\n}\nexports.hostDetector = new HostDetector();\n//# sourceMappingURL=HostDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.osDetector = void 0;\nconst semconv_1 = require(\"../../../semconv\");\nconst os_1 = require(\"os\");\nconst utils_1 = require(\"./utils\");\n/**\n * OSDetector detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetector {\n detect(_config) {\n const attributes = {\n [semconv_1.ATTR_OS_TYPE]: (0, utils_1.normalizeType)((0, os_1.platform)()),\n [semconv_1.ATTR_OS_VERSION]: (0, os_1.release)(),\n };\n return { attributes };\n }\n}\nexports.osDetector = new OSDetector();\n//# sourceMappingURL=OSDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processDetector = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst semconv_1 = require(\"../../../semconv\");\nconst os = require(\"os\");\n/**\n * ProcessDetector will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetector {\n detect(_config) {\n const attributes = {\n [semconv_1.ATTR_PROCESS_PID]: process.pid,\n [semconv_1.ATTR_PROCESS_EXECUTABLE_NAME]: process.title,\n [semconv_1.ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath,\n [semconv_1.ATTR_PROCESS_COMMAND_ARGS]: [\n process.argv[0],\n ...process.execArgv,\n ...process.argv.slice(1),\n ],\n [semconv_1.ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node,\n [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'nodejs',\n [semconv_1.ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n };\n if (process.argv.length > 1) {\n attributes[semconv_1.ATTR_PROCESS_COMMAND] = process.argv[1];\n }\n try {\n const userInfo = os.userInfo();\n attributes[semconv_1.ATTR_PROCESS_OWNER] = userInfo.username;\n }\n catch (e) {\n api_1.diag.debug(`error obtaining process owner: ${e}`);\n }\n return { attributes };\n }\n}\nexports.processDetector = new ProcessDetector();\n//# sourceMappingURL=ProcessDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetector = void 0;\nconst semconv_1 = require(\"../../../semconv\");\nconst crypto_1 = require(\"crypto\");\n/**\n * ServiceInstanceIdDetector detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetector {\n detect(_config) {\n return {\n attributes: {\n [semconv_1.ATTR_SERVICE_INSTANCE_ID]: (0, crypto_1.randomUUID)(),\n },\n };\n }\n}\n/**\n * @experimental\n */\nexports.serviceInstanceIdDetector = new ServiceInstanceIdDetector();\n//# sourceMappingURL=ServiceInstanceIdDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = void 0;\nvar HostDetector_1 = require(\"./HostDetector\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return HostDetector_1.hostDetector; } });\nvar OSDetector_1 = require(\"./OSDetector\");\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return OSDetector_1.osDetector; } });\nvar ProcessDetector_1 = require(\"./ProcessDetector\");\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return ProcessDetector_1.processDetector; } });\nvar ServiceInstanceIdDetector_1 = require(\"./ServiceInstanceIdDetector\");\nObject.defineProperty(exports, \"serviceInstanceIdDetector\", { enumerable: true, get: function () { return ServiceInstanceIdDetector_1.serviceInstanceIdDetector; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return node_1.hostDetector; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return node_1.osDetector; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return node_1.processDetector; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetector\", { enumerable: true, get: function () { return node_1.serviceInstanceIdDetector; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noopDetector = exports.NoopDetector = void 0;\nclass NoopDetector {\n detect() {\n return {\n attributes: {},\n };\n }\n}\nexports.NoopDetector = NoopDetector;\nexports.noopDetector = new NoopDetector();\n//# sourceMappingURL=NoopDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noopDetector = exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = exports.envDetector = void 0;\nvar EnvDetector_1 = require(\"./EnvDetector\");\nObject.defineProperty(exports, \"envDetector\", { enumerable: true, get: function () { return EnvDetector_1.envDetector; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return platform_1.hostDetector; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return platform_1.osDetector; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return platform_1.processDetector; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetector\", { enumerable: true, get: function () { return platform_1.serviceInstanceIdDetector; } });\nvar NoopDetector_1 = require(\"./NoopDetector\");\nObject.defineProperty(exports, \"noopDetector\", { enumerable: true, get: function () { return NoopDetector_1.noopDetector; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultServiceName = exports.emptyResource = exports.defaultResource = exports.resourceFromAttributes = exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = exports.envDetector = exports.detectResources = void 0;\nvar detect_resources_1 = require(\"./detect-resources\");\nObject.defineProperty(exports, \"detectResources\", { enumerable: true, get: function () { return detect_resources_1.detectResources; } });\nvar detectors_1 = require(\"./detectors\");\nObject.defineProperty(exports, \"envDetector\", { enumerable: true, get: function () { return detectors_1.envDetector; } });\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return detectors_1.hostDetector; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return detectors_1.osDetector; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return detectors_1.processDetector; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetector\", { enumerable: true, get: function () { return detectors_1.serviceInstanceIdDetector; } });\nvar ResourceImpl_1 = require(\"./ResourceImpl\");\nObject.defineProperty(exports, \"resourceFromAttributes\", { enumerable: true, get: function () { return ResourceImpl_1.resourceFromAttributes; } });\nObject.defineProperty(exports, \"defaultResource\", { enumerable: true, get: function () { return ResourceImpl_1.defaultResource; } });\nObject.defineProperty(exports, \"emptyResource\", { enumerable: true, get: function () { return ResourceImpl_1.emptyResource; } });\nvar default_service_name_1 = require(\"./default-service-name\");\nObject.defineProperty(exports, \"defaultServiceName\", { enumerable: true, get: function () { return default_service_name_1.defaultServiceName; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExceptionEventName = void 0;\n// Event name definitions\nexports.ExceptionEventName = 'exception';\n//# sourceMappingURL=enums.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanImpl = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst enums_1 = require(\"./enums\");\n/**\n * This class represents a span.\n */\nclass SpanImpl {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n _spanContext;\n kind;\n parentSpanContext;\n attributes = {};\n links = [];\n events = [];\n startTime;\n resource;\n instrumentationScope;\n _droppedAttributesCount = 0;\n _droppedEventsCount = 0;\n _droppedLinksCount = 0;\n _attributesCount = 0;\n name;\n status = {\n code: api_1.SpanStatusCode.UNSET,\n };\n endTime = [0, 0];\n _ended = false;\n _duration = [-1, -1];\n _spanProcessor;\n _spanLimits;\n _attributeValueLengthLimit;\n _recordEndMetrics;\n _performanceStartTime;\n _performanceOffset;\n _startTimeProvided;\n /**\n * Constructs a new SpanImpl instance.\n */\n constructor(opts) {\n const now = Date.now();\n this._spanContext = opts.spanContext;\n this._performanceStartTime = core_1.otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + core_1.otperformance.timeOrigin);\n this._startTimeProvided = opts.startTime != null;\n this._spanLimits = opts.spanLimits;\n this._attributeValueLengthLimit =\n this._spanLimits.attributeValueLengthLimit ?? 0;\n this._spanProcessor = opts.spanProcessor;\n this.name = opts.name;\n this.parentSpanContext = opts.parentSpanContext;\n this.kind = opts.kind;\n if (opts.links) {\n for (const link of opts.links) {\n this.addLink(link);\n }\n }\n this.startTime = this._getTime(opts.startTime ?? now);\n this.resource = opts.resource;\n this.instrumentationScope = opts.scope;\n this._recordEndMetrics = opts.recordEndMetrics;\n if (opts.attributes != null) {\n this.setAttributes(opts.attributes);\n }\n this._spanProcessor.onStart(this, opts.context);\n }\n spanContext() {\n return this._spanContext;\n }\n setAttribute(key, value) {\n if (value == null || this._isSpanEnded())\n return this;\n if (key.length === 0) {\n api_1.diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!(0, core_1.isAttributeValue)(value)) {\n api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n const { attributeCountLimit } = this._spanLimits;\n const isNewKey = !Object.prototype.hasOwnProperty.call(this.attributes, key);\n if (attributeCountLimit !== undefined &&\n this._attributesCount >= attributeCountLimit &&\n isNewKey) {\n this._droppedAttributesCount++;\n return this;\n }\n this.attributes[key] = this._truncateToSize(value);\n if (isNewKey) {\n this._attributesCount++;\n }\n return this;\n }\n setAttributes(attributes) {\n for (const key in attributes) {\n if (Object.prototype.hasOwnProperty.call(attributes, key)) {\n this.setAttribute(key, attributes[key]);\n }\n }\n return this;\n }\n /**\n *\n * @param name Span Name\n * @param [attributesOrStartTime] Span attributes or start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [timeStamp] Specified time stamp for the event\n */\n addEvent(name, attributesOrStartTime, timeStamp) {\n if (this._isSpanEnded())\n return this;\n const { eventCountLimit } = this._spanLimits;\n if (eventCountLimit === 0) {\n api_1.diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n if (eventCountLimit !== undefined &&\n this.events.length >= eventCountLimit) {\n if (this._droppedEventsCount === 0) {\n api_1.diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n if ((0, core_1.isTimeInput)(attributesOrStartTime)) {\n if (!(0, core_1.isTimeInput)(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n const sanitized = (0, core_1.sanitizeAttributes)(attributesOrStartTime);\n const { attributePerEventCountLimit } = this._spanLimits;\n const attributes = {};\n let droppedAttributesCount = 0;\n let eventAttributesCount = 0;\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (attributePerEventCountLimit !== undefined &&\n eventAttributesCount >= attributePerEventCountLimit) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal);\n eventAttributesCount++;\n }\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount,\n });\n return this;\n }\n addLink(link) {\n if (this._isSpanEnded())\n return this;\n const { linkCountLimit } = this._spanLimits;\n if (linkCountLimit === 0) {\n this._droppedLinksCount++;\n return this;\n }\n if (linkCountLimit !== undefined && this.links.length >= linkCountLimit) {\n if (this._droppedLinksCount === 0) {\n api_1.diag.debug('Dropping extra links.');\n }\n this.links.shift();\n this._droppedLinksCount++;\n }\n const { attributePerLinkCountLimit } = this._spanLimits;\n const sanitized = (0, core_1.sanitizeAttributes)(link.attributes);\n const attributes = {};\n let droppedAttributesCount = 0;\n let linkAttributesCount = 0;\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (attributePerLinkCountLimit !== undefined &&\n linkAttributesCount >= attributePerLinkCountLimit) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal);\n linkAttributesCount++;\n }\n const processedLink = { context: link.context };\n if (linkAttributesCount > 0) {\n processedLink.attributes = attributes;\n }\n if (droppedAttributesCount > 0) {\n processedLink.droppedAttributesCount = droppedAttributesCount;\n }\n this.links.push(processedLink);\n return this;\n }\n addLinks(links) {\n for (const link of links) {\n this.addLink(link);\n }\n return this;\n }\n setStatus(status) {\n if (this._isSpanEnded())\n return this;\n if (status.code === api_1.SpanStatusCode.UNSET)\n return this;\n if (this.status.code === api_1.SpanStatusCode.OK)\n return this;\n const newStatus = { code: status.code };\n // When using try-catch, the caught \"error\" is of type `any`. When then assigning `any` to `status.message`,\n // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus()\n // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or\n // undefined to avoid an incorrect type causing issues downstream.\n if (status.code === api_1.SpanStatusCode.ERROR) {\n if (typeof status.message === 'string') {\n newStatus.message = status.message;\n }\n else if (status.message != null) {\n api_1.diag.warn(`Dropping invalid status.message of type '${typeof status.message}', expected 'string'`);\n }\n }\n this.status = newStatus;\n return this;\n }\n updateName(name) {\n if (this._isSpanEnded())\n return this;\n this.name = name;\n return this;\n }\n end(endTime) {\n if (this._isSpanEnded()) {\n api_1.diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`);\n return;\n }\n this.endTime = this._getTime(endTime);\n this._duration = (0, core_1.hrTimeDuration)(this.startTime, this.endTime);\n if (this._duration[0] < 0) {\n api_1.diag.warn('Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.', this.startTime, this.endTime);\n this.endTime = this.startTime.slice();\n this._duration = [0, 0];\n }\n if (this._droppedEventsCount > 0) {\n api_1.diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`);\n }\n if (this._droppedLinksCount > 0) {\n api_1.diag.warn(`Dropped ${this._droppedLinksCount} links because linkCountLimit reached`);\n }\n if (this._spanProcessor.onEnding) {\n this._spanProcessor.onEnding(this);\n }\n this._recordEndMetrics?.();\n this._ended = true;\n this._spanProcessor.onEnd(this);\n }\n _getTime(inp) {\n if (typeof inp === 'number' && inp <= core_1.otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return (0, core_1.hrTime)(inp + this._performanceOffset);\n }\n if (typeof inp === 'number') {\n return (0, core_1.millisToHrTime)(inp);\n }\n if (inp instanceof Date) {\n return (0, core_1.millisToHrTime)(inp.getTime());\n }\n if ((0, core_1.isTimeInputHrTime)(inp)) {\n return inp;\n }\n if (this._startTimeProvided) {\n // if user provided a time for the start manually\n // we can't use duration to calculate event/end times\n return (0, core_1.millisToHrTime)(Date.now());\n }\n const msDuration = core_1.otperformance.now() - this._performanceStartTime;\n return (0, core_1.addHrTimes)(this.startTime, (0, core_1.millisToHrTime)(msDuration));\n }\n isRecording() {\n return this._ended === false;\n }\n recordException(exception, time) {\n const attributes = {};\n if (typeof exception === 'string') {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE] = exception;\n }\n else if (exception) {\n if (exception.code) {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] = exception.code.toString();\n }\n else if (exception.name) {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n // these are minimum requirements from spec\n if (attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] || attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE]) {\n this.addEvent(enums_1.ExceptionEventName, attributes, time);\n }\n else {\n api_1.diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n get duration() {\n return this._duration;\n }\n get ended() {\n return this._ended;\n }\n get droppedAttributesCount() {\n return this._droppedAttributesCount;\n }\n get droppedEventsCount() {\n return this._droppedEventsCount;\n }\n get droppedLinksCount() {\n return this._droppedLinksCount;\n }\n _isSpanEnded() {\n if (this._ended) {\n const error = new Error(`Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`);\n api_1.diag.warn(`Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`, error);\n }\n return this._ended;\n }\n // Utility function to truncate given value within size\n // for value type of string, will truncate to given limit\n // for type of non-string, will return same value\n _truncateToLimitUtil(value, limit) {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\n /**\n * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then\n * return string with truncated to {@code attributeValueLengthLimit} characters\n *\n * If the given attribute value is array of strings then\n * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters\n *\n * Otherwise return same Attribute {@code value}\n *\n * @param value Attribute value\n * @returns truncated attribute value if required, otherwise same value\n */\n _truncateToSize(value) {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n api_1.diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n // Array of strings\n if (Array.isArray(value)) {\n return value.map(val => typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val);\n }\n // Other types, no need to apply value length limit\n return value;\n }\n}\nexports.SpanImpl = SpanImpl;\n//# sourceMappingURL=Span.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=Sampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOffSampler = void 0;\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples no traces. */\nclass AlwaysOffSampler {\n shouldSample() {\n return {\n decision: Sampler_1.SamplingDecision.NOT_RECORD,\n };\n }\n toString() {\n return 'AlwaysOffSampler';\n }\n}\nexports.AlwaysOffSampler = AlwaysOffSampler;\n//# sourceMappingURL=AlwaysOffSampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOnSampler = void 0;\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples all traces. */\nclass AlwaysOnSampler {\n shouldSample() {\n return {\n decision: Sampler_1.SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n toString() {\n return 'AlwaysOnSampler';\n }\n}\nexports.AlwaysOnSampler = AlwaysOnSampler;\n//# sourceMappingURL=AlwaysOnSampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParentBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AlwaysOffSampler_1 = require(\"./AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./AlwaysOnSampler\");\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nclass ParentBasedSampler {\n _root;\n _remoteParentSampled;\n _remoteParentNotSampled;\n _localParentSampled;\n _localParentNotSampled;\n constructor(config) {\n this._root = config.root;\n if (!this._root) {\n (0, core_1.globalErrorHandler)(new Error('ParentBasedSampler must have a root sampler configured'));\n this._root = new AlwaysOnSampler_1.AlwaysOnSampler();\n }\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler_1.AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler_1.AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler_1.AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler_1.AlwaysOffSampler();\n }\n shouldSample(context, traceId, spanName, spanKind, attributes, links) {\n const parentContext = api_1.trace.getSpanContext(context);\n if (!parentContext || !(0, api_1.isSpanContextValid)(parentContext)) {\n return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n toString() {\n return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n }\n}\nexports.ParentBasedSampler = ParentBasedSampler;\n//# sourceMappingURL=ParentBasedSampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceIdRatioBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nclass TraceIdRatioBasedSampler {\n _ratio;\n _upperBound;\n constructor(ratio = 0) {\n this._ratio = this._normalize(ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n shouldSample(context, traceId) {\n return {\n decision: (0, api_1.isValidTraceId)(traceId) && this._accumulate(traceId) < this._upperBound\n ? Sampler_1.SamplingDecision.RECORD_AND_SAMPLED\n : Sampler_1.SamplingDecision.NOT_RECORD,\n };\n }\n toString() {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n _normalize(ratio) {\n if (typeof ratio !== 'number' || isNaN(ratio))\n return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n _accumulate(traceId) {\n let accumulation = 0;\n for (let i = 0; i < traceId.length / 8; i++) {\n const pos = i * 8;\n const part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n }\n}\nexports.TraceIdRatioBasedSampler = TraceIdRatioBasedSampler;\n//# sourceMappingURL=TraceIdRatioBasedSampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildSamplerFromEnv = exports.loadDefaultConfig = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AlwaysOffSampler_1 = require(\"./sampler/AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./sampler/AlwaysOnSampler\");\nconst ParentBasedSampler_1 = require(\"./sampler/ParentBasedSampler\");\nconst TraceIdRatioBasedSampler_1 = require(\"./sampler/TraceIdRatioBasedSampler\");\nvar TracesSamplerValues;\n(function (TracesSamplerValues) {\n TracesSamplerValues[\"AlwaysOff\"] = \"always_off\";\n TracesSamplerValues[\"AlwaysOn\"] = \"always_on\";\n TracesSamplerValues[\"ParentBasedAlwaysOff\"] = \"parentbased_always_off\";\n TracesSamplerValues[\"ParentBasedAlwaysOn\"] = \"parentbased_always_on\";\n TracesSamplerValues[\"ParentBasedTraceIdRatio\"] = \"parentbased_traceidratio\";\n TracesSamplerValues[\"TraceIdRatio\"] = \"traceidratio\";\n})(TracesSamplerValues || (TracesSamplerValues = {}));\nconst DEFAULT_RATIO = 1;\n/**\n * Load default configuration. For fields with primitive values, any user-provided\n * value will override the corresponding default value. For fields with\n * non-primitive values (like `spanLimits`), the user-provided value will be\n * used to extend the default value.\n */\n// object needs to be wrapped in this function and called when needed otherwise\n// envs are parsed before tests are ran - causes tests using these envs to fail\nfunction loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit: (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit: (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n },\n spanLimits: {\n attributeValueLengthLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n linkCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128,\n eventCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128,\n attributePerEventCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128,\n attributePerLinkCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128,\n },\n };\n}\nexports.loadDefaultConfig = loadDefaultConfig;\n/**\n * Based on environment, builds a sampler, complies with specification.\n */\nfunction buildSamplerFromEnv() {\n const sampler = (0, core_1.getStringFromEnv)('OTEL_TRACES_SAMPLER') ??\n TracesSamplerValues.ParentBasedAlwaysOn;\n switch (sampler) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler_1.AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler_1.AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new AlwaysOnSampler_1.AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new AlwaysOffSampler_1.AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()),\n });\n default:\n api_1.diag.error(`OTEL_TRACES_SAMPLER value \"${sampler}\" invalid, defaulting to \"${TracesSamplerValues.ParentBasedAlwaysOn}\".`);\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new AlwaysOnSampler_1.AlwaysOnSampler(),\n });\n }\n}\nexports.buildSamplerFromEnv = buildSamplerFromEnv;\nfunction getSamplerProbabilityFromEnv() {\n const probability = (0, core_1.getNumberFromEnv)('OTEL_TRACES_SAMPLER_ARG');\n if (probability == null) {\n api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`);\n return DEFAULT_RATIO;\n }\n if (probability < 0 || probability > 1) {\n api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`);\n return DEFAULT_RATIO;\n }\n return probability;\n}\n//# sourceMappingURL=config.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reconfigureLimits = exports.mergeConfig = exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = void 0;\nconst config_1 = require(\"./config\");\nconst core_1 = require(\"@opentelemetry/core\");\nexports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nfunction mergeConfig(userConfig) {\n const perInstanceDefaults = {\n sampler: (0, config_1.buildSamplerFromEnv)(),\n };\n const DEFAULT_CONFIG = (0, config_1.loadDefaultConfig)();\n const target = Object.assign({}, DEFAULT_CONFIG, perInstanceDefaults, userConfig);\n target.generalLimits = Object.assign({}, DEFAULT_CONFIG.generalLimits, userConfig.generalLimits || {});\n target.spanLimits = Object.assign({}, DEFAULT_CONFIG.spanLimits, userConfig.spanLimits || {});\n return target;\n}\nexports.mergeConfig = mergeConfig;\n/**\n * When general limits are provided and model specific limits are not,\n * configures the model specific limits by using the values from the general ones.\n * @param userConfig User provided tracer configuration\n */\nfunction reconfigureLimits(userConfig) {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n /**\n * Reassign span attribute count limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeCountLimit =\n userConfig.spanLimits?.attributeCountLimit ??\n userConfig.generalLimits?.attributeCountLimit ??\n (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ??\n (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_COUNT_LIMIT') ??\n exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n /**\n * Reassign span attribute value length limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeValueLengthLimit =\n userConfig.spanLimits?.attributeValueLengthLimit ??\n userConfig.generalLimits?.attributeValueLengthLimit ??\n (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n return Object.assign({}, userConfig, { spanLimits });\n}\nexports.reconfigureLimits = reconfigureLimits;\n//# sourceMappingURL=utility.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchSpanProcessorBase = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nclass BatchSpanProcessorBase {\n _maxExportBatchSize;\n _maxQueueSize;\n _scheduledDelayMillis;\n _exportTimeoutMillis;\n _exporter;\n _isExporting = false;\n _finishedSpans = [];\n _timer;\n _shutdownOnce;\n _droppedSpansCount = 0;\n constructor(exporter, config) {\n this._exporter = exporter;\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : ((0, core_1.getNumberFromEnv)('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512);\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : ((0, core_1.getNumberFromEnv)('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048);\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : ((0, core_1.getNumberFromEnv)('OTEL_BSP_SCHEDULE_DELAY') ?? 5000);\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : ((0, core_1.getNumberFromEnv)('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000);\n this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n if (this._maxExportBatchSize > this._maxQueueSize) {\n api_1.diag.warn('BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize');\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n forceFlush() {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n // does nothing.\n onStart(_span, _parentContext) { }\n onEnd(span) {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) {\n return;\n }\n this._addToBuffer(span);\n }\n shutdown() {\n return this._shutdownOnce.call();\n }\n _shutdown() {\n return Promise.resolve()\n .then(() => {\n return this.onShutdown();\n })\n .then(() => {\n return this._flushAll();\n })\n .then(() => {\n return this._exporter.shutdown();\n });\n }\n /** Add a span in the buffer. */\n _addToBuffer(span) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n if (this._droppedSpansCount === 0) {\n api_1.diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n return;\n }\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n api_1.diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`);\n this._droppedSpansCount = 0;\n }\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\n /**\n * Send all spans to the exporter respecting the batch size limit\n * This function is used only on forceFlush or shutdown,\n * for all other cases _flush should be used\n * */\n _flushAll() {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(this._finishedSpans.length / this._maxExportBatchSize);\n for (let i = 0, j = count; i < j; i++) {\n promises.push(this._flushOneBatch());\n }\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n _flushOneBatch() {\n this._clearTimer();\n if (this._finishedSpans.length === 0) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n // don't wait anymore for export, this way the next batch can start\n reject(new Error('Timeout'));\n }, this._exportTimeoutMillis);\n // prevent downstream exporter calls from generating spans\n api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => {\n // Reset the finished spans buffer here because the next invocations of the _flush method\n // could pass the same finished spans to the exporter if the buffer is cleared\n // outside the execution of this callback.\n let spans;\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n }\n else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n const doExport = () => this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === core_1.ExportResultCode.SUCCESS) {\n resolve();\n }\n else {\n reject(result.error ??\n new Error('BatchSpanProcessor: span export failed'));\n }\n });\n let pendingResources = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n }\n else {\n Promise.all(pendingResources).then(doExport, err => {\n (0, core_1.globalErrorHandler)(err);\n reject(err);\n });\n }\n });\n });\n }\n _maybeStartTimer() {\n if (this._isExporting)\n return;\n const flush = () => {\n this._isExporting = true;\n this._flushOneBatch()\n .finally(() => {\n this._isExporting = false;\n if (this._finishedSpans.length > 0) {\n this._clearTimer();\n this._maybeStartTimer();\n }\n })\n .catch(e => {\n this._isExporting = false;\n (0, core_1.globalErrorHandler)(e);\n });\n };\n // we only wait if the queue doesn't have enough elements yet\n if (this._finishedSpans.length >= this._maxExportBatchSize) {\n return flush();\n }\n if (this._timer !== undefined)\n return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n // depending on runtime, this may be a 'number' or NodeJS.Timeout\n if (typeof this._timer !== 'number') {\n this._timer.unref();\n }\n }\n _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n}\nexports.BatchSpanProcessorBase = BatchSpanProcessorBase;\n//# sourceMappingURL=BatchSpanProcessorBase.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchSpanProcessor = void 0;\nconst BatchSpanProcessorBase_1 = require(\"../../../export/BatchSpanProcessorBase\");\nclass BatchSpanProcessor extends BatchSpanProcessorBase_1.BatchSpanProcessorBase {\n onShutdown() { }\n}\nexports.BatchSpanProcessor = BatchSpanProcessor;\n//# sourceMappingURL=BatchSpanProcessor.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = void 0;\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\nclass RandomIdGenerator {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n}\nexports.RandomIdGenerator = RandomIdGenerator;\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes) {\n return function generateId() {\n for (let i = 0; i < bytes / 4; i++) {\n // unsigned right shift drops decimal part of the number\n // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n }\n // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n for (let i = 0; i < bytes; i++) {\n if (SHARED_BUFFER[i] > 0) {\n break;\n }\n else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n//# sourceMappingURL=RandomIdGenerator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = exports.BatchSpanProcessor = void 0;\nvar BatchSpanProcessor_1 = require(\"./export/BatchSpanProcessor\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return BatchSpanProcessor_1.BatchSpanProcessor; } });\nvar RandomIdGenerator_1 = require(\"./RandomIdGenerator\");\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return RandomIdGenerator_1.RandomIdGenerator; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = exports.BatchSpanProcessor = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return node_1.BatchSpanProcessor; } });\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return node_1.RandomIdGenerator; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_OTEL_SDK_SPAN_STARTED = exports.METRIC_OTEL_SDK_SPAN_LIVE = exports.ATTR_OTEL_SPAN_SAMPLING_RESULT = exports.ATTR_OTEL_SPAN_PARENT_ORIGIN = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Determines whether the span has a parent span, and if so, [whether it is a remote parent](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin';\n/**\n * The result value of the sampler for this span\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_OTEL_SPAN_SAMPLING_RESULT = 'otel.span.sampling_result';\n/**\n * The number of created spans with `recording=true` for which the end operation has not been called yet.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live';\n/**\n * The number of created spans.\n *\n * @note Implementations **MUST** record this metric for all spans, even for non-recording ones.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TracerMetrics = void 0;\nconst Sampler_1 = require(\"./Sampler\");\nconst semconv_1 = require(\"./semconv\");\n/**\n * Generates `otel.sdk.span.*` metrics.\n * https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics/#span-metrics\n */\nclass TracerMetrics {\n startedSpans;\n liveSpans;\n constructor(meter) {\n this.startedSpans = meter.createCounter(semconv_1.METRIC_OTEL_SDK_SPAN_STARTED, {\n unit: '{span}',\n description: 'The number of created spans.',\n });\n this.liveSpans = meter.createUpDownCounter(semconv_1.METRIC_OTEL_SDK_SPAN_LIVE, {\n unit: '{span}',\n description: 'The number of currently live spans.',\n });\n }\n startSpan(parentSpanCtx, samplingDecision) {\n const samplingDecisionStr = samplingDecisionToString(samplingDecision);\n this.startedSpans.add(1, {\n [semconv_1.ATTR_OTEL_SPAN_PARENT_ORIGIN]: parentOrigin(parentSpanCtx),\n [semconv_1.ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n });\n if (samplingDecision === Sampler_1.SamplingDecision.NOT_RECORD) {\n return () => { };\n }\n const liveSpanAttributes = {\n [semconv_1.ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n };\n this.liveSpans.add(1, liveSpanAttributes);\n return () => {\n this.liveSpans.add(-1, liveSpanAttributes);\n };\n }\n}\nexports.TracerMetrics = TracerMetrics;\nfunction parentOrigin(parentSpanContext) {\n if (!parentSpanContext) {\n return 'none';\n }\n if (parentSpanContext.isRemote) {\n return 'remote';\n }\n return 'local';\n}\nfunction samplingDecisionToString(decision) {\n switch (decision) {\n case Sampler_1.SamplingDecision.RECORD_AND_SAMPLED:\n return 'RECORD_AND_SAMPLE';\n case Sampler_1.SamplingDecision.RECORD:\n return 'RECORD_ONLY';\n case Sampler_1.SamplingDecision.NOT_RECORD:\n return 'DROP';\n }\n}\n//# sourceMappingURL=TracerMetrics.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '2.6.1';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tracer = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst Span_1 = require(\"./Span\");\nconst utility_1 = require(\"./utility\");\nconst platform_1 = require(\"./platform\");\nconst TracerMetrics_1 = require(\"./TracerMetrics\");\nconst version_1 = require(\"./version\");\n/**\n * This class represents a basic tracer.\n */\nclass Tracer {\n _sampler;\n _generalLimits;\n _spanLimits;\n _idGenerator;\n instrumentationScope;\n _resource;\n _spanProcessor;\n _tracerMetrics;\n /**\n * Constructs a new Tracer instance.\n */\n constructor(instrumentationScope, config, resource, spanProcessor) {\n const localConfig = (0, utility_1.mergeConfig)(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new platform_1.RandomIdGenerator();\n this._resource = resource;\n this._spanProcessor = spanProcessor;\n this.instrumentationScope = instrumentationScope;\n const meter = localConfig.meterProvider\n ? localConfig.meterProvider.getMeter('@opentelemetry/sdk-trace', version_1.VERSION)\n : api.createNoopMeter();\n this._tracerMetrics = new TracerMetrics_1.TracerMetrics(meter);\n }\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(name, options = {}, context = api.context.active()) {\n // remove span from context in case a root span is requested via options\n if (options.root) {\n context = api.trace.deleteSpan(context);\n }\n const parentSpan = api.trace.getSpan(context);\n if ((0, core_1.isTracingSuppressed)(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);\n return nonRecordingSpan;\n }\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let validParentSpanContext;\n let traceId;\n let traceState;\n if (!parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n }\n else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n validParentSpanContext = parentSpanContext;\n }\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: (0, core_1.sanitizeAttributes)(link.attributes),\n };\n });\n const attributes = (0, core_1.sanitizeAttributes)(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(context, traceId, name, spanKind, attributes, links);\n const recordEndMetrics = this._tracerMetrics.startSpan(parentSpanContext, samplingResult.decision);\n traceState = samplingResult.traceState ?? traceState;\n const traceFlags = samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED\n ? api.TraceFlags.SAMPLED\n : api.TraceFlags.NONE;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) {\n api.diag.debug('Recording is off, propagating context in a non-recording span');\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\n // Set initial span attributes. The attributes object may have been mutated\n // by the sampler, so we sanitize the merged attributes before setting them.\n const initAttributes = (0, core_1.sanitizeAttributes)(Object.assign(attributes, samplingResult.attributes));\n const span = new Span_1.SpanImpl({\n resource: this._resource,\n scope: this.instrumentationScope,\n context,\n spanContext,\n name,\n kind: spanKind,\n links,\n parentSpanContext: validParentSpanContext,\n attributes: initAttributes,\n startTime: options.startTime,\n spanProcessor: this._spanProcessor,\n spanLimits: this._spanLimits,\n recordEndMetrics,\n });\n return span;\n }\n startActiveSpan(name, arg2, arg3, arg4) {\n let opts;\n let ctx;\n let fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n const parentContext = ctx ?? api.context.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = api.trace.setSpan(parentContext, span);\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits() {\n return this._generalLimits;\n }\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits() {\n return this._spanLimits;\n }\n}\nexports.Tracer = Tracer;\n//# sourceMappingURL=Tracer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultiSpanProcessor = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nclass MultiSpanProcessor {\n _spanProcessors;\n constructor(spanProcessors) {\n this._spanProcessors = spanProcessors;\n }\n forceFlush() {\n const promises = [];\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.forceFlush());\n }\n return new Promise(resolve => {\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(error => {\n (0, core_1.globalErrorHandler)(error || new Error('MultiSpanProcessor: forceFlush failed'));\n resolve();\n });\n });\n }\n onStart(span, context) {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n onEnding(span) {\n for (const spanProcessor of this._spanProcessors) {\n if (spanProcessor.onEnding) {\n spanProcessor.onEnding(span);\n }\n }\n }\n onEnd(span) {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n shutdown() {\n const promises = [];\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.shutdown());\n }\n return new Promise((resolve, reject) => {\n Promise.all(promises).then(() => {\n resolve();\n }, reject);\n });\n }\n}\nexports.MultiSpanProcessor = MultiSpanProcessor;\n//# sourceMappingURL=MultiSpanProcessor.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasicTracerProvider = exports.ForceFlushState = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\nconst resources_1 = require(\"@opentelemetry/resources\");\nconst Tracer_1 = require(\"./Tracer\");\nconst config_1 = require(\"./config\");\nconst MultiSpanProcessor_1 = require(\"./MultiSpanProcessor\");\nconst utility_1 = require(\"./utility\");\nvar ForceFlushState;\n(function (ForceFlushState) {\n ForceFlushState[ForceFlushState[\"resolved\"] = 0] = \"resolved\";\n ForceFlushState[ForceFlushState[\"timeout\"] = 1] = \"timeout\";\n ForceFlushState[ForceFlushState[\"error\"] = 2] = \"error\";\n ForceFlushState[ForceFlushState[\"unresolved\"] = 3] = \"unresolved\";\n})(ForceFlushState = exports.ForceFlushState || (exports.ForceFlushState = {}));\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nclass BasicTracerProvider {\n _config;\n _tracers = new Map();\n _resource;\n _activeSpanProcessor;\n constructor(config = {}) {\n const mergedConfig = (0, core_1.merge)({}, (0, config_1.loadDefaultConfig)(), (0, utility_1.reconfigureLimits)(config));\n this._resource = mergedConfig.resource ?? (0, resources_1.defaultResource)();\n this._config = Object.assign({}, mergedConfig, {\n resource: this._resource,\n });\n const spanProcessors = [];\n if (config.spanProcessors?.length) {\n spanProcessors.push(...config.spanProcessors);\n }\n this._activeSpanProcessor = new MultiSpanProcessor_1.MultiSpanProcessor(spanProcessors);\n }\n getTracer(name, version, options) {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(key, new Tracer_1.Tracer({ name, version, schemaUrl: options?.schemaUrl }, this._config, this._resource, this._activeSpanProcessor));\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key);\n }\n forceFlush() {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._activeSpanProcessor['_spanProcessors'].map((spanProcessor) => {\n return new Promise(resolve => {\n let state;\n const timeoutInterval = setTimeout(() => {\n resolve(new Error(`Span processor did not completed within timeout period of ${timeout} ms`));\n state = ForceFlushState.timeout;\n }, timeout);\n spanProcessor\n .forceFlush()\n .then(() => {\n clearTimeout(timeoutInterval);\n if (state !== ForceFlushState.timeout) {\n state = ForceFlushState.resolved;\n resolve(state);\n }\n })\n .catch(error => {\n clearTimeout(timeoutInterval);\n state = ForceFlushState.error;\n resolve(error);\n });\n });\n });\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(result => result !== ForceFlushState.resolved);\n if (errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n shutdown() {\n return this._activeSpanProcessor.shutdown();\n }\n}\nexports.BasicTracerProvider = BasicTracerProvider;\n//# sourceMappingURL=BasicTracerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleSpanExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * This is implementation of {@link SpanExporter} that prints spans to the\n * console. This class can be used for diagnostic purposes.\n *\n * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time.\n */\n/* eslint-disable no-console */\nclass ConsoleSpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(spans, resultCallback) {\n return this._sendSpans(spans, resultCallback);\n }\n /**\n * Shutdown the exporter.\n */\n shutdown() {\n this._sendSpans([]);\n return this.forceFlush();\n }\n /**\n * Exports any pending spans in exporter\n */\n forceFlush() {\n return Promise.resolve();\n }\n /**\n * converts span info into more readable format\n * @param span\n */\n _exportInfo(span) {\n return {\n resource: {\n attributes: span.resource.attributes,\n },\n instrumentationScope: span.instrumentationScope,\n traceId: span.spanContext().traceId,\n parentSpanContext: span.parentSpanContext,\n traceState: span.spanContext().traceState?.serialize(),\n name: span.name,\n id: span.spanContext().spanId,\n kind: span.kind,\n timestamp: (0, core_1.hrTimeToMicroseconds)(span.startTime),\n duration: (0, core_1.hrTimeToMicroseconds)(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n _sendSpans(spans, done) {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: core_1.ExportResultCode.SUCCESS });\n }\n }\n}\nexports.ConsoleSpanExporter = ConsoleSpanExporter;\n//# sourceMappingURL=ConsoleSpanExporter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemorySpanExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * This class can be used for testing purposes. It stores the exported spans\n * in a list in memory that can be retrieved using the `getFinishedSpans()`\n * method.\n */\nclass InMemorySpanExporter {\n _finishedSpans = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n _stopped = false;\n export(spans, resultCallback) {\n if (this._stopped)\n return resultCallback({\n code: core_1.ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n setTimeout(() => resultCallback({ code: core_1.ExportResultCode.SUCCESS }), 0);\n }\n shutdown() {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush() {\n return Promise.resolve();\n }\n reset() {\n this._finishedSpans = [];\n }\n getFinishedSpans() {\n return this._finishedSpans;\n }\n}\nexports.InMemorySpanExporter = InMemorySpanExporter;\n//# sourceMappingURL=InMemorySpanExporter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SimpleSpanProcessor = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * An implementation of the {@link SpanProcessor} that converts the {@link Span}\n * to {@link ReadableSpan} and passes it to the configured exporter.\n *\n * Only spans that are sampled are converted.\n *\n * NOTE: This {@link SpanProcessor} exports every ended span individually instead of batching spans together, which causes significant performance overhead with most exporters. For production use, please consider using the {@link BatchSpanProcessor} instead.\n */\nclass SimpleSpanProcessor {\n _exporter;\n _shutdownOnce;\n _pendingExports;\n constructor(exporter) {\n this._exporter = exporter;\n this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n this._pendingExports = new Set();\n }\n async forceFlush() {\n await Promise.all(Array.from(this._pendingExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n onStart(_span, _parentContext) { }\n onEnd(span) {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) {\n return;\n }\n const pendingExport = this._doExport(span).catch(err => (0, core_1.globalErrorHandler)(err));\n // Enqueue this export to the pending list so it can be flushed by the user.\n this._pendingExports.add(pendingExport);\n void pendingExport.finally(() => this._pendingExports.delete(pendingExport));\n }\n async _doExport(span) {\n if (span.resource.asyncAttributesPending) {\n // Ensure resource is fully resolved before exporting.\n await span.resource.waitForAsyncAttributes?.();\n }\n const result = await core_1.internal._export(this._exporter, [span]);\n if (result.code !== core_1.ExportResultCode.SUCCESS) {\n throw (result.error ??\n new Error(`SimpleSpanProcessor: span export failed (status ${result})`));\n }\n }\n shutdown() {\n return this._shutdownOnce.call();\n }\n _shutdown() {\n return this._exporter.shutdown();\n }\n}\nexports.SimpleSpanProcessor = SimpleSpanProcessor;\n//# sourceMappingURL=SimpleSpanProcessor.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopSpanProcessor = void 0;\n/** No-op implementation of SpanProcessor */\nclass NoopSpanProcessor {\n onStart(_span, _context) { }\n onEnd(_span) { }\n shutdown() {\n return Promise.resolve();\n }\n forceFlush() {\n return Promise.resolve();\n }\n}\nexports.NoopSpanProcessor = NoopSpanProcessor;\n//# sourceMappingURL=NoopSpanProcessor.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = exports.TraceIdRatioBasedSampler = exports.ParentBasedSampler = exports.AlwaysOnSampler = exports.AlwaysOffSampler = exports.NoopSpanProcessor = exports.SimpleSpanProcessor = exports.InMemorySpanExporter = exports.ConsoleSpanExporter = exports.RandomIdGenerator = exports.BatchSpanProcessor = exports.BasicTracerProvider = void 0;\nvar BasicTracerProvider_1 = require(\"./BasicTracerProvider\");\nObject.defineProperty(exports, \"BasicTracerProvider\", { enumerable: true, get: function () { return BasicTracerProvider_1.BasicTracerProvider; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return platform_1.BatchSpanProcessor; } });\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return platform_1.RandomIdGenerator; } });\nvar ConsoleSpanExporter_1 = require(\"./export/ConsoleSpanExporter\");\nObject.defineProperty(exports, \"ConsoleSpanExporter\", { enumerable: true, get: function () { return ConsoleSpanExporter_1.ConsoleSpanExporter; } });\nvar InMemorySpanExporter_1 = require(\"./export/InMemorySpanExporter\");\nObject.defineProperty(exports, \"InMemorySpanExporter\", { enumerable: true, get: function () { return InMemorySpanExporter_1.InMemorySpanExporter; } });\nvar SimpleSpanProcessor_1 = require(\"./export/SimpleSpanProcessor\");\nObject.defineProperty(exports, \"SimpleSpanProcessor\", { enumerable: true, get: function () { return SimpleSpanProcessor_1.SimpleSpanProcessor; } });\nvar NoopSpanProcessor_1 = require(\"./export/NoopSpanProcessor\");\nObject.defineProperty(exports, \"NoopSpanProcessor\", { enumerable: true, get: function () { return NoopSpanProcessor_1.NoopSpanProcessor; } });\nvar AlwaysOffSampler_1 = require(\"./sampler/AlwaysOffSampler\");\nObject.defineProperty(exports, \"AlwaysOffSampler\", { enumerable: true, get: function () { return AlwaysOffSampler_1.AlwaysOffSampler; } });\nvar AlwaysOnSampler_1 = require(\"./sampler/AlwaysOnSampler\");\nObject.defineProperty(exports, \"AlwaysOnSampler\", { enumerable: true, get: function () { return AlwaysOnSampler_1.AlwaysOnSampler; } });\nvar ParentBasedSampler_1 = require(\"./sampler/ParentBasedSampler\");\nObject.defineProperty(exports, \"ParentBasedSampler\", { enumerable: true, get: function () { return ParentBasedSampler_1.ParentBasedSampler; } });\nvar TraceIdRatioBasedSampler_1 = require(\"./sampler/TraceIdRatioBasedSampler\");\nObject.defineProperty(exports, \"TraceIdRatioBasedSampler\", { enumerable: true, get: function () { return TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler; } });\nvar Sampler_1 = require(\"./Sampler\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return Sampler_1.SamplingDecision; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.23.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-undici';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UndiciInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst diagch = require(\"diagnostics_channel\");\nconst url_1 = require(\"url\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\n// A combination of https://github.com/elastic/apm-agent-nodejs and\n// https://github.com/gadget-inc/opentelemetry-instrumentations/blob/main/packages/opentelemetry-instrumentation-undici/src/index.ts\nclass UndiciInstrumentation extends instrumentation_1.InstrumentationBase {\n _recordFromReq = new WeakMap();\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n }\n // No need to instrument files/modules\n init() {\n return undefined;\n }\n disable() {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs.length = 0;\n }\n enable() {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n this.subscribeToChannel('undici:request:create', this.onRequestCreated.bind(this));\n this.subscribeToChannel('undici:client:sendHeaders', this.onRequestHeaders.bind(this));\n this.subscribeToChannel('undici:request:headers', this.onResponseHeaders.bind(this));\n this.subscribeToChannel('undici:request:trailers', this.onDone.bind(this));\n this.subscribeToChannel('undici:request:error', this.onError.bind(this));\n }\n _updateMetricInstruments() {\n this._httpClientDurationHistogram = this.meter.createHistogram(semantic_conventions_1.METRIC_HTTP_CLIENT_REQUEST_DURATION, {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 's',\n valueType: api_1.ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n });\n }\n subscribeToChannel(diagnosticChannel, onMessage) {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const [major, minor] = process.version\n .replace('v', '')\n .split('.')\n .map(n => Number(n));\n const useNewSubscribe = major > 18 || (major === 18 && minor >= 19);\n let unsubscribe;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n }\n else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n parseRequestHeaders(request) {\n const result = new Map();\n if (Array.isArray(request.headers)) {\n // headers are an array [k1, v2, k2, v2] (undici v6+)\n // values could be string or a string[] for multiple values\n for (let i = 0; i < request.headers.length; i += 2) {\n const key = request.headers[i];\n const value = request.headers[i + 1];\n // Key should always be a string, but the types don't know that, and let's be safe\n if (typeof key === 'string') {\n result.set(key.toLowerCase(), value);\n }\n }\n }\n else if (typeof request.headers === 'string') {\n // headers are a raw string (undici v5)\n // headers could be repeated in several lines for multiple values\n const headers = request.headers.split('\\r\\n');\n for (const line of headers) {\n if (!line) {\n continue;\n }\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) {\n // Invalid header? Probably this can't happen, but again let's be safe.\n continue;\n }\n const key = line.substring(0, colonIndex).toLowerCase();\n const value = line.substring(colonIndex + 1).trim();\n const allValues = result.get(key);\n if (allValues && Array.isArray(allValues)) {\n allValues.push(value);\n }\n else if (allValues) {\n result.set(key, [allValues, value]);\n }\n else {\n result.set(key, value);\n }\n }\n }\n return result;\n }\n // This is the 1st message we receive for each request (fired after request creation). Here we will\n // create the span and populate some atttributes, then link the span to the request for further\n // span processing\n onRequestCreated({ request }) {\n // Ignore if:\n // - instrumentation is disabled\n // - ignored by config\n // - method is 'CONNECT'\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n const shouldIgnoreReq = (0, instrumentation_1.safeExecuteInTheMiddle)(() => !enabled ||\n request.method === 'CONNECT' ||\n config.ignoreRequestHook?.(request), e => e && this._diag.error('caught ignoreRequestHook error: ', e), true);\n if (shouldIgnoreReq) {\n return;\n }\n const startTime = (0, core_1.hrTime)();\n let requestUrl;\n try {\n requestUrl = new url_1.URL(request.path, request.origin);\n }\n catch (err) {\n this._diag.warn('could not determine url.full:', err);\n // Skip instrumenting this request.\n return;\n }\n const urlScheme = requestUrl.protocol.replace(':', '');\n const requestMethod = this.getRequestMethod(request.method);\n const attributes = {\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: requestMethod,\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]: request.method,\n [semantic_conventions_1.ATTR_URL_FULL]: requestUrl.toString(),\n [semantic_conventions_1.ATTR_URL_PATH]: requestUrl.pathname,\n [semantic_conventions_1.ATTR_URL_QUERY]: requestUrl.search,\n [semantic_conventions_1.ATTR_URL_SCHEME]: urlScheme,\n };\n const schemePorts = { https: '443', http: '80' };\n const serverAddress = requestUrl.hostname;\n const serverPort = requestUrl.port || schemePorts[urlScheme];\n attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = serverAddress;\n if (serverPort && !isNaN(Number(serverPort))) {\n attributes[semantic_conventions_1.ATTR_SERVER_PORT] = Number(serverPort);\n }\n // Get user agent from headers\n const headersMap = this.parseRequestHeaders(request);\n const userAgentValues = headersMap.get('user-agent');\n if (userAgentValues) {\n // NOTE: having multiple user agents is not expected so\n // we're going to take last one like `curl` does\n // ref: https://curl.se/docs/manpage.html#-A\n const userAgent = Array.isArray(userAgentValues)\n ? userAgentValues[userAgentValues.length - 1]\n : userAgentValues;\n attributes[semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL] = userAgent;\n }\n // Get attributes from the hook if present\n const hookAttributes = (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.startSpanHook?.(request), e => e && this._diag.error('caught startSpanHook error: ', e), true);\n if (hookAttributes) {\n Object.entries(hookAttributes).forEach(([key, val]) => {\n attributes[key] = val;\n });\n }\n // Check if parent span is required via config and:\n // - if a parent is required but not present, we use a `NoopSpan` to still\n // propagate context without recording it.\n // - create a span otherwise\n const activeCtx = api_1.context.active();\n const currentSpan = api_1.trace.getSpan(activeCtx);\n let span;\n if (config.requireParentforSpans &&\n (!currentSpan || !api_1.trace.isSpanContextValid(currentSpan.spanContext()))) {\n span = api_1.trace.wrapSpanContext(api_1.INVALID_SPAN_CONTEXT);\n }\n else {\n span = this.tracer.startSpan(requestMethod === '_OTHER' ? 'HTTP' : requestMethod, {\n kind: api_1.SpanKind.CLIENT,\n attributes: attributes,\n }, activeCtx);\n }\n // Execute the request hook if defined\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.requestHook?.(span, request), e => e && this._diag.error('caught requestHook error: ', e), true);\n // Context propagation goes last so no hook can tamper\n // the propagation headers\n const requestContext = api_1.trace.setSpan(api_1.context.active(), span);\n const addedHeaders = {};\n api_1.propagation.inject(requestContext, addedHeaders);\n const headerEntries = Object.entries(addedHeaders);\n for (let i = 0; i < headerEntries.length; i++) {\n const [k, v] = headerEntries[i];\n if (typeof request.addHeader === 'function') {\n request.addHeader(k, v);\n }\n else if (typeof request.headers === 'string') {\n request.headers += `${k}: ${v}\\r\\n`;\n }\n else if (Array.isArray(request.headers)) {\n // undici@6.11.0 accidentally, briefly removed `request.addHeader()`.\n request.headers.push(k, v);\n }\n }\n this._recordFromReq.set(request, { span, attributes, startTime });\n }\n // This is the 2nd message we receive for each request. It is fired when connection with\n // the remote is established and about to send the first byte. Here we do have info about the\n // remote address and port so we can populate some `network.*` attributes into the span\n onRequestHeaders({ request, socket }) {\n const record = this._recordFromReq.get(request);\n if (!record) {\n return;\n }\n const config = this.getConfig();\n const { span } = record;\n const { remoteAddress, remotePort } = socket;\n const spanAttributes = {\n [semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS]: remoteAddress,\n [semantic_conventions_1.ATTR_NETWORK_PEER_PORT]: remotePort,\n };\n // After hooks have been processed (which may modify request headers)\n // we can collect the headers based on the configuration\n if (config.headersToSpanAttributes?.requestHeaders) {\n const headersToAttribs = new Set(config.headersToSpanAttributes.requestHeaders.map(n => n.toLowerCase()));\n const headersMap = this.parseRequestHeaders(request);\n for (const [name, value] of headersMap.entries()) {\n if (headersToAttribs.has(name)) {\n const attrValue = Array.isArray(value) ? value : [value];\n spanAttributes[`http.request.header.${name}`] = attrValue;\n }\n }\n }\n span.setAttributes(spanAttributes);\n }\n // This is the 3rd message we get for each request and it's fired when the server\n // headers are received, body may not be accessible yet.\n // From the response headers we can set the status and content length\n onResponseHeaders({ request, response, }) {\n const record = this._recordFromReq.get(request);\n if (!record) {\n return;\n }\n const { span, attributes } = record;\n const spanAttributes = {\n [semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]: response.statusCode,\n };\n const config = this.getConfig();\n // Execute the response hook if defined\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.responseHook?.(span, { request, response }), e => e && this._diag.error('caught responseHook error: ', e), true);\n if (config.headersToSpanAttributes?.responseHeaders) {\n const headersToAttribs = new Set();\n config.headersToSpanAttributes?.responseHeaders.forEach(name => headersToAttribs.add(name.toLowerCase()));\n for (let idx = 0; idx < response.headers.length; idx = idx + 2) {\n const name = response.headers[idx].toString().toLowerCase();\n const value = response.headers[idx + 1];\n if (headersToAttribs.has(name)) {\n const attrName = `http.response.header.${name}`;\n if (!Object.hasOwn(spanAttributes, attrName)) {\n spanAttributes[attrName] = [value.toString()];\n }\n else {\n spanAttributes[attrName].push(value.toString());\n }\n }\n }\n }\n span.setAttributes(spanAttributes);\n span.setStatus({\n code: response.statusCode >= 400\n ? api_1.SpanStatusCode.ERROR\n : api_1.SpanStatusCode.UNSET,\n });\n record.attributes = Object.assign(attributes, spanAttributes);\n }\n // This is the last event we receive if the request went without any errors\n onDone({ request }) {\n const record = this._recordFromReq.get(request);\n if (!record) {\n return;\n }\n const { span, attributes, startTime } = record;\n // End the span\n span.end();\n this._recordFromReq.delete(request);\n // Record metrics\n this.recordRequestDuration(attributes, startTime);\n }\n // This is the event we get when something is wrong in the request like\n // - invalid options when calling `fetch` global API or any undici method for request\n // - connectivity errors such as unreachable host\n // - requests aborted through an `AbortController.signal`\n // NOTE: server errors are considered valid responses and it's the lib consumer\n // who should deal with that.\n onError({ request, error }) {\n const record = this._recordFromReq.get(request);\n if (!record) {\n return;\n }\n const { span, attributes, startTime } = record;\n // NOTE: in `undici@6.3.0` when request aborted the error type changes from\n // a custom error (`RequestAbortedError`) to a built-in `DOMException` carrying\n // some differences:\n // - `code` is from DOMEXception (ABORT_ERR: 20)\n // - `message` changes\n // - stacktrace is smaller and contains node internal frames\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: error.message,\n });\n span.end();\n this._recordFromReq.delete(request);\n // Record metrics (with the error)\n attributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.message;\n this.recordRequestDuration(attributes, startTime);\n }\n recordRequestDuration(attributes, startTime) {\n // Time to record metrics\n const metricsAttributes = {};\n // Get the attribs already in span attributes\n const keysToCopy = [\n semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE,\n semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD,\n semantic_conventions_1.ATTR_SERVER_ADDRESS,\n semantic_conventions_1.ATTR_SERVER_PORT,\n semantic_conventions_1.ATTR_URL_SCHEME,\n semantic_conventions_1.ATTR_ERROR_TYPE,\n ];\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n // Take the duration and record it\n const durationSeconds = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())) / 1000;\n this._httpClientDurationHistogram.record(durationSeconds, metricsAttributes);\n }\n getRequestMethod(original) {\n const knownMethods = {\n CONNECT: true,\n OPTIONS: true,\n HEAD: true,\n GET: true,\n POST: true,\n PUT: true,\n PATCH: true,\n DELETE: true,\n TRACE: true,\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n QUERY: true,\n };\n if (original.toUpperCase() in knownMethods) {\n return original.toUpperCase();\n }\n return '_OTHER';\n }\n}\nexports.UndiciInstrumentation = UndiciInstrumentation;\n//# sourceMappingURL=undici.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UndiciInstrumentation = void 0;\nvar undici_1 = require(\"./undici\");\nObject.defineProperty(exports, \"UndiciInstrumentation\", { enumerable: true, get: function () { return undici_1.UndiciInstrumentation; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExpressLayerType = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar ExpressLayerType;\n(function (ExpressLayerType) {\n ExpressLayerType[\"ROUTER\"] = \"router\";\n ExpressLayerType[\"MIDDLEWARE\"] = \"middleware\";\n ExpressLayerType[\"REQUEST_HANDLER\"] = \"request_handler\";\n})(ExpressLayerType = exports.ExpressLayerType || (exports.ExpressLayerType = {}));\n//# sourceMappingURL=ExpressLayerType.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AttributeNames;\n(function (AttributeNames) {\n AttributeNames[\"EXPRESS_TYPE\"] = \"express.type\";\n AttributeNames[\"EXPRESS_NAME\"] = \"express.name\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._LAYERS_STORE_PROPERTY = exports.kLayerPatched = void 0;\n/**\n * This symbol is used to mark express layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexports.kLayerPatched = Symbol('express-layer-patched');\n/**\n * This const define where on the `request` object the Instrumentation will mount the\n * current stack of express layer.\n *\n * It is necessary because express doesn't store the different layers\n * (ie: middleware, router etc) that it called to get to the current layer.\n * Given that, the only way to know the route of a given layer is to\n * store the path of where each previous layer has been mounted.\n *\n * ex: bodyParser > auth middleware > /users router > get /:id\n * in this case the stack would be: [\"/users\", \"/:id\"]\n *\n * ex2: bodyParser > /api router > /v1 router > /users router > get /:id\n * stack: [\"/api\", \"/v1\", \"/users\", \":id\"]\n *\n */\nexports._LAYERS_STORE_PROPERTY = '__ot_middlewares';\n//# sourceMappingURL=internal-types.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getActualMatchedRoute = exports.getConstructedRoute = exports.getLayerPath = exports.asErrorAndMessage = exports.isLayerIgnored = exports.getLayerMetadata = exports.getRouterPath = exports.storeLayerPath = void 0;\nconst ExpressLayerType_1 = require(\"./enums/ExpressLayerType\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst internal_types_1 = require(\"./internal-types\");\n/**\n * Store layers path in the request to be able to construct route later\n * @param request The request where\n * @param [value] the value to push into the array\n */\nconst storeLayerPath = (request, value) => {\n if (Array.isArray(request[internal_types_1._LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, internal_types_1._LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n if (value === undefined)\n return { isLayerPathStored: false };\n request[internal_types_1._LAYERS_STORE_PROPERTY].push(value);\n return { isLayerPathStored: true };\n};\nexports.storeLayerPath = storeLayerPath;\n/**\n * Recursively search the router path from layer stack\n * @param path The path to reconstruct\n * @param layer The layer to reconstruct from\n * @returns The reconstructed path\n */\nconst getRouterPath = (path, layer) => {\n const stackLayer = layer.handle?.stack?.[0];\n if (stackLayer?.route?.path) {\n return `${path}${stackLayer.route.path}`;\n }\n if (stackLayer?.handle?.stack) {\n return (0, exports.getRouterPath)(path, stackLayer);\n }\n return path;\n};\nexports.getRouterPath = getRouterPath;\n/**\n * Parse express layer context to retrieve a name and attributes.\n * @param route The route of the layer\n * @param layer Express layer\n * @param [layerPath] if present, the path on which the layer has been mounted\n */\nconst getLayerMetadata = (route, layer, layerPath) => {\n if (layer.name === 'router') {\n const maybeRouterPath = (0, exports.getRouterPath)('', layer);\n const extractedRouterPath = maybeRouterPath\n ? maybeRouterPath\n : layerPath || route || '/';\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: extractedRouterPath,\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.ROUTER,\n },\n name: `router - ${extractedRouterPath}`,\n };\n }\n else if (layer.name === 'bound dispatch' || layer.name === 'handle') {\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: (route || layerPath) ?? 'request handler',\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.REQUEST_HANDLER,\n },\n name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`,\n };\n }\n else {\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: layer.name,\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\nexports.getLayerMetadata = getLayerMetadata;\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param obj obj to inspect\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (constant, pattern) => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n }\n else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n }\n else if (typeof pattern === 'function') {\n return pattern(constant);\n }\n else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n/**\n * Check whether the given request is ignored by configuration\n * It will not re-throw exceptions from `list` provided by the client\n * @param constant e.g URL of request\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nconst isLayerIgnored = (name, type, config) => {\n if (Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)) {\n return true;\n }\n if (Array.isArray(config?.ignoreLayers) === false)\n return false;\n try {\n for (const pattern of config.ignoreLayers) {\n if (satisfiesPattern(name, pattern)) {\n return true;\n }\n }\n }\n catch (e) {\n /* catch block*/\n }\n return false;\n};\nexports.isLayerIgnored = isLayerIgnored;\n/**\n * Converts a user-provided error value into an error and error message pair\n *\n * @param error - User-provided error value\n * @returns Both an Error or string representation of the value and an error message\n */\nconst asErrorAndMessage = (error) => error instanceof Error\n ? [error, error.message]\n : [String(error), String(error)];\nexports.asErrorAndMessage = asErrorAndMessage;\n/**\n * Extracts the layer path from the route arguments\n *\n * @param args - Arguments of the route\n * @returns The layer path\n */\nconst getLayerPath = (args) => {\n const firstArg = args[0];\n if (Array.isArray(firstArg)) {\n return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(',');\n }\n return extractLayerPathSegment(firstArg);\n};\nexports.getLayerPath = getLayerPath;\nconst extractLayerPathSegment = (arg) => {\n if (typeof arg === 'string') {\n return arg;\n }\n if (arg instanceof RegExp || typeof arg === 'number') {\n return arg.toString();\n }\n return;\n};\nfunction getConstructedRoute(req) {\n const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY])\n ? req[internal_types_1._LAYERS_STORE_PROPERTY]\n : [];\n const meaningfulPaths = layersStore.filter(path => path !== '/' && path !== '/*');\n if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') {\n return '*';\n }\n // Join parts and remove duplicate slashes\n return meaningfulPaths.join('').replace(/\\/{2,}/g, '/');\n}\nexports.getConstructedRoute = getConstructedRoute;\n/**\n * Extracts the actual matched route from Express request for OpenTelemetry instrumentation.\n * Returns the route that should be used as the http.route attribute.\n *\n * @param req - The Express request object with layers store\n * @param layersStoreProperty - The property name where layer paths are stored\n * @returns The matched route string or undefined if no valid route is found\n */\nfunction getActualMatchedRoute(req) {\n const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY])\n ? req[internal_types_1._LAYERS_STORE_PROPERTY]\n : [];\n // If no layers are stored, no route can be determined\n if (layersStore.length === 0) {\n return undefined;\n }\n // Handle root path case - if all paths are root, only return root if originalUrl is also root\n // The layer store also includes root paths in case a non-existing url was requested\n if (layersStore.every(path => path === '/')) {\n return req.originalUrl === '/' ? '/' : undefined;\n }\n const constructedRoute = getConstructedRoute(req);\n if (constructedRoute === '*') {\n return constructedRoute;\n }\n // For RegExp routes or route arrays, return the constructed route\n // This handles the case where the route is defined using RegExp or an array\n if (constructedRoute.includes('/') &&\n (constructedRoute.includes(',') ||\n constructedRoute.includes('\\\\') ||\n constructedRoute.includes('*') ||\n constructedRoute.includes('['))) {\n return constructedRoute;\n }\n // Ensure route starts with '/' if it doesn't already\n const normalizedRoute = constructedRoute.startsWith('/')\n ? constructedRoute\n : `/${constructedRoute}`;\n // Validate that this appears to be a matched route\n // A route is considered matched if:\n // 1. We have a constructed route\n // 2. The original URL matches or starts with our route pattern\n const isValidRoute = normalizedRoute.length > 0 &&\n (req.originalUrl === normalizedRoute ||\n req.originalUrl.startsWith(normalizedRoute) ||\n isRoutePattern(normalizedRoute));\n return isValidRoute ? normalizedRoute : undefined;\n}\nexports.getActualMatchedRoute = getActualMatchedRoute;\n/**\n * Checks if a route contains parameter patterns (e.g., :id, :userId)\n * which are valid even if they don't exactly match the original URL\n */\nfunction isRoutePattern(route) {\n return route.includes(':') || route.includes('*');\n}\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-express';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExpressInstrumentation = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst ExpressLayerType_1 = require(\"./enums/ExpressLayerType\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst internal_types_1 = require(\"./internal-types\");\n/** Express instrumentation for OpenTelemetry */\nclass ExpressInstrumentation extends instrumentation_1.InstrumentationBase {\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n }\n init() {\n return [\n new instrumentation_1.InstrumentationNodeModuleDefinition('express', ['>=4.0.0 <6'], moduleExports => {\n const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype // Express v5\n : moduleExports.Router; // Express v4\n // patch express.Router.route\n if ((0, instrumentation_1.isWrapped)(routerProto.route)) {\n this._unwrap(routerProto, 'route');\n }\n this._wrap(routerProto, 'route', this._getRoutePatch());\n // patch express.Router.use\n if ((0, instrumentation_1.isWrapped)(routerProto.use)) {\n this._unwrap(routerProto, 'use');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._wrap(routerProto, 'use', this._getRouterUsePatch());\n // patch express.Application.use\n if ((0, instrumentation_1.isWrapped)(moduleExports.application.use)) {\n this._unwrap(moduleExports.application, 'use');\n }\n this._wrap(moduleExports.application, 'use', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._getAppUsePatch(isExpressWithRouterPrototype));\n return moduleExports;\n }, moduleExports => {\n if (moduleExports === undefined)\n return;\n const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype\n : moduleExports.Router;\n this._unwrap(routerProto, 'route');\n this._unwrap(routerProto, 'use');\n this._unwrap(moduleExports.application, 'use');\n }),\n ];\n }\n /**\n * Get the patch for Router.route function\n */\n _getRoutePatch() {\n const instrumentation = this;\n return function (original) {\n return function route_trace(...args) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n return route;\n };\n };\n }\n /**\n * Get the patch for Router.use function\n */\n _getRouterUsePatch() {\n const instrumentation = this;\n return function (original) {\n return function use(...args) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n return route;\n };\n };\n }\n /**\n * Get the patch for Application.use function\n */\n _getAppUsePatch(isExpressWithRouterPrototype) {\n const instrumentation = this;\n return function (original) {\n return function use(...args) {\n // If we access app.router in express 4.x we trigger an assertion error.\n // This property existed in v3, was removed in v4 and then re-added in v5.\n const router = isExpressWithRouterPrototype\n ? this.router\n : this._router;\n const route = original.apply(this, args);\n if (router) {\n const layer = router.stack[router.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n }\n return route;\n };\n };\n }\n /** Patch each express layer to create span and propagate context */\n _applyPatch(layer, layerPath) {\n const instrumentation = this;\n // avoid patching multiple times the same layer\n if (layer[internal_types_1.kLayerPatched] === true)\n return;\n layer[internal_types_1.kLayerPatched] = true;\n this._wrap(layer, 'handle', original => {\n // TODO: instrument error handlers\n if (original.length === 4)\n return original;\n const patched = function (req, res) {\n const { isLayerPathStored } = (0, utils_1.storeLayerPath)(req, layerPath);\n const constructedRoute = (0, utils_1.getConstructedRoute)(req);\n const actualMatchedRoute = (0, utils_1.getActualMatchedRoute)(req);\n const attributes = {\n [semantic_conventions_1.ATTR_HTTP_ROUTE]: actualMatchedRoute,\n };\n const metadata = (0, utils_1.getLayerMetadata)(constructedRoute, layer, layerPath);\n const type = metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE];\n const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active());\n if (rpcMetadata?.type === core_1.RPCType.HTTP) {\n rpcMetadata.route = actualMatchedRoute;\n }\n // verify against the config if the layer should be ignored\n if ((0, utils_1.isLayerIgnored)(metadata.name, type, instrumentation.getConfig())) {\n if (type === ExpressLayerType_1.ExpressLayerType.MIDDLEWARE) {\n req[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n }\n return original.apply(this, arguments);\n }\n if (api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n const spanName = instrumentation._getSpanName({\n request: req,\n layerType: type,\n route: constructedRoute,\n }, metadata.name);\n const span = instrumentation.tracer.startSpan(spanName, {\n attributes: Object.assign(attributes, metadata.attributes),\n });\n const parentContext = api_1.context.active();\n let currentContext = api_1.trace.setSpan(parentContext, span);\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => requestHook(span, {\n request: req,\n layerType: type,\n route: constructedRoute,\n }), e => {\n if (e) {\n api_1.diag.error('express instrumentation: request hook failed', e);\n }\n }, true);\n }\n let spanHasEnded = false;\n // TODO: Fix router spans (getRouterPath does not work properly) to\n // have useful names before removing this branch\n if (metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE] ===\n ExpressLayerType_1.ExpressLayerType.ROUTER) {\n span.end();\n spanHasEnded = true;\n currentContext = parentContext;\n }\n // listener for response.on('finish')\n const onResponseFinish = () => {\n if (spanHasEnded === false) {\n spanHasEnded = true;\n span.end();\n }\n };\n // verify we have a callback\n const args = Array.from(arguments);\n const callbackIdx = args.findIndex(arg => typeof arg === 'function');\n if (callbackIdx >= 0) {\n arguments[callbackIdx] = function () {\n // express considers anything but an empty value, \"route\" or \"router\"\n // passed to its callback to be an error\n const maybeError = arguments[0];\n const isError = ![undefined, null, 'route', 'router'].includes(maybeError);\n if (!spanHasEnded && isError) {\n const [error, message] = (0, utils_1.asErrorAndMessage)(maybeError);\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message,\n });\n }\n if (spanHasEnded === false) {\n spanHasEnded = true;\n req.res?.removeListener('finish', onResponseFinish);\n span.end();\n }\n if (!(req.route && isError) && isLayerPathStored) {\n req[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n }\n const callback = args[callbackIdx];\n return api_1.context.bind(parentContext, callback).apply(this, arguments);\n };\n }\n try {\n return api_1.context.bind(currentContext, original).apply(this, arguments);\n }\n catch (anyError) {\n const [error, message] = (0, utils_1.asErrorAndMessage)(anyError);\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message,\n });\n throw anyError;\n }\n finally {\n /**\n * At this point if the callback wasn't called, that means either the\n * layer is asynchronous (so it will call the callback later on) or that\n * the layer directly ends the http response, so we'll hook into the \"finish\"\n * event to handle the later case.\n */\n if (!spanHasEnded) {\n res.once('finish', onResponseFinish);\n }\n }\n };\n // `handle` isn't just a regular function in some cases. It also contains\n // some properties holding metadata and state so we need to proxy them\n // through through patched function\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1950\n // Also some apps/libs do their own patching before OTEL and have these properties\n // in the proptotype. So we use a `for...in` loop to get own properties and also\n // any enumerable prop in the prototype chain\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2271\n for (const key in original) {\n Object.defineProperty(patched, key, {\n get() {\n return original[key];\n },\n set(value) {\n original[key] = value;\n },\n });\n }\n return patched;\n });\n }\n _getSpanName(info, defaultName) {\n const { spanNameHook } = this.getConfig();\n if (!(spanNameHook instanceof Function)) {\n return defaultName;\n }\n try {\n return spanNameHook(info, defaultName) ?? defaultName;\n }\n catch (err) {\n api_1.diag.error('express instrumentation: error calling span name rewrite hook', err);\n return defaultName;\n }\n }\n}\nexports.ExpressInstrumentation = ExpressInstrumentation;\n//# sourceMappingURL=instrumentation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = exports.ExpressLayerType = exports.ExpressInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"ExpressInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.ExpressInstrumentation; } });\nvar ExpressLayerType_1 = require(\"./enums/ExpressLayerType\");\nObject.defineProperty(exports, \"ExpressLayerType\", { enumerable: true, get: function () { return ExpressLayerType_1.ExpressLayerType; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeverityNumber = void 0;\nvar SeverityNumber;\n(function (SeverityNumber) {\n SeverityNumber[SeverityNumber[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n SeverityNumber[SeverityNumber[\"TRACE\"] = 1] = \"TRACE\";\n SeverityNumber[SeverityNumber[\"TRACE2\"] = 2] = \"TRACE2\";\n SeverityNumber[SeverityNumber[\"TRACE3\"] = 3] = \"TRACE3\";\n SeverityNumber[SeverityNumber[\"TRACE4\"] = 4] = \"TRACE4\";\n SeverityNumber[SeverityNumber[\"DEBUG\"] = 5] = \"DEBUG\";\n SeverityNumber[SeverityNumber[\"DEBUG2\"] = 6] = \"DEBUG2\";\n SeverityNumber[SeverityNumber[\"DEBUG3\"] = 7] = \"DEBUG3\";\n SeverityNumber[SeverityNumber[\"DEBUG4\"] = 8] = \"DEBUG4\";\n SeverityNumber[SeverityNumber[\"INFO\"] = 9] = \"INFO\";\n SeverityNumber[SeverityNumber[\"INFO2\"] = 10] = \"INFO2\";\n SeverityNumber[SeverityNumber[\"INFO3\"] = 11] = \"INFO3\";\n SeverityNumber[SeverityNumber[\"INFO4\"] = 12] = \"INFO4\";\n SeverityNumber[SeverityNumber[\"WARN\"] = 13] = \"WARN\";\n SeverityNumber[SeverityNumber[\"WARN2\"] = 14] = \"WARN2\";\n SeverityNumber[SeverityNumber[\"WARN3\"] = 15] = \"WARN3\";\n SeverityNumber[SeverityNumber[\"WARN4\"] = 16] = \"WARN4\";\n SeverityNumber[SeverityNumber[\"ERROR\"] = 17] = \"ERROR\";\n SeverityNumber[SeverityNumber[\"ERROR2\"] = 18] = \"ERROR2\";\n SeverityNumber[SeverityNumber[\"ERROR3\"] = 19] = \"ERROR3\";\n SeverityNumber[SeverityNumber[\"ERROR4\"] = 20] = \"ERROR4\";\n SeverityNumber[SeverityNumber[\"FATAL\"] = 21] = \"FATAL\";\n SeverityNumber[SeverityNumber[\"FATAL2\"] = 22] = \"FATAL2\";\n SeverityNumber[SeverityNumber[\"FATAL3\"] = 23] = \"FATAL3\";\n SeverityNumber[SeverityNumber[\"FATAL4\"] = 24] = \"FATAL4\";\n})(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {}));\n//# sourceMappingURL=LogRecord.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER = exports.NoopLogger = void 0;\nclass NoopLogger {\n emit(_logRecord) { }\n}\nexports.NoopLogger = NoopLogger;\nexports.NOOP_LOGGER = new NoopLogger();\n//# sourceMappingURL=NoopLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = void 0;\nexports.GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\nexports._global = globalThis;\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nfunction makeGetter(requiredVersion, instance, fallback) {\n return (version) => version === requiredVersion ? instance : fallback;\n}\nexports.makeGetter = makeGetter;\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n//# sourceMappingURL=global-utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass NoopLoggerProvider {\n getLogger(_name, _version, _options) {\n return new NoopLogger_1.NoopLogger();\n }\n}\nexports.NoopLoggerProvider = NoopLoggerProvider;\nexports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n//# sourceMappingURL=NoopLoggerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLogger = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass ProxyLogger {\n constructor(provider, name, version, options) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord) {\n this._getLogger().emit(logRecord);\n }\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(this.name, this.version, this.options);\n if (!logger) {\n return NoopLogger_1.NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\nexports.ProxyLogger = ProxyLogger;\n//# sourceMappingURL=ProxyLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLoggerProvider = void 0;\nconst NoopLoggerProvider_1 = require(\"./NoopLoggerProvider\");\nconst ProxyLogger_1 = require(\"./ProxyLogger\");\nclass ProxyLoggerProvider {\n getLogger(name, version, options) {\n var _a;\n return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger_1.ProxyLogger(this, name, version, options));\n }\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER;\n }\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate) {\n this._delegate = delegate;\n }\n /**\n * @internal\n */\n _getDelegateLogger(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options);\n }\n}\nexports.ProxyLoggerProvider = ProxyLoggerProvider;\n//# sourceMappingURL=ProxyLoggerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogsAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopLoggerProvider_1 = require(\"../NoopLoggerProvider\");\nconst ProxyLoggerProvider_1 = require(\"../ProxyLoggerProvider\");\nclass LogsAPI {\n constructor() {\n this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n }\n static getInstance() {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n return this._instance;\n }\n setGlobalLoggerProvider(provider) {\n if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY] = (0, global_utils_1.makeGetter)(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER);\n this._proxyLoggerProvider._setDelegate(provider);\n return provider;\n }\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n getLoggerProvider() {\n var _a, _b;\n return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider);\n }\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n getLogger(name, version, options) {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n /** Remove the global logger provider */\n disable() {\n delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n }\n}\nexports.LogsAPI = LogsAPI;\n//# sourceMappingURL=logs.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logs = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = void 0;\nvar LogRecord_1 = require(\"./types/LogRecord\");\nObject.defineProperty(exports, \"SeverityNumber\", { enumerable: true, get: function () { return LogRecord_1.SeverityNumber; } });\nvar NoopLogger_1 = require(\"./NoopLogger\");\nObject.defineProperty(exports, \"NOOP_LOGGER\", { enumerable: true, get: function () { return NoopLogger_1.NOOP_LOGGER; } });\nObject.defineProperty(exports, \"NoopLogger\", { enumerable: true, get: function () { return NoopLogger_1.NoopLogger; } });\nconst logs_1 = require(\"./api/logs\");\nexports.logs = logs_1.LogsAPI.getInstance();\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.disableInstrumentations = exports.enableInstrumentations = void 0;\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nfunction enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\nexports.enableInstrumentations = enableInstrumentations;\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nfunction disableInstrumentations(instrumentations) {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\nexports.disableInstrumentations = disableInstrumentations;\n//# sourceMappingURL=autoLoaderUtils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerInstrumentations = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst autoLoaderUtils_1 = require(\"./autoLoaderUtils\");\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nfunction registerInstrumentations(options) {\n const tracerProvider = options.tracerProvider || api_1.trace.getTracerProvider();\n const meterProvider = options.meterProvider || api_1.metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || api_logs_1.logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n (0, autoLoaderUtils_1.enableInstrumentations)(instrumentations, tracerProvider, meterProvider, loggerProvider);\n return () => {\n (0, autoLoaderUtils_1.disableInstrumentations)(instrumentations);\n };\n}\nexports.registerInstrumentations = registerInstrumentations;\n//# sourceMappingURL=autoLoader.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.satisfies = void 0;\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\nconst api_1 = require(\"@opentelemetry/api\");\nconst VERSION_REGEXP = /^(?:v)?(?(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*))(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst RANGE_REGEXP = /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|0|[1-9]\\d*))?)(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nfunction satisfies(version, range, options) {\n // Strict semver format check\n if (!_validateVersion(version)) {\n api_1.diag.error(`Invalid version: ${version}`);\n return false;\n }\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n // Parse version\n const parsedVersion = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n const allParsedRanges = [];\n // Check given version whether it satisfies given range expression\n const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options);\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\nexports.satisfies = satisfies;\nfunction _validateVersion(version) {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\nfunction _doSatisfies(parsedVersion, range, allParsedRanges, options) {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n }\n else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n }\n else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\nfunction _checkRange(parsedVersion, range, allParsedRanges, options) {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n }\n else {\n // Validate and parse range\n const parsedRange = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\nfunction _satisfies(parsedVersion, parsedRange) {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n // Compare version segment first\n let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []);\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments = parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments = parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n }\n else if (!versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length) {\n comparisonResult = 1;\n }\n else if (versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length) {\n comparisonResult = -1;\n }\n else {\n comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments);\n }\n }\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op]?.includes(comparisonResult);\n}\nfunction _doPreleaseCheck(parsedVersion, allParsedRanges) {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version);\n }\n return true;\n}\nfunction _normalizeRange(range, options) {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\nfunction _parseVersion(versionString) {\n const match = versionString.match(VERSION_REGEXP);\n if (!match) {\n api_1.diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n const version = match.groups.version;\n const prerelease = match.groups.prerelease;\n const build = match.groups.build;\n const versionSegments = version.split('.');\n const prereleaseSegments = prerelease?.split('.');\n return {\n op: undefined,\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n build,\n };\n}\nfunction _parseRange(rangeString) {\n if (!rangeString) {\n return {};\n }\n const match = rangeString.match(RANGE_REGEXP);\n if (!match) {\n api_1.diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n let op = match.groups.op;\n const version = match.groups.version;\n const prerelease = match.groups.prerelease;\n const build = match.groups.build;\n const versionSegments = version.split('.');\n const prereleaseSegments = prerelease?.split('.');\n if (op === '==') {\n op = '=';\n }\n return {\n op: op || '=',\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n build,\n };\n}\nfunction _isWildcard(s) {\n return s === '*' || s === 'x' || s === 'X';\n}\nfunction _parseVersionString(v) {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\nfunction _normalizeVersionType(a, b) {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a, b];\n }\n else if (typeof a === 'string') {\n return [a, b];\n }\n else {\n throw new Error('Version segments can only be strings or numbers');\n }\n }\n else {\n return [String(a), String(b)];\n }\n}\nfunction _compareVersionStrings(v1, v2) {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2));\n if (parsedV1 > parsedV2) {\n return 1;\n }\n else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\nfunction _compareVersionSegments(v1, v2) {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN = `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\nconst HYPHENRANGE = `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp) {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n if (isX(M)) {\n ret = '';\n }\n else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n }\n else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n }\n else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp, options) {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n if (isX(M)) {\n ret = '';\n }\n else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n }\n else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n }\n else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n }\n else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n }\n else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n }\n else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n }\n else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n }\n else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n }\n else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp, options) {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n }\n else {\n // nothing is forbidden\n ret = '*';\n }\n }\n else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n }\n else {\n m = +m + 1;\n p = 0;\n }\n }\n else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n }\n else {\n m = +m + 1;\n }\n }\n if (gtlt === '<') {\n pr = '-0';\n }\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n }\n else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n }\n else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp, options) {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n }\n else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n }\n else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n }\n else if (fpr) {\n from = `>=${from}`;\n }\n else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n if (isX(tM)) {\n to = '';\n }\n else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n }\n else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n }\n else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n }\n else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n }\n else {\n to = `<=${to}`;\n }\n return `${from} ${to}`.trim();\n });\n}\n//# sourceMappingURL=semver.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massUnwrap = exports.unwrap = exports.massWrap = exports.wrap = void 0;\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger = console.error.bind(console);\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj, name, value) {\n const enumerable = !!obj[name] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\nconst wrap = (nodule, name, wrapper) => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n const original = nodule[name];\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n const wrapped = wrapper(original, name);\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped;\n};\nexports.wrap = wrap;\nconst massWrap = (nodules, names, wrapper) => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n }\n else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n nodules.forEach(nodule => {\n names.forEach(name => {\n (0, exports.wrap)(nodule, name, wrapper);\n });\n });\n};\nexports.massWrap = massWrap;\nconst unwrap = (nodule, name) => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n const wrapped = nodule[name];\n if (!wrapped.__unwrap) {\n logger('no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?');\n }\n else {\n wrapped.__unwrap();\n return;\n }\n};\nexports.unwrap = unwrap;\nconst massUnwrap = (nodules, names) => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n }\n else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n nodules.forEach(nodule => {\n names.forEach(name => {\n (0, exports.unwrap)(nodule, name);\n });\n });\n};\nexports.massUnwrap = massUnwrap;\nfunction shimmer(options) {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n }\n else {\n logger = options.logger;\n }\n }\n}\nexports.default = shimmer;\nshimmer.wrap = exports.wrap;\nshimmer.massWrap = exports.massWrap;\nshimmer.unwrap = exports.unwrap;\nshimmer.massUnwrap = exports.massUnwrap;\n//# sourceMappingURL=shimmer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationAbstract = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst shimmer = require(\"./shimmer\");\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nclass InstrumentationAbstract {\n _config = {};\n _tracer;\n _meter;\n _logger;\n _diag;\n instrumentationName;\n instrumentationVersion;\n constructor(instrumentationName, instrumentationVersion, config) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n this.setConfig(config);\n this._diag = api_1.diag.createComponentLogger({\n namespace: instrumentationName,\n });\n this._tracer = api_1.trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = api_1.metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = api_logs_1.logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n /* Api to wrap instrumented method */\n _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n _massUnwrap = shimmer.massUnwrap;\n /* Returns meter */\n get meter() {\n return this._meter;\n }\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n setMeterProvider(meterProvider) {\n this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion);\n this._updateMetricInstruments();\n }\n /* Returns logger */\n get logger() {\n return this._logger;\n }\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n setLoggerProvider(loggerProvider) {\n this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion);\n }\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n getModuleDefinitions() {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n return initResult;\n }\n /**\n * Sets the new metric instruments with the current Meter.\n */\n _updateMetricInstruments() {\n return;\n }\n /* Returns InstrumentationConfig */\n getConfig() {\n return this._config;\n }\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n setConfig(config) {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n setTracerProvider(tracerProvider) {\n this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion);\n }\n /* Returns tracer */\n get tracer() {\n return this._tracer;\n }\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n _runSpanCustomizationHook(hookHandler, triggerName, span, info) {\n if (!hookHandler) {\n return;\n }\n try {\n hookHandler(span, info);\n }\n catch (e) {\n this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e);\n }\n }\n}\nexports.InstrumentationAbstract = InstrumentationAbstract;\n//# sourceMappingURL=instrumentation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleNameTrie = exports.ModuleNameSeparator = void 0;\nexports.ModuleNameSeparator = '/';\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks = [];\n children = new Map();\n}\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nclass ModuleNameTrie {\n _trie = new ModuleNameTrieNode();\n _counter = 0;\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook) {\n let trieNode = this._trie;\n for (const moduleNamePart of hook.moduleName.split(exports.ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(moduleName, { maintainInsertionOrder, fullOnly } = {}) {\n let trieNode = this._trie;\n const results = [];\n let foundFull = true;\n for (const moduleNamePart of moduleName.split(exports.ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\nexports.ModuleNameTrie = ModuleNameTrie;\n//# sourceMappingURL=ModuleNameTrie.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequireInTheMiddleSingleton = void 0;\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst path = require(\"path\");\nconst ModuleNameTrie_1 = require(\"./ModuleNameTrie\");\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nclass RequireInTheMiddleSingleton {\n _moduleNameTrie = new ModuleNameTrie_1.ModuleNameTrie();\n static _instance;\n constructor() {\n this._initialize();\n }\n _initialize() {\n new require_in_the_middle_1.Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null, { internals: true }, (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n return exports;\n });\n }\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName, onRequire) {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance() {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha)\n return new RequireInTheMiddleSingleton();\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\nexports.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton;\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath) {\n return path.sep !== ModuleNameTrie_1.ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameTrie_1.ModuleNameSeparator)\n : moduleNameOrPath;\n}\n//# sourceMappingURL=RequireInTheMiddleSingleton.js.map", + "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst importHooks = [] // TODO should this be a Set?\nconst setters = new WeakMap()\nconst getters = new WeakMap()\nconst specifiers = new Map()\nconst toHook = []\n\nconst proxyHandler = {\n set (target, name, value) {\n const set = setters.get(target)\n const setter = set && set[name]\n if (typeof setter === 'function') {\n return setter(value)\n }\n // If a module doesn't export the property being assigned (e.g. no default\n // export), there is no setter to call. Don't crash userland code.\n return true\n },\n\n get (target, name) {\n if (name === Symbol.toStringTag) {\n return 'Module'\n }\n\n const getter = getters.get(target)[name]\n\n if (typeof getter === 'function') {\n return getter()\n }\n },\n\n defineProperty (target, property, descriptor) {\n if ((!('value' in descriptor))) {\n throw new Error('Getters/setters are not supported for exports property descriptors.')\n }\n\n const set = setters.get(target)\n const setter = set && set[property]\n if (typeof setter === 'function') {\n return setter(descriptor.value)\n }\n return true\n }\n}\n\nfunction register (name, namespace, set, get, specifier) {\n specifiers.set(name, specifier)\n setters.set(namespace, set)\n getters.set(namespace, get)\n const proxy = new Proxy(namespace, proxyHandler)\n importHooks.forEach(hook => hook(name, proxy, specifier))\n toHook.push([name, proxy, specifier])\n}\n\nexports.register = register\nexports.importHooks = importHooks\nexports.specifiers = specifiers\nexports.toHook = toHook\n", + "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst path = require('path')\nconst moduleDetailsFromPath = require('module-details-from-path')\nconst { fileURLToPath } = require('url')\nconst { MessageChannel } = require('worker_threads')\n\nlet { isBuiltin } = require('module')\nif (!isBuiltin) {\n isBuiltin = () => true\n}\n\nconst {\n importHooks,\n specifiers,\n toHook\n} = require('./lib/register')\n\nfunction addHook (hook) {\n importHooks.push(hook)\n toHook.forEach(([name, namespace, specifier]) => hook(name, namespace, specifier))\n}\n\nfunction removeHook (hook) {\n const index = importHooks.indexOf(hook)\n if (index > -1) {\n importHooks.splice(index, 1)\n }\n}\n\nfunction callHookFn (hookFn, namespace, name, baseDir) {\n const newDefault = hookFn(namespace, name, baseDir)\n if (newDefault && newDefault !== namespace) {\n // Only ESM modules that actually export `default` can have it reassigned.\n // Some hooks return a value unconditionally; avoid crashing when the module\n // has no default export (see issue #188).\n if ('default' in namespace) {\n namespace.default = newDefault\n }\n }\n}\n\nlet sendModulesToLoader\n\n/**\n * EXPERIMENTAL\n * This feature is experimental and may change in minor versions.\n * **NOTE** This feature is incompatible with the {internals: true} Hook option.\n *\n * Creates a message channel with a port that can be used to add hooks to the\n * list of exclusively included modules.\n *\n * This can be used to only wrap modules that are Hook'ed, however modules need\n * to be hooked before they are imported.\n *\n * ```ts\n * import { register } from 'module'\n * import { Hook, createAddHookMessageChannel } from 'import-in-the-middle'\n *\n * const { registerOptions, waitForAllMessagesAcknowledged } = createAddHookMessageChannel()\n *\n * register('import-in-the-middle/hook.mjs', import.meta.url, registerOptions)\n *\n * Hook(['fs'], (exported, name, baseDir) => {\n * // Instrument the fs module\n * })\n *\n * // Ensure that the loader has acknowledged all the modules\n * // before we allow execution to continue\n * await waitForAllMessagesAcknowledged()\n * ```\n */\nfunction createAddHookMessageChannel () {\n const { port1, port2 } = new MessageChannel()\n let pendingAckCount = 0\n let resolveFn\n\n sendModulesToLoader = (modules) => {\n pendingAckCount++\n port1.postMessage(modules)\n }\n\n port1.on('message', () => {\n pendingAckCount--\n\n if (resolveFn && pendingAckCount <= 0) {\n resolveFn()\n }\n }).unref()\n\n function waitForAllMessagesAcknowledged () {\n // This timer is to prevent the process from exiting with code 13:\n // 13: Unsettled Top-Level Await.\n const timer = setInterval(() => { }, 1000)\n const promise = new Promise((resolve) => {\n resolveFn = resolve\n }).then(() => { clearInterval(timer) })\n\n if (pendingAckCount === 0) {\n resolveFn()\n }\n\n return promise\n }\n\n const addHookMessagePort = port2\n const registerOptions = { data: { addHookMessagePort, include: [] }, transferList: [addHookMessagePort] }\n\n return { registerOptions, addHookMessagePort, waitForAllMessagesAcknowledged }\n}\n\nfunction Hook (modules, options, hookFn) {\n if ((this instanceof Hook) === false) return new Hook(modules, options, hookFn)\n if (typeof modules === 'function') {\n hookFn = modules\n modules = null\n options = null\n } else if (typeof options === 'function') {\n hookFn = options\n options = null\n }\n const internals = options ? options.internals === true : false\n\n if (sendModulesToLoader && Array.isArray(modules)) {\n sendModulesToLoader(modules)\n }\n\n this._iitmHook = (name, namespace, specifier) => {\n const loadUrl = name\n const isNodeUrl = loadUrl.startsWith('node:')\n let filePath, baseDir\n\n if (isNodeUrl) {\n // Normalize builtin module name to *not* have 'node:' prefix, unless\n // required, as it is for 'node:test' and some others. `module.isBuiltin`\n // is available in all Node.js versions that have node:-only modules.\n const unprefixed = name.slice(5)\n if (isBuiltin(unprefixed)) {\n name = unprefixed\n }\n } else if (loadUrl.startsWith('file://')) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n filePath = fileURLToPath(name)\n name = filePath\n } catch (e) {}\n Error.stackTraceLimit = stackTraceLimit\n\n if (filePath) {\n const details = moduleDetailsFromPath(filePath)\n if (details) {\n name = details.name\n baseDir = details.basedir\n }\n }\n }\n\n if (modules) {\n for (const matchArg of modules) {\n if (filePath && matchArg === filePath) {\n // abspath match\n callHookFn(hookFn, namespace, filePath, undefined)\n } else if (matchArg === name) {\n if (!baseDir) {\n // built-in module (or unexpected non file:// name?)\n callHookFn(hookFn, namespace, name, baseDir)\n } else if (baseDir.endsWith(specifiers.get(loadUrl))) {\n // An import of the top-level module (e.g. `import 'ioredis'`).\n // Note: Slight behaviour difference from RITM. RITM uses\n // `require.resolve(name)` to see if filename is the module\n // main file, which will catch `require('ioredis/built/index.js')`.\n // The check here will not catch `import 'ioredis/built/index.js'`.\n callHookFn(hookFn, namespace, name, baseDir)\n } else if (internals) {\n const internalPath = name + path.sep + path.relative(baseDir, filePath)\n callHookFn(hookFn, namespace, internalPath, baseDir)\n }\n } else if (matchArg === specifier) {\n callHookFn(hookFn, namespace, specifier, baseDir)\n }\n }\n } else {\n callHookFn(hookFn, namespace, name, baseDir)\n }\n }\n\n addHook(this._iitmHook)\n}\n\nHook.prototype.unhook = function () {\n removeHook(this._iitmHook)\n}\n\nmodule.exports = Hook\nmodule.exports.Hook = Hook\nmodule.exports.addHook = addHook\nmodule.exports.removeHook = removeHook\nmodule.exports.createAddHookMessageChannel = createAddHookMessageChannel\n", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0;\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nfunction safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) {\n let error;\n let result;\n try {\n result = execute();\n }\n catch (e) {\n error = e;\n }\n finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\nexports.safeExecuteInTheMiddle = safeExecuteInTheMiddle;\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nasync function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) {\n let error;\n let result;\n try {\n result = await execute();\n }\n catch (e) {\n error = e;\n }\n finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\nexports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync;\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nfunction isWrapped(func) {\n return (typeof func === 'function' &&\n typeof func.__original === 'function' &&\n typeof func.__unwrap === 'function' &&\n func.__wrapped === true);\n}\nexports.isWrapped = isWrapped;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationBase = void 0;\nconst path = require(\"path\");\nconst util_1 = require(\"util\");\nconst semver_1 = require(\"../../semver\");\nconst shimmer_1 = require(\"../../shimmer\");\nconst instrumentation_1 = require(\"../../instrumentation\");\nconst RequireInTheMiddleSingleton_1 = require(\"./RequireInTheMiddleSingleton\");\nconst import_in_the_middle_1 = require(\"import-in-the-middle\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst fs_1 = require(\"fs\");\nconst utils_1 = require(\"../../utils\");\n/**\n * Base abstract class for instrumenting node plugins\n */\nclass InstrumentationBase extends instrumentation_1.InstrumentationAbstract {\n _modules;\n _hooks = [];\n _requireInTheMiddleSingleton = RequireInTheMiddleSingleton_1.RequireInTheMiddleSingleton.getInstance();\n _enabled = false;\n constructor(instrumentationName, instrumentationVersion, config) {\n super(instrumentationName, instrumentationVersion, config);\n let modules = this.init();\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n this._modules = modules || [];\n if (this._config.enabled) {\n this.enable();\n }\n }\n _wrap = (moduleExports, name, wrapper) => {\n if ((0, utils_1.isWrapped)(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!util_1.types.isProxy(moduleExports)) {\n return (0, shimmer_1.wrap)(moduleExports, name, wrapper);\n }\n else {\n const wrapped = (0, shimmer_1.wrap)(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n _unwrap = (moduleExports, name) => {\n if (!util_1.types.isProxy(moduleExports)) {\n return (0, shimmer_1.unwrap)(moduleExports, name);\n }\n else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n _massWrap = (moduleExportsArray, names, wrapper) => {\n if (!moduleExportsArray) {\n api_1.diag.error('must provide one or more modules to patch');\n return;\n }\n else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n if (!(names && Array.isArray(names))) {\n api_1.diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n _massUnwrap = (moduleExportsArray, names) => {\n if (!moduleExportsArray) {\n api_1.diag.error('must provide one or more modules to patch');\n return;\n }\n else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n if (!(names && Array.isArray(names))) {\n api_1.diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n _warnOnPreloadedModules() {\n this._modules.forEach((module) => {\n const { name } = module;\n try {\n const resolvedModule = require.resolve(name);\n if (require.cache[resolvedModule]) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`);\n }\n }\n catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n _extractPackageVersion(baseDir) {\n try {\n const json = (0, fs_1.readFileSync)(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n }\n catch {\n api_1.diag.warn('Failed extracting version', baseDir);\n }\n return undefined;\n }\n _onRequire(module, exports, name, baseDir) {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', {\n module: module.name,\n });\n return module.patch(exports);\n }\n }\n return exports;\n }\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (isSupported(module.supportedVersions, version, module.includePrerelease)) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for module on require hook', {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n });\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(f => f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease));\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n });\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion);\n }\n return patchedExports;\n }, exports);\n }\n enable() {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', {\n module: module.name,\n version: module.moduleVersion,\n });\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n });\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new require_in_the_middle_1.Hook([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n this._hooks.push(hook);\n const esmHook = new import_in_the_middle_1.Hook([module.name], { internals: true }, hookFn);\n this._hooks.push(esmHook);\n }\n }\n disable() {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', {\n module: module.name,\n version: module.moduleVersion,\n });\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n });\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n isEnabled() {\n return this._enabled;\n }\n}\nexports.InstrumentationBase = InstrumentationBase;\nfunction isSupported(supportedVersions, version, includePrerelease) {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n return supportedVersions.some(supportedVersion => {\n return (0, semver_1.satisfies)(version, supportedVersion, { includePrerelease });\n });\n}\n//# sourceMappingURL=instrumentation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nvar path_1 = require(\"path\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return path_1.normalize; } });\n//# sourceMappingURL=normalize.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } });\nvar normalize_1 = require(\"./normalize\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return normalize_1.normalize; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return node_1.InstrumentationBase; } });\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return node_1.normalize; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleDefinition = void 0;\nclass InstrumentationNodeModuleDefinition {\n files;\n name;\n supportedVersions;\n patch;\n unpatch;\n constructor(name, supportedVersions, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch, files) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\nexports.InstrumentationNodeModuleDefinition = InstrumentationNodeModuleDefinition;\n//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleFile = void 0;\nconst index_1 = require(\"./platform/index\");\nclass InstrumentationNodeModuleFile {\n name;\n supportedVersions;\n patch;\n unpatch;\n constructor(name, supportedVersions, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch) {\n this.name = (0, index_1.normalize)(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\nexports.InstrumentationNodeModuleFile = InstrumentationNodeModuleFile;\n//# sourceMappingURL=instrumentationNodeModuleFile.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = void 0;\nvar SemconvStability;\n(function (SemconvStability) {\n /** Emit only stable semantic conventions. */\n SemconvStability[SemconvStability[\"STABLE\"] = 1] = \"STABLE\";\n /** Emit only old semantic conventions. */\n SemconvStability[SemconvStability[\"OLD\"] = 2] = \"OLD\";\n /** Emit both stable and old semantic conventions. */\n SemconvStability[SemconvStability[\"DUPLICATE\"] = 3] = \"DUPLICATE\";\n})(SemconvStability = exports.SemconvStability || (exports.SemconvStability = {}));\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nfunction semconvStabilityFromStr(namespace, str) {\n let semconvStability = SemconvStability.OLD;\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n }\n else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n return semconvStability;\n}\nexports.semconvStabilityFromStr = semconvStabilityFromStr;\n//# sourceMappingURL=semconvStability.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = exports.isWrapped = exports.InstrumentationNodeModuleFile = exports.InstrumentationNodeModuleDefinition = exports.InstrumentationBase = exports.registerInstrumentations = void 0;\nvar autoLoader_1 = require(\"./autoLoader\");\nObject.defineProperty(exports, \"registerInstrumentations\", { enumerable: true, get: function () { return autoLoader_1.registerInstrumentations; } });\nvar index_1 = require(\"./platform/index\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return index_1.InstrumentationBase; } });\nvar instrumentationNodeModuleDefinition_1 = require(\"./instrumentationNodeModuleDefinition\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleDefinition\", { enumerable: true, get: function () { return instrumentationNodeModuleDefinition_1.InstrumentationNodeModuleDefinition; } });\nvar instrumentationNodeModuleFile_1 = require(\"./instrumentationNodeModuleFile\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleFile\", { enumerable: true, get: function () { return instrumentationNodeModuleFile_1.InstrumentationNodeModuleFile; } });\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"isWrapped\", { enumerable: true, get: function () { return utils_1.isWrapped; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddle\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddle; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddleAsync\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddleAsync; } });\nvar semconvStability_1 = require(\"./semconvStability\");\nObject.defineProperty(exports, \"SemconvStability\", { enumerable: true, get: function () { return semconvStability_1.SemconvStability; } });\nObject.defineProperty(exports, \"semconvStabilityFromStr\", { enumerable: true, get: function () { return semconvStability_1.semconvStabilityFromStr; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.range = exports.balanced = void 0;\nconst balanced = (a, b, str) => {\n const ma = a instanceof RegExp ? maybeMatch(a, str) : a;\n const mb = b instanceof RegExp ? maybeMatch(b, str) : b;\n const r = ma !== null && mb != null && (0, exports.range)(ma, mb, str);\n return (r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + ma.length, r[1]),\n post: str.slice(r[1] + mb.length),\n });\n};\nexports.balanced = balanced;\nconst maybeMatch = (reg, str) => {\n const m = str.match(reg);\n return m ? m[0] : null;\n};\nconst range = (a, b, str) => {\n let begs, beg, left, right = undefined, result;\n let ai = str.indexOf(a);\n let bi = str.indexOf(b, ai + 1);\n let i = ai;\n if (ai >= 0 && bi > 0) {\n if (a === b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n while (i >= 0 && !result) {\n if (i === ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n }\n else if (begs.length === 1) {\n const r = begs.pop();\n if (r !== undefined)\n result = [r, bi];\n }\n else {\n beg = begs.pop();\n if (beg !== undefined && beg < left) {\n left = beg;\n right = bi;\n }\n bi = str.indexOf(b, i + 1);\n }\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n if (begs.length && right !== undefined) {\n result = [left, right];\n }\n }\n return result;\n};\nexports.range = range;\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EXPANSION_MAX = void 0;\nexports.expand = expand;\nconst balanced_match_1 = require(\"balanced-match\");\nconst escSlash = '\\0SLASH' + Math.random() + '\\0';\nconst escOpen = '\\0OPEN' + Math.random() + '\\0';\nconst escClose = '\\0CLOSE' + Math.random() + '\\0';\nconst escComma = '\\0COMMA' + Math.random() + '\\0';\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0';\nconst escSlashPattern = new RegExp(escSlash, 'g');\nconst escOpenPattern = new RegExp(escOpen, 'g');\nconst escClosePattern = new RegExp(escClose, 'g');\nconst escCommaPattern = new RegExp(escComma, 'g');\nconst escPeriodPattern = new RegExp(escPeriod, 'g');\nconst slashPattern = /\\\\\\\\/g;\nconst openPattern = /\\\\{/g;\nconst closePattern = /\\\\}/g;\nconst commaPattern = /\\\\,/g;\nconst periodPattern = /\\\\\\./g;\nexports.EXPANSION_MAX = 100_000;\nfunction numeric(str) {\n return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);\n}\nfunction escapeBraces(str) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod);\n}\nfunction unescapeBraces(str) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.');\n}\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str) {\n if (!str) {\n return [''];\n }\n const parts = [];\n const m = (0, balanced_match_1.balanced)('{', '}', str);\n if (!m) {\n return str.split(',');\n }\n const { pre, body, post } = m;\n const p = pre.split(',');\n p[p.length - 1] += '{' + body + '}';\n const postParts = parseCommaParts(post);\n if (post.length) {\n ;\n p[p.length - 1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n parts.push.apply(parts, p);\n return parts;\n}\nfunction expand(str, options = {}) {\n if (!str) {\n return [];\n }\n const { max = exports.EXPANSION_MAX } = options;\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2);\n }\n return expand_(escapeBraces(str), max, true).map(unescapeBraces);\n}\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\nfunction expand_(str, max, isTop) {\n /** @type {string[]} */\n const expansions = [];\n const m = (0, balanced_match_1.balanced)('{', '}', str);\n if (!m)\n return [str];\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre;\n const post = m.post.length ? expand_(m.post, max, false) : [''];\n if (/\\$$/.test(m.pre)) {\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n }\n else {\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n const isSequence = isNumericSequence || isAlphaSequence;\n const isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand_(str, max, true);\n }\n return [str];\n }\n let n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n }\n else {\n n = parseCommaParts(m.body);\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace);\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p);\n }\n /* c8 ignore stop */\n }\n }\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n let N;\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0]);\n const y = numeric(n[1]);\n const width = Math.max(n[0].length, n[1].length);\n let incr = n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1;\n let test = lte;\n const reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n const pad = n.some(isPadded);\n N = [];\n for (let i = x; test(i, y); i += incr) {\n let c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\') {\n c = '';\n }\n }\n else {\n c = String(i);\n if (pad) {\n const need = width - c.length;\n if (need > 0) {\n const z = new Array(need + 1).join('0');\n if (i < 0) {\n c = '-' + z + c.slice(1);\n }\n else {\n c = z + c;\n }\n }\n }\n }\n N.push(c);\n }\n }\n else {\n N = [];\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j], max, false));\n }\n }\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion);\n }\n }\n }\n }\n return expansions;\n}\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertValidPattern = void 0;\nconst MAX_PATTERN_LENGTH = 1024 * 64;\nconst assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\nexports.assertValidPattern = assertValidPattern;\n//# sourceMappingURL=assert-valid-pattern.js.map", + "\"use strict\";\n// translate the various posix character classes into unicode properties\n// this works across all unicode locales\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseClass = void 0;\n// { : [, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nconst parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n : ranges.length ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\nexports.parseClass = parseClass;\n//# sourceMappingURL=brace-expressions.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unescape = void 0;\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\nconst unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n .replace(/\\\\([^\\/])/g, '$1');\n }\n return windowsPathsNoEscape ?\n s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n .replace(/\\\\([^\\/{}])/g, '$1');\n};\nexports.unescape = unescape;\n//# sourceMappingURL=unescape.js.map", + "\"use strict\";\n// parse a single path portion\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AST = void 0;\nconst brace_expressions_js_1 = require(\"./brace-expressions.js\");\nconst unescape_js_1 = require(\"./unescape.js\");\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n]);\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n]);\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n]);\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nlet ID = 0;\nclass AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n id = ++ID;\n get depth() {\n return (this.#parent?.depth ?? -1) + 1;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n };\n }\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n if (this.#toString !== undefined)\n return this.#toString;\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''));\n }\n else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n }\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' &&\n !(p instanceof _a && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof _a && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new _a(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt, extDepth) {\n const maxDepth = opt.maxExtglobRecursion ?? 2;\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth;\n if (doRecurse) {\n ast.push(acc);\n acc = '';\n const ext = new _a(c, ast);\n i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new _a(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n part.push(acc);\n acc = '';\n const ext = new _a(c, part);\n part.push(ext);\n i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new _a(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n #canAdoptWithSpace(child) {\n return this.#canAdopt(child, adoptionWithSpaceMap);\n }\n #canAdopt(child, map = adoptionMap) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canAdoptType(gc.type, map);\n }\n #canAdoptType(c, map = adoptionAnyMap) {\n return !!map.get(this.type)?.includes(c);\n }\n #adoptWithSpace(child, index) {\n const gc = child.#parts[0];\n const blank = new _a(null, gc, this.options);\n blank.#parts.push('');\n gc.push(blank);\n this.#adopt(child, index);\n }\n #adopt(child, index) {\n const gc = child.#parts[0];\n this.#parts.splice(index, 1, ...gc.#parts);\n for (const p of gc.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.#toString = undefined;\n }\n #canUsurpType(c) {\n const m = usurpMap.get(this.type);\n return !!(m?.has(c));\n }\n #canUsurp(child) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canUsurpType(gc.type);\n }\n #usurp(child) {\n const m = usurpMap.get(this.type);\n const gc = child.#parts[0];\n const nt = m?.get(gc.type);\n /* c8 ignore start - impossible */\n if (!nt)\n return false;\n /* c8 ignore stop */\n this.#parts = gc.#parts;\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this;\n }\n }\n this.type = nt;\n this.#toString = undefined;\n this.#emptyExt = false;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new _a(null, undefined, options);\n _a.#parseAST(pattern, ast, 0, options, 0);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this) {\n this.#flatten();\n this.#fillNegs();\n }\n if (!isExtglobAST(this)) {\n const noEmpty = this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string');\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string' ?\n _a.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n (0, unescape_js_1.unescape)(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n const me = this;\n me.#parts = [s];\n me.type = null;\n me.#hasMagic = undefined;\n return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];\n }\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n (0, unescape_js_1.unescape)(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten();\n }\n }\n }\n else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0;\n let done = false;\n do {\n done = true;\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i];\n if (typeof c === 'object') {\n c.#flatten();\n if (this.#canAdopt(c)) {\n done = false;\n this.#adopt(c, i);\n }\n else if (this.#canAdoptWithSpace(c)) {\n done = false;\n this.#adoptWithSpace(c, i);\n }\n else if (this.#canUsurp(c)) {\n done = false;\n this.#usurp(c);\n }\n }\n }\n } while (!done && ++iterations < 10);\n }\n this.#toString = undefined;\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n continue;\n }\n if (c === '*') {\n if (inStar)\n continue;\n inStar = true;\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n hasMagic = true;\n continue;\n }\n else {\n inStar = false;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n continue;\n }\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, (0, unescape_js_1.unescape)(glob), !!hasMagic, uflag];\n }\n}\nexports.AST = AST;\n_a = AST;\n//# sourceMappingURL=ast.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape = void 0;\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nconst escape = (s, { windowsPathsNoEscape = false, magicalBraces = false, } = {}) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&');\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\nexports.escape = escape;\n//# sourceMappingURL=escape.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;\nconst brace_expansion_1 = require(\"brace-expansion\");\nconst assert_valid_pattern_js_1 = require(\"./assert-valid-pattern.js\");\nconst ast_js_1 = require(\"./ast.js\");\nconst escape_js_1 = require(\"./escape.js\");\nconst unescape_js_1 = require(\"./unescape.js\");\nconst minimatch = (p, pattern, options = {}) => {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\nexports.minimatch = minimatch;\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process ?\n (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nexports.minimatch.sep = exports.sep;\nexports.GLOBSTAR = Symbol('globstar **');\nexports.minimatch.GLOBSTAR = exports.GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nconst filter = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options);\nexports.filter = filter;\nexports.minimatch.filter = exports.filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nconst defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return exports.minimatch;\n }\n const orig = exports.minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: exports.GLOBSTAR,\n });\n};\nexports.defaults = defaults;\nexports.minimatch.defaults = exports.defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nconst braceExpand = (pattern, options = {}) => {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n return (0, brace_expansion_1.expand)(pattern, { max: options.braceExpandMax });\n};\nexports.braceExpand = braceExpand;\nexports.minimatch.braceExpand = exports.braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nconst makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nexports.makeRe = makeRe;\nexports.minimatch.makeRe = exports.makeRe;\nconst match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options);\n list = list.filter(f => mm.match(f));\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n return list;\n};\nexports.match = match;\nexports.minimatch.match = exports.match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nclass Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n maxGlobstarRecursion;\n regexp;\n constructor(pattern, options = {}) {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n options = options || {};\n this.options = options;\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n // avoid the annoying deprecation flag lol\n const awe = ('allowWindow' + 'sEscape');\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options[awe] === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined ?\n options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n if (!pattern) {\n this.empty = true;\n return;\n }\n // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [\n ...s.slice(0, 4),\n ...s.slice(4).map(ss => this.parse(ss)),\n ];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n //

// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3\n                : fileDrive ? 0\n                    : undefined;\n            const pdi = patternUNC ? 3\n                : patternDrive ? 0\n                    : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                // start matching at the drive letter index of each\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // don't need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(exports.GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        // split the pattern into head, tail, and middle of ** delimited parts\n        const firstgs = pattern.indexOf(exports.GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(exports.GLOBSTAR);\n        // split the pattern up into globstar-delimited sections\n        // the tail has to be at the end, and the others just have\n        // to be found in order from the head.\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        // check the head, from the current file/pattern index.\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n                return false;\n            }\n            fileIndex += head.length;\n            patternIndex += head.length;\n        }\n        // now we know the head matches!\n        // if the last portion is not empty, it MUST match the end\n        // check the tail\n        let fileTailMatch = 0;\n        if (tail.length) {\n            // if head + tail > file, then we cannot possibly match\n            if (tail.length + fileIndex > file.length)\n                return false;\n            // try to match the tail\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                // affordance for stuff like a/**/* matching a/b/\n                // if the last file portion is '', and there's more to the pattern\n                // then try without the '' bit.\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n                    return false;\n                }\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        // now we know the tail matches!\n        // the middle is zero or more portions wrapped in **, possibly\n        // containing more ** sections.\n        // so a/**/b/**/c/**/d has become **/b/**/c/**\n        // if it's empty, it means a/**/b, just verify we have no bad dots\n        // if there's no tail, so it ends on /**, then we must have *something*\n        // after the head, or it's not a matc\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' ||\n                    f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            // in partial mode, we just need to get past all file parts\n            return partial || sawSome;\n        }\n        // now we know that there's one or more body sections, which can\n        // be matched anywhere from the 0 index (because the head was pruned)\n        // through to the length-fileTailMatch index.\n        // split the body up into sections, and note the minimum index it can\n        // be found at (start with the length of all previous segments)\n        // [section, before, after]\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === exports.GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    // return false for \"nope, not matching\"\n    // return null for \"not matching, cannot keep trying\"\n    #matchGlobStarBodySections(file, \n    // pattern section, last possible position for it\n    bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        // take the first body segment, and walk from fileIndex to its \"after\"\n        // value at the end\n        // If it doesn't match at that position, we increment, until we hit\n        // that final possible position, and give up.\n        // If it does match, then advance and try to rest.\n        // If any of them fail we keep walking forward.\n        // this is still a bit recursively painful, but it's more constrained\n        // than previous implementations, because we never test something that\n        // can't possibly be a valid matching condition.\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            // just make sure that there's no bad dots\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' ||\n                    f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        // have a non-globstar body section to test\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            // if limit exceeded, no match. intentional false negative,\n            // acceptable break in correctness for security.\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                // match! see if the rest match. if so, we're done!\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false) {\n                    return sub;\n                }\n            }\n            const f = file[fileIndex];\n            if (f === '.' ||\n                f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        // walked off. no point continuing\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex,\n            pi = patternIndex,\n            fl = file.length,\n            pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false || p === exports.GLOBSTAR) {\n                return false;\n            }\n            /* c8 ignore stop */\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return (0, exports.braceExpand)(this.pattern, this.options);\n    }\n    parse(pattern) {\n        (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return exports.GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase ?\n                options.dot ?\n                    starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase ?\n                options.dot ?\n                    qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = ast_js_1.AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar ? star\n            : options.dot ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return (typeof p === 'string' ? regExpEscape(p)\n                    : p === exports.GLOBSTAR ? exports.GLOBSTAR\n                        : p._src);\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== exports.GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?';\n                }\n                else if (next !== exports.GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = exports.GLOBSTAR;\n                }\n            });\n            const filtered = pp.filter(p => p !== exports.GLOBSTAR);\n            // For partial matches, we need to make the pattern match\n            // any prefix of the full path. We do this by generating\n            // alternative patterns that match progressively longer prefixes.\n            if (this.partial && filtered.length >= 1) {\n                const prefixes = [];\n                for (let i = 1; i <= filtered.length; i++) {\n                    prefixes.push(filtered.slice(0, i).join('/'));\n                }\n                return '(?:' + prefixes.join('|') + ')';\n            }\n            return filtered.join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // In partial mode, '/' should always match as it's a valid prefix for any pattern\n        if (this.partial) {\n            re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$';\n        }\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return exports.minimatch.defaults(def).Minimatch;\n    }\n}\nexports.Minimatch = Minimatch;\n/* c8 ignore start */\nvar ast_js_2 = require(\"./ast.js\");\nObject.defineProperty(exports, \"AST\", { enumerable: true, get: function () { return ast_js_2.AST; } });\nvar escape_js_2 = require(\"./escape.js\");\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return escape_js_2.escape; } });\nvar unescape_js_2 = require(\"./unescape.js\");\nObject.defineProperty(exports, \"unescape\", { enumerable: true, get: function () { return unescape_js_2.unescape; } });\n/* c8 ignore stop */\nexports.minimatch.AST = ast_js_1.AST;\nexports.minimatch.Minimatch = Minimatch;\nexports.minimatch.escape = escape_js_1.escape;\nexports.minimatch.unescape = unescape_js_1.unescape;\n//# sourceMappingURL=index.js.map",
+    "'use strict'\nconst dc = require('node:diagnostics_channel')\nconst { context, trace, SpanStatusCode, propagation, diag } = require('@opentelemetry/api')\nconst { getRPCMetadata, RPCType } = require('@opentelemetry/core')\nconst {\n  ATTR_HTTP_ROUTE,\n  ATTR_HTTP_RESPONSE_STATUS_CODE,\n  ATTR_HTTP_REQUEST_METHOD,\n  ATTR_URL_PATH\n} = require('@opentelemetry/semantic-conventions')\nconst { InstrumentationBase } = require('@opentelemetry/instrumentation')\n\nconst {\n  version: PACKAGE_VERSION,\n  name: PACKAGE_NAME\n} = require('./package.json')\n\n// Constants\nconst SUPPORTED_VERSIONS = '>=4.0.0 <6'\nconst FASTIFY_HOOKS = [\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preHandler',\n  'preSerialization',\n  'onSend',\n  'onResponse',\n  'onError'\n]\nconst ATTRIBUTE_NAMES = {\n  HOOK_NAME: 'hook.name',\n  FASTIFY_TYPE: 'fastify.type',\n  HOOK_CALLBACK_NAME: 'hook.callback.name',\n  ROOT: 'fastify.root'\n}\nconst HOOK_TYPES = {\n  ROUTE: 'route-hook',\n  INSTANCE: 'hook',\n  HANDLER: 'request-handler'\n}\nconst ANONYMOUS_FUNCTION_NAME = 'anonymous'\n\n// Symbols\nconst kInstrumentation = Symbol('fastify otel instance')\nconst kRequestSpan = Symbol('fastify otel request spans')\nconst kRequestContext = Symbol('fastify otel request context')\nconst kAddHookOriginal = Symbol('fastify otel addhook original')\nconst kSetNotFoundOriginal = Symbol('fastify otel setnotfound original')\nconst kIgnorePaths = Symbol('fastify otel ignore path')\nconst kRecordExceptions = Symbol('fastify otel record exceptions')\n\nclass FastifyOtelInstrumentation extends InstrumentationBase {\n  logger = null\n  _requestHook = null\n  _lifecycleHook = null\n\n  constructor (config) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config)\n    this.logger = diag.createComponentLogger({ namespace: PACKAGE_NAME })\n    this[kIgnorePaths] = null\n    this[kRecordExceptions] = true\n\n    if (config?.recordExceptions != null) {\n      if (typeof config.recordExceptions !== 'boolean') {\n        throw new TypeError('recordExceptions must be a boolean')\n      }\n\n      this[kRecordExceptions] = config.recordExceptions\n    }\n    if (typeof config?.requestHook === 'function') {\n      this._requestHook = config.requestHook\n    }\n    if (typeof config?.lifecycleHook === 'function') {\n      this._lifecycleHook = config.lifecycleHook\n    }\n\n    if (config?.ignorePaths != null || process.env.OTEL_FASTIFY_IGNORE_PATHS != null) {\n      const ignorePaths = config?.ignorePaths ?? process.env.OTEL_FASTIFY_IGNORE_PATHS\n\n      if ((typeof ignorePaths !== 'string' || ignorePaths.length === 0) && typeof ignorePaths !== 'function') {\n        throw new TypeError(\n          'ignorePaths must be a string or a function'\n        )\n      }\n\n      let globMatcher = null\n\n      this[kIgnorePaths] = (routeOptions) => {\n        if (typeof ignorePaths === 'function') {\n          return ignorePaths(routeOptions)\n        } else {\n          // Using minimatch to match the path until path.matchesGlob is out of experimental\n          // path.matchesGlob uses minimatch internally\n          if (globMatcher == null) {\n            globMatcher = require('minimatch').minimatch\n          }\n\n          return globMatcher(routeOptions.url, ignorePaths)\n        }\n      }\n    }\n  }\n\n  enable () {\n    if (this._handleInitialization === undefined && this.getConfig().registerOnInitialization) {\n      this._handleInitialization = (message) => {\n        // Cannot use `fastify.register(plugin)` because it is lazily executed and\n        // thus requires user code to await fastify instance first.\n        this.plugin()(message.fastify, undefined, () => {})\n\n        // Add an empty plugin to keep `app.hasPlugin('@fastify/otel')` invariant\n        const emptyPlugin = (_, __, done) => {\n          done()\n        }\n        emptyPlugin[Symbol.for('skip-override')] = true\n        emptyPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n        message.fastify.register(emptyPlugin)\n      }\n      dc.subscribe('fastify.initialization', this._handleInitialization)\n    }\n    return super.enable()\n  }\n\n  disable () {\n    if (this._handleInitialization) {\n      dc.unsubscribe('fastify.initialization', this._handleInitialization)\n      this._handleInitialization = undefined\n    }\n    return super.disable()\n  }\n\n  // We do not do patching in this instrumentation\n  init () {\n    return []\n  }\n\n  plugin () {\n    const instrumentation = this\n\n    FastifyInstrumentationPlugin[Symbol.for('skip-override')] = true\n    FastifyInstrumentationPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n    FastifyInstrumentationPlugin[Symbol.for('plugin-meta')] = {\n      fastify: SUPPORTED_VERSIONS,\n      name: '@fastify/otel',\n    }\n\n    return FastifyInstrumentationPlugin\n\n    function FastifyInstrumentationPlugin (instance, opts, done) {\n      instance.decorate(kInstrumentation, instrumentation)\n      // addHook and notfoundHandler are essentially inherited from the prototype\n      // what is important is to bound it to the right instance\n      instance.decorate(kAddHookOriginal, instance.addHook)\n      instance.decorate(kSetNotFoundOriginal, instance.setNotFoundHandler)\n      instance.decorateRequest('opentelemetry', function openetelemetry () {\n        const ctx = this[kRequestContext]\n        const span = this[kRequestSpan]\n\n        return {\n          enabled: this.routeOptions.config?.otel !== false,\n          span,\n          tracer: instrumentation.tracer,\n          context: ctx,\n          inject: (carrier, setter) => {\n            return propagation.inject(ctx, carrier, setter)\n          },\n          extract: (carrier, getter) => {\n            return propagation.extract(ctx, carrier, getter)\n          }\n        }\n      })\n      instance.decorateRequest(kRequestSpan, null)\n      instance.decorateRequest(kRequestContext, null)\n\n      instance.addHook('onRoute', function otelWireRoute (routeOptions) {\n        if (instrumentation[kIgnorePaths]?.(routeOptions) === true) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it matches the ignore path`\n          )\n          return\n        }\n\n        if (routeOptions.config?.otel === false) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it is disabled`\n          )\n\n          return\n        }\n\n        for (const hook of FASTIFY_HOOKS) {\n          if (routeOptions[hook] != null) {\n            const handlerLike = routeOptions[hook]\n\n            if (typeof handlerLike === 'function') {\n              routeOptions[hook] = handlerWrapper(handlerLike, hook, {\n                [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                [ATTR_HTTP_ROUTE]: routeOptions.url,\n                [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                  handlerLike.name?.length > 0\n                    ? handlerLike.name\n                    : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n              })\n            } else if (Array.isArray(handlerLike)) {\n              const wrappedHandlers = []\n\n              for (const handler of handlerLike) {\n                wrappedHandlers.push(\n                  handlerWrapper(handler, hook, {\n                    [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                    [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                    [ATTR_HTTP_ROUTE]: routeOptions.url,\n                    [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                      handler.name?.length > 0\n                        ? handler.name\n                        : ANONYMOUS_FUNCTION_NAME\n                  })\n                )\n              }\n\n              routeOptions[hook] = wrappedHandlers\n            }\n          }\n        }\n\n        // We always want to add the onSend hook to the route to be executed last\n        if (routeOptions.onSend != null) {\n          routeOptions.onSend = Array.isArray(routeOptions.onSend)\n            ? [...routeOptions.onSend, finalizeResponseSpanHook]\n            : [routeOptions.onSend, finalizeResponseSpanHook]\n        } else {\n          routeOptions.onSend = finalizeResponseSpanHook\n        }\n\n        // We always want to add the onError hook to the route to be executed last\n        if (routeOptions.onError != null) {\n          routeOptions.onError = Array.isArray(routeOptions.onError)\n            ? [...routeOptions.onError, recordErrorInSpanHook]\n            : [routeOptions.onError, recordErrorInSpanHook]\n        } else {\n          routeOptions.onError = recordErrorInSpanHook\n        }\n\n        routeOptions.handler = handlerWrapper(routeOptions.handler, 'handler', {\n          [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route-handler`,\n          [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.HANDLER,\n          [ATTR_HTTP_ROUTE]: routeOptions.url,\n          [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n            routeOptions.handler.name.length > 0\n              ? routeOptions.handler.name\n              : ANONYMOUS_FUNCTION_NAME\n        })\n      })\n\n      instance.addHook('onRequest', function startRequestSpanHook (request, _reply, hookDone) {\n        if (\n          this[kInstrumentation].isEnabled() === false ||\n          request.routeOptions.config?.otel === false\n        ) {\n          return hookDone()\n        }\n\n        if (this[kInstrumentation][kIgnorePaths]?.({\n          url: request.url,\n          method: request.method,\n        }) === true) {\n          this[kInstrumentation].logger.debug(\n            `Ignoring request ${request.method} ${request.url} because it matches the ignore path`\n          )\n          return hookDone()\n        }\n\n        let ctx = context.active()\n\n        if (trace.getSpan(ctx) == null) {\n          ctx = propagation.extract(ctx, request.headers)\n        }\n\n        const rpcMetadata = getRPCMetadata(ctx)\n\n        if (\n          request.routeOptions.url != null &&\n          rpcMetadata?.type === RPCType.HTTP\n        ) {\n          rpcMetadata.route = request.routeOptions.url\n        }\n\n        const attributes = {\n          [ATTRIBUTE_NAMES.ROOT]: '@fastify/otel',\n          [ATTR_HTTP_REQUEST_METHOD]: request.method,\n          [ATTR_URL_PATH]: request.url\n        }\n\n        if (request.routeOptions.url != null) {\n          attributes[ATTR_HTTP_ROUTE] = request.routeOptions.url\n        }\n\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = this[kInstrumentation].tracer.startSpan('request', {\n          attributes\n        }, ctx)\n\n        try {\n          this[kInstrumentation]._requestHook?.(span, request)\n        } catch (err) {\n          this[kInstrumentation].logger.error({ err }, 'requestHook threw')\n        }\n\n        request[kRequestContext] = trace.setSpan(ctx, span)\n        request[kRequestSpan] = span\n\n        context.with(request[kRequestContext], () => {\n          hookDone()\n        })\n      })\n\n      // onResponse is the last hook to be executed, only added for 404 handlers\n      instance.addHook('onResponse', function finalizeNotFoundSpanHook (request, reply, hookDone) {\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setStatus({\n            code: SpanStatusCode.OK,\n            message: 'OK'\n          })\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: 404\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone()\n      })\n\n      instance.addHook = addHookPatched\n      instance.setNotFoundHandler = setNotFoundHandlerPatched\n\n      done()\n\n      function finalizeResponseSpanHook (request, reply, payload, hookDone) {\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          if (reply.statusCode < 500) {\n            span.setStatus({\n              code: SpanStatusCode.OK,\n              message: 'OK'\n            })\n          }\n\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone(null, payload)\n      }\n\n      function recordErrorInSpanHook (request, reply, error, hookDone) {\n        /** @type {Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: error.message\n          })\n          if (instrumentation[kRecordExceptions] !== false) {\n            span.recordException(error)\n          }\n        }\n\n        hookDone()\n      }\n\n      function addHookPatched (name, hook) {\n        const addHookOriginal = this[kAddHookOriginal]\n\n        if (FASTIFY_HOOKS.includes(name)) {\n          return addHookOriginal.call(\n            this,\n            name,\n            handlerWrapper(hook, name, {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - ${name}`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hook.name?.length > 0\n                  ? hook.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          )\n        } else {\n          return addHookOriginal.call(this, name, hook)\n        }\n      }\n\n      function setNotFoundHandlerPatched (hooks, handler) {\n        const setNotFoundHandlerOriginal = this[kSetNotFoundOriginal]\n        if (typeof hooks === 'function') {\n          handler = handlerWrapper(hooks, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              hooks.name?.length > 0\n                ? hooks.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, handler)\n        } else {\n          if (hooks.preValidation != null) {\n            hooks.preValidation = handlerWrapper(hooks.preValidation, 'notFoundHandler - preValidation', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preValidation`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preValidation.name?.length > 0\n                  ? hooks.preValidation.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          if (hooks.preHandler != null) {\n            hooks.preHandler = handlerWrapper(hooks.preHandler, 'notFoundHandler - preHandler', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preHandler`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preHandler.name?.length > 0\n                  ? hooks.preHandler.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          handler = handlerWrapper(handler, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              handler.name?.length > 0\n                ? handler.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, hooks, handler)\n        }\n      }\n\n      function handlerWrapper (handler, hookName, spanAttributes = {}) {\n        return function handlerWrapped (...args) {\n          /** @type {FastifyOtelInstrumentation} */\n          const instrumentation = this[kInstrumentation]\n          const [request] = args\n\n          if (instrumentation.isEnabled() === false || request.routeOptions.config?.otel === false) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it is disabled`\n            )\n            return handler.call(this, ...args)\n          }\n\n          if (instrumentation[kIgnorePaths]?.({\n            url: request.url,\n            method: request.method,\n          }) === true) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it matches the ignore path`\n            )\n            return handler.call(this, ...args)\n          }\n\n          /* c8 ignore next */\n          const ctx = request[kRequestContext] ?? context.active()\n          const handlerName = handler.name?.length > 0\n            ? handler.name\n            : this.pluginName /* c8 ignore next */ ?? ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n\n          const span = instrumentation.tracer.startSpan(\n            `${hookName} - ${handlerName}`,\n            {\n              attributes: spanAttributes\n            },\n            ctx\n          )\n\n          if (instrumentation._lifecycleHook != null) {\n            try {\n              instrumentation._lifecycleHook(span, {\n                hookName,\n                request,\n                handler: handlerName\n              })\n            } catch (err) {\n              instrumentation.logger.error({ err }, 'Execution of lifecycleHook failed')\n            }\n          }\n\n          return context.with(\n            trace.setSpan(ctx, span),\n            function () {\n              try {\n                const res = handler.call(this, ...args)\n\n                if (typeof res?.then === 'function') {\n                  return res.then(\n                    result => {\n                      span.end()\n                      return result\n                    },\n                    error => {\n                      span.setStatus({\n                        code: SpanStatusCode.ERROR,\n                        message: error.message\n                      })\n                      if (instrumentation[kRecordExceptions] !== false) {\n                        span.recordException(error)\n                      }\n                      span.end()\n                      return Promise.reject(error)\n                    }\n                  )\n                }\n\n                span.end()\n                return res\n              } catch (error) {\n                span.setStatus({\n                  code: SpanStatusCode.ERROR,\n                  message: error.message\n                })\n                if (instrumentation[kRecordExceptions] !== false) {\n                  span.recordException(error)\n                }\n                span.end()\n                throw error\n              }\n            },\n            this\n          )\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = FastifyOtelInstrumentation\nmodule.exports.FastifyOtelInstrumentation = FastifyOtelInstrumentation\n",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanNames = exports.TokenKind = exports.AllowedOperationTypes = void 0;\nvar AllowedOperationTypes;\n(function (AllowedOperationTypes) {\n    AllowedOperationTypes[\"QUERY\"] = \"query\";\n    AllowedOperationTypes[\"MUTATION\"] = \"mutation\";\n    AllowedOperationTypes[\"SUBSCRIPTION\"] = \"subscription\";\n})(AllowedOperationTypes = exports.AllowedOperationTypes || (exports.AllowedOperationTypes = {}));\nvar TokenKind;\n(function (TokenKind) {\n    TokenKind[\"SOF\"] = \"\";\n    TokenKind[\"EOF\"] = \"\";\n    TokenKind[\"BANG\"] = \"!\";\n    TokenKind[\"DOLLAR\"] = \"$\";\n    TokenKind[\"AMP\"] = \"&\";\n    TokenKind[\"PAREN_L\"] = \"(\";\n    TokenKind[\"PAREN_R\"] = \")\";\n    TokenKind[\"SPREAD\"] = \"...\";\n    TokenKind[\"COLON\"] = \":\";\n    TokenKind[\"EQUALS\"] = \"=\";\n    TokenKind[\"AT\"] = \"@\";\n    TokenKind[\"BRACKET_L\"] = \"[\";\n    TokenKind[\"BRACKET_R\"] = \"]\";\n    TokenKind[\"BRACE_L\"] = \"{\";\n    TokenKind[\"PIPE\"] = \"|\";\n    TokenKind[\"BRACE_R\"] = \"}\";\n    TokenKind[\"NAME\"] = \"Name\";\n    TokenKind[\"INT\"] = \"Int\";\n    TokenKind[\"FLOAT\"] = \"Float\";\n    TokenKind[\"STRING\"] = \"String\";\n    TokenKind[\"BLOCK_STRING\"] = \"BlockString\";\n    TokenKind[\"COMMENT\"] = \"Comment\";\n})(TokenKind = exports.TokenKind || (exports.TokenKind = {}));\nvar SpanNames;\n(function (SpanNames) {\n    SpanNames[\"EXECUTE\"] = \"graphql.execute\";\n    SpanNames[\"PARSE\"] = \"graphql.parse\";\n    SpanNames[\"RESOLVE\"] = \"graphql.resolve\";\n    SpanNames[\"VALIDATE\"] = \"graphql.validate\";\n    SpanNames[\"SCHEMA_VALIDATE\"] = \"graphql.validateSchema\";\n    SpanNames[\"SCHEMA_PARSE\"] = \"graphql.parseSchema\";\n})(SpanNames = exports.SpanNames || (exports.SpanNames = {}));\n//# sourceMappingURL=enum.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"SOURCE\"] = \"graphql.source\";\n    AttributeNames[\"FIELD_NAME\"] = \"graphql.field.name\";\n    AttributeNames[\"FIELD_PATH\"] = \"graphql.field.path\";\n    AttributeNames[\"FIELD_TYPE\"] = \"graphql.field.type\";\n    AttributeNames[\"PARENT_NAME\"] = \"graphql.parent.name\";\n    AttributeNames[\"OPERATION_TYPE\"] = \"graphql.operation.type\";\n    AttributeNames[\"OPERATION_NAME\"] = \"graphql.operation.name\";\n    AttributeNames[\"VARIABLES\"] = \"graphql.variables.\";\n    AttributeNames[\"ERROR_VALIDATION_NAME\"] = \"graphql.validation.error\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTEL_GRAPHQL_DATA_SYMBOL = exports.OTEL_PATCHED_SYMBOL = void 0;\nexports.OTEL_PATCHED_SYMBOL = Symbol.for('opentelemetry.patched');\nexports.OTEL_GRAPHQL_DATA_SYMBOL = Symbol.for('opentelemetry.graphql_data');\n//# sourceMappingURL=symbols.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OPERATION_NOT_SUPPORTED = void 0;\nconst symbols_1 = require(\"./symbols\");\nexports.OPERATION_NOT_SUPPORTED = 'Operation$operationName$not' + ' supported';\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapFieldResolver = exports.wrapFields = exports.getSourceFromLocation = exports.getOperation = exports.endSpan = exports.addSpanSource = exports.addInputVariableAttributes = exports.isPromise = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst enum_1 = require(\"./enum\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst symbols_1 = require(\"./symbols\");\nconst OPERATION_VALUES = Object.values(enum_1.AllowedOperationTypes);\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts\nconst isPromise = (value) => {\n    return typeof value?.then === 'function';\n};\nexports.isPromise = isPromise;\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isObjectLike.ts\nconst isObjectLike = (value) => {\n    return typeof value == 'object' && value !== null;\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction addInputVariableAttribute(span, key, variable) {\n    if (Array.isArray(variable)) {\n        variable.forEach((value, idx) => {\n            addInputVariableAttribute(span, `${key}.${idx}`, value);\n        });\n    }\n    else if (variable instanceof Object) {\n        Object.entries(variable).forEach(([nestedKey, value]) => {\n            addInputVariableAttribute(span, `${key}.${nestedKey}`, value);\n        });\n    }\n    else {\n        span.setAttribute(`${AttributeNames_1.AttributeNames.VARIABLES}${String(key)}`, variable);\n    }\n}\nfunction addInputVariableAttributes(span, variableValues) {\n    Object.entries(variableValues).forEach(([key, value]) => {\n        addInputVariableAttribute(span, key, value);\n    });\n}\nexports.addInputVariableAttributes = addInputVariableAttributes;\nfunction addSpanSource(span, loc, allowValues, start, end) {\n    const source = getSourceFromLocation(loc, allowValues, start, end);\n    span.setAttribute(AttributeNames_1.AttributeNames.SOURCE, source);\n}\nexports.addSpanSource = addSpanSource;\nfunction createFieldIfNotExists(tracer, getConfig, contextValue, info, path) {\n    let field = getField(contextValue, path);\n    if (field) {\n        return { field, spanAdded: false };\n    }\n    const config = getConfig();\n    const parentSpan = config.flatResolveSpans\n        ? getRootSpan(contextValue)\n        : getParentFieldSpan(contextValue, path);\n    field = {\n        span: createResolverSpan(tracer, getConfig, contextValue, info, path, parentSpan),\n    };\n    addField(contextValue, path, field);\n    return { field, spanAdded: true };\n}\nfunction createResolverSpan(tracer, getConfig, contextValue, info, path, parentSpan) {\n    const attributes = {\n        [AttributeNames_1.AttributeNames.FIELD_NAME]: info.fieldName,\n        [AttributeNames_1.AttributeNames.FIELD_PATH]: path.join('.'),\n        [AttributeNames_1.AttributeNames.FIELD_TYPE]: info.returnType.toString(),\n        [AttributeNames_1.AttributeNames.PARENT_NAME]: info.parentType.name,\n    };\n    const span = tracer.startSpan(`${enum_1.SpanNames.RESOLVE} ${attributes[AttributeNames_1.AttributeNames.FIELD_PATH]}`, {\n        attributes,\n    }, parentSpan ? api.trace.setSpan(api.context.active(), parentSpan) : undefined);\n    const document = contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].source;\n    const fieldNode = info.fieldNodes.find(fieldNode => fieldNode.kind === 'Field');\n    if (fieldNode) {\n        addSpanSource(span, document.loc, getConfig().allowValues, fieldNode.loc?.start, fieldNode.loc?.end);\n    }\n    return span;\n}\nfunction endSpan(span, error) {\n    if (error) {\n        span.recordException(error);\n    }\n    span.end();\n}\nexports.endSpan = endSpan;\nfunction getOperation(document, operationName) {\n    if (!document || !Array.isArray(document.definitions)) {\n        return undefined;\n    }\n    if (operationName) {\n        return document.definitions\n            .filter(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1)\n            .find(definition => operationName === definition?.name?.value);\n    }\n    else {\n        return document.definitions.find(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1);\n    }\n}\nexports.getOperation = getOperation;\nfunction addField(contextValue, path, field) {\n    return (contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] =\n        field);\n}\nfunction getField(contextValue, path) {\n    return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')];\n}\nfunction getParentFieldSpan(contextValue, path) {\n    for (let i = path.length - 1; i > 0; i--) {\n        const field = getField(contextValue, path.slice(0, i));\n        if (field) {\n            return field.span;\n        }\n    }\n    return getRootSpan(contextValue);\n}\nfunction getRootSpan(contextValue) {\n    return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].span;\n}\nfunction pathToArray(mergeItems, path) {\n    const flattened = [];\n    let curr = path;\n    while (curr) {\n        let key = curr.key;\n        if (mergeItems && typeof key === 'number') {\n            key = '*';\n        }\n        flattened.push(String(key));\n        curr = curr.prev;\n    }\n    return flattened.reverse();\n}\nfunction repeatBreak(i) {\n    return repeatChar('\\n', i);\n}\nfunction repeatSpace(i) {\n    return repeatChar(' ', i);\n}\nfunction repeatChar(char, to) {\n    let text = '';\n    for (let i = 0; i < to; i++) {\n        text += char;\n    }\n    return text;\n}\nconst KindsToBeRemoved = [\n    enum_1.TokenKind.FLOAT,\n    enum_1.TokenKind.STRING,\n    enum_1.TokenKind.INT,\n    enum_1.TokenKind.BLOCK_STRING,\n];\nfunction getSourceFromLocation(loc, allowValues = false, inputStart, inputEnd) {\n    let source = '';\n    if (loc?.startToken) {\n        const start = typeof inputStart === 'number' ? inputStart : loc.start;\n        const end = typeof inputEnd === 'number' ? inputEnd : loc.end;\n        let next = loc.startToken.next;\n        let previousLine = 1;\n        while (next) {\n            if (next.start < start) {\n                next = next.next;\n                previousLine = next?.line;\n                continue;\n            }\n            if (next.end > end) {\n                next = next.next;\n                previousLine = next?.line;\n                continue;\n            }\n            let value = next.value || next.kind;\n            let space = '';\n            if (!allowValues && KindsToBeRemoved.indexOf(next.kind) >= 0) {\n                // value = repeatChar('*', value.length);\n                value = '*';\n            }\n            if (next.kind === enum_1.TokenKind.STRING) {\n                value = `\"${value}\"`;\n            }\n            if (next.kind === enum_1.TokenKind.EOF) {\n                value = '';\n            }\n            if (next.line > previousLine) {\n                source += repeatBreak(next.line - previousLine);\n                previousLine = next.line;\n                space = repeatSpace(next.column - 1);\n            }\n            else {\n                if (next.line === next.prev?.line) {\n                    space = repeatSpace(next.start - (next.prev?.end || 0));\n                }\n            }\n            source += space + value;\n            if (next) {\n                next = next.next;\n            }\n        }\n    }\n    return source;\n}\nexports.getSourceFromLocation = getSourceFromLocation;\nfunction wrapFields(type, tracer, getConfig) {\n    if (!type || type[symbols_1.OTEL_PATCHED_SYMBOL]) {\n        return;\n    }\n    const fields = type.getFields();\n    type[symbols_1.OTEL_PATCHED_SYMBOL] = true;\n    Object.keys(fields).forEach(key => {\n        const field = fields[key];\n        if (!field) {\n            return;\n        }\n        if (field.resolve) {\n            field.resolve = wrapFieldResolver(tracer, getConfig, field.resolve);\n        }\n        if (field.type) {\n            const unwrappedTypes = unwrapType(field.type);\n            for (const unwrappedType of unwrappedTypes) {\n                wrapFields(unwrappedType, tracer, getConfig);\n            }\n        }\n    });\n}\nexports.wrapFields = wrapFields;\nfunction unwrapType(type) {\n    // unwrap wrapping types (non-nullable and list types)\n    if ('ofType' in type) {\n        return unwrapType(type.ofType);\n    }\n    // unwrap union types\n    if (isGraphQLUnionType(type)) {\n        return type.getTypes();\n    }\n    // return object types\n    if (isGraphQLObjectType(type)) {\n        return [type];\n    }\n    return [];\n}\nfunction isGraphQLUnionType(type) {\n    return 'getTypes' in type && typeof type.getTypes === 'function';\n}\nfunction isGraphQLObjectType(type) {\n    return 'getFields' in type && typeof type.getFields === 'function';\n}\nconst handleResolveSpanError = (resolveSpan, err, shouldEndSpan) => {\n    if (!shouldEndSpan) {\n        return;\n    }\n    resolveSpan.recordException(err);\n    resolveSpan.setStatus({\n        code: api.SpanStatusCode.ERROR,\n        message: err.message,\n    });\n    resolveSpan.end();\n};\nconst handleResolveSpanSuccess = (resolveSpan, shouldEndSpan) => {\n    if (!shouldEndSpan) {\n        return;\n    }\n    resolveSpan.end();\n};\nfunction wrapFieldResolver(tracer, getConfig, fieldResolver, isDefaultResolver = false) {\n    if (wrappedFieldResolver[symbols_1.OTEL_PATCHED_SYMBOL] ||\n        typeof fieldResolver !== 'function') {\n        return fieldResolver;\n    }\n    function wrappedFieldResolver(source, args, contextValue, info) {\n        if (!fieldResolver) {\n            return undefined;\n        }\n        const config = getConfig();\n        // follows what graphql is doing to decide if this is a trivial resolver\n        // for which we don't need to create a resolve span\n        if (config.ignoreTrivialResolveSpans &&\n            isDefaultResolver &&\n            (isObjectLike(source) || typeof source === 'function')) {\n            const property = source[info.fieldName];\n            // a function execution is not trivial and should be recorder.\n            // property which is not a function is just a value and we don't want a \"resolve\" span for it\n            if (typeof property !== 'function') {\n                return fieldResolver.call(this, source, args, contextValue, info);\n            }\n        }\n        if (!contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL]) {\n            return fieldResolver.call(this, source, args, contextValue, info);\n        }\n        const path = pathToArray(config.mergeItems, info && info.path);\n        const depth = path.filter((item) => typeof item === 'string').length;\n        let span;\n        let shouldEndSpan = false;\n        if (config.depth >= 0 && config.depth < depth) {\n            span = getParentFieldSpan(contextValue, path);\n        }\n        else {\n            const { field, spanAdded } = createFieldIfNotExists(tracer, getConfig, contextValue, info, path);\n            span = field.span;\n            shouldEndSpan = spanAdded;\n        }\n        return api.context.with(api.trace.setSpan(api.context.active(), span), () => {\n            try {\n                const res = fieldResolver.call(this, source, args, contextValue, info);\n                if ((0, exports.isPromise)(res)) {\n                    return res.then((r) => {\n                        handleResolveSpanSuccess(span, shouldEndSpan);\n                        return r;\n                    }, (err) => {\n                        handleResolveSpanError(span, err, shouldEndSpan);\n                        throw err;\n                    });\n                }\n                else {\n                    handleResolveSpanSuccess(span, shouldEndSpan);\n                    return res;\n                }\n            }\n            catch (err) {\n                handleResolveSpanError(span, err, shouldEndSpan);\n                throw err;\n            }\n        });\n    }\n    wrappedFieldResolver[symbols_1.OTEL_PATCHED_SYMBOL] = true;\n    return wrappedFieldResolver;\n}\nexports.wrapFieldResolver = wrapFieldResolver;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-graphql';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GraphQLInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst enum_1 = require(\"./enum\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst symbols_1 = require(\"./symbols\");\nconst internal_types_1 = require(\"./internal-types\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst DEFAULT_CONFIG = {\n    mergeItems: false,\n    depth: -1,\n    allowValues: false,\n    ignoreResolveSpans: false,\n};\nconst supportedVersions = ['>=14.0.0 <17'];\nclass GraphQLInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    }\n    setConfig(config = {}) {\n        super.setConfig({ ...DEFAULT_CONFIG, ...config });\n    }\n    init() {\n        const module = new instrumentation_1.InstrumentationNodeModuleDefinition('graphql', supportedVersions);\n        module.files.push(this._addPatchingExecute());\n        module.files.push(this._addPatchingParser());\n        module.files.push(this._addPatchingValidate());\n        return module;\n    }\n    _addPatchingExecute() {\n        return new instrumentation_1.InstrumentationNodeModuleFile('graphql/execution/execute.js', supportedVersions, \n        // cannot make it work with appropriate type as execute function has 2\n        //types and/cannot import function but only types\n        (moduleExports) => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports.execute)) {\n                this._unwrap(moduleExports, 'execute');\n            }\n            this._wrap(moduleExports, 'execute', this._patchExecute(moduleExports.defaultFieldResolver));\n            return moduleExports;\n        }, moduleExports => {\n            if (moduleExports) {\n                this._unwrap(moduleExports, 'execute');\n            }\n        });\n    }\n    _addPatchingParser() {\n        return new instrumentation_1.InstrumentationNodeModuleFile('graphql/language/parser.js', supportedVersions, (moduleExports) => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports.parse)) {\n                this._unwrap(moduleExports, 'parse');\n            }\n            this._wrap(moduleExports, 'parse', this._patchParse());\n            return moduleExports;\n        }, (moduleExports) => {\n            if (moduleExports) {\n                this._unwrap(moduleExports, 'parse');\n            }\n        });\n    }\n    _addPatchingValidate() {\n        return new instrumentation_1.InstrumentationNodeModuleFile('graphql/validation/validate.js', supportedVersions, moduleExports => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports.validate)) {\n                this._unwrap(moduleExports, 'validate');\n            }\n            this._wrap(moduleExports, 'validate', this._patchValidate());\n            return moduleExports;\n        }, moduleExports => {\n            if (moduleExports) {\n                this._unwrap(moduleExports, 'validate');\n            }\n        });\n    }\n    _patchExecute(defaultFieldResolved) {\n        const instrumentation = this;\n        return function execute(original) {\n            return function patchExecute() {\n                let processedArgs;\n                // case when apollo server is used for example\n                if (arguments.length >= 2) {\n                    const args = arguments;\n                    processedArgs = instrumentation._wrapExecuteArgs(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], defaultFieldResolved);\n                }\n                else {\n                    const args = arguments[0];\n                    processedArgs = instrumentation._wrapExecuteArgs(args.schema, args.document, args.rootValue, args.contextValue, args.variableValues, args.operationName, args.fieldResolver, args.typeResolver, defaultFieldResolved);\n                }\n                const operation = (0, utils_1.getOperation)(processedArgs.document, processedArgs.operationName);\n                const span = instrumentation._createExecuteSpan(operation, processedArgs);\n                processedArgs.contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL] = {\n                    source: processedArgs.document\n                        ? processedArgs.document ||\n                            processedArgs.document[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL]\n                        : undefined,\n                    span,\n                    fields: {},\n                };\n                return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                    return (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                        return original.apply(this, [\n                            processedArgs,\n                        ]);\n                    }, (err, result) => {\n                        instrumentation._handleExecutionResult(span, err, result);\n                    });\n                });\n            };\n        };\n    }\n    _handleExecutionResult(span, err, result) {\n        const config = this.getConfig();\n        if (result === undefined || err) {\n            (0, utils_1.endSpan)(span, err);\n            return;\n        }\n        if ((0, utils_1.isPromise)(result)) {\n            result.then(resultData => {\n                if (typeof config.responseHook !== 'function') {\n                    (0, utils_1.endSpan)(span);\n                    return;\n                }\n                this._executeResponseHook(span, resultData);\n            }, error => {\n                (0, utils_1.endSpan)(span, error);\n            });\n        }\n        else {\n            if (typeof config.responseHook !== 'function') {\n                (0, utils_1.endSpan)(span);\n                return;\n            }\n            this._executeResponseHook(span, result);\n        }\n    }\n    _executeResponseHook(span, result) {\n        const { responseHook } = this.getConfig();\n        if (!responseHook) {\n            return;\n        }\n        (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n            responseHook(span, result);\n        }, err => {\n            if (err) {\n                this._diag.error('Error running response hook', err);\n            }\n            (0, utils_1.endSpan)(span, undefined);\n        }, true);\n    }\n    _patchParse() {\n        const instrumentation = this;\n        return function parse(original) {\n            return function patchParse(source, options) {\n                return instrumentation._parse(this, original, source, options);\n            };\n        };\n    }\n    _patchValidate() {\n        const instrumentation = this;\n        return function validate(original) {\n            return function patchValidate(schema, documentAST, rules, options, typeInfo) {\n                return instrumentation._validate(this, original, schema, documentAST, rules, typeInfo, options);\n            };\n        };\n    }\n    _parse(obj, original, source, options) {\n        const config = this.getConfig();\n        const span = this.tracer.startSpan(enum_1.SpanNames.PARSE);\n        return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n            return (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                return original.call(obj, source, options);\n            }, (err, result) => {\n                if (result) {\n                    const operation = (0, utils_1.getOperation)(result);\n                    if (!operation) {\n                        span.updateName(enum_1.SpanNames.SCHEMA_PARSE);\n                    }\n                    else if (result.loc) {\n                        (0, utils_1.addSpanSource)(span, result.loc, config.allowValues);\n                    }\n                }\n                (0, utils_1.endSpan)(span, err);\n            });\n        });\n    }\n    _validate(obj, original, schema, documentAST, rules, typeInfo, options) {\n        const span = this.tracer.startSpan(enum_1.SpanNames.VALIDATE, {});\n        return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n            return (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                return original.call(obj, schema, documentAST, rules, options, typeInfo);\n            }, (err, errors) => {\n                if (!documentAST.loc) {\n                    span.updateName(enum_1.SpanNames.SCHEMA_VALIDATE);\n                }\n                if (errors && errors.length) {\n                    span.recordException({\n                        name: AttributeNames_1.AttributeNames.ERROR_VALIDATION_NAME,\n                        message: JSON.stringify(errors),\n                    });\n                }\n                (0, utils_1.endSpan)(span, err);\n            });\n        });\n    }\n    _createExecuteSpan(operation, processedArgs) {\n        const config = this.getConfig();\n        const span = this.tracer.startSpan(enum_1.SpanNames.EXECUTE, {});\n        if (operation) {\n            const { operation: operationType, name: nameNode } = operation;\n            span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_TYPE, operationType);\n            const operationName = nameNode?.value;\n            // https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/graphql/\n            // > The span name MUST be of the format   provided that graphql.operation.type and graphql.operation.name are available.\n            // > If graphql.operation.name is not available, the span SHOULD be named .\n            if (operationName) {\n                span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_NAME, operationName);\n                span.updateName(`${operationType} ${operationName}`);\n            }\n            else {\n                span.updateName(operationType);\n            }\n        }\n        else {\n            let operationName = ' ';\n            if (processedArgs.operationName) {\n                operationName = ` \"${processedArgs.operationName}\" `;\n            }\n            operationName = internal_types_1.OPERATION_NOT_SUPPORTED.replace('$operationName$', operationName);\n            span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_NAME, operationName);\n        }\n        if (processedArgs.document?.loc) {\n            (0, utils_1.addSpanSource)(span, processedArgs.document.loc, config.allowValues);\n        }\n        if (processedArgs.variableValues && config.allowValues) {\n            (0, utils_1.addInputVariableAttributes)(span, processedArgs.variableValues);\n        }\n        return span;\n    }\n    _wrapExecuteArgs(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver, defaultFieldResolved) {\n        if (!contextValue) {\n            contextValue = {};\n        }\n        if (contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL] ||\n            this.getConfig().ignoreResolveSpans) {\n            return {\n                schema,\n                document,\n                rootValue,\n                contextValue,\n                variableValues,\n                operationName,\n                fieldResolver,\n                typeResolver,\n            };\n        }\n        const isUsingDefaultResolver = fieldResolver == null;\n        // follows graphql implementation here:\n        // https://github.com/graphql/graphql-js/blob/0b7daed9811731362c71900e12e5ea0d1ecc7f1f/src/execution/execute.ts#L494\n        const fieldResolverForExecute = fieldResolver ?? defaultFieldResolved;\n        fieldResolver = (0, utils_1.wrapFieldResolver)(this.tracer, () => this.getConfig(), fieldResolverForExecute, isUsingDefaultResolver);\n        if (schema) {\n            (0, utils_1.wrapFields)(schema.getQueryType(), this.tracer, () => this.getConfig());\n            (0, utils_1.wrapFields)(schema.getMutationType(), this.tracer, () => this.getConfig());\n        }\n        return {\n            schema,\n            document,\n            rootValue,\n            contextValue,\n            variableValues,\n            operationName,\n            fieldResolver,\n            typeResolver,\n        };\n    }\n}\nexports.GraphQLInstrumentation = GraphQLInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GraphQLInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"GraphQLInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.GraphQLInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors, Aspecto\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENT_LISTENERS_SET = void 0;\nexports.EVENT_LISTENERS_SET = Symbol('opentelemetry.instrumentation.kafkajs.eventListenersSet');\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferTextMapGetter = void 0;\n/*\nsame as open telemetry's `defaultTextMapGetter`,\nbut also handle case where header is buffer,\nadding toString() to make sure string is returned\n*/\nexports.bufferTextMapGetter = {\n    get(carrier, key) {\n        if (!carrier) {\n            return undefined;\n        }\n        const keys = Object.keys(carrier);\n        for (const carrierKey of keys) {\n            if (carrierKey === key || carrierKey.toLowerCase() === key) {\n                return carrier[carrierKey]?.toString();\n            }\n        }\n        return undefined;\n    },\n    keys(carrier) {\n        return carrier ? Object.keys(carrier) : [];\n    },\n};\n//# sourceMappingURL=propagator.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_MESSAGING_PROCESS_DURATION = exports.METRIC_MESSAGING_CLIENT_SENT_MESSAGES = exports.METRIC_MESSAGING_CLIENT_OPERATION_DURATION = exports.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = exports.MESSAGING_SYSTEM_VALUE_KAFKA = exports.MESSAGING_OPERATION_TYPE_VALUE_SEND = exports.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = exports.MESSAGING_OPERATION_TYPE_VALUE_PROCESS = exports.ATTR_MESSAGING_SYSTEM = exports.ATTR_MESSAGING_OPERATION_TYPE = exports.ATTR_MESSAGING_OPERATION_NAME = exports.ATTR_MESSAGING_KAFKA_OFFSET = exports.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = exports.ATTR_MESSAGING_KAFKA_MESSAGE_KEY = exports.ATTR_MESSAGING_DESTINATION_PARTITION_ID = exports.ATTR_MESSAGING_DESTINATION_NAME = exports.ATTR_MESSAGING_BATCH_MESSAGE_COUNT = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The number of messages sent, received, or processed in the scope of the batching operation.\n *\n * @example 0\n * @example 1\n * @example 2\n *\n * @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.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count';\n/**\n * The message destination name\n *\n * @example MyQueue\n * @example MyTopic\n *\n * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If\n * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name';\n/**\n * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`.\n *\n * @example \"1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id';\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message.id` in that they're not unique. If the key is `null`, the attribute **MUST NOT** be set.\n *\n * @example \"myKey\"\n *\n * @note If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key';\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone';\n/**\n * The offset of a record in the corresponding Kafka partition.\n *\n * @example 42\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset';\n/**\n * The system-specific name of the messaging operation.\n *\n * @example ack\n * @example nack\n * @example send\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name';\n/**\n * A string identifying the type of the messaging operation.\n *\n * @note If a custom value is used, it **MUST** be of low cardinality.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type';\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_SYSTEM = 'messaging.system';\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexports.MESSAGING_OPERATION_TYPE_VALUE_PROCESS = 'process';\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexports.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = 'receive';\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexports.MESSAGING_OPERATION_TYPE_VALUE_SEND = 'send';\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexports.MESSAGING_SYSTEM_VALUE_KAFKA = 'kafka';\n/**\n * Number of messages that were delivered to the application.\n *\n * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios.\n * The metric **SHOULD** be reported once per message delivery. For example, if receiving and processing operations are both instrumented for a single message delivery, this counter is incremented when the message is received and not reported when it is processed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages';\n/**\n * Duration of messaging operation initiated by a producer or consumer client.\n *\n * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration';\n/**\n * Number of messages producer attempted to send to the broker.\n *\n * @note This metric **MUST NOT** count messages that were created but haven't yet been sent.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages';\n/**\n * Duration of processing operation.\n *\n * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.22.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-kafkajs';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors, Aspecto\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KafkaJsInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst internal_types_1 = require(\"./internal-types\");\nconst propagator_1 = require(\"./propagator\");\nconst semconv_1 = require(\"./semconv\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nfunction prepareCounter(meter, value, attributes) {\n    return (errorType) => {\n        meter.add(value, {\n            ...attributes,\n            ...(errorType ? { [semantic_conventions_1.ATTR_ERROR_TYPE]: errorType } : {}),\n        });\n    };\n}\nfunction prepareDurationHistogram(meter, value, attributes) {\n    return (errorType) => {\n        meter.record((Date.now() - value) / 1000, {\n            ...attributes,\n            ...(errorType ? { [semantic_conventions_1.ATTR_ERROR_TYPE]: errorType } : {}),\n        });\n    };\n}\nconst HISTOGRAM_BUCKET_BOUNDARIES = [\n    0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,\n];\nclass KafkaJsInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    _updateMetricInstruments() {\n        this._clientDuration = this.meter.createHistogram(semconv_1.METRIC_MESSAGING_CLIENT_OPERATION_DURATION, { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } });\n        this._sentMessages = this.meter.createCounter(semconv_1.METRIC_MESSAGING_CLIENT_SENT_MESSAGES);\n        this._consumedMessages = this.meter.createCounter(semconv_1.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES);\n        this._processDuration = this.meter.createHistogram(semconv_1.METRIC_MESSAGING_PROCESS_DURATION, { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } });\n    }\n    init() {\n        const unpatch = (moduleExports) => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.Kafka?.prototype.producer)) {\n                this._unwrap(moduleExports.Kafka.prototype, 'producer');\n            }\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.Kafka?.prototype.consumer)) {\n                this._unwrap(moduleExports.Kafka.prototype, 'consumer');\n            }\n        };\n        const module = new instrumentation_1.InstrumentationNodeModuleDefinition('kafkajs', ['>=0.3.0 <3'], (moduleExports) => {\n            unpatch(moduleExports);\n            this._wrap(moduleExports?.Kafka?.prototype, 'producer', this._getProducerPatch());\n            this._wrap(moduleExports?.Kafka?.prototype, 'consumer', this._getConsumerPatch());\n            return moduleExports;\n        }, unpatch);\n        return module;\n    }\n    _getConsumerPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function consumer(...args) {\n                const newConsumer = original.apply(this, args);\n                if ((0, instrumentation_1.isWrapped)(newConsumer.run)) {\n                    instrumentation._unwrap(newConsumer, 'run');\n                }\n                instrumentation._wrap(newConsumer, 'run', instrumentation._getConsumerRunPatch());\n                instrumentation._setKafkaEventListeners(newConsumer);\n                return newConsumer;\n            };\n        };\n    }\n    _setKafkaEventListeners(kafkaObj) {\n        if (kafkaObj[internal_types_1.EVENT_LISTENERS_SET])\n            return;\n        // The REQUEST Consumer event was added in kafkajs@1.5.0.\n        if (kafkaObj.events?.REQUEST) {\n            kafkaObj.on(kafkaObj.events.REQUEST, this._recordClientDurationMetric.bind(this));\n        }\n        kafkaObj[internal_types_1.EVENT_LISTENERS_SET] = true;\n    }\n    _recordClientDurationMetric(event) {\n        const [address, port] = event.payload.broker.split(':');\n        this._clientDuration.record(event.payload.duration / 1000, {\n            [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n            [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: `${event.payload.apiName}`,\n            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: address,\n            [semantic_conventions_1.ATTR_SERVER_PORT]: Number.parseInt(port, 10),\n        });\n    }\n    _getProducerPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function consumer(...args) {\n                const newProducer = original.apply(this, args);\n                if ((0, instrumentation_1.isWrapped)(newProducer.sendBatch)) {\n                    instrumentation._unwrap(newProducer, 'sendBatch');\n                }\n                instrumentation._wrap(newProducer, 'sendBatch', instrumentation._getSendBatchPatch());\n                if ((0, instrumentation_1.isWrapped)(newProducer.send)) {\n                    instrumentation._unwrap(newProducer, 'send');\n                }\n                instrumentation._wrap(newProducer, 'send', instrumentation._getSendPatch());\n                if ((0, instrumentation_1.isWrapped)(newProducer.transaction)) {\n                    instrumentation._unwrap(newProducer, 'transaction');\n                }\n                instrumentation._wrap(newProducer, 'transaction', instrumentation._getProducerTransactionPatch());\n                instrumentation._setKafkaEventListeners(newProducer);\n                return newProducer;\n            };\n        };\n    }\n    _getConsumerRunPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function run(...args) {\n                const config = args[0];\n                if (config?.eachMessage) {\n                    if ((0, instrumentation_1.isWrapped)(config.eachMessage)) {\n                        instrumentation._unwrap(config, 'eachMessage');\n                    }\n                    instrumentation._wrap(config, 'eachMessage', instrumentation._getConsumerEachMessagePatch());\n                }\n                if (config?.eachBatch) {\n                    if ((0, instrumentation_1.isWrapped)(config.eachBatch)) {\n                        instrumentation._unwrap(config, 'eachBatch');\n                    }\n                    instrumentation._wrap(config, 'eachBatch', instrumentation._getConsumerEachBatchPatch());\n                }\n                return original.call(this, config);\n            };\n        };\n    }\n    _getConsumerEachMessagePatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function eachMessage(...args) {\n                const payload = args[0];\n                const propagatedContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, payload.message.headers, propagator_1.bufferTextMapGetter);\n                const span = instrumentation._startConsumerSpan({\n                    topic: payload.topic,\n                    message: payload.message,\n                    operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n                    ctx: propagatedContext,\n                    attributes: {\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition),\n                    },\n                });\n                const pendingMetrics = [\n                    prepareDurationHistogram(instrumentation._processDuration, Date.now(), {\n                        [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                        [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition),\n                    }),\n                    prepareCounter(instrumentation._consumedMessages, 1, {\n                        [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                        [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition),\n                    }),\n                ];\n                const eachMessagePromise = api_1.context.with(api_1.trace.setSpan(propagatedContext, span), () => {\n                    return original.apply(this, args);\n                });\n                return instrumentation._endSpansOnPromise([span], pendingMetrics, eachMessagePromise);\n            };\n        };\n    }\n    _getConsumerEachBatchPatch() {\n        return (original) => {\n            const instrumentation = this;\n            return function eachBatch(...args) {\n                const payload = args[0];\n                // https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#topic-with-multiple-consumers\n                const receivingSpan = instrumentation._startConsumerSpan({\n                    topic: payload.batch.topic,\n                    message: undefined,\n                    operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n                    ctx: api_1.ROOT_CONTEXT,\n                    attributes: {\n                        [semconv_1.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]: payload.batch.messages.length,\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition),\n                    },\n                });\n                return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), receivingSpan), () => {\n                    const startTime = Date.now();\n                    const spans = [];\n                    const pendingMetrics = [\n                        prepareCounter(instrumentation._consumedMessages, payload.batch.messages.length, {\n                            [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                            [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition),\n                        }),\n                    ];\n                    payload.batch.messages.forEach(message => {\n                        const propagatedContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, message.headers, propagator_1.bufferTextMapGetter);\n                        const spanContext = api_1.trace\n                            .getSpan(propagatedContext)\n                            ?.spanContext();\n                        let origSpanLink;\n                        if (spanContext) {\n                            origSpanLink = {\n                                context: spanContext,\n                            };\n                        }\n                        spans.push(instrumentation._startConsumerSpan({\n                            topic: payload.batch.topic,\n                            message,\n                            operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n                            link: origSpanLink,\n                            attributes: {\n                                [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition),\n                            },\n                        }));\n                        pendingMetrics.push(prepareDurationHistogram(instrumentation._processDuration, startTime, {\n                            [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                            [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition),\n                        }));\n                    });\n                    const batchMessagePromise = original.apply(this, args);\n                    spans.unshift(receivingSpan);\n                    return instrumentation._endSpansOnPromise(spans, pendingMetrics, batchMessagePromise);\n                });\n            };\n        };\n    }\n    _getProducerTransactionPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function transaction(...args) {\n                const transactionSpan = instrumentation.tracer.startSpan('transaction');\n                const transactionPromise = original.apply(this, args);\n                transactionPromise\n                    .then((transaction) => {\n                    const originalSend = transaction.send;\n                    transaction.send = function send(...args) {\n                        return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), transactionSpan), () => {\n                            const patched = instrumentation._getSendPatch()(originalSend);\n                            return patched.apply(this, args).catch(err => {\n                                transactionSpan.setStatus({\n                                    code: api_1.SpanStatusCode.ERROR,\n                                    message: err?.message,\n                                });\n                                transactionSpan.recordException(err);\n                                throw err;\n                            });\n                        });\n                    };\n                    const originalSendBatch = transaction.sendBatch;\n                    transaction.sendBatch = function sendBatch(...args) {\n                        return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), transactionSpan), () => {\n                            const patched = instrumentation._getSendBatchPatch()(originalSendBatch);\n                            return patched.apply(this, args).catch(err => {\n                                transactionSpan.setStatus({\n                                    code: api_1.SpanStatusCode.ERROR,\n                                    message: err?.message,\n                                });\n                                transactionSpan.recordException(err);\n                                throw err;\n                            });\n                        });\n                    };\n                    const originalCommit = transaction.commit;\n                    transaction.commit = function commit(...args) {\n                        const originCommitPromise = originalCommit\n                            .apply(this, args)\n                            .then(() => {\n                            transactionSpan.setStatus({ code: api_1.SpanStatusCode.OK });\n                        });\n                        return instrumentation._endSpansOnPromise([transactionSpan], [], originCommitPromise);\n                    };\n                    const originalAbort = transaction.abort;\n                    transaction.abort = function abort(...args) {\n                        const originAbortPromise = originalAbort.apply(this, args);\n                        return instrumentation._endSpansOnPromise([transactionSpan], [], originAbortPromise);\n                    };\n                })\n                    .catch(err => {\n                    transactionSpan.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: err?.message,\n                    });\n                    transactionSpan.recordException(err);\n                    transactionSpan.end();\n                });\n                return transactionPromise;\n            };\n        };\n    }\n    _getSendBatchPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function sendBatch(...args) {\n                const batch = args[0];\n                const messages = batch.topicMessages || [];\n                const spans = [];\n                const pendingMetrics = [];\n                messages.forEach(topicMessage => {\n                    topicMessage.messages.forEach(message => {\n                        spans.push(instrumentation._startProducerSpan(topicMessage.topic, message));\n                        pendingMetrics.push(prepareCounter(instrumentation._sentMessages, 1, {\n                            [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                            [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topicMessage.topic,\n                            ...(message.partition !== undefined\n                                ? {\n                                    [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(message.partition),\n                                }\n                                : {}),\n                        }));\n                    });\n                });\n                const origSendResult = original.apply(this, args);\n                return instrumentation._endSpansOnPromise(spans, pendingMetrics, origSendResult);\n            };\n        };\n    }\n    _getSendPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function send(...args) {\n                const record = args[0];\n                const spans = record.messages.map(message => {\n                    return instrumentation._startProducerSpan(record.topic, message);\n                });\n                const pendingMetrics = record.messages.map(m => prepareCounter(instrumentation._sentMessages, 1, {\n                    [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                    [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                    [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: record.topic,\n                    ...(m.partition !== undefined\n                        ? {\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(m.partition),\n                        }\n                        : {}),\n                }));\n                const origSendResult = original.apply(this, args);\n                return instrumentation._endSpansOnPromise(spans, pendingMetrics, origSendResult);\n            };\n        };\n    }\n    _endSpansOnPromise(spans, pendingMetrics, sendPromise) {\n        return Promise.resolve(sendPromise)\n            .then(result => {\n            pendingMetrics.forEach(m => m());\n            return result;\n        })\n            .catch(reason => {\n            let errorMessage;\n            let errorType = semantic_conventions_1.ERROR_TYPE_VALUE_OTHER;\n            if (typeof reason === 'string' || reason === undefined) {\n                errorMessage = reason;\n            }\n            else if (typeof reason === 'object' &&\n                Object.prototype.hasOwnProperty.call(reason, 'message')) {\n                errorMessage = reason.message;\n                errorType = reason.constructor.name;\n            }\n            pendingMetrics.forEach(m => m(errorType));\n            spans.forEach(span => {\n                span.setAttribute(semantic_conventions_1.ATTR_ERROR_TYPE, errorType);\n                span.setStatus({\n                    code: api_1.SpanStatusCode.ERROR,\n                    message: errorMessage,\n                });\n            });\n            throw reason;\n        })\n            .finally(() => {\n            spans.forEach(span => span.end());\n        });\n    }\n    _startConsumerSpan({ topic, message, operationType, ctx, link, attributes, }) {\n        const operationName = operationType === semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n            ? 'poll' // for batch processing spans\n            : operationType; // for individual message processing spans\n        const span = this.tracer.startSpan(`${operationName} ${topic}`, {\n            kind: operationType === semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n                ? api_1.SpanKind.CLIENT\n                : api_1.SpanKind.CONSUMER,\n            attributes: {\n                ...attributes,\n                [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topic,\n                [semconv_1.ATTR_MESSAGING_OPERATION_TYPE]: operationType,\n                [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: operationName,\n                [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message?.key\n                    ? String(message.key)\n                    : undefined,\n                [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: message?.key && message.value === null ? true : undefined,\n                [semconv_1.ATTR_MESSAGING_KAFKA_OFFSET]: message?.offset,\n            },\n            links: link ? [link] : [],\n        }, ctx);\n        const { consumerHook } = this.getConfig();\n        if (consumerHook && message) {\n            (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumerHook(span, { topic, message }), e => {\n                if (e)\n                    this._diag.error('consumerHook error', e);\n            }, true);\n        }\n        return span;\n    }\n    _startProducerSpan(topic, message) {\n        const span = this.tracer.startSpan(`send ${topic}`, {\n            kind: api_1.SpanKind.PRODUCER,\n            attributes: {\n                [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topic,\n                [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message.key\n                    ? String(message.key)\n                    : undefined,\n                [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: message.key && message.value === null ? true : undefined,\n                [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: message.partition !== undefined\n                    ? String(message.partition)\n                    : undefined,\n                [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                [semconv_1.ATTR_MESSAGING_OPERATION_TYPE]: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_SEND,\n            },\n        });\n        message.headers = message.headers ?? {};\n        api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), message.headers);\n        const { producerHook } = this.getConfig();\n        if (producerHook) {\n            (0, instrumentation_1.safeExecuteInTheMiddle)(() => producerHook(span, { topic, message }), e => {\n                if (e)\n                    this._diag.error('producerHook error', e);\n            }, true);\n        }\n        return span;\n    }\n}\nexports.KafkaJsInstrumentation = KafkaJsInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors, Aspecto\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KafkaJsInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"KafkaJsInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.KafkaJsInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.57.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-lru-memoizer';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LruMemoizerInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nclass LruMemoizerInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('lru-memoizer', ['>=1.3 <3'], moduleExports => {\n                // moduleExports is a function which receives an options object,\n                // and returns a \"memoizer\" function upon invocation.\n                // We want to patch this \"memoizer's\" internal function\n                const asyncMemoizer = function () {\n                    // This following function is invoked every time the user wants to get a (possible) memoized value\n                    // We replace it with another function in which we bind the current context to the last argument (callback)\n                    const origMemoizer = moduleExports.apply(this, arguments);\n                    return function () {\n                        const modifiedArguments = [...arguments];\n                        // last argument is the callback\n                        const origCallback = modifiedArguments.pop();\n                        const callbackWithContext = typeof origCallback === 'function'\n                            ? api_1.context.bind(api_1.context.active(), origCallback)\n                            : origCallback;\n                        modifiedArguments.push(callbackWithContext);\n                        return origMemoizer.apply(this, modifiedArguments);\n                    };\n                };\n                // sync function preserves context, but we still need to export it\n                // as the lru-memoizer package does\n                asyncMemoizer.sync = moduleExports.sync;\n                return asyncMemoizer;\n            }, undefined // no need to disable as this instrumentation does not create any spans\n            ),\n        ];\n    }\n}\nexports.LruMemoizerInstrumentation = LruMemoizerInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LruMemoizerInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"LruMemoizerInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.LruMemoizerInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = exports.DB_SYSTEM_VALUE_MONGODB = exports.DB_SYSTEM_NAME_VALUE_MONGODB = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_OPERATION = exports.ATTR_DB_NAME = exports.ATTR_DB_MONGODB_COLLECTION = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexports.ATTR_DB_OPERATION = 'db.operation';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb';\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MongoDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_MONGODB = 'mongodb';\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongodbCommandType = void 0;\nvar MongodbCommandType;\n(function (MongodbCommandType) {\n    MongodbCommandType[\"CREATE_INDEXES\"] = \"createIndexes\";\n    MongodbCommandType[\"FIND_AND_MODIFY\"] = \"findAndModify\";\n    MongodbCommandType[\"IS_MASTER\"] = \"isMaster\";\n    MongodbCommandType[\"COUNT\"] = \"count\";\n    MongodbCommandType[\"AGGREGATE\"] = \"aggregate\";\n    MongodbCommandType[\"UNKNOWN\"] = \"unknown\";\n})(MongodbCommandType = exports.MongodbCommandType || (exports.MongodbCommandType = {}));\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.66.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mongodb';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongoDBInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst internal_types_1 = require(\"./internal-types\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst DEFAULT_CONFIG = {\n    requireParentSpan: true,\n};\n/** mongodb instrumentation plugin for OpenTelemetry */\nclass MongoDBInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig({ ...DEFAULT_CONFIG, ...config });\n    }\n    _updateMetricInstruments() {\n        this._connectionsUsage = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTIONS_USAGE, {\n            description: 'The number of connections that are currently in state described by the state attribute.',\n            unit: '{connection}',\n        });\n    }\n    /**\n     * Convenience function for updating the `db.client.connections.usage` metric.\n     * The name \"count\" comes from the eventual replacement for this metric per\n     * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n     */\n    _connCountAdd(n, poolName, state) {\n        this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n    }\n    init() {\n        const { v3PatchConnection: v3PatchConnection, v3UnpatchConnection: v3UnpatchConnection, } = this._getV3ConnectionPatches();\n        const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n        const { v4PatchConnectionCallback, v4PatchConnectionPromise, v4UnpatchConnection, } = this._getV4ConnectionPatches();\n        const { v4PatchConnectionPool, v4UnpatchConnectionPool } = this._getV4ConnectionPoolPatches();\n        const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('mongodb', ['>=3.3.0 <4'], undefined, undefined, [\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/core/wireprotocol/index.js', ['>=3.3.0 <4'], v3PatchConnection, v3UnpatchConnection),\n            ]),\n            new instrumentation_1.InstrumentationNodeModuleDefinition('mongodb', ['>=4.0.0 <8'], undefined, undefined, [\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection.js', ['>=4.0.0 <6.4'], v4PatchConnectionCallback, v4UnpatchConnection),\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection.js', ['>=6.4.0 <8'], v4PatchConnectionPromise, v4UnpatchConnection),\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection_pool.js', ['>=4.0.0 <6.4'], v4PatchConnectionPool, v4UnpatchConnectionPool),\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connect.js', ['>=4.0.0 <8'], v4PatchConnect, v4UnpatchConnect),\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/sessions.js', ['>=4.0.0 <8'], v4PatchSessions, v4UnpatchSessions),\n            ]),\n        ];\n    }\n    _getV3ConnectionPatches() {\n        return {\n            v3PatchConnection: (moduleExports) => {\n                // patch insert operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.insert)) {\n                    this._unwrap(moduleExports, 'insert');\n                }\n                this._wrap(moduleExports, 'insert', this._getV3PatchOperation('insert'));\n                // patch remove operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.remove)) {\n                    this._unwrap(moduleExports, 'remove');\n                }\n                this._wrap(moduleExports, 'remove', this._getV3PatchOperation('remove'));\n                // patch update operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.update)) {\n                    this._unwrap(moduleExports, 'update');\n                }\n                this._wrap(moduleExports, 'update', this._getV3PatchOperation('update'));\n                // patch other command\n                if ((0, instrumentation_1.isWrapped)(moduleExports.command)) {\n                    this._unwrap(moduleExports, 'command');\n                }\n                this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n                // patch query\n                if ((0, instrumentation_1.isWrapped)(moduleExports.query)) {\n                    this._unwrap(moduleExports, 'query');\n                }\n                this._wrap(moduleExports, 'query', this._getV3PatchFind());\n                // patch get more operation on cursor\n                if ((0, instrumentation_1.isWrapped)(moduleExports.getMore)) {\n                    this._unwrap(moduleExports, 'getMore');\n                }\n                this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n                return moduleExports;\n            },\n            v3UnpatchConnection: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports, 'insert');\n                this._unwrap(moduleExports, 'remove');\n                this._unwrap(moduleExports, 'update');\n                this._unwrap(moduleExports, 'command');\n                this._unwrap(moduleExports, 'query');\n                this._unwrap(moduleExports, 'getMore');\n            },\n        };\n    }\n    _getV4SessionsPatches() {\n        return {\n            v4PatchSessions: (moduleExports) => {\n                if ((0, instrumentation_1.isWrapped)(moduleExports.acquire)) {\n                    this._unwrap(moduleExports, 'acquire');\n                }\n                this._wrap(moduleExports.ServerSessionPool.prototype, 'acquire', this._getV4AcquireCommand());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.release)) {\n                    this._unwrap(moduleExports, 'release');\n                }\n                this._wrap(moduleExports.ServerSessionPool.prototype, 'release', this._getV4ReleaseCommand());\n                return moduleExports;\n            },\n            v4UnpatchSessions: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                if ((0, instrumentation_1.isWrapped)(moduleExports.acquire)) {\n                    this._unwrap(moduleExports, 'acquire');\n                }\n                if ((0, instrumentation_1.isWrapped)(moduleExports.release)) {\n                    this._unwrap(moduleExports, 'release');\n                }\n            },\n        };\n    }\n    _getV4AcquireCommand() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchAcquire() {\n                const nSessionsBeforeAcquire = this.sessions.length;\n                const session = original.call(this);\n                const nSessionsAfterAcquire = this.sessions.length;\n                if (nSessionsBeforeAcquire === nSessionsAfterAcquire) {\n                    //no session in the pool. a new session was created and used\n                    instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n                }\n                else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) {\n                    //a session was already in the pool. remove it from the pool and use it.\n                    instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n                    instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n                }\n                return session;\n            };\n        };\n    }\n    _getV4ReleaseCommand() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchRelease(session) {\n                const cmdPromise = original.call(this, session);\n                instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n                instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n                return cmdPromise;\n            };\n        };\n    }\n    _getV4ConnectionPoolPatches() {\n        return {\n            v4PatchConnectionPool: (moduleExports) => {\n                const poolPrototype = moduleExports.ConnectionPool.prototype;\n                if ((0, instrumentation_1.isWrapped)(poolPrototype.checkOut)) {\n                    this._unwrap(poolPrototype, 'checkOut');\n                }\n                this._wrap(poolPrototype, 'checkOut', this._getV4ConnectionPoolCheckOut());\n                return moduleExports;\n            },\n            v4UnpatchConnectionPool: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n            },\n        };\n    }\n    _getV4ConnectPatches() {\n        return {\n            v4PatchConnect: (moduleExports) => {\n                if ((0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n                    this._unwrap(moduleExports, 'connect');\n                }\n                this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n                return moduleExports;\n            },\n            v4UnpatchConnect: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports, 'connect');\n            },\n        };\n    }\n    // This patch will become unnecessary once\n    // https://jira.mongodb.org/browse/NODE-5639 is done.\n    _getV4ConnectionPoolCheckOut() {\n        return (original) => {\n            return function patchedCheckout(callback) {\n                const patchedCallback = api_1.context.bind(api_1.context.active(), callback);\n                return original.call(this, patchedCallback);\n            };\n        };\n    }\n    _getV4ConnectCommand() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedConnect(options, callback) {\n                // from v6.4 `connect` method only accepts an options param and returns a promise\n                // with the connection\n                if (original.length === 1) {\n                    const result = original.call(this, options);\n                    if (result && typeof result.then === 'function') {\n                        result.then(() => instrumentation.setPoolName(options), \n                        // this handler is set to pass the lint rules\n                        () => undefined);\n                    }\n                    return result;\n                }\n                // Earlier versions expects a callback param and return void\n                const patchedCallback = function (err, conn) {\n                    if (err || !conn) {\n                        callback(err, conn);\n                        return;\n                    }\n                    instrumentation.setPoolName(options);\n                    callback(err, conn);\n                };\n                return original.call(this, options, patchedCallback);\n            };\n        };\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _getV4ConnectionPatches() {\n        return {\n            v4PatchConnectionCallback: (moduleExports) => {\n                // patch insert operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.Connection.prototype.command)) {\n                    this._unwrap(moduleExports.Connection.prototype, 'command');\n                }\n                this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandCallback());\n                return moduleExports;\n            },\n            v4PatchConnectionPromise: (moduleExports) => {\n                // patch insert operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.Connection.prototype.command)) {\n                    this._unwrap(moduleExports.Connection.prototype, 'command');\n                }\n                this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandPromise());\n                return moduleExports;\n            },\n            v4UnpatchConnection: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports.Connection.prototype, 'command');\n            },\n        };\n    }\n    /** Creates spans for common operations */\n    _getV3PatchOperation(operationName) {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedServerCommand(server, ns, ops, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = typeof options === 'function' ? options : callback;\n                if (skipInstrumentation ||\n                    typeof resultHandler !== 'function' ||\n                    typeof ops !== 'object') {\n                    if (typeof options === 'function') {\n                        return original.call(this, server, ns, ops, options);\n                    }\n                    else {\n                        return original.call(this, server, ns, ops, options, callback);\n                    }\n                }\n                const attributes = instrumentation._getV3SpanAttributes(ns, server, \n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                ops[0], operationName);\n                const spanName = instrumentation._spanNameFromAttrs(attributes);\n                const span = instrumentation.tracer.startSpan(spanName, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n                // handle when options is the callback to send the correct number of args\n                if (typeof options === 'function') {\n                    return original.call(this, server, ns, ops, patchedCallback);\n                }\n                else {\n                    return original.call(this, server, ns, ops, options, patchedCallback);\n                }\n            };\n        };\n    }\n    /** Creates spans for command operation */\n    _getV3PatchCommand() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedServerCommand(server, ns, cmd, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = typeof options === 'function' ? options : callback;\n                if (skipInstrumentation ||\n                    typeof resultHandler !== 'function' ||\n                    typeof cmd !== 'object') {\n                    if (typeof options === 'function') {\n                        return original.call(this, server, ns, cmd, options);\n                    }\n                    else {\n                        return original.call(this, server, ns, cmd, options, callback);\n                    }\n                }\n                const commandType = MongoDBInstrumentation._getCommandType(cmd);\n                const operationName = commandType === internal_types_1.MongodbCommandType.UNKNOWN ? undefined : commandType;\n                const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, operationName);\n                const spanName = instrumentation._spanNameFromAttrs(attributes);\n                const span = instrumentation.tracer.startSpan(spanName, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n                // handle when options is the callback to send the correct number of args\n                if (typeof options === 'function') {\n                    return original.call(this, server, ns, cmd, patchedCallback);\n                }\n                else {\n                    return original.call(this, server, ns, cmd, options, patchedCallback);\n                }\n            };\n        };\n    }\n    /** Creates spans for command operation */\n    _getV4PatchCommandCallback() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedV4ServerCommand(ns, cmd, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = callback;\n                const commandType = Object.keys(cmd)[0];\n                if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n                    return original.call(this, ns, cmd, options, callback);\n                }\n                let span = undefined;\n                if (!skipInstrumentation) {\n                    const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n                    const spanName = instrumentation._spanNameFromAttrs(attributes);\n                    span = instrumentation.tracer.startSpan(spanName, {\n                        kind: api_1.SpanKind.CLIENT,\n                        attributes,\n                    });\n                }\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\n                return original.call(this, ns, cmd, options, patchedCallback);\n            };\n        };\n    }\n    _getV4PatchCommandPromise() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedV4ServerCommand(...args) {\n                const [ns, cmd] = args;\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const commandType = Object.keys(cmd)[0];\n                const resultHandler = () => undefined;\n                if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n                    return original.apply(this, args);\n                }\n                let span = undefined;\n                if (!skipInstrumentation) {\n                    const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n                    const spanName = instrumentation._spanNameFromAttrs(attributes);\n                    span = instrumentation.tracer.startSpan(spanName, {\n                        kind: api_1.SpanKind.CLIENT,\n                        attributes,\n                    });\n                }\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\n                const result = original.apply(this, args);\n                result.then((res) => patchedCallback(null, res), (err) => patchedCallback(err));\n                return result;\n            };\n        };\n    }\n    /** Creates spans for find operation */\n    _getV3PatchFind() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedServerCommand(server, ns, cmd, cursorState, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = typeof options === 'function' ? options : callback;\n                if (skipInstrumentation ||\n                    typeof resultHandler !== 'function' ||\n                    typeof cmd !== 'object') {\n                    if (typeof options === 'function') {\n                        return original.call(this, server, ns, cmd, cursorState, options);\n                    }\n                    else {\n                        return original.call(this, server, ns, cmd, cursorState, options, callback);\n                    }\n                }\n                const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, 'find');\n                const spanName = instrumentation._spanNameFromAttrs(attributes);\n                const span = instrumentation.tracer.startSpan(spanName, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n                // handle when options is the callback to send the correct number of args\n                if (typeof options === 'function') {\n                    return original.call(this, server, ns, cmd, cursorState, patchedCallback);\n                }\n                else {\n                    return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);\n                }\n            };\n        };\n    }\n    /** Creates spans for find operation */\n    _getV3PatchCursor() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedServerCommand(server, ns, cursorState, batchSize, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = typeof options === 'function' ? options : callback;\n                if (skipInstrumentation || typeof resultHandler !== 'function') {\n                    if (typeof options === 'function') {\n                        return original.call(this, server, ns, cursorState, batchSize, options);\n                    }\n                    else {\n                        return original.call(this, server, ns, cursorState, batchSize, options, callback);\n                    }\n                }\n                const attributes = instrumentation._getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore');\n                const spanName = instrumentation._spanNameFromAttrs(attributes);\n                const span = instrumentation.tracer.startSpan(spanName, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n                // handle when options is the callback to send the correct number of args\n                if (typeof options === 'function') {\n                    return original.call(this, server, ns, cursorState, batchSize, patchedCallback);\n                }\n                else {\n                    return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);\n                }\n            };\n        };\n    }\n    /**\n     * Get the mongodb command type from the object.\n     * @param command Internal mongodb command object\n     */\n    static _getCommandType(command) {\n        if (command.createIndexes !== undefined) {\n            return internal_types_1.MongodbCommandType.CREATE_INDEXES;\n        }\n        else if (command.findandmodify !== undefined) {\n            return internal_types_1.MongodbCommandType.FIND_AND_MODIFY;\n        }\n        else if (command.ismaster !== undefined) {\n            return internal_types_1.MongodbCommandType.IS_MASTER;\n        }\n        else if (command.count !== undefined) {\n            return internal_types_1.MongodbCommandType.COUNT;\n        }\n        else if (command.aggregate !== undefined) {\n            return internal_types_1.MongodbCommandType.AGGREGATE;\n        }\n        else {\n            return internal_types_1.MongodbCommandType.UNKNOWN;\n        }\n    }\n    /**\n     * Determine a span's attributes by fetching related metadata from the context\n     * @param connectionCtx mongodb internal connection context\n     * @param ns mongodb namespace\n     * @param command mongodb internal representation of a command\n     */\n    _getV4SpanAttributes(connectionCtx, ns, command, operation) {\n        let host, port;\n        if (connectionCtx) {\n            const hostParts = typeof connectionCtx.address === 'string'\n                ? connectionCtx.address.split(':')\n                : '';\n            if (hostParts.length === 2) {\n                host = hostParts[0];\n                port = hostParts[1];\n            }\n        }\n        // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n        let commandObj;\n        if (command?.documents && command.documents[0]) {\n            commandObj = command.documents[0];\n        }\n        else if (command?.cursors) {\n            commandObj = command.cursors;\n        }\n        else {\n            commandObj = command;\n        }\n        return this._getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);\n    }\n    /**\n     * Determine a span's attributes by fetching related metadata from the context\n     * @param ns mongodb namespace\n     * @param topology mongodb internal representation of the network topology\n     * @param command mongodb internal representation of a command\n     */\n    _getV3SpanAttributes(ns, topology, command, operation) {\n        // Extract host/port info.\n        let host;\n        let port;\n        if (topology && topology.s) {\n            host = topology.s.options?.host ?? topology.s.host;\n            port = (topology.s.options?.port ?? topology.s.port)?.toString();\n            if (host == null || port == null) {\n                const address = topology.description?.address;\n                if (address) {\n                    const addressSegments = address.split(':');\n                    host = addressSegments[0];\n                    port = addressSegments[1];\n                }\n            }\n        }\n        // The namespace is a combination of the database name and the name of the\n        // collection or index, like so: [database-name].[collection-or-index-name].\n        // It could be a string or an instance of MongoDBNamespace, as such we\n        // always coerce to a string to extract db and collection.\n        const [dbName, dbCollection] = ns.toString().split('.');\n        // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n        const commandObj = command?.query ?? command?.q ?? command;\n        return this._getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);\n    }\n    _getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation) {\n        const attributes = {};\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n            attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MONGODB;\n            attributes[semconv_1.ATTR_DB_NAME] = dbName;\n            attributes[semconv_1.ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n            attributes[semconv_1.ATTR_DB_OPERATION] = operation;\n            attributes[semconv_1.ATTR_DB_CONNECTION_STRING] =\n                `mongodb://${host}:${port}/${dbName}`;\n        }\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB;\n            attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = dbName;\n            attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = operation;\n            attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = dbCollection;\n        }\n        if (host && port) {\n            if (this._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_NET_PEER_NAME] = host;\n            }\n            if (this._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n            }\n            const portNumber = parseInt(port, 10);\n            if (!isNaN(portNumber)) {\n                if (this._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_NET_PEER_PORT] = portNumber;\n                }\n                if (this._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber;\n                }\n            }\n        }\n        if (commandObj) {\n            const { dbStatementSerializer: configDbStatementSerializer } = this.getConfig();\n            const dbStatementSerializer = typeof configDbStatementSerializer === 'function'\n                ? configDbStatementSerializer\n                : this._defaultDbStatementSerializer.bind(this);\n            (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                const query = dbStatementSerializer(commandObj);\n                if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = query;\n                }\n                if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = query;\n                }\n            }, err => {\n                if (err) {\n                    this._diag.error('Error running dbStatementSerializer hook', err);\n                }\n            }, true);\n        }\n        return attributes;\n    }\n    _spanNameFromAttrs(attributes) {\n        let spanName;\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n            spanName =\n                [\n                    attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME],\n                    attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME],\n                ]\n                    .filter(attr => attr)\n                    .join(' ') || semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB;\n        }\n        else {\n            spanName = `mongodb.${attributes[semconv_1.ATTR_DB_OPERATION] || 'command'}`;\n        }\n        return spanName;\n    }\n    _getDefaultDbStatementReplacer() {\n        const seen = new WeakSet();\n        return (_key, value) => {\n            // undefined, boolean, number, bigint, string, symbol, function || null\n            if (typeof value !== 'object' || !value)\n                return '?';\n            // objects (including arrays)\n            if (seen.has(value))\n                return '[Circular]';\n            seen.add(value);\n            return value;\n        };\n    }\n    _defaultDbStatementSerializer(commandObj) {\n        const { enhancedDatabaseReporting } = this.getConfig();\n        if (enhancedDatabaseReporting) {\n            return JSON.stringify(commandObj);\n        }\n        return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n    }\n    /**\n     * Triggers the response hook in case it is defined.\n     * @param span The span to add the results to.\n     * @param result The command result\n     */\n    _handleExecutionResult(span, result) {\n        const { responseHook } = this.getConfig();\n        if (typeof responseHook === 'function') {\n            (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                responseHook(span, { data: result });\n            }, err => {\n                if (err) {\n                    this._diag.error('Error running response hook', err);\n                }\n            }, true);\n        }\n    }\n    /**\n     * Ends a created span.\n     * @param span The created span to end.\n     * @param resultHandler A callback function.\n     * @param connectionId: The connection ID of the Command response.\n     */\n    _patchEnd(span, resultHandler, connectionId, commandType) {\n        // mongodb is using \"tick\" when calling a callback, this way the context\n        // in final callback (resultHandler) is lost\n        const activeContext = api_1.context.active();\n        const instrumentation = this;\n        let spanEnded = false;\n        return function patchedEnd(...args) {\n            if (!spanEnded) {\n                spanEnded = true;\n                const error = args[0];\n                if (span) {\n                    if (error instanceof Error) {\n                        span.setStatus({\n                            code: api_1.SpanStatusCode.ERROR,\n                            message: error.message,\n                        });\n                    }\n                    else {\n                        const result = args[1];\n                        instrumentation._handleExecutionResult(span, result);\n                    }\n                    span.end();\n                }\n                if (commandType === 'endSessions') {\n                    instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n                }\n            }\n            return api_1.context.with(activeContext, () => {\n                return resultHandler.apply(this, args);\n            });\n        };\n    }\n    setPoolName(options) {\n        const host = options.hostAddress?.host;\n        const port = options.hostAddress?.port;\n        const database = options.dbName;\n        const poolName = `mongodb://${host}:${port}/${database}`;\n        this._poolName = poolName;\n    }\n    _checkSkipInstrumentation(currentSpan) {\n        const requireParentSpan = this.getConfig().requireParentSpan;\n        const hasNoParentSpan = currentSpan === undefined;\n        return requireParentSpan === true && hasNoParentSpan;\n    }\n}\nexports.MongoDBInstrumentation = MongoDBInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongodbCommandType = void 0;\nvar MongodbCommandType;\n(function (MongodbCommandType) {\n    MongodbCommandType[\"CREATE_INDEXES\"] = \"createIndexes\";\n    MongodbCommandType[\"FIND_AND_MODIFY\"] = \"findAndModify\";\n    MongodbCommandType[\"IS_MASTER\"] = \"isMaster\";\n    MongodbCommandType[\"COUNT\"] = \"count\";\n    MongodbCommandType[\"UNKNOWN\"] = \"unknown\";\n})(MongodbCommandType = exports.MongodbCommandType || (exports.MongodbCommandType = {}));\n//# sourceMappingURL=types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongodbCommandType = exports.MongoDBInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"MongoDBInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.MongoDBInstrumentation; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"MongodbCommandType\", { enumerable: true, get: function () { return types_1.MongodbCommandType; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_OPERATION = exports.ATTR_DB_NAME = exports.ATTR_DB_MONGODB_COLLECTION = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexports.ATTR_DB_OPERATION = 'db.operation';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handleCallbackResponse = exports.handlePromiseResponse = exports.getAttributesFromCollection = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semconv_1 = require(\"./semconv\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nfunction getAttributesFromCollection(collection, dbSemconvStability, netSemconvStability) {\n    const attrs = {};\n    if (dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n        attrs[semconv_1.ATTR_DB_MONGODB_COLLECTION] = collection.name;\n        attrs[semconv_1.ATTR_DB_NAME] = collection.conn.name;\n        attrs[semconv_1.ATTR_DB_USER] = collection.conn.user;\n    }\n    if (dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attrs[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = collection.name;\n        attrs[semantic_conventions_1.ATTR_DB_NAMESPACE] = collection.conn.name;\n        // db.user has no stable replacement\n    }\n    if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n        attrs[semconv_1.ATTR_NET_PEER_NAME] = collection.conn.host;\n        attrs[semconv_1.ATTR_NET_PEER_PORT] = collection.conn.port;\n    }\n    if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attrs[semantic_conventions_1.ATTR_SERVER_ADDRESS] = collection.conn.host;\n        attrs[semantic_conventions_1.ATTR_SERVER_PORT] = collection.conn.port;\n    }\n    return attrs;\n}\nexports.getAttributesFromCollection = getAttributesFromCollection;\nfunction setErrorStatus(span, error = {}) {\n    span.recordException(error);\n    span.setStatus({\n        code: api_1.SpanStatusCode.ERROR,\n        message: `${error.message} ${error.code ? `\\nMongoose Error Code: ${error.code}` : ''}`,\n    });\n}\nfunction applyResponseHook(span, response, responseHook, moduleVersion = undefined) {\n    if (!responseHook) {\n        return;\n    }\n    (0, instrumentation_1.safeExecuteInTheMiddle)(() => responseHook(span, { moduleVersion, response }), e => {\n        if (e) {\n            api_1.diag.error('mongoose instrumentation: responseHook error', e);\n        }\n    }, true);\n}\nfunction handlePromiseResponse(execResponse, span, responseHook, moduleVersion = undefined) {\n    if (!(execResponse instanceof Promise)) {\n        applyResponseHook(span, execResponse, responseHook, moduleVersion);\n        span.end();\n        return execResponse;\n    }\n    return execResponse\n        .then(response => {\n        applyResponseHook(span, response, responseHook, moduleVersion);\n        return response;\n    })\n        .catch(err => {\n        setErrorStatus(span, err);\n        throw err;\n    })\n        .finally(() => span.end());\n}\nexports.handlePromiseResponse = handlePromiseResponse;\nfunction handleCallbackResponse(callback, exec, originalThis, span, args, responseHook, moduleVersion = undefined) {\n    let callbackArgumentIndex = 0;\n    if (args.length === 2) {\n        callbackArgumentIndex = 1;\n    }\n    else if (args.length === 3) {\n        callbackArgumentIndex = 2;\n    }\n    args[callbackArgumentIndex] = (err, response) => {\n        if (err) {\n            setErrorStatus(span, err);\n        }\n        else {\n            applyResponseHook(span, response, responseHook, moduleVersion);\n        }\n        span.end();\n        return callback(err, response);\n    };\n    return exec.apply(originalThis, args);\n}\nexports.handleCallbackResponse = handleCallbackResponse;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.59.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongooseInstrumentation = exports._ALREADY_INSTRUMENTED = exports._STORED_PARENT_SPAN = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst utils_1 = require(\"./utils\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst semconv_1 = require(\"./semconv\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst contextCaptureFunctionsCommon = [\n    'deleteOne',\n    'deleteMany',\n    'find',\n    'findOne',\n    'estimatedDocumentCount',\n    'countDocuments',\n    'distinct',\n    'where',\n    '$where',\n    'findOneAndUpdate',\n    'findOneAndDelete',\n    'findOneAndReplace',\n];\nconst contextCaptureFunctions6 = [\n    'remove',\n    'count',\n    'findOneAndRemove',\n    ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions7 = [\n    'count',\n    'findOneAndRemove',\n    ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\nfunction getContextCaptureFunctions(moduleVersion) {\n    /* istanbul ignore next */\n    if (!moduleVersion) {\n        return contextCaptureFunctionsCommon;\n    }\n    else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n        return contextCaptureFunctions6;\n    }\n    else if (moduleVersion.startsWith('7.')) {\n        return contextCaptureFunctions7;\n    }\n    else {\n        return contextCaptureFunctions8;\n    }\n}\nfunction instrumentRemove(moduleVersion) {\n    return ((moduleVersion &&\n        (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) ||\n        false);\n}\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion) {\n    if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n        return false;\n    }\n    const minor = parseInt(moduleVersion.split('.')[1], 10);\n    return minor >= 21;\n}\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexports._STORED_PARENT_SPAN = Symbol('stored-parent-span');\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexports._ALREADY_INSTRUMENTED = Symbol('already-instrumented');\nclass MongooseInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        const module = new instrumentation_1.InstrumentationNodeModuleDefinition('mongoose', ['>=5.9.7 <10'], this.patch.bind(this), this.unpatch.bind(this));\n        return module;\n    }\n    patch(module, moduleVersion) {\n        const moduleExports = module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save', moduleVersion));\n        // mongoose applies this code on module require:\n        // Model.prototype.$save = Model.prototype.save;\n        // which captures the save function before it is patched.\n        // so we need to apply the same logic after instrumenting the save function.\n        moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n        if (instrumentRemove(moduleVersion)) {\n            this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove', moduleVersion));\n        }\n        // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n        //\n        // See https://github.com/Automattic/mongoose/blob/7dbda12dca1bd7adb9e270d7de8ac5229606ce72/lib/document.js#L861.\n        // - `this` is a Query object\n        // - the update happens in a pre-hook that gets called when Query.exec() is already running.\n        // - when we instrument Query.exec(), we don't have access to the options yet as they get set during Query.exec() only.\n        //\n        // Unfortunately, after Query.exec() is finished, the options are left modified by the library, so just delaying\n        // attaching the attributes after the span is done is not an option. Therefore, we patch Model methods\n        // and grab the data directly where the user provides it.\n        //\n        // ref: https://github.com/Automattic/mongoose/pull/15908 (introduced this behavior)\n        if (needsDocumentMethodPatch(moduleVersion)) {\n            this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne', moduleVersion));\n            this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne', moduleVersion));\n        }\n        this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec(moduleVersion));\n        this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec(moduleVersion));\n        const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n        contextCaptureFunctions.forEach((funcName) => {\n            this._wrap(moduleExports.Query.prototype, funcName, this.patchAndCaptureSpanContext(funcName));\n        });\n        this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n        this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany', moduleVersion));\n        this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite', moduleVersion));\n        return moduleExports;\n    }\n    unpatch(module, moduleVersion) {\n        const moduleExports = module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n        this._unwrap(moduleExports.Model.prototype, 'save');\n        // revert the patch for $save which we applied by aliasing it to patched `save`\n        moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n        if (instrumentRemove(moduleVersion)) {\n            this._unwrap(moduleExports.Model.prototype, 'remove');\n        }\n        if (needsDocumentMethodPatch(moduleVersion)) {\n            this._unwrap(moduleExports.Model.prototype, 'updateOne');\n            this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n        }\n        this._unwrap(moduleExports.Query.prototype, 'exec');\n        this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n        contextCaptureFunctions.forEach((funcName) => {\n            this._unwrap(moduleExports.Query.prototype, funcName);\n        });\n        this._unwrap(moduleExports.Model, 'aggregate');\n        this._unwrap(moduleExports.Model, 'insertMany');\n        this._unwrap(moduleExports.Model, 'bulkWrite');\n    }\n    patchAggregateExec(moduleVersion) {\n        const self = this;\n        return (originalAggregate) => {\n            return function exec(callback) {\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return originalAggregate.apply(this, arguments);\n                }\n                const parentSpan = this[exports._STORED_PARENT_SPAN];\n                const attributes = {};\n                const { dbStatementSerializer } = self.getConfig();\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer('aggregate', {\n                        options: this.options,\n                        aggregatePipeline: this._pipeline,\n                    });\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', attributes, parentSpan);\n                return self._handleResponse(span, originalAggregate, this, arguments, callback, moduleVersion);\n            };\n        };\n    }\n    patchQueryExec(moduleVersion) {\n        const self = this;\n        return (originalExec) => {\n            return function exec(callback) {\n                // Skip if already instrumented by document instance method patch\n                if (this[exports._ALREADY_INSTRUMENTED]) {\n                    return originalExec.apply(this, arguments);\n                }\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return originalExec.apply(this, arguments);\n                }\n                const parentSpan = this[exports._STORED_PARENT_SPAN];\n                const attributes = {};\n                const { dbStatementSerializer } = self.getConfig();\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer(this.op, {\n                        // Use public API methods (getFilter/getOptions) for better compatibility\n                        condition: this.getFilter?.() ?? this._conditions,\n                        updates: this._update,\n                        options: this.getOptions?.() ?? this.options,\n                        fields: this._fields,\n                    });\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, attributes, parentSpan);\n                return self._handleResponse(span, originalExec, this, arguments, callback, moduleVersion);\n            };\n        };\n    }\n    patchOnModelMethods(op, moduleVersion) {\n        const self = this;\n        return (originalOnModelFunction) => {\n            return function method(options, callback) {\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return originalOnModelFunction.apply(this, arguments);\n                }\n                const serializePayload = { document: this };\n                if (options && !(options instanceof Function)) {\n                    serializePayload.options = options;\n                }\n                const attributes = {};\n                const { dbStatementSerializer } = self.getConfig();\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer(op, serializePayload);\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes);\n                if (options instanceof Function) {\n                    callback = options;\n                    options = undefined;\n                }\n                return self._handleResponse(span, originalOnModelFunction, this, arguments, callback, moduleVersion);\n            };\n        };\n    }\n    // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n    _patchDocumentUpdateMethods(op, moduleVersion) {\n        const self = this;\n        return (originalMethod) => {\n            return function method(update, options, callback) {\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return originalMethod.apply(this, arguments);\n                }\n                // determine actual callback since different argument patterns are allowed\n                let actualCallback = callback;\n                let actualUpdate = update;\n                let actualOptions = options;\n                if (typeof update === 'function') {\n                    actualCallback = update;\n                    actualUpdate = undefined;\n                    actualOptions = undefined;\n                }\n                else if (typeof options === 'function') {\n                    actualCallback = options;\n                    actualOptions = undefined;\n                }\n                const attributes = {};\n                const dbStatementSerializer = self.getConfig().dbStatementSerializer;\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer(op, {\n                        // Document instance methods automatically use the document's _id as filter\n                        condition: { _id: this._id },\n                        updates: actualUpdate,\n                        options: actualOptions,\n                    });\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes);\n                const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback, moduleVersion);\n                // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n                if (result && typeof result === 'object') {\n                    result[exports._ALREADY_INSTRUMENTED] = true;\n                }\n                return result;\n            };\n        };\n    }\n    patchModelStatic(op, moduleVersion) {\n        const self = this;\n        return (original) => {\n            return function patchedStatic(docsOrOps, options, callback) {\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return original.apply(this, arguments);\n                }\n                if (typeof options === 'function') {\n                    callback = options;\n                    options = undefined;\n                }\n                const serializePayload = {};\n                switch (op) {\n                    case 'insertMany':\n                        serializePayload.documents = docsOrOps;\n                        break;\n                    case 'bulkWrite':\n                        serializePayload.operations = docsOrOps;\n                        break;\n                    default:\n                        serializePayload.document = docsOrOps;\n                        break;\n                }\n                if (options !== undefined) {\n                    serializePayload.options = options;\n                }\n                const attributes = {};\n                const { dbStatementSerializer } = self.getConfig();\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer(op, serializePayload);\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this.collection, this.modelName, op, attributes);\n                return self._handleResponse(span, original, this, arguments, callback, moduleVersion);\n            };\n        };\n    }\n    // we want to capture the otel span on the object which is calling exec.\n    // in the special case of aggregate, we need have no function to path\n    // on the Aggregate object to capture the context on, so we patch\n    // the aggregate of Model, and set the context on the Aggregate object\n    patchModelAggregate() {\n        const self = this;\n        return (original) => {\n            return function captureSpanContext() {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const aggregate = self._callOriginalFunction(() => original.apply(this, arguments));\n                if (aggregate)\n                    aggregate[exports._STORED_PARENT_SPAN] = currentSpan;\n                return aggregate;\n            };\n        };\n    }\n    patchAndCaptureSpanContext(funcName) {\n        const self = this;\n        return (original) => {\n            return function captureSpanContext() {\n                this[exports._STORED_PARENT_SPAN] = api_1.trace.getSpan(api_1.context.active());\n                return self._callOriginalFunction(() => original.apply(this, arguments));\n            };\n        };\n    }\n    _startSpan(collection, modelName, operation, attributes, parentSpan) {\n        const finalAttributes = {\n            ...attributes,\n            ...(0, utils_1.getAttributesFromCollection)(collection, this._dbSemconvStability, this._netSemconvStability),\n        };\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n            finalAttributes[semconv_1.ATTR_DB_OPERATION] = operation;\n            finalAttributes[semconv_1.ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility\n        }\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            finalAttributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = operation;\n            finalAttributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name\n        }\n        const spanName = this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE\n            ? `${operation} ${collection.name}`\n            : `mongoose.${modelName}.${operation}`;\n        return this.tracer.startSpan(spanName, {\n            kind: api_1.SpanKind.CLIENT,\n            attributes: finalAttributes,\n        }, parentSpan ? api_1.trace.setSpan(api_1.context.active(), parentSpan) : undefined);\n    }\n    _handleResponse(span, exec, originalThis, args, callback, moduleVersion = undefined) {\n        const self = this;\n        if (callback instanceof Function) {\n            return self._callOriginalFunction(() => (0, utils_1.handleCallbackResponse)(callback, exec, originalThis, span, args, self.getConfig().responseHook, moduleVersion));\n        }\n        else {\n            const response = self._callOriginalFunction(() => exec.apply(originalThis, args));\n            return (0, utils_1.handlePromiseResponse)(response, span, self.getConfig().responseHook, moduleVersion);\n        }\n    }\n    _callOriginalFunction(originalFunction) {\n        if (this.getConfig().suppressInternalInstrumentation) {\n            return api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), originalFunction);\n        }\n        else {\n            return originalFunction();\n        }\n    }\n}\nexports.MongooseInstrumentation = MongooseInstrumentation;\n//# sourceMappingURL=mongoose.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongooseInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar mongoose_1 = require(\"./mongoose\");\nObject.defineProperty(exports, \"MongooseInstrumentation\", { enumerable: true, get: function () { return mongoose_1.MongooseInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = exports.DB_SYSTEM_VALUE_MYSQL = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_MYSQL = 'mysql';\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Mysql specific attributes not covered by semantic conventions\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"MYSQL_VALUES\"] = \"db.mysql.values\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPoolNameOld = exports.arrayStringifyHelper = exports.getSpanName = exports.getDbValues = exports.getDbQueryText = exports.getJDBCString = exports.getConfig = void 0;\nfunction getConfig(config) {\n    const { host, port, database, user } = (config && config.connectionConfig) || config || {};\n    return { host, port, database, user };\n}\nexports.getConfig = getConfig;\nfunction getJDBCString(host, port, database) {\n    let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n    if (typeof port === 'number') {\n        jdbcString += `:${port}`;\n    }\n    if (typeof database === 'string') {\n        jdbcString += `/${database}`;\n    }\n    return jdbcString;\n}\nexports.getJDBCString = getJDBCString;\n/**\n * @returns the database query being executed.\n */\nfunction getDbQueryText(query) {\n    if (typeof query === 'string') {\n        return query;\n    }\n    else {\n        return query.sql;\n    }\n}\nexports.getDbQueryText = getDbQueryText;\nfunction getDbValues(query, values) {\n    if (typeof query === 'string') {\n        return arrayStringifyHelper(values);\n    }\n    else {\n        // According to https://github.com/mysqljs/mysql#performing-queries\n        // The values argument will override the values in the option object.\n        return arrayStringifyHelper(values || query.values);\n    }\n}\nexports.getDbValues = getDbValues;\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nfunction getSpanName(query) {\n    const rawQuery = typeof query === 'object' ? query.sql : query;\n    // Extract the SQL verb\n    const firstSpace = rawQuery?.indexOf(' ');\n    if (typeof firstSpace === 'number' && firstSpace !== -1) {\n        return rawQuery?.substring(0, firstSpace);\n    }\n    return rawQuery;\n}\nexports.getSpanName = getSpanName;\nfunction arrayStringifyHelper(arr) {\n    if (arr)\n        return `[${arr.toString()}]`;\n    return '';\n}\nexports.arrayStringifyHelper = arrayStringifyHelper;\nfunction getPoolNameOld(pool) {\n    const c = pool.config.connectionConfig;\n    let poolName = '';\n    poolName += c.host ? `host: '${c.host}', ` : '';\n    poolName += c.port ? `port: ${c.port}, ` : '';\n    poolName += c.database ? `database: '${c.database}', ` : '';\n    poolName += c.user ? `user: '${c.user}'` : '';\n    if (!c.user) {\n        poolName = poolName.substring(0, poolName.length - 2); //omit last comma\n    }\n    return poolName.trim();\n}\nexports.getPoolNameOld = getPoolNameOld;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.59.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mysql';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MySQLInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst AttributeNames_1 = require(\"./AttributeNames\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nclass MySQLInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    _updateMetricInstruments() {\n        this._connectionsUsageOld = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTIONS_USAGE, {\n            description: 'The number of connections that are currently in state described by the state attribute.',\n            unit: '{connection}',\n        });\n    }\n    /**\n     * Convenience function for updating the `db.client.connections.usage` metric.\n     * The name \"count\" comes from the eventually replacement for this metric per\n     * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n     */\n    _connCountAdd(n, poolNameOld, state) {\n        this._connectionsUsageOld?.add(n, { state, name: poolNameOld });\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('mysql', ['>=2.0.0 <3'], (moduleExports) => {\n                if ((0, instrumentation_1.isWrapped)(moduleExports.createConnection)) {\n                    this._unwrap(moduleExports, 'createConnection');\n                }\n                this._wrap(moduleExports, 'createConnection', this._patchCreateConnection());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.createPool)) {\n                    this._unwrap(moduleExports, 'createPool');\n                }\n                this._wrap(moduleExports, 'createPool', this._patchCreatePool());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.createPoolCluster)) {\n                    this._unwrap(moduleExports, 'createPoolCluster');\n                }\n                this._wrap(moduleExports, 'createPoolCluster', this._patchCreatePoolCluster());\n                return moduleExports;\n            }, (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports, 'createConnection');\n                this._unwrap(moduleExports, 'createPool');\n                this._unwrap(moduleExports, 'createPoolCluster');\n            }),\n        ];\n    }\n    // global export function\n    _patchCreateConnection() {\n        return (originalCreateConnection) => {\n            const thisPlugin = this;\n            return function createConnection(_connectionUri) {\n                const originalResult = originalCreateConnection(...arguments);\n                // This is unwrapped on next call after unpatch\n                thisPlugin._wrap(originalResult, 'query', thisPlugin._patchQuery(originalResult));\n                return originalResult;\n            };\n        };\n    }\n    // global export function\n    _patchCreatePool() {\n        return (originalCreatePool) => {\n            const thisPlugin = this;\n            return function createPool(_config) {\n                const pool = originalCreatePool(...arguments);\n                thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n                thisPlugin._wrap(pool, 'getConnection', thisPlugin._patchGetConnection(pool));\n                thisPlugin._wrap(pool, 'end', thisPlugin._patchPoolEnd(pool));\n                thisPlugin._setPoolCallbacks(pool, '');\n                return pool;\n            };\n        };\n    }\n    _patchPoolEnd(pool) {\n        return (originalPoolEnd) => {\n            const thisPlugin = this;\n            return function end(callback) {\n                const nAll = pool._allConnections.length;\n                const nFree = pool._freeConnections.length;\n                const nUsed = nAll - nFree;\n                const poolNameOld = (0, utils_1.getPoolNameOld)(pool);\n                thisPlugin._connCountAdd(-nUsed, poolNameOld, 'used');\n                thisPlugin._connCountAdd(-nFree, poolNameOld, 'idle');\n                originalPoolEnd.apply(pool, arguments);\n            };\n        };\n    }\n    // global export function\n    _patchCreatePoolCluster() {\n        return (originalCreatePoolCluster) => {\n            const thisPlugin = this;\n            return function createPool(_config) {\n                const cluster = originalCreatePoolCluster(...arguments);\n                // This is unwrapped on next call after unpatch\n                thisPlugin._wrap(cluster, 'getConnection', thisPlugin._patchGetConnection(cluster));\n                thisPlugin._wrap(cluster, 'add', thisPlugin._patchAdd(cluster));\n                return cluster;\n            };\n        };\n    }\n    _patchAdd(cluster) {\n        return (originalAdd) => {\n            const thisPlugin = this;\n            return function add(id, config) {\n                // Unwrap if unpatch has been called\n                if (!thisPlugin['_enabled']) {\n                    thisPlugin._unwrap(cluster, 'add');\n                    return originalAdd.apply(cluster, arguments);\n                }\n                originalAdd.apply(cluster, arguments);\n                const nodes = cluster['_nodes'];\n                if (nodes) {\n                    const nodeId = typeof id === 'object'\n                        ? 'CLUSTER::' + cluster._lastId\n                        : String(id);\n                    const pool = nodes[nodeId].pool;\n                    thisPlugin._setPoolCallbacks(pool, id);\n                }\n            };\n        };\n    }\n    // method on cluster or pool\n    _patchGetConnection(pool) {\n        return (originalGetConnection) => {\n            const thisPlugin = this;\n            return function getConnection(arg1, arg2, arg3) {\n                // Unwrap if unpatch has been called\n                if (!thisPlugin['_enabled']) {\n                    thisPlugin._unwrap(pool, 'getConnection');\n                    return originalGetConnection.apply(pool, arguments);\n                }\n                if (arguments.length === 1 && typeof arg1 === 'function') {\n                    const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg1);\n                    return originalGetConnection.call(pool, patchFn);\n                }\n                if (arguments.length === 2 && typeof arg2 === 'function') {\n                    const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg2);\n                    return originalGetConnection.call(pool, arg1, patchFn);\n                }\n                if (arguments.length === 3 && typeof arg3 === 'function') {\n                    const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg3);\n                    return originalGetConnection.call(pool, arg1, arg2, patchFn);\n                }\n                return originalGetConnection.apply(pool, arguments);\n            };\n        };\n    }\n    _getConnectionCallbackPatchFn(cb) {\n        const thisPlugin = this;\n        const activeContext = api_1.context.active();\n        return function (err, connection) {\n            if (connection) {\n                // this is the callback passed into a query\n                // no need to unwrap\n                if (!(0, instrumentation_1.isWrapped)(connection.query)) {\n                    thisPlugin._wrap(connection, 'query', thisPlugin._patchQuery(connection));\n                }\n            }\n            if (typeof cb === 'function') {\n                api_1.context.with(activeContext, cb, this, err, connection);\n            }\n        };\n    }\n    _patchQuery(connection) {\n        return (originalQuery) => {\n            const thisPlugin = this;\n            return function query(query, _valuesOrCallback, _callback) {\n                if (!thisPlugin['_enabled']) {\n                    thisPlugin._unwrap(connection, 'query');\n                    return originalQuery.apply(connection, arguments);\n                }\n                const attributes = {};\n                const { host, port, database, user } = (0, utils_1.getConfig)(connection.config);\n                const portNumber = parseInt(port, 10);\n                const dbQueryText = (0, utils_1.getDbQueryText)(query);\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MYSQL;\n                    attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = (0, utils_1.getJDBCString)(host, port, database);\n                    attributes[semconv_1.ATTR_DB_NAME] = database;\n                    attributes[semconv_1.ATTR_DB_USER] = user;\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText;\n                }\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MYSQL;\n                    attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = database;\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText;\n                }\n                if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_NET_PEER_NAME] = host;\n                    if (!isNaN(portNumber)) {\n                        attributes[semconv_1.ATTR_NET_PEER_PORT] = portNumber;\n                    }\n                }\n                if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n                    if (!isNaN(portNumber)) {\n                        attributes[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber;\n                    }\n                }\n                const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(query), {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                if (thisPlugin.getConfig().enhancedDatabaseReporting) {\n                    let values;\n                    if (Array.isArray(_valuesOrCallback)) {\n                        values = _valuesOrCallback;\n                    }\n                    else if (arguments[2]) {\n                        values = [_valuesOrCallback];\n                    }\n                    span.setAttribute(AttributeNames_1.AttributeNames.MYSQL_VALUES, (0, utils_1.getDbValues)(query, values));\n                }\n                const cbIndex = Array.from(arguments).findIndex(arg => typeof arg === 'function');\n                const parentContext = api_1.context.active();\n                if (cbIndex === -1) {\n                    const streamableQuery = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                        return originalQuery.apply(connection, arguments);\n                    });\n                    api_1.context.bind(parentContext, streamableQuery);\n                    return streamableQuery\n                        .on('error', err => span.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: err.message,\n                    }))\n                        .on('end', () => {\n                        span.end();\n                    });\n                }\n                else {\n                    thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, parentContext));\n                    return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                        return originalQuery.apply(connection, arguments);\n                    });\n                }\n            };\n        };\n    }\n    _patchCallbackQuery(span, parentContext) {\n        return (originalCallback) => {\n            return function (err, results, fields) {\n                if (err) {\n                    span.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: err.message,\n                    });\n                }\n                span.end();\n                return api_1.context.with(parentContext, () => originalCallback(...arguments));\n            };\n        };\n    }\n    _setPoolCallbacks(pool, id) {\n        const poolNameOld = id || (0, utils_1.getPoolNameOld)(pool);\n        pool.on('connection', _connection => {\n            this._connCountAdd(1, poolNameOld, 'idle');\n        });\n        pool.on('acquire', _connection => {\n            this._connCountAdd(-1, poolNameOld, 'idle');\n            this._connCountAdd(1, poolNameOld, 'used');\n        });\n        pool.on('release', _connection => {\n            this._connCountAdd(1, poolNameOld, 'idle');\n            this._connCountAdd(-1, poolNameOld, 'used');\n        });\n    }\n}\nexports.MySQLInstrumentation = MySQLInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MySQLInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"MySQLInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.MySQLInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_VALUE_MYSQL = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_MYSQL = 'mysql';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addSqlCommenterComment = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n// NOTE: This function currently is returning false-positives\n// in cases where comment characters appear in string literals\n// (\"SELECT '-- not a comment';\" would return true, although has no comment)\nfunction hasValidSqlComment(query) {\n    const indexOpeningDashDashComment = query.indexOf('--');\n    if (indexOpeningDashDashComment >= 0) {\n        return true;\n    }\n    const indexOpeningSlashComment = query.indexOf('/*');\n    if (indexOpeningSlashComment < 0) {\n        return false;\n    }\n    const indexClosingSlashComment = query.indexOf('*/');\n    return indexOpeningDashDashComment < indexClosingSlashComment;\n}\n// sqlcommenter specification (https://google.github.io/sqlcommenter/spec/#value-serialization)\n// expects us to URL encode based on the RFC 3986 spec (https://en.wikipedia.org/wiki/Percent-encoding),\n// but encodeURIComponent does not handle some characters correctly (! ' ( ) *),\n// which means we need special handling for this\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\nfunction fixedEncodeURIComponent(str) {\n    return encodeURIComponent(str).replace(/[!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);\n}\nfunction addSqlCommenterComment(span, query) {\n    if (typeof query !== 'string' || query.length === 0) {\n        return query;\n    }\n    // As per sqlcommenter spec we shall not add a comment if there already is a comment\n    // in the query\n    if (hasValidSqlComment(query)) {\n        return query;\n    }\n    const propagator = new core_1.W3CTraceContextPropagator();\n    const headers = {};\n    propagator.inject(api_1.trace.setSpan(api_1.ROOT_CONTEXT, span), headers, api_1.defaultTextMapSetter);\n    // sqlcommenter spec requires keys in the comment to be sorted lexicographically\n    const sortedKeys = Object.keys(headers).sort();\n    if (sortedKeys.length === 0) {\n        return query;\n    }\n    const commentString = sortedKeys\n        .map(key => {\n        const encodedValue = fixedEncodeURIComponent(headers[key]);\n        return `${key}='${encodedValue}'`;\n    })\n        .join(',');\n    return `${query} /*${commentString}*/`;\n}\nexports.addSqlCommenterComment = addSqlCommenterComment;\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getConnectionPrototypeToInstrument = exports.once = exports.getSpanName = exports.getQueryText = exports.getConnectionAttributes = void 0;\nconst semconv_1 = require(\"./semconv\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\n/**\n * Get an Attributes map from a mysql connection config object\n *\n * @param config ConnectionConfig\n */\nfunction getConnectionAttributes(config, dbSemconvStability, netSemconvStability) {\n    const { host, port, database, user } = getConfig(config);\n    const attrs = {};\n    if (dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n        attrs[semconv_1.ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database);\n        attrs[semconv_1.ATTR_DB_NAME] = database;\n        attrs[semconv_1.ATTR_DB_USER] = user;\n    }\n    if (dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attrs[semantic_conventions_1.ATTR_DB_NAMESPACE] = database;\n    }\n    const portNumber = parseInt(port, 10);\n    if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n        attrs[semconv_1.ATTR_NET_PEER_NAME] = host;\n        if (!isNaN(portNumber)) {\n            attrs[semconv_1.ATTR_NET_PEER_PORT] = portNumber;\n        }\n    }\n    if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attrs[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n        if (!isNaN(portNumber)) {\n            attrs[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber;\n        }\n    }\n    return attrs;\n}\nexports.getConnectionAttributes = getConnectionAttributes;\nfunction getConfig(config) {\n    const { host, port, database, user } = (config && config.connectionConfig) || config || {};\n    return { host, port, database, user };\n}\nfunction getJDBCString(host, port, database) {\n    let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n    if (typeof port === 'number') {\n        jdbcString += `:${port}`;\n    }\n    if (typeof database === 'string') {\n        jdbcString += `/${database}`;\n    }\n    return jdbcString;\n}\n/**\n * Conjures up the value for the db.query.text attribute by formatting a SQL query.\n */\nfunction getQueryText(query, format, values, maskStatement = false, maskStatementHook = defaultMaskingHook) {\n    const [querySql, queryValues] = typeof query === 'string'\n        ? [query, values]\n        : [query.sql, hasValues(query) ? values || query.values : values];\n    try {\n        if (maskStatement) {\n            return maskStatementHook(querySql);\n        }\n        else if (format && queryValues) {\n            return format(querySql, queryValues);\n        }\n        else {\n            return querySql;\n        }\n    }\n    catch (e) {\n        return 'Could not determine the query due to an error in masking or formatting';\n    }\n}\nexports.getQueryText = getQueryText;\n/**\n * Replaces numeric values and quoted strings in the query with placeholders ('?').\n *\n * - `\\b\\d+\\b`: Matches whole numbers (integers) and replaces them with '?'.\n * - `([\"'])(?:(?=(\\\\?))\\2.)*?\\1`:\n *   - Matches quoted strings (both single `'` and double `\"` quotes).\n *   - Uses a lookahead `(?=(\\\\?))` to detect an optional backslash without consuming it immediately.\n *   - Captures the optional backslash `\\2` and ensures escaped quotes inside the string are handled correctly.\n *   - Ensures that only complete quoted strings are replaced with '?'.\n *\n * This prevents accidental replacement of escaped quotes within strings and ensures that the\n * query structure remains intact while masking sensitive data.\n */\nfunction defaultMaskingHook(query) {\n    return query\n        .replace(/\\b\\d+\\b/g, '?')\n        .replace(/([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g, '?');\n}\nfunction hasValues(obj) {\n    return 'values' in obj;\n}\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nfunction getSpanName(query) {\n    const rawQuery = typeof query === 'object' ? query.sql : query;\n    // Extract the SQL verb\n    const firstSpace = rawQuery?.indexOf(' ');\n    if (typeof firstSpace === 'number' && firstSpace !== -1) {\n        return rawQuery?.substring(0, firstSpace);\n    }\n    return rawQuery;\n}\nexports.getSpanName = getSpanName;\nconst once = (fn) => {\n    let called = false;\n    return (...args) => {\n        if (called)\n            return;\n        called = true;\n        return fn(...args);\n    };\n};\nexports.once = once;\nfunction getConnectionPrototypeToInstrument(connection) {\n    const connectionPrototype = connection.prototype;\n    const basePrototype = Object.getPrototypeOf(connectionPrototype);\n    // mysql2@3.11.5 included a refactoring, where most code was moved out of the `Connection` class and into a shared base\n    // so we need to instrument that instead, see https://github.com/sidorares/node-mysql2/pull/3081\n    // This checks if the functions we're instrumenting are there on the base - we cannot use the presence of a base\n    // prototype since EventEmitter is the base for mysql2@<=3.11.4\n    if (typeof basePrototype?.query === 'function' &&\n        typeof basePrototype?.execute === 'function') {\n        return basePrototype;\n    }\n    // otherwise instrument the connection directly.\n    return connectionPrototype;\n}\nexports.getConnectionPrototypeToInstrument = getConnectionPrototypeToInstrument;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.59.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mysql2';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MySQL2Instrumentation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semconv_1 = require(\"./semconv\");\nconst sql_common_1 = require(\"@opentelemetry/sql-common\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst supportedVersions = ['>=1.4.2 <4'];\nclass MySQL2Instrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        let format;\n        function setFormatFunction(moduleExports) {\n            if (!format && moduleExports.format) {\n                format = moduleExports.format;\n            }\n        }\n        const patch = (ConnectionPrototype) => {\n            if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.query)) {\n                this._unwrap(ConnectionPrototype, 'query');\n            }\n            this._wrap(ConnectionPrototype, 'query', this._patchQuery(format, false));\n            if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.execute)) {\n                this._unwrap(ConnectionPrototype, 'execute');\n            }\n            this._wrap(ConnectionPrototype, 'execute', this._patchQuery(format, true));\n        };\n        const unpatch = (ConnectionPrototype) => {\n            this._unwrap(ConnectionPrototype, 'query');\n            this._unwrap(ConnectionPrototype, 'execute');\n        };\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('mysql2', supportedVersions, (moduleExports) => {\n                setFormatFunction(moduleExports);\n                return moduleExports;\n            }, () => { }, [\n                new instrumentation_1.InstrumentationNodeModuleFile('mysql2/promise.js', supportedVersions, (moduleExports) => {\n                    setFormatFunction(moduleExports);\n                    return moduleExports;\n                }, () => { }),\n                new instrumentation_1.InstrumentationNodeModuleFile('mysql2/lib/connection.js', supportedVersions, (moduleExports) => {\n                    const ConnectionPrototype = (0, utils_1.getConnectionPrototypeToInstrument)(moduleExports);\n                    patch(ConnectionPrototype);\n                    return moduleExports;\n                }, (moduleExports) => {\n                    if (moduleExports === undefined)\n                        return;\n                    const ConnectionPrototype = (0, utils_1.getConnectionPrototypeToInstrument)(moduleExports);\n                    unpatch(ConnectionPrototype);\n                }),\n            ]),\n        ];\n    }\n    _patchQuery(format, isPrepared) {\n        return (originalQuery) => {\n            const thisPlugin = this;\n            return function query(query, _valuesOrCallback, _callback) {\n                let values;\n                if (Array.isArray(_valuesOrCallback)) {\n                    values = _valuesOrCallback;\n                }\n                else if (arguments[2]) {\n                    values = [_valuesOrCallback];\n                }\n                const { maskStatement, maskStatementHook, responseHook } = thisPlugin.getConfig();\n                const attributes = (0, utils_1.getConnectionAttributes)(this.config, thisPlugin._dbSemconvStability, thisPlugin._netSemconvStability);\n                const dbQueryText = (0, utils_1.getQueryText)(query, format, values, maskStatement, maskStatementHook);\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MYSQL;\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText;\n                }\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MYSQL;\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText;\n                }\n                const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(query), {\n                    kind: api.SpanKind.CLIENT,\n                    attributes,\n                });\n                if (!isPrepared &&\n                    thisPlugin.getConfig().addSqlCommenterCommentToQueries) {\n                    arguments[0] = query =\n                        typeof query === 'string'\n                            ? (0, sql_common_1.addSqlCommenterComment)(span, query)\n                            : Object.assign(query, {\n                                sql: (0, sql_common_1.addSqlCommenterComment)(span, query.sql),\n                            });\n                }\n                const endSpan = (0, utils_1.once)((err, results) => {\n                    if (err) {\n                        span.setStatus({\n                            code: api.SpanStatusCode.ERROR,\n                            message: err.message,\n                        });\n                    }\n                    else {\n                        if (typeof responseHook === 'function') {\n                            (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                                responseHook(span, {\n                                    queryResults: results,\n                                });\n                            }, err => {\n                                if (err) {\n                                    thisPlugin._diag.warn('Failed executing responseHook', err);\n                                }\n                            }, true);\n                        }\n                    }\n                    span.end();\n                });\n                if (arguments.length === 1) {\n                    if (typeof query.onResult === 'function') {\n                        thisPlugin._wrap(query, 'onResult', thisPlugin._patchCallbackQuery(endSpan));\n                    }\n                    const streamableQuery = originalQuery.apply(this, arguments);\n                    // `end` in mysql behaves similarly to `result` in mysql2.\n                    streamableQuery\n                        .once('error', err => {\n                        endSpan(err);\n                    })\n                        .once('result', results => {\n                        endSpan(undefined, results);\n                    });\n                    return streamableQuery;\n                }\n                if (typeof arguments[1] === 'function') {\n                    thisPlugin._wrap(arguments, 1, thisPlugin._patchCallbackQuery(endSpan));\n                }\n                else if (typeof arguments[2] === 'function') {\n                    thisPlugin._wrap(arguments, 2, thisPlugin._patchCallbackQuery(endSpan));\n                }\n                return originalQuery.apply(this, arguments);\n            };\n        };\n    }\n    _patchCallbackQuery(endSpan) {\n        return (originalCallback) => {\n            return function (err, results, fields) {\n                endSpan(err, results);\n                return originalCallback(...arguments);\n            };\n        };\n    }\n}\nexports.MySQL2Instrumentation = MySQL2Instrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MySQL2Instrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"MySQL2Instrumentation\", { enumerable: true, get: function () { return instrumentation_1.MySQL2Instrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_VALUE_REDIS = exports.DB_SYSTEM_NAME_VALUE_REDIS = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_REDIS = 'redis';\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_REDIS = 'redis';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.endSpan = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst endSpan = (span, err) => {\n    if (err) {\n        span.recordException(err);\n        span.setStatus({\n            code: api_1.SpanStatusCode.ERROR,\n            message: err.message,\n        });\n    }\n    span.end();\n};\nexports.endSpan = endSpan;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultDbStatementSerializer = void 0;\n/**\n * List of regexes and the number of arguments that should be serialized for matching commands.\n * For example, HSET should serialize which key and field it's operating on, but not its value.\n * Setting the subset to -1 will serialize all arguments.\n * Commands without a match will have their first argument serialized.\n *\n * Refer to https://redis.io/commands/ for the full list.\n */\nconst serializationSubsets = [\n    {\n        regex: /^ECHO/i,\n        args: 0,\n    },\n    {\n        regex: /^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,\n        args: 1,\n    },\n    {\n        regex: /^(HSET|HMSET|LSET|LINSERT)/i,\n        args: 2,\n    },\n    {\n        regex: /^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,\n        args: -1,\n    },\n];\n/**\n * Given the redis command name and arguments, return a combination of the\n * command name + the allowed arguments according to `serializationSubsets`.\n * @param cmdName The redis command name\n * @param cmdArgs The redis command arguments\n * @returns a combination of the command name + args according to `serializationSubsets`.\n */\nconst defaultDbStatementSerializer = (cmdName, cmdArgs) => {\n    if (Array.isArray(cmdArgs) && cmdArgs.length) {\n        const nArgsToSerialize = serializationSubsets.find(({ regex }) => {\n            return regex.test(cmdName);\n        })?.args ?? 0;\n        const argsToSerialize = nArgsToSerialize >= 0 ? cmdArgs.slice(0, nArgsToSerialize) : cmdArgs;\n        if (cmdArgs.length > argsToSerialize.length) {\n            argsToSerialize.push(`[${cmdArgs.length - nArgsToSerialize} other arguments]`);\n        }\n        return `${cmdName} ${argsToSerialize.join(' ')}`;\n    }\n    return cmdName;\n};\nexports.defaultDbStatementSerializer = defaultDbStatementSerializer;\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-ioredis';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IORedisInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst instrumentation_2 = require(\"@opentelemetry/instrumentation\");\nconst utils_1 = require(\"./utils\");\nconst redis_common_1 = require(\"@opentelemetry/redis-common\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst DEFAULT_CONFIG = {\n    requireParentSpan: true,\n};\nclass IORedisInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig({ ...DEFAULT_CONFIG, ...config });\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('ioredis', ['>=2.0.0 <6'], (module, moduleVersion) => {\n                const moduleExports = module[Symbol.toStringTag] === 'Module'\n                    ? module.default // ESM\n                    : module; // CommonJS\n                if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.sendCommand)) {\n                    this._unwrap(moduleExports.prototype, 'sendCommand');\n                }\n                this._wrap(moduleExports.prototype, 'sendCommand', this._patchSendCommand(moduleVersion));\n                if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n                    this._unwrap(moduleExports.prototype, 'connect');\n                }\n                this._wrap(moduleExports.prototype, 'connect', this._patchConnection());\n                return module;\n            }, module => {\n                if (module === undefined)\n                    return;\n                const moduleExports = module[Symbol.toStringTag] === 'Module'\n                    ? module.default // ESM\n                    : module; // CommonJS\n                this._unwrap(moduleExports.prototype, 'sendCommand');\n                this._unwrap(moduleExports.prototype, 'connect');\n            }),\n        ];\n    }\n    /**\n     * Patch send command internal to trace requests\n     */\n    _patchSendCommand(moduleVersion) {\n        return (original) => {\n            return this._traceSendCommand(original, moduleVersion);\n        };\n    }\n    _patchConnection() {\n        return (original) => {\n            return this._traceConnection(original);\n        };\n    }\n    _traceSendCommand(original, moduleVersion) {\n        const instrumentation = this;\n        return function (cmd) {\n            if (arguments.length < 1 || typeof cmd !== 'object') {\n                return original.apply(this, arguments);\n            }\n            const config = instrumentation.getConfig();\n            const dbStatementSerializer = config.dbStatementSerializer || redis_common_1.defaultDbStatementSerializer;\n            const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;\n            if (config.requireParentSpan === true && hasNoParentSpan) {\n                return original.apply(this, arguments);\n            }\n            const attributes = {};\n            const { host, port } = this.options;\n            const dbQueryText = dbStatementSerializer(cmd.name, cmd.args);\n            if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_REDIS;\n                attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText;\n                attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n            }\n            if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_REDIS;\n                attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText;\n            }\n            if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_NET_PEER_NAME] = host;\n                attributes[semconv_1.ATTR_NET_PEER_PORT] = port;\n            }\n            if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n                attributes[semantic_conventions_1.ATTR_SERVER_PORT] = port;\n            }\n            const span = instrumentation.tracer.startSpan(cmd.name, {\n                kind: api_1.SpanKind.CLIENT,\n                attributes,\n            });\n            const { requestHook } = config;\n            if (requestHook) {\n                (0, instrumentation_2.safeExecuteInTheMiddle)(() => requestHook(span, {\n                    moduleVersion,\n                    cmdName: cmd.name,\n                    cmdArgs: cmd.args,\n                }), e => {\n                    if (e) {\n                        api_1.diag.error('ioredis instrumentation: request hook failed', e);\n                    }\n                }, true);\n            }\n            try {\n                const result = original.apply(this, arguments);\n                const origResolve = cmd.resolve;\n                /* eslint-disable @typescript-eslint/no-explicit-any */\n                cmd.resolve = function (result) {\n                    (0, instrumentation_2.safeExecuteInTheMiddle)(() => config.responseHook?.(span, cmd.name, cmd.args, result), e => {\n                        if (e) {\n                            api_1.diag.error('ioredis instrumentation: response hook failed', e);\n                        }\n                    }, true);\n                    (0, utils_1.endSpan)(span, null);\n                    origResolve(result);\n                };\n                const origReject = cmd.reject;\n                cmd.reject = function (err) {\n                    (0, utils_1.endSpan)(span, err);\n                    origReject(err);\n                };\n                return result;\n            }\n            catch (error) {\n                (0, utils_1.endSpan)(span, error);\n                throw error;\n            }\n        };\n    }\n    _traceConnection(original) {\n        const instrumentation = this;\n        return function () {\n            const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;\n            if (instrumentation.getConfig().requireParentSpan === true &&\n                hasNoParentSpan) {\n                return original.apply(this, arguments);\n            }\n            const attributes = {};\n            const { host, port } = this.options;\n            if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_REDIS;\n                attributes[semconv_1.ATTR_DB_STATEMENT] = 'connect';\n                attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n            }\n            if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_REDIS;\n                attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = 'connect';\n            }\n            if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_NET_PEER_NAME] = host;\n                attributes[semconv_1.ATTR_NET_PEER_PORT] = port;\n            }\n            if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n                attributes[semantic_conventions_1.ATTR_SERVER_PORT] = port;\n            }\n            const span = instrumentation.tracer.startSpan('connect', {\n                kind: api_1.SpanKind.CLIENT,\n                attributes,\n            });\n            try {\n                const client = original.apply(this, arguments);\n                (0, utils_1.endSpan)(span, null);\n                return client;\n            }\n            catch (error) {\n                (0, utils_1.endSpan)(span, error);\n                throw error;\n            }\n        };\n    }\n}\nexports.IORedisInstrumentation = IORedisInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IORedisInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"IORedisInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.IORedisInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-redis';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTracedCreateStreamTrace = exports.getTracedCreateClient = exports.endSpan = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst endSpan = (span, err) => {\n    if (err) {\n        span.setStatus({\n            code: api_1.SpanStatusCode.ERROR,\n            message: err.message,\n        });\n    }\n    span.end();\n};\nexports.endSpan = endSpan;\nconst getTracedCreateClient = (original) => {\n    return function createClientTrace() {\n        const client = original.apply(this, arguments);\n        return api_1.context.bind(api_1.context.active(), client);\n    };\n};\nexports.getTracedCreateClient = getTracedCreateClient;\nconst getTracedCreateStreamTrace = (original) => {\n    return function create_stream_trace() {\n        if (!Object.prototype.hasOwnProperty.call(this, 'stream')) {\n            Object.defineProperty(this, 'stream', {\n                get() {\n                    return this._patched_redis_stream;\n                },\n                set(val) {\n                    api_1.context.bind(api_1.context.active(), val);\n                    this._patched_redis_stream = val;\n                },\n            });\n        }\n        return original.apply(this, arguments);\n    };\n};\nexports.getTracedCreateStreamTrace = getTracedCreateStreamTrace;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_VALUE_REDIS = exports.DB_SYSTEM_NAME_VALUE_REDIS = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_REDIS = 'redis';\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_REDIS = 'redis';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisInstrumentationV2_V3 = void 0;\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"../version\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../semconv\");\nconst redis_common_1 = require(\"@opentelemetry/redis-common\");\nclass RedisInstrumentationV2_V3 extends instrumentation_1.InstrumentationBase {\n    static COMPONENT = 'redis';\n    _semconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._semconvStability = config.semconvStability\n            ? config.semconvStability\n            : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig(config);\n        this._semconvStability = config.semconvStability\n            ? config.semconvStability\n            : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('redis', ['>=2.6.0 <4'], moduleExports => {\n                if ((0, instrumentation_1.isWrapped)(moduleExports.RedisClient.prototype['internal_send_command'])) {\n                    this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command');\n                }\n                this._wrap(moduleExports.RedisClient.prototype, 'internal_send_command', this._getPatchInternalSendCommand());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.RedisClient.prototype['create_stream'])) {\n                    this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n                }\n                this._wrap(moduleExports.RedisClient.prototype, 'create_stream', this._getPatchCreateStream());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.createClient)) {\n                    this._unwrap(moduleExports, 'createClient');\n                }\n                this._wrap(moduleExports, 'createClient', this._getPatchCreateClient());\n                return moduleExports;\n            }, moduleExports => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command');\n                this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n                this._unwrap(moduleExports, 'createClient');\n            }),\n        ];\n    }\n    /**\n     * Patch internal_send_command(...) to trace requests\n     */\n    _getPatchInternalSendCommand() {\n        const instrumentation = this;\n        return function internal_send_command(original) {\n            return function internal_send_command_trace(cmd) {\n                // Versions of redis (2.4+) use a single options object\n                // instead of named arguments\n                if (arguments.length !== 1 || typeof cmd !== 'object') {\n                    // We don't know how to trace this call, so don't start/stop a span\n                    return original.apply(this, arguments);\n                }\n                const config = instrumentation.getConfig();\n                const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;\n                if (config.requireParentSpan === true && hasNoParentSpan) {\n                    return original.apply(this, arguments);\n                }\n                const dbStatementSerializer = config?.dbStatementSerializer || redis_common_1.defaultDbStatementSerializer;\n                const attributes = {};\n                if (instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) {\n                    Object.assign(attributes, {\n                        [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_REDIS,\n                        [semconv_1.ATTR_DB_STATEMENT]: dbStatementSerializer(cmd.command, cmd.args),\n                    });\n                }\n                if (instrumentation._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    Object.assign(attributes, {\n                        [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semconv_1.DB_SYSTEM_NAME_VALUE_REDIS,\n                        [semantic_conventions_1.ATTR_DB_OPERATION_NAME]: cmd.command,\n                        [semantic_conventions_1.ATTR_DB_QUERY_TEXT]: dbStatementSerializer(cmd.command, cmd.args),\n                    });\n                }\n                const span = instrumentation.tracer.startSpan(`${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                // Set attributes for not explicitly typed RedisPluginClientTypes\n                if (this.connection_options) {\n                    const connectionAttributes = {};\n                    if (instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) {\n                        Object.assign(connectionAttributes, {\n                            [semconv_1.ATTR_NET_PEER_NAME]: this.connection_options.host,\n                            [semconv_1.ATTR_NET_PEER_PORT]: this.connection_options.port,\n                        });\n                    }\n                    if (instrumentation._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        Object.assign(connectionAttributes, {\n                            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: this.connection_options.host,\n                            [semantic_conventions_1.ATTR_SERVER_PORT]: this.connection_options.port,\n                        });\n                    }\n                    span.setAttributes(connectionAttributes);\n                }\n                if (this.address &&\n                    instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) {\n                    span.setAttribute(semconv_1.ATTR_DB_CONNECTION_STRING, `redis://${this.address}`);\n                }\n                const originalCallback = arguments[0].callback;\n                if (originalCallback) {\n                    const originalContext = api_1.context.active();\n                    arguments[0].callback = function callback(err, reply) {\n                        if (config?.responseHook) {\n                            const responseHook = config.responseHook;\n                            (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                                responseHook(span, cmd.command, cmd.args, reply);\n                            }, err => {\n                                if (err) {\n                                    instrumentation._diag.error('Error executing responseHook', err);\n                                }\n                            }, true);\n                        }\n                        (0, utils_1.endSpan)(span, err);\n                        return api_1.context.with(originalContext, originalCallback, this, ...arguments);\n                    };\n                }\n                try {\n                    // Span will be ended in callback\n                    return original.apply(this, arguments);\n                }\n                catch (rethrow) {\n                    (0, utils_1.endSpan)(span, rethrow);\n                    throw rethrow; // rethrow after ending span\n                }\n            };\n        };\n    }\n    _getPatchCreateClient() {\n        return function createClient(original) {\n            return (0, utils_1.getTracedCreateClient)(original);\n        };\n    }\n    _getPatchCreateStream() {\n        return function createReadStream(original) {\n            return (0, utils_1.getTracedCreateStreamTrace)(original);\n        };\n    }\n}\nexports.RedisInstrumentationV2_V3 = RedisInstrumentationV2_V3;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getClientAttributes = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../semconv\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nfunction getClientAttributes(diag, options, semconvStability) {\n    const attributes = {};\n    if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n        Object.assign(attributes, {\n            [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_REDIS,\n            [semconv_1.ATTR_NET_PEER_NAME]: options?.socket?.host,\n            [semconv_1.ATTR_NET_PEER_PORT]: options?.socket?.port,\n            [semconv_1.ATTR_DB_CONNECTION_STRING]: removeCredentialsFromDBConnectionStringAttribute(diag, options?.url),\n        });\n    }\n    if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n        Object.assign(attributes, {\n            [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semconv_1.DB_SYSTEM_NAME_VALUE_REDIS,\n            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: options?.socket?.host,\n            [semantic_conventions_1.ATTR_SERVER_PORT]: options?.socket?.port,\n        });\n    }\n    return attributes;\n}\nexports.getClientAttributes = getClientAttributes;\n/**\n * removeCredentialsFromDBConnectionStringAttribute removes basic auth from url and user_pwd from query string\n *\n * Examples:\n *   redis://user:pass@localhost:6379/mydb => redis://localhost:6379/mydb\n *   redis://localhost:6379?db=mydb&user_pwd=pass => redis://localhost:6379?db=mydb\n */\nfunction removeCredentialsFromDBConnectionStringAttribute(diag, url) {\n    if (typeof url !== 'string' || !url) {\n        return;\n    }\n    try {\n        const u = new URL(url);\n        u.searchParams.delete('user_pwd');\n        u.username = '';\n        u.password = '';\n        return u.href;\n    }\n    catch (err) {\n        diag.error('failed to sanitize redis connection url', err);\n    }\n    return;\n}\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisInstrumentationV4_V5 = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst utils_1 = require(\"./utils\");\nconst redis_common_1 = require(\"@opentelemetry/redis-common\");\n/** @knipignore */\nconst version_1 = require(\"../version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../semconv\");\nconst OTEL_OPEN_SPANS = Symbol('opentelemetry.instrumentation.redis.open_spans');\nconst MULTI_COMMAND_OPTIONS = Symbol('opentelemetry.instrumentation.redis.multi_command_options');\nclass RedisInstrumentationV4_V5 extends instrumentation_1.InstrumentationBase {\n    static COMPONENT = 'redis';\n    _semconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._semconvStability = config.semconvStability\n            ? config.semconvStability\n            : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig(config);\n        this._semconvStability = config.semconvStability\n            ? config.semconvStability\n            : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        // @node-redis/client is a new package introduced and consumed by 'redis 4.0.x'\n        // on redis@4.1.0 it was changed to @redis/client.\n        // we will instrument both packages\n        return [\n            this._getInstrumentationNodeModuleDefinition('@redis/client'),\n            this._getInstrumentationNodeModuleDefinition('@node-redis/client'),\n        ];\n    }\n    _getInstrumentationNodeModuleDefinition(basePackageName) {\n        const commanderModuleFile = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/commander.js`, ['^1.0.0'], (moduleExports, moduleVersion) => {\n            const transformCommandArguments = moduleExports.transformCommandArguments;\n            if (!transformCommandArguments) {\n                this._diag.error('internal instrumentation error, missing transformCommandArguments function');\n                return moduleExports;\n            }\n            // function name and signature changed in redis 4.1.0 from 'extendWithCommands' to 'attachCommands'\n            // the matching internal package names starts with 1.0.x (for redis 4.0.x)\n            const functionToPatch = moduleVersion?.startsWith('1.0.')\n                ? 'extendWithCommands'\n                : 'attachCommands';\n            // this is the function that extend a redis client with a list of commands.\n            // the function patches the commandExecutor to record a span\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.[functionToPatch])) {\n                this._unwrap(moduleExports, functionToPatch);\n            }\n            this._wrap(moduleExports, functionToPatch, this._getPatchExtendWithCommands(transformCommandArguments));\n            return moduleExports;\n        }, (moduleExports) => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.extendWithCommands)) {\n                this._unwrap(moduleExports, 'extendWithCommands');\n            }\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.attachCommands)) {\n                this._unwrap(moduleExports, 'attachCommands');\n            }\n        });\n        const multiCommanderModule = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/client/multi-command.js`, ['^1.0.0', '^5.0.0'], (moduleExports) => {\n            const redisClientMultiCommandPrototype = moduleExports?.default?.prototype;\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.exec)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'exec');\n            }\n            this._wrap(redisClientMultiCommandPrototype, 'exec', this._getPatchMultiCommandsExec(false));\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.execAsPipeline)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n            }\n            this._wrap(redisClientMultiCommandPrototype, 'execAsPipeline', this._getPatchMultiCommandsExec(true));\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.addCommand)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n            }\n            this._wrap(redisClientMultiCommandPrototype, 'addCommand', this._getPatchMultiCommandsAddCommand());\n            return moduleExports;\n        }, (moduleExports) => {\n            const redisClientMultiCommandPrototype = moduleExports?.default?.prototype;\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.exec)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'exec');\n            }\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.addCommand)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n            }\n        });\n        const clientIndexModule = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/client/index.js`, ['^1.0.0', '^5.0.0'], (moduleExports) => {\n            const redisClientPrototype = moduleExports?.default?.prototype;\n            // In some @redis/client versions 'multi' is a method. In later\n            // versions, as of https://github.com/redis/node-redis/pull/2324,\n            // 'MULTI' is a method and 'multi' is a property defined in the\n            // constructor that points to 'MULTI', and therefore it will not\n            // be defined on the prototype.\n            if (redisClientPrototype?.multi) {\n                if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.multi)) {\n                    this._unwrap(redisClientPrototype, 'multi');\n                }\n                this._wrap(redisClientPrototype, 'multi', this._getPatchRedisClientMulti());\n            }\n            if (redisClientPrototype?.MULTI) {\n                if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.MULTI)) {\n                    this._unwrap(redisClientPrototype, 'MULTI');\n                }\n                this._wrap(redisClientPrototype, 'MULTI', this._getPatchRedisClientMulti());\n            }\n            if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.sendCommand)) {\n                this._unwrap(redisClientPrototype, 'sendCommand');\n            }\n            this._wrap(redisClientPrototype, 'sendCommand', this._getPatchRedisClientSendCommand());\n            this._wrap(redisClientPrototype, 'connect', this._getPatchedClientConnect());\n            return moduleExports;\n        }, (moduleExports) => {\n            const redisClientPrototype = moduleExports?.default?.prototype;\n            if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.multi)) {\n                this._unwrap(redisClientPrototype, 'multi');\n            }\n            if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.MULTI)) {\n                this._unwrap(redisClientPrototype, 'MULTI');\n            }\n            if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.sendCommand)) {\n                this._unwrap(redisClientPrototype, 'sendCommand');\n            }\n        });\n        return new instrumentation_1.InstrumentationNodeModuleDefinition(basePackageName, ['^1.0.0', '^5.0.0'], (moduleExports) => {\n            return moduleExports;\n        }, () => { }, [commanderModuleFile, multiCommanderModule, clientIndexModule]);\n    }\n    // serves both for redis 4.0.x where function name is extendWithCommands\n    // and redis ^4.1.0 where function name is attachCommands\n    _getPatchExtendWithCommands(transformCommandArguments) {\n        const plugin = this;\n        return function extendWithCommandsPatchWrapper(original) {\n            return function extendWithCommandsPatch(config) {\n                if (config?.BaseClass?.name !== 'RedisClient') {\n                    return original.apply(this, arguments);\n                }\n                const origExecutor = config.executor;\n                config.executor = function (command, args) {\n                    const redisCommandArguments = transformCommandArguments(command, args).args;\n                    return plugin._traceClientCommand(origExecutor, this, arguments, redisCommandArguments);\n                };\n                return original.apply(this, arguments);\n            };\n        };\n    }\n    _getPatchMultiCommandsExec(isPipeline) {\n        const plugin = this;\n        return function execPatchWrapper(original) {\n            return function execPatch() {\n                const execRes = original.apply(this, arguments);\n                if (typeof execRes?.then !== 'function') {\n                    plugin._diag.error('non-promise result when patching exec/execAsPipeline');\n                    return execRes;\n                }\n                return execRes\n                    .then((redisRes) => {\n                    const openSpans = this[OTEL_OPEN_SPANS];\n                    plugin._endSpansWithRedisReplies(openSpans, redisRes, isPipeline);\n                    return redisRes;\n                })\n                    .catch((err) => {\n                    const openSpans = this[OTEL_OPEN_SPANS];\n                    if (!openSpans) {\n                        plugin._diag.error('cannot find open spans to end for multi/pipeline');\n                    }\n                    else {\n                        const replies = err.constructor.name === 'MultiErrorReply'\n                            ? err.replies\n                            : new Array(openSpans.length).fill(err);\n                        plugin._endSpansWithRedisReplies(openSpans, replies, isPipeline);\n                    }\n                    return Promise.reject(err);\n                });\n            };\n        };\n    }\n    _getPatchMultiCommandsAddCommand() {\n        const plugin = this;\n        return function addCommandWrapper(original) {\n            return function addCommandPatch(args) {\n                return plugin._traceClientCommand(original, this, arguments, args);\n            };\n        };\n    }\n    _getPatchRedisClientMulti() {\n        return function multiPatchWrapper(original) {\n            return function multiPatch() {\n                const multiRes = original.apply(this, arguments);\n                multiRes[MULTI_COMMAND_OPTIONS] = this.options;\n                return multiRes;\n            };\n        };\n    }\n    _getPatchRedisClientSendCommand() {\n        const plugin = this;\n        return function sendCommandWrapper(original) {\n            return function sendCommandPatch(args) {\n                return plugin._traceClientCommand(original, this, arguments, args);\n            };\n        };\n    }\n    _getPatchedClientConnect() {\n        const plugin = this;\n        return function connectWrapper(original) {\n            return function patchedConnect() {\n                const options = this.options;\n                const attributes = (0, utils_1.getClientAttributes)(plugin._diag, options, plugin._semconvStability);\n                const span = plugin.tracer.startSpan(`${RedisInstrumentationV4_V5.COMPONENT}-connect`, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const res = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                    return original.apply(this);\n                });\n                return res\n                    .then((result) => {\n                    span.end();\n                    return result;\n                })\n                    .catch((error) => {\n                    span.recordException(error);\n                    span.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: error.message,\n                    });\n                    span.end();\n                    return Promise.reject(error);\n                });\n            };\n        };\n    }\n    _traceClientCommand(origFunction, origThis, origArguments, redisCommandArguments) {\n        const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;\n        if (hasNoParentSpan && this.getConfig().requireParentSpan) {\n            return origFunction.apply(origThis, origArguments);\n        }\n        const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS];\n        const commandName = redisCommandArguments[0]; // types also allows it to be a Buffer, but in practice it only string\n        const commandArgs = redisCommandArguments.slice(1);\n        const dbStatementSerializer = this.getConfig().dbStatementSerializer || redis_common_1.defaultDbStatementSerializer;\n        const attributes = (0, utils_1.getClientAttributes)(this._diag, clientOptions, this._semconvStability);\n        if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n            attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = commandName;\n        }\n        try {\n            const dbStatement = dbStatementSerializer(commandName, commandArgs);\n            if (dbStatement != null) {\n                if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = dbStatement;\n                }\n                if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbStatement;\n                }\n            }\n        }\n        catch (e) {\n            this._diag.error('dbStatementSerializer throw an exception', e, {\n                commandName,\n            });\n        }\n        const span = this.tracer.startSpan(`${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`, {\n            kind: api_1.SpanKind.CLIENT,\n            attributes,\n        });\n        const res = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n            return origFunction.apply(origThis, origArguments);\n        });\n        if (typeof res?.then === 'function') {\n            res.then((redisRes) => {\n                this._endSpanWithResponse(span, commandName, commandArgs, redisRes, undefined);\n            }, (err) => {\n                this._endSpanWithResponse(span, commandName, commandArgs, null, err);\n            });\n        }\n        else {\n            const redisClientMultiCommand = res;\n            redisClientMultiCommand[OTEL_OPEN_SPANS] =\n                redisClientMultiCommand[OTEL_OPEN_SPANS] || [];\n            redisClientMultiCommand[OTEL_OPEN_SPANS].push({\n                span,\n                commandName,\n                commandArgs,\n            });\n        }\n        return res;\n    }\n    _endSpansWithRedisReplies(openSpans, replies, isPipeline = false) {\n        if (!openSpans) {\n            return this._diag.error('cannot find open spans to end for redis multi/pipeline');\n        }\n        if (replies.length !== openSpans.length) {\n            return this._diag.error('number of multi command spans does not match response from redis');\n        }\n        // Determine a single operation name for the batch of commands.\n        // If all commands are identical, include the command name (e.g., \"MULTI SET\").\n        // Otherwise, use a generic \"MULTI\" or \"PIPELINE\" label for the span.\n        const allCommands = openSpans.map(s => s.commandName);\n        const allSameCommand = allCommands.every(cmd => cmd === allCommands[0]);\n        const operationName = allSameCommand\n            ? (isPipeline ? 'PIPELINE ' : 'MULTI ') + allCommands[0]\n            : isPipeline\n                ? 'PIPELINE'\n                : 'MULTI';\n        for (let i = 0; i < openSpans.length; i++) {\n            const { span, commandArgs } = openSpans[i];\n            const currCommandRes = replies[i];\n            const [res, err] = currCommandRes instanceof Error\n                ? [null, currCommandRes]\n                : [currCommandRes, undefined];\n            if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n                span.setAttribute(semantic_conventions_1.ATTR_DB_OPERATION_NAME, operationName);\n            }\n            this._endSpanWithResponse(span, allCommands[i], commandArgs, res, err);\n        }\n    }\n    _endSpanWithResponse(span, commandName, commandArgs, response, error) {\n        const { responseHook } = this.getConfig();\n        if (!error && responseHook) {\n            try {\n                responseHook(span, commandName, commandArgs, response);\n            }\n            catch (err) {\n                this._diag.error('responseHook throw an exception', err);\n            }\n        }\n        if (error) {\n            span.recordException(error);\n            span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error?.message });\n        }\n        span.end();\n    }\n}\nexports.RedisInstrumentationV4_V5 = RedisInstrumentationV4_V5;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst instrumentation_2 = require(\"./v2-v3/instrumentation\");\nconst instrumentation_3 = require(\"./v4-v5/instrumentation\");\nconst DEFAULT_CONFIG = {\n    requireParentSpan: false,\n};\n// Wrapper RedisInstrumentation that address all supported versions\nclass RedisInstrumentation extends instrumentation_1.InstrumentationBase {\n    instrumentationV2_V3;\n    instrumentationV4_V5;\n    // this is used to bypass a flaw in the base class constructor, which is calling\n    // member functions before the constructor has a chance to fully initialize the member variables.\n    initialized = false;\n    constructor(config = {}) {\n        const resolvedConfig = { ...DEFAULT_CONFIG, ...config };\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, resolvedConfig);\n        this.instrumentationV2_V3 = new instrumentation_2.RedisInstrumentationV2_V3(this.getConfig());\n        this.instrumentationV4_V5 = new instrumentation_3.RedisInstrumentationV4_V5(this.getConfig());\n        this.initialized = true;\n    }\n    setConfig(config = {}) {\n        const newConfig = { ...DEFAULT_CONFIG, ...config };\n        super.setConfig(newConfig);\n        if (!this.initialized) {\n            return;\n        }\n        this.instrumentationV2_V3.setConfig(newConfig);\n        this.instrumentationV4_V5.setConfig(newConfig);\n    }\n    init() { }\n    // Return underlying modules, as consumers (like https://github.com/DrewCorlin/opentelemetry-node-bundler-plugins) may\n    // expect them to be populated without knowing that this module wraps 2 instrumentations\n    getModuleDefinitions() {\n        return [\n            ...this.instrumentationV2_V3.getModuleDefinitions(),\n            ...this.instrumentationV4_V5.getModuleDefinitions(),\n        ];\n    }\n    setTracerProvider(tracerProvider) {\n        super.setTracerProvider(tracerProvider);\n        if (!this.initialized) {\n            return;\n        }\n        this.instrumentationV2_V3.setTracerProvider(tracerProvider);\n        this.instrumentationV4_V5.setTracerProvider(tracerProvider);\n    }\n    enable() {\n        super.enable();\n        if (!this.initialized) {\n            return;\n        }\n        this.instrumentationV2_V3.enable();\n        this.instrumentationV4_V5.enable();\n    }\n    disable() {\n        super.disable();\n        if (!this.initialized) {\n            return;\n        }\n        this.instrumentationV2_V3.disable();\n        this.instrumentationV4_V5.disable();\n    }\n}\nexports.RedisInstrumentation = RedisInstrumentation;\n//# sourceMappingURL=redis.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisInstrumentation = void 0;\nvar redis_1 = require(\"./redis\");\nObject.defineProperty(exports, \"RedisInstrumentation\", { enumerable: true, get: function () { return redis_1.RedisInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENT_LISTENERS_SET = void 0;\nexports.EVENT_LISTENERS_SET = Symbol('opentelemetry.instrumentation.pg.eventListenersSet');\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Postgresql specific attributes not covered by semantic conventions\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"PG_VALUES\"] = \"db.postgresql.values\";\n    AttributeNames[\"PG_PLAN\"] = \"db.postgresql.plan\";\n    AttributeNames[\"IDLE_TIMEOUT_MILLIS\"] = \"db.postgresql.idle.timeout.millis\";\n    AttributeNames[\"MAX_CLIENT\"] = \"db.postgresql.max.client\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = exports.METRIC_DB_CLIENT_CONNECTION_COUNT = exports.DB_SYSTEM_VALUE_POSTGRESQL = exports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = exports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = exports.ATTR_DB_CONNECTION_STRING = exports.ATTR_DB_CLIENT_CONNECTION_STATE = exports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * 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.\n *\n * @example myDataSource\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name';\n/**\n * The state of a connection in the pool\n *\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state';\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle';\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used';\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexports.DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql';\n/**\n * The number of connections that are currently in state described by the `state` attribute\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count';\n/**\n * The number of current pending requests for an open connection\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Contains span names produced by instrumentation\nvar SpanNames;\n(function (SpanNames) {\n    SpanNames[\"QUERY_PREFIX\"] = \"pg.query\";\n    SpanNames[\"CONNECT\"] = \"pg.connect\";\n    SpanNames[\"POOL_CONNECT\"] = \"pg-pool.connect\";\n})(SpanNames = exports.SpanNames || (exports.SpanNames = {}));\n//# sourceMappingURL=SpanNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizedErrorMessage = exports.isObjectWithTextString = exports.getErrorMessage = exports.patchClientConnectCallback = exports.patchCallbackPGPool = exports.updateCounter = exports.getPoolName = exports.patchCallback = exports.handleExecutionResult = exports.handleConfigQuery = exports.shouldSkipInstrumentation = exports.getSemanticAttributesFromPoolConnection = exports.getSemanticAttributesFromConnection = exports.getConnectionString = exports.parseAndMaskConnectionString = exports.parseNormalizedOperationName = exports.getQuerySpanName = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst SpanNames_1 = require(\"./enums/SpanNames\");\n/**\n * Helper function to get a low cardinality span name from whatever info we have\n * about the query.\n *\n * This is tricky, because we don't have most of the information (table name,\n * operation name, etc) the spec recommends using to build a low-cardinality\n * value w/o parsing. So, we use db.name and assume that, if the query's a named\n * prepared statement, those `name` values will be low cardinality. If we don't\n * have a named prepared statement, we try to parse an operation (despite the\n * spec's warnings).\n *\n * @params dbName The name of the db against which this query is being issued,\n *   which could be missing if no db name was given at the time that the\n *   connection was established.\n * @params queryConfig Information we have about the query being issued, typed\n *   to reflect only the validation we've actually done on the args to\n *   `client.query()`. This will be undefined if `client.query()` was called\n *   with invalid arguments.\n */\nfunction getQuerySpanName(dbName, queryConfig) {\n    // NB: when the query config is invalid, we omit the dbName too, so that\n    // someone (or some tool) reading the span name doesn't misinterpret the\n    // dbName as being a prepared statement or sql commit name.\n    if (!queryConfig)\n        return SpanNames_1.SpanNames.QUERY_PREFIX;\n    // Either the name of a prepared statement; or an attempted parse\n    // of the SQL command, normalized to uppercase; or unknown.\n    const command = typeof queryConfig.name === 'string' && queryConfig.name\n        ? queryConfig.name\n        : parseNormalizedOperationName(queryConfig.text);\n    return `${SpanNames_1.SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`;\n}\nexports.getQuerySpanName = getQuerySpanName;\nfunction parseNormalizedOperationName(queryText) {\n    // Trim the query text to handle leading/trailing whitespace\n    const trimmedQuery = queryText.trim();\n    const indexOfFirstSpace = trimmedQuery.indexOf(' ');\n    let sqlCommand = indexOfFirstSpace === -1\n        ? trimmedQuery\n        : trimmedQuery.slice(0, indexOfFirstSpace);\n    sqlCommand = sqlCommand.toUpperCase();\n    // Handle query text being \"COMMIT;\", which has an extra semicolon before the space.\n    return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand;\n}\nexports.parseNormalizedOperationName = parseNormalizedOperationName;\nfunction parseAndMaskConnectionString(connectionString) {\n    try {\n        // Parse the connection string\n        const url = new URL(connectionString);\n        // Remove all auth information (username and password)\n        url.username = '';\n        url.password = '';\n        return url.toString();\n    }\n    catch (e) {\n        // If parsing fails, return a generic connection string\n        return 'postgresql://localhost:5432/';\n    }\n}\nexports.parseAndMaskConnectionString = parseAndMaskConnectionString;\nfunction getConnectionString(params) {\n    if ('connectionString' in params && params.connectionString) {\n        return parseAndMaskConnectionString(params.connectionString);\n    }\n    const host = params.host || 'localhost';\n    const port = params.port || 5432;\n    const database = params.database || '';\n    return `postgresql://${host}:${port}/${database}`;\n}\nexports.getConnectionString = getConnectionString;\nfunction getPort(port) {\n    // Port may be NaN as parseInt() is used on the value, passing null will result in NaN being parsed.\n    // https://github.com/brianc/node-postgres/blob/2a8efbee09a284be12748ed3962bc9b816965e36/packages/pg/lib/connection-parameters.js#L66\n    if (Number.isInteger(port)) {\n        return port;\n    }\n    // Unable to find the default used in pg code, so falling back to 'undefined'.\n    return undefined;\n}\nfunction getSemanticAttributesFromConnection(params, semconvStability) {\n    let attributes = {};\n    if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n        attributes = {\n            ...attributes,\n            [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n            [semconv_1.ATTR_DB_NAME]: params.database,\n            [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n            [semconv_1.ATTR_DB_USER]: params.user,\n            [semconv_1.ATTR_NET_PEER_NAME]: params.host,\n            [semconv_1.ATTR_NET_PEER_PORT]: getPort(params.port),\n        };\n    }\n    if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attributes = {\n            ...attributes,\n            [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n            [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace,\n            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: params.host,\n            [semantic_conventions_1.ATTR_SERVER_PORT]: getPort(params.port),\n        };\n    }\n    return attributes;\n}\nexports.getSemanticAttributesFromConnection = getSemanticAttributesFromConnection;\nfunction getSemanticAttributesFromPoolConnection(params, semconvStability) {\n    let url;\n    try {\n        url = params.connectionString\n            ? new URL(params.connectionString)\n            : undefined;\n    }\n    catch (e) {\n        url = undefined;\n    }\n    let attributes = {\n        [AttributeNames_1.AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis,\n        [AttributeNames_1.AttributeNames.MAX_CLIENT]: params.maxClient,\n    };\n    if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n        attributes = {\n            ...attributes,\n            [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n            [semconv_1.ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database,\n            [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n            [semconv_1.ATTR_NET_PEER_NAME]: url?.hostname ?? params.host,\n            [semconv_1.ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port),\n            [semconv_1.ATTR_DB_USER]: url?.username ?? params.user,\n        };\n    }\n    if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attributes = {\n            ...attributes,\n            [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n            [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace,\n            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host,\n            [semantic_conventions_1.ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port),\n        };\n    }\n    return attributes;\n}\nexports.getSemanticAttributesFromPoolConnection = getSemanticAttributesFromPoolConnection;\nfunction shouldSkipInstrumentation(instrumentationConfig) {\n    return (instrumentationConfig.requireParentSpan === true &&\n        api_1.trace.getSpan(api_1.context.active()) === undefined);\n}\nexports.shouldSkipInstrumentation = shouldSkipInstrumentation;\n// Create a span from our normalized queryConfig object,\n// or return a basic span if no queryConfig was given/could be created.\nfunction handleConfigQuery(tracer, instrumentationConfig, semconvStability, queryConfig) {\n    // Create child span.\n    const { connectionParameters } = this;\n    const dbName = connectionParameters.database;\n    const spanName = getQuerySpanName(dbName, queryConfig);\n    const span = tracer.startSpan(spanName, {\n        kind: api_1.SpanKind.CLIENT,\n        attributes: getSemanticAttributesFromConnection(connectionParameters, semconvStability),\n    });\n    if (!queryConfig) {\n        return span;\n    }\n    // Set attributes\n    if (queryConfig.text) {\n        if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n            span.setAttribute(semconv_1.ATTR_DB_STATEMENT, queryConfig.text);\n        }\n        if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n            span.setAttribute(semantic_conventions_1.ATTR_DB_QUERY_TEXT, queryConfig.text);\n        }\n    }\n    if (instrumentationConfig.enhancedDatabaseReporting &&\n        Array.isArray(queryConfig.values)) {\n        try {\n            const convertedValues = queryConfig.values.map(value => {\n                if (value == null) {\n                    return 'null';\n                }\n                else if (value instanceof Buffer) {\n                    return value.toString();\n                }\n                else if (typeof value === 'object') {\n                    if (typeof value.toPostgres === 'function') {\n                        return value.toPostgres();\n                    }\n                    return JSON.stringify(value);\n                }\n                else {\n                    //string, number\n                    return value.toString();\n                }\n            });\n            span.setAttribute(AttributeNames_1.AttributeNames.PG_VALUES, convertedValues);\n        }\n        catch (e) {\n            api_1.diag.error('failed to stringify ', queryConfig.values, e);\n        }\n    }\n    // Set plan name attribute, if present\n    if (typeof queryConfig.name === 'string') {\n        span.setAttribute(AttributeNames_1.AttributeNames.PG_PLAN, queryConfig.name);\n    }\n    return span;\n}\nexports.handleConfigQuery = handleConfigQuery;\nfunction handleExecutionResult(config, span, pgResult) {\n    if (typeof config.responseHook === 'function') {\n        (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n            config.responseHook(span, {\n                data: pgResult,\n            });\n        }, err => {\n            if (err) {\n                api_1.diag.error('Error running response hook', err);\n            }\n        }, true);\n    }\n}\nexports.handleExecutionResult = handleExecutionResult;\nfunction patchCallback(instrumentationConfig, span, cb, attributes, recordDuration) {\n    return function patchedCallback(err, res) {\n        if (err) {\n            if (Object.prototype.hasOwnProperty.call(err, 'code')) {\n                attributes[semantic_conventions_1.ATTR_ERROR_TYPE] = err['code'];\n            }\n            if (err instanceof Error) {\n                span.recordException(sanitizedErrorMessage(err));\n            }\n            span.setStatus({\n                code: api_1.SpanStatusCode.ERROR,\n                message: err.message,\n            });\n        }\n        else {\n            handleExecutionResult(instrumentationConfig, span, res);\n        }\n        recordDuration();\n        span.end();\n        cb.call(this, err, res);\n    };\n}\nexports.patchCallback = patchCallback;\nfunction getPoolName(pool) {\n    let poolName = '';\n    poolName += (pool?.host ? `${pool.host}` : 'unknown_host') + ':';\n    poolName += (pool?.port ? `${pool.port}` : 'unknown_port') + '/';\n    poolName += pool?.database ? `${pool.database}` : 'unknown_database';\n    return poolName.trim();\n}\nexports.getPoolName = getPoolName;\nfunction updateCounter(poolName, pool, connectionCount, connectionPendingRequests, latestCounter) {\n    const all = pool.totalCount;\n    const pending = pool.waitingCount;\n    const idle = pool.idleCount;\n    const used = all - idle;\n    connectionCount.add(used - latestCounter.used, {\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n    });\n    connectionCount.add(idle - latestCounter.idle, {\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n    });\n    connectionPendingRequests.add(pending - latestCounter.pending, {\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n    });\n    return { used: used, idle: idle, pending: pending };\n}\nexports.updateCounter = updateCounter;\nfunction patchCallbackPGPool(span, cb) {\n    return function patchedCallback(err, res, done) {\n        if (err) {\n            if (err instanceof Error) {\n                span.recordException(sanitizedErrorMessage(err));\n            }\n            span.setStatus({\n                code: api_1.SpanStatusCode.ERROR,\n                message: err.message,\n            });\n        }\n        span.end();\n        cb.call(this, err, res, done);\n    };\n}\nexports.patchCallbackPGPool = patchCallbackPGPool;\nfunction patchClientConnectCallback(span, cb) {\n    return function patchedClientConnectCallback(err) {\n        if (err) {\n            if (err instanceof Error) {\n                span.recordException(sanitizedErrorMessage(err));\n            }\n            span.setStatus({\n                code: api_1.SpanStatusCode.ERROR,\n                message: err.message,\n            });\n        }\n        span.end();\n        cb.apply(this, arguments);\n    };\n}\nexports.patchClientConnectCallback = patchClientConnectCallback;\n/**\n * Attempt to get a message string from a thrown value, while being quite\n * defensive, to recognize the fact that, in JS, any kind of value (even\n * primitives) can be thrown.\n */\nfunction getErrorMessage(e) {\n    return typeof e === 'object' && e !== null && 'message' in e\n        ? String(e.message)\n        : undefined;\n}\nexports.getErrorMessage = getErrorMessage;\nfunction isObjectWithTextString(it) {\n    return (typeof it === 'object' &&\n        typeof it?.text === 'string');\n}\nexports.isObjectWithTextString = isObjectWithTextString;\n/**\n * Generates a sanitized message for the error.\n * Only includes the error type and PostgreSQL error code, omitting any sensitive details.\n */\nfunction sanitizedErrorMessage(error) {\n    const name = error?.name ?? 'PostgreSQLError';\n    const code = error?.code ?? 'UNKNOWN';\n    return `PostgreSQL error of type '${name}' occurred (code: ${code})`;\n}\nexports.sanitizedErrorMessage = sanitizedErrorMessage;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.65.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-pg';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PgInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst internal_types_1 = require(\"./internal-types\");\nconst utils = require(\"./utils\");\nconst sql_common_1 = require(\"@opentelemetry/sql-common\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst SpanNames_1 = require(\"./enums/SpanNames\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nfunction extractModuleExports(module) {\n    return module[Symbol.toStringTag] === 'Module'\n        ? module.default // ESM\n        : module; // CommonJS\n}\nclass PgInstrumentation extends instrumentation_1.InstrumentationBase {\n    // Pool events connect, acquire, release and remove can be called\n    // multiple times without changing the values of total, idle and waiting\n    // connections. The _connectionsCounter is used to keep track of latest\n    // values and only update the metrics _connectionsCount and _connectionPendingRequests\n    // when the value change.\n    _connectionsCounter = {\n        used: 0,\n        idle: 0,\n        pending: 0,\n    };\n    _semconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    _updateMetricInstruments() {\n        this._operationDuration = this.meter.createHistogram(semantic_conventions_1.METRIC_DB_CLIENT_OPERATION_DURATION, {\n            description: 'Duration of database client operations.',\n            unit: 's',\n            valueType: api_1.ValueType.DOUBLE,\n            advice: {\n                explicitBucketBoundaries: [\n                    0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10,\n                ],\n            },\n        });\n        this._connectionsCounter = {\n            idle: 0,\n            pending: 0,\n            used: 0,\n        };\n        this._connectionsCount = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTION_COUNT, {\n            description: 'The number of connections that are currently in state described by the state attribute.',\n            unit: '{connection}',\n        });\n        this._connectionPendingRequests = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, {\n            description: 'The number of current pending requests for an open connection.',\n            unit: '{connection}',\n        });\n    }\n    init() {\n        const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9'];\n        const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4'];\n        const modulePgNativeClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/native/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this));\n        const modulePgClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this));\n        const modulePG = new instrumentation_1.InstrumentationNodeModuleDefinition('pg', SUPPORTED_PG_VERSIONS, (module) => {\n            const moduleExports = extractModuleExports(module);\n            this._patchPgClient(moduleExports.Client);\n            return module;\n        }, (module) => {\n            const moduleExports = extractModuleExports(module);\n            this._unpatchPgClient(moduleExports.Client);\n            return module;\n        }, [modulePgClient, modulePgNativeClient]);\n        const modulePGPool = new instrumentation_1.InstrumentationNodeModuleDefinition('pg-pool', SUPPORTED_PG_POOL_VERSIONS, (module) => {\n            const moduleExports = extractModuleExports(module);\n            if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n                this._unwrap(moduleExports.prototype, 'connect');\n            }\n            this._wrap(moduleExports.prototype, 'connect', this._getPoolConnectPatch());\n            return moduleExports;\n        }, (module) => {\n            const moduleExports = extractModuleExports(module);\n            if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n                this._unwrap(moduleExports.prototype, 'connect');\n            }\n        });\n        return [modulePG, modulePGPool];\n    }\n    _patchPgClient(module) {\n        if (!module) {\n            return;\n        }\n        const moduleExports = extractModuleExports(module);\n        if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) {\n            this._unwrap(moduleExports.prototype, 'query');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n            this._unwrap(moduleExports.prototype, 'connect');\n        }\n        this._wrap(moduleExports.prototype, 'query', this._getClientQueryPatch());\n        this._wrap(moduleExports.prototype, 'connect', this._getClientConnectPatch());\n        return module;\n    }\n    _unpatchPgClient(module) {\n        const moduleExports = extractModuleExports(module);\n        if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) {\n            this._unwrap(moduleExports.prototype, 'query');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n            this._unwrap(moduleExports.prototype, 'connect');\n        }\n        return module;\n    }\n    _getClientConnectPatch() {\n        const plugin = this;\n        return (original) => {\n            return function connect(callback) {\n                const config = plugin.getConfig();\n                if (utils.shouldSkipInstrumentation(config) ||\n                    config.ignoreConnectSpans) {\n                    return original.call(this, callback);\n                }\n                const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.CONNECT, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes: utils.getSemanticAttributesFromConnection(this, plugin._semconvStability),\n                });\n                if (callback) {\n                    const parentSpan = api_1.trace.getSpan(api_1.context.active());\n                    callback = utils.patchClientConnectCallback(span, callback);\n                    if (parentSpan) {\n                        callback = api_1.context.bind(api_1.context.active(), callback);\n                    }\n                }\n                const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                    return original.call(this, callback);\n                });\n                return handleConnectResult(span, connectResult);\n            };\n        };\n    }\n    recordOperationDuration(attributes, startTime) {\n        const metricsAttributes = {};\n        const keysToCopy = [\n            semantic_conventions_1.ATTR_DB_NAMESPACE,\n            semantic_conventions_1.ATTR_ERROR_TYPE,\n            semantic_conventions_1.ATTR_SERVER_PORT,\n            semantic_conventions_1.ATTR_SERVER_ADDRESS,\n            semantic_conventions_1.ATTR_DB_OPERATION_NAME,\n        ];\n        if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n            keysToCopy.push(semconv_1.ATTR_DB_SYSTEM);\n        }\n        if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n            keysToCopy.push(semantic_conventions_1.ATTR_DB_SYSTEM_NAME);\n        }\n        keysToCopy.forEach(key => {\n            if (key in attributes) {\n                metricsAttributes[key] = attributes[key];\n            }\n        });\n        const durationSeconds = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())) / 1000;\n        this._operationDuration.record(durationSeconds, metricsAttributes);\n    }\n    _getClientQueryPatch() {\n        const plugin = this;\n        return (original) => {\n            this._diag.debug('Patching pg.Client.prototype.query');\n            return function query(...args) {\n                if (utils.shouldSkipInstrumentation(plugin.getConfig())) {\n                    return original.apply(this, args);\n                }\n                const startTime = (0, core_1.hrTime)();\n                // client.query(text, cb?), client.query(text, values, cb?), and\n                // client.query(configObj, cb?) are all valid signatures. We construct\n                // a queryConfig obj from all (valid) signatures to build the span in a\n                // unified way. We verify that we at least have query text, and code\n                // defensively when dealing with `queryConfig` after that (to handle all\n                // the other invalid cases, like a non-array for values being provided).\n                // The type casts here reflect only what we've actually validated.\n                const arg0 = args[0];\n                const firstArgIsString = typeof arg0 === 'string';\n                const firstArgIsQueryObjectWithText = utils.isObjectWithTextString(arg0);\n                // TODO: remove the `as ...` casts below when the TS version is upgraded.\n                // Newer TS versions will use the result of firstArgIsQueryObjectWithText\n                // to properly narrow arg0, but TS 4.3.5 does not.\n                const queryConfig = firstArgIsString\n                    ? {\n                        text: arg0,\n                        values: Array.isArray(args[1]) ? args[1] : undefined,\n                    }\n                    : firstArgIsQueryObjectWithText\n                        ? {\n                            ...arg0,\n                            name: arg0.name,\n                            text: arg0.text,\n                            values: arg0.values ??\n                                (Array.isArray(args[1]) ? args[1] : undefined),\n                        }\n                        : undefined;\n                const attributes = {\n                    [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n                    [semantic_conventions_1.ATTR_DB_NAMESPACE]: this.database,\n                    [semantic_conventions_1.ATTR_SERVER_PORT]: this.connectionParameters.port,\n                    [semantic_conventions_1.ATTR_SERVER_ADDRESS]: this.connectionParameters.host,\n                };\n                if (queryConfig?.text) {\n                    attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] =\n                        utils.parseNormalizedOperationName(queryConfig?.text);\n                }\n                const recordDuration = () => {\n                    plugin.recordOperationDuration(attributes, startTime);\n                };\n                const instrumentationConfig = plugin.getConfig();\n                const span = utils.handleConfigQuery.call(this, plugin.tracer, instrumentationConfig, plugin._semconvStability, queryConfig);\n                // Modify query text w/ a tracing comment before invoking original for\n                // tracing, but only if args[0] has one of our expected shapes.\n                if (instrumentationConfig.addSqlCommenterCommentToQueries) {\n                    if (firstArgIsString) {\n                        args[0] = (0, sql_common_1.addSqlCommenterComment)(span, arg0);\n                    }\n                    else if (firstArgIsQueryObjectWithText && !('name' in arg0)) {\n                        // In the case of a query object, we need to ensure there's no name field\n                        // as this indicates a prepared query, where the comment would remain the same\n                        // for every invocation and contain an outdated trace context.\n                        args[0] = {\n                            ...arg0,\n                            text: (0, sql_common_1.addSqlCommenterComment)(span, arg0.text),\n                        };\n                    }\n                }\n                // Bind callback (if any) to parent span (if any)\n                if (args.length > 0) {\n                    const parentSpan = api_1.trace.getSpan(api_1.context.active());\n                    if (typeof args[args.length - 1] === 'function') {\n                        // Patch ParameterQuery callback\n                        args[args.length - 1] = utils.patchCallback(instrumentationConfig, span, args[args.length - 1], // nb: not type safe.\n                        attributes, recordDuration);\n                        // If a parent span exists, bind the callback\n                        if (parentSpan) {\n                            args[args.length - 1] = api_1.context.bind(api_1.context.active(), args[args.length - 1]);\n                        }\n                    }\n                    else if (typeof queryConfig?.callback === 'function') {\n                        // Patch ConfigQuery callback\n                        let callback = utils.patchCallback(plugin.getConfig(), span, queryConfig.callback, // nb: not type safe.\n                        attributes, recordDuration);\n                        // If a parent span existed, bind the callback\n                        if (parentSpan) {\n                            callback = api_1.context.bind(api_1.context.active(), callback);\n                        }\n                        args[0].callback = callback;\n                    }\n                }\n                const { requestHook } = instrumentationConfig;\n                if (typeof requestHook === 'function' && queryConfig) {\n                    (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                        // pick keys to expose explicitly, so we're not leaking pg package\n                        // internals that are subject to change\n                        const { database, host, port, user } = this.connectionParameters;\n                        const connection = { database, host, port, user };\n                        requestHook(span, {\n                            connection,\n                            query: {\n                                text: queryConfig.text,\n                                // nb: if `client.query` is called with illegal arguments\n                                // (e.g., if `queryConfig.values` is passed explicitly, but a\n                                // non-array is given), then the type casts will be wrong. But\n                                // we leave it up to the queryHook to handle that, and we\n                                // catch and swallow any errors it throws. The other options\n                                // are all worse. E.g., we could leave `queryConfig.values`\n                                // and `queryConfig.name` as `unknown`, but then the hook body\n                                // would be forced to validate (or cast) them before using\n                                // them, which seems incredibly cumbersome given that these\n                                // casts will be correct 99.9% of the time -- and pg.query\n                                // will immediately throw during development in the other .1%\n                                // of cases. Alternatively, we could simply skip calling the\n                                // hook when `values` or `name` don't have the expected type,\n                                // but that would add unnecessary validation overhead to every\n                                // hook invocation and possibly be even more confusing/unexpected.\n                                values: queryConfig.values,\n                                name: queryConfig.name,\n                            },\n                        });\n                    }, err => {\n                        if (err) {\n                            plugin._diag.error('Error running query hook', err);\n                        }\n                    }, true);\n                }\n                let result;\n                try {\n                    result = original.apply(this, args);\n                }\n                catch (e) {\n                    if (e instanceof Error) {\n                        span.recordException(utils.sanitizedErrorMessage(e));\n                    }\n                    span.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: utils.getErrorMessage(e),\n                    });\n                    span.end();\n                    throw e;\n                }\n                // Bind promise to parent span and end the span\n                if (result instanceof Promise) {\n                    return result\n                        .then((result) => {\n                        // Return a pass-along promise which ends the span and then goes to user's orig resolvers\n                        return new Promise(resolve => {\n                            utils.handleExecutionResult(plugin.getConfig(), span, result);\n                            recordDuration();\n                            span.end();\n                            resolve(result);\n                        });\n                    })\n                        .catch((error) => {\n                        return new Promise((_, reject) => {\n                            if (error instanceof Error) {\n                                span.recordException(utils.sanitizedErrorMessage(error));\n                            }\n                            span.setStatus({\n                                code: api_1.SpanStatusCode.ERROR,\n                                message: error.message,\n                            });\n                            recordDuration();\n                            span.end();\n                            reject(error);\n                        });\n                    });\n                }\n                // else returns void\n                return result; // void\n            };\n        };\n    }\n    _setPoolConnectEventListeners(pgPool) {\n        if (pgPool[internal_types_1.EVENT_LISTENERS_SET])\n            return;\n        const poolName = utils.getPoolName(pgPool.options);\n        pgPool.on('connect', () => {\n            this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n        });\n        pgPool.on('acquire', () => {\n            this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n        });\n        pgPool.on('remove', () => {\n            this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n        });\n        pgPool.on('release', () => {\n            this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n        });\n        pgPool[internal_types_1.EVENT_LISTENERS_SET] = true;\n    }\n    _getPoolConnectPatch() {\n        const plugin = this;\n        return (originalConnect) => {\n            return function connect(callback) {\n                const config = plugin.getConfig();\n                if (utils.shouldSkipInstrumentation(config)) {\n                    return originalConnect.call(this, callback);\n                }\n                // Still set up event listeners for metrics even when skipping spans\n                plugin._setPoolConnectEventListeners(this);\n                if (config.ignoreConnectSpans) {\n                    return originalConnect.call(this, callback);\n                }\n                // setup span\n                const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.POOL_CONNECT, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes: utils.getSemanticAttributesFromPoolConnection(this.options, plugin._semconvStability),\n                });\n                if (callback) {\n                    const parentSpan = api_1.trace.getSpan(api_1.context.active());\n                    callback = utils.patchCallbackPGPool(span, callback);\n                    // If a parent span exists, bind the callback\n                    if (parentSpan) {\n                        callback = api_1.context.bind(api_1.context.active(), callback);\n                    }\n                }\n                const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                    return originalConnect.call(this, callback);\n                });\n                return handleConnectResult(span, connectResult);\n            };\n        };\n    }\n}\nexports.PgInstrumentation = PgInstrumentation;\nfunction handleConnectResult(span, connectResult) {\n    if (!(connectResult instanceof Promise)) {\n        return connectResult;\n    }\n    const connectResultPromise = connectResult;\n    return api_1.context.bind(api_1.context.active(), connectResultPromise\n        .then(result => {\n        span.end();\n        return result;\n    })\n        .catch((error) => {\n        if (error instanceof Error) {\n            span.recordException(utils.sanitizedErrorMessage(error));\n        }\n        span.setStatus({\n            code: api_1.SpanStatusCode.ERROR,\n            message: utils.getErrorMessage(error),\n        });\n        span.end();\n        return Promise.reject(error);\n    }));\n}\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = exports.PgInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"PgInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.PgInstrumentation; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeverityNumber = void 0;\nvar SeverityNumber;\n(function (SeverityNumber) {\n    SeverityNumber[SeverityNumber[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n    SeverityNumber[SeverityNumber[\"TRACE\"] = 1] = \"TRACE\";\n    SeverityNumber[SeverityNumber[\"TRACE2\"] = 2] = \"TRACE2\";\n    SeverityNumber[SeverityNumber[\"TRACE3\"] = 3] = \"TRACE3\";\n    SeverityNumber[SeverityNumber[\"TRACE4\"] = 4] = \"TRACE4\";\n    SeverityNumber[SeverityNumber[\"DEBUG\"] = 5] = \"DEBUG\";\n    SeverityNumber[SeverityNumber[\"DEBUG2\"] = 6] = \"DEBUG2\";\n    SeverityNumber[SeverityNumber[\"DEBUG3\"] = 7] = \"DEBUG3\";\n    SeverityNumber[SeverityNumber[\"DEBUG4\"] = 8] = \"DEBUG4\";\n    SeverityNumber[SeverityNumber[\"INFO\"] = 9] = \"INFO\";\n    SeverityNumber[SeverityNumber[\"INFO2\"] = 10] = \"INFO2\";\n    SeverityNumber[SeverityNumber[\"INFO3\"] = 11] = \"INFO3\";\n    SeverityNumber[SeverityNumber[\"INFO4\"] = 12] = \"INFO4\";\n    SeverityNumber[SeverityNumber[\"WARN\"] = 13] = \"WARN\";\n    SeverityNumber[SeverityNumber[\"WARN2\"] = 14] = \"WARN2\";\n    SeverityNumber[SeverityNumber[\"WARN3\"] = 15] = \"WARN3\";\n    SeverityNumber[SeverityNumber[\"WARN4\"] = 16] = \"WARN4\";\n    SeverityNumber[SeverityNumber[\"ERROR\"] = 17] = \"ERROR\";\n    SeverityNumber[SeverityNumber[\"ERROR2\"] = 18] = \"ERROR2\";\n    SeverityNumber[SeverityNumber[\"ERROR3\"] = 19] = \"ERROR3\";\n    SeverityNumber[SeverityNumber[\"ERROR4\"] = 20] = \"ERROR4\";\n    SeverityNumber[SeverityNumber[\"FATAL\"] = 21] = \"FATAL\";\n    SeverityNumber[SeverityNumber[\"FATAL2\"] = 22] = \"FATAL2\";\n    SeverityNumber[SeverityNumber[\"FATAL3\"] = 23] = \"FATAL3\";\n    SeverityNumber[SeverityNumber[\"FATAL4\"] = 24] = \"FATAL4\";\n})(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {}));\n//# sourceMappingURL=LogRecord.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER = exports.NoopLogger = void 0;\nclass NoopLogger {\n    emit(_logRecord) { }\n}\nexports.NoopLogger = NoopLogger;\nexports.NOOP_LOGGER = new NoopLogger();\n//# sourceMappingURL=NoopLogger.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass NoopLoggerProvider {\n    getLogger(_name, _version, _options) {\n        return new NoopLogger_1.NoopLogger();\n    }\n}\nexports.NoopLoggerProvider = NoopLoggerProvider;\nexports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n//# sourceMappingURL=NoopLoggerProvider.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLogger = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass ProxyLogger {\n    constructor(_provider, name, version, options) {\n        this._provider = _provider;\n        this.name = name;\n        this.version = version;\n        this.options = options;\n    }\n    /**\n     * Emit a log record. This method should only be used by log appenders.\n     *\n     * @param logRecord\n     */\n    emit(logRecord) {\n        this._getLogger().emit(logRecord);\n    }\n    /**\n     * Try to get a logger from the proxy logger provider.\n     * If the proxy logger provider has no delegate, return a noop logger.\n     */\n    _getLogger() {\n        if (this._delegate) {\n            return this._delegate;\n        }\n        const logger = this._provider._getDelegateLogger(this.name, this.version, this.options);\n        if (!logger) {\n            return NoopLogger_1.NOOP_LOGGER;\n        }\n        this._delegate = logger;\n        return this._delegate;\n    }\n}\nexports.ProxyLogger = ProxyLogger;\n//# sourceMappingURL=ProxyLogger.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLoggerProvider = void 0;\nconst NoopLoggerProvider_1 = require(\"./NoopLoggerProvider\");\nconst ProxyLogger_1 = require(\"./ProxyLogger\");\nclass ProxyLoggerProvider {\n    getLogger(name, version, options) {\n        var _a;\n        return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger_1.ProxyLogger(this, name, version, options));\n    }\n    /**\n     * Get the delegate logger provider.\n     * Used by tests only.\n     * @internal\n     */\n    _getDelegate() {\n        var _a;\n        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER;\n    }\n    /**\n     * Set the delegate logger provider\n     * @internal\n     */\n    _setDelegate(delegate) {\n        this._delegate = delegate;\n    }\n    /**\n     * @internal\n     */\n    _getDelegateLogger(name, version, options) {\n        var _a;\n        return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options);\n    }\n}\nexports.ProxyLoggerProvider = ProxyLoggerProvider;\n//# sourceMappingURL=ProxyLoggerProvider.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\nvar globalThis_1 = require(\"./globalThis\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return globalThis_1._globalThis; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return node_1._globalThis; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = void 0;\nconst platform_1 = require(\"../platform\");\nexports.GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\nexports._global = platform_1._globalThis;\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nfunction makeGetter(requiredVersion, instance, fallback) {\n    return (version) => version === requiredVersion ? instance : fallback;\n}\nexports.makeGetter = makeGetter;\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n//# sourceMappingURL=global-utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogsAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopLoggerProvider_1 = require(\"../NoopLoggerProvider\");\nconst ProxyLoggerProvider_1 = require(\"../ProxyLoggerProvider\");\nclass LogsAPI {\n    constructor() {\n        this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n    }\n    static getInstance() {\n        if (!this._instance) {\n            this._instance = new LogsAPI();\n        }\n        return this._instance;\n    }\n    setGlobalLoggerProvider(provider) {\n        if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) {\n            return this.getLoggerProvider();\n        }\n        global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY] = (0, global_utils_1.makeGetter)(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER);\n        this._proxyLoggerProvider._setDelegate(provider);\n        return provider;\n    }\n    /**\n     * Returns the global logger provider.\n     *\n     * @returns LoggerProvider\n     */\n    getLoggerProvider() {\n        var _a, _b;\n        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider);\n    }\n    /**\n     * Returns a logger from the global logger provider.\n     *\n     * @returns Logger\n     */\n    getLogger(name, version, options) {\n        return this.getLoggerProvider().getLogger(name, version, options);\n    }\n    /** Remove the global logger provider */\n    disable() {\n        delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY];\n        this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n    }\n}\nexports.LogsAPI = LogsAPI;\n//# sourceMappingURL=logs.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logs = exports.ProxyLoggerProvider = exports.ProxyLogger = exports.NoopLoggerProvider = exports.NOOP_LOGGER_PROVIDER = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = void 0;\nvar LogRecord_1 = require(\"./types/LogRecord\");\nObject.defineProperty(exports, \"SeverityNumber\", { enumerable: true, get: function () { return LogRecord_1.SeverityNumber; } });\nvar NoopLogger_1 = require(\"./NoopLogger\");\nObject.defineProperty(exports, \"NOOP_LOGGER\", { enumerable: true, get: function () { return NoopLogger_1.NOOP_LOGGER; } });\nObject.defineProperty(exports, \"NoopLogger\", { enumerable: true, get: function () { return NoopLogger_1.NoopLogger; } });\nvar NoopLoggerProvider_1 = require(\"./NoopLoggerProvider\");\nObject.defineProperty(exports, \"NOOP_LOGGER_PROVIDER\", { enumerable: true, get: function () { return NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER; } });\nObject.defineProperty(exports, \"NoopLoggerProvider\", { enumerable: true, get: function () { return NoopLoggerProvider_1.NoopLoggerProvider; } });\nvar ProxyLogger_1 = require(\"./ProxyLogger\");\nObject.defineProperty(exports, \"ProxyLogger\", { enumerable: true, get: function () { return ProxyLogger_1.ProxyLogger; } });\nvar ProxyLoggerProvider_1 = require(\"./ProxyLoggerProvider\");\nObject.defineProperty(exports, \"ProxyLoggerProvider\", { enumerable: true, get: function () { return ProxyLoggerProvider_1.ProxyLoggerProvider; } });\nconst logs_1 = require(\"./api/logs\");\nexports.logs = logs_1.LogsAPI.getInstance();\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.disableInstrumentations = exports.enableInstrumentations = void 0;\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nfunction enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) {\n    for (let i = 0, j = instrumentations.length; i < j; i++) {\n        const instrumentation = instrumentations[i];\n        if (tracerProvider) {\n            instrumentation.setTracerProvider(tracerProvider);\n        }\n        if (meterProvider) {\n            instrumentation.setMeterProvider(meterProvider);\n        }\n        if (loggerProvider && instrumentation.setLoggerProvider) {\n            instrumentation.setLoggerProvider(loggerProvider);\n        }\n        // instrumentations have been already enabled during creation\n        // so enable only if user prevented that by setting enabled to false\n        // this is to prevent double enabling but when calling register all\n        // instrumentations should be now enabled\n        if (!instrumentation.getConfig().enabled) {\n            instrumentation.enable();\n        }\n    }\n}\nexports.enableInstrumentations = enableInstrumentations;\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nfunction disableInstrumentations(instrumentations) {\n    instrumentations.forEach(instrumentation => instrumentation.disable());\n}\nexports.disableInstrumentations = disableInstrumentations;\n//# sourceMappingURL=autoLoaderUtils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerInstrumentations = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst autoLoaderUtils_1 = require(\"./autoLoaderUtils\");\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n *   registered\n */\nfunction registerInstrumentations(options) {\n    const tracerProvider = options.tracerProvider || api_1.trace.getTracerProvider();\n    const meterProvider = options.meterProvider || api_1.metrics.getMeterProvider();\n    const loggerProvider = options.loggerProvider || api_logs_1.logs.getLoggerProvider();\n    const instrumentations = options.instrumentations?.flat() ?? [];\n    (0, autoLoaderUtils_1.enableInstrumentations)(instrumentations, tracerProvider, meterProvider, loggerProvider);\n    return () => {\n        (0, autoLoaderUtils_1.disableInstrumentations)(instrumentations);\n    };\n}\nexports.registerInstrumentations = registerInstrumentations;\n//# sourceMappingURL=autoLoader.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.satisfies = void 0;\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\nconst api_1 = require(\"@opentelemetry/api\");\nconst VERSION_REGEXP = /^(?:v)?(?(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*))(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst RANGE_REGEXP = /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|0|[1-9]\\d*))?)(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst operatorResMap = {\n    '>': [1],\n    '>=': [0, 1],\n    '=': [0],\n    '<=': [-1, 0],\n    '<': [-1],\n    '!=': [-1, 1],\n};\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range   the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nfunction satisfies(version, range, options) {\n    // Strict semver format check\n    if (!_validateVersion(version)) {\n        api_1.diag.error(`Invalid version: ${version}`);\n        return false;\n    }\n    // If range is empty, satisfy check succeeds regardless what version is\n    if (!range) {\n        return true;\n    }\n    // Cleanup range\n    range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n    // Parse version\n    const parsedVersion = _parseVersion(version);\n    if (!parsedVersion) {\n        return false;\n    }\n    const allParsedRanges = [];\n    // Check given version whether it satisfies given range expression\n    const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options);\n    // If check result is OK,\n    // do another final check for pre-release, if pre-release check is included by option\n    if (checkResult && !options?.includePrerelease) {\n        return _doPreleaseCheck(parsedVersion, allParsedRanges);\n    }\n    return checkResult;\n}\nexports.satisfies = satisfies;\nfunction _validateVersion(version) {\n    return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\nfunction _doSatisfies(parsedVersion, range, allParsedRanges, options) {\n    if (range.includes('||')) {\n        // A version matches a range if and only if\n        // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n        const ranges = range.trim().split('||');\n        for (const r of ranges) {\n            if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n                return true;\n            }\n        }\n        return false;\n    }\n    else if (range.includes(' - ')) {\n        // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n        range = replaceHyphen(range, options);\n    }\n    else if (range.includes(' ')) {\n        // Multiple separated ranges and all needs to be satisfied for success\n        const ranges = range\n            .trim()\n            .replace(/\\s{2,}/g, ' ')\n            .split(' ');\n        for (const r of ranges) {\n            if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    // Check given parsed version with given range\n    return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\nfunction _checkRange(parsedVersion, range, allParsedRanges, options) {\n    range = _normalizeRange(range, options);\n    if (range.includes(' ')) {\n        // If there are multiple ranges separated, satisfy each of them\n        return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n    }\n    else {\n        // Validate and parse range\n        const parsedRange = _parseRange(range);\n        allParsedRanges.push(parsedRange);\n        // Check parsed version by parsed range\n        return _satisfies(parsedVersion, parsedRange);\n    }\n}\nfunction _satisfies(parsedVersion, parsedRange) {\n    // If range is invalid, satisfy check fails (no error throw)\n    if (parsedRange.invalid) {\n        return false;\n    }\n    // If range is empty or wildcard, satisfy check succeeds regardless what version is\n    if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n        return true;\n    }\n    // Compare version segment first\n    let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []);\n    // If versions segments are equal, compare by pre-release segments\n    if (comparisonResult === 0) {\n        const versionPrereleaseSegments = parsedVersion.prereleaseSegments || [];\n        const rangePrereleaseSegments = parsedRange.prereleaseSegments || [];\n        if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n            comparisonResult = 0;\n        }\n        else if (!versionPrereleaseSegments.length &&\n            rangePrereleaseSegments.length) {\n            comparisonResult = 1;\n        }\n        else if (versionPrereleaseSegments.length &&\n            !rangePrereleaseSegments.length) {\n            comparisonResult = -1;\n        }\n        else {\n            comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments);\n        }\n    }\n    // Resolve check result according to comparison operator\n    return operatorResMap[parsedRange.op]?.includes(comparisonResult);\n}\nfunction _doPreleaseCheck(parsedVersion, allParsedRanges) {\n    if (parsedVersion.prerelease) {\n        return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version);\n    }\n    return true;\n}\nfunction _normalizeRange(range, options) {\n    range = range.trim();\n    range = replaceCaret(range, options);\n    range = replaceTilde(range);\n    range = replaceXRange(range, options);\n    range = range.trim();\n    return range;\n}\nfunction isX(id) {\n    return !id || id.toLowerCase() === 'x' || id === '*';\n}\nfunction _parseVersion(versionString) {\n    const match = versionString.match(VERSION_REGEXP);\n    if (!match) {\n        api_1.diag.error(`Invalid version: ${versionString}`);\n        return undefined;\n    }\n    const version = match.groups.version;\n    const prerelease = match.groups.prerelease;\n    const build = match.groups.build;\n    const versionSegments = version.split('.');\n    const prereleaseSegments = prerelease?.split('.');\n    return {\n        op: undefined,\n        version,\n        versionSegments,\n        versionSegmentCount: versionSegments.length,\n        prerelease,\n        prereleaseSegments,\n        prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n        build,\n    };\n}\nfunction _parseRange(rangeString) {\n    if (!rangeString) {\n        return {};\n    }\n    const match = rangeString.match(RANGE_REGEXP);\n    if (!match) {\n        api_1.diag.error(`Invalid range: ${rangeString}`);\n        return {\n            invalid: true,\n        };\n    }\n    let op = match.groups.op;\n    const version = match.groups.version;\n    const prerelease = match.groups.prerelease;\n    const build = match.groups.build;\n    const versionSegments = version.split('.');\n    const prereleaseSegments = prerelease?.split('.');\n    if (op === '==') {\n        op = '=';\n    }\n    return {\n        op: op || '=',\n        version,\n        versionSegments,\n        versionSegmentCount: versionSegments.length,\n        prerelease,\n        prereleaseSegments,\n        prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n        build,\n    };\n}\nfunction _isWildcard(s) {\n    return s === '*' || s === 'x' || s === 'X';\n}\nfunction _parseVersionString(v) {\n    const n = parseInt(v, 10);\n    return isNaN(n) ? v : n;\n}\nfunction _normalizeVersionType(a, b) {\n    if (typeof a === typeof b) {\n        if (typeof a === 'number') {\n            return [a, b];\n        }\n        else if (typeof a === 'string') {\n            return [a, b];\n        }\n        else {\n            throw new Error('Version segments can only be strings or numbers');\n        }\n    }\n    else {\n        return [String(a), String(b)];\n    }\n}\nfunction _compareVersionStrings(v1, v2) {\n    if (_isWildcard(v1) || _isWildcard(v2)) {\n        return 0;\n    }\n    const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2));\n    if (parsedV1 > parsedV2) {\n        return 1;\n    }\n    else if (parsedV1 < parsedV2) {\n        return -1;\n    }\n    return 0;\n}\nfunction _compareVersionSegments(v1, v2) {\n    for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n        const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n        if (res !== 0) {\n            return res;\n        }\n    }\n    return 0;\n}\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN = `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n    `(?:\\\\.(${XRANGEIDENTIFIER})` +\n    `(?:\\\\.(${XRANGEIDENTIFIER})` +\n    `(?:${PRERELEASE})?${BUILD}?` +\n    `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\nconst HYPHENRANGE = `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp) {\n    const r = TILDE_REGEXP;\n    return comp.replace(r, (_, M, m, p, pr) => {\n        let ret;\n        if (isX(M)) {\n            ret = '';\n        }\n        else if (isX(m)) {\n            ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n        }\n        else if (isX(p)) {\n            // ~1.2 == >=1.2.0 <1.3.0-0\n            ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n        }\n        else if (pr) {\n            ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n        }\n        else {\n            // ~1.2.3 == >=1.2.3 <1.3.0-0\n            ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n        }\n        return ret;\n    });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp, options) {\n    const r = CARET_REGEXP;\n    const z = options?.includePrerelease ? '-0' : '';\n    return comp.replace(r, (_, M, m, p, pr) => {\n        let ret;\n        if (isX(M)) {\n            ret = '';\n        }\n        else if (isX(m)) {\n            ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n        }\n        else if (isX(p)) {\n            if (M === '0') {\n                ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n            }\n            else {\n                ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n            }\n        }\n        else if (pr) {\n            if (M === '0') {\n                if (m === '0') {\n                    ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n                }\n                else {\n                    ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n                }\n            }\n            else {\n                ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n            }\n        }\n        else {\n            if (M === '0') {\n                if (m === '0') {\n                    ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n                }\n                else {\n                    ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n                }\n            }\n            else {\n                ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n            }\n        }\n        return ret;\n    });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp, options) {\n    const r = XRANGE_REGEXP;\n    return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n        const xM = isX(M);\n        const xm = xM || isX(m);\n        const xp = xm || isX(p);\n        const anyX = xp;\n        if (gtlt === '=' && anyX) {\n            gtlt = '';\n        }\n        // if we're including prereleases in the match, then we need\n        // to fix this to -0, the lowest possible prerelease value\n        pr = options?.includePrerelease ? '-0' : '';\n        if (xM) {\n            if (gtlt === '>' || gtlt === '<') {\n                // nothing is allowed\n                ret = '<0.0.0-0';\n            }\n            else {\n                // nothing is forbidden\n                ret = '*';\n            }\n        }\n        else if (gtlt && anyX) {\n            // we know patch is an x, because we have any x at all.\n            // replace X with 0\n            if (xm) {\n                m = 0;\n            }\n            p = 0;\n            if (gtlt === '>') {\n                // >1 => >=2.0.0\n                // >1.2 => >=1.3.0\n                gtlt = '>=';\n                if (xm) {\n                    M = +M + 1;\n                    m = 0;\n                    p = 0;\n                }\n                else {\n                    m = +m + 1;\n                    p = 0;\n                }\n            }\n            else if (gtlt === '<=') {\n                // <=0.7.x is actually <0.8.0, since any 0.7.x should\n                // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n                gtlt = '<';\n                if (xm) {\n                    M = +M + 1;\n                }\n                else {\n                    m = +m + 1;\n                }\n            }\n            if (gtlt === '<') {\n                pr = '-0';\n            }\n            ret = `${gtlt + M}.${m}.${p}${pr}`;\n        }\n        else if (xm) {\n            ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n        }\n        else if (xp) {\n            ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n        }\n        return ret;\n    });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp, options) {\n    const r = HYPHENRANGE_REGEXP;\n    return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n        if (isX(fM)) {\n            from = '';\n        }\n        else if (isX(fm)) {\n            from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n        }\n        else if (isX(fp)) {\n            from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n        }\n        else if (fpr) {\n            from = `>=${from}`;\n        }\n        else {\n            from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n        }\n        if (isX(tM)) {\n            to = '';\n        }\n        else if (isX(tm)) {\n            to = `<${+tM + 1}.0.0-0`;\n        }\n        else if (isX(tp)) {\n            to = `<${tM}.${+tm + 1}.0-0`;\n        }\n        else if (tpr) {\n            to = `<=${tM}.${tm}.${tp}-${tpr}`;\n        }\n        else if (options?.includePrerelease) {\n            to = `<${tM}.${tm}.${+tp + 1}-0`;\n        }\n        else {\n            to = `<=${to}`;\n        }\n        return `${from} ${to}`.trim();\n    });\n}\n//# sourceMappingURL=semver.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massUnwrap = exports.unwrap = exports.massWrap = exports.wrap = void 0;\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger = console.error.bind(console);\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj, name, value) {\n    const enumerable = !!obj[name] &&\n        Object.prototype.propertyIsEnumerable.call(obj, name);\n    Object.defineProperty(obj, name, {\n        configurable: true,\n        enumerable,\n        writable: true,\n        value,\n    });\n}\nconst wrap = (nodule, name, wrapper) => {\n    if (!nodule || !nodule[name]) {\n        logger('no original function ' + String(name) + ' to wrap');\n        return;\n    }\n    if (!wrapper) {\n        logger('no wrapper function');\n        logger(new Error().stack);\n        return;\n    }\n    const original = nodule[name];\n    if (typeof original !== 'function' || typeof wrapper !== 'function') {\n        logger('original object and wrapper must be functions');\n        return;\n    }\n    const wrapped = wrapper(original, name);\n    defineProperty(wrapped, '__original', original);\n    defineProperty(wrapped, '__unwrap', () => {\n        if (nodule[name] === wrapped) {\n            defineProperty(nodule, name, original);\n        }\n    });\n    defineProperty(wrapped, '__wrapped', true);\n    defineProperty(nodule, name, wrapped);\n    return wrapped;\n};\nexports.wrap = wrap;\nconst massWrap = (nodules, names, wrapper) => {\n    if (!nodules) {\n        logger('must provide one or more modules to patch');\n        logger(new Error().stack);\n        return;\n    }\n    else if (!Array.isArray(nodules)) {\n        nodules = [nodules];\n    }\n    if (!(names && Array.isArray(names))) {\n        logger('must provide one or more functions to wrap on modules');\n        return;\n    }\n    nodules.forEach(nodule => {\n        names.forEach(name => {\n            (0, exports.wrap)(nodule, name, wrapper);\n        });\n    });\n};\nexports.massWrap = massWrap;\nconst unwrap = (nodule, name) => {\n    if (!nodule || !nodule[name]) {\n        logger('no function to unwrap.');\n        logger(new Error().stack);\n        return;\n    }\n    const wrapped = nodule[name];\n    if (!wrapped.__unwrap) {\n        logger('no original to unwrap to -- has ' +\n            String(name) +\n            ' already been unwrapped?');\n    }\n    else {\n        wrapped.__unwrap();\n        return;\n    }\n};\nexports.unwrap = unwrap;\nconst massUnwrap = (nodules, names) => {\n    if (!nodules) {\n        logger('must provide one or more modules to patch');\n        logger(new Error().stack);\n        return;\n    }\n    else if (!Array.isArray(nodules)) {\n        nodules = [nodules];\n    }\n    if (!(names && Array.isArray(names))) {\n        logger('must provide one or more functions to unwrap on modules');\n        return;\n    }\n    nodules.forEach(nodule => {\n        names.forEach(name => {\n            (0, exports.unwrap)(nodule, name);\n        });\n    });\n};\nexports.massUnwrap = massUnwrap;\nfunction shimmer(options) {\n    if (options && options.logger) {\n        if (typeof options.logger !== 'function') {\n            logger(\"new logger isn't a function, not replacing\");\n        }\n        else {\n            logger = options.logger;\n        }\n    }\n}\nexports.default = shimmer;\nshimmer.wrap = exports.wrap;\nshimmer.massWrap = exports.massWrap;\nshimmer.unwrap = exports.unwrap;\nshimmer.massUnwrap = exports.massUnwrap;\n//# sourceMappingURL=shimmer.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationAbstract = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst shimmer = require(\"./shimmer\");\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nclass InstrumentationAbstract {\n    instrumentationName;\n    instrumentationVersion;\n    _config = {};\n    _tracer;\n    _meter;\n    _logger;\n    _diag;\n    constructor(instrumentationName, instrumentationVersion, config) {\n        this.instrumentationName = instrumentationName;\n        this.instrumentationVersion = instrumentationVersion;\n        this.setConfig(config);\n        this._diag = api_1.diag.createComponentLogger({\n            namespace: instrumentationName,\n        });\n        this._tracer = api_1.trace.getTracer(instrumentationName, instrumentationVersion);\n        this._meter = api_1.metrics.getMeter(instrumentationName, instrumentationVersion);\n        this._logger = api_logs_1.logs.getLogger(instrumentationName, instrumentationVersion);\n        this._updateMetricInstruments();\n    }\n    /* Api to wrap instrumented method */\n    _wrap = shimmer.wrap;\n    /* Api to unwrap instrumented methods */\n    _unwrap = shimmer.unwrap;\n    /* Api to mass wrap instrumented method */\n    _massWrap = shimmer.massWrap;\n    /* Api to mass unwrap instrumented methods */\n    _massUnwrap = shimmer.massUnwrap;\n    /* Returns meter */\n    get meter() {\n        return this._meter;\n    }\n    /**\n     * Sets MeterProvider to this plugin\n     * @param meterProvider\n     */\n    setMeterProvider(meterProvider) {\n        this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion);\n        this._updateMetricInstruments();\n    }\n    /* Returns logger */\n    get logger() {\n        return this._logger;\n    }\n    /**\n     * Sets LoggerProvider to this plugin\n     * @param loggerProvider\n     */\n    setLoggerProvider(loggerProvider) {\n        this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion);\n    }\n    /**\n     * @experimental\n     *\n     * Get module definitions defined by {@link init}.\n     * This can be used for experimental compile-time instrumentation.\n     *\n     * @returns an array of {@link InstrumentationModuleDefinition}\n     */\n    getModuleDefinitions() {\n        const initResult = this.init() ?? [];\n        if (!Array.isArray(initResult)) {\n            return [initResult];\n        }\n        return initResult;\n    }\n    /**\n     * Sets the new metric instruments with the current Meter.\n     */\n    _updateMetricInstruments() {\n        return;\n    }\n    /* Returns InstrumentationConfig */\n    getConfig() {\n        return this._config;\n    }\n    /**\n     * Sets InstrumentationConfig to this plugin\n     * @param config\n     */\n    setConfig(config) {\n        // copy config first level properties to ensure they are immutable.\n        // nested properties are not copied, thus are mutable from the outside.\n        this._config = {\n            enabled: true,\n            ...config,\n        };\n    }\n    /**\n     * Sets TraceProvider to this plugin\n     * @param tracerProvider\n     */\n    setTracerProvider(tracerProvider) {\n        this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion);\n    }\n    /* Returns tracer */\n    get tracer() {\n        return this._tracer;\n    }\n    /**\n     * Execute span customization hook, if configured, and log any errors.\n     * Any semantics of the trigger and info are defined by the specific instrumentation.\n     * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n     * @param triggerName The name of the trigger for executing the hook for logging purposes\n     * @param span The span to which the hook should be applied\n     * @param info The info object to be passed to the hook, with useful data the hook may use\n     */\n    _runSpanCustomizationHook(hookHandler, triggerName, span, info) {\n        if (!hookHandler) {\n            return;\n        }\n        try {\n            hookHandler(span, info);\n        }\n        catch (e) {\n            this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e);\n        }\n    }\n}\nexports.InstrumentationAbstract = InstrumentationAbstract;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleNameTrie = exports.ModuleNameSeparator = void 0;\nexports.ModuleNameSeparator = '/';\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n    hooks = [];\n    children = new Map();\n}\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nclass ModuleNameTrie {\n    _trie = new ModuleNameTrieNode();\n    _counter = 0;\n    /**\n     * Insert a module hook into the trie\n     *\n     * @param {Hooked} hook Hook\n     */\n    insert(hook) {\n        let trieNode = this._trie;\n        for (const moduleNamePart of hook.moduleName.split(exports.ModuleNameSeparator)) {\n            let nextNode = trieNode.children.get(moduleNamePart);\n            if (!nextNode) {\n                nextNode = new ModuleNameTrieNode();\n                trieNode.children.set(moduleNamePart, nextNode);\n            }\n            trieNode = nextNode;\n        }\n        trieNode.hooks.push({ hook, insertedId: this._counter++ });\n    }\n    /**\n     * Search for matching hooks in the trie\n     *\n     * @param {string} moduleName Module name\n     * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n     * @param {boolean} fullOnly Whether to return only full matches\n     * @returns {Hooked[]} Matching hooks\n     */\n    search(moduleName, { maintainInsertionOrder, fullOnly } = {}) {\n        let trieNode = this._trie;\n        const results = [];\n        let foundFull = true;\n        for (const moduleNamePart of moduleName.split(exports.ModuleNameSeparator)) {\n            const nextNode = trieNode.children.get(moduleNamePart);\n            if (!nextNode) {\n                foundFull = false;\n                break;\n            }\n            if (!fullOnly) {\n                results.push(...nextNode.hooks);\n            }\n            trieNode = nextNode;\n        }\n        if (fullOnly && foundFull) {\n            results.push(...trieNode.hooks);\n        }\n        if (results.length === 0) {\n            return [];\n        }\n        if (results.length === 1) {\n            return [results[0].hook];\n        }\n        if (maintainInsertionOrder) {\n            results.sort((a, b) => a.insertedId - b.insertedId);\n        }\n        return results.map(({ hook }) => hook);\n    }\n}\nexports.ModuleNameTrie = ModuleNameTrie;\n//# sourceMappingURL=ModuleNameTrie.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequireInTheMiddleSingleton = void 0;\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst path = require(\"path\");\nconst ModuleNameTrie_1 = require(\"./ModuleNameTrie\");\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n    'afterEach',\n    'after',\n    'beforeEach',\n    'before',\n    'describe',\n    'it',\n].every(fn => {\n    // @ts-expect-error TS7053: Element implicitly has an 'any' type\n    return typeof global[fn] === 'function';\n});\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nclass RequireInTheMiddleSingleton {\n    _moduleNameTrie = new ModuleNameTrie_1.ModuleNameTrie();\n    static _instance;\n    constructor() {\n        this._initialize();\n    }\n    _initialize() {\n        new require_in_the_middle_1.Hook(\n        // Intercept all `require` calls; we will filter the matching ones below\n        null, { internals: true }, (exports, name, basedir) => {\n            // For internal files on Windows, `name` will use backslash as the path separator\n            const normalizedModuleName = normalizePathSeparators(name);\n            const matches = this._moduleNameTrie.search(normalizedModuleName, {\n                maintainInsertionOrder: true,\n                // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n                // This matches the behavior of `require-in-the-middle`.\n                // `basedir` is always `undefined` for core modules.\n                fullOnly: basedir === undefined,\n            });\n            for (const { onRequire } of matches) {\n                exports = onRequire(exports, name, basedir);\n            }\n            return exports;\n        });\n    }\n    /**\n     * Register a hook with `require-in-the-middle`\n     *\n     * @param {string} moduleName Module name\n     * @param {OnRequireFn} onRequire Hook function\n     * @returns {Hooked} Registered hook\n     */\n    register(moduleName, onRequire) {\n        const hooked = { moduleName, onRequire };\n        this._moduleNameTrie.insert(hooked);\n        return hooked;\n    }\n    /**\n     * Get the `RequireInTheMiddleSingleton` singleton\n     *\n     * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n     */\n    static getInstance() {\n        // Mocha runs all test suites in the same process\n        // This prevents test suites from sharing a singleton\n        if (isMocha)\n            return new RequireInTheMiddleSingleton();\n        return (this._instance =\n            this._instance ?? new RequireInTheMiddleSingleton());\n    }\n}\nexports.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton;\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath) {\n    return path.sep !== ModuleNameTrie_1.ModuleNameSeparator\n        ? moduleNameOrPath.split(path.sep).join(ModuleNameTrie_1.ModuleNameSeparator)\n        : moduleNameOrPath;\n}\n//# sourceMappingURL=RequireInTheMiddleSingleton.js.map",
+    "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst importHooks = [] // TODO should this be a Set?\nconst setters = new WeakMap()\nconst getters = new WeakMap()\nconst specifiers = new Map()\nconst toHook = []\n\nconst proxyHandler = {\n  set (target, name, value) {\n    const set = setters.get(target)\n    const setter = set && set[name]\n    if (typeof setter === 'function') {\n      return setter(value)\n    }\n    // If a module doesn't export the property being assigned (e.g. no default\n    // export), there is no setter to call. Don't crash userland code.\n    return true\n  },\n\n  get (target, name) {\n    if (name === Symbol.toStringTag) {\n      return 'Module'\n    }\n\n    const getter = getters.get(target)[name]\n\n    if (typeof getter === 'function') {\n      return getter()\n    }\n  },\n\n  defineProperty (target, property, descriptor) {\n    if ((!('value' in descriptor))) {\n      throw new Error('Getters/setters are not supported for exports property descriptors.')\n    }\n\n    const set = setters.get(target)\n    const setter = set && set[property]\n    if (typeof setter === 'function') {\n      return setter(descriptor.value)\n    }\n    return true\n  }\n}\n\nfunction register (name, namespace, set, get, specifier) {\n  specifiers.set(name, specifier)\n  setters.set(namespace, set)\n  getters.set(namespace, get)\n  const proxy = new Proxy(namespace, proxyHandler)\n  importHooks.forEach(hook => hook(name, proxy, specifier))\n  toHook.push([name, proxy, specifier])\n}\n\nexports.register = register\nexports.importHooks = importHooks\nexports.specifiers = specifiers\nexports.toHook = toHook\n",
+    "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst path = require('path')\nconst moduleDetailsFromPath = require('module-details-from-path')\nconst { fileURLToPath } = require('url')\nconst { MessageChannel } = require('worker_threads')\n\nlet { isBuiltin } = require('module')\nif (!isBuiltin) {\n  isBuiltin = () => true\n}\n\nconst {\n  importHooks,\n  specifiers,\n  toHook\n} = require('./lib/register')\n\nfunction addHook (hook) {\n  importHooks.push(hook)\n  toHook.forEach(([name, namespace, specifier]) => hook(name, namespace, specifier))\n}\n\nfunction removeHook (hook) {\n  const index = importHooks.indexOf(hook)\n  if (index > -1) {\n    importHooks.splice(index, 1)\n  }\n}\n\nfunction callHookFn (hookFn, namespace, name, baseDir) {\n  const newDefault = hookFn(namespace, name, baseDir)\n  if (newDefault && newDefault !== namespace) {\n    // Only ESM modules that actually export `default` can have it reassigned.\n    // Some hooks return a value unconditionally; avoid crashing when the module\n    // has no default export (see issue #188).\n    if ('default' in namespace) {\n      namespace.default = newDefault\n    }\n  }\n}\n\nlet sendModulesToLoader\n\n/**\n * EXPERIMENTAL\n * This feature is experimental and may change in minor versions.\n * **NOTE** This feature is incompatible with the {internals: true} Hook option.\n *\n * Creates a message channel with a port that can be used to add hooks to the\n * list of exclusively included modules.\n *\n * This can be used to only wrap modules that are Hook'ed, however modules need\n * to be hooked before they are imported.\n *\n * ```ts\n * import { register } from 'module'\n * import { Hook, createAddHookMessageChannel } from 'import-in-the-middle'\n *\n * const { registerOptions, waitForAllMessagesAcknowledged } = createAddHookMessageChannel()\n *\n * register('import-in-the-middle/hook.mjs', import.meta.url, registerOptions)\n *\n * Hook(['fs'], (exported, name, baseDir) => {\n *   // Instrument the fs module\n * })\n *\n * // Ensure that the loader has acknowledged all the modules\n * // before we allow execution to continue\n * await waitForAllMessagesAcknowledged()\n * ```\n */\nfunction createAddHookMessageChannel () {\n  const { port1, port2 } = new MessageChannel()\n  let pendingAckCount = 0\n  let resolveFn\n\n  sendModulesToLoader = (modules) => {\n    pendingAckCount++\n    port1.postMessage(modules)\n  }\n\n  port1.on('message', () => {\n    pendingAckCount--\n\n    if (resolveFn && pendingAckCount <= 0) {\n      resolveFn()\n    }\n  }).unref()\n\n  function waitForAllMessagesAcknowledged () {\n    // This timer is to prevent the process from exiting with code 13:\n    // 13: Unsettled Top-Level Await.\n    const timer = setInterval(() => { }, 1000)\n    const promise = new Promise((resolve) => {\n      resolveFn = resolve\n    }).then(() => { clearInterval(timer) })\n\n    if (pendingAckCount === 0) {\n      resolveFn()\n    }\n\n    return promise\n  }\n\n  const addHookMessagePort = port2\n  const registerOptions = { data: { addHookMessagePort, include: [] }, transferList: [addHookMessagePort] }\n\n  return { registerOptions, addHookMessagePort, waitForAllMessagesAcknowledged }\n}\n\nfunction Hook (modules, options, hookFn) {\n  if ((this instanceof Hook) === false) return new Hook(modules, options, hookFn)\n  if (typeof modules === 'function') {\n    hookFn = modules\n    modules = null\n    options = null\n  } else if (typeof options === 'function') {\n    hookFn = options\n    options = null\n  }\n  const internals = options ? options.internals === true : false\n\n  if (sendModulesToLoader && Array.isArray(modules)) {\n    sendModulesToLoader(modules)\n  }\n\n  this._iitmHook = (name, namespace, specifier) => {\n    const loadUrl = name\n    const isNodeUrl = loadUrl.startsWith('node:')\n    let filePath, baseDir\n\n    if (isNodeUrl) {\n      // Normalize builtin module name to *not* have 'node:' prefix, unless\n      // required, as it is for 'node:test' and some others.  `module.isBuiltin`\n      // is available in all Node.js versions that have node:-only modules.\n      const unprefixed = name.slice(5)\n      if (isBuiltin(unprefixed)) {\n        name = unprefixed\n      }\n    } else if (loadUrl.startsWith('file://')) {\n      const stackTraceLimit = Error.stackTraceLimit\n      Error.stackTraceLimit = 0\n      try {\n        filePath = fileURLToPath(name)\n        name = filePath\n      } catch (e) {}\n      Error.stackTraceLimit = stackTraceLimit\n\n      if (filePath) {\n        const details = moduleDetailsFromPath(filePath)\n        if (details) {\n          name = details.name\n          baseDir = details.basedir\n        }\n      }\n    }\n\n    if (modules) {\n      for (const matchArg of modules) {\n        if (filePath && matchArg === filePath) {\n          // abspath match\n          callHookFn(hookFn, namespace, filePath, undefined)\n        } else if (matchArg === name) {\n          if (!baseDir) {\n            // built-in module (or unexpected non file:// name?)\n            callHookFn(hookFn, namespace, name, baseDir)\n          } else if (baseDir.endsWith(specifiers.get(loadUrl))) {\n            // An import of the top-level module (e.g. `import 'ioredis'`).\n            // Note: Slight behaviour difference from RITM. RITM uses\n            // `require.resolve(name)` to see if filename is the module\n            // main file, which will catch `require('ioredis/built/index.js')`.\n            // The check here will not catch `import 'ioredis/built/index.js'`.\n            callHookFn(hookFn, namespace, name, baseDir)\n          } else if (internals) {\n            const internalPath = name + path.sep + path.relative(baseDir, filePath)\n            callHookFn(hookFn, namespace, internalPath, baseDir)\n          }\n        } else if (matchArg === specifier) {\n          callHookFn(hookFn, namespace, specifier, baseDir)\n        }\n      }\n    } else {\n      callHookFn(hookFn, namespace, name, baseDir)\n    }\n  }\n\n  addHook(this._iitmHook)\n}\n\nHook.prototype.unhook = function () {\n  removeHook(this._iitmHook)\n}\n\nmodule.exports = Hook\nmodule.exports.Hook = Hook\nmodule.exports.addHook = addHook\nmodule.exports.removeHook = removeHook\nmodule.exports.createAddHookMessageChannel = createAddHookMessageChannel\n",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0;\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nfunction safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) {\n    let error;\n    let result;\n    try {\n        result = execute();\n    }\n    catch (e) {\n        error = e;\n    }\n    finally {\n        onFinish(error, result);\n        if (error && !preventThrowingError) {\n            // eslint-disable-next-line no-unsafe-finally\n            throw error;\n        }\n        // eslint-disable-next-line no-unsafe-finally\n        return result;\n    }\n}\nexports.safeExecuteInTheMiddle = safeExecuteInTheMiddle;\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nasync function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) {\n    let error;\n    let result;\n    try {\n        result = await execute();\n    }\n    catch (e) {\n        error = e;\n    }\n    finally {\n        onFinish(error, result);\n        if (error && !preventThrowingError) {\n            // eslint-disable-next-line no-unsafe-finally\n            throw error;\n        }\n        // eslint-disable-next-line no-unsafe-finally\n        return result;\n    }\n}\nexports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync;\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nfunction isWrapped(func) {\n    return (typeof func === 'function' &&\n        typeof func.__original === 'function' &&\n        typeof func.__unwrap === 'function' &&\n        func.__wrapped === true);\n}\nexports.isWrapped = isWrapped;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationBase = void 0;\nconst path = require(\"path\");\nconst util_1 = require(\"util\");\nconst semver_1 = require(\"../../semver\");\nconst shimmer_1 = require(\"../../shimmer\");\nconst instrumentation_1 = require(\"../../instrumentation\");\nconst RequireInTheMiddleSingleton_1 = require(\"./RequireInTheMiddleSingleton\");\nconst import_in_the_middle_1 = require(\"import-in-the-middle\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst fs_1 = require(\"fs\");\nconst utils_1 = require(\"../../utils\");\n/**\n * Base abstract class for instrumenting node plugins\n */\nclass InstrumentationBase extends instrumentation_1.InstrumentationAbstract {\n    _modules;\n    _hooks = [];\n    _requireInTheMiddleSingleton = RequireInTheMiddleSingleton_1.RequireInTheMiddleSingleton.getInstance();\n    _enabled = false;\n    constructor(instrumentationName, instrumentationVersion, config) {\n        super(instrumentationName, instrumentationVersion, config);\n        let modules = this.init();\n        if (modules && !Array.isArray(modules)) {\n            modules = [modules];\n        }\n        this._modules = modules || [];\n        if (this._config.enabled) {\n            this.enable();\n        }\n    }\n    _wrap = (moduleExports, name, wrapper) => {\n        if ((0, utils_1.isWrapped)(moduleExports[name])) {\n            this._unwrap(moduleExports, name);\n        }\n        if (!util_1.types.isProxy(moduleExports)) {\n            return (0, shimmer_1.wrap)(moduleExports, name, wrapper);\n        }\n        else {\n            const wrapped = (0, shimmer_1.wrap)(Object.assign({}, moduleExports), name, wrapper);\n            Object.defineProperty(moduleExports, name, {\n                value: wrapped,\n            });\n            return wrapped;\n        }\n    };\n    _unwrap = (moduleExports, name) => {\n        if (!util_1.types.isProxy(moduleExports)) {\n            return (0, shimmer_1.unwrap)(moduleExports, name);\n        }\n        else {\n            return Object.defineProperty(moduleExports, name, {\n                value: moduleExports[name],\n            });\n        }\n    };\n    _massWrap = (moduleExportsArray, names, wrapper) => {\n        if (!moduleExportsArray) {\n            api_1.diag.error('must provide one or more modules to patch');\n            return;\n        }\n        else if (!Array.isArray(moduleExportsArray)) {\n            moduleExportsArray = [moduleExportsArray];\n        }\n        if (!(names && Array.isArray(names))) {\n            api_1.diag.error('must provide one or more functions to wrap on modules');\n            return;\n        }\n        moduleExportsArray.forEach(moduleExports => {\n            names.forEach(name => {\n                this._wrap(moduleExports, name, wrapper);\n            });\n        });\n    };\n    _massUnwrap = (moduleExportsArray, names) => {\n        if (!moduleExportsArray) {\n            api_1.diag.error('must provide one or more modules to patch');\n            return;\n        }\n        else if (!Array.isArray(moduleExportsArray)) {\n            moduleExportsArray = [moduleExportsArray];\n        }\n        if (!(names && Array.isArray(names))) {\n            api_1.diag.error('must provide one or more functions to wrap on modules');\n            return;\n        }\n        moduleExportsArray.forEach(moduleExports => {\n            names.forEach(name => {\n                this._unwrap(moduleExports, name);\n            });\n        });\n    };\n    _warnOnPreloadedModules() {\n        this._modules.forEach((module) => {\n            const { name } = module;\n            try {\n                const resolvedModule = require.resolve(name);\n                if (require.cache[resolvedModule]) {\n                    // Module is already cached, which means the instrumentation hook might not work\n                    this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`);\n                }\n            }\n            catch {\n                // Module isn't available, we can simply skip\n            }\n        });\n    }\n    _extractPackageVersion(baseDir) {\n        try {\n            const json = (0, fs_1.readFileSync)(path.join(baseDir, 'package.json'), {\n                encoding: 'utf8',\n            });\n            const version = JSON.parse(json).version;\n            return typeof version === 'string' ? version : undefined;\n        }\n        catch {\n            api_1.diag.warn('Failed extracting version', baseDir);\n        }\n        return undefined;\n    }\n    _onRequire(module, exports, name, baseDir) {\n        if (!baseDir) {\n            if (typeof module.patch === 'function') {\n                module.moduleExports = exports;\n                if (this._enabled) {\n                    this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', {\n                        module: module.name,\n                    });\n                    return module.patch(exports);\n                }\n            }\n            return exports;\n        }\n        const version = this._extractPackageVersion(baseDir);\n        module.moduleVersion = version;\n        if (module.name === name) {\n            // main module\n            if (isSupported(module.supportedVersions, version, module.includePrerelease)) {\n                if (typeof module.patch === 'function') {\n                    module.moduleExports = exports;\n                    if (this._enabled) {\n                        this._diag.debug('Applying instrumentation patch for module on require hook', {\n                            module: module.name,\n                            version: module.moduleVersion,\n                            baseDir,\n                        });\n                        return module.patch(exports, module.moduleVersion);\n                    }\n                }\n            }\n            return exports;\n        }\n        // internal file\n        const files = module.files ?? [];\n        const normalizedName = path.normalize(name);\n        const supportedFileInstrumentations = files\n            .filter(f => f.name === normalizedName)\n            .filter(f => isSupported(f.supportedVersions, version, module.includePrerelease));\n        return supportedFileInstrumentations.reduce((patchedExports, file) => {\n            file.moduleExports = patchedExports;\n            if (this._enabled) {\n                this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', {\n                    module: module.name,\n                    version: module.moduleVersion,\n                    fileName: file.name,\n                    baseDir,\n                });\n                // patch signature is not typed, so we cast it assuming it's correct\n                return file.patch(patchedExports, module.moduleVersion);\n            }\n            return patchedExports;\n        }, exports);\n    }\n    enable() {\n        if (this._enabled) {\n            return;\n        }\n        this._enabled = true;\n        // already hooked, just call patch again\n        if (this._hooks.length > 0) {\n            for (const module of this._modules) {\n                if (typeof module.patch === 'function' && module.moduleExports) {\n                    this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', {\n                        module: module.name,\n                        version: module.moduleVersion,\n                    });\n                    module.patch(module.moduleExports, module.moduleVersion);\n                }\n                for (const file of module.files) {\n                    if (file.moduleExports) {\n                        this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', {\n                            module: module.name,\n                            version: module.moduleVersion,\n                            fileName: file.name,\n                        });\n                        file.patch(file.moduleExports, module.moduleVersion);\n                    }\n                }\n            }\n            return;\n        }\n        this._warnOnPreloadedModules();\n        for (const module of this._modules) {\n            const hookFn = (exports, name, baseDir) => {\n                if (!baseDir && path.isAbsolute(name)) {\n                    const parsedPath = path.parse(name);\n                    name = parsedPath.name;\n                    baseDir = parsedPath.dir;\n                }\n                return this._onRequire(module, exports, name, baseDir);\n            };\n            const onRequire = (exports, name, baseDir) => {\n                return this._onRequire(module, exports, name, baseDir);\n            };\n            // `RequireInTheMiddleSingleton` does not support absolute paths.\n            // For an absolute paths, we must create a separate instance of the\n            // require-in-the-middle `Hook`.\n            const hook = path.isAbsolute(module.name)\n                ? new require_in_the_middle_1.Hook([module.name], { internals: true }, onRequire)\n                : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n            this._hooks.push(hook);\n            const esmHook = new import_in_the_middle_1.Hook([module.name], { internals: false }, hookFn);\n            this._hooks.push(esmHook);\n        }\n    }\n    disable() {\n        if (!this._enabled) {\n            return;\n        }\n        this._enabled = false;\n        for (const module of this._modules) {\n            if (typeof module.unpatch === 'function' && module.moduleExports) {\n                this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', {\n                    module: module.name,\n                    version: module.moduleVersion,\n                });\n                module.unpatch(module.moduleExports, module.moduleVersion);\n            }\n            for (const file of module.files) {\n                if (file.moduleExports) {\n                    this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', {\n                        module: module.name,\n                        version: module.moduleVersion,\n                        fileName: file.name,\n                    });\n                    file.unpatch(file.moduleExports, module.moduleVersion);\n                }\n            }\n        }\n    }\n    isEnabled() {\n        return this._enabled;\n    }\n}\nexports.InstrumentationBase = InstrumentationBase;\nfunction isSupported(supportedVersions, version, includePrerelease) {\n    if (typeof version === 'undefined') {\n        // If we don't have the version, accept the wildcard case only\n        return supportedVersions.includes('*');\n    }\n    return supportedVersions.some(supportedVersion => {\n        return (0, semver_1.satisfies)(version, supportedVersion, { includePrerelease });\n    });\n}\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nvar path_1 = require(\"path\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return path_1.normalize; } });\n//# sourceMappingURL=normalize.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } });\nvar normalize_1 = require(\"./normalize\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return normalize_1.normalize; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return node_1.InstrumentationBase; } });\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return node_1.normalize; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleDefinition = void 0;\nclass InstrumentationNodeModuleDefinition {\n    name;\n    supportedVersions;\n    patch;\n    unpatch;\n    files;\n    constructor(name, supportedVersions, \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    patch, \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    unpatch, files) {\n        this.name = name;\n        this.supportedVersions = supportedVersions;\n        this.patch = patch;\n        this.unpatch = unpatch;\n        this.files = files || [];\n    }\n}\nexports.InstrumentationNodeModuleDefinition = InstrumentationNodeModuleDefinition;\n//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleFile = void 0;\nconst index_1 = require(\"./platform/index\");\nclass InstrumentationNodeModuleFile {\n    supportedVersions;\n    patch;\n    unpatch;\n    name;\n    constructor(name, supportedVersions, \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    patch, \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    unpatch) {\n        this.supportedVersions = supportedVersions;\n        this.patch = patch;\n        this.unpatch = unpatch;\n        this.name = (0, index_1.normalize)(name);\n    }\n}\nexports.InstrumentationNodeModuleFile = InstrumentationNodeModuleFile;\n//# sourceMappingURL=instrumentationNodeModuleFile.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = void 0;\nvar SemconvStability;\n(function (SemconvStability) {\n    /** Emit only stable semantic conventions. */\n    SemconvStability[SemconvStability[\"STABLE\"] = 1] = \"STABLE\";\n    /** Emit only old semantic conventions. */\n    SemconvStability[SemconvStability[\"OLD\"] = 2] = \"OLD\";\n    /** Emit both stable and old semantic conventions. */\n    SemconvStability[SemconvStability[\"DUPLICATE\"] = 3] = \"DUPLICATE\";\n})(SemconvStability = exports.SemconvStability || (exports.SemconvStability = {}));\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n *  import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n *  export class FooInstrumentation extends InstrumentationBase {\n *    private _semconvStability: SemconvStability;\n *    constructor(config: FooInstrumentationConfig = {}) {\n *      super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n *      // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n *      );\n *\n *      // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n *      // the web where there are no envvars).\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        config?.semconvStabilityOptIn\n *      );\n *    }\n *  }\n *\n *  // Then, to apply semconv, use the following or similar:\n *  if (this._semconvStability & SemconvStability.OLD) {\n *    // ...\n *  }\n *  if (this._semconvStability & SemconvStability.STABLE) {\n *    // ...\n *  }\n *\n */\nfunction semconvStabilityFromStr(namespace, str) {\n    let semconvStability = SemconvStability.OLD;\n    // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n    const entries = str\n        ?.split(',')\n        .map(v => v.trim())\n        .filter(s => s !== '');\n    for (const entry of entries ?? []) {\n        if (entry.toLowerCase() === namespace + '/dup') {\n            // DUPLICATE takes highest precedence.\n            semconvStability = SemconvStability.DUPLICATE;\n            break;\n        }\n        else if (entry.toLowerCase() === namespace) {\n            semconvStability = SemconvStability.STABLE;\n        }\n    }\n    return semconvStability;\n}\nexports.semconvStabilityFromStr = semconvStabilityFromStr;\n//# sourceMappingURL=semconvStability.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = exports.isWrapped = exports.InstrumentationNodeModuleFile = exports.InstrumentationNodeModuleDefinition = exports.InstrumentationBase = exports.registerInstrumentations = void 0;\nvar autoLoader_1 = require(\"./autoLoader\");\nObject.defineProperty(exports, \"registerInstrumentations\", { enumerable: true, get: function () { return autoLoader_1.registerInstrumentations; } });\nvar index_1 = require(\"./platform/index\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return index_1.InstrumentationBase; } });\nvar instrumentationNodeModuleDefinition_1 = require(\"./instrumentationNodeModuleDefinition\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleDefinition\", { enumerable: true, get: function () { return instrumentationNodeModuleDefinition_1.InstrumentationNodeModuleDefinition; } });\nvar instrumentationNodeModuleFile_1 = require(\"./instrumentationNodeModuleFile\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleFile\", { enumerable: true, get: function () { return instrumentationNodeModuleFile_1.InstrumentationNodeModuleFile; } });\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"isWrapped\", { enumerable: true, get: function () { return utils_1.isWrapped; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddle\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddle; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddleAsync\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddleAsync; } });\nvar semconvStability_1 = require(\"./semconvStability\");\nObject.defineProperty(exports, \"SemconvStability\", { enumerable: true, get: function () { return semconvStability_1.SemconvStability; } });\nObject.defineProperty(exports, \"semconvStabilityFromStr\", { enumerable: true, get: function () { return semconvStability_1.semconvStabilityFromStr; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.59.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-hapi';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HapiLifecycleMethodNames = exports.HapiLayerType = exports.handlerPatched = exports.HapiComponentName = void 0;\nexports.HapiComponentName = '@hapi/hapi';\n/**\n * This symbol is used to mark a Hapi route handler or server extension handler as\n * already patched, since its possible to use these handlers multiple times\n * i.e. when allowing multiple versions of one plugin, or when registering a plugin\n * multiple times on different servers.\n */\nexports.handlerPatched = Symbol('hapi-handler-patched');\nexports.HapiLayerType = {\n    ROUTER: 'router',\n    PLUGIN: 'plugin',\n    EXT: 'server.ext',\n};\nexports.HapiLifecycleMethodNames = new Set([\n    'onPreAuth',\n    'onCredentials',\n    'onPostAuth',\n    'onPreHandler',\n    'onPostHandler',\n    'onPreResponse',\n    'onRequest',\n]);\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_HTTP_METHOD = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexports.ATTR_HTTP_METHOD = 'http.method';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"HAPI_TYPE\"] = \"hapi.type\";\n    AttributeNames[\"PLUGIN_NAME\"] = \"hapi.plugin.name\";\n    AttributeNames[\"EXT_TYPE\"] = \"server.ext.type\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPluginFromInput = exports.getExtMetadata = exports.getRouteMetadata = exports.isPatchableExtMethod = exports.isDirectExtInput = exports.isLifecycleExtEventObj = exports.isLifecycleExtType = exports.getPluginName = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst internal_types_1 = require(\"./internal-types\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nfunction getPluginName(plugin) {\n    if (plugin.name) {\n        return plugin.name;\n    }\n    else {\n        return plugin.pkg.name;\n    }\n}\nexports.getPluginName = getPluginName;\nconst isLifecycleExtType = (variableToCheck) => {\n    return (typeof variableToCheck === 'string' &&\n        internal_types_1.HapiLifecycleMethodNames.has(variableToCheck));\n};\nexports.isLifecycleExtType = isLifecycleExtType;\nconst isLifecycleExtEventObj = (variableToCheck) => {\n    const event = variableToCheck?.type;\n    return event !== undefined && (0, exports.isLifecycleExtType)(event);\n};\nexports.isLifecycleExtEventObj = isLifecycleExtEventObj;\nconst isDirectExtInput = (variableToCheck) => {\n    return (Array.isArray(variableToCheck) &&\n        variableToCheck.length <= 3 &&\n        (0, exports.isLifecycleExtType)(variableToCheck[0]) &&\n        typeof variableToCheck[1] === 'function');\n};\nexports.isDirectExtInput = isDirectExtInput;\nconst isPatchableExtMethod = (variableToCheck) => {\n    return !Array.isArray(variableToCheck);\n};\nexports.isPatchableExtMethod = isPatchableExtMethod;\nconst getRouteMetadata = (route, semconvStability, pluginName) => {\n    const attributes = {\n        [semantic_conventions_1.ATTR_HTTP_ROUTE]: route.path,\n    };\n    if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n        attributes[semconv_1.ATTR_HTTP_METHOD] = route.method;\n    }\n    if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n        // Note: This currently does *not* normalize the method name to uppercase\n        // and conditionally include `http.request.method.original` as described\n        // at https://opentelemetry.io/docs/specs/semconv/http/http-spans/\n        // These attributes are for a *hapi* span, and not the parent HTTP span,\n        // so the HTTP span guidance doesn't strictly apply.\n        attributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD] = route.method;\n    }\n    let name;\n    if (pluginName) {\n        attributes[AttributeNames_1.AttributeNames.HAPI_TYPE] = internal_types_1.HapiLayerType.PLUGIN;\n        attributes[AttributeNames_1.AttributeNames.PLUGIN_NAME] = pluginName;\n        name = `${pluginName}: route - ${route.path}`;\n    }\n    else {\n        attributes[AttributeNames_1.AttributeNames.HAPI_TYPE] = internal_types_1.HapiLayerType.ROUTER;\n        name = `route - ${route.path}`;\n    }\n    return { attributes, name };\n};\nexports.getRouteMetadata = getRouteMetadata;\nconst getExtMetadata = (extPoint, pluginName) => {\n    if (pluginName) {\n        return {\n            attributes: {\n                [AttributeNames_1.AttributeNames.EXT_TYPE]: extPoint,\n                [AttributeNames_1.AttributeNames.HAPI_TYPE]: internal_types_1.HapiLayerType.EXT,\n                [AttributeNames_1.AttributeNames.PLUGIN_NAME]: pluginName,\n            },\n            name: `${pluginName}: ext - ${extPoint}`,\n        };\n    }\n    return {\n        attributes: {\n            [AttributeNames_1.AttributeNames.EXT_TYPE]: extPoint,\n            [AttributeNames_1.AttributeNames.HAPI_TYPE]: internal_types_1.HapiLayerType.EXT,\n        },\n        name: `ext - ${extPoint}`,\n    };\n};\nexports.getExtMetadata = getExtMetadata;\nconst getPluginFromInput = (pluginObj) => {\n    if ('plugin' in pluginObj) {\n        if ('plugin' in pluginObj.plugin) {\n            return pluginObj.plugin.plugin;\n        }\n        return pluginObj.plugin;\n    }\n    return pluginObj;\n};\nexports.getPluginFromInput = getPluginFromInput;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HapiInstrumentation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst internal_types_1 = require(\"./internal-types\");\nconst utils_1 = require(\"./utils\");\n/** Hapi instrumentation for OpenTelemetry */\nclass HapiInstrumentation extends instrumentation_1.InstrumentationBase {\n    _semconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        return new instrumentation_1.InstrumentationNodeModuleDefinition(internal_types_1.HapiComponentName, ['>=17.0.0 <22'], (module) => {\n            const moduleExports = module[Symbol.toStringTag] === 'Module' ? module.default : module;\n            if (!(0, instrumentation_1.isWrapped)(moduleExports.server)) {\n                this._wrap(moduleExports, 'server', this._getServerPatch.bind(this));\n            }\n            if (!(0, instrumentation_1.isWrapped)(moduleExports.Server)) {\n                this._wrap(moduleExports, 'Server', this._getServerPatch.bind(this));\n            }\n            return moduleExports;\n        }, (module) => {\n            const moduleExports = module[Symbol.toStringTag] === 'Module' ? module.default : module;\n            this._massUnwrap([moduleExports], ['server', 'Server']);\n        });\n    }\n    /**\n     * Patches the Hapi.server and Hapi.Server functions in order to instrument\n     * the server.route, server.ext, and server.register functions via calls to the\n     * @function _getServerRoutePatch, @function _getServerExtPatch, and\n     * @function _getServerRegisterPatch functions\n     * @param original - the original Hapi Server creation function\n     */\n    _getServerPatch(original) {\n        const instrumentation = this;\n        const self = this;\n        return function server(opts) {\n            const newServer = original.apply(this, [opts]);\n            self._wrap(newServer, 'route', originalRouter => {\n                return instrumentation._getServerRoutePatch.bind(instrumentation)(originalRouter);\n            });\n            // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n            // function, which requires supporting a variety of different parameters\n            // as extension inputs\n            self._wrap(newServer, 'ext', originalExtHandler => {\n                return instrumentation._getServerExtPatch.bind(instrumentation)(\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                originalExtHandler);\n            });\n            // Casting as any is necessary here due to multiple overloads on the Hapi.Server.register\n            // function, which requires supporting a variety of different types of Plugin inputs\n            self._wrap(newServer, 'register', \n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            instrumentation._getServerRegisterPatch.bind(instrumentation));\n            return newServer;\n        };\n    }\n    /**\n     * Patches the plugin register function used by the Hapi Server. This function\n     * goes through each plugin that is being registered and adds instrumentation\n     * via a call to the @function _wrapRegisterHandler function.\n     * @param {RegisterFunction} original - the original register function which\n     * registers each plugin on the server\n     */\n    _getServerRegisterPatch(original) {\n        const instrumentation = this;\n        return function register(pluginInput, options) {\n            if (Array.isArray(pluginInput)) {\n                for (const pluginObj of pluginInput) {\n                    const plugin = (0, utils_1.getPluginFromInput)(pluginObj);\n                    instrumentation._wrapRegisterHandler(plugin);\n                }\n            }\n            else {\n                const plugin = (0, utils_1.getPluginFromInput)(pluginInput);\n                instrumentation._wrapRegisterHandler(plugin);\n            }\n            return original.apply(this, [pluginInput, options]);\n        };\n    }\n    /**\n     * Patches the Server.ext function which adds extension methods to the specified\n     * point along the request lifecycle. This function accepts the full range of\n     * accepted input into the standard Hapi `server.ext` function. For each extension,\n     * it adds instrumentation to the handler via a call to the @function _wrapExtMethods\n     * function.\n     * @param original - the original ext function which adds the extension method to the server\n     * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n     * for adding this server extension. Else, signifies that the extension was added directly\n     */\n    _getServerExtPatch(original, pluginName) {\n        const instrumentation = this;\n        return function ext(...args) {\n            if (Array.isArray(args[0])) {\n                const eventsList = args[0];\n                for (let i = 0; i < eventsList.length; i++) {\n                    const eventObj = eventsList[i];\n                    if ((0, utils_1.isLifecycleExtType)(eventObj.type)) {\n                        const lifecycleEventObj = eventObj;\n                        const handler = instrumentation._wrapExtMethods(lifecycleEventObj.method, eventObj.type, pluginName);\n                        lifecycleEventObj.method = handler;\n                        eventsList[i] = lifecycleEventObj;\n                    }\n                }\n                return original.apply(this, args);\n            }\n            else if ((0, utils_1.isDirectExtInput)(args)) {\n                const extInput = args;\n                const method = extInput[1];\n                const handler = instrumentation._wrapExtMethods(method, extInput[0], pluginName);\n                return original.apply(this, [extInput[0], handler, extInput[2]]);\n            }\n            else if ((0, utils_1.isLifecycleExtEventObj)(args[0])) {\n                const lifecycleEventObj = args[0];\n                const handler = instrumentation._wrapExtMethods(lifecycleEventObj.method, lifecycleEventObj.type, pluginName);\n                lifecycleEventObj.method = handler;\n                return original.call(this, lifecycleEventObj);\n            }\n            return original.apply(this, args);\n        };\n    }\n    /**\n     * Patches the Server.route function. This function accepts either one or an array\n     * of Hapi.ServerRoute objects and adds instrumentation on each route via a call to\n     * the @function _wrapRouteHandler function.\n     * @param {HapiServerRouteInputMethod} original - the original route function which adds\n     * the route to the server\n     * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n     * for adding this server route. Else, signifies that the route was added directly\n     */\n    _getServerRoutePatch(original, pluginName) {\n        const instrumentation = this;\n        return function route(route) {\n            if (Array.isArray(route)) {\n                for (let i = 0; i < route.length; i++) {\n                    const newRoute = instrumentation._wrapRouteHandler.call(instrumentation, route[i], pluginName);\n                    route[i] = newRoute;\n                }\n            }\n            else {\n                route = instrumentation._wrapRouteHandler.call(instrumentation, route, pluginName);\n            }\n            return original.apply(this, [route]);\n        };\n    }\n    /**\n     * Wraps newly registered plugins to add instrumentation to the plugin's clone of\n     * the original server. Specifically, wraps the server.route and server.ext functions\n     * via calls to @function _getServerRoutePatch and @function _getServerExtPatch\n     * @param {Hapi.Plugin} plugin - the new plugin which is being instrumented\n     */\n    _wrapRegisterHandler(plugin) {\n        const instrumentation = this;\n        const pluginName = (0, utils_1.getPluginName)(plugin);\n        const oldRegister = plugin.register;\n        const self = this;\n        const newRegisterHandler = function (server, options) {\n            self._wrap(server, 'route', original => {\n                return instrumentation._getServerRoutePatch.bind(instrumentation)(original, pluginName);\n            });\n            // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n            // function, which requires supporting a variety of different parameters\n            // as extension inputs\n            self._wrap(server, 'ext', originalExtHandler => {\n                return instrumentation._getServerExtPatch.bind(instrumentation)(\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                originalExtHandler, pluginName);\n            });\n            return oldRegister.call(this, server, options);\n        };\n        plugin.register = newRegisterHandler;\n    }\n    /**\n     * Wraps request extension methods to add instrumentation to each new extension handler.\n     * Patches each individual extension in order to create the\n     * span and propagate context. It does not create spans when there is no parent span.\n     * @param {PatchableExtMethod | PatchableExtMethod[]} method - the request extension\n     * handler which is being instrumented\n     * @param {Hapi.ServerRequestExtType} extPoint - the point in the Hapi request lifecycle\n     * which this extension targets\n     * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n     * for adding this server route. Else, signifies that the route was added directly\n     */\n    _wrapExtMethods(method, extPoint, pluginName) {\n        const instrumentation = this;\n        if (method instanceof Array) {\n            for (let i = 0; i < method.length; i++) {\n                method[i] = instrumentation._wrapExtMethods(method[i], extPoint);\n            }\n            return method;\n        }\n        else if ((0, utils_1.isPatchableExtMethod)(method)) {\n            if (method[internal_types_1.handlerPatched] === true)\n                return method;\n            method[internal_types_1.handlerPatched] = true;\n            const newHandler = async function (...params) {\n                if (api.trace.getSpan(api.context.active()) === undefined) {\n                    return await method.apply(this, params);\n                }\n                const metadata = (0, utils_1.getExtMetadata)(extPoint, pluginName);\n                const span = instrumentation.tracer.startSpan(metadata.name, {\n                    attributes: metadata.attributes,\n                });\n                try {\n                    return await api.context.with(api.trace.setSpan(api.context.active(), span), method, undefined, ...params);\n                }\n                catch (err) {\n                    span.recordException(err);\n                    span.setStatus({\n                        code: api.SpanStatusCode.ERROR,\n                        message: err.message,\n                    });\n                    throw err;\n                }\n                finally {\n                    span.end();\n                }\n            };\n            return newHandler;\n        }\n        return method;\n    }\n    /**\n     * Patches each individual route handler method in order to create the\n     * span and propagate context. It does not create spans when there is no parent span.\n     * @param {PatchableServerRoute} route - the route handler which is being instrumented\n     * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n     * for adding this server route. Else, signifies that the route was added directly\n     */\n    _wrapRouteHandler(route, pluginName) {\n        const instrumentation = this;\n        if (route[internal_types_1.handlerPatched] === true)\n            return route;\n        route[internal_types_1.handlerPatched] = true;\n        const wrapHandler = oldHandler => {\n            return async function (...params) {\n                if (api.trace.getSpan(api.context.active()) === undefined) {\n                    return await oldHandler.call(this, ...params);\n                }\n                const rpcMetadata = (0, core_1.getRPCMetadata)(api.context.active());\n                if (rpcMetadata?.type === core_1.RPCType.HTTP) {\n                    rpcMetadata.route = route.path;\n                }\n                const metadata = (0, utils_1.getRouteMetadata)(route, instrumentation._semconvStability, pluginName);\n                const span = instrumentation.tracer.startSpan(metadata.name, {\n                    attributes: metadata.attributes,\n                });\n                try {\n                    return await api.context.with(api.trace.setSpan(api.context.active(), span), () => oldHandler.call(this, ...params));\n                }\n                catch (err) {\n                    span.recordException(err);\n                    span.setStatus({\n                        code: api.SpanStatusCode.ERROR,\n                        message: err.message,\n                    });\n                    throw err;\n                }\n                finally {\n                    span.end();\n                }\n            };\n        };\n        if (typeof route.handler === 'function') {\n            route.handler = wrapHandler(route.handler);\n        }\n        else if (typeof route.options === 'function') {\n            const oldOptions = route.options;\n            route.options = function (server) {\n                const options = oldOptions(server);\n                if (typeof options.handler === 'function') {\n                    options.handler = wrapHandler(options.handler);\n                }\n                return options;\n            };\n        }\n        else if (typeof route.options?.handler === 'function') {\n            route.options.handler = wrapHandler(route.options.handler);\n        }\n        return route;\n    }\n}\nexports.HapiInstrumentation = HapiInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = exports.HapiInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"HapiInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.HapiInstrumentation; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KoaLayerType = void 0;\nvar KoaLayerType;\n(function (KoaLayerType) {\n    KoaLayerType[\"ROUTER\"] = \"router\";\n    KoaLayerType[\"MIDDLEWARE\"] = \"middleware\";\n})(KoaLayerType = exports.KoaLayerType || (exports.KoaLayerType = {}));\n//# sourceMappingURL=types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-koa';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"KOA_TYPE\"] = \"koa.type\";\n    AttributeNames[\"KOA_NAME\"] = \"koa.name\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isLayerIgnored = exports.getMiddlewareMetadata = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst types_1 = require(\"./types\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst getMiddlewareMetadata = (context, layer, isRouter, layerPath) => {\n    if (isRouter) {\n        return {\n            attributes: {\n                [AttributeNames_1.AttributeNames.KOA_NAME]: layerPath?.toString(),\n                [AttributeNames_1.AttributeNames.KOA_TYPE]: types_1.KoaLayerType.ROUTER,\n                [semantic_conventions_1.ATTR_HTTP_ROUTE]: layerPath?.toString(),\n            },\n            name: context._matchedRouteName || `router - ${layerPath}`,\n        };\n    }\n    else {\n        return {\n            attributes: {\n                [AttributeNames_1.AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n                [AttributeNames_1.AttributeNames.KOA_TYPE]: types_1.KoaLayerType.MIDDLEWARE,\n            },\n            name: `middleware - ${layer.name}`,\n        };\n    }\n};\nexports.getMiddlewareMetadata = getMiddlewareMetadata;\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n *     occurred\n */\nconst isLayerIgnored = (type, config) => {\n    return !!(Array.isArray(config?.ignoreLayersType) &&\n        config?.ignoreLayersType?.includes(type));\n};\nexports.isLayerIgnored = isLayerIgnored;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.kLayerPatched = void 0;\n/**\n * This symbol is used to mark a Koa layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexports.kLayerPatched = Symbol('koa-layer-patched');\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KoaInstrumentation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst types_1 = require(\"./types\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst utils_1 = require(\"./utils\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst internal_types_1 = require(\"./internal-types\");\n/** Koa instrumentation for OpenTelemetry */\nclass KoaInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    init() {\n        return new instrumentation_1.InstrumentationNodeModuleDefinition('koa', ['>=2.0.0 <4'], (module) => {\n            const moduleExports = module[Symbol.toStringTag] === 'Module'\n                ? module.default // ESM\n                : module; // CommonJS\n            if (moduleExports == null) {\n                return moduleExports;\n            }\n            if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.use)) {\n                this._unwrap(moduleExports.prototype, 'use');\n            }\n            this._wrap(moduleExports.prototype, 'use', this._getKoaUsePatch.bind(this));\n            return module;\n        }, (module) => {\n            const moduleExports = module[Symbol.toStringTag] === 'Module'\n                ? module.default // ESM\n                : module; // CommonJS\n            if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.use)) {\n                this._unwrap(moduleExports.prototype, 'use');\n            }\n        });\n    }\n    /**\n     * Patches the Koa.use function in order to instrument each original\n     * middleware layer which is introduced\n     * @param {KoaMiddleware} middleware - the original middleware function\n     */\n    _getKoaUsePatch(original) {\n        const plugin = this;\n        return function use(middlewareFunction) {\n            let patchedFunction;\n            if (middlewareFunction.router) {\n                patchedFunction = plugin._patchRouterDispatch(middlewareFunction);\n            }\n            else {\n                patchedFunction = plugin._patchLayer(middlewareFunction, false);\n            }\n            return original.apply(this, [patchedFunction]);\n        };\n    }\n    /**\n     * Patches the dispatch function used by @koa/router. This function\n     * goes through each routed middleware and adds instrumentation via a call\n     * to the @function _patchLayer function.\n     * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches\n     * routed middleware\n     */\n    _patchRouterDispatch(dispatchLayer) {\n        api.diag.debug('Patching @koa/router dispatch');\n        const router = dispatchLayer.router;\n        const routesStack = router?.stack ?? [];\n        for (const pathLayer of routesStack) {\n            const path = pathLayer.path;\n            // Type cast needed: router.stack comes from @types/koa@2.x but we use @types/koa@3.x\n            // See internal-types.ts for full explanation\n            const pathStack = pathLayer.stack;\n            for (let j = 0; j < pathStack.length; j++) {\n                const routedMiddleware = pathStack[j];\n                pathStack[j] = this._patchLayer(routedMiddleware, true, path);\n            }\n        }\n        return dispatchLayer;\n    }\n    /**\n     * Patches each individual @param middlewareLayer function in order to create the\n     * span and propagate context. It does not create spans when there is no parent span.\n     * @param {KoaMiddleware} middlewareLayer - the original middleware function.\n     * @param {boolean} isRouter - tracks whether the original middleware function\n     * was dispatched by the router originally\n     * @param {string?} layerPath - if present, provides additional data from the\n     * router about the routed path which the middleware is attached to\n     */\n    _patchLayer(middlewareLayer, isRouter, layerPath) {\n        const layerType = isRouter ? types_1.KoaLayerType.ROUTER : types_1.KoaLayerType.MIDDLEWARE;\n        // Skip patching layer if its ignored in the config\n        if (middlewareLayer[internal_types_1.kLayerPatched] === true ||\n            (0, utils_1.isLayerIgnored)(layerType, this.getConfig()))\n            return middlewareLayer;\n        if (middlewareLayer.constructor.name === 'GeneratorFunction' ||\n            middlewareLayer.constructor.name === 'AsyncGeneratorFunction') {\n            api.diag.debug('ignoring generator-based Koa middleware layer');\n            return middlewareLayer;\n        }\n        middlewareLayer[internal_types_1.kLayerPatched] = true;\n        api.diag.debug('patching Koa middleware layer');\n        return async (context, next) => {\n            const parent = api.trace.getSpan(api.context.active());\n            if (parent === undefined) {\n                return middlewareLayer(context, next);\n            }\n            const metadata = (0, utils_1.getMiddlewareMetadata)(context, middlewareLayer, isRouter, layerPath);\n            const span = this.tracer.startSpan(metadata.name, {\n                attributes: metadata.attributes,\n            });\n            const rpcMetadata = (0, core_1.getRPCMetadata)(api.context.active());\n            if (rpcMetadata?.type === core_1.RPCType.HTTP && context._matchedRoute) {\n                rpcMetadata.route = context._matchedRoute.toString();\n            }\n            const { requestHook } = this.getConfig();\n            if (requestHook) {\n                (0, instrumentation_1.safeExecuteInTheMiddle)(() => requestHook(span, {\n                    context,\n                    middlewareLayer,\n                    layerType,\n                }), e => {\n                    if (e) {\n                        api.diag.error('koa instrumentation: request hook failed', e);\n                    }\n                }, true);\n            }\n            const newContext = api.trace.setSpan(api.context.active(), span);\n            return api.context.with(newContext, async () => {\n                try {\n                    return await middlewareLayer(context, next);\n                }\n                catch (err) {\n                    span.recordException(err);\n                    throw err;\n                }\n                finally {\n                    span.end();\n                }\n            });\n        };\n    }\n}\nexports.KoaInstrumentation = KoaInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KoaLayerType = exports.AttributeNames = exports.KoaInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"KoaInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.KoaInstrumentation; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"KoaLayerType\", { enumerable: true, get: function () { return types_1.KoaLayerType; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectNames = exports.ConnectTypes = exports.AttributeNames = void 0;\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"CONNECT_TYPE\"] = \"connect.type\";\n    AttributeNames[\"CONNECT_NAME\"] = \"connect.name\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\nvar ConnectTypes;\n(function (ConnectTypes) {\n    ConnectTypes[\"MIDDLEWARE\"] = \"middleware\";\n    ConnectTypes[\"REQUEST_HANDLER\"] = \"request_handler\";\n})(ConnectTypes = exports.ConnectTypes || (exports.ConnectTypes = {}));\nvar ConnectNames;\n(function (ConnectNames) {\n    ConnectNames[\"MIDDLEWARE\"] = \"middleware\";\n    ConnectNames[\"REQUEST_HANDLER\"] = \"request handler\";\n})(ConnectNames = exports.ConnectNames || (exports.ConnectNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.56.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-connect';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._LAYERS_STORE_PROPERTY = void 0;\nexports._LAYERS_STORE_PROPERTY = Symbol('opentelemetry.instrumentation-connect.request-route-stack');\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateRoute = exports.replaceCurrentStackRoute = exports.addNewStackLayer = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst internal_types_1 = require(\"./internal-types\");\nconst addNewStackLayer = (request) => {\n    if (Array.isArray(request[internal_types_1._LAYERS_STORE_PROPERTY]) === false) {\n        Object.defineProperty(request, internal_types_1._LAYERS_STORE_PROPERTY, {\n            enumerable: false,\n            value: [],\n        });\n    }\n    request[internal_types_1._LAYERS_STORE_PROPERTY].push('/');\n    const stackLength = request[internal_types_1._LAYERS_STORE_PROPERTY].length;\n    return () => {\n        if (stackLength === request[internal_types_1._LAYERS_STORE_PROPERTY].length) {\n            request[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n        }\n        else {\n            api_1.diag.warn('Connect: Trying to pop the stack multiple time');\n        }\n    };\n};\nexports.addNewStackLayer = addNewStackLayer;\nconst replaceCurrentStackRoute = (request, newRoute) => {\n    if (newRoute) {\n        request[internal_types_1._LAYERS_STORE_PROPERTY].splice(-1, 1, newRoute);\n    }\n};\nexports.replaceCurrentStackRoute = replaceCurrentStackRoute;\n// generate route from existing stack on request object.\n// splash between stack layer will be deduped\n// [\"/first/\", \"/second\", \"/third/\"] => /first/second/third/\nconst generateRoute = (request) => {\n    return request[internal_types_1._LAYERS_STORE_PROPERTY].reduce((acc, sub) => acc.replace(/\\/+$/, '') + sub);\n};\nexports.generateRoute = generateRoute;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectInstrumentation = exports.ANONYMOUS_NAME = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst utils_1 = require(\"./utils\");\nexports.ANONYMOUS_NAME = 'anonymous';\n/** Connect instrumentation for OpenTelemetry */\nclass ConnectInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('connect', ['>=3.0.0 <4'], moduleExports => {\n                return this._patchConstructor(moduleExports);\n            }),\n        ];\n    }\n    _patchApp(patchedApp) {\n        if (!(0, instrumentation_1.isWrapped)(patchedApp.use)) {\n            this._wrap(patchedApp, 'use', this._patchUse.bind(this));\n        }\n        if (!(0, instrumentation_1.isWrapped)(patchedApp.handle)) {\n            this._wrap(patchedApp, 'handle', this._patchHandle.bind(this));\n        }\n    }\n    _patchConstructor(original) {\n        const instrumentation = this;\n        return function (...args) {\n            const app = original.apply(this, args);\n            instrumentation._patchApp(app);\n            return app;\n        };\n    }\n    _patchNext(next, finishSpan) {\n        return function nextFunction(err) {\n            const result = next.apply(this, [err]);\n            finishSpan();\n            return result;\n        };\n    }\n    _startSpan(routeName, middleWare) {\n        let connectType;\n        let connectName;\n        let connectTypeName;\n        if (routeName) {\n            connectType = AttributeNames_1.ConnectTypes.REQUEST_HANDLER;\n            connectTypeName = AttributeNames_1.ConnectNames.REQUEST_HANDLER;\n            connectName = routeName;\n        }\n        else {\n            connectType = AttributeNames_1.ConnectTypes.MIDDLEWARE;\n            connectTypeName = AttributeNames_1.ConnectNames.MIDDLEWARE;\n            connectName = middleWare.name || exports.ANONYMOUS_NAME;\n        }\n        const spanName = `${connectTypeName} - ${connectName}`;\n        const options = {\n            attributes: {\n                [semantic_conventions_1.ATTR_HTTP_ROUTE]: routeName.length > 0 ? routeName : '/',\n                [AttributeNames_1.AttributeNames.CONNECT_TYPE]: connectType,\n                [AttributeNames_1.AttributeNames.CONNECT_NAME]: connectName,\n            },\n        };\n        return this.tracer.startSpan(spanName, options);\n    }\n    _patchMiddleware(routeName, middleWare) {\n        const instrumentation = this;\n        const isErrorMiddleware = middleWare.length === 4;\n        function patchedMiddleware() {\n            if (!instrumentation.isEnabled()) {\n                return middleWare.apply(this, arguments);\n            }\n            const [reqArgIdx, resArgIdx, nextArgIdx] = isErrorMiddleware\n                ? [1, 2, 3]\n                : [0, 1, 2];\n            const req = arguments[reqArgIdx];\n            const res = arguments[resArgIdx];\n            const next = arguments[nextArgIdx];\n            (0, utils_1.replaceCurrentStackRoute)(req, routeName);\n            const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active());\n            if (routeName && rpcMetadata?.type === core_1.RPCType.HTTP) {\n                rpcMetadata.route = (0, utils_1.generateRoute)(req);\n            }\n            let spanName = '';\n            if (routeName) {\n                spanName = `request handler - ${routeName}`;\n            }\n            else {\n                spanName = `middleware - ${middleWare.name || exports.ANONYMOUS_NAME}`;\n            }\n            const span = instrumentation._startSpan(routeName, middleWare);\n            instrumentation._diag.debug('start span', spanName);\n            let spanFinished = false;\n            function finishSpan() {\n                if (!spanFinished) {\n                    spanFinished = true;\n                    instrumentation._diag.debug(`finishing span ${span.name}`);\n                    span.end();\n                }\n                else {\n                    instrumentation._diag.debug(`span ${span.name} - already finished`);\n                }\n                res.removeListener('close', finishSpan);\n            }\n            res.addListener('close', finishSpan);\n            arguments[nextArgIdx] = instrumentation._patchNext(next, finishSpan);\n            return middleWare.apply(this, arguments);\n        }\n        Object.defineProperty(patchedMiddleware, 'length', {\n            value: middleWare.length,\n            writable: false,\n            configurable: true,\n        });\n        return patchedMiddleware;\n    }\n    _patchUse(original) {\n        const instrumentation = this;\n        return function (...args) {\n            const middleWare = args[args.length - 1];\n            const routeName = (args[args.length - 2] || '');\n            args[args.length - 1] = instrumentation._patchMiddleware(routeName, middleWare);\n            return original.apply(this, args);\n        };\n    }\n    _patchHandle(original) {\n        const instrumentation = this;\n        return function () {\n            const [reqIdx, outIdx] = [0, 2];\n            const req = arguments[reqIdx];\n            const out = arguments[outIdx];\n            const completeStack = (0, utils_1.addNewStackLayer)(req);\n            if (typeof out === 'function') {\n                arguments[outIdx] = instrumentation._patchOut(out, completeStack);\n            }\n            return original.apply(this, arguments);\n        };\n    }\n    _patchOut(out, completeStack) {\n        return function nextFunction(...args) {\n            completeStack();\n            return Reflect.apply(out, this, args);\n        };\n    }\n}\nexports.ConnectInstrumentation = ConnectInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectTypes = exports.ConnectNames = exports.AttributeNames = exports.ANONYMOUS_NAME = exports.ConnectInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"ConnectInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.ConnectInstrumentation; } });\nObject.defineProperty(exports, \"ANONYMOUS_NAME\", { enumerable: true, get: function () { return instrumentation_1.ANONYMOUS_NAME; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\nObject.defineProperty(exports, \"ConnectNames\", { enumerable: true, get: function () { return AttributeNames_1.ConnectNames; } });\nObject.defineProperty(exports, \"ConnectTypes\", { enumerable: true, get: function () { return AttributeNames_1.ConnectTypes; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_VALUE_MSSQL = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_SQL_TABLE = exports.ATTR_DB_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexports.ATTR_DB_SQL_TABLE = 'db.sql.table';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mssql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft SQL Server\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_MSSQL = 'mssql';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.once = exports.getSpanName = void 0;\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns Operation executed on Tedious Connection. Does not map to SQL statement in any way.\n */\nfunction getSpanName(operation, db, sql, bulkLoadTable) {\n    if (operation === 'execBulkLoad' && bulkLoadTable && db) {\n        return `${operation} ${bulkLoadTable} ${db}`;\n    }\n    if (operation === 'callProcedure') {\n        // `sql` refers to procedure name with `callProcedure`\n        if (db) {\n            return `${operation} ${sql} ${db}`;\n        }\n        return `${operation} ${sql}`;\n    }\n    // do not use `sql` in general case because of high-cardinality\n    if (db) {\n        return `${operation} ${db}`;\n    }\n    return `${operation}`;\n}\nexports.getSpanName = getSpanName;\nconst once = (fn) => {\n    let called = false;\n    return (...args) => {\n        if (called)\n            return;\n        called = true;\n        return fn(...args);\n    };\n};\nexports.once = once;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.32.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-tedious';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TediousInstrumentation = exports.INJECTED_CTX = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst events_1 = require(\"events\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst CURRENT_DATABASE = Symbol('opentelemetry.instrumentation-tedious.current-database');\nexports.INJECTED_CTX = Symbol('opentelemetry.instrumentation-tedious.context-info-injected');\nconst PATCHED_METHODS = [\n    'callProcedure',\n    'execSql',\n    'execSqlBatch',\n    'execBulkLoad',\n    'prepare',\n    'execute',\n];\nfunction setDatabase(databaseName) {\n    Object.defineProperty(this, CURRENT_DATABASE, {\n        value: databaseName,\n        writable: true,\n    });\n}\nclass TediousInstrumentation extends instrumentation_1.InstrumentationBase {\n    static COMPONENT = 'tedious';\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition(TediousInstrumentation.COMPONENT, ['>=1.11.0 <20'], (moduleExports) => {\n                const ConnectionPrototype = moduleExports.Connection.prototype;\n                for (const method of PATCHED_METHODS) {\n                    if ((0, instrumentation_1.isWrapped)(ConnectionPrototype[method])) {\n                        this._unwrap(ConnectionPrototype, method);\n                    }\n                    this._wrap(ConnectionPrototype, method, this._patchQuery(method, moduleExports));\n                }\n                if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.connect)) {\n                    this._unwrap(ConnectionPrototype, 'connect');\n                }\n                this._wrap(ConnectionPrototype, 'connect', this._patchConnect);\n                return moduleExports;\n            }, (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                const ConnectionPrototype = moduleExports.Connection.prototype;\n                for (const method of PATCHED_METHODS) {\n                    this._unwrap(ConnectionPrototype, method);\n                }\n                this._unwrap(ConnectionPrototype, 'connect');\n            }),\n        ];\n    }\n    _patchConnect(original) {\n        return function patchedConnect() {\n            setDatabase.call(this, this.config?.options?.database);\n            // remove the listener first in case it's already added\n            this.removeListener('databaseChange', setDatabase);\n            this.on('databaseChange', setDatabase);\n            this.once('end', () => {\n                this.removeListener('databaseChange', setDatabase);\n            });\n            return original.apply(this, arguments);\n        };\n    }\n    _buildTraceparent(span) {\n        const sc = span.spanContext();\n        return `00-${sc.traceId}-${sc.spanId}-0${Number(sc.traceFlags || api.TraceFlags.NONE).toString(16)}`;\n    }\n    /**\n     * Fire a one-off `SET CONTEXT_INFO @opentelemetry_traceparent` on the same\n     * connection. Marks the request with INJECTED_CTX so our patch skips it.\n     */\n    _injectContextInfo(connection, tediousModule, traceparent) {\n        return new Promise(resolve => {\n            try {\n                const sql = 'set context_info @opentelemetry_traceparent';\n                const req = new tediousModule.Request(sql, (_err) => {\n                    resolve();\n                });\n                Object.defineProperty(req, exports.INJECTED_CTX, { value: true });\n                const buf = Buffer.from(traceparent, 'utf8');\n                req.addParameter('opentelemetry_traceparent', tediousModule.TYPES.VarBinary, buf, { length: buf.length });\n                connection.execSql(req);\n            }\n            catch {\n                resolve();\n            }\n        });\n    }\n    _shouldInjectFor(operation) {\n        return (operation === 'execSql' ||\n            operation === 'execSqlBatch' ||\n            operation === 'callProcedure' ||\n            operation === 'execute');\n    }\n    _patchQuery(operation, tediousModule) {\n        return (originalMethod) => {\n            const thisPlugin = this;\n            function patchedMethod(request) {\n                // Skip our own injected request\n                if (request?.[exports.INJECTED_CTX]) {\n                    return originalMethod.apply(this, arguments);\n                }\n                if (!(request instanceof events_1.EventEmitter)) {\n                    thisPlugin._diag.warn(`Unexpected invocation of patched ${operation} method. Span not recorded`);\n                    return originalMethod.apply(this, arguments);\n                }\n                let procCount = 0;\n                let statementCount = 0;\n                const incrementStatementCount = () => statementCount++;\n                const incrementProcCount = () => procCount++;\n                const databaseName = this[CURRENT_DATABASE];\n                const sql = (request => {\n                    // Required for <11.0.9\n                    if (request.sqlTextOrProcedure === 'sp_prepare' &&\n                        request.parametersByName?.stmt?.value) {\n                        return request.parametersByName.stmt.value;\n                    }\n                    return request.sqlTextOrProcedure;\n                })(request);\n                const attributes = {};\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MSSQL;\n                    attributes[semconv_1.ATTR_DB_NAME] = databaseName;\n                    // >=4 uses `authentication` object; older versions just userName and password pair\n                    attributes[semconv_1.ATTR_DB_USER] =\n                        this.config?.userName ??\n                            this.config?.authentication?.options?.userName;\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = sql;\n                    attributes[semconv_1.ATTR_DB_SQL_TABLE] = request.table;\n                }\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    // The OTel spec for \"db.namespace\" discusses handling for connection\n                    // to MSSQL \"named instances\". This isn't currently supported.\n                    //    https://opentelemetry.io/docs/specs/semconv/database/sql-server/#:~:text=%5B1%5D%20db%2Enamespace\n                    attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = databaseName;\n                    attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] =\n                        semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER;\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = sql;\n                    attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = request.table;\n                    // See https://opentelemetry.io/docs/specs/semconv/database/sql-server/#spans\n                    // TODO(3290): can `db.response.status_code` be added?\n                    // TODO(3290): is `operation` correct for `db.operation.name`\n                    // TODO(3290): can `db.query.summary` reliably be calculated?\n                    // TODO(3290): `db.stored_procedure.name`\n                }\n                if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_NET_PEER_NAME] = this.config?.server;\n                    attributes[semconv_1.ATTR_NET_PEER_PORT] = this.config?.options?.port;\n                }\n                if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = this.config?.server;\n                    attributes[semantic_conventions_1.ATTR_SERVER_PORT] = this.config?.options?.port;\n                }\n                const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(operation, databaseName, sql, request.table), {\n                    kind: api.SpanKind.CLIENT,\n                    attributes,\n                });\n                const endSpan = (0, utils_1.once)((err) => {\n                    request.removeListener('done', incrementStatementCount);\n                    request.removeListener('doneInProc', incrementStatementCount);\n                    request.removeListener('doneProc', incrementProcCount);\n                    request.removeListener('error', endSpan);\n                    this.removeListener('end', endSpan);\n                    span.setAttribute('tedious.procedure_count', procCount);\n                    span.setAttribute('tedious.statement_count', statementCount);\n                    if (err) {\n                        span.setStatus({\n                            code: api.SpanStatusCode.ERROR,\n                            message: err.message,\n                        });\n                        // TODO(3290): set `error.type` attribute?\n                    }\n                    span.end();\n                });\n                request.on('done', incrementStatementCount);\n                request.on('doneInProc', incrementStatementCount);\n                request.on('doneProc', incrementProcCount);\n                request.once('error', endSpan);\n                this.on('end', endSpan);\n                if (typeof request.callback === 'function') {\n                    thisPlugin._wrap(request, 'callback', thisPlugin._patchCallbackQuery(endSpan));\n                }\n                else {\n                    thisPlugin._diag.error('Expected request.callback to be a function');\n                }\n                const runUserRequest = () => {\n                    return api.context.with(api.trace.setSpan(api.context.active(), span), originalMethod, this, ...arguments);\n                };\n                const cfg = thisPlugin.getConfig();\n                const shouldInject = cfg.enableTraceContextPropagation &&\n                    thisPlugin._shouldInjectFor(operation);\n                if (!shouldInject)\n                    return runUserRequest();\n                const traceparent = thisPlugin._buildTraceparent(span);\n                void thisPlugin\n                    ._injectContextInfo(this, tediousModule, traceparent)\n                    .finally(runUserRequest);\n            }\n            Object.defineProperty(patchedMethod, 'length', {\n                value: originalMethod.length,\n                writable: false,\n            });\n            return patchedMethod;\n        };\n    }\n    _patchCallbackQuery(endSpan) {\n        return (originalCallback) => {\n            return function (err, rowCount, rows) {\n                endSpan(err);\n                return originalCallback.apply(this, arguments);\n            };\n        };\n    }\n}\nexports.TediousInstrumentation = TediousInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TediousInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"TediousInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.TediousInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.56.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-generic-pool';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericPoolInstrumentation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst MODULE_NAME = 'generic-pool';\nclass GenericPoolInstrumentation extends instrumentation_1.InstrumentationBase {\n    // only used for v2 - v2.3)\n    _isDisabled = false;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=3.0.0 <4'], moduleExports => {\n                const Pool = moduleExports.Pool;\n                if ((0, instrumentation_1.isWrapped)(Pool.prototype.acquire)) {\n                    this._unwrap(Pool.prototype, 'acquire');\n                }\n                this._wrap(Pool.prototype, 'acquire', this._acquirePatcher.bind(this));\n                return moduleExports;\n            }, moduleExports => {\n                const Pool = moduleExports.Pool;\n                this._unwrap(Pool.prototype, 'acquire');\n                return moduleExports;\n            }),\n            new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=2.4.0 <3'], moduleExports => {\n                const Pool = moduleExports.Pool;\n                if ((0, instrumentation_1.isWrapped)(Pool.prototype.acquire)) {\n                    this._unwrap(Pool.prototype, 'acquire');\n                }\n                this._wrap(Pool.prototype, 'acquire', this._acquireWithCallbacksPatcher.bind(this));\n                return moduleExports;\n            }, moduleExports => {\n                const Pool = moduleExports.Pool;\n                this._unwrap(Pool.prototype, 'acquire');\n                return moduleExports;\n            }),\n            new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=2.0.0 <2.4'], moduleExports => {\n                this._isDisabled = false;\n                if ((0, instrumentation_1.isWrapped)(moduleExports.Pool)) {\n                    this._unwrap(moduleExports, 'Pool');\n                }\n                this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n                return moduleExports;\n            }, moduleExports => {\n                // since the object is created on the fly every time, we need to use\n                // a boolean switch here to disable the instrumentation\n                this._isDisabled = true;\n                return moduleExports;\n            }),\n        ];\n    }\n    _acquirePatcher(original) {\n        const instrumentation = this;\n        return function wrapped_acquire(...args) {\n            const parent = api.context.active();\n            const span = instrumentation.tracer.startSpan('generic-pool.acquire', {}, parent);\n            return api.context.with(api.trace.setSpan(parent, span), () => {\n                return original.call(this, ...args).then(value => {\n                    span.end();\n                    return value;\n                }, err => {\n                    span.recordException(err);\n                    span.end();\n                    throw err;\n                });\n            });\n        };\n    }\n    _poolWrapper(original) {\n        const instrumentation = this;\n        return function wrapped_pool() {\n            const pool = original.apply(this, arguments);\n            instrumentation._wrap(pool, 'acquire', instrumentation._acquireWithCallbacksPatcher.bind(instrumentation));\n            return pool;\n        };\n    }\n    _acquireWithCallbacksPatcher(original) {\n        const instrumentation = this;\n        return function wrapped_acquire(cb, priority) {\n            // only used for v2 - v2.3\n            if (instrumentation._isDisabled) {\n                return original.call(this, cb, priority);\n            }\n            const parent = api.context.active();\n            const span = instrumentation.tracer.startSpan('generic-pool.acquire', {}, parent);\n            return api.context.with(api.trace.setSpan(parent, span), () => {\n                original.call(this, (err, client) => {\n                    span.end();\n                    // Not checking whether cb is a function because\n                    // the original code doesn't do that either.\n                    if (cb) {\n                        return cb(err, client);\n                    }\n                }, priority);\n            });\n        };\n    }\n}\nexports.GenericPoolInstrumentation = GenericPoolInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericPoolInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"GenericPoolInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.GenericPoolInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_MESSAGING_SYSTEM = exports.ATTR_MESSAGING_OPERATION = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `messaging.operation.type` instead.\n *\n * @example publish\n * @example create\n * @example process\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `messaging.operation.type`.\n */\nexports.ATTR_MESSAGING_OPERATION = 'messaging.operation';\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_SYSTEM = 'messaging.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_MESSAGING_CONVERSATION_ID = exports.OLD_ATTR_MESSAGING_MESSAGE_ID = exports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = exports.ATTR_MESSAGING_URL = exports.ATTR_MESSAGING_PROTOCOL_VERSION = exports.ATTR_MESSAGING_PROTOCOL = exports.MESSAGING_OPERATION_VALUE_PROCESS = exports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = exports.ATTR_MESSAGING_DESTINATION_KIND = exports.ATTR_MESSAGING_DESTINATION = void 0;\n/*\n * This file contains constants for values that where replaced/removed from\n * Semantic Conventions long enough ago that they do not have `ATTR_*`\n * constants in the `@opentelemetry/semantic-conventions` package. Eventually\n * it is expected that this instrumention will be updated to emit telemetry\n * using modern Semantic Conventions, dropping the need for the constants in\n * this file.\n */\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_DESTINATION = 'messaging.destination';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.ATTR_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGING_OPERATION_VALUE_PROCESS = 'process';\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexports.ATTR_MESSAGING_PROTOCOL = 'messaging.protocol';\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexports.ATTR_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexports.ATTR_MESSAGING_URL = 'messaging.url';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic';\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n *\n * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`.\n */\nexports.OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id';\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\n//# sourceMappingURL=semconv-obsolete.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_CONFIG = exports.EndOperation = void 0;\nvar EndOperation;\n(function (EndOperation) {\n    EndOperation[\"AutoAck\"] = \"auto ack\";\n    EndOperation[\"Ack\"] = \"ack\";\n    EndOperation[\"AckAll\"] = \"ackAll\";\n    EndOperation[\"Reject\"] = \"reject\";\n    EndOperation[\"Nack\"] = \"nack\";\n    EndOperation[\"NackAll\"] = \"nackAll\";\n    EndOperation[\"ChannelClosed\"] = \"channel closed\";\n    EndOperation[\"ChannelError\"] = \"channel error\";\n    EndOperation[\"InstrumentationTimeout\"] = \"instrumentation timeout\";\n})(EndOperation = exports.EndOperation || (exports.EndOperation = {}));\nexports.DEFAULT_CONFIG = {\n    consumeTimeoutMs: 1000 * 60,\n    useLinksForConsume: false,\n};\n//# sourceMappingURL=types.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isConfirmChannelTracing = exports.unmarkConfirmChannelTracing = exports.markConfirmChannelTracing = exports.getConnectionAttributesFromUrl = exports.getConnectionAttributesFromServer = exports.normalizeExchange = exports.CONNECTION_ATTRIBUTES = exports.CHANNEL_CONSUME_TIMEOUT_TIMER = exports.CHANNEL_SPANS_NOT_ENDED = exports.MESSAGE_STORED_SPAN = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst semconv_obsolete_1 = require(\"../src/semconv-obsolete\");\nexports.MESSAGE_STORED_SPAN = Symbol('opentelemetry.amqplib.message.stored-span');\nexports.CHANNEL_SPANS_NOT_ENDED = Symbol('opentelemetry.amqplib.channel.spans-not-ended');\nexports.CHANNEL_CONSUME_TIMEOUT_TIMER = Symbol('opentelemetry.amqplib.channel.consumer-timeout-timer');\nexports.CONNECTION_ATTRIBUTES = Symbol('opentelemetry.amqplib.connection.attributes');\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY = (0, api_1.createContextKey)('opentelemetry.amqplib.channel.is-confirm-channel');\nconst normalizeExchange = (exchangeName) => exchangeName !== '' ? exchangeName : '';\nexports.normalizeExchange = normalizeExchange;\nconst censorPassword = (url) => {\n    return url.replace(/:[^:@/]*@/, ':***@');\n};\nconst getPort = (portFromUrl, resolvedProtocol) => {\n    // we are using the resolved protocol which is upper case\n    // this code mimic the behavior of the amqplib which is used to set connection params\n    return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671);\n};\nconst getProtocol = (protocolFromUrl) => {\n    const resolvedProtocol = protocolFromUrl || 'amqp';\n    // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp')\n    const noEndingColon = resolvedProtocol.endsWith(':')\n        ? resolvedProtocol.substring(0, resolvedProtocol.length - 1)\n        : resolvedProtocol;\n    // upper cases to match spec\n    return noEndingColon.toUpperCase();\n};\nconst getHostname = (hostnameFromUrl) => {\n    // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost.\n    // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener\n    return hostnameFromUrl || 'localhost';\n};\nconst extractConnectionAttributeOrLog = (url, attributeKey, attributeValue, nameForLog) => {\n    if (attributeValue) {\n        return { [attributeKey]: attributeValue };\n    }\n    else {\n        api_1.diag.error(`amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`, {\n            url,\n        });\n        return {};\n    }\n};\nconst getConnectionAttributesFromServer = (conn) => {\n    const product = conn.serverProperties.product?.toLowerCase?.();\n    if (product) {\n        return {\n            [semconv_1.ATTR_MESSAGING_SYSTEM]: product,\n        };\n    }\n    else {\n        return {};\n    }\n};\nexports.getConnectionAttributesFromServer = getConnectionAttributesFromServer;\nconst getConnectionAttributesFromUrl = (url, netSemconvStability) => {\n    const attributes = {\n        [semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n    };\n    url = url || 'amqp://localhost';\n    if (typeof url === 'object') {\n        const connectOptions = url;\n        const protocol = getProtocol(connectOptions?.protocol);\n        Object.assign(attributes, {\n            ...extractConnectionAttributeOrLog(url, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'),\n        });\n        const hostname = getHostname(connectOptions?.hostname);\n        if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n            Object.assign(attributes, {\n                ...extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'),\n            });\n        }\n        if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            Object.assign(attributes, {\n                ...extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'),\n            });\n        }\n        const port = getPort(connectOptions.port, protocol);\n        if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n            Object.assign(attributes, extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_PORT, port, 'port'));\n        }\n        if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            Object.assign(attributes, extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port'));\n        }\n    }\n    else {\n        const censoredUrl = censorPassword(url);\n        attributes[semconv_obsolete_1.ATTR_MESSAGING_URL] = censoredUrl;\n        try {\n            const urlParts = new URL(censoredUrl);\n            const protocol = getProtocol(urlParts.protocol);\n            Object.assign(attributes, {\n                ...extractConnectionAttributeOrLog(censoredUrl, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'),\n            });\n            const hostname = getHostname(urlParts.hostname);\n            if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                Object.assign(attributes, {\n                    ...extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'),\n                });\n            }\n            if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                Object.assign(attributes, {\n                    ...extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'),\n                });\n            }\n            const port = getPort(urlParts.port ? parseInt(urlParts.port) : undefined, protocol);\n            if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_PORT, port, 'port'));\n            }\n            if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port'));\n            }\n        }\n        catch (err) {\n            api_1.diag.error('amqplib instrumentation: error while extracting connection details from connection url', {\n                censoredUrl,\n                err,\n            });\n        }\n    }\n    return attributes;\n};\nexports.getConnectionAttributesFromUrl = getConnectionAttributesFromUrl;\nconst markConfirmChannelTracing = (context) => {\n    return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\nexports.markConfirmChannelTracing = markConfirmChannelTracing;\nconst unmarkConfirmChannelTracing = (context) => {\n    return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\nexports.unmarkConfirmChannelTracing = unmarkConfirmChannelTracing;\nconst isConfirmChannelTracing = (context) => {\n    return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\nexports.isConfirmChannelTracing = isConfirmChannelTracing;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.60.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AmqplibInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semconv_1 = require(\"./semconv\");\nconst semconv_obsolete_1 = require(\"../src/semconv-obsolete\");\nconst types_1 = require(\"./types\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst supportedVersions = ['>=0.5.5 <1'];\nclass AmqplibInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...types_1.DEFAULT_CONFIG, ...config });\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig({ ...types_1.DEFAULT_CONFIG, ...config });\n    }\n    init() {\n        const channelModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/channel_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this));\n        const callbackModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/callback_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this));\n        const connectModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/connect.js', supportedVersions, this.patchConnect.bind(this), this.unpatchConnect.bind(this));\n        const module = new instrumentation_1.InstrumentationNodeModuleDefinition('amqplib', supportedVersions, undefined, undefined, [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]);\n        return module;\n    }\n    patchConnect(moduleExports) {\n        moduleExports = this.unpatchConnect(moduleExports);\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n            this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this));\n        }\n        return moduleExports;\n    }\n    unpatchConnect(moduleExports) {\n        if ((0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n            this._unwrap(moduleExports, 'connect');\n        }\n        return moduleExports;\n    }\n    patchChannelModel(moduleExports, moduleVersion) {\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) {\n            this._wrap(moduleExports.Channel.prototype, 'publish', this.getPublishPatch.bind(this, moduleVersion));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) {\n            this._wrap(moduleExports.Channel.prototype, 'consume', this.getConsumePatch.bind(this, moduleVersion));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) {\n            this._wrap(moduleExports.Channel.prototype, 'ack', this.getAckPatch.bind(this, false, types_1.EndOperation.Ack));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) {\n            this._wrap(moduleExports.Channel.prototype, 'nack', this.getAckPatch.bind(this, true, types_1.EndOperation.Nack));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) {\n            this._wrap(moduleExports.Channel.prototype, 'reject', this.getAckPatch.bind(this, true, types_1.EndOperation.Reject));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) {\n            this._wrap(moduleExports.Channel.prototype, 'ackAll', this.getAckAllPatch.bind(this, false, types_1.EndOperation.AckAll));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) {\n            this._wrap(moduleExports.Channel.prototype, 'nackAll', this.getAckAllPatch.bind(this, true, types_1.EndOperation.NackAll));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) {\n            this._wrap(moduleExports.Channel.prototype, 'emit', this.getChannelEmitPatch.bind(this));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) {\n            this._wrap(moduleExports.ConfirmChannel.prototype, 'publish', this.getConfirmedPublishPatch.bind(this, moduleVersion));\n        }\n        return moduleExports;\n    }\n    unpatchChannelModel(moduleExports) {\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) {\n            this._unwrap(moduleExports.Channel.prototype, 'publish');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) {\n            this._unwrap(moduleExports.Channel.prototype, 'consume');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) {\n            this._unwrap(moduleExports.Channel.prototype, 'ack');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) {\n            this._unwrap(moduleExports.Channel.prototype, 'nack');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) {\n            this._unwrap(moduleExports.Channel.prototype, 'reject');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) {\n            this._unwrap(moduleExports.Channel.prototype, 'ackAll');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) {\n            this._unwrap(moduleExports.Channel.prototype, 'nackAll');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) {\n            this._unwrap(moduleExports.Channel.prototype, 'emit');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) {\n            this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish');\n        }\n        return moduleExports;\n    }\n    getConnectPatch(original) {\n        const self = this;\n        return function patchedConnect(url, socketOptions, openCallback) {\n            return original.call(this, url, socketOptions, function (err, conn) {\n                if (err == null) {\n                    const urlAttributes = (0, utils_1.getConnectionAttributesFromUrl)(url, self._netSemconvStability);\n                    const serverAttributes = (0, utils_1.getConnectionAttributesFromServer)(conn);\n                    conn[utils_1.CONNECTION_ATTRIBUTES] = {\n                        ...urlAttributes,\n                        ...serverAttributes,\n                    };\n                }\n                openCallback.apply(this, arguments);\n            });\n        };\n    }\n    getChannelEmitPatch(original) {\n        const self = this;\n        return function emit(eventName) {\n            if (eventName === 'close') {\n                self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelClosed, undefined);\n                const activeTimer = this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER];\n                if (activeTimer) {\n                    clearInterval(activeTimer);\n                }\n                this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined;\n            }\n            else if (eventName === 'error') {\n                self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelError, undefined);\n            }\n            return original.apply(this, arguments);\n        };\n    }\n    getAckAllPatch(isRejected, endOperation, original) {\n        const self = this;\n        return function ackAll(requeueOrEmpty) {\n            self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty);\n            return original.apply(this, arguments);\n        };\n    }\n    getAckPatch(isRejected, endOperation, original) {\n        const self = this;\n        return function ack(message, allUpToOrRequeue, requeue) {\n            const channel = this;\n            // we use this patch in reject function as well, but it has different signature\n            const requeueResolved = endOperation === types_1.EndOperation.Reject ? allUpToOrRequeue : requeue;\n            const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n            const msgIndex = spansNotEnded.findIndex(msgDetails => msgDetails.msg === message);\n            if (msgIndex < 0) {\n                // should not happen in happy flow\n                // but possible if user is calling the api function ack twice with same message\n                self.endConsumerSpan(message, isRejected, endOperation, requeueResolved);\n            }\n            else if (endOperation !== types_1.EndOperation.Reject && allUpToOrRequeue) {\n                for (let i = 0; i <= msgIndex; i++) {\n                    self.endConsumerSpan(spansNotEnded[i].msg, isRejected, endOperation, requeueResolved);\n                }\n                spansNotEnded.splice(0, msgIndex + 1);\n            }\n            else {\n                self.endConsumerSpan(message, isRejected, endOperation, requeueResolved);\n                spansNotEnded.splice(msgIndex, 1);\n            }\n            return original.apply(this, arguments);\n        };\n    }\n    getConsumePatch(moduleVersion, original) {\n        const self = this;\n        return function consume(queue, onMessage, options) {\n            const channel = this;\n            if (!Object.prototype.hasOwnProperty.call(channel, utils_1.CHANNEL_SPANS_NOT_ENDED)) {\n                const { consumeTimeoutMs } = self.getConfig();\n                if (consumeTimeoutMs) {\n                    const timer = setInterval(() => {\n                        self.checkConsumeTimeoutOnChannel(channel);\n                    }, consumeTimeoutMs);\n                    timer.unref();\n                    channel[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = timer;\n                }\n                channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = [];\n            }\n            const patchedOnMessage = function (msg) {\n                // msg is expected to be null for signaling consumer cancel notification\n                // https://www.rabbitmq.com/consumer-cancel.html\n                // in this case, we do not start a span, as this is not a real message.\n                if (!msg) {\n                    return onMessage.call(this, msg);\n                }\n                const headers = msg.properties.headers ?? {};\n                let parentContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, headers);\n                const exchange = msg.fields?.exchange;\n                let links;\n                if (self._config.useLinksForConsume) {\n                    const parentSpanContext = parentContext\n                        ? api_1.trace.getSpan(parentContext)?.spanContext()\n                        : undefined;\n                    parentContext = undefined;\n                    if (parentSpanContext) {\n                        links = [\n                            {\n                                context: parentSpanContext,\n                            },\n                        ];\n                    }\n                }\n                const span = self.tracer.startSpan(`${queue} process`, {\n                    kind: api_1.SpanKind.CONSUMER,\n                    attributes: {\n                        ...channel?.connection?.[utils_1.CONNECTION_ATTRIBUTES],\n                        [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange,\n                        [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n                        [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey,\n                        [semconv_1.ATTR_MESSAGING_OPERATION]: semconv_obsolete_1.MESSAGING_OPERATION_VALUE_PROCESS,\n                        [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId,\n                        [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId,\n                    },\n                    links,\n                }, parentContext);\n                const { consumeHook } = self.getConfig();\n                if (consumeHook) {\n                    (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeHook(span, { moduleVersion, msg }), e => {\n                        if (e) {\n                            api_1.diag.error('amqplib instrumentation: consumerHook error', e);\n                        }\n                    }, true);\n                }\n                if (!options?.noAck) {\n                    // store the message on the channel so we can close the span on ackAll etc\n                    channel[utils_1.CHANNEL_SPANS_NOT_ENDED].push({\n                        msg,\n                        timeOfConsume: (0, core_1.hrTime)(),\n                    });\n                    // store the span on the message, so we can end it when user call 'ack' on it\n                    msg[utils_1.MESSAGE_STORED_SPAN] = span;\n                }\n                const setContext = parentContext\n                    ? parentContext\n                    : api_1.ROOT_CONTEXT;\n                api_1.context.with(api_1.trace.setSpan(setContext, span), () => {\n                    onMessage.call(this, msg);\n                });\n                if (options?.noAck) {\n                    self.callConsumeEndHook(span, msg, false, types_1.EndOperation.AutoAck);\n                    span.end();\n                }\n            };\n            arguments[1] = patchedOnMessage;\n            return original.apply(this, arguments);\n        };\n    }\n    getConfirmedPublishPatch(moduleVersion, original) {\n        const self = this;\n        return function confirmedPublish(exchange, routingKey, content, options, callback) {\n            const channel = this;\n            const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options);\n            const { publishHook } = self.getConfig();\n            if (publishHook) {\n                (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, {\n                    moduleVersion,\n                    exchange,\n                    routingKey,\n                    content,\n                    options: modifiedOptions,\n                    isConfirmChannel: true,\n                }), e => {\n                    if (e) {\n                        api_1.diag.error('amqplib instrumentation: publishHook error', e);\n                    }\n                }, true);\n            }\n            const patchedOnConfirm = function (err, ok) {\n                try {\n                    callback?.call(this, err, ok);\n                }\n                finally {\n                    const { publishConfirmHook } = self.getConfig();\n                    if (publishConfirmHook) {\n                        (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishConfirmHook(span, {\n                            moduleVersion,\n                            exchange,\n                            routingKey,\n                            content,\n                            options,\n                            isConfirmChannel: true,\n                            confirmError: err,\n                        }), e => {\n                            if (e) {\n                                api_1.diag.error('amqplib instrumentation: publishConfirmHook error', e);\n                            }\n                        }, true);\n                    }\n                    if (err) {\n                        span.setStatus({\n                            code: api_1.SpanStatusCode.ERROR,\n                            message: \"message confirmation has been nack'ed\",\n                        });\n                    }\n                    span.end();\n                }\n            };\n            // calling confirm channel publish function is storing the message in queue and registering the callback for broker confirm.\n            // span ends in the patched callback.\n            const markedContext = (0, utils_1.markConfirmChannelTracing)(api_1.context.active());\n            const argumentsCopy = [...arguments];\n            argumentsCopy[3] = modifiedOptions;\n            argumentsCopy[4] = api_1.context.bind((0, utils_1.unmarkConfirmChannelTracing)(api_1.trace.setSpan(markedContext, span)), patchedOnConfirm);\n            return api_1.context.with(markedContext, original.bind(this, ...argumentsCopy));\n        };\n    }\n    getPublishPatch(moduleVersion, original) {\n        const self = this;\n        return function publish(exchange, routingKey, content, options) {\n            if ((0, utils_1.isConfirmChannelTracing)(api_1.context.active())) {\n                // work already done\n                return original.apply(this, arguments);\n            }\n            else {\n                const channel = this;\n                const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options);\n                const { publishHook } = self.getConfig();\n                if (publishHook) {\n                    (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, {\n                        moduleVersion,\n                        exchange,\n                        routingKey,\n                        content,\n                        options: modifiedOptions,\n                        isConfirmChannel: false,\n                    }), e => {\n                        if (e) {\n                            api_1.diag.error('amqplib instrumentation: publishHook error', e);\n                        }\n                    }, true);\n                }\n                // calling normal channel publish function is only storing the message in queue.\n                // it does not send it and waits for an ack, so the span duration is expected to be very short.\n                const argumentsCopy = [...arguments];\n                argumentsCopy[3] = modifiedOptions;\n                const originalRes = original.apply(this, argumentsCopy);\n                span.end();\n                return originalRes;\n            }\n        };\n    }\n    createPublishSpan(self, exchange, routingKey, channel, options) {\n        const normalizedExchange = (0, utils_1.normalizeExchange)(exchange);\n        const span = self.tracer.startSpan(`publish ${normalizedExchange}`, {\n            kind: api_1.SpanKind.PRODUCER,\n            attributes: {\n                ...channel.connection[utils_1.CONNECTION_ATTRIBUTES],\n                [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange,\n                [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n                [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey,\n                [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId,\n                [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId,\n            },\n        });\n        const modifiedOptions = options ?? {};\n        modifiedOptions.headers = modifiedOptions.headers ?? {};\n        api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), modifiedOptions.headers);\n        return { span, modifiedOptions };\n    }\n    endConsumerSpan(message, isRejected, operation, requeue) {\n        const storedSpan = message[utils_1.MESSAGE_STORED_SPAN];\n        if (!storedSpan)\n            return;\n        if (isRejected !== false) {\n            storedSpan.setStatus({\n                code: api_1.SpanStatusCode.ERROR,\n                message: operation !== types_1.EndOperation.ChannelClosed &&\n                    operation !== types_1.EndOperation.ChannelError\n                    ? `${operation} called on message${requeue === true\n                        ? ' with requeue'\n                        : requeue === false\n                            ? ' without requeue'\n                            : ''}`\n                    : operation,\n            });\n        }\n        this.callConsumeEndHook(storedSpan, message, isRejected, operation);\n        storedSpan.end();\n        message[utils_1.MESSAGE_STORED_SPAN] = undefined;\n    }\n    endAllSpansOnChannel(channel, isRejected, operation, requeue) {\n        const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n        spansNotEnded.forEach(msgDetails => {\n            this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue);\n        });\n        channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = [];\n    }\n    callConsumeEndHook(span, msg, rejected, endOperation) {\n        const { consumeEndHook } = this.getConfig();\n        if (!consumeEndHook)\n            return;\n        (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeEndHook(span, { msg, rejected, endOperation }), e => {\n            if (e) {\n                api_1.diag.error('amqplib instrumentation: consumerEndHook error', e);\n            }\n        }, true);\n    }\n    checkConsumeTimeoutOnChannel(channel) {\n        const currentTime = (0, core_1.hrTime)();\n        const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n        let i;\n        const { consumeTimeoutMs } = this.getConfig();\n        for (i = 0; i < spansNotEnded.length; i++) {\n            const currMessage = spansNotEnded[i];\n            const timeFromConsume = (0, core_1.hrTimeDuration)(currMessage.timeOfConsume, currentTime);\n            if ((0, core_1.hrTimeToMilliseconds)(timeFromConsume) < consumeTimeoutMs) {\n                break;\n            }\n            this.endConsumerSpan(currMessage.msg, null, types_1.EndOperation.InstrumentationTimeout, true);\n        }\n        spansNotEnded.splice(0, i);\n    }\n}\nexports.AmqplibInstrumentation = AmqplibInstrumentation;\n//# sourceMappingURL=amqplib.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EndOperation = exports.DEFAULT_CONFIG = exports.AmqplibInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar amqplib_1 = require(\"./amqplib\");\nObject.defineProperty(exports, \"AmqplibInstrumentation\", { enumerable: true, get: function () { return amqplib_1.AmqplibInstrumentation; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"DEFAULT_CONFIG\", { enumerable: true, get: function () { return types_1.DEFAULT_CONFIG; } });\nObject.defineProperty(exports, \"EndOperation\", { enumerable: true, get: function () { return types_1.EndOperation; } });\n//# sourceMappingURL=index.js.map",
     "/**\n  * This file contains the Bottleneck library (MIT), compiled to ES2017, and without Clustering support.\n  * https://github.com/SGrondin/bottleneck\n  */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.Bottleneck = factory());\n}(this, (function () { 'use strict';\n\n\tvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction getCjsExportFromNamespace (n) {\n\t\treturn n && n['default'] || n;\n\t}\n\n\tvar load = function(received, defaults, onto = {}) {\n\t  var k, ref, v;\n\t  for (k in defaults) {\n\t    v = defaults[k];\n\t    onto[k] = (ref = received[k]) != null ? ref : v;\n\t  }\n\t  return onto;\n\t};\n\n\tvar overwrite = function(received, defaults, onto = {}) {\n\t  var k, v;\n\t  for (k in received) {\n\t    v = received[k];\n\t    if (defaults[k] !== void 0) {\n\t      onto[k] = v;\n\t    }\n\t  }\n\t  return onto;\n\t};\n\n\tvar parser = {\n\t\tload: load,\n\t\toverwrite: overwrite\n\t};\n\n\tvar DLList;\n\n\tDLList = class DLList {\n\t  constructor(incr, decr) {\n\t    this.incr = incr;\n\t    this.decr = decr;\n\t    this._first = null;\n\t    this._last = null;\n\t    this.length = 0;\n\t  }\n\n\t  push(value) {\n\t    var node;\n\t    this.length++;\n\t    if (typeof this.incr === \"function\") {\n\t      this.incr();\n\t    }\n\t    node = {\n\t      value,\n\t      prev: this._last,\n\t      next: null\n\t    };\n\t    if (this._last != null) {\n\t      this._last.next = node;\n\t      this._last = node;\n\t    } else {\n\t      this._first = this._last = node;\n\t    }\n\t    return void 0;\n\t  }\n\n\t  shift() {\n\t    var value;\n\t    if (this._first == null) {\n\t      return;\n\t    } else {\n\t      this.length--;\n\t      if (typeof this.decr === \"function\") {\n\t        this.decr();\n\t      }\n\t    }\n\t    value = this._first.value;\n\t    if ((this._first = this._first.next) != null) {\n\t      this._first.prev = null;\n\t    } else {\n\t      this._last = null;\n\t    }\n\t    return value;\n\t  }\n\n\t  first() {\n\t    if (this._first != null) {\n\t      return this._first.value;\n\t    }\n\t  }\n\n\t  getArray() {\n\t    var node, ref, results;\n\t    node = this._first;\n\t    results = [];\n\t    while (node != null) {\n\t      results.push((ref = node, node = node.next, ref.value));\n\t    }\n\t    return results;\n\t  }\n\n\t  forEachShift(cb) {\n\t    var node;\n\t    node = this.shift();\n\t    while (node != null) {\n\t      (cb(node), node = this.shift());\n\t    }\n\t    return void 0;\n\t  }\n\n\t  debug() {\n\t    var node, ref, ref1, ref2, results;\n\t    node = this._first;\n\t    results = [];\n\t    while (node != null) {\n\t      results.push((ref = node, node = node.next, {\n\t        value: ref.value,\n\t        prev: (ref1 = ref.prev) != null ? ref1.value : void 0,\n\t        next: (ref2 = ref.next) != null ? ref2.value : void 0\n\t      }));\n\t    }\n\t    return results;\n\t  }\n\n\t};\n\n\tvar DLList_1 = DLList;\n\n\tvar Events;\n\n\tEvents = class Events {\n\t  constructor(instance) {\n\t    this.instance = instance;\n\t    this._events = {};\n\t    if ((this.instance.on != null) || (this.instance.once != null) || (this.instance.removeAllListeners != null)) {\n\t      throw new Error(\"An Emitter already exists for this object\");\n\t    }\n\t    this.instance.on = (name, cb) => {\n\t      return this._addListener(name, \"many\", cb);\n\t    };\n\t    this.instance.once = (name, cb) => {\n\t      return this._addListener(name, \"once\", cb);\n\t    };\n\t    this.instance.removeAllListeners = (name = null) => {\n\t      if (name != null) {\n\t        return delete this._events[name];\n\t      } else {\n\t        return this._events = {};\n\t      }\n\t    };\n\t  }\n\n\t  _addListener(name, status, cb) {\n\t    var base;\n\t    if ((base = this._events)[name] == null) {\n\t      base[name] = [];\n\t    }\n\t    this._events[name].push({cb, status});\n\t    return this.instance;\n\t  }\n\n\t  listenerCount(name) {\n\t    if (this._events[name] != null) {\n\t      return this._events[name].length;\n\t    } else {\n\t      return 0;\n\t    }\n\t  }\n\n\t  async trigger(name, ...args) {\n\t    var e, promises;\n\t    try {\n\t      if (name !== \"debug\") {\n\t        this.trigger(\"debug\", `Event triggered: ${name}`, args);\n\t      }\n\t      if (this._events[name] == null) {\n\t        return;\n\t      }\n\t      this._events[name] = this._events[name].filter(function(listener) {\n\t        return listener.status !== \"none\";\n\t      });\n\t      promises = this._events[name].map(async(listener) => {\n\t        var e, returned;\n\t        if (listener.status === \"none\") {\n\t          return;\n\t        }\n\t        if (listener.status === \"once\") {\n\t          listener.status = \"none\";\n\t        }\n\t        try {\n\t          returned = typeof listener.cb === \"function\" ? listener.cb(...args) : void 0;\n\t          if (typeof (returned != null ? returned.then : void 0) === \"function\") {\n\t            return (await returned);\n\t          } else {\n\t            return returned;\n\t          }\n\t        } catch (error) {\n\t          e = error;\n\t          {\n\t            this.trigger(\"error\", e);\n\t          }\n\t          return null;\n\t        }\n\t      });\n\t      return ((await Promise.all(promises))).find(function(x) {\n\t        return x != null;\n\t      });\n\t    } catch (error) {\n\t      e = error;\n\t      {\n\t        this.trigger(\"error\", e);\n\t      }\n\t      return null;\n\t    }\n\t  }\n\n\t};\n\n\tvar Events_1 = Events;\n\n\tvar DLList$1, Events$1, Queues;\n\n\tDLList$1 = DLList_1;\n\n\tEvents$1 = Events_1;\n\n\tQueues = class Queues {\n\t  constructor(num_priorities) {\n\t    var i;\n\t    this.Events = new Events$1(this);\n\t    this._length = 0;\n\t    this._lists = (function() {\n\t      var j, ref, results;\n\t      results = [];\n\t      for (i = j = 1, ref = num_priorities; (1 <= ref ? j <= ref : j >= ref); i = 1 <= ref ? ++j : --j) {\n\t        results.push(new DLList$1((() => {\n\t          return this.incr();\n\t        }), (() => {\n\t          return this.decr();\n\t        })));\n\t      }\n\t      return results;\n\t    }).call(this);\n\t  }\n\n\t  incr() {\n\t    if (this._length++ === 0) {\n\t      return this.Events.trigger(\"leftzero\");\n\t    }\n\t  }\n\n\t  decr() {\n\t    if (--this._length === 0) {\n\t      return this.Events.trigger(\"zero\");\n\t    }\n\t  }\n\n\t  push(job) {\n\t    return this._lists[job.options.priority].push(job);\n\t  }\n\n\t  queued(priority) {\n\t    if (priority != null) {\n\t      return this._lists[priority].length;\n\t    } else {\n\t      return this._length;\n\t    }\n\t  }\n\n\t  shiftAll(fn) {\n\t    return this._lists.forEach(function(list) {\n\t      return list.forEachShift(fn);\n\t    });\n\t  }\n\n\t  getFirst(arr = this._lists) {\n\t    var j, len, list;\n\t    for (j = 0, len = arr.length; j < len; j++) {\n\t      list = arr[j];\n\t      if (list.length > 0) {\n\t        return list;\n\t      }\n\t    }\n\t    return [];\n\t  }\n\n\t  shiftLastFrom(priority) {\n\t    return this.getFirst(this._lists.slice(priority).reverse()).shift();\n\t  }\n\n\t};\n\n\tvar Queues_1 = Queues;\n\n\tvar BottleneckError;\n\n\tBottleneckError = class BottleneckError extends Error {};\n\n\tvar BottleneckError_1 = BottleneckError;\n\n\tvar BottleneckError$1, DEFAULT_PRIORITY, Job, NUM_PRIORITIES, parser$1;\n\n\tNUM_PRIORITIES = 10;\n\n\tDEFAULT_PRIORITY = 5;\n\n\tparser$1 = parser;\n\n\tBottleneckError$1 = BottleneckError_1;\n\n\tJob = class Job {\n\t  constructor(task, args, options, jobDefaults, rejectOnDrop, Events, _states, Promise) {\n\t    this.task = task;\n\t    this.args = args;\n\t    this.rejectOnDrop = rejectOnDrop;\n\t    this.Events = Events;\n\t    this._states = _states;\n\t    this.Promise = Promise;\n\t    this.options = parser$1.load(options, jobDefaults);\n\t    this.options.priority = this._sanitizePriority(this.options.priority);\n\t    if (this.options.id === jobDefaults.id) {\n\t      this.options.id = `${this.options.id}-${this._randomIndex()}`;\n\t    }\n\t    this.promise = new this.Promise((_resolve, _reject) => {\n\t      this._resolve = _resolve;\n\t      this._reject = _reject;\n\t    });\n\t    this.retryCount = 0;\n\t  }\n\n\t  _sanitizePriority(priority) {\n\t    var sProperty;\n\t    sProperty = ~~priority !== priority ? DEFAULT_PRIORITY : priority;\n\t    if (sProperty < 0) {\n\t      return 0;\n\t    } else if (sProperty > NUM_PRIORITIES - 1) {\n\t      return NUM_PRIORITIES - 1;\n\t    } else {\n\t      return sProperty;\n\t    }\n\t  }\n\n\t  _randomIndex() {\n\t    return Math.random().toString(36).slice(2);\n\t  }\n\n\t  doDrop({error, message = \"This job has been dropped by Bottleneck\"} = {}) {\n\t    if (this._states.remove(this.options.id)) {\n\t      if (this.rejectOnDrop) {\n\t        this._reject(error != null ? error : new BottleneckError$1(message));\n\t      }\n\t      this.Events.trigger(\"dropped\", {args: this.args, options: this.options, task: this.task, promise: this.promise});\n\t      return true;\n\t    } else {\n\t      return false;\n\t    }\n\t  }\n\n\t  _assertStatus(expected) {\n\t    var status;\n\t    status = this._states.jobStatus(this.options.id);\n\t    if (!(status === expected || (expected === \"DONE\" && status === null))) {\n\t      throw new BottleneckError$1(`Invalid job status ${status}, expected ${expected}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`);\n\t    }\n\t  }\n\n\t  doReceive() {\n\t    this._states.start(this.options.id);\n\t    return this.Events.trigger(\"received\", {args: this.args, options: this.options});\n\t  }\n\n\t  doQueue(reachedHWM, blocked) {\n\t    this._assertStatus(\"RECEIVED\");\n\t    this._states.next(this.options.id);\n\t    return this.Events.trigger(\"queued\", {args: this.args, options: this.options, reachedHWM, blocked});\n\t  }\n\n\t  doRun() {\n\t    if (this.retryCount === 0) {\n\t      this._assertStatus(\"QUEUED\");\n\t      this._states.next(this.options.id);\n\t    } else {\n\t      this._assertStatus(\"EXECUTING\");\n\t    }\n\t    return this.Events.trigger(\"scheduled\", {args: this.args, options: this.options});\n\t  }\n\n\t  async doExecute(chained, clearGlobalState, run, free) {\n\t    var error, eventInfo, passed;\n\t    if (this.retryCount === 0) {\n\t      this._assertStatus(\"RUNNING\");\n\t      this._states.next(this.options.id);\n\t    } else {\n\t      this._assertStatus(\"EXECUTING\");\n\t    }\n\t    eventInfo = {args: this.args, options: this.options, retryCount: this.retryCount};\n\t    this.Events.trigger(\"executing\", eventInfo);\n\t    try {\n\t      passed = (await (chained != null ? chained.schedule(this.options, this.task, ...this.args) : this.task(...this.args)));\n\t      if (clearGlobalState()) {\n\t        this.doDone(eventInfo);\n\t        await free(this.options, eventInfo);\n\t        this._assertStatus(\"DONE\");\n\t        return this._resolve(passed);\n\t      }\n\t    } catch (error1) {\n\t      error = error1;\n\t      return this._onFailure(error, eventInfo, clearGlobalState, run, free);\n\t    }\n\t  }\n\n\t  doExpire(clearGlobalState, run, free) {\n\t    var error, eventInfo;\n\t    if (this._states.jobStatus(this.options.id === \"RUNNING\")) {\n\t      this._states.next(this.options.id);\n\t    }\n\t    this._assertStatus(\"EXECUTING\");\n\t    eventInfo = {args: this.args, options: this.options, retryCount: this.retryCount};\n\t    error = new BottleneckError$1(`This job timed out after ${this.options.expiration} ms.`);\n\t    return this._onFailure(error, eventInfo, clearGlobalState, run, free);\n\t  }\n\n\t  async _onFailure(error, eventInfo, clearGlobalState, run, free) {\n\t    var retry, retryAfter;\n\t    if (clearGlobalState()) {\n\t      retry = (await this.Events.trigger(\"failed\", error, eventInfo));\n\t      if (retry != null) {\n\t        retryAfter = ~~retry;\n\t        this.Events.trigger(\"retry\", `Retrying ${this.options.id} after ${retryAfter} ms`, eventInfo);\n\t        this.retryCount++;\n\t        return run(retryAfter);\n\t      } else {\n\t        this.doDone(eventInfo);\n\t        await free(this.options, eventInfo);\n\t        this._assertStatus(\"DONE\");\n\t        return this._reject(error);\n\t      }\n\t    }\n\t  }\n\n\t  doDone(eventInfo) {\n\t    this._assertStatus(\"EXECUTING\");\n\t    this._states.next(this.options.id);\n\t    return this.Events.trigger(\"done\", eventInfo);\n\t  }\n\n\t};\n\n\tvar Job_1 = Job;\n\n\tvar BottleneckError$2, LocalDatastore, parser$2;\n\n\tparser$2 = parser;\n\n\tBottleneckError$2 = BottleneckError_1;\n\n\tLocalDatastore = class LocalDatastore {\n\t  constructor(instance, storeOptions, storeInstanceOptions) {\n\t    this.instance = instance;\n\t    this.storeOptions = storeOptions;\n\t    this.clientId = this.instance._randomIndex();\n\t    parser$2.load(storeInstanceOptions, storeInstanceOptions, this);\n\t    this._nextRequest = this._lastReservoirRefresh = this._lastReservoirIncrease = Date.now();\n\t    this._running = 0;\n\t    this._done = 0;\n\t    this._unblockTime = 0;\n\t    this.ready = this.Promise.resolve();\n\t    this.clients = {};\n\t    this._startHeartbeat();\n\t  }\n\n\t  _startHeartbeat() {\n\t    var base;\n\t    if ((this.heartbeat == null) && (((this.storeOptions.reservoirRefreshInterval != null) && (this.storeOptions.reservoirRefreshAmount != null)) || ((this.storeOptions.reservoirIncreaseInterval != null) && (this.storeOptions.reservoirIncreaseAmount != null)))) {\n\t      return typeof (base = (this.heartbeat = setInterval(() => {\n\t        var amount, incr, maximum, now, reservoir;\n\t        now = Date.now();\n\t        if ((this.storeOptions.reservoirRefreshInterval != null) && now >= this._lastReservoirRefresh + this.storeOptions.reservoirRefreshInterval) {\n\t          this._lastReservoirRefresh = now;\n\t          this.storeOptions.reservoir = this.storeOptions.reservoirRefreshAmount;\n\t          this.instance._drainAll(this.computeCapacity());\n\t        }\n\t        if ((this.storeOptions.reservoirIncreaseInterval != null) && now >= this._lastReservoirIncrease + this.storeOptions.reservoirIncreaseInterval) {\n\t          ({\n\t            reservoirIncreaseAmount: amount,\n\t            reservoirIncreaseMaximum: maximum,\n\t            reservoir\n\t          } = this.storeOptions);\n\t          this._lastReservoirIncrease = now;\n\t          incr = maximum != null ? Math.min(amount, maximum - reservoir) : amount;\n\t          if (incr > 0) {\n\t            this.storeOptions.reservoir += incr;\n\t            return this.instance._drainAll(this.computeCapacity());\n\t          }\n\t        }\n\t      }, this.heartbeatInterval))).unref === \"function\" ? base.unref() : void 0;\n\t    } else {\n\t      return clearInterval(this.heartbeat);\n\t    }\n\t  }\n\n\t  async __publish__(message) {\n\t    await this.yieldLoop();\n\t    return this.instance.Events.trigger(\"message\", message.toString());\n\t  }\n\n\t  async __disconnect__(flush) {\n\t    await this.yieldLoop();\n\t    clearInterval(this.heartbeat);\n\t    return this.Promise.resolve();\n\t  }\n\n\t  yieldLoop(t = 0) {\n\t    return new this.Promise(function(resolve, reject) {\n\t      return setTimeout(resolve, t);\n\t    });\n\t  }\n\n\t  computePenalty() {\n\t    var ref;\n\t    return (ref = this.storeOptions.penalty) != null ? ref : (15 * this.storeOptions.minTime) || 5000;\n\t  }\n\n\t  async __updateSettings__(options) {\n\t    await this.yieldLoop();\n\t    parser$2.overwrite(options, options, this.storeOptions);\n\t    this._startHeartbeat();\n\t    this.instance._drainAll(this.computeCapacity());\n\t    return true;\n\t  }\n\n\t  async __running__() {\n\t    await this.yieldLoop();\n\t    return this._running;\n\t  }\n\n\t  async __queued__() {\n\t    await this.yieldLoop();\n\t    return this.instance.queued();\n\t  }\n\n\t  async __done__() {\n\t    await this.yieldLoop();\n\t    return this._done;\n\t  }\n\n\t  async __groupCheck__(time) {\n\t    await this.yieldLoop();\n\t    return (this._nextRequest + this.timeout) < time;\n\t  }\n\n\t  computeCapacity() {\n\t    var maxConcurrent, reservoir;\n\t    ({maxConcurrent, reservoir} = this.storeOptions);\n\t    if ((maxConcurrent != null) && (reservoir != null)) {\n\t      return Math.min(maxConcurrent - this._running, reservoir);\n\t    } else if (maxConcurrent != null) {\n\t      return maxConcurrent - this._running;\n\t    } else if (reservoir != null) {\n\t      return reservoir;\n\t    } else {\n\t      return null;\n\t    }\n\t  }\n\n\t  conditionsCheck(weight) {\n\t    var capacity;\n\t    capacity = this.computeCapacity();\n\t    return (capacity == null) || weight <= capacity;\n\t  }\n\n\t  async __incrementReservoir__(incr) {\n\t    var reservoir;\n\t    await this.yieldLoop();\n\t    reservoir = this.storeOptions.reservoir += incr;\n\t    this.instance._drainAll(this.computeCapacity());\n\t    return reservoir;\n\t  }\n\n\t  async __currentReservoir__() {\n\t    await this.yieldLoop();\n\t    return this.storeOptions.reservoir;\n\t  }\n\n\t  isBlocked(now) {\n\t    return this._unblockTime >= now;\n\t  }\n\n\t  check(weight, now) {\n\t    return this.conditionsCheck(weight) && (this._nextRequest - now) <= 0;\n\t  }\n\n\t  async __check__(weight) {\n\t    var now;\n\t    await this.yieldLoop();\n\t    now = Date.now();\n\t    return this.check(weight, now);\n\t  }\n\n\t  async __register__(index, weight, expiration) {\n\t    var now, wait;\n\t    await this.yieldLoop();\n\t    now = Date.now();\n\t    if (this.conditionsCheck(weight)) {\n\t      this._running += weight;\n\t      if (this.storeOptions.reservoir != null) {\n\t        this.storeOptions.reservoir -= weight;\n\t      }\n\t      wait = Math.max(this._nextRequest - now, 0);\n\t      this._nextRequest = now + wait + this.storeOptions.minTime;\n\t      return {\n\t        success: true,\n\t        wait,\n\t        reservoir: this.storeOptions.reservoir\n\t      };\n\t    } else {\n\t      return {\n\t        success: false\n\t      };\n\t    }\n\t  }\n\n\t  strategyIsBlock() {\n\t    return this.storeOptions.strategy === 3;\n\t  }\n\n\t  async __submit__(queueLength, weight) {\n\t    var blocked, now, reachedHWM;\n\t    await this.yieldLoop();\n\t    if ((this.storeOptions.maxConcurrent != null) && weight > this.storeOptions.maxConcurrent) {\n\t      throw new BottleneckError$2(`Impossible to add a job having a weight of ${weight} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);\n\t    }\n\t    now = Date.now();\n\t    reachedHWM = (this.storeOptions.highWater != null) && queueLength === this.storeOptions.highWater && !this.check(weight, now);\n\t    blocked = this.strategyIsBlock() && (reachedHWM || this.isBlocked(now));\n\t    if (blocked) {\n\t      this._unblockTime = now + this.computePenalty();\n\t      this._nextRequest = this._unblockTime + this.storeOptions.minTime;\n\t      this.instance._dropAllQueued();\n\t    }\n\t    return {\n\t      reachedHWM,\n\t      blocked,\n\t      strategy: this.storeOptions.strategy\n\t    };\n\t  }\n\n\t  async __free__(index, weight) {\n\t    await this.yieldLoop();\n\t    this._running -= weight;\n\t    this._done += weight;\n\t    this.instance._drainAll(this.computeCapacity());\n\t    return {\n\t      running: this._running\n\t    };\n\t  }\n\n\t};\n\n\tvar LocalDatastore_1 = LocalDatastore;\n\n\tvar BottleneckError$3, States;\n\n\tBottleneckError$3 = BottleneckError_1;\n\n\tStates = class States {\n\t  constructor(status1) {\n\t    this.status = status1;\n\t    this._jobs = {};\n\t    this.counts = this.status.map(function() {\n\t      return 0;\n\t    });\n\t  }\n\n\t  next(id) {\n\t    var current, next;\n\t    current = this._jobs[id];\n\t    next = current + 1;\n\t    if ((current != null) && next < this.status.length) {\n\t      this.counts[current]--;\n\t      this.counts[next]++;\n\t      return this._jobs[id]++;\n\t    } else if (current != null) {\n\t      this.counts[current]--;\n\t      return delete this._jobs[id];\n\t    }\n\t  }\n\n\t  start(id) {\n\t    var initial;\n\t    initial = 0;\n\t    this._jobs[id] = initial;\n\t    return this.counts[initial]++;\n\t  }\n\n\t  remove(id) {\n\t    var current;\n\t    current = this._jobs[id];\n\t    if (current != null) {\n\t      this.counts[current]--;\n\t      delete this._jobs[id];\n\t    }\n\t    return current != null;\n\t  }\n\n\t  jobStatus(id) {\n\t    var ref;\n\t    return (ref = this.status[this._jobs[id]]) != null ? ref : null;\n\t  }\n\n\t  statusJobs(status) {\n\t    var k, pos, ref, results, v;\n\t    if (status != null) {\n\t      pos = this.status.indexOf(status);\n\t      if (pos < 0) {\n\t        throw new BottleneckError$3(`status must be one of ${this.status.join(', ')}`);\n\t      }\n\t      ref = this._jobs;\n\t      results = [];\n\t      for (k in ref) {\n\t        v = ref[k];\n\t        if (v === pos) {\n\t          results.push(k);\n\t        }\n\t      }\n\t      return results;\n\t    } else {\n\t      return Object.keys(this._jobs);\n\t    }\n\t  }\n\n\t  statusCounts() {\n\t    return this.counts.reduce(((acc, v, i) => {\n\t      acc[this.status[i]] = v;\n\t      return acc;\n\t    }), {});\n\t  }\n\n\t};\n\n\tvar States_1 = States;\n\n\tvar DLList$2, Sync;\n\n\tDLList$2 = DLList_1;\n\n\tSync = class Sync {\n\t  constructor(name, Promise) {\n\t    this.schedule = this.schedule.bind(this);\n\t    this.name = name;\n\t    this.Promise = Promise;\n\t    this._running = 0;\n\t    this._queue = new DLList$2();\n\t  }\n\n\t  isEmpty() {\n\t    return this._queue.length === 0;\n\t  }\n\n\t  async _tryToRun() {\n\t    var args, cb, error, reject, resolve, returned, task;\n\t    if ((this._running < 1) && this._queue.length > 0) {\n\t      this._running++;\n\t      ({task, args, resolve, reject} = this._queue.shift());\n\t      cb = (await (async function() {\n\t        try {\n\t          returned = (await task(...args));\n\t          return function() {\n\t            return resolve(returned);\n\t          };\n\t        } catch (error1) {\n\t          error = error1;\n\t          return function() {\n\t            return reject(error);\n\t          };\n\t        }\n\t      })());\n\t      this._running--;\n\t      this._tryToRun();\n\t      return cb();\n\t    }\n\t  }\n\n\t  schedule(task, ...args) {\n\t    var promise, reject, resolve;\n\t    resolve = reject = null;\n\t    promise = new this.Promise(function(_resolve, _reject) {\n\t      resolve = _resolve;\n\t      return reject = _reject;\n\t    });\n\t    this._queue.push({task, args, resolve, reject});\n\t    this._tryToRun();\n\t    return promise;\n\t  }\n\n\t};\n\n\tvar Sync_1 = Sync;\n\n\tvar version = \"2.19.5\";\n\tvar version$1 = {\n\t\tversion: version\n\t};\n\n\tvar version$2 = /*#__PURE__*/Object.freeze({\n\t\tversion: version,\n\t\tdefault: version$1\n\t});\n\n\tvar require$$2 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');\n\n\tvar require$$3 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');\n\n\tvar require$$4 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');\n\n\tvar Events$2, Group, IORedisConnection$1, RedisConnection$1, Scripts$1, parser$3;\n\n\tparser$3 = parser;\n\n\tEvents$2 = Events_1;\n\n\tRedisConnection$1 = require$$2;\n\n\tIORedisConnection$1 = require$$3;\n\n\tScripts$1 = require$$4;\n\n\tGroup = (function() {\n\t  class Group {\n\t    constructor(limiterOptions = {}) {\n\t      this.deleteKey = this.deleteKey.bind(this);\n\t      this.limiterOptions = limiterOptions;\n\t      parser$3.load(this.limiterOptions, this.defaults, this);\n\t      this.Events = new Events$2(this);\n\t      this.instances = {};\n\t      this.Bottleneck = Bottleneck_1;\n\t      this._startAutoCleanup();\n\t      this.sharedConnection = this.connection != null;\n\t      if (this.connection == null) {\n\t        if (this.limiterOptions.datastore === \"redis\") {\n\t          this.connection = new RedisConnection$1(Object.assign({}, this.limiterOptions, {Events: this.Events}));\n\t        } else if (this.limiterOptions.datastore === \"ioredis\") {\n\t          this.connection = new IORedisConnection$1(Object.assign({}, this.limiterOptions, {Events: this.Events}));\n\t        }\n\t      }\n\t    }\n\n\t    key(key = \"\") {\n\t      var ref;\n\t      return (ref = this.instances[key]) != null ? ref : (() => {\n\t        var limiter;\n\t        limiter = this.instances[key] = new this.Bottleneck(Object.assign(this.limiterOptions, {\n\t          id: `${this.id}-${key}`,\n\t          timeout: this.timeout,\n\t          connection: this.connection\n\t        }));\n\t        this.Events.trigger(\"created\", limiter, key);\n\t        return limiter;\n\t      })();\n\t    }\n\n\t    async deleteKey(key = \"\") {\n\t      var deleted, instance;\n\t      instance = this.instances[key];\n\t      if (this.connection) {\n\t        deleted = (await this.connection.__runCommand__(['del', ...Scripts$1.allKeys(`${this.id}-${key}`)]));\n\t      }\n\t      if (instance != null) {\n\t        delete this.instances[key];\n\t        await instance.disconnect();\n\t      }\n\t      return (instance != null) || deleted > 0;\n\t    }\n\n\t    limiters() {\n\t      var k, ref, results, v;\n\t      ref = this.instances;\n\t      results = [];\n\t      for (k in ref) {\n\t        v = ref[k];\n\t        results.push({\n\t          key: k,\n\t          limiter: v\n\t        });\n\t      }\n\t      return results;\n\t    }\n\n\t    keys() {\n\t      return Object.keys(this.instances);\n\t    }\n\n\t    async clusterKeys() {\n\t      var cursor, end, found, i, k, keys, len, next, start;\n\t      if (this.connection == null) {\n\t        return this.Promise.resolve(this.keys());\n\t      }\n\t      keys = [];\n\t      cursor = null;\n\t      start = `b_${this.id}-`.length;\n\t      end = \"_settings\".length;\n\t      while (cursor !== 0) {\n\t        [next, found] = (await this.connection.__runCommand__([\"scan\", cursor != null ? cursor : 0, \"match\", `b_${this.id}-*_settings`, \"count\", 10000]));\n\t        cursor = ~~next;\n\t        for (i = 0, len = found.length; i < len; i++) {\n\t          k = found[i];\n\t          keys.push(k.slice(start, -end));\n\t        }\n\t      }\n\t      return keys;\n\t    }\n\n\t    _startAutoCleanup() {\n\t      var base;\n\t      clearInterval(this.interval);\n\t      return typeof (base = (this.interval = setInterval(async() => {\n\t        var e, k, ref, results, time, v;\n\t        time = Date.now();\n\t        ref = this.instances;\n\t        results = [];\n\t        for (k in ref) {\n\t          v = ref[k];\n\t          try {\n\t            if ((await v._store.__groupCheck__(time))) {\n\t              results.push(this.deleteKey(k));\n\t            } else {\n\t              results.push(void 0);\n\t            }\n\t          } catch (error) {\n\t            e = error;\n\t            results.push(v.Events.trigger(\"error\", e));\n\t          }\n\t        }\n\t        return results;\n\t      }, this.timeout / 2))).unref === \"function\" ? base.unref() : void 0;\n\t    }\n\n\t    updateSettings(options = {}) {\n\t      parser$3.overwrite(options, this.defaults, this);\n\t      parser$3.overwrite(options, options, this.limiterOptions);\n\t      if (options.timeout != null) {\n\t        return this._startAutoCleanup();\n\t      }\n\t    }\n\n\t    disconnect(flush = true) {\n\t      var ref;\n\t      if (!this.sharedConnection) {\n\t        return (ref = this.connection) != null ? ref.disconnect(flush) : void 0;\n\t      }\n\t    }\n\n\t  }\n\t  Group.prototype.defaults = {\n\t    timeout: 1000 * 60 * 5,\n\t    connection: null,\n\t    Promise: Promise,\n\t    id: \"group-key\"\n\t  };\n\n\t  return Group;\n\n\t}).call(commonjsGlobal);\n\n\tvar Group_1 = Group;\n\n\tvar Batcher, Events$3, parser$4;\n\n\tparser$4 = parser;\n\n\tEvents$3 = Events_1;\n\n\tBatcher = (function() {\n\t  class Batcher {\n\t    constructor(options = {}) {\n\t      this.options = options;\n\t      parser$4.load(this.options, this.defaults, this);\n\t      this.Events = new Events$3(this);\n\t      this._arr = [];\n\t      this._resetPromise();\n\t      this._lastFlush = Date.now();\n\t    }\n\n\t    _resetPromise() {\n\t      return this._promise = new this.Promise((res, rej) => {\n\t        return this._resolve = res;\n\t      });\n\t    }\n\n\t    _flush() {\n\t      clearTimeout(this._timeout);\n\t      this._lastFlush = Date.now();\n\t      this._resolve();\n\t      this.Events.trigger(\"batch\", this._arr);\n\t      this._arr = [];\n\t      return this._resetPromise();\n\t    }\n\n\t    add(data) {\n\t      var ret;\n\t      this._arr.push(data);\n\t      ret = this._promise;\n\t      if (this._arr.length === this.maxSize) {\n\t        this._flush();\n\t      } else if ((this.maxTime != null) && this._arr.length === 1) {\n\t        this._timeout = setTimeout(() => {\n\t          return this._flush();\n\t        }, this.maxTime);\n\t      }\n\t      return ret;\n\t    }\n\n\t  }\n\t  Batcher.prototype.defaults = {\n\t    maxTime: null,\n\t    maxSize: null,\n\t    Promise: Promise\n\t  };\n\n\t  return Batcher;\n\n\t}).call(commonjsGlobal);\n\n\tvar Batcher_1 = Batcher;\n\n\tvar require$$4$1 = () => console.log('You must import the full version of Bottleneck in order to use this feature.');\n\n\tvar require$$8 = getCjsExportFromNamespace(version$2);\n\n\tvar Bottleneck, DEFAULT_PRIORITY$1, Events$4, Job$1, LocalDatastore$1, NUM_PRIORITIES$1, Queues$1, RedisDatastore$1, States$1, Sync$1, parser$5,\n\t  splice = [].splice;\n\n\tNUM_PRIORITIES$1 = 10;\n\n\tDEFAULT_PRIORITY$1 = 5;\n\n\tparser$5 = parser;\n\n\tQueues$1 = Queues_1;\n\n\tJob$1 = Job_1;\n\n\tLocalDatastore$1 = LocalDatastore_1;\n\n\tRedisDatastore$1 = require$$4$1;\n\n\tEvents$4 = Events_1;\n\n\tStates$1 = States_1;\n\n\tSync$1 = Sync_1;\n\n\tBottleneck = (function() {\n\t  class Bottleneck {\n\t    constructor(options = {}, ...invalid) {\n\t      var storeInstanceOptions, storeOptions;\n\t      this._addToQueue = this._addToQueue.bind(this);\n\t      this._validateOptions(options, invalid);\n\t      parser$5.load(options, this.instanceDefaults, this);\n\t      this._queues = new Queues$1(NUM_PRIORITIES$1);\n\t      this._scheduled = {};\n\t      this._states = new States$1([\"RECEIVED\", \"QUEUED\", \"RUNNING\", \"EXECUTING\"].concat(this.trackDoneStatus ? [\"DONE\"] : []));\n\t      this._limiter = null;\n\t      this.Events = new Events$4(this);\n\t      this._submitLock = new Sync$1(\"submit\", this.Promise);\n\t      this._registerLock = new Sync$1(\"register\", this.Promise);\n\t      storeOptions = parser$5.load(options, this.storeDefaults, {});\n\t      this._store = (function() {\n\t        if (this.datastore === \"redis\" || this.datastore === \"ioredis\" || (this.connection != null)) {\n\t          storeInstanceOptions = parser$5.load(options, this.redisStoreDefaults, {});\n\t          return new RedisDatastore$1(this, storeOptions, storeInstanceOptions);\n\t        } else if (this.datastore === \"local\") {\n\t          storeInstanceOptions = parser$5.load(options, this.localStoreDefaults, {});\n\t          return new LocalDatastore$1(this, storeOptions, storeInstanceOptions);\n\t        } else {\n\t          throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`);\n\t        }\n\t      }).call(this);\n\t      this._queues.on(\"leftzero\", () => {\n\t        var ref;\n\t        return (ref = this._store.heartbeat) != null ? typeof ref.ref === \"function\" ? ref.ref() : void 0 : void 0;\n\t      });\n\t      this._queues.on(\"zero\", () => {\n\t        var ref;\n\t        return (ref = this._store.heartbeat) != null ? typeof ref.unref === \"function\" ? ref.unref() : void 0 : void 0;\n\t      });\n\t    }\n\n\t    _validateOptions(options, invalid) {\n\t      if (!((options != null) && typeof options === \"object\" && invalid.length === 0)) {\n\t        throw new Bottleneck.prototype.BottleneckError(\"Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.\");\n\t      }\n\t    }\n\n\t    ready() {\n\t      return this._store.ready;\n\t    }\n\n\t    clients() {\n\t      return this._store.clients;\n\t    }\n\n\t    channel() {\n\t      return `b_${this.id}`;\n\t    }\n\n\t    channel_client() {\n\t      return `b_${this.id}_${this._store.clientId}`;\n\t    }\n\n\t    publish(message) {\n\t      return this._store.__publish__(message);\n\t    }\n\n\t    disconnect(flush = true) {\n\t      return this._store.__disconnect__(flush);\n\t    }\n\n\t    chain(_limiter) {\n\t      this._limiter = _limiter;\n\t      return this;\n\t    }\n\n\t    queued(priority) {\n\t      return this._queues.queued(priority);\n\t    }\n\n\t    clusterQueued() {\n\t      return this._store.__queued__();\n\t    }\n\n\t    empty() {\n\t      return this.queued() === 0 && this._submitLock.isEmpty();\n\t    }\n\n\t    running() {\n\t      return this._store.__running__();\n\t    }\n\n\t    done() {\n\t      return this._store.__done__();\n\t    }\n\n\t    jobStatus(id) {\n\t      return this._states.jobStatus(id);\n\t    }\n\n\t    jobs(status) {\n\t      return this._states.statusJobs(status);\n\t    }\n\n\t    counts() {\n\t      return this._states.statusCounts();\n\t    }\n\n\t    _randomIndex() {\n\t      return Math.random().toString(36).slice(2);\n\t    }\n\n\t    check(weight = 1) {\n\t      return this._store.__check__(weight);\n\t    }\n\n\t    _clearGlobalState(index) {\n\t      if (this._scheduled[index] != null) {\n\t        clearTimeout(this._scheduled[index].expiration);\n\t        delete this._scheduled[index];\n\t        return true;\n\t      } else {\n\t        return false;\n\t      }\n\t    }\n\n\t    async _free(index, job, options, eventInfo) {\n\t      var e, running;\n\t      try {\n\t        ({running} = (await this._store.__free__(index, options.weight)));\n\t        this.Events.trigger(\"debug\", `Freed ${options.id}`, eventInfo);\n\t        if (running === 0 && this.empty()) {\n\t          return this.Events.trigger(\"idle\");\n\t        }\n\t      } catch (error1) {\n\t        e = error1;\n\t        return this.Events.trigger(\"error\", e);\n\t      }\n\t    }\n\n\t    _run(index, job, wait) {\n\t      var clearGlobalState, free, run;\n\t      job.doRun();\n\t      clearGlobalState = this._clearGlobalState.bind(this, index);\n\t      run = this._run.bind(this, index, job);\n\t      free = this._free.bind(this, index, job);\n\t      return this._scheduled[index] = {\n\t        timeout: setTimeout(() => {\n\t          return job.doExecute(this._limiter, clearGlobalState, run, free);\n\t        }, wait),\n\t        expiration: job.options.expiration != null ? setTimeout(function() {\n\t          return job.doExpire(clearGlobalState, run, free);\n\t        }, wait + job.options.expiration) : void 0,\n\t        job: job\n\t      };\n\t    }\n\n\t    _drainOne(capacity) {\n\t      return this._registerLock.schedule(() => {\n\t        var args, index, next, options, queue;\n\t        if (this.queued() === 0) {\n\t          return this.Promise.resolve(null);\n\t        }\n\t        queue = this._queues.getFirst();\n\t        ({options, args} = next = queue.first());\n\t        if ((capacity != null) && options.weight > capacity) {\n\t          return this.Promise.resolve(null);\n\t        }\n\t        this.Events.trigger(\"debug\", `Draining ${options.id}`, {args, options});\n\t        index = this._randomIndex();\n\t        return this._store.__register__(index, options.weight, options.expiration).then(({success, wait, reservoir}) => {\n\t          var empty;\n\t          this.Events.trigger(\"debug\", `Drained ${options.id}`, {success, args, options});\n\t          if (success) {\n\t            queue.shift();\n\t            empty = this.empty();\n\t            if (empty) {\n\t              this.Events.trigger(\"empty\");\n\t            }\n\t            if (reservoir === 0) {\n\t              this.Events.trigger(\"depleted\", empty);\n\t            }\n\t            this._run(index, next, wait);\n\t            return this.Promise.resolve(options.weight);\n\t          } else {\n\t            return this.Promise.resolve(null);\n\t          }\n\t        });\n\t      });\n\t    }\n\n\t    _drainAll(capacity, total = 0) {\n\t      return this._drainOne(capacity).then((drained) => {\n\t        var newCapacity;\n\t        if (drained != null) {\n\t          newCapacity = capacity != null ? capacity - drained : capacity;\n\t          return this._drainAll(newCapacity, total + drained);\n\t        } else {\n\t          return this.Promise.resolve(total);\n\t        }\n\t      }).catch((e) => {\n\t        return this.Events.trigger(\"error\", e);\n\t      });\n\t    }\n\n\t    _dropAllQueued(message) {\n\t      return this._queues.shiftAll(function(job) {\n\t        return job.doDrop({message});\n\t      });\n\t    }\n\n\t    stop(options = {}) {\n\t      var done, waitForExecuting;\n\t      options = parser$5.load(options, this.stopDefaults);\n\t      waitForExecuting = (at) => {\n\t        var finished;\n\t        finished = () => {\n\t          var counts;\n\t          counts = this._states.counts;\n\t          return (counts[0] + counts[1] + counts[2] + counts[3]) === at;\n\t        };\n\t        return new this.Promise((resolve, reject) => {\n\t          if (finished()) {\n\t            return resolve();\n\t          } else {\n\t            return this.on(\"done\", () => {\n\t              if (finished()) {\n\t                this.removeAllListeners(\"done\");\n\t                return resolve();\n\t              }\n\t            });\n\t          }\n\t        });\n\t      };\n\t      done = options.dropWaitingJobs ? (this._run = function(index, next) {\n\t        return next.doDrop({\n\t          message: options.dropErrorMessage\n\t        });\n\t      }, this._drainOne = () => {\n\t        return this.Promise.resolve(null);\n\t      }, this._registerLock.schedule(() => {\n\t        return this._submitLock.schedule(() => {\n\t          var k, ref, v;\n\t          ref = this._scheduled;\n\t          for (k in ref) {\n\t            v = ref[k];\n\t            if (this.jobStatus(v.job.options.id) === \"RUNNING\") {\n\t              clearTimeout(v.timeout);\n\t              clearTimeout(v.expiration);\n\t              v.job.doDrop({\n\t                message: options.dropErrorMessage\n\t              });\n\t            }\n\t          }\n\t          this._dropAllQueued(options.dropErrorMessage);\n\t          return waitForExecuting(0);\n\t        });\n\t      })) : this.schedule({\n\t        priority: NUM_PRIORITIES$1 - 1,\n\t        weight: 0\n\t      }, () => {\n\t        return waitForExecuting(1);\n\t      });\n\t      this._receive = function(job) {\n\t        return job._reject(new Bottleneck.prototype.BottleneckError(options.enqueueErrorMessage));\n\t      };\n\t      this.stop = () => {\n\t        return this.Promise.reject(new Bottleneck.prototype.BottleneckError(\"stop() has already been called\"));\n\t      };\n\t      return done;\n\t    }\n\n\t    async _addToQueue(job) {\n\t      var args, blocked, error, options, reachedHWM, shifted, strategy;\n\t      ({args, options} = job);\n\t      try {\n\t        ({reachedHWM, blocked, strategy} = (await this._store.__submit__(this.queued(), options.weight)));\n\t      } catch (error1) {\n\t        error = error1;\n\t        this.Events.trigger(\"debug\", `Could not queue ${options.id}`, {args, options, error});\n\t        job.doDrop({error});\n\t        return false;\n\t      }\n\t      if (blocked) {\n\t        job.doDrop();\n\t        return true;\n\t      } else if (reachedHWM) {\n\t        shifted = strategy === Bottleneck.prototype.strategy.LEAK ? this._queues.shiftLastFrom(options.priority) : strategy === Bottleneck.prototype.strategy.OVERFLOW_PRIORITY ? this._queues.shiftLastFrom(options.priority + 1) : strategy === Bottleneck.prototype.strategy.OVERFLOW ? job : void 0;\n\t        if (shifted != null) {\n\t          shifted.doDrop();\n\t        }\n\t        if ((shifted == null) || strategy === Bottleneck.prototype.strategy.OVERFLOW) {\n\t          if (shifted == null) {\n\t            job.doDrop();\n\t          }\n\t          return reachedHWM;\n\t        }\n\t      }\n\t      job.doQueue(reachedHWM, blocked);\n\t      this._queues.push(job);\n\t      await this._drainAll();\n\t      return reachedHWM;\n\t    }\n\n\t    _receive(job) {\n\t      if (this._states.jobStatus(job.options.id) != null) {\n\t        job._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${job.options.id})`));\n\t        return false;\n\t      } else {\n\t        job.doReceive();\n\t        return this._submitLock.schedule(this._addToQueue, job);\n\t      }\n\t    }\n\n\t    submit(...args) {\n\t      var cb, fn, job, options, ref, ref1, task;\n\t      if (typeof args[0] === \"function\") {\n\t        ref = args, [fn, ...args] = ref, [cb] = splice.call(args, -1);\n\t        options = parser$5.load({}, this.jobDefaults);\n\t      } else {\n\t        ref1 = args, [options, fn, ...args] = ref1, [cb] = splice.call(args, -1);\n\t        options = parser$5.load(options, this.jobDefaults);\n\t      }\n\t      task = (...args) => {\n\t        return new this.Promise(function(resolve, reject) {\n\t          return fn(...args, function(...args) {\n\t            return (args[0] != null ? reject : resolve)(args);\n\t          });\n\t        });\n\t      };\n\t      job = new Job$1(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n\t      job.promise.then(function(args) {\n\t        return typeof cb === \"function\" ? cb(...args) : void 0;\n\t      }).catch(function(args) {\n\t        if (Array.isArray(args)) {\n\t          return typeof cb === \"function\" ? cb(...args) : void 0;\n\t        } else {\n\t          return typeof cb === \"function\" ? cb(args) : void 0;\n\t        }\n\t      });\n\t      return this._receive(job);\n\t    }\n\n\t    schedule(...args) {\n\t      var job, options, task;\n\t      if (typeof args[0] === \"function\") {\n\t        [task, ...args] = args;\n\t        options = {};\n\t      } else {\n\t        [options, task, ...args] = args;\n\t      }\n\t      job = new Job$1(task, args, options, this.jobDefaults, this.rejectOnDrop, this.Events, this._states, this.Promise);\n\t      this._receive(job);\n\t      return job.promise;\n\t    }\n\n\t    wrap(fn) {\n\t      var schedule, wrapped;\n\t      schedule = this.schedule.bind(this);\n\t      wrapped = function(...args) {\n\t        return schedule(fn.bind(this), ...args);\n\t      };\n\t      wrapped.withOptions = function(options, ...args) {\n\t        return schedule(options, fn, ...args);\n\t      };\n\t      return wrapped;\n\t    }\n\n\t    async updateSettings(options = {}) {\n\t      await this._store.__updateSettings__(parser$5.overwrite(options, this.storeDefaults));\n\t      parser$5.overwrite(options, this.instanceDefaults, this);\n\t      return this;\n\t    }\n\n\t    currentReservoir() {\n\t      return this._store.__currentReservoir__();\n\t    }\n\n\t    incrementReservoir(incr = 0) {\n\t      return this._store.__incrementReservoir__(incr);\n\t    }\n\n\t  }\n\t  Bottleneck.default = Bottleneck;\n\n\t  Bottleneck.Events = Events$4;\n\n\t  Bottleneck.version = Bottleneck.prototype.version = require$$8.version;\n\n\t  Bottleneck.strategy = Bottleneck.prototype.strategy = {\n\t    LEAK: 1,\n\t    OVERFLOW: 2,\n\t    OVERFLOW_PRIORITY: 4,\n\t    BLOCK: 3\n\t  };\n\n\t  Bottleneck.BottleneckError = Bottleneck.prototype.BottleneckError = BottleneckError_1;\n\n\t  Bottleneck.Group = Bottleneck.prototype.Group = Group_1;\n\n\t  Bottleneck.RedisConnection = Bottleneck.prototype.RedisConnection = require$$2;\n\n\t  Bottleneck.IORedisConnection = Bottleneck.prototype.IORedisConnection = require$$3;\n\n\t  Bottleneck.Batcher = Bottleneck.prototype.Batcher = Batcher_1;\n\n\t  Bottleneck.prototype.jobDefaults = {\n\t    priority: DEFAULT_PRIORITY$1,\n\t    weight: 1,\n\t    expiration: null,\n\t    id: \"\"\n\t  };\n\n\t  Bottleneck.prototype.storeDefaults = {\n\t    maxConcurrent: null,\n\t    minTime: 0,\n\t    highWater: null,\n\t    strategy: Bottleneck.prototype.strategy.LEAK,\n\t    penalty: null,\n\t    reservoir: null,\n\t    reservoirRefreshInterval: null,\n\t    reservoirRefreshAmount: null,\n\t    reservoirIncreaseInterval: null,\n\t    reservoirIncreaseAmount: null,\n\t    reservoirIncreaseMaximum: null\n\t  };\n\n\t  Bottleneck.prototype.localStoreDefaults = {\n\t    Promise: Promise,\n\t    timeout: null,\n\t    heartbeatInterval: 250\n\t  };\n\n\t  Bottleneck.prototype.redisStoreDefaults = {\n\t    Promise: Promise,\n\t    timeout: null,\n\t    heartbeatInterval: 5000,\n\t    clientTimeout: 10000,\n\t    Redis: null,\n\t    clientOptions: {},\n\t    clusterNodes: null,\n\t    clearDatastore: false,\n\t    connection: null\n\t  };\n\n\t  Bottleneck.prototype.instanceDefaults = {\n\t    datastore: \"local\",\n\t    connection: null,\n\t    id: \"\",\n\t    rejectOnDrop: true,\n\t    trackDoneStatus: false,\n\t    Promise: Promise\n\t  };\n\n\t  Bottleneck.prototype.stopDefaults = {\n\t    enqueueErrorMessage: \"This limiter has been stopped and cannot accept new jobs.\",\n\t    dropWaitingJobs: true,\n\t    dropErrorMessage: \"This limiter has been stopped.\"\n\t  };\n\n\t  return Bottleneck;\n\n\t}).call(commonjsGlobal);\n\n\tvar Bottleneck_1 = Bottleneck;\n\n\tvar lib = Bottleneck_1;\n\n\treturn lib;\n\n})));\n",
     "'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n",
     "'use strict'\n\nconst debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n",
@@ -159,8 +544,234 @@
     "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nimport * as os from 'os';\nimport * as events from 'events';\nimport * as child from 'child_process';\nimport * as path from 'path';\nimport * as io from '@actions/io';\nimport * as ioUtil from '@actions/io/lib/io-util';\nimport { setTimeout } from 'timers';\n/* eslint-disable @typescript-eslint/unbound-method */\nconst IS_WINDOWS = process.platform === 'win32';\n/*\n * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.\n */\nexport class ToolRunner extends events.EventEmitter {\n    constructor(toolPath, args, options) {\n        super();\n        if (!toolPath) {\n            throw new Error(\"Parameter 'toolPath' cannot be null or empty.\");\n        }\n        this.toolPath = toolPath;\n        this.args = args || [];\n        this.options = options || {};\n    }\n    _debug(message) {\n        if (this.options.listeners && this.options.listeners.debug) {\n            this.options.listeners.debug(message);\n        }\n    }\n    _getCommandString(options, noPrefix) {\n        const toolPath = this._getSpawnFileName();\n        const args = this._getSpawnArgs(options);\n        let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool\n        if (IS_WINDOWS) {\n            // Windows + cmd file\n            if (this._isCmdFile()) {\n                cmd += toolPath;\n                for (const a of args) {\n                    cmd += ` ${a}`;\n                }\n            }\n            // Windows + verbatim\n            else if (options.windowsVerbatimArguments) {\n                cmd += `\"${toolPath}\"`;\n                for (const a of args) {\n                    cmd += ` ${a}`;\n                }\n            }\n            // Windows (regular)\n            else {\n                cmd += this._windowsQuoteCmdArg(toolPath);\n                for (const a of args) {\n                    cmd += ` ${this._windowsQuoteCmdArg(a)}`;\n                }\n            }\n        }\n        else {\n            // OSX/Linux - this can likely be improved with some form of quoting.\n            // creating processes on Unix is fundamentally different than Windows.\n            // on Unix, execvp() takes an arg array.\n            cmd += toolPath;\n            for (const a of args) {\n                cmd += ` ${a}`;\n            }\n        }\n        return cmd;\n    }\n    _processLineBuffer(data, strBuffer, onLine) {\n        try {\n            let s = strBuffer + data.toString();\n            let n = s.indexOf(os.EOL);\n            while (n > -1) {\n                const line = s.substring(0, n);\n                onLine(line);\n                // the rest of the string ...\n                s = s.substring(n + os.EOL.length);\n                n = s.indexOf(os.EOL);\n            }\n            return s;\n        }\n        catch (err) {\n            // streaming lines to console is best effort.  Don't fail a build.\n            this._debug(`error processing line. Failed with error ${err}`);\n            return '';\n        }\n    }\n    _getSpawnFileName() {\n        if (IS_WINDOWS) {\n            if (this._isCmdFile()) {\n                return process.env['COMSPEC'] || 'cmd.exe';\n            }\n        }\n        return this.toolPath;\n    }\n    _getSpawnArgs(options) {\n        if (IS_WINDOWS) {\n            if (this._isCmdFile()) {\n                let argline = `/D /S /C \"${this._windowsQuoteCmdArg(this.toolPath)}`;\n                for (const a of this.args) {\n                    argline += ' ';\n                    argline += options.windowsVerbatimArguments\n                        ? a\n                        : this._windowsQuoteCmdArg(a);\n                }\n                argline += '\"';\n                return [argline];\n            }\n        }\n        return this.args;\n    }\n    _endsWith(str, end) {\n        return str.endsWith(end);\n    }\n    _isCmdFile() {\n        const upperToolPath = this.toolPath.toUpperCase();\n        return (this._endsWith(upperToolPath, '.CMD') ||\n            this._endsWith(upperToolPath, '.BAT'));\n    }\n    _windowsQuoteCmdArg(arg) {\n        // for .exe, apply the normal quoting rules that libuv applies\n        if (!this._isCmdFile()) {\n            return this._uvQuoteCmdArg(arg);\n        }\n        // otherwise apply quoting rules specific to the cmd.exe command line parser.\n        // the libuv rules are generic and are not designed specifically for cmd.exe\n        // command line parser.\n        //\n        // for a detailed description of the cmd.exe command line parser, refer to\n        // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912\n        // need quotes for empty arg\n        if (!arg) {\n            return '\"\"';\n        }\n        // determine whether the arg needs to be quoted\n        const cmdSpecialChars = [\n            ' ',\n            '\\t',\n            '&',\n            '(',\n            ')',\n            '[',\n            ']',\n            '{',\n            '}',\n            '^',\n            '=',\n            ';',\n            '!',\n            \"'\",\n            '+',\n            ',',\n            '`',\n            '~',\n            '|',\n            '<',\n            '>',\n            '\"'\n        ];\n        let needsQuotes = false;\n        for (const char of arg) {\n            if (cmdSpecialChars.some(x => x === char)) {\n                needsQuotes = true;\n                break;\n            }\n        }\n        // short-circuit if quotes not needed\n        if (!needsQuotes) {\n            return arg;\n        }\n        // the following quoting rules are very similar to the rules that by libuv applies.\n        //\n        // 1) wrap the string in quotes\n        //\n        // 2) double-up quotes - i.e. \" => \"\"\n        //\n        //    this is different from the libuv quoting rules. libuv replaces \" with \\\", which unfortunately\n        //    doesn't work well with a cmd.exe command line.\n        //\n        //    note, replacing \" with \"\" also works well if the arg is passed to a downstream .NET console app.\n        //    for example, the command line:\n        //          foo.exe \"myarg:\"\"my val\"\"\"\n        //    is parsed by a .NET console app into an arg array:\n        //          [ \"myarg:\\\"my val\\\"\" ]\n        //    which is the same end result when applying libuv quoting rules. although the actual\n        //    command line from libuv quoting rules would look like:\n        //          foo.exe \"myarg:\\\"my val\\\"\"\n        //\n        // 3) double-up slashes that precede a quote,\n        //    e.g.  hello \\world    => \"hello \\world\"\n        //          hello\\\"world    => \"hello\\\\\"\"world\"\n        //          hello\\\\\"world   => \"hello\\\\\\\\\"\"world\"\n        //          hello world\\    => \"hello world\\\\\"\n        //\n        //    technically this is not required for a cmd.exe command line, or the batch argument parser.\n        //    the reasons for including this as a .cmd quoting rule are:\n        //\n        //    a) this is optimized for the scenario where the argument is passed from the .cmd file to an\n        //       external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.\n        //\n        //    b) it's what we've been doing previously (by deferring to node default behavior) and we\n        //       haven't heard any complaints about that aspect.\n        //\n        // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be\n        // escaped when used on the command line directly - even though within a .cmd file % can be escaped\n        // by using %%.\n        //\n        // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts\n        // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.\n        //\n        // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would\n        // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the\n        // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args\n        // to an external program.\n        //\n        // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.\n        // % can be escaped within a .cmd file.\n        let reverse = '\"';\n        let quoteHit = true;\n        for (let i = arg.length; i > 0; i--) {\n            // walk the string in reverse\n            reverse += arg[i - 1];\n            if (quoteHit && arg[i - 1] === '\\\\') {\n                reverse += '\\\\'; // double the slash\n            }\n            else if (arg[i - 1] === '\"') {\n                quoteHit = true;\n                reverse += '\"'; // double the quote\n            }\n            else {\n                quoteHit = false;\n            }\n        }\n        reverse += '\"';\n        return reverse.split('').reverse().join('');\n    }\n    _uvQuoteCmdArg(arg) {\n        // Tool runner wraps child_process.spawn() and needs to apply the same quoting as\n        // Node in certain cases where the undocumented spawn option windowsVerbatimArguments\n        // is used.\n        //\n        // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,\n        // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),\n        // pasting copyright notice from Node within this function:\n        //\n        //      Copyright Joyent, Inc. and other Node contributors. All rights reserved.\n        //\n        //      Permission is hereby granted, free of charge, to any person obtaining a copy\n        //      of this software and associated documentation files (the \"Software\"), to\n        //      deal in the Software without restriction, including without limitation the\n        //      rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n        //      sell copies of the Software, and to permit persons to whom the Software is\n        //      furnished to do so, subject to the following conditions:\n        //\n        //      The above copyright notice and this permission notice shall be included in\n        //      all copies or substantial portions of the Software.\n        //\n        //      THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        //      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        //      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        //      AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        //      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n        //      FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n        //      IN THE SOFTWARE.\n        if (!arg) {\n            // Need double quotation for empty argument\n            return '\"\"';\n        }\n        if (!arg.includes(' ') && !arg.includes('\\t') && !arg.includes('\"')) {\n            // No quotation needed\n            return arg;\n        }\n        if (!arg.includes('\"') && !arg.includes('\\\\')) {\n            // No embedded double quotes or backslashes, so I can just wrap\n            // quote marks around the whole thing.\n            return `\"${arg}\"`;\n        }\n        // Expected input/output:\n        //   input : hello\"world\n        //   output: \"hello\\\"world\"\n        //   input : hello\"\"world\n        //   output: \"hello\\\"\\\"world\"\n        //   input : hello\\world\n        //   output: hello\\world\n        //   input : hello\\\\world\n        //   output: hello\\\\world\n        //   input : hello\\\"world\n        //   output: \"hello\\\\\\\"world\"\n        //   input : hello\\\\\"world\n        //   output: \"hello\\\\\\\\\\\"world\"\n        //   input : hello world\\\n        //   output: \"hello world\\\\\" - note the comment in libuv actually reads \"hello world\\\"\n        //                             but it appears the comment is wrong, it should be \"hello world\\\\\"\n        let reverse = '\"';\n        let quoteHit = true;\n        for (let i = arg.length; i > 0; i--) {\n            // walk the string in reverse\n            reverse += arg[i - 1];\n            if (quoteHit && arg[i - 1] === '\\\\') {\n                reverse += '\\\\';\n            }\n            else if (arg[i - 1] === '\"') {\n                quoteHit = true;\n                reverse += '\\\\';\n            }\n            else {\n                quoteHit = false;\n            }\n        }\n        reverse += '\"';\n        return reverse.split('').reverse().join('');\n    }\n    _cloneExecOptions(options) {\n        options = options || {};\n        const result = {\n            cwd: options.cwd || process.cwd(),\n            env: options.env || process.env,\n            silent: options.silent || false,\n            windowsVerbatimArguments: options.windowsVerbatimArguments || false,\n            failOnStdErr: options.failOnStdErr || false,\n            ignoreReturnCode: options.ignoreReturnCode || false,\n            delay: options.delay || 10000\n        };\n        result.outStream = options.outStream || process.stdout;\n        result.errStream = options.errStream || process.stderr;\n        return result;\n    }\n    _getSpawnOptions(options, toolPath) {\n        options = options || {};\n        const result = {};\n        result.cwd = options.cwd;\n        result.env = options.env;\n        result['windowsVerbatimArguments'] =\n            options.windowsVerbatimArguments || this._isCmdFile();\n        if (options.windowsVerbatimArguments) {\n            result.argv0 = `\"${toolPath}\"`;\n        }\n        return result;\n    }\n    /**\n     * Exec a tool.\n     * Output will be streamed to the live console.\n     * Returns promise with return code\n     *\n     * @param     tool     path to tool to exec\n     * @param     options  optional exec options.  See ExecOptions\n     * @returns   number\n     */\n    exec() {\n        return __awaiter(this, void 0, void 0, function* () {\n            // root the tool path if it is unrooted and contains relative pathing\n            if (!ioUtil.isRooted(this.toolPath) &&\n                (this.toolPath.includes('/') ||\n                    (IS_WINDOWS && this.toolPath.includes('\\\\')))) {\n                // prefer options.cwd if it is specified, however options.cwd may also need to be rooted\n                this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);\n            }\n            // if the tool is only a file name, then resolve it from the PATH\n            // otherwise verify it exists (add extension on Windows if necessary)\n            this.toolPath = yield io.which(this.toolPath, true);\n            return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n                this._debug(`exec tool: ${this.toolPath}`);\n                this._debug('arguments:');\n                for (const arg of this.args) {\n                    this._debug(`   ${arg}`);\n                }\n                const optionsNonNull = this._cloneExecOptions(this.options);\n                if (!optionsNonNull.silent && optionsNonNull.outStream) {\n                    optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);\n                }\n                const state = new ExecState(optionsNonNull, this.toolPath);\n                state.on('debug', (message) => {\n                    this._debug(message);\n                });\n                if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {\n                    return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));\n                }\n                const fileName = this._getSpawnFileName();\n                const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));\n                let stdbuffer = '';\n                if (cp.stdout) {\n                    cp.stdout.on('data', (data) => {\n                        if (this.options.listeners && this.options.listeners.stdout) {\n                            this.options.listeners.stdout(data);\n                        }\n                        if (!optionsNonNull.silent && optionsNonNull.outStream) {\n                            optionsNonNull.outStream.write(data);\n                        }\n                        stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {\n                            if (this.options.listeners && this.options.listeners.stdline) {\n                                this.options.listeners.stdline(line);\n                            }\n                        });\n                    });\n                }\n                let errbuffer = '';\n                if (cp.stderr) {\n                    cp.stderr.on('data', (data) => {\n                        state.processStderr = true;\n                        if (this.options.listeners && this.options.listeners.stderr) {\n                            this.options.listeners.stderr(data);\n                        }\n                        if (!optionsNonNull.silent &&\n                            optionsNonNull.errStream &&\n                            optionsNonNull.outStream) {\n                            const s = optionsNonNull.failOnStdErr\n                                ? optionsNonNull.errStream\n                                : optionsNonNull.outStream;\n                            s.write(data);\n                        }\n                        errbuffer = this._processLineBuffer(data, errbuffer, (line) => {\n                            if (this.options.listeners && this.options.listeners.errline) {\n                                this.options.listeners.errline(line);\n                            }\n                        });\n                    });\n                }\n                cp.on('error', (err) => {\n                    state.processError = err.message;\n                    state.processExited = true;\n                    state.processClosed = true;\n                    state.CheckComplete();\n                });\n                cp.on('exit', (code) => {\n                    state.processExitCode = code;\n                    state.processExited = true;\n                    this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);\n                    state.CheckComplete();\n                });\n                cp.on('close', (code) => {\n                    state.processExitCode = code;\n                    state.processExited = true;\n                    state.processClosed = true;\n                    this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);\n                    state.CheckComplete();\n                });\n                state.on('done', (error, exitCode) => {\n                    if (stdbuffer.length > 0) {\n                        this.emit('stdline', stdbuffer);\n                    }\n                    if (errbuffer.length > 0) {\n                        this.emit('errline', errbuffer);\n                    }\n                    cp.removeAllListeners();\n                    if (error) {\n                        reject(error);\n                    }\n                    else {\n                        resolve(exitCode);\n                    }\n                });\n                if (this.options.input) {\n                    if (!cp.stdin) {\n                        throw new Error('child process missing stdin');\n                    }\n                    cp.stdin.end(this.options.input);\n                }\n            }));\n        });\n    }\n}\n/**\n * Convert an arg string to an array of args. Handles escaping\n *\n * @param    argString   string of arguments\n * @returns  string[]    array of arguments\n */\nexport function argStringToArray(argString) {\n    const args = [];\n    let inQuotes = false;\n    let escaped = false;\n    let arg = '';\n    function append(c) {\n        // we only escape double quotes.\n        if (escaped && c !== '\"') {\n            arg += '\\\\';\n        }\n        arg += c;\n        escaped = false;\n    }\n    for (let i = 0; i < argString.length; i++) {\n        const c = argString.charAt(i);\n        if (c === '\"') {\n            if (!escaped) {\n                inQuotes = !inQuotes;\n            }\n            else {\n                append(c);\n            }\n            continue;\n        }\n        if (c === '\\\\' && escaped) {\n            append(c);\n            continue;\n        }\n        if (c === '\\\\' && inQuotes) {\n            escaped = true;\n            continue;\n        }\n        if (c === ' ' && !inQuotes) {\n            if (arg.length > 0) {\n                args.push(arg);\n                arg = '';\n            }\n            continue;\n        }\n        append(c);\n    }\n    if (arg.length > 0) {\n        args.push(arg.trim());\n    }\n    return args;\n}\nclass ExecState extends events.EventEmitter {\n    constructor(options, toolPath) {\n        super();\n        this.processClosed = false; // tracks whether the process has exited and stdio is closed\n        this.processError = '';\n        this.processExitCode = 0;\n        this.processExited = false; // tracks whether the process has exited\n        this.processStderr = false; // tracks whether stderr was written to\n        this.delay = 10000; // 10 seconds\n        this.done = false;\n        this.timeout = null;\n        if (!toolPath) {\n            throw new Error('toolPath must not be empty');\n        }\n        this.options = options;\n        this.toolPath = toolPath;\n        if (options.delay) {\n            this.delay = options.delay;\n        }\n    }\n    CheckComplete() {\n        if (this.done) {\n            return;\n        }\n        if (this.processClosed) {\n            this._setResult();\n        }\n        else if (this.processExited) {\n            this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);\n        }\n    }\n    _debug(message) {\n        this.emit('debug', message);\n    }\n    _setResult() {\n        // determine whether there is an error\n        let error;\n        if (this.processExited) {\n            if (this.processError) {\n                error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);\n            }\n            else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {\n                error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);\n            }\n            else if (this.processStderr && this.options.failOnStdErr) {\n                error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);\n            }\n        }\n        // clear the timeout\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n            this.timeout = null;\n        }\n        this.done = true;\n        this.emit('done', error, this.processExitCode);\n    }\n    static HandleTimeout(state) {\n        if (state.done) {\n            return;\n        }\n        if (!state.processClosed && state.processExited) {\n            const message = `The STDIO streams did not close within ${state.delay / 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;\n            state._debug(message);\n        }\n        state._setResult();\n    }\n}\n//# sourceMappingURL=toolrunner.js.map",
     "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nimport { ok } from 'assert';\nimport * as path from 'path';\nimport * as ioUtil from './io-util.js';\n/**\n * Copies a file or folder.\n * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js\n *\n * @param     source    source path\n * @param     dest      destination path\n * @param     options   optional. See CopyOptions.\n */\nexport function cp(source_1, dest_1) {\n    return __awaiter(this, arguments, void 0, function* (source, dest, options = {}) {\n        const { force, recursive, copySourceDirectory } = readCopyOptions(options);\n        const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;\n        // Dest is an existing file, but not forcing\n        if (destStat && destStat.isFile() && !force) {\n            return;\n        }\n        // If dest is an existing directory, should copy inside.\n        const newDest = destStat && destStat.isDirectory() && copySourceDirectory\n            ? path.join(dest, path.basename(source))\n            : dest;\n        if (!(yield ioUtil.exists(source))) {\n            throw new Error(`no such file or directory: ${source}`);\n        }\n        const sourceStat = yield ioUtil.stat(source);\n        if (sourceStat.isDirectory()) {\n            if (!recursive) {\n                throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);\n            }\n            else {\n                yield cpDirRecursive(source, newDest, 0, force);\n            }\n        }\n        else {\n            if (path.relative(source, newDest) === '') {\n                // a file cannot be copied to itself\n                throw new Error(`'${newDest}' and '${source}' are the same file`);\n            }\n            yield copyFile(source, newDest, force);\n        }\n    });\n}\n/**\n * Moves a path.\n *\n * @param     source    source path\n * @param     dest      destination path\n * @param     options   optional. See MoveOptions.\n */\nexport function mv(source_1, dest_1) {\n    return __awaiter(this, arguments, void 0, function* (source, dest, options = {}) {\n        if (yield ioUtil.exists(dest)) {\n            let destExists = true;\n            if (yield ioUtil.isDirectory(dest)) {\n                // If dest is directory copy src into dest\n                dest = path.join(dest, path.basename(source));\n                destExists = yield ioUtil.exists(dest);\n            }\n            if (destExists) {\n                if (options.force == null || options.force) {\n                    yield rmRF(dest);\n                }\n                else {\n                    throw new Error('Destination already exists');\n                }\n            }\n        }\n        yield mkdirP(path.dirname(dest));\n        yield ioUtil.rename(source, dest);\n    });\n}\n/**\n * Remove a path recursively with force\n *\n * @param inputPath path to remove\n */\nexport function rmRF(inputPath) {\n    return __awaiter(this, void 0, void 0, function* () {\n        if (ioUtil.IS_WINDOWS) {\n            // Check for invalid characters\n            // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file\n            if (/[*\"<>|]/.test(inputPath)) {\n                throw new Error('File path must not contain `*`, `\"`, `<`, `>` or `|` on Windows');\n            }\n        }\n        try {\n            // note if path does not exist, error is silent\n            yield ioUtil.rm(inputPath, {\n                force: true,\n                maxRetries: 3,\n                recursive: true,\n                retryDelay: 300\n            });\n        }\n        catch (err) {\n            throw new Error(`File was unable to be removed ${err}`);\n        }\n    });\n}\n/**\n * Make a directory.  Creates the full path with folders in between\n * Will throw if it fails\n *\n * @param   fsPath        path to create\n * @returns Promise\n */\nexport function mkdirP(fsPath) {\n    return __awaiter(this, void 0, void 0, function* () {\n        ok(fsPath, 'a path argument must be provided');\n        yield ioUtil.mkdir(fsPath, { recursive: true });\n    });\n}\n/**\n * Returns path of a tool had the tool actually been invoked.  Resolves via paths.\n * If you check and the tool does not exist, it will throw.\n *\n * @param     tool              name of the tool\n * @param     check             whether to check if tool exists\n * @returns   Promise   path to tool\n */\nexport function which(tool, check) {\n    return __awaiter(this, void 0, void 0, function* () {\n        if (!tool) {\n            throw new Error(\"parameter 'tool' is required\");\n        }\n        // recursive when check=true\n        if (check) {\n            const result = yield which(tool, false);\n            if (!result) {\n                if (ioUtil.IS_WINDOWS) {\n                    throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);\n                }\n                else {\n                    throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);\n                }\n            }\n            return result;\n        }\n        const matches = yield findInPath(tool);\n        if (matches && matches.length > 0) {\n            return matches[0];\n        }\n        return '';\n    });\n}\n/**\n * Returns a list of all occurrences of the given tool on the system path.\n *\n * @returns   Promise  the paths of the tool\n */\nexport function findInPath(tool) {\n    return __awaiter(this, void 0, void 0, function* () {\n        if (!tool) {\n            throw new Error(\"parameter 'tool' is required\");\n        }\n        // build the list of extensions to try\n        const extensions = [];\n        if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) {\n            for (const extension of process.env['PATHEXT'].split(path.delimiter)) {\n                if (extension) {\n                    extensions.push(extension);\n                }\n            }\n        }\n        // if it's rooted, return it if exists. otherwise return empty.\n        if (ioUtil.isRooted(tool)) {\n            const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);\n            if (filePath) {\n                return [filePath];\n            }\n            return [];\n        }\n        // if any path separators, return empty\n        if (tool.includes(path.sep)) {\n            return [];\n        }\n        // build the list of directories\n        //\n        // Note, technically \"where\" checks the current directory on Windows. From a toolkit perspective,\n        // it feels like we should not do this. Checking the current directory seems like more of a use\n        // case of a shell, and the which() function exposed by the toolkit should strive for consistency\n        // across platforms.\n        const directories = [];\n        if (process.env.PATH) {\n            for (const p of process.env.PATH.split(path.delimiter)) {\n                if (p) {\n                    directories.push(p);\n                }\n            }\n        }\n        // find all matches\n        const matches = [];\n        for (const directory of directories) {\n            const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions);\n            if (filePath) {\n                matches.push(filePath);\n            }\n        }\n        return matches;\n    });\n}\nfunction readCopyOptions(options) {\n    const force = options.force == null ? true : options.force;\n    const recursive = Boolean(options.recursive);\n    const copySourceDirectory = options.copySourceDirectory == null\n        ? true\n        : Boolean(options.copySourceDirectory);\n    return { force, recursive, copySourceDirectory };\n}\nfunction cpDirRecursive(sourceDir, destDir, currentDepth, force) {\n    return __awaiter(this, void 0, void 0, function* () {\n        // Ensure there is not a run away recursive copy\n        if (currentDepth >= 255)\n            return;\n        currentDepth++;\n        yield mkdirP(destDir);\n        const files = yield ioUtil.readdir(sourceDir);\n        for (const fileName of files) {\n            const srcFile = `${sourceDir}/${fileName}`;\n            const destFile = `${destDir}/${fileName}`;\n            const srcFileStat = yield ioUtil.lstat(srcFile);\n            if (srcFileStat.isDirectory()) {\n                // Recurse\n                yield cpDirRecursive(srcFile, destFile, currentDepth, force);\n            }\n            else {\n                yield copyFile(srcFile, destFile, force);\n            }\n        }\n        // Change the mode for the newly created directory\n        yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);\n    });\n}\n// Buffered file copy\nfunction copyFile(srcFile, destFile, force) {\n    return __awaiter(this, void 0, void 0, function* () {\n        if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {\n            // unlink/re-link it\n            try {\n                yield ioUtil.lstat(destFile);\n                yield ioUtil.unlink(destFile);\n            }\n            catch (e) {\n                // Try to override file permission\n                if (e.code === 'EPERM') {\n                    yield ioUtil.chmod(destFile, '0666');\n                    yield ioUtil.unlink(destFile);\n                }\n                // other errors = it doesn't exist, no work to do\n            }\n            // Copy over symlink\n            const symlinkFull = yield ioUtil.readlink(srcFile);\n            yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);\n        }\n        else if (!(yield ioUtil.exists(destFile)) || force) {\n            yield ioUtil.copyFile(srcFile, destFile);\n        }\n    });\n}\n//# sourceMappingURL=io.js.map",
     "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nimport * as fs from 'fs';\nimport * as path from 'path';\nexport const { chmod, copyFile, lstat, mkdir, open, readdir, rename, rm, rmdir, stat, symlink, unlink } = fs.promises;\n// export const {open} = 'fs'\nexport const IS_WINDOWS = process.platform === 'win32';\n/**\n * Custom implementation of readlink to ensure Windows junctions\n * maintain trailing backslash for backward compatibility with Node.js < 24\n *\n * In Node.js 20, Windows junctions (directory symlinks) always returned paths\n * with trailing backslashes. Node.js 24 removed this behavior, which breaks\n * code that relied on this format for path operations.\n *\n * This implementation restores the Node 20 behavior by adding a trailing\n * backslash to all junction results on Windows.\n */\nexport function readlink(fsPath) {\n    return __awaiter(this, void 0, void 0, function* () {\n        const result = yield fs.promises.readlink(fsPath);\n        // On Windows, restore Node 20 behavior: add trailing backslash to all results\n        // since junctions on Windows are always directory links\n        if (IS_WINDOWS && !result.endsWith('\\\\')) {\n            return `${result}\\\\`;\n        }\n        return result;\n    });\n}\n// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691\nexport const UV_FS_O_EXLOCK = 0x10000000;\nexport const READONLY = fs.constants.O_RDONLY;\nexport function exists(fsPath) {\n    return __awaiter(this, void 0, void 0, function* () {\n        try {\n            yield stat(fsPath);\n        }\n        catch (err) {\n            if (err.code === 'ENOENT') {\n                return false;\n            }\n            throw err;\n        }\n        return true;\n    });\n}\nexport function isDirectory(fsPath_1) {\n    return __awaiter(this, arguments, void 0, function* (fsPath, useStat = false) {\n        const stats = useStat ? yield stat(fsPath) : yield lstat(fsPath);\n        return stats.isDirectory();\n    });\n}\n/**\n * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:\n * \\, \\hello, \\\\hello\\share, C:, and C:\\hello (and corresponding alternate separator cases).\n */\nexport function isRooted(p) {\n    p = normalizeSeparators(p);\n    if (!p) {\n        throw new Error('isRooted() parameter \"p\" cannot be empty');\n    }\n    if (IS_WINDOWS) {\n        return (p.startsWith('\\\\') || /^[A-Z]:/i.test(p) // e.g. \\ or \\hello or \\\\hello\n        ); // e.g. C: or C:\\hello\n    }\n    return p.startsWith('/');\n}\n/**\n * Best effort attempt to determine whether a file exists and is executable.\n * @param filePath    file path to check\n * @param extensions  additional file extensions to try\n * @return if file exists and is executable, returns the file path. otherwise empty string.\n */\nexport function tryGetExecutablePath(filePath, extensions) {\n    return __awaiter(this, void 0, void 0, function* () {\n        let stats = undefined;\n        try {\n            // test file exists\n            stats = yield stat(filePath);\n        }\n        catch (err) {\n            if (err.code !== 'ENOENT') {\n                // eslint-disable-next-line no-console\n                console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n            }\n        }\n        if (stats && stats.isFile()) {\n            if (IS_WINDOWS) {\n                // on Windows, test for valid extension\n                const upperExt = path.extname(filePath).toUpperCase();\n                if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {\n                    return filePath;\n                }\n            }\n            else {\n                if (isUnixExecutable(stats)) {\n                    return filePath;\n                }\n            }\n        }\n        // try each extension\n        const originalFilePath = filePath;\n        for (const extension of extensions) {\n            filePath = originalFilePath + extension;\n            stats = undefined;\n            try {\n                stats = yield stat(filePath);\n            }\n            catch (err) {\n                if (err.code !== 'ENOENT') {\n                    // eslint-disable-next-line no-console\n                    console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n                }\n            }\n            if (stats && stats.isFile()) {\n                if (IS_WINDOWS) {\n                    // preserve the case of the actual file (since an extension was appended)\n                    try {\n                        const directory = path.dirname(filePath);\n                        const upperName = path.basename(filePath).toUpperCase();\n                        for (const actualName of yield readdir(directory)) {\n                            if (upperName === actualName.toUpperCase()) {\n                                filePath = path.join(directory, actualName);\n                                break;\n                            }\n                        }\n                    }\n                    catch (err) {\n                        // eslint-disable-next-line no-console\n                        console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);\n                    }\n                    return filePath;\n                }\n                else {\n                    if (isUnixExecutable(stats)) {\n                        return filePath;\n                    }\n                }\n            }\n        }\n        return '';\n    });\n}\nfunction normalizeSeparators(p) {\n    p = p || '';\n    if (IS_WINDOWS) {\n        // convert slashes on Windows\n        p = p.replace(/\\//g, '\\\\');\n        // remove redundant slashes\n        return p.replace(/\\\\\\\\+/g, '\\\\');\n    }\n    // remove redundant slashes\n    return p.replace(/\\/\\/+/g, '/');\n}\n// on Mac/Linux, test the execute bit\n//     R   W  X  R  W X R W X\n//   256 128 64 32 16 8 4 2 1\nfunction isUnixExecutable(stats) {\n    return ((stats.mode & 1) > 0 ||\n        ((stats.mode & 8) > 0 &&\n            process.getgid !== undefined &&\n            stats.gid === process.getgid()) ||\n        ((stats.mode & 64) > 0 &&\n            process.getuid !== undefined &&\n            stats.uid === process.getuid()));\n}\n// Get the path of cmd.exe in windows\nexport function getCmdPath() {\n    var _a;\n    return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`;\n}\n//# sourceMappingURL=io-util.js.map",
-    "import * as core from '@actions/core'\nimport * as exec from '@actions/exec'\n\nasync function execElide(bin: string, args?: string[]): Promise {\n  core.debug(`Executing: bin=${bin}, args=${args}`)\n  await exec.exec(`\"${bin}\"`, args)\n}\n\n/**\n * Enumerates available commands which can be run in Elide.\n */\nexport enum ElideCommand {\n  // Run some code.\n  RUN = 'run',\n\n  // Print runtime environment info.\n  INFO = 'info'\n}\n\n/**\n * Enumerates well-known arguments that can be passed to Elide.\n */\nexport enum ElideArgument {\n  VERSION = '--version'\n}\n\n/**\n * Prewarm the provided Elide binary by running a small script.\n *\n * @param bin Path to the Elide binary.\n * @return Promise which resolves when finished.\n */\nexport async function prewarm(bin: string): Promise {\n  core.info(`Prewarming Elide at bin: ${bin}`)\n  return execElide(bin, [ElideCommand.INFO])\n}\n\n/**\n * Print info about the specified Elide runtime binary.\n *\n * @param bin Path to the Elide binary.\n * @return Promise which resolves when finished.\n */\nexport async function info(bin: string): Promise {\n  core.debug(`Printing runtime info at bin: ${bin}`)\n  return execElide(bin, [ElideCommand.INFO])\n}\n\n/**\n * Interrogate the specified binary to obtain the version.\n *\n * @param bin Path to the Elide binary.\n * @return Promise which resolves to the obtained version.\n */\nexport async function obtainVersion(bin: string): Promise {\n  core.debug(`Obtaining version of Elide binary at: ${bin}`)\n  return (await exec.getExecOutput(`\"${bin}\"`, [ElideArgument.VERSION])).stdout\n    .trim()\n    .replaceAll('%0A', '')\n}\n",
-    "import os from 'node:os'\nimport path from 'node:path'\n\n/**\n * Enumerates options and maps them to their well-known option names.\n */\nexport enum OptionName {\n  VERSION = 'version',\n  OS = 'os',\n  ARCH = 'arch',\n  EXPORT_PATH = 'export_path',\n  CUSTOM_URL = 'custom_url',\n  VERSION_TAG = 'version_tag',\n  TOKEN = 'token',\n  INSTALL_PATH = 'install_path',\n  FORCE = 'force'\n}\n\n/**\n * Describes the interface provided by setup action configuration, once interpreted and once\n * defaults are applied.\n */\nexport interface ElideSetupActionOptions {\n  // Desired version of Elide; the special token `latest` resolves the latest version.\n  version: string | 'latest'\n\n  // Whether to setup Elide on the PATH; defaults to `true`.\n  export_path: boolean\n\n  // Desired OS for the downloaded binary. If not provided, the current OS is resolved.\n  os: 'darwin' | 'windows' | 'linux'\n\n  // Desired arch for the downloaded binary. If not provided, the current arch is resolved.\n  arch: 'amd64' | 'aarch64'\n\n  // Directory path where Elide should be installed; if none is provided, conventional location is used for GHA.\n  install_path: string\n\n  // Whether to disable tool and action caching.\n  no_cache: boolean\n\n  // Whether to force installation if a copy of Elide is already installed.\n  force: boolean\n\n  // Whether to pre-warm the installed copy of Elide; defaults to `true`.\n  prewarm: boolean\n\n  // Custom download URL to use in place of interpreted download URLs.\n  custom_url?: string\n\n  // Version tag corresponding to a custom download URL.\n  version_tag?: string\n\n  // Custom GitHub token to use, or the workflow's default token, if any.\n  token?: string\n}\n\n/**\n * Default install prefix on Windows.\n */\nexport const windowsDefaultPath = 'C:\\\\Elide'\n\n/**\n * Default install prefix on macOS and Linux.\n */\nexport const nixDefaultPath = path.resolve(os.homedir(), 'elide')\n\n/**\n * Default Elide configurations path on all platforms.\n */\nexport const configPath = path.resolve(os.homedir(), '.elide')\n\n/* istanbul ignore next */\nconst defaultTargetPath =\n  process.platform === 'win32' ? windowsDefaultPath : nixDefaultPath\n\n/**\n * Defaults to apply to all instances of the Elide setup action.\n */\nexport const defaults: ElideSetupActionOptions = {\n  version: 'latest',\n  no_cache: false,\n  export_path: true,\n  force: false,\n  prewarm: true,\n  os: normalizeOs(process.platform),\n  arch: normalizeArch(process.arch),\n  install_path: defaultTargetPath\n}\n\n/**\n * Normalize the provided OS name or token into a recognized token.\n *\n * @param os Operating system name or token.\n * @return Normalized OS name.\n */\nexport function normalizeOs(os: string): 'darwin' | 'windows' | 'linux' {\n  switch (os.trim().toLowerCase()) {\n    case 'macos':\n      return 'darwin'\n    case 'mac':\n      return 'darwin'\n    case 'darwin':\n      return 'darwin'\n    case 'windows':\n      return 'windows'\n    case 'win':\n      return 'windows'\n    case 'win32':\n      return 'windows'\n    case 'linux':\n      return 'linux'\n  }\n  /* istanbul ignore next */\n  throw new Error(`Unrecognized OS: ${os}`)\n}\n\n/**\n * Normalize the provided architecture name or token into a recognized token.\n *\n * @param arch Architecture name or token.\n * @return Normalized architecture.\n */\nexport function normalizeArch(arch: string): 'amd64' | 'aarch64' {\n  switch (arch.trim().toLowerCase()) {\n    case 'x64':\n      return 'amd64'\n    case 'amd64':\n      return 'amd64'\n    case 'x86_64':\n      return 'amd64'\n    case 'aarch64':\n      return 'aarch64'\n    case 'arm64':\n      return 'aarch64'\n  }\n  /* istanbul ignore next */\n  throw new Error(`Unrecognized architecture: ${arch}`)\n}\n\n/**\n * Build a suite of action options from defaults and overrides provided by the user.\n *\n * @param opts Override options provided by the user.\n * @return Merged set of applicable options.\n */\nexport default function buildOptions(\n  opts?: Partial\n): ElideSetupActionOptions {\n  return {\n    ...defaults,\n    ...opts,\n    // force-normalize the OS and arch\n    os: normalizeOs(opts?.os || defaults.os),\n    arch: normalizeArch(opts?.arch || defaults.arch)\n  } satisfies ElideSetupActionOptions\n}\n",
+    "import * as core from '@actions/core'\nimport * as exec from '@actions/exec'\n\nasync function execElide(bin: string, args?: string[]): Promise {\n  core.debug(`Executing: bin=${bin}, args=${args}`)\n  await exec.exec(`\"${bin}\"`, args)\n}\n\n/**\n * Enumerates available commands which can be run in Elide.\n */\nexport enum ElideCommand {\n  // Run some code.\n  RUN = 'run',\n\n  // Print runtime environment info.\n  INFO = 'info'\n}\n\n/**\n * Enumerates well-known arguments that can be passed to Elide.\n */\nexport enum ElideArgument {\n  VERSION = '--version'\n}\n\n/**\n * Print info about the specified Elide runtime binary.\n * Also serves as a prewarm step (the info command exercises the runtime).\n *\n * @param bin Path to the Elide binary.\n * @return Promise which resolves when finished.\n */\nexport async function elideInfo(bin: string): Promise {\n  core.info(`Running Elide info at bin: ${bin}`)\n  return execElide(bin, [ElideCommand.INFO])\n}\n\n/**\n * Interrogate the specified binary to obtain the version.\n *\n * @param bin Path to the Elide binary.\n * @return Promise which resolves to the obtained version.\n */\nexport async function obtainVersion(bin: string): Promise {\n  core.debug(`Obtaining version of Elide binary at: ${bin}`)\n  return (await exec.getExecOutput(`\"${bin}\"`, [ElideArgument.VERSION])).stdout\n    .trim()\n    .replaceAll('%0A', '')\n}\n",
+    "import { diag } from '@opentelemetry/api';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport { defineIntegration, getClient, hasSpansEnabled, stripDataUrlContent, SEMANTIC_ATTRIBUTE_URL_FULL } from '@sentry/core';\nimport { NODE_VERSION, generateInstrumentOnce, SentryHttpInstrumentation, httpServerIntegration, httpServerSpansIntegration, getRequestUrl, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Http';\n\nconst INSTRUMENTATION_NAME = '@opentelemetry_sentry-patched/instrumentation-http';\n\n// The `http.client.request.created` diagnostics channel, needed for trace propagation,\n// was added in Node 22.12.0 (backported from 23.2.0). Earlier 22.x versions don't have it.\nconst FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL =\n  (NODE_VERSION.major === 22 && NODE_VERSION.minor >= 12) ||\n  (NODE_VERSION.major === 23 && NODE_VERSION.minor >= 2) ||\n  NODE_VERSION.major >= 24;\n\nconst instrumentSentryHttp = generateInstrumentOnce(\n  `${INTEGRATION_NAME}.sentry`,\n  options => {\n    return new SentryHttpInstrumentation(options);\n  },\n);\n\nconst instrumentOtelHttp = generateInstrumentOnce(INTEGRATION_NAME, config => {\n  const instrumentation = new HttpInstrumentation({\n    ...config,\n    // This is hard-coded and can never be overridden by the user\n    disableIncomingRequestInstrumentation: true,\n  });\n\n  // We want to update the logger namespace so we can better identify what is happening here\n  try {\n    instrumentation['_diag'] = diag.createComponentLogger({\n      namespace: INSTRUMENTATION_NAME,\n    });\n    // @ts-expect-error We are writing a read-only property here...\n    instrumentation.instrumentationName = INSTRUMENTATION_NAME;\n  } catch {\n    // ignore errors here...\n  }\n\n  // The OTel HttpInstrumentation (>=0.213.0) has a guard (`_httpPatched`/`_httpsPatched`)\n  // that prevents patching `http`/`https` when loaded by both CJS `require()` and ESM `import`.\n  // In environments like AWS Lambda, the runtime loads `http` via CJS first (for the Runtime API),\n  // and then the user's ESM handler imports `node:http`. The guard blocks ESM patching after CJS,\n  // which breaks HTTP spans for ESM handlers. We disable this guard to allow both to be patched.\n  // TODO(andrei): Remove once https://github.com/open-telemetry/opentelemetry-js/issues/6489 is fixed.\n  try {\n    const noopDescriptor = { get: () => false, set: () => {} };\n    Object.defineProperty(instrumentation, '_httpPatched', noopDescriptor);\n    Object.defineProperty(instrumentation, '_httpsPatched', noopDescriptor);\n  } catch {\n    // ignore errors here...\n  }\n\n  return instrumentation;\n});\n\n/** Exported only for tests. */\nfunction _shouldUseOtelHttpInstrumentation(\n  options,\n  clientOptions = {},\n) {\n  // If `spans` is passed in, it takes precedence\n  // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n  if (typeof options.spans === 'boolean') {\n    return options.spans;\n  }\n\n  if (clientOptions.skipOpenTelemetrySetup) {\n    return false;\n  }\n\n  // IMPORTANT: We only disable span instrumentation when spans are not enabled _and_ we are on a Node version\n  // that fully supports the necessary diagnostics channels for trace propagation\n  if (!hasSpansEnabled(clientOptions) && FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs and spans for outgoing HTTP requests which will be attached to the currently active span.\n */\nconst httpIntegration = defineIntegration((options = {}) => {\n  const spans = options.spans ?? true;\n  const disableIncomingRequestSpans = options.disableIncomingRequestSpans;\n\n  const serverOptions = {\n    sessions: options.trackIncomingRequestsAsSessions,\n    sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n    ignoreRequestBody: options.ignoreIncomingRequestBody,\n    maxRequestBodySize: options.maxIncomingRequestBodySize,\n  } ;\n\n  const serverSpansOptions = {\n    ignoreIncomingRequests: options.ignoreIncomingRequests,\n    ignoreStaticAssets: options.ignoreStaticAssets,\n    ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n    instrumentation: options.instrumentation,\n    onSpanCreated: options.incomingRequestSpanHook,\n  } ;\n\n  const server = httpServerIntegration(serverOptions);\n  const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n  const enableServerSpans = spans && !disableIncomingRequestSpans;\n\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      const clientOptions = client.getOptions();\n\n      if (enableServerSpans && hasSpansEnabled(clientOptions)) {\n        serverSpans.setup(client);\n      }\n    },\n    setupOnce() {\n      const clientOptions = (getClient()?.getOptions() || {}) ;\n      const useOtelHttpInstrumentation = _shouldUseOtelHttpInstrumentation(options, clientOptions);\n\n      server.setupOnce();\n\n      const sentryHttpInstrumentationOptions = {\n        breadcrumbs: options.breadcrumbs,\n        propagateTraceInOutgoingRequests:\n          typeof options.tracePropagation === 'boolean'\n            ? options.tracePropagation\n            : FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL || !useOtelHttpInstrumentation,\n        createSpansForOutgoingRequests: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n        spans: options.spans,\n        ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n        outgoingRequestHook: (span, request) => {\n          // Sanitize data URLs to prevent long base64 strings in span attributes\n          const url = getRequestUrl(request);\n          if (url.startsWith('data:')) {\n            const sanitizedUrl = stripDataUrlContent(url);\n            span.setAttribute('http.url', sanitizedUrl);\n            span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n            span.updateName(`${request.method || 'GET'} ${sanitizedUrl}`);\n          }\n\n          options.instrumentation?.requestHook?.(span, request);\n        },\n        outgoingResponseHook: options.instrumentation?.responseHook,\n        outgoingRequestApplyCustomAttributes: options.instrumentation?.applyCustomAttributesOnSpan,\n      } ;\n\n      // This is Sentry-specific instrumentation for outgoing request breadcrumbs & trace propagation\n      instrumentSentryHttp(sentryHttpInstrumentationOptions);\n\n      // This is the \"regular\" OTEL instrumentation that emits outgoing request spans\n      if (useOtelHttpInstrumentation) {\n        const instrumentationConfig = getConfigWithDefaults(options);\n        instrumentOtelHttp(instrumentationConfig);\n      }\n    },\n    processEvent(event) {\n      // Note: We always run this, even if spans are disabled\n      // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n      return serverSpans.processEvent(event);\n    },\n  };\n});\n\nfunction getConfigWithDefaults(options = {}) {\n  const instrumentationConfig = {\n    // This is handled by the SentryHttpInstrumentation on Node 22+\n    disableOutgoingRequestInstrumentation: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n\n    ignoreOutgoingRequestHook: request => {\n      const url = getRequestUrl(request);\n\n      if (!url) {\n        return false;\n      }\n\n      const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n      if (_ignoreOutgoingRequests?.(url, request)) {\n        return true;\n      }\n\n      return false;\n    },\n\n    requireParentforOutgoingSpans: false,\n    requestHook: (span, req) => {\n      addOriginToSpan(span, 'auto.http.otel.http');\n\n      // Sanitize data URLs to prevent long base64 strings in span attributes\n      const url = getRequestUrl(req );\n      if (url.startsWith('data:')) {\n        const sanitizedUrl = stripDataUrlContent(url);\n        span.setAttribute('http.url', sanitizedUrl);\n        span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n        span.updateName(`${(req ).method || 'GET'} ${sanitizedUrl}`);\n      }\n\n      options.instrumentation?.requestHook?.(span, req);\n    },\n    responseHook: (span, res) => {\n      options.instrumentation?.responseHook?.(span, res);\n    },\n    applyCustomAttributesOnSpan: (\n      span,\n      request,\n      response,\n    ) => {\n      options.instrumentation?.applyCustomAttributesOnSpan?.(span, request, response);\n    },\n  } ;\n\n  return instrumentationConfig;\n}\n\nexport { _shouldUseOtelHttpInstrumentation, httpIntegration, instrumentOtelHttp, instrumentSentryHttp };\n//# sourceMappingURL=http.js.map\n",
+    "/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n",
+    "// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n  switch (objectToString.call(wat)) {\n    case '[object Error]':\n    case '[object Exception]':\n    case '[object DOMException]':\n    case '[object WebAssembly.Exception]':\n      return true;\n    default:\n      return isInstanceOf(wat, Error);\n  }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n  return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n  return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n  return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n  return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n  return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isParameterizedString(wat) {\n  return (\n    typeof wat === 'object' &&\n    wat !== null &&\n    '__sentry_template_string__' in wat &&\n    '__sentry_template_values__' in wat\n  );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n  return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n  return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n  return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n  return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n  return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return Boolean(wat?.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n  return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\n// TODO: fix in v11, convert any to unknown\n// export function isInstanceOf(wat: unknown, base: { new (...args: any[]): T }): wat is T {\nfunction isInstanceOf(wat, base) {\n  try {\n    return wat instanceof base;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel or a VNode.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isVueViewModel(wat) {\n  // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n  // We also need to check for __v_isVNode because Vue 3 component render instances have an internal __v_isVNode property.\n  return !!(\n    typeof wat === 'object' &&\n    wat !== null &&\n    ((wat ).__isVue || (wat )._isVue || (wat ).__v_isVNode)\n  );\n}\n\n/**\n * Checks whether the given parameter is a Standard Web API Request instance.\n *\n * Returns false if Request is not available in the current runtime.\n */\nfunction isRequest(request) {\n  return typeof Request !== 'undefined' && isInstanceOf(request, Request);\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isRequest, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n",
+    "/** Internal global with common properties and Sentry extensions  */\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ = globalThis ;\n\nexport { GLOBAL_OBJ };\n//# sourceMappingURL=worldwide.js.map\n",
+    "import { isString } from './is.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n  elem,\n  options = {},\n) {\n  if (!elem) {\n    return '';\n  }\n\n  // try/catch both:\n  // - accessing event.target (see getsentry/raven-js#838, #768)\n  // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n  // - can throw an exception in some circumstances.\n  try {\n    let currentElem = elem ;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs);\n      // bail out if\n      // - nextStr is the 'html' element\n      // - the length of the string that would be created exceeds maxStringLength\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n        break;\n      }\n\n      out.push(nextStr);\n\n      len += nextStr.length;\n      currentElem = currentElem.parentNode;\n    }\n\n    return out.reverse().join(separator);\n  } catch {\n    return '';\n  }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n  const elem = el\n\n;\n\n  const out = [];\n\n  if (!elem?.tagName) {\n    return '';\n  }\n\n  // @ts-expect-error WINDOW has HTMLElement\n  if (WINDOW.HTMLElement) {\n    // If using the component name annotation plugin, this value may be available on the DOM node\n    if (elem instanceof HTMLElement && elem.dataset) {\n      if (elem.dataset['sentryComponent']) {\n        return elem.dataset['sentryComponent'];\n      }\n      if (elem.dataset['sentryElement']) {\n        return elem.dataset['sentryElement'];\n      }\n    }\n  }\n\n  out.push(elem.tagName.toLowerCase());\n\n  // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n  const keyAttrPairs = keyAttrs?.length\n    ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n    : null;\n\n  if (keyAttrPairs?.length) {\n    keyAttrPairs.forEach(keyAttrPair => {\n      out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n    });\n  } else {\n    if (elem.id) {\n      out.push(`#${elem.id}`);\n    }\n\n    const className = elem.className;\n    if (className && isString(className)) {\n      const classes = className.split(/\\s+/);\n      for (const c of classes) {\n        out.push(`.${c}`);\n      }\n    }\n  }\n  for (const k of ['aria-label', 'type', 'name', 'title', 'alt']) {\n    const attr = elem.getAttribute(k);\n    if (attr) {\n      out.push(`[${k}=\"${attr}\"]`);\n    }\n  }\n\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n  try {\n    return WINDOW.document.location.href;\n  } catch {\n    return '';\n  }\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nfunction getComponentName(elem) {\n  // @ts-expect-error WINDOW has HTMLElement\n  if (!WINDOW.HTMLElement) {\n    return null;\n  }\n\n  let currentElem = elem ;\n  const MAX_TRAVERSE_HEIGHT = 5;\n  for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n    if (!currentElem) {\n      return null;\n    }\n\n    if (currentElem instanceof HTMLElement) {\n      if (currentElem.dataset['sentryComponent']) {\n        return currentElem.dataset['sentryComponent'];\n      }\n      if (currentElem.dataset['sentryElement']) {\n        return currentElem.dataset['sentryElement'];\n      }\n    }\n\n    currentElem = currentElem.parentNode;\n  }\n\n  return null;\n}\n\nexport { getComponentName, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n",
+    "// This is a magic string replaced by rollup\n\nconst SDK_VERSION = \"10.46.0\" ;\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n",
+    "import { SDK_VERSION } from './utils/version.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n  // This ensures a Sentry carrier exists\n  getSentryCarrier(GLOBAL_OBJ);\n  return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nfunction getSentryCarrier(carrier) {\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n  // For now: First SDK that sets the .version property wins\n  __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n  // Intentionally populating and returning the version of \"this\" SDK instance\n  // rather than what's set in .version so that \"this\" SDK always gets its carrier\n  return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__[]` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(\n  name,\n  creator,\n  obj = GLOBAL_OBJ,\n) {\n  const __SENTRY__ = (obj.__SENTRY__ = obj.__SENTRY__ || {});\n  const carrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n  // Note: We do not want to set `carrier.version` here, as this may be called before any `init` is called, e.g. for the default scopes\n  return carrier[name] || (carrier[name] = creator());\n}\n\nexport { getGlobalSingleton, getMainCarrier, getSentryCarrier };\n//# sourceMappingURL=carrier.js.map\n",
+    "import { getGlobalSingleton } from '../carrier.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst CONSOLE_LEVELS = [\n  'debug',\n  'info',\n  'warn',\n  'error',\n  'log',\n  'assert',\n  'trace',\n] ;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nconst originalConsoleMethods\n\n = {};\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const console = GLOBAL_OBJ.console;\n  const wrappedFuncs = {};\n\n  const wrappedLevels = Object.keys(originalConsoleMethods) ;\n\n  // Restore all wrapped console methods\n  wrappedLevels.forEach(level => {\n    const originalConsoleMethod = originalConsoleMethods[level];\n    wrappedFuncs[level] = console[level] ;\n    console[level] = originalConsoleMethod ;\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    wrappedLevels.forEach(level => {\n      console[level] = wrappedFuncs[level] ;\n    });\n  }\n}\n\nfunction enable() {\n  _getLoggerSettings().enabled = true;\n}\n\nfunction disable() {\n  _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled() {\n  return _getLoggerSettings().enabled;\n}\n\nfunction log(...args) {\n  _maybeLog('log', ...args);\n}\n\nfunction warn(...args) {\n  _maybeLog('warn', ...args);\n}\n\nfunction error(...args) {\n  _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level, ...args) {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n\n  if (isEnabled()) {\n    consoleSandbox(() => {\n      GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n    });\n  }\n}\n\nfunction _getLoggerSettings() {\n  if (!DEBUG_BUILD) {\n    return { enabled: false };\n  }\n\n  return getGlobalSingleton('loggerSettings', () => ({ enabled: false }));\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n */\nconst debug = {\n  /** Enable logging. */\n  enable,\n  /** Disable logging. */\n  disable,\n  /** Check if logging is enabled. */\n  isEnabled,\n  /** Log a message. */\n  log,\n  /** Log a warning. */\n  warn,\n  /** Log an error. */\n  error,\n} ;\n\nexport { CONSOLE_LEVELS, consoleSandbox, debug, originalConsoleMethods };\n//# sourceMappingURL=debug-logger.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { htmlTreeAsString } from './browser.js';\nimport { debug } from './debug-logger.js';\nimport { isError, isEvent, isInstanceOf, isPrimitive, isElement } from './is.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * If the method on the passed object is not a function, the wrapper will not be applied.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n  if (!(name in source)) {\n    return;\n  }\n\n  // explicitly casting to unknown because we don't know the type of the method initially at all\n  const original = source[name] ;\n\n  if (typeof original !== 'function') {\n    return;\n  }\n\n  const wrapped = replacementFactory(original) ;\n\n  // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n  // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n  if (typeof wrapped === 'function') {\n    markFunctionWrapped(wrapped, original);\n  }\n\n  try {\n    source[name] = wrapped;\n  } catch {\n    DEBUG_BUILD && debug.log(`Failed to replace method \"${name}\" in object`, source);\n  }\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n  try {\n    Object.defineProperty(obj, name, {\n      // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n      value,\n      writable: true,\n      configurable: true,\n    });\n  } catch {\n    DEBUG_BUILD && debug.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n  }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n  try {\n    const proto = original.prototype || {};\n    wrapped.prototype = original.prototype = proto;\n    addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n  } catch {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available.  See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction getOriginalFunction(func) {\n  return func.__sentry_original__;\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argument itself, when value is neither an Event nor\n *  an Error.\n */\nfunction convertToPlainObject(value)\n\n {\n  if (isError(value)) {\n    return {\n      message: value.message,\n      name: value.name,\n      stack: value.stack,\n      ...getOwnProperties(value),\n    };\n  } else if (isEvent(value)) {\n    const newObj\n\n = {\n      type: value.type,\n      target: serializeEventTarget(value.target),\n      currentTarget: serializeEventTarget(value.currentTarget),\n      ...getOwnProperties(value),\n    };\n\n    if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n      newObj.detail = value.detail;\n    }\n\n    return newObj;\n  } else {\n    return value;\n  }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n  try {\n    return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n  } catch {\n    return '';\n  }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n  if (typeof obj === 'object' && obj !== null) {\n    return Object.fromEntries(Object.entries(obj));\n  }\n  return {};\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception) {\n  const keys = Object.keys(convertToPlainObject(exception));\n  keys.sort();\n\n  return !keys[0] ? '[object has no keys]' : keys.join(', ');\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n *\n * @deprecated This function is no longer used by the SDK and will be removed in a future major version.\n */\nfunction dropUndefinedKeys(inputValue) {\n  // This map keeps track of what already visited nodes map to.\n  // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n  // references as the input object.\n  const memoizationMap = new Map();\n\n  // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n  return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n  // Early return for primitive values\n  if (inputValue === null || typeof inputValue !== 'object') {\n    return inputValue;\n  }\n\n  // Check memo map first for all object types\n  const memoVal = memoizationMap.get(inputValue);\n  if (memoVal !== undefined) {\n    return memoVal ;\n  }\n\n  // handle arrays\n  if (Array.isArray(inputValue)) {\n    const returnValue = [];\n    // Store mapping to handle circular references\n    memoizationMap.set(inputValue, returnValue);\n\n    inputValue.forEach(value => {\n      returnValue.push(_dropUndefinedKeys(value, memoizationMap));\n    });\n\n    return returnValue ;\n  }\n\n  if (isPojo(inputValue)) {\n    const returnValue = {};\n    // Store mapping to handle circular references\n    memoizationMap.set(inputValue, returnValue);\n\n    const keys = Object.keys(inputValue);\n\n    keys.forEach(key => {\n      const val = inputValue[key];\n      if (val !== undefined) {\n        returnValue[key] = _dropUndefinedKeys(val, memoizationMap);\n      }\n    });\n\n    return returnValue ;\n  }\n\n  // For other object types, return as is\n  return inputValue;\n}\n\nfunction isPojo(input) {\n  // Plain objects have Object as constructor or no constructor\n  const constructor = (input ).constructor;\n  return constructor === Object || constructor === undefined;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n  let objectified;\n  switch (true) {\n    // this will catch both undefined and null\n    case wat == undefined:\n      objectified = new String(wat);\n      break;\n\n    // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n    // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n    // an object in order to wrap it.\n    case typeof wat === 'symbol' || typeof wat === 'bigint':\n      objectified = Object(wat);\n      break;\n\n    // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n    case isPrimitive(wat):\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      objectified = new (wat ).constructor(wat);\n      break;\n\n    // by process of elimination, at this point we know that `wat` must already be an object\n    default:\n      objectified = wat;\n      break;\n  }\n  return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify };\n//# sourceMappingURL=object.js.map\n",
+    "import { addNonEnumerableProperty } from '../utils/object.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\n/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */\nfunction wrapScopeWithWeakRef(scope) {\n  try {\n    // @ts-expect-error - WeakRef is not available in all environments\n    const WeakRefClass = GLOBAL_OBJ.WeakRef;\n    if (typeof WeakRefClass === 'function') {\n      return new WeakRefClass(scope);\n    }\n  } catch {\n    // WeakRef not available or failed to create\n    // We'll fall back to a direct scope\n  }\n\n  return scope;\n}\n\n/** Try to unwrap a scope from a potential WeakRef wrapper. */\nfunction unwrapScopeFromWeakRef(scopeRef) {\n  if (!scopeRef) {\n    return undefined;\n  }\n\n  if (typeof scopeRef === 'object' && 'deref' in scopeRef && typeof scopeRef.deref === 'function') {\n    try {\n      return scopeRef.deref();\n    } catch {\n      return undefined;\n    }\n  }\n\n  // Fallback to a direct scope\n  return scopeRef ;\n}\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nfunction setCapturedScopesOnSpan(span, scope, isolationScope) {\n  if (span) {\n    addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, wrapScopeWithWeakRef(isolationScope));\n    // We don't wrap the scope with a WeakRef here because webkit aggressively garbage collects\n    // and scopes are not held in memory for long periods of time.\n    addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n  }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n * If WeakRef was used and scopes have been garbage collected, returns undefined for those scopes.\n */\nfunction getCapturedScopesOnSpan(span) {\n  const spanWithScopes = span ;\n\n  return {\n    scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n    isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]),\n  };\n}\n\nexport { getCapturedScopesOnSpan, setCapturedScopesOnSpan };\n//# sourceMappingURL=utils.js.map\n",
+    "const SPAN_STATUS_UNSET = 0;\nconst SPAN_STATUS_OK = 1;\nconst SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or internal_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nfunction getSpanStatusFromHttpCode(httpStatus) {\n  if (httpStatus < 400 && httpStatus >= 100) {\n    return { code: SPAN_STATUS_OK };\n  }\n\n  if (httpStatus >= 400 && httpStatus < 500) {\n    switch (httpStatus) {\n      case 401:\n        return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n      case 403:\n        return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n      case 404:\n        return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n      case 409:\n        return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n      case 413:\n        return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n      case 429:\n        return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n      case 499:\n        return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n    }\n  }\n\n  if (httpStatus >= 500 && httpStatus < 600) {\n    switch (httpStatus) {\n      case 501:\n        return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n      case 503:\n        return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n      case 504:\n        return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n    }\n  }\n\n  return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nfunction setHttpStatus(span, httpStatus) {\n  span.setAttribute('http.response.status_code', httpStatus);\n\n  const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n  if (spanStatus.message !== 'unknown_error') {\n    span.setStatus(spanStatus);\n  }\n}\n\nexport { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET, getSpanStatusFromHttpCode, setHttpStatus };\n//# sourceMappingURL=spanstatus.js.map\n",
+    "import { GLOBAL_OBJ } from './worldwide.js';\n\n// undefined = not yet resolved, null = no runner found, function = runner found\nlet RESOLVED_RUNNER;\n\n/**\n * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts\n */\nfunction withRandomSafeContext(cb) {\n  // Skips future symbol lookups if we've already resolved (or attempted to resolve) the runner once\n  if (RESOLVED_RUNNER !== undefined) {\n    return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb();\n  }\n\n  const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__');\n  const globalWithSymbol = GLOBAL_OBJ;\n\n  if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === 'function') {\n    RESOLVED_RUNNER = globalWithSymbol[sym];\n    return RESOLVED_RUNNER(cb);\n  }\n\n  RESOLVED_RUNNER = null;\n  return cb();\n}\n\n/**\n * Identical to Math.random() but wrapped in withRandomSafeContext\n * to ensure safe random number generation in certain contexts (e.g., Next.js Cache Components).\n */\nfunction safeMathRandom() {\n  return withRandomSafeContext(() => Math.random());\n}\n\n/**\n * Identical to Date.now() but wrapped in withRandomSafeContext\n * to ensure safe time value generation in certain contexts (e.g., Next.js Cache Components).\n */\nfunction safeDateNow() {\n  return withRandomSafeContext(() => Date.now());\n}\n\nexport { safeDateNow, safeMathRandom, withRandomSafeContext };\n//# sourceMappingURL=randomSafeContext.js.map\n",
+    "const STACKTRACE_FRAME_LIMIT = 50;\nconst UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n  return (stack, skipFirstLines = 0, framesToPop = 0) => {\n    const frames = [];\n    const lines = stack.split('\\n');\n\n    for (let i = skipFirstLines; i < lines.length; i++) {\n      let line = lines[i] ;\n      // Truncate lines over 1kb because many of the regular expressions use\n      // backtracking which results in run time that increases exponentially\n      // with input size. Huge strings can result in hangs/Denial of Service:\n      // https://github.com/getsentry/sentry-javascript/issues/2286\n      if (line.length > 1024) {\n        line = line.slice(0, 1024);\n      }\n\n      // https://github.com/getsentry/sentry-javascript/issues/5459\n      // Remove webpack (error: *) wrappers\n      const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n      // https://github.com/getsentry/sentry-javascript/issues/7813\n      // Skip Error: lines\n      if (cleanedLine.match(/\\S*Error: /)) {\n        continue;\n      }\n\n      for (const parser of sortedParsers) {\n        const frame = parser(cleanedLine);\n\n        if (frame) {\n          frames.push(frame);\n          break;\n        }\n      }\n\n      if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n        break;\n      }\n    }\n\n    return stripSentryFramesAndReverse(frames.slice(framesToPop));\n  };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n  if (Array.isArray(stackParser)) {\n    return createStackParser(...stackParser);\n  }\n  return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n  if (!stack.length) {\n    return [];\n  }\n\n  const localStack = Array.from(stack);\n\n  // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n  if (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n    localStack.pop();\n  }\n\n  // Reversing in the middle of the procedure allows us to just pop the values off the stack\n  localStack.reverse();\n\n  // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n  if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n    localStack.pop();\n\n    // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n    // is produced within the scope itself, making it:\n    //\n    //   Sentry.captureException()\n    //   scope.captureException()\n    //\n    // instead of just the top `Sentry` call itself.\n    // This forces us to possibly strip an additional frame in the exact same was as above.\n    if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n      localStack.pop();\n    }\n  }\n\n  return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n    ...frame,\n    filename: frame.filename || getLastStackFrame(localStack).filename,\n    function: frame.function || UNKNOWN_FUNCTION,\n  }));\n}\n\nfunction getLastStackFrame(arr) {\n  return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n  try {\n    if (!fn || typeof fn !== 'function') {\n      return defaultFunctionName;\n    }\n    return fn.name || defaultFunctionName;\n  } catch {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    return defaultFunctionName;\n  }\n}\n\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nfunction getFramesFromEvent(event) {\n  const exception = event.exception;\n\n  if (exception) {\n    const frames = [];\n    try {\n      // @ts-expect-error Object could be undefined\n      exception.values.forEach(value => {\n        // @ts-expect-error Value could be undefined\n        if (value.stacktrace.frames) {\n          // @ts-expect-error Value could be undefined\n          frames.push(...value.stacktrace.frames);\n        }\n      });\n      return frames;\n    } catch {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n\n/**\n * Get the internal name of an internal Vue value, to represent it in a stacktrace.\n *\n * @param value The value to get the internal name of.\n */\nfunction getVueInternalName(value) {\n  // Check if it's a VNode (has __v_isVNode) or a component instance (has _isVue/__isVue)\n  const isVNode = '__v_isVNode' in value && value.__v_isVNode;\n\n  return isVNode ? '[VueVNode]' : '[VueViewModel]';\n}\n\n/**\n * Normalizes stack line paths by removing file:// prefix and leading slashes for Windows paths\n */\nfunction normalizeStackTracePath(path) {\n  let filename = path?.startsWith('file://') ? path.slice(7) : path;\n  // If it's a Windows path, trim the leading slash so that `/C:/foo` becomes `C:/foo`\n  if (filename?.match(/\\/[A-Z]:/)) {\n    filename = filename.slice(1);\n  }\n  return filename;\n}\n\nexport { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, getVueInternalName, normalizeStackTracePath, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n",
+    "import { isString, isRegExp, isVueViewModel } from './is.js';\nimport { getVueInternalName } from './stacktrace.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n  if (typeof str !== 'string' || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    // eslint-disable-next-line no-param-reassign\n    colno = lineLength;\n  }\n\n  let start = Math.max(colno - 60, 0);\n  if (start < 5) {\n    start = 0;\n  }\n\n  let end = Math.min(start + 140, lineLength);\n  if (end > lineLength - 5) {\n    end = lineLength;\n  }\n  if (end === lineLength) {\n    start = Math.max(end - 140, 0);\n  }\n\n  newLine = newLine.slice(start, end);\n  if (start > 0) {\n    newLine = `'{snip} ${newLine}`;\n  }\n  if (end < lineLength) {\n    newLine += ' {snip}';\n  }\n\n  return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n  if (!Array.isArray(input)) {\n    return '';\n  }\n\n  const output = [];\n  // eslint-disable-next-line typescript/prefer-for-of\n  for (let i = 0; i < input.length; i++) {\n    const value = input[i];\n    try {\n      // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n      // console warnings. This happens when a Vue template is rendered with\n      // an undeclared variable, which we try to stringify, ultimately causing\n      // Vue to issue another warning which repeats indefinitely.\n      // see: https://github.com/getsentry/sentry-javascript/pull/8981\n      if (isVueViewModel(value)) {\n        output.push(getVueInternalName(value));\n      } else {\n        output.push(String(value));\n      }\n    } catch {\n      output.push('[value cannot be serialized]');\n    }\n  }\n\n  return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n  value,\n  pattern,\n  requireExactStringMatch = false,\n) {\n  if (!isString(value)) {\n    return false;\n  }\n\n  if (isRegExp(pattern)) {\n    return pattern.test(value);\n  }\n  if (isString(pattern)) {\n    return requireExactStringMatch ? value === pattern : value.includes(pattern);\n  }\n\n  return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n  testString,\n  patterns = [],\n  requireExactStringMatch = false,\n) {\n  return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n",
+    "import { addNonEnumerableProperty } from './object.js';\nimport { withRandomSafeContext, safeMathRandom } from './randomSafeContext.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nfunction getCrypto() {\n  const gbl = GLOBAL_OBJ ;\n  return gbl.crypto || gbl.msCrypto;\n}\n\nlet emptyUuid;\n\nfunction getRandomByte() {\n  return safeMathRandom() * 16;\n}\n\n/**\n * UUID4 generator\n * @param crypto Object that provides the crypto API.\n * @returns string Generated UUID4.\n */\nfunction uuid4(crypto = getCrypto()) {\n  try {\n    if (crypto?.randomUUID) {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      return withRandomSafeContext(() => crypto.randomUUID()).replace(/-/g, '');\n    }\n  } catch {\n    // some runtimes can crash invoking crypto\n    // https://github.com/getsentry/sentry-javascript/issues/8935\n  }\n\n  if (!emptyUuid) {\n    // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n    // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n    emptyUuid = ([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11;\n  }\n\n  return emptyUuid.replace(/[018]/g, c =>\n    // eslint-disable-next-line no-bitwise\n    ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n  );\n}\n\nfunction getFirstException(event) {\n  return event.exception?.values?.[0];\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n  const { message, event_id: eventId } = event;\n  if (message) {\n    return message;\n  }\n\n  const firstException = getFirstException(event);\n  if (firstException) {\n    if (firstException.type && firstException.value) {\n      return `${firstException.type}: ${firstException.value}`;\n    }\n    return firstException.type || firstException.value || eventId || '';\n  }\n  return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n  const exception = (event.exception = event.exception || {});\n  const values = (exception.values = exception.values || []);\n  const firstException = (values[0] = values[0] || {});\n  if (!firstException.value) {\n    firstException.value = value || '';\n  }\n  if (!firstException.type) {\n    firstException.type = type || 'Error';\n  }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n  const firstException = getFirstException(event);\n  if (!firstException) {\n    return;\n  }\n\n  const defaultMechanism = { type: 'generic', handled: true };\n  const currentMechanism = firstException.mechanism;\n  firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n  if (newMechanism && 'data' in newMechanism) {\n    const mergedData = { ...currentMechanism?.data, ...newMechanism.data };\n    firstException.mechanism.data = mergedData;\n  }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n  /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\nfunction _parseInt(input) {\n  return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n  const match = input.match(SEMVER_REGEXP) || [];\n  const major = _parseInt(match[1]);\n  const minor = _parseInt(match[2]);\n  const patch = _parseInt(match[3]);\n  return {\n    buildmetadata: match[5],\n    major: isNaN(major) ? undefined : major,\n    minor: isNaN(minor) ? undefined : minor,\n    patch: isNaN(patch) ? undefined : patch,\n    prerelease: match[4],\n  };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n  // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n  if (frame.lineno === undefined) {\n    return;\n  }\n\n  const maxLines = lines.length;\n  const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n  frame.pre_context = lines\n    .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n    .map((line) => snipLine(line, 0));\n\n  // We guard here to ensure this is not larger than the existing number of lines\n  const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  frame.context_line = snipLine(lines[lineIndex], frame.colno || 0);\n\n  frame.post_context = lines\n    .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n    .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n  if (isAlreadyCaptured(exception)) {\n    return true;\n  }\n\n  try {\n    // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n    // `ExtraErrorData` integration\n    addNonEnumerableProperty(exception , '__sentry_captured__', true);\n  } catch {\n    // `exception` is a primitive, so we can't mark it seen\n  }\n\n  return false;\n}\n\n/**\n * Checks whether we've already captured the given exception (note: not an identical exception - the very object).\n * It is considered already captured if it has the `__sentry_captured__` property set to `true`.\n *\n * @internal Only considered for internal usage\n */\nfunction isAlreadyCaptured(exception) {\n  try {\n    return (exception ).__sentry_captured__;\n  } catch {} // eslint-disable-line no-empty\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, isAlreadyCaptured, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n",
+    "import { safeDateNow, withRandomSafeContext } from './randomSafeContext.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nfunction dateTimestampInSeconds() {\n  return safeDateNow() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc() {\n  const { performance } = GLOBAL_OBJ ;\n  // Some browser and environments don't have a performance or timeOrigin, so we fallback to\n  // using Date.now() to compute the starting time.\n  if (!performance?.now || !performance.timeOrigin) {\n    return dateTimestampInSeconds;\n  }\n\n  const timeOrigin = performance.timeOrigin;\n\n  // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n  // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n  //\n  // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n  // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n  // correct for this.\n  // See: https://github.com/getsentry/sentry-javascript/issues/2590\n  // See: https://github.com/mdn/content/issues/4713\n  // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n  return () => {\n    return (timeOrigin + withRandomSafeContext(() => performance.now())) / ONE_SECOND_IN_MS;\n  };\n}\n\nlet _cachedTimestampInSeconds;\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nfunction timestampInSeconds() {\n  // We store this in a closure so that we don't have to create a new function every time this is called.\n  const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc());\n  return func();\n}\n\n/**\n * Cached result of getBrowserTimeOrigin.\n */\nlet cachedTimeOrigin = null;\n\n/**\n * Gets the time origin and the mode used to determine it.\n *\n * Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n * performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n * data as reliable if they are within a reasonable threshold of the current time.\n *\n * TODO: move to `@sentry/browser-utils` package.\n */\nfunction getBrowserTimeOrigin() {\n  const { performance } = GLOBAL_OBJ ;\n  if (!performance?.now) {\n    return undefined;\n  }\n\n  const threshold = 300000; // 5 minutes in milliseconds\n  const performanceNow = withRandomSafeContext(() => performance.now());\n  const dateNow = safeDateNow();\n\n  const timeOrigin = performance.timeOrigin;\n  if (typeof timeOrigin === 'number') {\n    const timeOriginDelta = Math.abs(timeOrigin + performanceNow - dateNow);\n    if (timeOriginDelta < threshold) {\n      return timeOrigin;\n    }\n  }\n\n  // TODO: Remove all code related to `performance.timing.navigationStart` once we drop support for Safari 14.\n  // `performance.timeSince` is available in Safari 15.\n  // see: https://caniuse.com/mdn-api_performance_timeorigin\n\n  // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n  // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n  // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n  // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n  // Date API.\n  // eslint-disable-next-line deprecation/deprecation\n  const navigationStart = performance.timing?.navigationStart;\n  if (typeof navigationStart === 'number') {\n    const navigationStartDelta = Math.abs(navigationStart + performanceNow - dateNow);\n    if (navigationStartDelta < threshold) {\n      return navigationStart;\n    }\n  }\n\n  // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to subtracting\n  // `performance.now()` from `Date.now()`.\n  return dateNow - performanceNow;\n}\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nfunction browserPerformanceTimeOrigin() {\n  if (cachedTimeOrigin === null) {\n    cachedTimeOrigin = getBrowserTimeOrigin();\n  }\n\n  return cachedTimeOrigin;\n}\n\nexport { browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds };\n//# sourceMappingURL=time.js.map\n",
+    "import { uuid4 } from './utils/misc.js';\nimport { timestampInSeconds } from './utils/time.js';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n  // Both timestamp and started are in seconds since the UNIX epoch.\n  const startingTime = timestampInSeconds();\n\n  const session = {\n    sid: uuid4(),\n    init: true,\n    timestamp: startingTime,\n    started: startingTime,\n    duration: 0,\n    status: 'ok',\n    errors: 0,\n    ignoreDuration: false,\n    toJSON: () => sessionToJSON(session),\n  };\n\n  if (context) {\n    updateSession(session, context);\n  }\n\n  return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see Client.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n  if (context.user) {\n    if (!session.ipAddress && context.user.ip_address) {\n      session.ipAddress = context.user.ip_address;\n    }\n\n    if (!session.did && !context.did) {\n      session.did = context.user.id || context.user.email || context.user.username;\n    }\n  }\n\n  session.timestamp = context.timestamp || timestampInSeconds();\n\n  if (context.abnormal_mechanism) {\n    session.abnormal_mechanism = context.abnormal_mechanism;\n  }\n\n  if (context.ignoreDuration) {\n    session.ignoreDuration = context.ignoreDuration;\n  }\n  if (context.sid) {\n    // Good enough uuid validation. — Kamil\n    session.sid = context.sid.length === 32 ? context.sid : uuid4();\n  }\n  if (context.init !== undefined) {\n    session.init = context.init;\n  }\n  if (!session.did && context.did) {\n    session.did = `${context.did}`;\n  }\n  if (typeof context.started === 'number') {\n    session.started = context.started;\n  }\n  if (session.ignoreDuration) {\n    session.duration = undefined;\n  } else if (typeof context.duration === 'number') {\n    session.duration = context.duration;\n  } else {\n    const duration = session.timestamp - session.started;\n    session.duration = duration >= 0 ? duration : 0;\n  }\n  if (context.release) {\n    session.release = context.release;\n  }\n  if (context.environment) {\n    session.environment = context.environment;\n  }\n  if (!session.ipAddress && context.ipAddress) {\n    session.ipAddress = context.ipAddress;\n  }\n  if (!session.userAgent && context.userAgent) {\n    session.userAgent = context.userAgent;\n  }\n  if (typeof context.errors === 'number') {\n    session.errors = context.errors;\n  }\n  if (context.status) {\n    session.status = context.status;\n  }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n *               this function will keep the previously set status, unless it was `'ok'` in which case\n *               it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n  let context = {};\n  if (status) {\n    context = { status };\n  } else if (session.status === 'ok') {\n    context = { status: 'exited' };\n  }\n\n  updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n  return {\n    sid: `${session.sid}`,\n    init: session.init,\n    // Make sure that sec is converted to ms for date constructor\n    started: new Date(session.started * 1000).toISOString(),\n    timestamp: new Date(session.timestamp * 1000).toISOString(),\n    status: session.status,\n    errors: session.errors,\n    did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n    duration: session.duration,\n    abnormal_mechanism: session.abnormal_mechanism,\n    attrs: {\n      release: session.release,\n      environment: session.environment,\n      ip_address: session.ipAddress,\n      user_agent: session.userAgent,\n    },\n  };\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n",
+    "/**\n * Shallow merge two objects.\n * Does not mutate the passed in objects.\n * Undefined/empty values in the merge object will overwrite existing values.\n *\n * By default, this merges 2 levels deep.\n */\nfunction merge(initialObj, mergeObj, levels = 2) {\n  // If the merge value is not an object, or we have no merge levels left,\n  // we just set the value to the merge value\n  if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {\n    return mergeObj;\n  }\n\n  // If the merge object is an empty object, and the initial object is not undefined, we return the initial object\n  if (initialObj && Object.keys(mergeObj).length === 0) {\n    return initialObj;\n  }\n\n  // Clone object\n  const output = { ...initialObj };\n\n  // Merge values into output, resursively\n  for (const key in mergeObj) {\n    if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n      output[key] = merge(output[key], mergeObj[key], levels - 1);\n    }\n  }\n\n  return output;\n}\n\nexport { merge };\n//# sourceMappingURL=merge.js.map\n",
+    "import { uuid4 } from './misc.js';\n\n/**\n * Generate a random, valid trace ID.\n */\nfunction generateTraceId() {\n  return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nfunction generateSpanId() {\n  return uuid4().substring(16);\n}\n\nexport { generateSpanId, generateTraceId };\n//# sourceMappingURL=propagationContext.js.map\n",
+    "import { addNonEnumerableProperty } from './object.js';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _setSpanForScope(scope, span) {\n  if (span) {\n    addNonEnumerableProperty(scope , SCOPE_SPAN_FIELD, span);\n  } else {\n    // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n    delete (scope )[SCOPE_SPAN_FIELD];\n  }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _getSpanForScope(scope) {\n  return scope[SCOPE_SPAN_FIELD];\n}\n\nexport { _getSpanForScope, _setSpanForScope };\n//# sourceMappingURL=spanOnScope.js.map\n",
+    "import { DEBUG_BUILD } from './debug-build.js';\nimport { updateSession } from './session.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isPlainObject } from './utils/is.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4 } from './utils/misc.js';\nimport { generateTraceId } from './utils/propagationContext.js';\nimport { safeMathRandom } from './utils/randomSafeContext.js';\nimport { _setSpanForScope, _getSpanForScope } from './utils/spanOnScope.js';\nimport { truncate } from './utils/string.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * A context to be used for capturing an event.\n * This can either be a Scope, or a partial ScopeContext,\n * or a callback that receives the current scope and returns a new scope to use.\n */\n\n/**\n * Holds additional event information.\n */\nclass Scope {\n  /** Flag if notifying is happening. */\n\n  /** Callback for client to receive scope changes. */\n\n  /** Callback list that will be called during event processing. */\n\n  /** Array of breadcrumbs. */\n\n  /** User */\n\n  /** Tags */\n\n  /** Attributes */\n\n  /** Extra */\n\n  /** Contexts */\n\n  /** Attachments */\n\n  /** Propagation Context for distributed tracing */\n\n  /**\n   * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n   * sent to Sentry\n   */\n\n  /** Fingerprint */\n\n  /** Severity */\n\n  /**\n   * Transaction Name\n   *\n   * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n   * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n   */\n\n  /** Session */\n\n  /** The client on this scope */\n\n  /** Contains the last event id of a captured event.  */\n\n  /** Conversation ID */\n\n  // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n   constructor() {\n    this._notifyingListeners = false;\n    this._scopeListeners = [];\n    this._eventProcessors = [];\n    this._breadcrumbs = [];\n    this._attachments = [];\n    this._user = {};\n    this._tags = {};\n    this._attributes = {};\n    this._extra = {};\n    this._contexts = {};\n    this._sdkProcessingMetadata = {};\n    this._propagationContext = {\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom(),\n    };\n  }\n\n  /**\n   * Clone all data from this scope into a new scope.\n   */\n   clone() {\n    const newScope = new Scope();\n    newScope._breadcrumbs = [...this._breadcrumbs];\n    newScope._tags = { ...this._tags };\n    newScope._attributes = { ...this._attributes };\n    newScope._extra = { ...this._extra };\n    newScope._contexts = { ...this._contexts };\n    if (this._contexts.flags) {\n      // We need to copy the `values` array so insertions on a cloned scope\n      // won't affect the original array.\n      newScope._contexts.flags = {\n        values: [...this._contexts.flags.values],\n      };\n    }\n\n    newScope._user = this._user;\n    newScope._level = this._level;\n    newScope._session = this._session;\n    newScope._transactionName = this._transactionName;\n    newScope._fingerprint = this._fingerprint;\n    newScope._eventProcessors = [...this._eventProcessors];\n    newScope._attachments = [...this._attachments];\n    newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n    newScope._propagationContext = { ...this._propagationContext };\n    newScope._client = this._client;\n    newScope._lastEventId = this._lastEventId;\n    newScope._conversationId = this._conversationId;\n\n    _setSpanForScope(newScope, _getSpanForScope(this));\n\n    return newScope;\n  }\n\n  /**\n   * Update the client assigned to this scope.\n   * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client,\n   * as well as manually created scopes.\n   */\n   setClient(client) {\n    this._client = client;\n  }\n\n  /**\n   * Set the ID of the last captured error event.\n   * This is generally only captured on the isolation scope.\n   */\n   setLastEventId(lastEventId) {\n    this._lastEventId = lastEventId;\n  }\n\n  /**\n   * Get the client assigned to this scope.\n   */\n   getClient() {\n    return this._client ;\n  }\n\n  /**\n   * Get the ID of the last captured error event.\n   * This is generally only available on the isolation scope.\n   */\n   lastEventId() {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   addScopeListener(callback) {\n    this._scopeListeners.push(callback);\n  }\n\n  /**\n   * Add an event processor that will be called before an event is sent.\n   */\n   addEventProcessor(callback) {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n\n  /**\n   * Set the user for this scope.\n   * Set to `null` to unset the user.\n   */\n   setUser(user) {\n    // If null is passed we want to unset everything, but still define keys,\n    // so that later down in the pipeline any existing values are cleared.\n    this._user = user || {\n      email: undefined,\n      id: undefined,\n      ip_address: undefined,\n      username: undefined,\n    };\n\n    if (this._session) {\n      updateSession(this._session, { user });\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Get the user from this scope.\n   */\n   getUser() {\n    return this._user;\n  }\n\n  /**\n   * Set the conversation ID for this scope.\n   * Set to `null` to unset the conversation ID.\n   */\n   setConversationId(conversationId) {\n    this._conversationId = conversationId || undefined;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set an object that will be merged into existing tags on the scope,\n   * and will be sent as tags data with the event.\n   */\n   setTags(tags) {\n    this._tags = {\n      ...this._tags,\n      ...tags,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set a single tag that will be sent as tags data with the event.\n   */\n   setTag(key, value) {\n    return this.setTags({ [key]: value });\n  }\n\n  /**\n   * Sets attributes onto the scope.\n   *\n   * These attributes are currently applied to logs and metrics.\n   * In the future, they will also be applied to spans.\n   *\n   * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n   * more complex attribute types. We'll add this support in the future but already specify the wider type to\n   * avoid a breaking change in the future.\n   *\n   * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or\n   * an object with a `value` and an optional `unit` (if applicable to your attribute).\n   *\n   * @example\n   * ```typescript\n   * scope.setAttributes({\n   *   is_admin: true,\n   *   payment_selection: 'credit_card',\n   *   render_duration: { value: 'render_duration', unit: 'ms' },\n   * });\n   * ```\n   */\n   setAttributes(newAttributes) {\n    this._attributes = {\n      ...this._attributes,\n      ...newAttributes,\n    };\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets an attribute onto the scope.\n   *\n   * These attributes are currently applied to logs and metrics.\n   * In the future, they will also be applied to spans.\n   *\n   * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n   * more complex attribute types. We'll add this support in the future but already specify the wider type to\n   * avoid a breaking change in the future.\n   *\n   * @param key - The attribute key.\n   * @param value - the attribute value. You can either pass in a raw value, or an attribute\n   * object with a `value` and an optional `unit` (if applicable to your attribute).\n   *\n   * @example\n   * ```typescript\n   * scope.setAttribute('is_admin', true);\n   * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' });\n   * ```\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n   setAttribute(\n    key,\n    value,\n  ) {\n    return this.setAttributes({ [key]: value });\n  }\n\n  /**\n   * Removes the attribute with the given key from the scope.\n   *\n   * @param key - The attribute key.\n   *\n   * @example\n   * ```typescript\n   * scope.removeAttribute('is_admin');\n   * ```\n   */\n   removeAttribute(key) {\n    if (key in this._attributes) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._attributes[key];\n      this._notifyScopeListeners();\n    }\n    return this;\n  }\n\n  /**\n   * Set an object that will be merged into existing extra on the scope,\n   * and will be sent as extra data with the event.\n   */\n   setExtras(extras) {\n    this._extra = {\n      ...this._extra,\n      ...extras,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set a single key:value extra entry that will be sent as extra data with the event.\n   */\n   setExtra(key, extra) {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the fingerprint on the scope to send with the events.\n   * @param {string[]} fingerprint Fingerprint to group events in Sentry.\n   */\n   setFingerprint(fingerprint) {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the level on the scope for future events.\n   */\n   setLevel(level) {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the transaction name on the scope so that the name of e.g. taken server route or\n   * the page location is attached to future events.\n   *\n   * IMPORTANT: Calling this function does NOT change the name of the currently active\n   * root span. If you want to change the name of the active root span, use\n   * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n   *\n   * By default, the SDK updates the scope's transaction name automatically on sensible\n   * occasions, such as a page navigation or when handling a new request on the server.\n   */\n   setTransactionName(name) {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets context data with the given name.\n   * Data passed as context will be normalized. You can also pass `null` to unset the context.\n   * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key.\n   */\n   setContext(key, context) {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set the session for the scope.\n   */\n   setSession(session) {\n    if (!session) {\n      delete this._session;\n    } else {\n      this._session = session;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Get the session from the scope.\n   */\n   getSession() {\n    return this._session;\n  }\n\n  /**\n   * Updates the scope with provided data. Can work in three variations:\n   * - plain object containing updatable attributes\n   * - Scope instance that'll extract the attributes from\n   * - callback function that'll receive the current scope as an argument and allow for modifications\n   */\n   update(captureContext) {\n    if (!captureContext) {\n      return this;\n    }\n\n    const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n    const scopeInstance =\n      scopeToMerge instanceof Scope\n        ? scopeToMerge.getScopeData()\n        : isPlainObject(scopeToMerge)\n          ? (captureContext )\n          : undefined;\n\n    const {\n      tags,\n      attributes,\n      extra,\n      user,\n      contexts,\n      level,\n      fingerprint = [],\n      propagationContext,\n      conversationId,\n    } = scopeInstance || {};\n\n    this._tags = { ...this._tags, ...tags };\n    this._attributes = { ...this._attributes, ...attributes };\n    this._extra = { ...this._extra, ...extra };\n    this._contexts = { ...this._contexts, ...contexts };\n\n    if (user && Object.keys(user).length) {\n      this._user = user;\n    }\n\n    if (level) {\n      this._level = level;\n    }\n\n    if (fingerprint.length) {\n      this._fingerprint = fingerprint;\n    }\n\n    if (propagationContext) {\n      this._propagationContext = propagationContext;\n    }\n\n    if (conversationId) {\n      this._conversationId = conversationId;\n    }\n\n    return this;\n  }\n\n  /**\n   * Clears the current scope and resets its properties.\n   * Note: The client will not be cleared.\n   */\n   clear() {\n    // client is not cleared here on purpose!\n    this._breadcrumbs = [];\n    this._tags = {};\n    this._attributes = {};\n    this._extra = {};\n    this._user = {};\n    this._contexts = {};\n    this._level = undefined;\n    this._transactionName = undefined;\n    this._fingerprint = undefined;\n    this._session = undefined;\n    this._conversationId = undefined;\n    _setSpanForScope(this, undefined);\n    this._attachments = [];\n    this.setPropagationContext({\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom(),\n    });\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Adds a breadcrumb to the scope.\n   * By default, the last 100 breadcrumbs are kept.\n   */\n   addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n    const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n    // No data has been changed, so don't notify scope listeners\n    if (maxCrumbs <= 0) {\n      return this;\n    }\n\n    const mergedBreadcrumb = {\n      timestamp: dateTimestampInSeconds(),\n      ...breadcrumb,\n      // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory\n      message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message,\n    };\n\n    this._breadcrumbs.push(mergedBreadcrumb);\n    if (this._breadcrumbs.length > maxCrumbs) {\n      this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n      this._client?.recordDroppedEvent('buffer_overflow', 'log_item');\n    }\n\n    this._notifyScopeListeners();\n\n    return this;\n  }\n\n  /**\n   * Get the last breadcrumb of the scope.\n   */\n   getLastBreadcrumb() {\n    return this._breadcrumbs[this._breadcrumbs.length - 1];\n  }\n\n  /**\n   * Clear all breadcrumbs from the scope.\n   */\n   clearBreadcrumbs() {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Add an attachment to the scope.\n   */\n   addAttachment(attachment) {\n    this._attachments.push(attachment);\n    return this;\n  }\n\n  /**\n   * Clear all attachments from the scope.\n   */\n   clearAttachments() {\n    this._attachments = [];\n    return this;\n  }\n\n  /**\n   * Get the data of this scope, which should be applied to an event during processing.\n   */\n   getScopeData() {\n    return {\n      breadcrumbs: this._breadcrumbs,\n      attachments: this._attachments,\n      contexts: this._contexts,\n      tags: this._tags,\n      attributes: this._attributes,\n      extra: this._extra,\n      user: this._user,\n      level: this._level,\n      fingerprint: this._fingerprint || [],\n      eventProcessors: this._eventProcessors,\n      propagationContext: this._propagationContext,\n      sdkProcessingMetadata: this._sdkProcessingMetadata,\n      transactionName: this._transactionName,\n      span: _getSpanForScope(this),\n      conversationId: this._conversationId,\n    };\n  }\n\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry.\n   */\n   setSDKProcessingMetadata(newData) {\n    this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n    return this;\n  }\n\n  /**\n   * Add propagation context to the scope, used for distributed tracing\n   */\n   setPropagationContext(context) {\n    this._propagationContext = context;\n    return this;\n  }\n\n  /**\n   * Get propagation context from the scope, used for distributed tracing\n   */\n   getPropagationContext() {\n    return this._propagationContext;\n  }\n\n  /**\n   * Capture an exception for this scope.\n   *\n   * @returns {string} The id of the captured Sentry event.\n   */\n   captureException(exception, hint) {\n    const eventId = hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture exception!');\n      return eventId;\n    }\n\n    const syntheticException = new Error('Sentry syntheticException');\n\n    this._client.captureException(\n      exception,\n      {\n        originalException: exception,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Capture a message for this scope.\n   *\n   * @returns {string} The id of the captured message.\n   */\n   captureMessage(message, level, hint) {\n    const eventId = hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture message!');\n      return eventId;\n    }\n\n    const syntheticException = hint?.syntheticException ?? new Error(message);\n\n    this._client.captureMessage(\n      message,\n      level,\n      {\n        originalException: message,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Capture a Sentry event for this scope.\n   *\n   * @returns {string} The id of the captured event.\n   */\n   captureEvent(event, hint) {\n    const eventId = event.event_id || hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture event!');\n      return eventId;\n    }\n\n    this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n    return eventId;\n  }\n\n  /**\n   * This will be called on every set call.\n   */\n   _notifyScopeListeners() {\n    // We need this check for this._notifyingListeners to be able to work on scope during updates\n    // If this check is not here we'll produce endless recursion when something is done with the scope\n    // during the callback.\n    if (!this._notifyingListeners) {\n      this._notifyingListeners = true;\n      this._scopeListeners.forEach(callback => {\n        callback(this);\n      });\n      this._notifyingListeners = false;\n    }\n  }\n}\n\nexport { Scope };\n//# sourceMappingURL=scope.js.map\n",
+    "import { getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\n\n/** Get the default current scope. */\nfunction getDefaultCurrentScope() {\n  return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nfunction getDefaultIsolationScope() {\n  return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n\nexport { getDefaultCurrentScope, getDefaultIsolationScope };\n//# sourceMappingURL=defaultScopes.js.map\n",
+    "const isActualPromise = (p) =>\n  p instanceof Promise && !(p )[kChainedCopy];\n\nconst kChainedCopy = Symbol('chained PromiseLike');\n\n/**\n * Copy the properties from a decorated promiselike object onto its chained\n * actual promise.\n */\nconst chainAndCopyPromiseLike = (\n  original,\n  onSuccess,\n  onError,\n) => {\n  const chained = original.then(\n    value => {\n      onSuccess(value);\n      return value;\n    },\n    err => {\n      onError(err);\n      throw err;\n    },\n  ) ;\n\n  // if we're just dealing with \"normal\" Promise objects, return the chain\n  return isActualPromise(chained) && isActualPromise(original) ? chained : copyProps(original, chained);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst copyProps = (original, chained) => {\n  let mutated = false;\n  //oxlint-disable-next-line guard-for-in\n  for (const key in original) {\n    if (key in chained) continue;\n    mutated = true;\n    const value = original[key];\n    if (typeof value === 'function') {\n      Object.defineProperty(chained, key, {\n        value: (...args) => value.apply(original, args),\n        enumerable: true,\n        configurable: true,\n        writable: true,\n      });\n    } else {\n      (chained )[key] = value;\n    }\n  }\n\n  if (mutated) Object.assign(chained, { [kChainedCopy]: true });\n  return chained;\n};\n\nexport { chainAndCopyPromiseLike };\n//# sourceMappingURL=chain-and-copy-promiselike.js.map\n",
+    "import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes.js';\nimport { Scope } from '../scope.js';\nimport { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike.js';\nimport { isThenable } from '../utils/is.js';\nimport { getMainCarrier, getSentryCarrier } from '../carrier.js';\n\n/**\n * This is an object that holds a stack of scopes.\n */\nclass AsyncContextStack {\n\n   constructor(scope, isolationScope) {\n    let assignedScope;\n    if (!scope) {\n      assignedScope = new Scope();\n    } else {\n      assignedScope = scope;\n    }\n\n    let assignedIsolationScope;\n    if (!isolationScope) {\n      assignedIsolationScope = new Scope();\n    } else {\n      assignedIsolationScope = isolationScope;\n    }\n\n    // scope stack for domains or the process\n    this._stack = [{ scope: assignedScope }];\n    this._isolationScope = assignedIsolationScope;\n  }\n\n  /**\n   * Fork a scope for the stack.\n   */\n   withScope(callback) {\n    const scope = this._pushScope();\n\n    let maybePromiseResult;\n    try {\n      maybePromiseResult = callback(scope);\n    } catch (e) {\n      this._popScope();\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      return chainAndCopyPromiseLike(\n        maybePromiseResult ,\n        () => this._popScope(),\n        () => this._popScope(),\n      ) ;\n    }\n\n    this._popScope();\n    return maybePromiseResult;\n  }\n\n  /**\n   * Get the client of the stack.\n   */\n   getClient() {\n    return this.getStackTop().client ;\n  }\n\n  /**\n   * Returns the scope of the top stack.\n   */\n   getScope() {\n    return this.getStackTop().scope;\n  }\n\n  /**\n   * Get the isolation scope for the stack.\n   */\n   getIsolationScope() {\n    return this._isolationScope;\n  }\n\n  /**\n   * Returns the topmost scope layer in the order domain > local > process.\n   */\n   getStackTop() {\n    return this._stack[this._stack.length - 1] ;\n  }\n\n  /**\n   * Push a scope to the stack.\n   */\n   _pushScope() {\n    // We want to clone the content of prev scope\n    const scope = this.getScope().clone();\n    this._stack.push({\n      client: this.getClient(),\n      scope,\n    });\n    return scope;\n  }\n\n  /**\n   * Pop a scope from the stack.\n   */\n   _popScope() {\n    if (this._stack.length <= 1) return false;\n    return !!this._stack.pop();\n  }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack() {\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n\n  return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope(callback) {\n  return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope, callback) {\n  const stack = getAsyncContextStack();\n  return stack.withScope(() => {\n    stack.getStackTop().scope = scope;\n    return callback(scope);\n  });\n}\n\nfunction withIsolationScope(callback) {\n  return getAsyncContextStack().withScope(() => {\n    return callback(getAsyncContextStack().getIsolationScope());\n  });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nfunction getStackAsyncContextStrategy() {\n  return {\n    withIsolationScope,\n    withScope,\n    withSetScope,\n    withSetIsolationScope: (_isolationScope, callback) => {\n      return withIsolationScope(callback);\n    },\n    getCurrentScope: () => getAsyncContextStack().getScope(),\n    getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n  };\n}\n\nexport { AsyncContextStack, getStackAsyncContextStrategy };\n//# sourceMappingURL=stackStrategy.js.map\n",
+    "import { getMainCarrier, getSentryCarrier } from '../carrier.js';\nimport { getStackAsyncContextStrategy } from './stackStrategy.js';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n  sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nfunction getAsyncContextStrategy(carrier) {\n  const sentry = getSentryCarrier(carrier);\n\n  if (sentry.acs) {\n    return sentry.acs;\n  }\n\n  // Otherwise, use the default one (stack)\n  return getStackAsyncContextStrategy();\n}\n\nexport { getAsyncContextStrategy, setAsyncContextStrategy };\n//# sourceMappingURL=index.js.map\n",
+    "import { getAsyncContextStrategy } from './asyncContext/index.js';\nimport { getMainCarrier, getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\nimport { generateSpanId } from './utils/propagationContext.js';\n\n/**\n * Get the currently active scope.\n */\nfunction getCurrentScope() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current execution context.\n */\nfunction getIsolationScope() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nfunction getGlobalScope() {\n  return getGlobalSingleton('globalScope', () => new Scope());\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n */\n\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nfunction withScope(\n  ...rest\n) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [scope, callback] = rest;\n\n    if (!scope) {\n      return acs.withScope(callback);\n    }\n\n    return acs.withSetScope(scope, callback);\n  }\n\n  return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\n\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nfunction withIsolationScope(\n  ...rest\n\n) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [isolationScope, callback] = rest;\n\n    if (!isolationScope) {\n      return acs.withIsolationScope(callback);\n    }\n\n    return acs.withSetIsolationScope(isolationScope, callback);\n  }\n\n  return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nfunction getClient() {\n  return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nfunction getTraceContextFromScope(scope) {\n  const propagationContext = scope.getPropagationContext();\n\n  const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n\n  const traceContext = {\n    trace_id: traceId,\n    span_id: propagationSpanId || generateSpanId(),\n  };\n\n  if (parentSpanId) {\n    traceContext.parent_span_id = parentSpanId;\n  }\n\n  return traceContext;\n}\n\nexport { getClient, getCurrentScope, getGlobalScope, getIsolationScope, getTraceContextFromScope, withIsolationScope, withScope };\n//# sourceMappingURL=currentScopes.js.map\n",
+    "/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Attributes that holds the sample rate that was locally applied to a span.\n * If this attribute is not defined, it means that the span inherited a sampling decision.\n *\n * NOTE: Is only defined on root spans.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Attribute holding the sample rate of the previous trace.\n * This is used to sample consistently across subsequent traces in the browser SDK.\n *\n * Note: Only defined on root spans, if opted into consistent sampling\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = 'sentry.previous_trace_sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * A custom span name set by users guaranteed to be taken over any automatically\n * inferred name. This attribute is removed before the span is sent.\n *\n * @internal only meant for internal SDK usage\n * @hidden\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nconst SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nconst SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nconst SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n\n/**\n * A span link attribute to mark the link as a special span link.\n *\n * Known values:\n * - `previous_trace`: The span links to the frontend root span of the previous trace.\n * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK)\n *\n * Other values may be set as appropriate.\n * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types\n */\nconst SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = 'sentry.link.type';\n\n/**\n * =============================================================================\n * GEN AI ATTRIBUTES\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n * =============================================================================\n */\n\n/**\n * The conversation ID for linking messages across API calls.\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nconst GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\nexport { GEN_AI_CONVERSATION_ID_ATTRIBUTE, SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE };\n//# sourceMappingURL=semanticAttributes.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isString } from './is.js';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n  // Very liberal definition of what any incoming header might look like\n  baggageHeader,\n) {\n  const baggageObject = parseBaggageHeader(baggageHeader);\n\n  if (!baggageObject) {\n    return undefined;\n  }\n\n  // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n  const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n    if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n      const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n      acc[nonPrefixedKey] = value;\n    }\n    return acc;\n  }, {});\n\n  // Only return a dynamic sampling context object if there are keys in it.\n  // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n  if (Object.keys(dynamicSamplingContext).length > 0) {\n    return dynamicSamplingContext ;\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n  // this also takes undefined for convenience and bundle size in other places\n  dynamicSamplingContext,\n) {\n  if (!dynamicSamplingContext) {\n    return undefined;\n  }\n\n  // Prefix all DSC keys with \"sentry-\" and put them into a new object\n  const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n    (acc, [dscKey, dscValue]) => {\n      if (dscValue) {\n        acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n      }\n      return acc;\n    },\n    {},\n  );\n\n  return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nfunction parseBaggageHeader(\n  baggageHeader,\n) {\n  if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n    return undefined;\n  }\n\n  if (Array.isArray(baggageHeader)) {\n    // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n    return baggageHeader.reduce((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      Object.entries(currBaggageObject).forEach(([key, value]) => {\n        acc[key] = value;\n      });\n      return acc;\n    }, {});\n  }\n\n  return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n  return baggageHeader\n    .split(',')\n    .map(baggageEntry => {\n      const eqIdx = baggageEntry.indexOf('=');\n      if (eqIdx === -1) {\n        // Likely an invalid entry\n        return [];\n      }\n      const key = baggageEntry.slice(0, eqIdx);\n      const value = baggageEntry.slice(eqIdx + 1);\n      return [key, value].map(keyOrValue => {\n        try {\n          return decodeURIComponent(keyOrValue.trim());\n        } catch {\n          // We ignore errors here, e.g. if the value cannot be URL decoded.\n          // This will then be skipped in the next step\n          return;\n        }\n      });\n    })\n    .reduce((acc, [key, value]) => {\n      if (key && value) {\n        acc[key] = value;\n      }\n      return acc;\n    }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n  if (Object.keys(object).length === 0) {\n    // An empty baggage header is not spec compliant: We return undefined.\n    return undefined;\n  }\n\n  return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n    const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n    const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n    if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n        );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, '');\n}\n\nexport { MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, objectToBaggageHeader, parseBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n",
+    "import { chainAndCopyPromiseLike } from './chain-and-copy-promiselike.js';\nimport { isThenable } from './is.js';\n\n/* eslint-disable */\n// Vendor \"Awaited\" in to be TS 3.8 compatible\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nfunction handleCallbackErrors\n\n(\n  fn,\n  onError,\n  onFinally = () => {},\n  onSuccess = () => {},\n) {\n  let maybePromiseResult;\n  try {\n    maybePromiseResult = fn();\n  } catch (e) {\n    onError(e);\n    onFinally();\n    throw e;\n  }\n\n  return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally, onSuccess);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n *\n * For thenable objects with extra methods (like jQuery's jqXHR),\n * this function preserves those methods by wrapping the original thenable in a Proxy\n * that intercepts .then() calls to apply error handling while forwarding all other\n * properties to the original object.\n * This allows code like `startSpan(() => $.ajax(...)).abort()` to work correctly.\n */\nfunction maybeHandlePromiseRejection(\n  value,\n  onError,\n  onFinally,\n  onSuccess,\n) {\n  if (isThenable(value)) {\n    return chainAndCopyPromiseLike(\n      value ,\n      result => {\n        onFinally();\n        onSuccess(result );\n      },\n      err => {\n        onError(err);\n        onFinally();\n      },\n    ) ;\n  }\n  // Non-thenable value - call callbacks immediately and return as-is\n  onFinally();\n  onSuccess(value);\n  return value;\n}\n\nexport { handleCallbackErrors };\n//# sourceMappingURL=handleCallbackErrors.js.map\n",
+    "import { getClient } from '../currentScopes.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if span recording is currently enabled.\n *\n * Spans are recorded when at least one of `tracesSampleRate` and `tracesSampler`\n * is defined in the SDK config. This function does not make any assumption about\n * sampling decisions, it only checks if the SDK is configured to record spans.\n *\n * Important: This function only determines if span recording is enabled. Trace\n * continuation and propagation is separately controlled and not covered by this function.\n * If this function returns `false`, traces can still be propagated (which is what\n * we refer to by \"Tracing without Performance\")\n * @see https://develop.sentry.dev/sdk/telemetry/traces/tracing-without-performance/\n *\n * @param maybeOptions An SDK options object to be passed to this function.\n * If this option is not provided, the function will use the current client's options.\n */\nfunction hasSpansEnabled(\n  maybeOptions,\n) {\n  if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n    return false;\n  }\n\n  const options = maybeOptions || getClient()?.getOptions();\n  return (\n    !!options &&\n    // Note: This check is `!= null`, meaning \"nullish\". `0` is not \"nullish\", `undefined` and `null` are. (This comment was brought to you by 15 minutes of questioning life)\n    (options.tracesSampleRate != null || !!options.tracesSampler)\n  );\n}\n\nexport { hasSpansEnabled };\n//# sourceMappingURL=hasSpansEnabled.js.map\n",
+    "/**\n * Parse a sample rate from a given value.\n * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1).\n * If a string is passed, we try to convert it to a number.\n *\n * Any invalid sample rate will return `undefined`.\n */\nfunction parseSampleRate(sampleRate) {\n  if (typeof sampleRate === 'boolean') {\n    return Number(sampleRate);\n  }\n\n  const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate;\n  if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) {\n    return undefined;\n  }\n\n  return rate;\n}\n\nexport { parseSampleRate };\n//# sourceMappingURL=parseSampleRate.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { consoleSandbox, debug } from './debug-logger.js';\n\n/** Regular expression used to extract org ID from a DSN host. */\nconst ORG_ID_REGEX = /^o(\\d+)\\./;\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)((?:\\[[:.%\\w]+\\]|[\\w.-]+))(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n  return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n  const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n  return (\n    `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n    `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n  );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n  const match = DSN_REGEX.exec(str);\n\n  if (!match) {\n    // This should be logged to the console\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.error(`Invalid Sentry Dsn: ${str}`);\n    });\n    return undefined;\n  }\n\n  const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1);\n  let path = '';\n  let projectId = lastPath;\n\n  const split = projectId.split('/');\n  if (split.length > 1) {\n    path = split.slice(0, -1).join('/');\n    projectId = split.pop() ;\n  }\n\n  if (projectId) {\n    const projectMatch = projectId.match(/^\\d+/);\n    if (projectMatch) {\n      projectId = projectMatch[0];\n    }\n  }\n\n  return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || '',\n    pass: components.pass || '',\n    host: components.host,\n    port: components.port || '',\n    path: components.path || '',\n    projectId: components.projectId,\n  };\n}\n\nfunction validateDsn(dsn) {\n  if (!DEBUG_BUILD) {\n    return true;\n  }\n\n  const { port, projectId, protocol } = dsn;\n\n  const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n  const hasMissingRequiredComponent = requiredComponents.find(component => {\n    if (!dsn[component]) {\n      debug.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n\n  if (!projectId.match(/^\\d+$/)) {\n    debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n\n  if (!isValidProtocol(protocol)) {\n    debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n\n  if (port && isNaN(parseInt(port, 10))) {\n    debug.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Extract the org ID from a DSN host.\n *\n * @param host The host from a DSN\n * @returns The org ID if found, undefined otherwise\n */\nfunction extractOrgIdFromDsnHost(host) {\n  const match = host.match(ORG_ID_REGEX);\n\n  return match?.[1];\n}\n\n/**\n *  Returns the organization ID of the client.\n *\n *  The organization ID is extracted from the DSN. If the client options include a `orgId`, this will always take precedence.\n */\nfunction extractOrgIdFromClient(client) {\n  const options = client.getOptions();\n\n  const { host } = client.getDsn() || {};\n\n  let org_id;\n\n  if (options.orgId) {\n    org_id = String(options.orgId);\n  } else if (host) {\n    org_id = extractOrgIdFromDsnHost(host);\n  }\n\n  return org_id;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n  const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return undefined;\n  }\n  return components;\n}\n\nexport { dsnFromString, dsnToString, extractOrgIdFromClient, extractOrgIdFromDsnHost, makeDsn };\n//# sourceMappingURL=dsn.js.map\n",
+    "import { debug } from './debug-logger.js';\nimport { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { extractOrgIdFromClient } from './dsn.js';\nimport { parseSampleRate } from './parseSampleRate.js';\nimport { generateTraceId, generateSpanId } from './propagationContext.js';\nimport { safeMathRandom } from './randomSafeContext.js';\n\n// oxlint-disable-next-line sdk/no-regexp-constructor -- RegExp is used for readability here\nconst TRACEPARENT_REGEXP = new RegExp(\n  '^[ \\\\t]*' + // whitespace\n    '([0-9a-f]{32})?' + // trace_id\n    '-?([0-9a-f]{16})?' + // span_id\n    '-?([01])?' + // sampled\n    '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * This is terrible naming but the function has nothing to do with the W3C traceparent header.\n * It can only parse the `sentry-trace` header and extract the \"trace parent\" data.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n  if (!traceparent) {\n    return undefined;\n  }\n\n  const matches = traceparent.match(TRACEPARENT_REGEXP);\n  if (!matches) {\n    return undefined;\n  }\n\n  let parentSampled;\n  if (matches[3] === '1') {\n    parentSampled = true;\n  } else if (matches[3] === '0') {\n    parentSampled = false;\n  }\n\n  return {\n    traceId: matches[1],\n    parentSampled,\n    parentSpanId: matches[2],\n  };\n}\n\n/**\n * Create a propagation context from incoming headers or\n * creates a minimal new one if the headers are undefined.\n */\nfunction propagationContextFromHeaders(\n  sentryTrace,\n  baggage,\n) {\n  const traceparentData = extractTraceparentData(sentryTrace);\n  const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n  if (!traceparentData?.traceId) {\n    return {\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom(),\n    };\n  }\n\n  const sampleRand = getSampleRandFromTraceparentAndDsc(traceparentData, dynamicSamplingContext);\n\n  // The sample_rand on the DSC needs to be generated based on traceparent + baggage.\n  if (dynamicSamplingContext) {\n    dynamicSamplingContext.sample_rand = sampleRand.toString();\n  }\n\n  const { traceId, parentSpanId, parentSampled } = traceparentData;\n\n  return {\n    traceId,\n    parentSpanId,\n    sampled: parentSampled,\n    dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n    sampleRand,\n  };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n  traceId = generateTraceId(),\n  spanId = generateSpanId(),\n  sampled,\n) {\n  let sampledString = '';\n  if (sampled !== undefined) {\n    sampledString = sampled ? '-1' : '-0';\n  }\n  return `${traceId}-${spanId}${sampledString}`;\n}\n\n/**\n * Creates a W3C traceparent header from the given trace and span ids.\n */\nfunction generateTraceparentHeader(\n  traceId = generateTraceId(),\n  spanId = generateSpanId(),\n  sampled,\n) {\n  return `00-${traceId}-${spanId}-${sampled ? '01' : '00'}`;\n}\n\n/**\n * Given any combination of an incoming trace, generate a sample rand based on its defined semantics.\n *\n * Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n */\nfunction getSampleRandFromTraceparentAndDsc(\n  traceparentData,\n  dsc,\n) {\n  // When there is an incoming sample rand use it.\n  const parsedSampleRand = parseSampleRate(dsc?.sample_rand);\n  if (parsedSampleRand !== undefined) {\n    return parsedSampleRand;\n  }\n\n  // Otherwise, if there is an incoming sampling decision + sample rate, generate a sample rand that would lead to the same sampling decision.\n  const parsedSampleRate = parseSampleRate(dsc?.sample_rate);\n  if (parsedSampleRate && traceparentData?.parentSampled !== undefined) {\n    return traceparentData.parentSampled\n      ? // Returns a sample rand with positive sampling decision [0, sampleRate)\n        safeMathRandom() * parsedSampleRate\n      : // Returns a sample rand with negative sampling decision [sampleRate, 1)\n        parsedSampleRate + safeMathRandom() * (1 - parsedSampleRate);\n  } else {\n    // If nothing applies, return a random sample rand.\n    return safeMathRandom();\n  }\n}\n\n/**\n * Determines whether a new trace should be continued based on the provided baggage org ID and the client's `strictTraceContinuation` option.\n * If the trace should not be continued, a new trace will be started.\n *\n * The result is dependent on the `strictTraceContinuation` option in the client.\n * See https://develop.sentry.dev/sdk/telemetry/traces/#stricttracecontinuation\n */\nfunction shouldContinueTrace(client, baggageOrgId) {\n  const clientOrgId = extractOrgIdFromClient(client);\n\n  // Case: baggage orgID and Client orgID don't match - always start new trace\n  if (baggageOrgId && clientOrgId && baggageOrgId !== clientOrgId) {\n    debug.log(\n      `Won't continue trace because org IDs don't match (incoming baggage: ${baggageOrgId}, SDK options: ${clientOrgId})`,\n    );\n    return false;\n  }\n\n  const strictTraceContinuation = client.getOptions().strictTraceContinuation || false; // default for `strictTraceContinuation` is `false`\n\n  if (strictTraceContinuation) {\n    // With strict continuation enabled, don't continue trace if:\n    // - Baggage has orgID, but Client doesn't have one\n    // - Client has orgID, but baggage doesn't have one\n    if ((baggageOrgId && !clientOrgId) || (!baggageOrgId && clientOrgId)) {\n      debug.log(\n        `Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${baggageOrgId}, Sentry client: ${clientOrgId})`,\n      );\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, generateTraceparentHeader, propagationContextFromHeaders, shouldContinueTrace };\n//# sourceMappingURL=tracing.js.map\n",
+    "import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getCurrentScope } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { SPAN_STATUS_UNSET, SPAN_STATUS_OK } from '../tracing/spanstatus.js';\nimport { getCapturedScopesOnSpan } from '../tracing/utils.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { generateSpanId } from './propagationContext.js';\nimport { timestampInSeconds } from './time.js';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js';\nimport { consoleSandbox } from './debug-logger.js';\nimport { _getSpanForScope } from './spanOnScope.js';\n\n// These are aligned with OpenTelemetry trace flags\nconst TRACE_FLAG_NONE = 0x0;\nconst TRACE_FLAG_SAMPLED = 0x1;\n\nlet hasShownSpanDropWarning = false;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nfunction spanToTransactionTraceContext(span) {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, origin, links } = spanToJSON(span);\n\n  return {\n    parent_span_id,\n    span_id,\n    trace_id,\n    data,\n    op,\n    status,\n    origin,\n    links,\n  };\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nfunction spanToTraceContext(span) {\n  const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n\n  // If the span is remote, we use a random/virtual span as span_id to the trace context,\n  // and the remote span as parent_span_id\n  const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n  const scope = getCapturedScopesOnSpan(span).scope;\n\n  const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId;\n\n  return {\n    parent_span_id,\n    span_id,\n    trace_id,\n  };\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nfunction spanToTraceHeader(span) {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a Span to a W3C traceparent header.\n */\nfunction spanToTraceparentHeader(span) {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateTraceparentHeader(traceId, spanId, sampled);\n}\n\n/**\n *  Converts the span links array to a flattened version to be sent within an envelope.\n *\n *  If the links array is empty, it returns `undefined` so the empty value can be dropped before it's sent.\n */\nfunction convertSpanLinksForEnvelope(links) {\n  if (links && links.length > 0) {\n    return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({\n      span_id: spanId,\n      trace_id: traceId,\n      sampled: traceFlags === TRACE_FLAG_SAMPLED,\n      attributes,\n      ...restContext,\n    }));\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nfunction spanTimeInputToSeconds(input) {\n  if (typeof input === 'number') {\n    return ensureTimestampInSeconds(input);\n  }\n\n  if (Array.isArray(input)) {\n    // See {@link HrTime} for the array-based time format\n    return input[0] + input[1] / 1e9;\n  }\n\n  if (input instanceof Date) {\n    return ensureTimestampInSeconds(input.getTime());\n  }\n\n  return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp) {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nfunction spanToJSON(span) {\n  if (spanIsSentrySpan(span)) {\n    return span.getSpanJSON();\n  }\n\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n  // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n  if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n    const { attributes, startTime, name, endTime, status, links } = span;\n\n    // In preparation for the next major of OpenTelemetry, we want to support\n    // looking up the parent span id according to the new API\n    // In OTel v1, the parent span id is accessed as `parentSpanId`\n    // In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n    const parentSpanId =\n      'parentSpanId' in span\n        ? span.parentSpanId\n        : 'parentSpanContext' in span\n          ? (span.parentSpanContext )?.spanId\n          : undefined;\n\n    return {\n      span_id,\n      trace_id,\n      data: attributes,\n      description: name,\n      parent_span_id: parentSpanId,\n      start_timestamp: spanTimeInputToSeconds(startTime),\n      // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n      timestamp: spanTimeInputToSeconds(endTime) || undefined,\n      status: getStatusMessage(status),\n      op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n      origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n      links: convertSpanLinksForEnvelope(links),\n    };\n  }\n\n  // Finally, at least we have `spanContext()`....\n  // This should not actually happen in reality, but we need to handle it for type safety.\n  return {\n    span_id,\n    trace_id,\n    start_timestamp: 0,\n    data: {},\n  };\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span) {\n  const castSpan = span ;\n  return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span) {\n  return typeof (span ).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nfunction spanIsSampled(span) {\n  // We align our trace flags with the ones OpenTelemetry use\n  // So we also check for sampled the same way they do.\n  const { traceFlags } = span.spanContext();\n  return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nfunction getStatusMessage(status) {\n  if (!status || status.code === SPAN_STATUS_UNSET) {\n    return undefined;\n  }\n\n  if (status.code === SPAN_STATUS_OK) {\n    return 'ok';\n  }\n\n  return status.message || 'internal_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\n/**\n * Adds an opaque child span reference to a span.\n */\nfunction addChildSpanToSpan(span, childSpan) {\n  // We store the root span reference on the child span\n  // We need this for `getRootSpan()` to work\n  const rootSpan = span[ROOT_SPAN_FIELD] || span;\n  addNonEnumerableProperty(childSpan , ROOT_SPAN_FIELD, rootSpan);\n\n  // We store a list of child spans on the parent span\n  // We need this for `getSpanDescendants()` to work\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].add(childSpan);\n  } else {\n    addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n  }\n}\n\n/** This is only used internally by Idle Spans. */\nfunction removeChildSpanFromSpan(span, childSpan) {\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].delete(childSpan);\n  }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nfunction getSpanDescendants(span) {\n  const resultSet = new Set();\n\n  function addSpanChildren(span) {\n    // This exit condition is required to not infinitely loop in case of a circular dependency.\n    if (resultSet.has(span)) {\n      return;\n      // We want to ignore unsampled spans (e.g. non recording spans)\n    } else if (spanIsSampled(span)) {\n      resultSet.add(span);\n      const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n      for (const childSpan of childSpans) {\n        addSpanChildren(childSpan);\n      }\n    }\n  }\n\n  addSpanChildren(span);\n\n  return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nfunction getRootSpan(span) {\n  return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.getActiveSpan) {\n    return acs.getActiveSpan();\n  }\n\n  return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Logs a warning once if `beforeSendSpan` is used to drop spans.\n */\nfunction showSpanDropWarning() {\n  if (!hasShownSpanDropWarning) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.',\n      );\n    });\n    hasShownSpanDropWarning = true;\n  }\n}\n\n/**\n * Updates the name of the given span and ensures that the span name is not\n * overwritten by the Sentry SDK.\n *\n * Use this function instead of `span.updateName()` if you want to make sure that\n * your name is kept. For some spans, for example root `http.server` spans the\n * Sentry SDK would otherwise overwrite the span name with a high-quality name\n * it infers when the span ends.\n *\n * Use this function in server code or when your span is started on the server\n * and on the client (browser). If you only update a span name on the client,\n * you can also use `span.updateName()` the SDK does not overwrite the name.\n *\n * @param span - The span to update the name of.\n * @param name - The name to set on the span.\n */\nfunction updateSpanName(span, name) {\n  span.updateName(name);\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n    [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n  });\n}\n\nexport { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, addChildSpanToSpan, convertSpanLinksForEnvelope, getActiveSpan, getRootSpan, getSpanDescendants, getStatusMessage, removeChildSpanFromSpan, showSpanDropWarning, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader, spanToTraceparentHeader, spanToTransactionTraceContext, updateSpanName };\n//# sourceMappingURL=spanUtils.js.map\n",
+    "const DEFAULT_ENVIRONMENT = 'production';\nconst DEV_ENVIRONMENT = 'development';\n\nexport { DEFAULT_ENVIRONMENT, DEV_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n",
+    "import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getClient } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage.js';\nimport { extractOrgIdFromClient } from '../utils/dsn.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { addNonEnumerableProperty } from '../utils/object.js';\nimport { getRootSpan, spanToJSON, spanIsSampled } from '../utils/spanUtils.js';\nimport { getCapturedScopesOnSpan } from './utils.js';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\n/**\n * Freeze the given DSC on the given span.\n */\nfunction freezeDscOnSpan(span, dsc) {\n  const spanWithMaybeDsc = span ;\n  addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(trace_id, client) {\n  const options = client.getOptions();\n\n  const { publicKey: public_key } = client.getDsn() || {};\n\n  // Instead of conditionally adding non-undefined values, we add them and then remove them if needed\n  // otherwise, the order of baggage entries changes, which \"breaks\" a bunch of tests etc.\n  const dsc = {\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    public_key,\n    trace_id,\n    org_id: extractOrgIdFromClient(client),\n  };\n\n  client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\n/**\n * Get the dynamic sampling context for the currently active scopes.\n */\nfunction getDynamicSamplingContextFromScope(client, scope) {\n  const propagationContext = scope.getPropagationContext();\n  return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nfunction getDynamicSamplingContextFromSpan(span) {\n  const client = getClient();\n  if (!client) {\n    return {};\n  }\n\n  const rootSpan = getRootSpan(span);\n  const rootSpanJson = spanToJSON(rootSpan);\n  const rootSpanAttributes = rootSpanJson.data;\n  const traceState = rootSpan.spanContext().traceState;\n\n  // The span sample rate that was locally applied to the root span should also always be applied to the DSC, even if the DSC is frozen.\n  // This is so that the downstream traces/services can use parentSampleRate in their `tracesSampler` to make consistent sampling decisions across the entire trace.\n  const rootSpanSampleRate =\n    traceState?.get('sentry.sample_rate') ??\n    rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ??\n    rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE];\n\n  function applyLocalSampleRateToDsc(dsc) {\n    if (typeof rootSpanSampleRate === 'number' || typeof rootSpanSampleRate === 'string') {\n      dsc.sample_rate = `${rootSpanSampleRate}`;\n    }\n    return dsc;\n  }\n\n  // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n  const frozenDsc = (rootSpan )[FROZEN_DSC_FIELD];\n  if (frozenDsc) {\n    return applyLocalSampleRateToDsc(frozenDsc);\n  }\n\n  // For OpenTelemetry, we freeze the DSC on the trace state\n  const traceStateDsc = traceState?.get('sentry.dsc');\n\n  // If the span has a DSC, we want it to take precedence\n  const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n  if (dscOnTraceState) {\n    return applyLocalSampleRateToDsc(dscOnTraceState);\n  }\n\n  // Else, we generate it from the span\n  const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n\n  // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n  const source = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n  // after JSON conversion, txn.name becomes jsonSpan.description\n  const name = rootSpanJson.description;\n  if (source !== 'url' && name) {\n    dsc.transaction = name;\n  }\n\n  // How can we even land here with hasSpansEnabled() returning false?\n  // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n  // So we end up with an active span that is not sampled (neither positively nor negatively)\n  if (hasSpansEnabled()) {\n    dsc.sampled = String(spanIsSampled(rootSpan));\n    dsc.sample_rand =\n      // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans\n      // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span\n      traceState?.get('sentry.sample_rand') ??\n      // On all other platforms we can actually get the scopes from a root span (we use this as a fallback)\n      getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString();\n  }\n\n  applyLocalSampleRateToDsc(dsc);\n\n  client.emit('createDsc', dsc, rootSpan);\n\n  return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nfunction spanToBaggageHeader(span) {\n  const dsc = getDynamicSamplingContextFromSpan(span);\n  return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n\nexport { freezeDscOnSpan, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { spanToJSON, getRootSpan, spanIsSampled } from '../utils/spanUtils.js';\n\n/**\n * Print a log message for a started span.\n */\nfunction logSpanStart(span) {\n  if (!DEBUG_BUILD) return;\n\n  const { description = '< unknown name >', op = '< unknown op >', parent_span_id: parentSpanId } = spanToJSON(span);\n  const { spanId } = span.spanContext();\n\n  const sampled = spanIsSampled(span);\n  const rootSpan = getRootSpan(span);\n  const isRootSpan = rootSpan === span;\n\n  const header = `[Tracing] Starting ${sampled ? 'sampled' : 'unsampled'} ${isRootSpan ? 'root ' : ''}span`;\n\n  const infoParts = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`];\n\n  if (parentSpanId) {\n    infoParts.push(`parent ID: ${parentSpanId}`);\n  }\n\n  if (!isRootSpan) {\n    const { op, description } = spanToJSON(rootSpan);\n    infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`);\n    if (op) {\n      infoParts.push(`root op: ${op}`);\n    }\n    if (description) {\n      infoParts.push(`root description: ${description}`);\n    }\n  }\n\n  debug.log(`${header}\n  ${infoParts.join('\\n  ')}`);\n}\n\n/**\n * Print a log message for an ended span.\n */\nfunction logSpanEnd(span) {\n  if (!DEBUG_BUILD) return;\n\n  const { description = '< unknown name >', op = '< unknown op >' } = spanToJSON(span);\n  const { spanId } = span.spanContext();\n  const rootSpan = getRootSpan(span);\n  const isRootSpan = rootSpan === span;\n\n  const msg = `[Tracing] Finishing \"${op}\" ${isRootSpan ? 'root ' : ''}span \"${description}\" with ID ${spanId}`;\n  debug.log(msg);\n}\n\nexport { logSpanEnd, logSpanStart };\n//# sourceMappingURL=logSpans.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { parseSampleRate } from '../utils/parseSampleRate.js';\n\n/**\n * Makes a sampling decision for the given options.\n *\n * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n */\nfunction sampleSpan(\n  options,\n  samplingContext,\n  sampleRand,\n) {\n  // nothing to do if span recording is not enabled\n  if (!hasSpansEnabled(options)) {\n    return [false];\n  }\n\n  let localSampleRateWasApplied = undefined;\n\n  // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n  // work; prefer the hook if so\n  let sampleRate;\n  if (typeof options.tracesSampler === 'function') {\n    sampleRate = options.tracesSampler({\n      ...samplingContext,\n      inheritOrSampleWith: fallbackSampleRate => {\n        // If we have an incoming parent sample rate, we'll just use that one.\n        // The sampling decision will be inherited because of the sample_rand that was generated when the trace reached the incoming boundaries of the SDK.\n        if (typeof samplingContext.parentSampleRate === 'number') {\n          return samplingContext.parentSampleRate;\n        }\n\n        // Fallback if parent sample rate is not on the incoming trace (e.g. if there is no baggage)\n        // This is to provide backwards compatibility if there are incoming traces from older SDKs that don't send a parent sample rate or a sample rand. In these cases we just want to force either a sampling decision on the downstream traces via the sample rate.\n        if (typeof samplingContext.parentSampled === 'boolean') {\n          return Number(samplingContext.parentSampled);\n        }\n\n        return fallbackSampleRate;\n      },\n    });\n    localSampleRateWasApplied = true;\n  } else if (samplingContext.parentSampled !== undefined) {\n    sampleRate = samplingContext.parentSampled;\n  } else if (typeof options.tracesSampleRate !== 'undefined') {\n    sampleRate = options.tracesSampleRate;\n    localSampleRateWasApplied = true;\n  }\n\n  // Since this is coming from the user (or from a function provided by the user), who knows what we might get.\n  // (The only valid values are booleans or numbers between 0 and 1.)\n  const parsedSampleRate = parseSampleRate(sampleRate);\n\n  if (parsedSampleRate === undefined) {\n    DEBUG_BUILD &&\n      debug.warn(\n        `[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n          sampleRate,\n        )} of type ${JSON.stringify(typeof sampleRate)}.`,\n      );\n    return [false];\n  }\n\n  // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n  if (!parsedSampleRate) {\n    DEBUG_BUILD &&\n      debug.log(\n        `[Tracing] Discarding transaction because ${\n          typeof options.tracesSampler === 'function'\n            ? 'tracesSampler returned 0 or false'\n            : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n        }`,\n      );\n    return [false, parsedSampleRate, localSampleRateWasApplied];\n  }\n\n  // We always compare the sample rand for the current execution context against the chosen sample rate.\n  // Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n  const shouldSample = sampleRand < parsedSampleRate;\n\n  // if we're not going to keep it, we're done\n  if (!shouldSample) {\n    DEBUG_BUILD &&\n      debug.log(\n        `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n          sampleRate,\n        )})`,\n      );\n  }\n\n  return [shouldSample, parsedSampleRate, localSampleRateWasApplied];\n}\n\nexport { sampleSpan };\n//# sourceMappingURL=sampling.js.map\n",
+    "import { generateTraceId, generateSpanId } from '../utils/propagationContext.js';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils.js';\n\n/**\n * A Sentry Span that is non-recording, meaning it will not be sent to Sentry.\n */\nclass SentryNonRecordingSpan  {\n\n   constructor(spanContext = {}) {\n    this._traceId = spanContext.traceId || generateTraceId();\n    this._spanId = spanContext.spanId || generateSpanId();\n  }\n\n  /** @inheritdoc */\n   spanContext() {\n    return {\n      spanId: this._spanId,\n      traceId: this._traceId,\n      traceFlags: TRACE_FLAG_NONE,\n    };\n  }\n\n  /** @inheritdoc */\n   end(_timestamp) {}\n\n  /** @inheritdoc */\n   setAttribute(_key, _value) {\n    return this;\n  }\n\n  /** @inheritdoc */\n   setAttributes(_values) {\n    return this;\n  }\n\n  /** @inheritdoc */\n   setStatus(_status) {\n    return this;\n  }\n\n  /** @inheritdoc */\n   updateName(_name) {\n    return this;\n  }\n\n  /** @inheritdoc */\n   isRecording() {\n    return false;\n  }\n\n  /** @inheritdoc */\n   addEvent(\n    _name,\n    _attributesOrStartTime,\n    _startTime,\n  ) {\n    return this;\n  }\n\n  /** @inheritDoc */\n   addLink(_link) {\n    return this;\n  }\n\n  /** @inheritDoc */\n   addLinks(_links) {\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but we need it for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n   recordException(_exception, _time) {\n    // noop\n  }\n}\n\nexport { SentryNonRecordingSpan };\n//# sourceMappingURL=sentryNonRecordingSpan.js.map\n",
+    "import { isVueViewModel, isSyntheticEvent } from './is.js';\nimport { convertToPlainObject } from './object.js';\nimport { getVueInternalName, getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normalized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n  try {\n    // since we're at the outermost level, we don't provide a key\n    return visit('', input, depth, maxProperties);\n  } catch (err) {\n    return { ERROR: `**non-serializable** (${err})` };\n  }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object,\n  // Default Node.js REPL depth\n  depth = 3,\n  // 100kB, as 200kB is max payload size, so half sounds reasonable\n  maxSize = 100 * 1024,\n) {\n  const normalized = normalize(object, depth);\n\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n\n  return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n  key,\n  value,\n  depth = +Infinity,\n  maxProperties = +Infinity,\n  memo = memoBuilder(),\n) {\n  const [memoize, unmemoize] = memo;\n\n  // Get the simple cases out of the way first\n  if (\n    value == null || // this matches null and undefined -> eqeq not eqeqeq\n    ['boolean', 'string'].includes(typeof value) ||\n    (typeof value === 'number' && Number.isFinite(value))\n  ) {\n    return value ;\n  }\n\n  const stringified = stringifyValue(key, value);\n\n  // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n  // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n  if (!stringified.startsWith('[object ')) {\n    return stringified;\n  }\n\n  // From here on, we can assert that `value` is either an object or an array.\n\n  // Do not normalize objects that we know have already been normalized. As a general rule, the\n  // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n  // have already been normalized.\n  if ((value )['__sentry_skip_normalization__']) {\n    return value ;\n  }\n\n  // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n  // We keep a certain amount of depth.\n  // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n  const remainingDepth =\n    typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n      ? ((value )['__sentry_override_normalization_depth__'] )\n      : depth;\n\n  // We're also done if we've reached the max depth\n  if (remainingDepth === 0) {\n    // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n    return stringified.replace('object ', '');\n  }\n\n  // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n  if (memoize(value)) {\n    return '[Circular ~]';\n  }\n\n  // If the value has a `toJSON` method, we call it to extract more information\n  const valueWithToJSON = value ;\n  if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n    try {\n      const jsonValue = valueWithToJSON.toJSON();\n      // We need to normalize the return value of `.toJSON()` in case it has circular references\n      return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n    } catch {\n      // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n    }\n  }\n\n  // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n  // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n  // property/entry, and keep track of the number of items we add to it.\n  const normalized = (Array.isArray(value) ? [] : {}) ;\n  let numAdded = 0;\n\n  // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n  // properties are non-enumerable and otherwise would get missed.\n  const visitable = convertToPlainObject(value );\n\n  for (const visitKey in visitable) {\n    // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n    if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n      continue;\n    }\n\n    if (numAdded >= maxProperties) {\n      normalized[visitKey] = '[MaxProperties ~]';\n      break;\n    }\n\n    // Recursively visit all the child nodes\n    const visitValue = visitable[visitKey];\n    normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n    numAdded++;\n  }\n\n  // Once we've visited all the branches, remove the parent from memo storage\n  unmemoize(value);\n\n  // Return accumulated values\n  return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n  key,\n  // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n  // our internal use, it'll do\n  value,\n) {\n  try {\n    if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n      return '[Domain]';\n    }\n\n    if (key === 'domainEmitter') {\n      return '[DomainEmitter]';\n    }\n\n    // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n    // which won't throw if they are not present.\n\n    if (typeof global !== 'undefined' && value === global) {\n      return '[Global]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window !== 'undefined' && value === window) {\n      return '[Window]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof document !== 'undefined' && value === document) {\n      return '[Document]';\n    }\n\n    if (isVueViewModel(value)) {\n      return getVueInternalName(value);\n    }\n\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n      return '[SyntheticEvent]';\n    }\n\n    if (typeof value === 'number' && !Number.isFinite(value)) {\n      return `[${value}]`;\n    }\n\n    if (typeof value === 'function') {\n      return `[Function: ${getFunctionName(value)}]`;\n    }\n\n    if (typeof value === 'symbol') {\n      return `[${String(value)}]`;\n    }\n\n    // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n    if (typeof value === 'bigint') {\n      return `[BigInt: ${String(value)}]`;\n    }\n\n    // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n    // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n    // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n    // we can make sure that only plain objects come out that way.\n    const objName = getConstructorName(value);\n\n    // Handle HTML Elements\n    if (/^HTML(\\w*)Element$/.test(objName)) {\n      return `[HTMLElement: ${objName}]`;\n    }\n\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n  const prototype = Object.getPrototypeOf(value);\n\n  return prototype?.constructor ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n  // eslint-disable-next-line no-bitwise\n  return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n  return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nfunction normalizeUrlToBase(url, basePath) {\n  const escapedBase = basePath\n    // Backslash to forward\n    .replace(/\\\\/g, '/')\n    // Escape RegExp special characters\n    .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n  let newUrl = url;\n  try {\n    newUrl = decodeURI(url);\n  } catch {\n    // Sometime this breaks\n  }\n  return (\n    newUrl\n      .replace(/\\\\/g, '/')\n      .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n      // oxlint-disable-next-line sdk/no-regexp-constructor\n      .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n  );\n}\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n  const inner = new WeakSet();\n  function memoize(obj) {\n    if (inner.has(obj)) {\n      return true;\n    }\n    inner.add(obj);\n    return false;\n  }\n\n  function unmemoize(obj) {\n    inner.delete(obj);\n  }\n  return [memoize, unmemoize];\n}\n\nexport { normalize, normalizeToSize, normalizeUrlToBase };\n//# sourceMappingURL=normalize.js.map\n",
+    "import { getSentryCarrier } from '../carrier.js';\nimport { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n  return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n  const [headers, items] = envelope;\n  return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n  envelope,\n  callback,\n) {\n  const envelopeItems = envelope[1];\n\n  for (const envelopeItem of envelopeItems) {\n    const envelopeItemType = envelopeItem[0].type;\n    const result = callback(envelopeItem, envelopeItemType);\n\n    if (result) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n  return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input) {\n  const carrier = getSentryCarrier(GLOBAL_OBJ);\n  return carrier.encodePolyfill ? carrier.encodePolyfill(input) : new TextEncoder().encode(input);\n}\n\n/**\n * Decode a UTF8 array to string.\n */\nfunction decodeUTF8(input) {\n  const carrier = getSentryCarrier(GLOBAL_OBJ);\n  return carrier.decodePolyfill ? carrier.decodePolyfill(input) : new TextDecoder().decode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope) {\n  const [envHeaders, items] = envelope;\n  // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n  let parts = JSON.stringify(envHeaders);\n\n  function append(next) {\n    if (typeof parts === 'string') {\n      parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next];\n    } else {\n      parts.push(typeof next === 'string' ? encodeUTF8(next) : next);\n    }\n  }\n\n  for (const item of items) {\n    const [itemHeaders, payload] = item;\n\n    append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n    if (typeof payload === 'string' || payload instanceof Uint8Array) {\n      append(payload);\n    } else {\n      let stringifiedPayload;\n      try {\n        stringifiedPayload = JSON.stringify(payload);\n      } catch {\n        // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` still\n        // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n        // performance impact but in this case a performance hit is better than throwing.\n        stringifiedPayload = JSON.stringify(normalize(payload));\n      }\n      append(stringifiedPayload);\n    }\n  }\n\n  return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n  const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n  const merged = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const buffer of buffers) {\n    merged.set(buffer, offset);\n    offset += buffer.length;\n  }\n\n  return merged;\n}\n\n/**\n * Parses an envelope\n */\nfunction parseEnvelope(env) {\n  let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n  function readBinary(length) {\n    const bin = buffer.subarray(0, length);\n    // Replace the buffer with the remaining data excluding trailing newline\n    buffer = buffer.subarray(length + 1);\n    return bin;\n  }\n\n  function readJson() {\n    let i = buffer.indexOf(0xa);\n    // If we couldn't find a newline, we must have found the end of the buffer\n    if (i < 0) {\n      i = buffer.length;\n    }\n\n    return JSON.parse(decodeUTF8(readBinary(i))) ;\n  }\n\n  const envelopeHeader = readJson();\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const items = [];\n\n  while (buffer.length) {\n    const itemHeader = readJson();\n    const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n    items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n  }\n\n  return [envelopeHeader, items];\n}\n\n/**\n * Creates envelope item for a single span\n */\nfunction createSpanEnvelopeItem(spanJson) {\n  const spanHeaders = {\n    type: 'span',\n  };\n\n  return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(attachment) {\n  const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data;\n\n  return [\n    {\n      type: 'attachment',\n      length: buffer.length,\n      filename: attachment.filename,\n      content_type: attachment.contentType,\n      attachment_type: attachment.attachmentType,\n    },\n    buffer,\n  ];\n}\n\n// Map of envelope item types to data categories where the category differs from the type.\n// Types that map to themselves (session, attachment, transaction, profile, feedback, span, metric) fall through.\nconst DATA_CATEGORY_OVERRIDES = {\n  sessions: 'session',\n  event: 'error',\n  client_report: 'internal',\n  user_report: 'default',\n  profile_chunk: 'profile',\n  replay_event: 'replay',\n  replay_recording: 'replay',\n  check_in: 'monitor',\n  raw_security: 'security',\n  log: 'log_item',\n  trace_metric: 'metric',\n};\n\nfunction _isOverriddenType(type) {\n  return type in DATA_CATEGORY_OVERRIDES;\n}\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n  return _isOverriddenType(type) ? DATA_CATEGORY_OVERRIDES[type] : type;\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n  if (!metadataOrEvent?.sdk) {\n    return;\n  }\n  const { name, version } = metadataOrEvent.sdk;\n  return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n  event,\n  sdkInfo,\n  tunnel,\n  dsn,\n) {\n  const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n  return {\n    event_id: event.event_id ,\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n    ...(dynamicSamplingContext && {\n      trace: dynamicSamplingContext,\n    }),\n  };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, createSpanEnvelopeItem, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isMatchingPattern } from './string.js';\n\nfunction logIgnoredSpan(droppedSpan) {\n  debug.log(`Ignoring span ${droppedSpan.op} - ${droppedSpan.description} because it matches \\`ignoreSpans\\`.`);\n}\n\n/**\n * Check if a span should be ignored based on the ignoreSpans configuration.\n */\nfunction shouldIgnoreSpan(\n  span,\n  ignoreSpans,\n) {\n  if (!ignoreSpans?.length || !span.description) {\n    return false;\n  }\n\n  for (const pattern of ignoreSpans) {\n    if (isStringOrRegExp(pattern)) {\n      if (isMatchingPattern(span.description, pattern)) {\n        DEBUG_BUILD && logIgnoredSpan(span);\n        return true;\n      }\n      continue;\n    }\n\n    if (!pattern.name && !pattern.op) {\n      continue;\n    }\n\n    const nameMatches = pattern.name ? isMatchingPattern(span.description, pattern.name) : true;\n    const opMatches = pattern.op ? span.op && isMatchingPattern(span.op, pattern.op) : true;\n\n    // This check here is only correct because we can guarantee that we ran `isMatchingPattern`\n    // for at least one of `nameMatches` and `opMatches`. So in contrary to how this looks,\n    // not both op and name actually have to match. This is the most efficient way to check\n    // for all combinations of name and op patterns.\n    if (nameMatches && opMatches) {\n      DEBUG_BUILD && logIgnoredSpan(span);\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Takes a list of spans, and a span that was dropped, and re-parents the child spans of the dropped span to the parent of the dropped span, if possible.\n * This mutates the spans array in place!\n */\nfunction reparentChildSpans(spans, dropSpan) {\n  const droppedSpanParentId = dropSpan.parent_span_id;\n  const droppedSpanId = dropSpan.span_id;\n\n  // This should generally not happen, as we do not apply this on root spans\n  // but to be safe, we just bail in this case\n  if (!droppedSpanParentId) {\n    return;\n  }\n\n  for (const span of spans) {\n    if (span.parent_span_id === droppedSpanId) {\n      span.parent_span_id = droppedSpanParentId;\n    }\n  }\n}\n\nfunction isStringOrRegExp(value) {\n  return typeof value === 'string' || value instanceof RegExp;\n}\n\nexport { reparentChildSpans, shouldIgnoreSpan };\n//# sourceMappingURL=should-ignore-span.js.map\n",
+    "import { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext.js';\nimport { dsnToString } from './utils/dsn.js';\nimport { getSdkMetadataForEnvelopeHeader, createEventEnvelopeHeaders, createEnvelope, createSpanEnvelopeItem } from './utils/envelope.js';\nimport { shouldIgnoreSpan } from './utils/should-ignore-span.js';\nimport { spanToJSON, showSpanDropWarning } from './utils/spanUtils.js';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n *\n * @internal, exported only for testing\n **/\nfunction _enhanceEventWithSdkInfo(event, newSdkInfo) {\n  if (!newSdkInfo) {\n    return event;\n  }\n\n  const eventSdkInfo = event.sdk || {};\n\n  event.sdk = {\n    ...eventSdkInfo,\n    name: eventSdkInfo.name || newSdkInfo.name,\n    version: eventSdkInfo.version || newSdkInfo.version,\n    integrations: [...(event.sdk?.integrations || []), ...(newSdkInfo.integrations || [])],\n    packages: [...(event.sdk?.packages || []), ...(newSdkInfo.packages || [])],\n    settings:\n      event.sdk?.settings || newSdkInfo.settings\n        ? {\n            ...event.sdk?.settings,\n            ...newSdkInfo.settings,\n          }\n        : undefined,\n  };\n\n  return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n  session,\n  dsn,\n  metadata,\n  tunnel,\n) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n  return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n  event,\n  dsn,\n  metadata,\n  tunnel,\n) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n  /*\n    Note: Due to TS, event.type may be `replay_event`, theoretically.\n    In practice, we never call `createEventEnvelope` with `replay_event` type,\n    and we'd have to adjust a looot of types to make this work properly.\n    We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n    So the safe choice is to really guard against the replay_event type here.\n  */\n  const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n  _enhanceEventWithSdkInfo(event, metadata?.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem = [{ type: eventType }, event];\n  return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/**\n * Create envelope from Span item.\n *\n * Takes an optional client and runs spans through `beforeSendSpan` if available.\n */\nfunction createSpanEnvelope(spans, client) {\n  function dscHasRequiredProps(dsc) {\n    return !!dsc.trace_id && !!dsc.public_key;\n  }\n\n  // For the moment we'll obtain the DSC from the first span in the array\n  // This might need to be changed if we permit sending multiple spans from\n  // different segments in one envelope\n  const dsc = getDynamicSamplingContextFromSpan(spans[0]);\n\n  const dsn = client?.getDsn();\n  const tunnel = client?.getOptions().tunnel;\n\n  const headers = {\n    sent_at: new Date().toISOString(),\n    ...(dscHasRequiredProps(dsc) && { trace: dsc }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const { beforeSendSpan, ignoreSpans } = client?.getOptions() || {};\n\n  const filteredSpans = ignoreSpans?.length\n    ? spans.filter(span => !shouldIgnoreSpan(spanToJSON(span), ignoreSpans))\n    : spans;\n  const droppedSpans = spans.length - filteredSpans.length;\n\n  if (droppedSpans) {\n    client?.recordDroppedEvent('before_send', 'span', droppedSpans);\n  }\n\n  const convertToSpanJSON = beforeSendSpan\n    ? (span) => {\n        const spanJson = spanToJSON(span);\n        const processedSpan = beforeSendSpan(spanJson);\n\n        if (!processedSpan) {\n          showSpanDropWarning();\n          return spanJson;\n        }\n\n        return processedSpan;\n      }\n    : spanToJSON;\n\n  const items = [];\n  for (const span of filteredSpans) {\n    const spanJson = convertToSpanJSON(span);\n    if (spanJson) {\n      items.push(createSpanEnvelopeItem(spanJson));\n    }\n  }\n\n  return createEnvelope(headers, items);\n}\n\nexport { _enhanceEventWithSdkInfo, createEventEnvelope, createSessionEnvelope, createSpanEnvelope };\n//# sourceMappingURL=envelope.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE } from '../semanticAttributes.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getRootSpan, getActiveSpan } from '../utils/spanUtils.js';\n\n/**\n * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span\n * as the 4th parameter.\n */\nfunction setMeasurement(name, value, unit, activeSpan = getActiveSpan()) {\n  const rootSpan = activeSpan && getRootSpan(activeSpan);\n\n  if (rootSpan) {\n    DEBUG_BUILD && debug.log(`[Measurement] Setting measurement on root span: ${name} = ${value} ${unit}`);\n    rootSpan.addEvent(name, {\n      [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value,\n      [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit ,\n    });\n  }\n}\n\n/**\n * Convert timed events to measurements.\n */\nfunction timedEventsToMeasurements(events) {\n  if (!events || events.length === 0) {\n    return undefined;\n  }\n\n  const measurements = {};\n  events.forEach(event => {\n    const attributes = event.attributes || {};\n    const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] ;\n    const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] ;\n\n    if (typeof unit === 'string' && typeof value === 'number') {\n      measurements[event.name] = { value, unit };\n    }\n  });\n\n  return measurements;\n}\n\nexport { setMeasurement, timedEventsToMeasurements };\n//# sourceMappingURL=measurement.js.map\n",
+    "import { getClient, getCurrentScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { createSpanEnvelope } from '../envelope.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '../semanticAttributes.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { generateTraceId, generateSpanId } from '../utils/propagationContext.js';\nimport { TRACE_FLAG_SAMPLED, TRACE_FLAG_NONE, spanTimeInputToSeconds, convertSpanLinksForEnvelope, getRootSpan, getStatusMessage, spanToJSON, getSpanDescendants, spanToTransactionTraceContext } from '../utils/spanUtils.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext.js';\nimport { logSpanEnd } from './logSpans.js';\nimport { timedEventsToMeasurements } from './measurement.js';\nimport { getCapturedScopesOnSpan } from './utils.js';\n\nconst MAX_SPAN_COUNT = 1000;\n\n/**\n * Span contains all data about a span\n */\nclass SentrySpan  {\n\n  /** Epoch timestamp in seconds when the span started. */\n\n  /** Epoch timestamp in seconds when the span ended. */\n\n  /** Internal keeper of the status */\n\n  /** The timed events added to this span. */\n\n  /** if true, treat span as a standalone span (not part of a transaction) */\n\n  /**\n   * You should never call the constructor manually, always use `Sentry.startSpan()`\n   * or other span methods.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n   constructor(spanContext = {}) {\n    this._traceId = spanContext.traceId || generateTraceId();\n    this._spanId = spanContext.spanId || generateSpanId();\n    this._startTime = spanContext.startTimestamp || timestampInSeconds();\n    this._links = spanContext.links;\n\n    this._attributes = {};\n    this.setAttributes({\n      [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual',\n      [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n      ...spanContext.attributes,\n    });\n\n    this._name = spanContext.name;\n\n    if (spanContext.parentSpanId) {\n      this._parentSpanId = spanContext.parentSpanId;\n    }\n    // We want to include booleans as well here\n    if ('sampled' in spanContext) {\n      this._sampled = spanContext.sampled;\n    }\n    if (spanContext.endTimestamp) {\n      this._endTime = spanContext.endTimestamp;\n    }\n\n    this._events = [];\n\n    this._isStandaloneSpan = spanContext.isStandalone;\n\n    // If the span is already ended, ensure we finalize the span immediately\n    if (this._endTime) {\n      this._onSpanEnded();\n    }\n  }\n\n  /** @inheritDoc */\n   addLink(link) {\n    if (this._links) {\n      this._links.push(link);\n    } else {\n      this._links = [link];\n    }\n    return this;\n  }\n\n  /** @inheritDoc */\n   addLinks(links) {\n    if (this._links) {\n      this._links.push(...links);\n    } else {\n      this._links = links;\n    }\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but it is needed for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n   recordException(_exception, _time) {\n    // noop\n  }\n\n  /** @inheritdoc */\n   spanContext() {\n    const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n    return {\n      spanId,\n      traceId,\n      traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n    };\n  }\n\n  /** @inheritdoc */\n   setAttribute(key, value) {\n    if (value === undefined) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._attributes[key];\n    } else {\n      this._attributes[key] = value;\n    }\n\n    return this;\n  }\n\n  /** @inheritdoc */\n   setAttributes(attributes) {\n    Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but we need it for browser tracing where we want to adjust the start time afterwards.\n   * USE THIS WITH CAUTION!\n   *\n   * @hidden\n   * @internal\n   */\n   updateStartTime(timeInput) {\n    this._startTime = spanTimeInputToSeconds(timeInput);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setStatus(value) {\n    this._status = value;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   updateName(name) {\n    this._name = name;\n    this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom');\n    return this;\n  }\n\n  /** @inheritdoc */\n   end(endTimestamp) {\n    // If already ended, skip\n    if (this._endTime) {\n      return;\n    }\n\n    this._endTime = spanTimeInputToSeconds(endTimestamp);\n    logSpanEnd(this);\n\n    this._onSpanEnded();\n  }\n\n  /**\n   * Get JSON representation of this span.\n   *\n   * @hidden\n   * @internal This method is purely for internal purposes and should not be used outside\n   * of SDK code. If you need to get a JSON representation of a span,\n   * use `spanToJSON(span)` instead.\n   */\n   getSpanJSON() {\n    return {\n      data: this._attributes,\n      description: this._name,\n      op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n      parent_span_id: this._parentSpanId,\n      span_id: this._spanId,\n      start_timestamp: this._startTime,\n      status: getStatusMessage(this._status),\n      timestamp: this._endTime,\n      trace_id: this._traceId,\n      origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n      profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] ,\n      exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] ,\n      measurements: timedEventsToMeasurements(this._events),\n      is_segment: (this._isStandaloneSpan && getRootSpan(this) === this) || undefined,\n      segment_id: this._isStandaloneSpan ? getRootSpan(this).spanContext().spanId : undefined,\n      links: convertSpanLinksForEnvelope(this._links),\n    };\n  }\n\n  /** @inheritdoc */\n   isRecording() {\n    return !this._endTime && !!this._sampled;\n  }\n\n  /**\n   * @inheritdoc\n   */\n   addEvent(\n    name,\n    attributesOrStartTime,\n    startTime,\n  ) {\n    DEBUG_BUILD && debug.log('[Tracing] Adding an event to span:', name);\n\n    const time = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || timestampInSeconds();\n    const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {};\n\n    const event = {\n      name,\n      time: spanTimeInputToSeconds(time),\n      attributes,\n    };\n\n    this._events.push(event);\n\n    return this;\n  }\n\n  /**\n   * This method should generally not be used,\n   * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set.\n   * USE THIS WITH CAUTION!\n   * @internal\n   * @hidden\n   * @experimental\n   */\n   isStandaloneSpan() {\n    return !!this._isStandaloneSpan;\n  }\n\n  /** Emit `spanEnd` when the span is ended. */\n   _onSpanEnded() {\n    const client = getClient();\n    if (client) {\n      client.emit('spanEnd', this);\n    }\n\n    // A segment span is basically the root span of a local span tree.\n    // So for now, this is either what we previously refer to as the root span,\n    // or a standalone span.\n    const isSegmentSpan = this._isStandaloneSpan || this === getRootSpan(this);\n\n    if (!isSegmentSpan) {\n      return;\n    }\n\n    // if this is a standalone span, we send it immediately\n    if (this._isStandaloneSpan) {\n      if (this._sampled) {\n        sendSpanEnvelope(createSpanEnvelope([this], client));\n      } else {\n        DEBUG_BUILD &&\n          debug.log('[Tracing] Discarding standalone span because its trace was not chosen to be sampled.');\n        if (client) {\n          client.recordDroppedEvent('sample_rate', 'span');\n        }\n      }\n      return;\n    }\n\n    const transactionEvent = this._convertSpanToTransaction();\n    if (transactionEvent) {\n      const scope = getCapturedScopesOnSpan(this).scope || getCurrentScope();\n      scope.captureEvent(transactionEvent);\n    }\n  }\n\n  /**\n   * Finish the transaction & prepare the event to send to Sentry.\n   */\n   _convertSpanToTransaction() {\n    // We can only convert finished spans\n    if (!isFullFinishedSpan(spanToJSON(this))) {\n      return undefined;\n    }\n\n    if (!this._name) {\n      DEBUG_BUILD && debug.warn('Transaction has no name, falling back to ``.');\n      this._name = '';\n    }\n\n    const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n    const normalizedRequest = capturedSpanScope?.getScopeData().sdkProcessingMetadata?.normalizedRequest;\n\n    if (this._sampled !== true) {\n      return undefined;\n    }\n\n    // The transaction span itself as well as any potential standalone spans should be filtered out\n    const finishedSpans = getSpanDescendants(this).filter(span => span !== this && !isStandaloneSpan(span));\n\n    const spans = finishedSpans.map(span => spanToJSON(span)).filter(isFullFinishedSpan);\n\n    const source = this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n    // remove internal root span attributes we don't need to send.\n    /* eslint-disable @typescript-eslint/no-dynamic-delete */\n    delete this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n    spans.forEach(span => {\n      delete span.data[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n    });\n    // eslint-enabled-next-line @typescript-eslint/no-dynamic-delete\n\n    const transaction = {\n      contexts: {\n        trace: spanToTransactionTraceContext(this),\n      },\n      spans:\n        // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here\n        // we do not use spans anymore after this point\n        spans.length > MAX_SPAN_COUNT\n          ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n          : spans,\n      start_timestamp: this._startTime,\n      timestamp: this._endTime,\n      transaction: this._name,\n      type: 'transaction',\n      sdkProcessingMetadata: {\n        capturedSpanScope,\n        capturedSpanIsolationScope,\n        dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n      },\n      request: normalizedRequest,\n      ...(source && {\n        transaction_info: {\n          source,\n        },\n      }),\n    };\n\n    const measurements = timedEventsToMeasurements(this._events);\n    const hasMeasurements = measurements && Object.keys(measurements).length;\n\n    if (hasMeasurements) {\n      DEBUG_BUILD &&\n        debug.log(\n          '[Measurements] Adding measurements to transaction event',\n          JSON.stringify(measurements, undefined, 2),\n        );\n      transaction.measurements = measurements;\n    }\n\n    return transaction;\n  }\n}\n\nfunction isSpanTimeInput(value) {\n  return (value && typeof value === 'number') || value instanceof Date || Array.isArray(value);\n}\n\n// We want to filter out any incomplete SpanJSON objects\nfunction isFullFinishedSpan(input) {\n  return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id;\n}\n\n/** `SentrySpan`s can be sent as a standalone span rather than belonging to a transaction */\nfunction isStandaloneSpan(span) {\n  return span instanceof SentrySpan && span.isStandaloneSpan();\n}\n\n/**\n * Sends a `SpanEnvelope`.\n *\n * Note: If the envelope's spans are dropped, e.g. via `beforeSendSpan`,\n * the envelope will not be sent either.\n */\nfunction sendSpanEnvelope(envelope) {\n  const client = getClient();\n  if (!client) {\n    return;\n  }\n\n  const spanItems = envelope[1];\n  if (!spanItems || spanItems.length === 0) {\n    client.recordDroppedEvent('before_send', 'span');\n    return;\n  }\n\n  // sendEnvelope should not throw\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  client.sendEnvelope(envelope);\n}\n\nexport { SentrySpan };\n//# sourceMappingURL=sentrySpan.js.map\n",
+    "import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getClient, withScope, getCurrentScope, getIsolationScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext } from '../utils/baggage.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { parseSampleRate } from '../utils/parseSampleRate.js';\nimport { generateTraceId } from '../utils/propagationContext.js';\nimport { safeMathRandom } from '../utils/randomSafeContext.js';\nimport { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope.js';\nimport { spanTimeInputToSeconds, getRootSpan, addChildSpanToSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils.js';\nimport { shouldContinueTrace, propagationContextFromHeaders } from '../utils/tracing.js';\nimport { getDynamicSamplingContextFromSpan, freezeDscOnSpan } from './dynamicSamplingContext.js';\nimport { logSpanStart } from './logSpans.js';\nimport { sampleSpan } from './sampling.js';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan.js';\nimport { SentrySpan } from './sentrySpan.js';\nimport { SPAN_STATUS_ERROR } from './spanstatus.js';\nimport { setCapturedScopesOnSpan } from './utils.js';\n\n/* eslint-disable max-lines */\n\n\nconst SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startSpan(options, callback) {\n  const acs = getAcs();\n  if (acs.startSpan) {\n    return acs.startSpan(options, callback);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n  // We still need to fork a potentially passed scope, as we set the active span on it\n  // and we need to ensure that it is cleaned up properly once the span ends.\n  const customForkedScope = customScope?.clone();\n\n  return withScope(customForkedScope, () => {\n    // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n    const wrapper = getActiveSpanWrapper(customParentSpan);\n\n    return wrapper(() => {\n      const scope = getCurrentScope();\n      const parentSpan = getParentSpan(scope, customParentSpan);\n\n      const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n      const activeSpan = shouldSkipSpan\n        ? new SentryNonRecordingSpan()\n        : createChildOrRootSpan({\n            parentSpan,\n            spanArguments,\n            forceTransaction,\n            scope,\n          });\n\n      _setSpanForScope(scope, activeSpan);\n\n      return handleCallbackErrors(\n        () => callback(activeSpan),\n        () => {\n          // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n          const { status } = spanToJSON(activeSpan);\n          if (activeSpan.isRecording() && (!status || status === 'ok')) {\n            activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n          }\n        },\n        () => {\n          activeSpan.end();\n        },\n      );\n    });\n  });\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. Use `span.end()` to end the span.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startSpanManual(options, callback) {\n  const acs = getAcs();\n  if (acs.startSpanManual) {\n    return acs.startSpanManual(options, callback);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n  const customForkedScope = customScope?.clone();\n\n  return withScope(customForkedScope, () => {\n    // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n    const wrapper = getActiveSpanWrapper(customParentSpan);\n\n    return wrapper(() => {\n      const scope = getCurrentScope();\n      const parentSpan = getParentSpan(scope, customParentSpan);\n\n      const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n      const activeSpan = shouldSkipSpan\n        ? new SentryNonRecordingSpan()\n        : createChildOrRootSpan({\n            parentSpan,\n            spanArguments,\n            forceTransaction,\n            scope,\n          });\n\n      _setSpanForScope(scope, activeSpan);\n\n      return handleCallbackErrors(\n        // We pass the `finish` function to the callback, so the user can finish the span manually\n        // this is mainly here for historic purposes because previously, we instructed users to call\n        // `finish` instead of `span.end()` to also clean up the scope. Nowadays, calling `span.end()`\n        // or `finish` has the same effect and we simply leave it here to avoid breaking user code.\n        () => callback(activeSpan, () => activeSpan.end()),\n        () => {\n          // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n          const { status } = spanToJSON(activeSpan);\n          if (activeSpan.isRecording() && (!status || status === 'ok')) {\n            activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n          }\n        },\n      );\n    });\n  });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startInactiveSpan(options) {\n  const acs = getAcs();\n  if (acs.startInactiveSpan) {\n    return acs.startInactiveSpan(options);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan } = options;\n\n  // If `options.scope` is defined, we use this as as a wrapper,\n  // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n  const wrapper = options.scope\n    ? (callback) => withScope(options.scope, callback)\n    : customParentSpan !== undefined\n      ? (callback) => withActiveSpan(customParentSpan, callback)\n      : (callback) => callback();\n\n  return wrapper(() => {\n    const scope = getCurrentScope();\n    const parentSpan = getParentSpan(scope, customParentSpan);\n\n    const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n\n    if (shouldSkipSpan) {\n      return new SentryNonRecordingSpan();\n    }\n\n    return createChildOrRootSpan({\n      parentSpan,\n      spanArguments,\n      forceTransaction,\n      scope,\n    });\n  });\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n */\nconst continueTrace = (\n  options\n\n,\n  callback,\n) => {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.continueTrace) {\n    return acs.continueTrace(options, callback);\n  }\n\n  const { sentryTrace, baggage } = options;\n\n  const client = getClient();\n  const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n  if (client && !shouldContinueTrace(client, incomingDsc?.org_id)) {\n    return startNewTrace(callback);\n  }\n\n  return withScope(scope => {\n    const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n    scope.setPropagationContext(propagationContext);\n    _setSpanForScope(scope, undefined);\n    return callback();\n  });\n};\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will not be attached to a parent span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nfunction withActiveSpan(span, callback) {\n  const acs = getAcs();\n  if (acs.withActiveSpan) {\n    return acs.withActiveSpan(span, callback);\n  }\n\n  return withScope(scope => {\n    _setSpanForScope(scope, span || undefined);\n    return callback(scope);\n  });\n}\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nfunction suppressTracing(callback) {\n  const acs = getAcs();\n\n  if (acs.suppressTracing) {\n    return acs.suppressTracing(callback);\n  }\n\n  return withScope(scope => {\n    // Note: We do not wait for the callback to finish before we reset the metadata\n    // the reason for this is that otherwise, in the browser this can lead to very weird behavior\n    // as there is only a single top scope, if the callback takes longer to finish,\n    // other, unrelated spans may also be suppressed, which we do not want\n    // so instead, we only suppress tracing synchronoysly in the browser\n    scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true });\n    const res = callback();\n    scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: undefined });\n    return res;\n  });\n}\n\n/**\n * Starts a new trace for the duration of the provided callback. Spans started within the\n * callback will be part of the new trace instead of a potentially previously started trace.\n *\n * Important: Only use this function if you want to override the default trace lifetime and\n * propagation mechanism of the SDK for the duration and scope of the provided callback.\n * The newly created trace will also be the root of a new distributed trace, for example if\n * you make http requests within the callback.\n * This function might be useful if the operation you want to instrument should not be part\n * of a potentially ongoing trace.\n *\n * Default behavior:\n * - Server-side: A new trace is started for each incoming request.\n * - Browser: A new trace is started for each page our route. Navigating to a new route\n *            or page will automatically create a new trace.\n */\nfunction startNewTrace(callback) {\n  return withScope(scope => {\n    scope.setPropagationContext({\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom(),\n    });\n    DEBUG_BUILD && debug.log(`Starting a new trace with id ${scope.getPropagationContext().traceId}`);\n    return withActiveSpan(null, callback);\n  });\n}\n\nfunction createChildOrRootSpan({\n  parentSpan,\n  spanArguments,\n  forceTransaction,\n  scope,\n}\n\n) {\n  if (!hasSpansEnabled()) {\n    const span = new SentryNonRecordingSpan();\n\n    // If this is a root span, we ensure to freeze a DSC\n    // So we can have at least partial data here\n    if (forceTransaction || !parentSpan) {\n      const dsc = {\n        sampled: 'false',\n        sample_rate: '0',\n        transaction: spanArguments.name,\n        ...getDynamicSamplingContextFromSpan(span),\n      } ;\n      freezeDscOnSpan(span, dsc);\n    }\n\n    return span;\n  }\n\n  const isolationScope = getIsolationScope();\n\n  let span;\n  if (parentSpan && !forceTransaction) {\n    span = _startChildSpan(parentSpan, scope, spanArguments);\n    addChildSpanToSpan(parentSpan, span);\n  } else if (parentSpan) {\n    // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n    const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n    const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n    const parentSampled = spanIsSampled(parentSpan);\n\n    span = _startRootSpan(\n      {\n        traceId,\n        parentSpanId,\n        ...spanArguments,\n      },\n      scope,\n      parentSampled,\n    );\n\n    freezeDscOnSpan(span, dsc);\n  } else {\n    const {\n      traceId,\n      dsc,\n      parentSpanId,\n      sampled: parentSampled,\n    } = {\n      ...isolationScope.getPropagationContext(),\n      ...scope.getPropagationContext(),\n    };\n\n    span = _startRootSpan(\n      {\n        traceId,\n        parentSpanId,\n        ...spanArguments,\n      },\n      scope,\n      parentSampled,\n    );\n\n    if (dsc) {\n      freezeDscOnSpan(span, dsc);\n    }\n  }\n\n  logSpanStart(span);\n\n  setCapturedScopesOnSpan(span, scope, isolationScope);\n\n  return span;\n}\n\n/**\n * This converts StartSpanOptions to SentrySpanArguments.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n */\nfunction parseSentrySpanArguments(options) {\n  const exp = options.experimental || {};\n  const initialCtx = {\n    isStandalone: exp.standalone,\n    ...options,\n  };\n\n  if (options.startTime) {\n    const ctx = { ...initialCtx };\n    ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n    delete ctx.startTime;\n    return ctx;\n  }\n\n  return initialCtx;\n}\n\nfunction getAcs() {\n  const carrier = getMainCarrier();\n  return getAsyncContextStrategy(carrier);\n}\n\nfunction _startRootSpan(spanArguments, scope, parentSampled) {\n  const client = getClient();\n  const options = client?.getOptions() || {};\n\n  const { name = '' } = spanArguments;\n\n  const mutableSpanSamplingData = { spanAttributes: { ...spanArguments.attributes }, spanName: name, parentSampled };\n\n  // we don't care about the decision for the moment; this is just a placeholder\n  client?.emit('beforeSampling', mutableSpanSamplingData, { decision: false });\n\n  // If hook consumers override the parentSampled flag, we will use that value instead of the actual one\n  const finalParentSampled = mutableSpanSamplingData.parentSampled ?? parentSampled;\n  const finalAttributes = mutableSpanSamplingData.spanAttributes;\n\n  const currentPropagationContext = scope.getPropagationContext();\n  const [sampled, sampleRate, localSampleRateWasApplied] = scope.getScopeData().sdkProcessingMetadata[\n    SUPPRESS_TRACING_KEY\n  ]\n    ? [false]\n    : sampleSpan(\n        options,\n        {\n          name,\n          parentSampled: finalParentSampled,\n          attributes: finalAttributes,\n          parentSampleRate: parseSampleRate(currentPropagationContext.dsc?.sample_rate),\n        },\n        currentPropagationContext.sampleRand,\n      );\n\n  const rootSpan = new SentrySpan({\n    ...spanArguments,\n    attributes: {\n      [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n      [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]:\n        sampleRate !== undefined && localSampleRateWasApplied ? sampleRate : undefined,\n      ...finalAttributes,\n    },\n    sampled,\n  });\n\n  if (!sampled && client) {\n    DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n    client.recordDroppedEvent('sample_rate', 'transaction');\n  }\n\n  if (client) {\n    client.emit('spanStart', rootSpan);\n  }\n\n  return rootSpan;\n}\n\n/**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * This inherits the sampling decision from the parent span.\n */\nfunction _startChildSpan(parentSpan, scope, spanArguments) {\n  const { spanId, traceId } = parentSpan.spanContext();\n  const sampled = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] ? false : spanIsSampled(parentSpan);\n\n  const childSpan = sampled\n    ? new SentrySpan({\n        ...spanArguments,\n        parentSpanId: spanId,\n        traceId,\n        sampled,\n      })\n    : new SentryNonRecordingSpan({ traceId });\n\n  addChildSpanToSpan(parentSpan, childSpan);\n\n  const client = getClient();\n  if (client) {\n    client.emit('spanStart', childSpan);\n    // If it has an endTimestamp, it's already ended\n    if (spanArguments.endTimestamp) {\n      client.emit('spanEnd', childSpan);\n    }\n  }\n\n  return childSpan;\n}\n\nfunction getParentSpan(scope, customParentSpan) {\n  // always use the passed in span directly\n  if (customParentSpan) {\n    return customParentSpan ;\n  }\n\n  // This is different from `undefined` as it means the user explicitly wants no parent span\n  if (customParentSpan === null) {\n    return undefined;\n  }\n\n  const span = _getSpanForScope(scope) ;\n\n  if (!span) {\n    return undefined;\n  }\n\n  const client = getClient();\n  const options = client ? client.getOptions() : {};\n  if (options.parentSpanIsAlwaysRootSpan) {\n    return getRootSpan(span) ;\n  }\n\n  return span;\n}\n\nfunction getActiveSpanWrapper(parentSpan) {\n  return parentSpan !== undefined\n    ? (callback) => {\n        return withActiveSpan(parentSpan, callback);\n      }\n    : (callback) => callback();\n}\n\nexport { continueTrace, startInactiveSpan, startNewTrace, startSpan, startSpanManual, suppressTracing, withActiveSpan };\n//# sourceMappingURL=trace.js.map\n",
+    "import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/** SyncPromise internal states */\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n  return new SyncPromise(resolve => {\n    resolve(value);\n  });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n  return new SyncPromise((_, reject) => {\n    reject(reason);\n  });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n\n   constructor(executor) {\n    this._state = STATE_PENDING;\n    this._handlers = [];\n\n    this._runExecutor(executor);\n  }\n\n  /** @inheritdoc */\n   then(\n    onfulfilled,\n    onrejected,\n  ) {\n    return new SyncPromise((resolve, reject) => {\n      this._handlers.push([\n        false,\n        result => {\n          if (!onfulfilled) {\n            // TODO: ¯\\_(ツ)_/¯\n            // TODO: FIXME\n            resolve(result );\n          } else {\n            try {\n              resolve(onfulfilled(result));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n        reason => {\n          if (!onrejected) {\n            reject(reason);\n          } else {\n            try {\n              resolve(onrejected(reason));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n      ]);\n      this._executeHandlers();\n    });\n  }\n\n  /** @inheritdoc */\n   catch(\n    onrejected,\n  ) {\n    return this.then(val => val, onrejected);\n  }\n\n  /** @inheritdoc */\n   finally(onfinally) {\n    return new SyncPromise((resolve, reject) => {\n      let val;\n      let isRejected;\n\n      return this.then(\n        value => {\n          isRejected = false;\n          val = value;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n        reason => {\n          isRejected = true;\n          val = reason;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n      ).then(() => {\n        if (isRejected) {\n          reject(val);\n          return;\n        }\n\n        resolve(val );\n      });\n    });\n  }\n\n  /** Excute the resolve/reject handlers. */\n   _executeHandlers() {\n    if (this._state === STATE_PENDING) {\n      return;\n    }\n\n    const cachedHandlers = this._handlers.slice();\n    this._handlers = [];\n\n    cachedHandlers.forEach(handler => {\n      if (handler[0]) {\n        return;\n      }\n\n      if (this._state === STATE_RESOLVED) {\n        handler[1](this._value );\n      }\n\n      if (this._state === STATE_REJECTED) {\n        handler[2](this._value);\n      }\n\n      handler[0] = true;\n    });\n  }\n\n  /** Run the executor for the SyncPromise. */\n   _runExecutor(executor) {\n    const setResult = (state, value) => {\n      if (this._state !== STATE_PENDING) {\n        return;\n      }\n\n      if (isThenable(value)) {\n        void (value ).then(resolve, reject);\n        return;\n      }\n\n      this._state = state;\n      this._value = value;\n\n      this._executeHandlers();\n    };\n\n    const resolve = (value) => {\n      setResult(STATE_RESOLVED, value);\n    };\n\n    const reject = (reason) => {\n      setResult(STATE_REJECTED, reason);\n    };\n\n    try {\n      executor(resolve, reject);\n    } catch (e) {\n      reject(e);\n    }\n  }\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n",
+    "import { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { resolvedSyncPromise, rejectedSyncPromise } from './utils/syncpromise.js';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nfunction notifyEventProcessors(\n  processors,\n  event,\n  hint,\n  index = 0,\n) {\n  try {\n    const result = _notifyEventProcessors(event, hint, processors, index);\n    return isThenable(result) ? result : resolvedSyncPromise(result);\n  } catch (error) {\n    return rejectedSyncPromise(error);\n  }\n}\n\nfunction _notifyEventProcessors(\n  event,\n  hint,\n  processors,\n  index,\n) {\n  const processor = processors[index];\n\n  if (!event || !processor) {\n    return event;\n  }\n\n  const result = processor({ ...event }, hint);\n\n  DEBUG_BUILD && result === null && debug.log(`Event processor \"${processor.id || '?'}\" dropped event`);\n\n  if (isThenable(result)) {\n    return result.then(final => _notifyEventProcessors(final, hint, processors, index + 1));\n  }\n\n  return _notifyEventProcessors(result, hint, processors, index + 1);\n}\n\nexport { notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n",
+    "import { normalizeStackTracePath } from './stacktrace.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nlet parsedStackResults;\nlet lastSentryKeysCount;\nlet lastNativeKeysCount;\nlet cachedFilenameDebugIds;\n\n/**\n * Returns a map of filenames to debug identifiers.\n * Supports both proprietary _sentryDebugIds and native _debugIds (e.g., from Vercel) formats.\n */\nfunction getFilenameToDebugIdMap(stackParser) {\n  const sentryDebugIdMap = GLOBAL_OBJ._sentryDebugIds;\n  const nativeDebugIdMap = GLOBAL_OBJ._debugIds;\n\n  if (!sentryDebugIdMap && !nativeDebugIdMap) {\n    return {};\n  }\n\n  const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : [];\n  const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : [];\n\n  // If the count of registered globals hasn't changed since the last call, we\n  // can just return the cached result.\n  if (\n    cachedFilenameDebugIds &&\n    sentryDebugIdKeys.length === lastSentryKeysCount &&\n    nativeDebugIdKeys.length === lastNativeKeysCount\n  ) {\n    return cachedFilenameDebugIds;\n  }\n\n  lastSentryKeysCount = sentryDebugIdKeys.length;\n  lastNativeKeysCount = nativeDebugIdKeys.length;\n\n  // Build a map of filename -> debug_id from both sources\n  cachedFilenameDebugIds = {};\n\n  if (!parsedStackResults) {\n    parsedStackResults = {};\n  }\n\n  const processDebugIds = (debugIdKeys, debugIdMap) => {\n    for (const key of debugIdKeys) {\n      const debugId = debugIdMap[key];\n      const result = parsedStackResults?.[key];\n\n      if (result && cachedFilenameDebugIds && debugId) {\n        // Use cached filename but update with current debug ID\n        cachedFilenameDebugIds[result[0]] = debugId;\n        // Update cached result with new debug ID\n        if (parsedStackResults) {\n          parsedStackResults[key] = [result[0], debugId];\n        }\n      } else if (debugId) {\n        const parsedStack = stackParser(key);\n\n        for (let i = parsedStack.length - 1; i >= 0; i--) {\n          const stackFrame = parsedStack[i];\n          const filename = stackFrame?.filename;\n\n          if (filename && cachedFilenameDebugIds && parsedStackResults) {\n            cachedFilenameDebugIds[filename] = debugId;\n            parsedStackResults[key] = [filename, debugId];\n            break;\n          }\n        }\n      }\n    }\n  };\n\n  if (sentryDebugIdMap) {\n    processDebugIds(sentryDebugIdKeys, sentryDebugIdMap);\n  }\n\n  // Native _debugIds will override _sentryDebugIds if same file\n  if (nativeDebugIdMap) {\n    processDebugIds(nativeDebugIdKeys, nativeDebugIdMap);\n  }\n\n  return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nfunction getDebugImagesForResources(\n  stackParser,\n  resource_paths,\n) {\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n  if (!filenameDebugIdMap) {\n    return [];\n  }\n\n  const images = [];\n  for (const path of resource_paths) {\n    const normalizedPath = normalizeStackTracePath(path);\n    if (normalizedPath && filenameDebugIdMap[normalizedPath]) {\n      images.push({\n        type: 'sourcemap',\n        code_file: path,\n        debug_id: filenameDebugIdMap[normalizedPath],\n      });\n    }\n  }\n\n  return images;\n}\n\nexport { getDebugImagesForResources, getFilenameToDebugIdMap };\n//# sourceMappingURL=debug-ids.js.map\n",
+    "import { getGlobalScope } from '../currentScopes.js';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { merge } from './merge.js';\nimport { spanToTraceContext, getRootSpan, spanToJSON } from './spanUtils.js';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nfunction applyScopeDataToEvent(event, data) {\n  const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n  // Apply general data\n  applyDataToEvent(event, data);\n\n  // We want to set the trace context for normal events only if there isn't already\n  // a trace context on the event. There is a product feature in place where we link\n  // errors with transaction and it relies on that.\n  if (span) {\n    applySpanToEvent(event, span);\n  }\n\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nfunction mergeScopeData(data, mergeData) {\n  const {\n    extra,\n    tags,\n    attributes,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    transactionName,\n    span,\n  } = mergeData;\n\n  mergeAndOverwriteScopeData(data, 'extra', extra);\n  mergeAndOverwriteScopeData(data, 'tags', tags);\n  mergeAndOverwriteScopeData(data, 'attributes', attributes);\n  mergeAndOverwriteScopeData(data, 'user', user);\n  mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n  data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    data.transactionName = transactionName;\n  }\n\n  if (span) {\n    data.span = span;\n  }\n\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nfunction mergeAndOverwriteScopeData\n\n(data, prop, mergeVal) {\n  data[prop] = merge(data[prop], mergeVal, 1);\n}\n\n/**\n * Get the scope data for the current scope after merging with the\n * global scope and isolation scope.\n *\n * @param currentScope - The current scope.\n * @returns The scope data.\n */\nfunction getCombinedScopeData(isolationScope, currentScope) {\n  const scopeData = getGlobalScope().getScopeData();\n  isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData());\n  currentScope && mergeScopeData(scopeData, currentScope.getScopeData());\n  return scopeData;\n}\n\nfunction applyDataToEvent(event, data) {\n  const { extra, tags, user, contexts, level, transactionName } = data;\n\n  if (Object.keys(extra).length) {\n    event.extra = { ...extra, ...event.extra };\n  }\n\n  if (Object.keys(tags).length) {\n    event.tags = { ...tags, ...event.tags };\n  }\n\n  if (Object.keys(user).length) {\n    event.user = { ...user, ...event.user };\n  }\n\n  if (Object.keys(contexts).length) {\n    event.contexts = { ...contexts, ...event.contexts };\n  }\n\n  if (level) {\n    event.level = level;\n  }\n\n  // transaction events get their `transaction` from the root span name\n  if (transactionName && event.type !== 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\nfunction applyBreadcrumbsToEvent(event, breadcrumbs) {\n  const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event, sdkProcessingMetadata) {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata,\n  };\n}\n\nfunction applySpanToEvent(event, span) {\n  event.contexts = {\n    trace: spanToTraceContext(span),\n    ...event.contexts,\n  };\n\n  event.sdkProcessingMetadata = {\n    dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n    ...event.sdkProcessingMetadata,\n  };\n\n  const rootSpan = getRootSpan(span);\n  const transactionName = spanToJSON(rootSpan).description;\n  if (transactionName && !event.transaction && event.type === 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event, fingerprint) {\n  // Make sure it's an array first and we actually have something in place\n  event.fingerprint = event.fingerprint\n    ? Array.isArray(event.fingerprint)\n      ? event.fingerprint\n      : [event.fingerprint]\n    : [];\n\n  // If we have something on the scope, then merge it with event\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n\n  // If we have no data at all, remove empty array default\n  if (!event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n\nexport { applyScopeDataToEvent, getCombinedScopeData, mergeAndOverwriteScopeData, mergeScopeData };\n//# sourceMappingURL=scopeData.js.map\n",
+    "import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { notifyEventProcessors } from '../eventProcessors.js';\nimport { Scope } from '../scope.js';\nimport { getFilenameToDebugIdMap } from './debug-ids.js';\nimport { uuid4, addExceptionMechanism } from './misc.js';\nimport { normalize } from './normalize.js';\nimport { getCombinedScopeData, applyScopeDataToEvent } from './scopeData.js';\nimport { truncate } from './string.js';\nimport { resolvedSyncPromise } from './syncpromise.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nfunction prepareEvent(\n  options,\n  event,\n  hint,\n  scope,\n  client,\n  isolationScope,\n) {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n  const prepared = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds(),\n  };\n  const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n\n  if (client) {\n    client.emit('applyFrameMetadata', event);\n  }\n\n  // Only put debug IDs onto frames for error events.\n  if (event.type === undefined) {\n    applyDebugIds(prepared, options.stackParser);\n  }\n\n  // If we have scope given to us, use it as the base for further modifications.\n  // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n  const finalScope = getFinalScope(scope, hint.captureContext);\n\n  if (hint.mechanism) {\n    addExceptionMechanism(prepared, hint.mechanism);\n  }\n\n  const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Scope.addEventProcessor} gets the finished prepared event.\n  // Merge scope data together\n  const data = getCombinedScopeData(isolationScope, finalScope);\n\n  const attachments = [...(hint.attachments || []), ...data.attachments];\n  if (attachments.length) {\n    hint.attachments = attachments;\n  }\n\n  applyScopeDataToEvent(prepared, data);\n\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // Run scope event processors _after_ all other processors\n    ...data.eventProcessors,\n  ];\n\n  // Skip event processors for internal exceptions to prevent recursion\n  // oxlint-disable-next-line typescript/prefer-optional-chain\n  const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n  const result = isInternalException\n    ? resolvedSyncPromise(prepared)\n    : notifyEventProcessors(eventProcessors, prepared, hint);\n\n  return result.then(evt => {\n    if (evt) {\n      // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n      // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n      // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n      // any new data\n      applyDebugMeta(evt);\n    }\n\n    if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n *\n * Only exported for tests.\n *\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n  const { environment, release, dist, maxValueLength } = options;\n\n  // empty strings do not make sense for environment, release, and dist\n  // so we handle them the same as if they were not provided\n  event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n\n  if (!event.release && release) {\n    event.release = release;\n  }\n\n  if (!event.dist && dist) {\n    event.dist = dist;\n  }\n\n  const request = event.request;\n  if (request?.url && maxValueLength) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n\n  if (maxValueLength) {\n    event.exception?.values?.forEach(exception => {\n      if (exception.value) {\n        // Truncates error messages\n        exception.value = truncate(exception.value, maxValueLength);\n      }\n    });\n  }\n}\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n  event.exception?.values?.forEach(exception => {\n    exception.stacktrace?.frames?.forEach(frame => {\n      if (frame.filename) {\n        frame.debug_id = filenameDebugIdMap[frame.filename];\n      }\n    });\n  });\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap = {};\n  event.exception?.values?.forEach(exception => {\n    exception.stacktrace?.frames?.forEach(frame => {\n      if (frame.debug_id) {\n        if (frame.abs_path) {\n          filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n        } else if (frame.filename) {\n          filenameDebugIdMap[frame.filename] = frame.debug_id;\n        }\n        delete frame.debug_id;\n      }\n    });\n  });\n\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n\n  // Fill debug_meta information\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id,\n    });\n  });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n  }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event, depth, maxBreadth) {\n  if (!event) {\n    return null;\n  }\n\n  const normalized = {\n    ...event,\n    ...(event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map(b => ({\n        ...b,\n        ...(b.data && {\n          data: normalize(b.data, depth, maxBreadth),\n        }),\n      })),\n    }),\n    ...(event.user && {\n      user: normalize(event.user, depth, maxBreadth),\n    }),\n    ...(event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth),\n    }),\n    ...(event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth),\n    }),\n  };\n\n  // event.contexts.trace stores information about a Transaction. Similarly,\n  // event.spans[] stores information about child Spans. Given that a\n  // Transaction is conceptually a Span, normalization should apply to both\n  // Transactions and Spans consistently.\n  // For now the decision is to skip normalization of Transactions and Spans,\n  // so this block overwrites the normalized event to add back the original\n  // Transaction information prior to normalization.\n  if (event.contexts?.trace && normalized.contexts) {\n    normalized.contexts.trace = event.contexts.trace;\n\n    // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n    if (event.contexts.trace.data) {\n      normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n    }\n  }\n\n  // event.spans[].data may contain circular/dangerous data so we need to normalize it\n  if (event.spans) {\n    normalized.spans = event.spans.map(span => {\n      return {\n        ...span,\n        ...(span.data && {\n          data: normalize(span.data, depth, maxBreadth),\n        }),\n      };\n    });\n  }\n\n  // event.contexts.flags (FeatureFlagContext) stores context for our feature\n  // flag integrations. It has a greater nesting depth than our other typed\n  // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want\n  // to skip this in case of conflicting, user-provided context.\n  if (event.contexts?.flags && normalized.contexts) {\n    normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n  }\n\n  return normalized;\n}\n\nfunction getFinalScope(scope, captureContext) {\n  if (!captureContext) {\n    return scope;\n  }\n\n  const finalScope = scope ? scope.clone() : new Scope();\n  finalScope.update(captureContext);\n  return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nfunction parseEventHintOrCaptureContext(\n  hint,\n) {\n  if (!hint) {\n    return undefined;\n  }\n\n  // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n  if (hintIsScopeOrFunction(hint)) {\n    return { captureContext: hint };\n  }\n\n  if (hintIsScopeContext(hint)) {\n    return {\n      captureContext: hint,\n    };\n  }\n\n  return hint;\n}\n\nfunction hintIsScopeOrFunction(hint) {\n  return hint instanceof Scope || typeof hint === 'function';\n}\n\nconst captureContextKeys = [\n  'user',\n  'level',\n  'extra',\n  'contexts',\n  'tags',\n  'fingerprint',\n  'propagationContext',\n] ;\n\nfunction hintIsScopeContext(hint) {\n  return Object.keys(hint).some(key => captureContextKeys.includes(key ));\n}\n\nexport { applyClientOptions, applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n",
+    "import { getIsolationScope, getCurrentScope, getClient, withIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\nimport { startNewTrace } from './tracing/trace.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { uuid4 } from './utils/misc.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\nimport { getCombinedScopeData } from './utils/scopeData.js';\nimport { timestampInSeconds } from './utils/time.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nfunction captureException(exception, hint) {\n  return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nfunction captureMessage(message, captureContext) {\n  // This is necessary to provide explicit scopes upgrade, without changing the original\n  // arity of the `captureMessage(message, level)` method.\n  const level = typeof captureContext === 'string' ? captureContext : undefined;\n  const hint = typeof captureContext !== 'string' ? { captureContext } : undefined;\n  return getCurrentScope().captureMessage(message, level, hint);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nfunction captureEvent(event, hint) {\n  return getCurrentScope().captureEvent(event, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\nfunction setContext(name, context) {\n  getIsolationScope().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n  getIsolationScope().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n  getIsolationScope().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n  getIsolationScope().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n  getIsolationScope().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n  getIsolationScope().setUser(user);\n}\n\n/**\n * Sets the conversation ID for the current isolation scope.\n *\n * @param conversationId The conversation ID to set. Pass `null` or `undefined` to unset the conversation ID.\n */\nfunction setConversationId(conversationId) {\n  getIsolationScope().setConversationId(conversationId);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nfunction lastEventId() {\n  return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n  const scope = getCurrentScope();\n  const client = getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn('Cannot capture check-in. No client defined.');\n  } else if (!client.captureCheckIn) {\n    DEBUG_BUILD && debug.warn('Cannot capture check-in. Client does not support sending check-ins.');\n  } else {\n    return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n  }\n\n  return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param callback Callback to be monitored\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction withMonitor(\n  monitorSlug,\n  callback,\n  upsertMonitorConfig,\n) {\n  function runCallback() {\n    const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n    const now = timestampInSeconds();\n\n    function finishCheckIn(status) {\n      captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n    }\n    // Default behavior without isolateTrace\n    let maybePromiseResult;\n    try {\n      maybePromiseResult = callback();\n    } catch (e) {\n      finishCheckIn('error');\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      return maybePromiseResult.then(\n        r => {\n          finishCheckIn('ok');\n          return r;\n        },\n        e => {\n          finishCheckIn('error');\n          throw e;\n        },\n      ) ;\n    }\n    finishCheckIn('ok');\n\n    return maybePromiseResult;\n  }\n\n  return withIsolationScope(() => (upsertMonitorConfig?.isolateTrace ? startNewTrace(runCallback) : runCallback()));\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function flush(timeout) {\n  const client = getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  DEBUG_BUILD && debug.warn('Cannot flush events. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function close(timeout) {\n  const client = getClient();\n  if (client) {\n    return client.close(timeout);\n  }\n  DEBUG_BUILD && debug.warn('Cannot flush events and disable SDK. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nfunction isInitialized() {\n  return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nfunction isEnabled() {\n  const client = getClient();\n  return client?.getOptions().enabled !== false && !!client?.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nfunction addEventProcessor(callback) {\n  getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nfunction startSession(context) {\n  const isolationScope = getIsolationScope();\n\n  const { user } = getCombinedScopeData(isolationScope, getCurrentScope());\n\n  // Will fetch userAgent if called from browser sdk\n  const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n  const session = makeSession({\n    user,\n    ...(userAgent && { userAgent }),\n    ...context,\n  });\n\n  // End existing session if there's one\n  const currentSession = isolationScope.getSession();\n  if (currentSession?.status === 'ok') {\n    updateSession(currentSession, { status: 'exited' });\n  }\n\n  endSession();\n\n  // Afterwards we set the new session on the scope\n  isolationScope.setSession(session);\n\n  return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nfunction endSession() {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session) {\n    closeSession(session);\n  }\n  _sendSessionUpdate();\n\n  // the session is over; take it off of the scope\n  isolationScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate() {\n  const isolationScope = getIsolationScope();\n  const client = getClient();\n  const session = isolationScope.getSession();\n  if (session && client) {\n    client.captureSession(session);\n  }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n *            Defaults to `false`.\n */\nfunction captureSession(end = false) {\n  // both send the update and pull the session from the scope\n  if (end) {\n    endSession();\n    return;\n  }\n\n  // only send the update\n  _sendSessionUpdate();\n}\n\nexport { addEventProcessor, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, startSession, withMonitor };\n//# sourceMappingURL=exports.js.map\n",
+    "import { dsnToString } from './utils/dsn.js';\nimport { createEnvelope } from './utils/envelope.js';\n\n/**\n * Create envelope from check in item.\n */\nfunction createCheckInEnvelope(\n  checkIn,\n  dynamicSamplingContext,\n  metadata,\n  tunnel,\n  dsn,\n) {\n  const headers = {\n    sent_at: new Date().toISOString(),\n  };\n\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  if (dynamicSamplingContext) {\n    headers.trace = dynamicSamplingContext ;\n  }\n\n  const item = createCheckInEnvelopeItem(checkIn);\n  return createEnvelope(headers, [item]);\n}\n\nfunction createCheckInEnvelopeItem(checkIn) {\n  const checkInHeaders = {\n    type: 'check_in',\n  };\n  return [checkInHeaders, checkIn];\n}\n\nexport { createCheckInEnvelope };\n//# sourceMappingURL=checkin.js.map\n",
+    "import { makeDsn, dsnToString } from './utils/dsn.js';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n  const port = dsn.port ? `:${dsn.port}` : '';\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n  return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n  const params = {\n    sentry_version: SENTRY_API_VERSION,\n  };\n\n  if (dsn.publicKey) {\n    // We send only the minimum set of required information. See\n    // https://github.com/getsentry/sentry-javascript/issues/2572.\n    params.sentry_key = dsn.publicKey;\n  }\n\n  if (sdkInfo) {\n    params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`;\n  }\n\n  return new URLSearchParams(params).toString();\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel, sdkInfo) {\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(dsnLike, dialogOptions) {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return '';\n  }\n\n  const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n  let encodedOptions = `dsn=${dsnToString(dsn)}`;\n  for (const key in dialogOptions) {\n    if (key === 'dsn') {\n      continue;\n    }\n\n    if (key === 'onClose') {\n      continue;\n    }\n\n    if (key === 'user') {\n      const user = dialogOptions.user;\n      if (!user) {\n        continue;\n      }\n      if (user.name) {\n        encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n      }\n      if (user.email) {\n        encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n      }\n    } else {\n      encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n    }\n  }\n\n  return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n",
+    "import { getClient } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preserve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n  const integrationsByName = {};\n\n  integrations.forEach((currentInstance) => {\n    const { name } = currentInstance;\n\n    const existingInstance = integrationsByName[name];\n\n    // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n    // default instance to overwrite an existing user instance\n    if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n      return;\n    }\n\n    integrationsByName[name] = currentInstance;\n  });\n\n  return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nfunction getIntegrationsToSetup(\n  options,\n) {\n  const defaultIntegrations = options.defaultIntegrations || [];\n  const userIntegrations = options.integrations;\n\n  // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n  defaultIntegrations.forEach((integration) => {\n    integration.isDefaultInstance = true;\n  });\n\n  let integrations;\n\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === 'function') {\n    const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n    integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\n  } else {\n    integrations = defaultIntegrations;\n  }\n\n  return filterDuplicates(integrations);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(client, integrations) {\n  const integrationIndex = {};\n\n  integrations.forEach((integration) => {\n    // guard against empty provided integrations\n    if (integration) {\n      setupIntegration(client, integration, integrationIndex);\n    }\n  });\n\n  return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nfunction afterSetupIntegrations(client, integrations) {\n  for (const integration of integrations) {\n    // guard against empty provided integrations\n    if (integration?.afterAllSetup) {\n      integration.afterAllSetup(client);\n    }\n  }\n}\n\n/** Setup a single integration.  */\nfunction setupIntegration(client, integration, integrationIndex) {\n  if (integrationIndex[integration.name]) {\n    DEBUG_BUILD && debug.log(`Integration skipped because it was already installed: ${integration.name}`);\n    return;\n  }\n  integrationIndex[integration.name] = integration;\n\n  // `setupOnce` is only called the first time\n  if (!installedIntegrations.includes(integration.name) && typeof integration.setupOnce === 'function') {\n    integration.setupOnce();\n    installedIntegrations.push(integration.name);\n  }\n\n  // `setup` is run for each client\n  if (integration.setup && typeof integration.setup === 'function') {\n    integration.setup(client);\n  }\n\n  if (typeof integration.preprocessEvent === 'function') {\n    const callback = integration.preprocessEvent.bind(integration) ;\n    client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n  }\n\n  if (typeof integration.processEvent === 'function') {\n    const callback = integration.processEvent.bind(integration) ;\n\n    const processor = Object.assign((event, hint) => callback(event, hint, client), {\n      id: integration.name,\n    });\n\n    client.addEventProcessor(processor);\n  }\n\n  DEBUG_BUILD && debug.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nfunction addIntegration(integration) {\n  const client = getClient();\n\n  if (!client) {\n    DEBUG_BUILD && debug.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n    return;\n  }\n\n  client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nfunction defineIntegration(fn) {\n  return fn;\n}\n\nexport { addIntegration, afterSetupIntegrations, defineIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n",
+    "/**\n * Type-guard: The attribute object has the shape the official attribute object (value, type, unit).\n * https://develop.sentry.dev/sdk/telemetry/scopes/#setting-attributes\n */\nfunction isAttributeObject(maybeObj) {\n  return (\n    typeof maybeObj === 'object' &&\n    maybeObj != null &&\n    !Array.isArray(maybeObj) &&\n    Object.keys(maybeObj).includes('value')\n  );\n}\n\n/**\n * Converts an attribute value to a typed attribute value.\n *\n * For now, we intentionally only support primitive values and attribute objects with primitive values.\n * If @param useFallback is true, we stringify non-primitive values to a string attribute value. Otherwise\n * we return `undefined` for unsupported values.\n *\n * @param value - The value of the passed attribute.\n * @param useFallback - If true, unsupported values will be stringified to a string attribute value.\n *                      Defaults to false. In this case, `undefined` is returned for unsupported values.\n * @returns The typed attribute.\n */\nfunction attributeValueToTypedAttributeValue(\n  rawValue,\n  useFallback,\n) {\n  const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: undefined };\n  const attributeValue = getTypedAttributeValue(value);\n  const checkedUnit = unit && typeof unit === 'string' ? { unit } : {};\n  if (attributeValue) {\n    return { ...attributeValue, ...checkedUnit };\n  }\n\n  if (!useFallback || (useFallback === 'skip-undefined' && value === undefined)) {\n    return;\n  }\n\n  // Fallback: stringify the value\n  // TODO(v11): be smarter here and use String constructor if stringify fails\n  // (this is a breaking change for already existing attribute values)\n  let stringValue = '';\n  try {\n    stringValue = JSON.stringify(value) ?? '';\n  } catch {\n    // Do nothing\n  }\n  return {\n    value: stringValue,\n    type: 'string',\n    ...checkedUnit,\n  };\n}\n\n/**\n * Serializes raw attributes to typed attributes as expected in our envelopes.\n *\n * @param attributes The raw attributes to serialize.\n * @param fallback   If true, unsupported values will be stringified to a string attribute value.\n *                   Defaults to false. In this case, `undefined` is returned for unsupported values.\n *\n * @returns The serialized attributes.\n */\nfunction serializeAttributes(\n  attributes,\n  fallback = false,\n) {\n  const serializedAttributes = {};\n  for (const [key, value] of Object.entries(attributes ?? {})) {\n    const typedValue = attributeValueToTypedAttributeValue(value, fallback);\n    if (typedValue) {\n      serializedAttributes[key] = typedValue;\n    }\n  }\n  return serializedAttributes;\n}\n\n/**\n * NOTE: We intentionally do not return anything for non-primitive values:\n *  - array support will come in the future but if we stringify arrays now,\n *    sending arrays (unstringified) later will be a subtle breaking change.\n *  - Objects are not supported yet and product support is still TBD.\n *  - We still keep the type signature for TypedAttributeValue wider to avoid a\n *    breaking change once we add support for non-primitive values.\n *  - Once we go back to supporting arrays and stringifying all other values,\n *    we already implemented the serialization logic here:\n *    https://github.com/getsentry/sentry-javascript/pull/18165\n */\nfunction getTypedAttributeValue(value) {\n  const primitiveType =\n    typeof value === 'string'\n      ? 'string'\n      : typeof value === 'boolean'\n        ? 'boolean'\n        : typeof value === 'number' && !Number.isNaN(value)\n          ? Number.isInteger(value)\n            ? 'integer'\n            : 'double'\n          : null;\n  if (primitiveType) {\n    // @ts-expect-error - TS complains because {@link TypedAttributeValue} is strictly typed to\n    // avoid setting the wrong `type` on the attribute value.\n    // In this case, getPrimitiveType already does the check but TS doesn't know that.\n    // The \"clean\" alternative is to return an object per `typeof value` case\n    // but that would require more bundle size\n    // Therefore, we ignore it.\n    return { value, type: primitiveType };\n  }\n}\n\nexport { attributeValueToTypedAttributeValue, isAttributeObject, serializeAttributes };\n//# sourceMappingURL=attributes.js.map\n",
+    "const SEQUENCE_ATTR_KEY = 'sentry.timestamp.sequence';\n\nlet _sequenceNumber = 0;\nlet _previousTimestampMs;\n\n/**\n * Returns the `sentry.timestamp.sequence` attribute entry for a serialized telemetry item.\n *\n * The sequence number starts at 0 and increments by 1 for each item captured.\n * It resets to 0 when the current item's integer millisecond timestamp differs\n * from the previous item's integer millisecond timestamp.\n *\n * @param timestampInSeconds - The timestamp of the telemetry item in seconds.\n */\nfunction getSequenceAttribute(timestampInSeconds)\n\n {\n  const nowMs = Math.floor(timestampInSeconds * 1000);\n\n  if (_previousTimestampMs !== undefined && nowMs !== _previousTimestampMs) {\n    _sequenceNumber = 0;\n  }\n\n  const value = _sequenceNumber;\n  _sequenceNumber++;\n  _previousTimestampMs = nowMs;\n\n  return {\n    key: SEQUENCE_ATTR_KEY,\n    value: { value, type: 'integer' },\n  };\n}\n\nexport { getSequenceAttribute };\n//# sourceMappingURL=timestampSequence.js.map\n",
+    "import { withScope, getTraceContextFromScope } from '../currentScopes.js';\nimport { getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromScope } from '../tracing/dynamicSamplingContext.js';\nimport { getActiveSpan, spanToTraceContext } from './spanUtils.js';\n\n/** Extract trace information from scope */\nfunction _getTraceInfoFromScope(\n  client,\n  scope,\n) {\n  if (!scope) {\n    return [undefined, undefined];\n  }\n\n  return withScope(scope, () => {\n    const span = getActiveSpan();\n    const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n    const dynamicSamplingContext = span\n      ? getDynamicSamplingContextFromSpan(span)\n      : getDynamicSamplingContextFromScope(client, scope);\n    return [dynamicSamplingContext, traceContext];\n  });\n}\n\nexport { _getTraceInfoFromScope };\n//# sourceMappingURL=trace-info.js.map\n",
+    "import { dsnToString } from '../utils/dsn.js';\nimport { createEnvelope } from '../utils/envelope.js';\n\n/**\n * Creates a log container envelope item for a list of logs.\n *\n * @param items - The logs to include in the envelope.\n * @returns The created log container envelope item.\n */\nfunction createLogContainerEnvelopeItem(items) {\n  return [\n    {\n      type: 'log',\n      item_count: items.length,\n      content_type: 'application/vnd.sentry.items.log+json',\n    },\n    {\n      items,\n    },\n  ];\n}\n\n/**\n * Creates an envelope for a list of logs.\n *\n * Logs from multiple traces can be included in the same envelope.\n *\n * @param logs - The logs to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nfunction createLogEnvelope(\n  logs,\n  metadata,\n  tunnel,\n  dsn,\n) {\n  const headers = {};\n\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  return createEnvelope(headers, [createLogContainerEnvelopeItem(logs)]);\n}\n\nexport { createLogContainerEnvelopeItem, createLogEnvelope };\n//# sourceMappingURL=envelope.js.map\n",
+    "import { serializeAttributes } from '../attributes.js';\nimport { getGlobalSingleton } from '../carrier.js';\nimport { getClient, getIsolationScope, getCurrentScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { debug, consoleSandbox } from '../utils/debug-logger.js';\nimport { isParameterizedString } from '../utils/is.js';\nimport { getCombinedScopeData } from '../utils/scopeData.js';\nimport { _getSpanForScope } from '../utils/spanOnScope.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { getSequenceAttribute } from '../utils/timestampSequence.js';\nimport { _getTraceInfoFromScope } from '../utils/trace-info.js';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants.js';\nimport { createLogEnvelope } from './envelope.js';\n\nconst MAX_LOG_BUFFER_SIZE = 100;\n\n/**\n * Sets a log attribute if the value exists and the attribute key is not already present.\n *\n * @param logAttributes - The log attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setLogAttribute(\n  logAttributes,\n  key,\n  value,\n  setEvenIfPresent = true,\n) {\n  if (value && (!logAttributes[key] || setEvenIfPresent)) {\n    logAttributes[key] = value;\n  }\n}\n\n/**\n * Captures a serialized log event and adds it to the log buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedLog - The serialized log event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureSerializedLog(client, serializedLog) {\n  const bufferMap = _getBufferMap();\n  const logBuffer = _INTERNAL_getLogBuffer(client);\n\n  if (logBuffer === undefined) {\n    bufferMap.set(client, [serializedLog]);\n  } else {\n    if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {\n      _INTERNAL_flushLogsBuffer(client, logBuffer);\n      bufferMap.set(client, [serializedLog]);\n    } else {\n      bufferMap.set(client, [...logBuffer, serializedLog]);\n    }\n  }\n}\n\n/**\n * Captures a log event and sends it to Sentry.\n *\n * @param log - The log event to capture.\n * @param scope - A scope. Uses the current scope if not provided.\n * @param client - A client. Uses the current client if not provided.\n * @param captureSerializedLog - A function to capture the serialized log.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureLog(\n  beforeLog,\n  currentScope = getCurrentScope(),\n  captureSerializedLog = _INTERNAL_captureSerializedLog,\n) {\n  const client = currentScope?.getClient() ?? getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn('No client available to capture log.');\n    return;\n  }\n\n  const { release, environment, enableLogs = false, beforeSendLog } = client.getOptions();\n  if (!enableLogs) {\n    DEBUG_BUILD && debug.warn('logging option not enabled, log will not be captured.');\n    return;\n  }\n\n  const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n\n  const processedLogAttributes = {\n    ...beforeLog.attributes,\n  };\n\n  const {\n    user: { id, email, username },\n    attributes: scopeAttributes = {},\n  } = getCombinedScopeData(getIsolationScope(), currentScope);\n\n  setLogAttribute(processedLogAttributes, 'user.id', id, false);\n  setLogAttribute(processedLogAttributes, 'user.email', email, false);\n  setLogAttribute(processedLogAttributes, 'user.name', username, false);\n\n  setLogAttribute(processedLogAttributes, 'sentry.release', release);\n  setLogAttribute(processedLogAttributes, 'sentry.environment', environment);\n\n  const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n  setLogAttribute(processedLogAttributes, 'sentry.sdk.name', name);\n  setLogAttribute(processedLogAttributes, 'sentry.sdk.version', version);\n\n  const replay = client.getIntegrationByName\n\n('Replay');\n\n  const replayId = replay?.getReplayId(true);\n  setLogAttribute(processedLogAttributes, 'sentry.replay_id', replayId);\n\n  if (replayId && replay?.getRecordingMode() === 'buffer') {\n    // We send this so we can identify cases where the replayId is attached but the replay itself might not have been sent to Sentry\n    setLogAttribute(processedLogAttributes, 'sentry._internal.replay_is_buffering', true);\n  }\n\n  const beforeLogMessage = beforeLog.message;\n  if (isParameterizedString(beforeLogMessage)) {\n    const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage;\n    if (__sentry_template_values__?.length) {\n      processedLogAttributes['sentry.message.template'] = __sentry_template_string__;\n    }\n    __sentry_template_values__.forEach((param, index) => {\n      processedLogAttributes[`sentry.message.parameter.${index}`] = param;\n    });\n  }\n\n  const span = _getSpanForScope(currentScope);\n  // Add the parent span ID to the log attributes for trace context\n  setLogAttribute(processedLogAttributes, 'sentry.trace.parent_span_id', span?.spanContext().spanId);\n\n  const processedLog = { ...beforeLog, attributes: processedLogAttributes };\n\n  client.emit('beforeCaptureLog', processedLog);\n\n  // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog`\n  const log = beforeSendLog ? consoleSandbox(() => beforeSendLog(processedLog)) : processedLog;\n  if (!log) {\n    client.recordDroppedEvent('before_send', 'log_item', 1);\n    DEBUG_BUILD && debug.warn('beforeSendLog returned null, log will not be captured.');\n    return;\n  }\n\n  const { level, message, attributes: logAttributes = {}, severityNumber } = log;\n\n  const timestamp = timestampInSeconds();\n  const sequenceAttr = getSequenceAttribute(timestamp);\n\n  const serializedLog = {\n    timestamp,\n    level,\n    body: message,\n    trace_id: traceContext?.trace_id,\n    severity_number: severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER[level],\n    attributes: {\n      ...serializeAttributes(scopeAttributes),\n      ...serializeAttributes(logAttributes, true),\n      [sequenceAttr.key]: sequenceAttr.value,\n    },\n  };\n\n  captureSerializedLog(client, serializedLog);\n\n  client.emit('afterCaptureLog', log);\n}\n\n/**\n * Flushes the logs buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_flushLogsBuffer(client, maybeLogBuffer) {\n  const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? [];\n  if (logBuffer.length === 0) {\n    return;\n  }\n\n  const clientOptions = client.getOptions();\n  const envelope = createLogEnvelope(logBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n  // Clear the log buffer after envelopes have been constructed.\n  _getBufferMap().set(client, []);\n\n  client.emit('flushLogs');\n\n  // sendEnvelope should not throw\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the log buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the log buffer for.\n * @returns The log buffer for the given client.\n */\nfunction _INTERNAL_getLogBuffer(client) {\n  return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap() {\n  // The reference to the Client <> LogBuffer map is stored on the carrier to ensure it's always the same\n  return getGlobalSingleton('clientToLogBufferMap', () => new WeakMap());\n}\n\nexport { _INTERNAL_captureLog, _INTERNAL_captureSerializedLog, _INTERNAL_flushLogsBuffer, _INTERNAL_getLogBuffer };\n//# sourceMappingURL=internal.js.map\n",
+    "import { dsnToString } from '../utils/dsn.js';\nimport { createEnvelope } from '../utils/envelope.js';\n\n/**\n * Creates a metric container envelope item for a list of metrics.\n *\n * @param items - The metrics to include in the envelope.\n * @returns The created metric container envelope item.\n */\nfunction createMetricContainerEnvelopeItem(items) {\n  return [\n    {\n      type: 'trace_metric',\n      item_count: items.length,\n      content_type: 'application/vnd.sentry.items.trace-metric+json',\n    } ,\n    {\n      items,\n    },\n  ];\n}\n\n/**\n * Creates an envelope for a list of metrics.\n *\n * Metrics from multiple traces can be included in the same envelope.\n *\n * @param metrics - The metrics to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nfunction createMetricEnvelope(\n  metrics,\n  metadata,\n  tunnel,\n  dsn,\n) {\n  const headers = {};\n\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  return createEnvelope(headers, [createMetricContainerEnvelopeItem(metrics)]);\n}\n\nexport { createMetricContainerEnvelopeItem, createMetricEnvelope };\n//# sourceMappingURL=envelope.js.map\n",
+    "import { serializeAttributes } from '../attributes.js';\nimport { getGlobalSingleton } from '../carrier.js';\nimport { getCurrentScope, getClient, getIsolationScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getCombinedScopeData } from '../utils/scopeData.js';\nimport { _getSpanForScope } from '../utils/spanOnScope.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { getSequenceAttribute } from '../utils/timestampSequence.js';\nimport { _getTraceInfoFromScope } from '../utils/trace-info.js';\nimport { createMetricEnvelope } from './envelope.js';\n\nconst MAX_METRIC_BUFFER_SIZE = 1000;\n\n/**\n * Sets a metric attribute if the value exists and the attribute key is not already present.\n *\n * @param metricAttributes - The metric attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setMetricAttribute(\n  metricAttributes,\n  key,\n  value,\n  setEvenIfPresent = true,\n) {\n  if (value && (setEvenIfPresent || !(key in metricAttributes))) {\n    metricAttributes[key] = value;\n  }\n}\n\n/**\n * Captures a serialized metric event and adds it to the metric buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedMetric - The serialized metric event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureSerializedMetric(client, serializedMetric) {\n  const bufferMap = _getBufferMap();\n  const metricBuffer = _INTERNAL_getMetricBuffer(client);\n\n  if (metricBuffer === undefined) {\n    bufferMap.set(client, [serializedMetric]);\n  } else {\n    if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) {\n      _INTERNAL_flushMetricsBuffer(client, metricBuffer);\n      bufferMap.set(client, [serializedMetric]);\n    } else {\n      bufferMap.set(client, [...metricBuffer, serializedMetric]);\n    }\n  }\n}\n\n/**\n * Options for capturing a metric internally.\n */\n\n/**\n * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.)\n */\nfunction _enrichMetricAttributes(beforeMetric, client, user) {\n  const { release, environment } = client.getOptions();\n\n  const processedMetricAttributes = {\n    ...beforeMetric.attributes,\n  };\n\n  // Add user attributes\n  setMetricAttribute(processedMetricAttributes, 'user.id', user.id, false);\n  setMetricAttribute(processedMetricAttributes, 'user.email', user.email, false);\n  setMetricAttribute(processedMetricAttributes, 'user.name', user.username, false);\n\n  // Add Sentry metadata\n  setMetricAttribute(processedMetricAttributes, 'sentry.release', release);\n  setMetricAttribute(processedMetricAttributes, 'sentry.environment', environment);\n\n  // Add SDK metadata\n  const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n  setMetricAttribute(processedMetricAttributes, 'sentry.sdk.name', name);\n  setMetricAttribute(processedMetricAttributes, 'sentry.sdk.version', version);\n\n  // Add replay metadata\n  const replay = client.getIntegrationByName\n\n('Replay');\n\n  const replayId = replay?.getReplayId(true);\n  setMetricAttribute(processedMetricAttributes, 'sentry.replay_id', replayId);\n\n  if (replayId && replay?.getRecordingMode() === 'buffer') {\n    setMetricAttribute(processedMetricAttributes, 'sentry._internal.replay_is_buffering', true);\n  }\n\n  return {\n    ...beforeMetric,\n    attributes: processedMetricAttributes,\n  };\n}\n\n/**\n * Creates a serialized metric ready to be sent to Sentry.\n */\nfunction _buildSerializedMetric(\n  metric,\n  client,\n  currentScope,\n  scopeAttributes,\n) {\n  // Get trace context\n  const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n  const span = _getSpanForScope(currentScope);\n  const traceId = span ? span.spanContext().traceId : traceContext?.trace_id;\n  const spanId = span ? span.spanContext().spanId : undefined;\n\n  const timestamp = timestampInSeconds();\n  const sequenceAttr = getSequenceAttribute(timestamp);\n\n  return {\n    timestamp,\n    trace_id: traceId ?? '',\n    span_id: spanId,\n    name: metric.name,\n    type: metric.type,\n    unit: metric.unit,\n    value: metric.value,\n    attributes: {\n      ...serializeAttributes(scopeAttributes),\n      ...serializeAttributes(metric.attributes, 'skip-undefined'),\n      [sequenceAttr.key]: sequenceAttr.value,\n    },\n  };\n}\n\n/**\n * Captures a metric event and sends it to Sentry.\n *\n * @param metric - The metric event to capture.\n * @param options - Options for capturing the metric.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureMetric(beforeMetric, options) {\n  const currentScope = options?.scope ?? getCurrentScope();\n  const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric;\n  const client = currentScope?.getClient() ?? getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn('No client available to capture metric.');\n    return;\n  }\n\n  const { _experiments, enableMetrics, beforeSendMetric } = client.getOptions();\n\n  // todo(v11): Remove the experimental flag\n  // eslint-disable-next-line deprecation/deprecation\n  const metricsEnabled = enableMetrics ?? _experiments?.enableMetrics ?? true;\n\n  if (!metricsEnabled) {\n    DEBUG_BUILD && debug.warn('metrics option not enabled, metric will not be captured.');\n    return;\n  }\n\n  // Enrich metric with contextual attributes\n  const { user, attributes: scopeAttributes } = getCombinedScopeData(getIsolationScope(), currentScope);\n  const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user);\n\n  client.emit('processMetric', enrichedMetric);\n\n  // todo(v11): Remove the experimental `beforeSendMetric`\n  // eslint-disable-next-line deprecation/deprecation\n  const beforeSendCallback = beforeSendMetric || _experiments?.beforeSendMetric;\n  const processedMetric = beforeSendCallback ? beforeSendCallback(enrichedMetric) : enrichedMetric;\n\n  if (!processedMetric) {\n    DEBUG_BUILD && debug.log('`beforeSendMetric` returned `null`, will not send metric.');\n    return;\n  }\n\n  const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes);\n\n  DEBUG_BUILD && debug.log('[Metric]', serializedMetric);\n\n  captureSerializedMetric(client, serializedMetric);\n\n  client.emit('afterCaptureMetric', processedMetric);\n}\n\n/**\n * Flushes the metrics buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_flushMetricsBuffer(client, maybeMetricBuffer) {\n  const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? [];\n  if (metricBuffer.length === 0) {\n    return;\n  }\n\n  const clientOptions = client.getOptions();\n  const envelope = createMetricEnvelope(metricBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n  // Clear the metric buffer after envelopes have been constructed.\n  _getBufferMap().set(client, []);\n\n  client.emit('flushMetrics');\n\n  // sendEnvelope should not throw\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the metric buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the metric buffer for.\n * @returns The metric buffer for the given client.\n */\nfunction _INTERNAL_getMetricBuffer(client) {\n  return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap() {\n  // The reference to the Client <> MetricBuffer map is stored on the carrier to ensure it's always the same\n  return getGlobalSingleton('clientToMetricBufferMap', () => new WeakMap());\n}\n\nexport { _INTERNAL_captureMetric, _INTERNAL_captureSerializedMetric, _INTERNAL_flushMetricsBuffer, _INTERNAL_getMetricBuffer };\n//# sourceMappingURL=internal.js.map\n",
+    "/**\n * Calls `unref` on a timer, if the method is available on @param timer.\n *\n * `unref()` is used to allow processes to exit immediately, even if the timer\n * is still running and hasn't resolved yet.\n *\n * Use this in places where code can run on browser or server, since browsers\n * do not support `unref`.\n */\nfunction safeUnref(timer) {\n  if (typeof timer === 'object' && typeof timer.unref === 'function') {\n    timer.unref();\n  }\n  return timer;\n}\n\nexport { safeUnref };\n//# sourceMappingURL=timer.js.map\n",
+    "import { resolvedSyncPromise, rejectedSyncPromise } from './syncpromise.js';\nimport { safeUnref } from './timer.js';\n\nconst SENTRY_BUFFER_FULL_ERROR = Symbol.for('SentryBufferFullError');\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit = 100) {\n  const buffer = new Set();\n\n  function isReady() {\n    return buffer.size < limit;\n  }\n\n  /**\n   * Remove a promise from the queue.\n   *\n   * @param task Can be any PromiseLike\n   * @returns Removed promise.\n   */\n  function remove(task) {\n    buffer.delete(task);\n  }\n\n  /**\n   * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n   *\n   * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n   *        PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n   *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n   *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n   *        limit check.\n   * @returns The original promise.\n   */\n  function add(taskProducer) {\n    if (!isReady()) {\n      return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR);\n    }\n\n    // start the task and add its promise to the queue\n    const task = taskProducer();\n    buffer.add(task);\n    void task.then(\n      () => remove(task),\n      () => remove(task),\n    );\n    return task;\n  }\n\n  /**\n   * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n   * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n   * `false` otherwise\n   */\n  function drain(timeout) {\n    if (!buffer.size) {\n      return resolvedSyncPromise(true);\n    }\n\n    // We want to resolve even if one of the promises rejects\n    const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true);\n\n    if (!timeout) {\n      return drainPromise;\n    }\n\n    const promises = [\n      drainPromise,\n      new Promise(resolve => safeUnref(setTimeout(() => resolve(false), timeout))),\n    ];\n\n    return Promise.race(promises);\n  }\n\n  return {\n    get $() {\n      return Array.from(buffer);\n    },\n    add,\n    drain,\n  };\n}\n\nexport { SENTRY_BUFFER_FULL_ERROR, makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n",
+    "import { safeDateNow } from './randomSafeContext.js';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = safeDateNow()) {\n  const headerDelay = parseInt(`${header}`, 10);\n  if (!isNaN(headerDelay)) {\n    return headerDelay * 1000;\n  }\n\n  const headerDate = Date.parse(`${header}`);\n  if (!isNaN(headerDate)) {\n    return headerDate - now;\n  }\n\n  return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nfunction disabledUntil(limits, dataCategory) {\n  return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, dataCategory, now = safeDateNow()) {\n  return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nfunction updateRateLimits(\n  limits,\n  { statusCode, headers },\n  now = safeDateNow(),\n) {\n  const updatedRateLimits = {\n    ...limits,\n  };\n\n  // \"The name is case-insensitive.\"\n  // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n  const rateLimitHeader = headers?.['x-sentry-rate-limits'];\n  const retryAfterHeader = headers?.['retry-after'];\n\n  if (rateLimitHeader) {\n    /**\n     * rate limit headers are of the form\n     *     
,
,..\n * where each
is of the form\n * : : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5) ;\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { forEachEnvelopeItem, envelopeItemTypeToDataCategory, createEnvelope, serializeEnvelope, envelopeContainsItemType } from '../utils/envelope.js';\nimport { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer.js';\nimport { isRateLimited, updateRateLimits } from '../utils/ratelimit.js';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n) {\n let rateLimits = {};\n const flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n const filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', dataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return Promise.resolve({});\n }\n\n const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason) => {\n // Don't record outcomes for client reports - we don't want to create a feedback loop if client reports themselves fail to send\n if (envelopeContainsItemType(filteredEnvelope, ['client_report'])) {\n DEBUG_BUILD && debug.warn(`Dropping client report. Will not send outcomes (reason: ${reason}).`);\n return;\n }\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n response => {\n // Handle 413 Content Too Large\n // Loss of envelope content is expected so we record a send_error client report\n // https://develop.sentry.dev/sdk/expected-features/#dealing-with-network-failures\n if (response.statusCode === 413) {\n DEBUG_BUILD &&\n debug.error(\n 'Sentry responded with status code 413. Envelope was discarded due to exceeding size limits.',\n );\n recordEnvelopeLoss('send_error');\n return response;\n }\n\n // We don't want to throw on NOK responses, but we want to at least log them\n if (\n DEBUG_BUILD &&\n response.statusCode !== undefined &&\n (response.statusCode < 200 || response.statusCode >= 300)\n ) {\n debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n DEBUG_BUILD && debug.error('Encountered error running transport request:', error);\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error === SENTRY_BUFFER_FULL_ERROR) {\n DEBUG_BUILD && debug.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return Promise.resolve({});\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n", + "import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n", + "/**\n * Get a list of possible event messages from a Sentry event.\n */\nfunction getPossibleEventMessages(event) {\n const possibleMessages = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n try {\n // @ts-expect-error Try catching to save bundle size\n const lastException = event.exception.values[event.exception.values.length - 1];\n if (lastException?.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n } catch {\n // ignore errors here\n }\n\n return possibleMessages;\n}\n\nexport { getPossibleEventMessages };\n//# sourceMappingURL=eventUtils.js.map\n", + "import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes.js';\n\n/**\n * Converts a transaction event to a span JSON object.\n */\nfunction convertTransactionEventToSpanJson(event) {\n const { trace_id, parent_span_id, span_id, status, origin, data, op } = event.contexts?.trace ?? {};\n\n return {\n data: data ?? {},\n description: event.transaction,\n op,\n parent_span_id,\n span_id: span_id ?? '',\n start_timestamp: event.start_timestamp ?? 0,\n status,\n timestamp: event.timestamp,\n trace_id: trace_id ?? '',\n origin,\n profile_id: data?.[SEMANTIC_ATTRIBUTE_PROFILE_ID] ,\n exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] ,\n measurements: event.measurements,\n is_segment: true,\n };\n}\n\n/**\n * Converts a span JSON object to a transaction event.\n */\nfunction convertSpanJsonToTransactionEvent(span) {\n return {\n type: 'transaction',\n timestamp: span.timestamp,\n start_timestamp: span.start_timestamp,\n transaction: span.description,\n contexts: {\n trace: {\n trace_id: span.trace_id,\n span_id: span.span_id,\n parent_span_id: span.parent_span_id,\n op: span.op,\n status: span.status,\n origin: span.origin,\n data: {\n ...span.data,\n ...(span.profile_id && { [SEMANTIC_ATTRIBUTE_PROFILE_ID]: span.profile_id }),\n ...(span.exclusive_time && { [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: span.exclusive_time }),\n },\n },\n },\n measurements: span.measurements,\n };\n}\n\nexport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson };\n//# sourceMappingURL=transactionEvent.js.map\n", + "import { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { getTraceContextFromScope, getCurrentScope, getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegration, afterSetupIntegrations, setupIntegrations } from './integration.js';\nimport { _INTERNAL_flushLogsBuffer } from './logs/internal.js';\nimport { _INTERNAL_flushMetricsBuffer } from './metrics/internal.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext.js';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base.js';\nimport { createClientReportEnvelope } from './utils/clientreport.js';\nimport { debug } from './utils/debug-logger.js';\nimport { makeDsn, dsnToString } from './utils/dsn.js';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope.js';\nimport { getPossibleEventMessages } from './utils/eventUtils.js';\nimport { isParameterizedString, isPrimitive, isThenable, isPlainObject } from './utils/is.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4, checkOrSetAlreadyCaught } from './utils/misc.js';\nimport { parseSampleRate } from './utils/parseSampleRate.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\nimport { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer.js';\nimport { safeMathRandom } from './utils/randomSafeContext.js';\nimport { shouldIgnoreSpan, reparentChildSpans } from './utils/should-ignore-span.js';\nimport { showSpanDropWarning } from './utils/spanUtils.js';\nimport { rejectedSyncPromise } from './utils/syncpromise.js';\nimport { safeUnref } from './utils/timer.js';\nimport { convertTransactionEventToSpanJson, convertSpanJsonToTransactionEvent } from './utils/transactionEvent.js';\n\n/* eslint-disable max-lines */\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\nconst MISSING_RELEASE_FOR_SESSION_ERROR = 'Discarded session because of missing or non-string release';\n\nconst INTERNAL_ERROR_SYMBOL = Symbol.for('SentryInternalError');\nconst DO_NOT_SEND_EVENT_SYMBOL = Symbol.for('SentryDoNotSendEventError');\n\n// Default interval for flushing logs and metrics (5 seconds)\nconst DEFAULT_FLUSH_INTERVAL = 5000;\n\nfunction _makeInternalError(message) {\n return {\n message,\n [INTERNAL_ERROR_SYMBOL]: true,\n };\n}\n\nfunction _makeDoNotSendEventError(message) {\n return {\n message,\n [DO_NOT_SEND_EVENT_SYMBOL]: true,\n };\n}\n\nfunction _isInternalError(error) {\n return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error;\n}\n\nfunction _isDoNotSendEventError(error) {\n return !!error && typeof error === 'object' && DO_NOT_SEND_EVENT_SYMBOL in error;\n}\n\n/**\n * Sets up weight-based flushing for logs or metrics.\n * This helper function encapsulates the common pattern of:\n * 1. Tracking accumulated weight of items\n * 2. Flushing when weight exceeds threshold (800KB)\n * 3. Flushing after timeout period from the first item\n *\n * Uses closure variables to track weight and timeout state.\n */\nfunction setupWeightBasedFlushing\n\n(\n client,\n afterCaptureHook,\n flushHook,\n estimateSizeFn,\n flushFn,\n) {\n // Track weight and timeout in closure variables\n let weight = 0;\n let flushTimeout;\n let isTimerActive = false;\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(flushHook, () => {\n weight = 0;\n clearTimeout(flushTimeout);\n isTimerActive = false;\n });\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(afterCaptureHook, (item) => {\n weight += estimateSizeFn(item);\n\n // We flush the buffer if it exceeds 0.8 MB\n // The weight is a rough estimate, so we flush way before the payload gets too big.\n if (weight >= 800000) {\n flushFn(client);\n } else if (!isTimerActive) {\n // Only start timer if one isn't already running.\n // This prevents flushing being delayed by items that arrive close to the timeout limit\n // and thus resetting the flushing timeout and delaying items being flushed.\n isTimerActive = true;\n // Use safeUnref so the timer doesn't prevent the process from exiting\n flushTimeout = safeUnref(\n setTimeout(() => {\n flushFn(client);\n // Note: isTimerActive is reset by the flushHook handler above, not here,\n // to avoid race conditions when new items arrive during the flush.\n }, DEFAULT_FLUSH_INTERVAL),\n );\n }\n });\n\n client.on('flush', () => {\n flushFn(client);\n });\n}\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link Client._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends Client {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass Client {\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n\n /** Number of calls being processed */\n\n /** Holds flushable */\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {\n this._options = options;\n this._integrations = {};\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n this._promiseBuffer = makePromiseBuffer(options.transportOptions?.bufferSize ?? DEFAULT_TRANSPORT_BUFFER_SIZE);\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && debug.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(\n this._dsn,\n options.tunnel,\n options._metadata ? options._metadata.sdk : undefined,\n );\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n\n // Backfill enableLogs option from _experiments.enableLogs\n // TODO(v11): Remove or change default value\n // eslint-disable-next-line deprecation/deprecation\n this._options.enableLogs = this._options.enableLogs ?? this._options._experiments?.enableLogs;\n\n // Setup log flushing with weight and timeout tracking\n if (this._options.enableLogs) {\n setupWeightBasedFlushing(this, 'afterCaptureLog', 'flushLogs', estimateLogSizeInBytes, _INTERNAL_flushLogsBuffer);\n }\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const enableMetrics = this._options.enableMetrics ?? this._options._experiments?.enableMetrics ?? true;\n\n // Setup metric flushing with weight and timeout tracking\n if (enableMetrics) {\n setupWeightBasedFlushing(\n this,\n 'afterCaptureMetric',\n 'flushMetrics',\n estimateMetricSizeInBytes,\n _INTERNAL_flushMetricsBuffer,\n );\n }\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope.\n */\n captureException(exception, hint, scope) {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n this._process(\n () =>\n this.eventFromException(exception, hintWithEventId)\n .then(event => this._captureEvent(event, hintWithEventId, scope))\n .then(res => res),\n 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope.\n */\n captureMessage(\n message,\n level,\n hint,\n currentScope,\n ) {\n const hintWithEventId = {\n event_id: uuid4(),\n ...hint,\n };\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n const isMessage = isPrimitive(message);\n const promisedEvent = isMessage\n ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n : this.eventFromException(message, hintWithEventId);\n\n this._process(\n () => promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)),\n isMessage ? 'unknown' : 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a manually created event and sends it to Sentry.\n *\n * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope.\n */\n captureEvent(event, hint, currentScope) {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (hint?.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope;\n const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope;\n const dataCategory = getDataCategoryByType(event.type);\n\n this._process(\n () => this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope),\n dataCategory,\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a session.\n */\n captureSession(session) {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n\n /**\n * Create a cron monitor check in and send it to Sentry. This method is not available on all clients.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n * @param scope An optional scope containing event metadata.\n * @returns A string representing the id of the check in.\n */\n\n /**\n * Get the current Dsn.\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * Get the current options.\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * Get the SDK metadata.\n * @see SdkMetadata\n */\n getSdkMetadata() {\n return this._options._metadata;\n }\n\n /**\n * Returns the transport that is used by the client.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * Wait for all events to be sent or the timeout to expire, whichever comes first.\n *\n * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will\n * cause the client to wait until all events are sent before resolving the promise.\n * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are\n * still events in the queue when the timeout is reached.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async flush(timeout) {\n const transport = this._transport;\n if (!transport) {\n return true;\n }\n\n this.emit('flush');\n\n const clientFinished = await this._isClientDoneProcessing(timeout);\n const transportFlushed = await transport.flush(timeout);\n\n return clientFinished && transportFlushed;\n }\n\n /**\n * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}.\n *\n * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause\n * the client to wait until all events are sent before disabling itself.\n * @returns {Promise} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if\n * it doesn't.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async close(timeout) {\n _INTERNAL_flushLogsBuffer(this);\n const result = await this.flush(timeout);\n this.getOptions().enabled = false;\n this.emit('close');\n return result;\n }\n\n /**\n * Get all installed event processors.\n */\n getEventProcessors() {\n return this._eventProcessors;\n }\n\n /**\n * Adds an event processor that applies to any event processed by this client.\n */\n addEventProcessor(eventProcessor) {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * Initialize this client.\n * Call this after the client was set on a scope.\n */\n init() {\n if (\n this._isEnabled() ||\n // Force integrations to be setup even if no DSN was set when we have\n // Spotlight enabled. This is particularly important for browser as we\n // don't support the `spotlight` option there and rely on the users\n // adding the `spotlightBrowserIntegration()` to their integrations which\n // wouldn't get initialized with the check below when there's no DSN set.\n this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n ) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed.\n */\n getIntegrationByName(integrationName) {\n return this._integrations[integrationName] ;\n }\n\n /**\n * Add an integration to the client.\n * This can be used to e.g. lazy load integrations.\n * In most cases, this should not be necessary,\n * and you're better off just passing the integrations via `integrations: []` at initialization time.\n * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so.\n */\n addIntegration(integration) {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * Send a fully prepared event to Sentry.\n */\n sendEvent(event, hint = {}) {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n }\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env).then(sendResponse => this.emit('afterSendEvent', event, sendResponse));\n }\n\n /**\n * Send a session or session aggregrates to Sentry.\n */\n sendSession(session) {\n // Backfill release and environment on session\n const { release: clientReleaseOption, environment: clientEnvironmentOption = DEFAULT_ENVIRONMENT } = this._options;\n if ('aggregates' in session) {\n const sessionAttrs = session.attrs || {};\n if (!sessionAttrs.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n sessionAttrs.release = sessionAttrs.release || clientReleaseOption;\n sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption;\n session.attrs = sessionAttrs;\n } else {\n if (!session.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n session.release = session.release || clientReleaseOption;\n session.environment = session.environment || clientEnvironmentOption;\n }\n\n this.emit('beforeSendSession', session);\n\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env);\n }\n\n /**\n * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry).\n */\n recordDroppedEvent(reason, category, count = 1) {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n DEBUG_BUILD && debug.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n /* eslint-disable @typescript-eslint/unified-signatures */\n /**\n * Register a callback for whenever a span is started.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n\n /**\n * Register a hook on this client.\n */\n on(hook, callback) {\n const hookCallbacks = (this._hooks[hook] = this._hooks[hook] || new Set());\n\n // Wrap the callback in a function so that registering the same callback instance multiple\n // times results in the callback being called multiple times.\n // @ts-expect-error - The `callback` type is correct and must be a function due to the\n // individual, specific overloads of this function.\n // eslint-disable-next-line @typescript-eslint/ban-types\n const uniqueCallback = (...args) => callback(...args);\n\n hookCallbacks.add(uniqueCallback);\n\n // This function returns a callback execution handler that, when invoked,\n // deregisters a callback. This is crucial for managing instances where callbacks\n // need to be unregistered to prevent self-referencing in callback closures,\n // ensuring proper garbage collection.\n return () => {\n hookCallbacks.delete(uniqueCallback);\n };\n }\n\n /** Fire a hook whenever a span starts. */\n\n /**\n * Emit a hook that was previously registered via `on()`.\n */\n emit(hook, ...rest) {\n const callbacks = this._hooks[hook];\n if (callbacks) {\n callbacks.forEach(callback => callback(...rest));\n }\n }\n\n /**\n * Send an envelope to Sentry.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async sendEnvelope(envelope) {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n try {\n return await this._transport.send(envelope);\n } catch (reason) {\n DEBUG_BUILD && debug.error('Error while sending envelope:', reason);\n return {};\n }\n }\n\n DEBUG_BUILD && debug.error('Transport disabled');\n return {};\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * Subclasses should override this method to clean up their own resources.\n * After calling dispose(), the client should not be used anymore.\n */\n dispose() {\n // Base class has no cleanup logic - subclasses implement their own\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n _setupIntegrations() {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n // initially, set `crashed` based on the event level and update from exceptions if there are any later on\n let crashed = event.level === 'fatal';\n let errored = false;\n const exceptions = event.exception?.values;\n\n if (exceptions) {\n errored = true;\n // reset crashed to false if there are exceptions, to ensure `mechanism.handled` is respected.\n crashed = false;\n\n for (const ex of exceptions) {\n if (ex.mechanism?.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n async _isClientDoneProcessing(timeout) {\n let ticked = 0;\n\n while (!timeout || ticked < timeout) {\n await new Promise(resolve => setTimeout(resolve, 1));\n\n if (!this._numProcessing) {\n return true;\n }\n ticked++;\n }\n\n return false;\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._transport !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param currentScope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(\n event,\n hint,\n currentScope,\n isolationScope,\n ) {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations?.length) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n if (!event.type) {\n isolationScope.setLastEventId(event.event_id || hint.event_id);\n }\n\n return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n this.emit('postprocessEvent', evt, hint);\n\n evt.contexts = {\n trace: { ...evt.contexts?.trace, ...getTraceContextFromScope(currentScope) },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(\n event,\n hint = {},\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ) {\n if (DEBUG_BUILD && isErrorEvent(event)) {\n debug.log(`Captured error event \\`${getPossibleEventMessages(event)[0] || ''}\\``);\n }\n\n return this._processEvent(event, hint, currentScope, isolationScope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n if (_isDoNotSendEventError(reason)) {\n debug.log(reason.message);\n } else if (_isInternalError(reason)) {\n debug.warn(reason.message);\n } else {\n debug.warn(reason);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param currentScope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(\n event,\n hint,\n currentScope,\n isolationScope,\n ) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n if (isError && typeof parsedSampleRate === 'number' && safeMathRandom() > parsedSampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n _makeDoNotSendEventError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n const dataCategory = getDataCategoryByType(event.type);\n\n return this._prepareEvent(event, hint, currentScope, isolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory);\n throw _makeDoNotSendEventError('An event processor returned `null`, will not send event.');\n }\n\n const isInternalException = (hint.data )?.__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(this, options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw _makeDoNotSendEventError(`${beforeSendLabel} returned \\`null\\`, will not send event.`);\n }\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (isError && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore = processedEvent.sdkProcessingMetadata?.spanCountBeforeProcessing || 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (_isDoNotSendEventError(reason) || _isInternalError(reason)) {\n throw reason;\n }\n\n this.captureException(reason, {\n mechanism: {\n handled: false,\n type: 'internal',\n },\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw _makeInternalError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(taskProducer, dataCategory) {\n this._numProcessing++;\n\n void this._promiseBuffer.add(taskProducer).then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n\n if (reason === SENTRY_BUFFER_FULL_ERROR) {\n this.recordDroppedEvent('queue_overflow', dataCategory);\n }\n\n return reason;\n },\n );\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n DEBUG_BUILD && debug.log('Flushing outcomes...');\n\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && debug.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && debug.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && debug.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n */\n\n}\n\nfunction getDataCategoryByType(type) {\n return type === 'replay_event' ? 'replay' : type || 'error';\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendLabel,\n) {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return event;\n },\n e => {\n throw _makeInternalError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n client,\n options,\n event,\n hint,\n) {\n const { beforeSend, beforeSendTransaction, beforeSendSpan, ignoreSpans } = options;\n let processedEvent = event;\n\n if (isErrorEvent(processedEvent) && beforeSend) {\n return beforeSend(processedEvent, hint);\n }\n\n if (isTransactionEvent(processedEvent)) {\n // Avoid processing if we don't have to\n if (beforeSendSpan || ignoreSpans) {\n // 1. Process root span\n const rootSpanJson = convertTransactionEventToSpanJson(processedEvent);\n\n // 1.1 If the root span should be ignored, drop the whole transaction\n if (ignoreSpans?.length && shouldIgnoreSpan(rootSpanJson, ignoreSpans)) {\n // dropping the whole transaction!\n return null;\n }\n\n // 1.2 If a `beforeSendSpan` callback is defined, process the root span\n if (beforeSendSpan) {\n const processedRootSpanJson = beforeSendSpan(rootSpanJson);\n if (!processedRootSpanJson) {\n showSpanDropWarning();\n } else {\n // update event with processed root span values\n processedEvent = merge(event, convertSpanJsonToTransactionEvent(processedRootSpanJson));\n }\n }\n\n // 2. Process child spans\n if (processedEvent.spans) {\n const processedSpans = [];\n\n const initialSpans = processedEvent.spans;\n\n for (const span of initialSpans) {\n // 2.a If the child span should be ignored, reparent it to the root span\n if (ignoreSpans?.length && shouldIgnoreSpan(span, ignoreSpans)) {\n reparentChildSpans(initialSpans, span);\n continue;\n }\n\n // 2.b If a `beforeSendSpan` callback is defined, process the child span\n if (beforeSendSpan) {\n const processedSpan = beforeSendSpan(span);\n if (!processedSpan) {\n showSpanDropWarning();\n processedSpans.push(span);\n } else {\n processedSpans.push(processedSpan);\n }\n } else {\n processedSpans.push(span);\n }\n }\n\n const droppedSpans = processedEvent.spans.length - processedSpans.length;\n if (droppedSpans) {\n client.recordDroppedEvent('before_send', 'span', droppedSpans);\n }\n\n processedEvent.spans = processedSpans;\n }\n }\n\n if (beforeSendTransaction) {\n if (processedEvent.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = processedEvent.spans.length;\n processedEvent.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(processedEvent , hint);\n }\n }\n\n return processedEvent;\n}\n\nfunction isErrorEvent(event) {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\n/**\n * Estimate the size of a metric in bytes.\n *\n * @param metric - The metric to estimate the size of.\n * @returns The estimated size of the metric in bytes.\n */\nfunction estimateMetricSizeInBytes(metric) {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (metric.name) {\n weight += metric.name.length * 2;\n }\n\n // Add weight for number\n weight += 8;\n\n return weight + estimateAttributesSizeInBytes(metric.attributes);\n}\n\n/**\n * Estimate the size of a log in bytes.\n *\n * @param log - The log to estimate the size of.\n * @returns The estimated size of the log in bytes.\n */\nfunction estimateLogSizeInBytes(log) {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (log.message) {\n weight += log.message.length * 2;\n }\n\n return weight + estimateAttributesSizeInBytes(log.attributes);\n}\n\n/**\n * Estimate the size of attributes in bytes.\n *\n * @param attributes - The attributes object to estimate the size of.\n * @returns The estimated size of the attributes in bytes.\n */\nfunction estimateAttributesSizeInBytes(attributes) {\n if (!attributes) {\n return 0;\n }\n\n let weight = 0;\n\n Object.values(attributes).forEach(value => {\n if (Array.isArray(value)) {\n weight += value.length * estimatePrimitiveSizeInBytes(value[0]);\n } else if (isPrimitive(value)) {\n weight += estimatePrimitiveSizeInBytes(value);\n } else {\n // For objects values, we estimate the size of the object as 100 bytes\n weight += 100;\n }\n });\n\n return weight;\n}\n\nfunction estimatePrimitiveSizeInBytes(value) {\n if (typeof value === 'string') {\n return value.length * 2;\n } else if (typeof value === 'number') {\n return 8;\n } else if (typeof value === 'boolean') {\n return 4;\n }\n\n return 0;\n}\n\nexport { Client };\n//# sourceMappingURL=client.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getFunctionName } from '../utils/stacktrace.js';\n\n// We keep the handlers globally\nconst handlers = {};\nconst instrumented = {};\n\n/** Add a handler function. */\nfunction addHandler(type, handler) {\n handlers[type] = handlers[type] || [];\n handlers[type].push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nfunction resetInstrumentationHandlers() {\n Object.keys(handlers).forEach(key => {\n handlers[key ] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nfunction maybeInstrument(type, instrumentFn) {\n if (!instrumented[type]) {\n instrumented[type] = true;\n try {\n instrumentFn();\n } catch (e) {\n DEBUG_BUILD && debug.error(`Error while instrumenting ${type}`, e);\n }\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nfunction triggerHandlers(type, data) {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n debug.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nexport { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers };\n//# sourceMappingURL=handlers.js.map\n", + "import { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnErrorHandler = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalErrorInstrumentationHandler(handler) {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError() {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n // Note: The reason we are doing window.onerror instead of window.addEventListener('error')\n // is that we are using this handler in the Loader Script, to handle buffered errors consistently\n GLOBAL_OBJ.onerror = function (\n msg,\n url,\n line,\n column,\n error,\n ) {\n const handlerData = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalErrorInstrumentationHandler };\n//# sourceMappingURL=globalError.js.map\n", + "import { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnUnhandledRejectionHandler = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalUnhandledRejectionInstrumentationHandler(\n handler,\n) {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection')\n // is that we are using this handler in the Loader Script, to handle buffered rejections consistently\n GLOBAL_OBJ.onunhandledrejection = function (e) {\n const handlerData = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalUnhandledRejectionInstrumentationHandler };\n//# sourceMappingURL=globalUnhandledRejection.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { addGlobalErrorInstrumentationHandler } from '../instrument/globalError.js';\nimport { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils.js';\nimport { SPAN_STATUS_ERROR } from './spanstatus.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Ensure that global errors automatically set the active span status.\n */\nfunction registerSpanErrorInstrumentation() {\n if (errorsInstrumented) {\n return;\n }\n\n /**\n * If an error or unhandled promise occurs, we mark the active root span as failed\n */\n function errorCallback() {\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n if (rootSpan) {\n const message = 'internal_error';\n DEBUG_BUILD && debug.log(`[Tracing] Root span: ${message} -> Global error occurred`);\n rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message });\n }\n }\n\n // The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n // node.js default exit behaviour\n errorCallback.tag = 'sentry_tracingErrorCallback';\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\nexport { registerSpanErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n", + "/**\n * Takes the SDK metadata and adds the user-agent header to the transport options.\n * This ensures that the SDK sends the user-agent header with SDK name and version to\n * all requests made by the transport.\n *\n * @see https://develop.sentry.dev/sdk/overview/#user-agent\n */\nfunction addUserAgentToTransportHeaders(options) {\n const sdkMetadata = options._metadata?.sdk;\n const sdkUserAgent =\n sdkMetadata?.name && sdkMetadata?.version ? `${sdkMetadata?.name}/${sdkMetadata?.version}` : undefined;\n\n options.transportOptions = {\n ...options.transportOptions,\n headers: {\n ...(sdkUserAgent && { 'user-agent': sdkUserAgent }),\n ...options.transportOptions?.headers,\n },\n };\n}\n\nexport { addUserAgentToTransportHeaders };\n//# sourceMappingURL=userAgent.js.map\n", + "import { isParameterizedString, isError, isPlainObject, isErrorEvent } from './is.js';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc.js';\nimport { normalizeToSize } from './normalize.js';\nimport { extractExceptionKeysForMessage } from './object.js';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nfunction parseStackFrames(stackParser, error) {\n return stackParser(error.stack || '', 1);\n}\n\nfunction hasSentryFetchUrlHost(error) {\n return isError(error) && '__sentry_fetch_url_host__' in error && typeof error.__sentry_fetch_url_host__ === 'string';\n}\n\n/**\n * Enhances the error message with the hostname for better Sentry error reporting.\n * This allows third-party packages to still match on the original error message,\n * while Sentry gets the enhanced version with context.\n *\n * Only used internally\n * @hidden\n */\nfunction _enhanceErrorWithSentryInfo(error) {\n // If the error has a __sentry_fetch_url_host__ property (added by fetch instrumentation),\n // enhance the error message with the hostname.\n if (hasSentryFetchUrlHost(error)) {\n return `${error.message} (${error.__sentry_fetch_url_host__})`;\n }\n\n return error.message;\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nfunction exceptionFromError(stackParser, error) {\n const exception = {\n type: error.name || error.constructor.name,\n value: _enhanceErrorWithSentryInfo(error),\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj) {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (value instanceof Error) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nfunction getMessageForObject(exception) {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n }\n\n const keys = extractExceptionKeysForMessage(exception);\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as exception with message \\`${exception.message}\\``;\n }\n\n const className = getObjectClassName(exception);\n\n return `${\n className && className !== 'Object' ? `'${className}'` : 'Object'\n } captured as exception with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\nfunction getException(\n client,\n mechanism,\n exception,\n hint,\n) {\n if (isError(exception)) {\n return [exception, undefined];\n }\n\n // Mutate this!\n mechanism.synthetic = true;\n\n if (isPlainObject(exception)) {\n const normalizeDepth = client?.getOptions().normalizeDepth;\n const extras = { ['__serialized__']: normalizeToSize(exception, normalizeDepth) };\n\n const errorFromProp = getErrorPropertyFromObject(exception);\n if (errorFromProp) {\n return [errorFromProp, extras];\n }\n\n const message = getMessageForObject(exception);\n const ex = hint?.syntheticException || new Error(message);\n ex.message = message;\n\n return [ex, extras];\n }\n\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n const ex = hint?.syntheticException || new Error(exception );\n ex.message = `${exception}`;\n\n return [ex, undefined];\n}\n\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nfunction eventFromUnknownInput(\n client,\n stackParser,\n exception,\n hint,\n) {\n const providedMechanism = hint?.data && (hint.data ).mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n const [ex, extras] = getException(client, mechanism, exception, hint);\n\n const event = {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint?.event_id,\n };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const event = {\n event_id: hint?.event_id,\n level,\n };\n\n if (attachStacktrace && hint?.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n addExceptionMechanism(event, { synthetic: true });\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nexport { _enhanceErrorWithSentryInfo, eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n", + "import { createCheckInEnvelope } from './checkin.js';\nimport { Client } from './client.js';\nimport { getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { registerSpanErrorInstrumentation } from './tracing/errors.js';\nimport { debug } from './utils/debug-logger.js';\nimport { uuid4 } from './utils/misc.js';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base.js';\nimport { addUserAgentToTransportHeaders } from './transports/userAgent.js';\nimport { eventFromUnknownInput, eventFromMessage } from './utils/eventbuilder.js';\nimport { makePromiseBuffer } from './utils/promisebuffer.js';\nimport { resolvedSyncPromise } from './utils/syncpromise.js';\nimport { _getTraceInfoFromScope } from './utils/trace-info.js';\n\n/**\n * The Sentry Server Runtime Client SDK.\n */\nclass ServerRuntimeClient\n\n extends Client {\n /**\n * Creates a new Edge SDK instance.\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n // Server clients always support tracing\n registerSpanErrorInstrumentation();\n\n addUserAgentToTransportHeaders(options);\n\n super(options);\n\n this._setUpMetricsProcessing();\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n const event = eventFromUnknownInput(this, this._options.stackParser, exception, hint);\n event.level = 'error';\n\n return resolvedSyncPromise(event);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n level = 'info',\n hint,\n ) {\n return resolvedSyncPromise(\n eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace),\n );\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint, scope) {\n setCurrentRequestSessionErroredOrCrashed(hint);\n return super.captureException(exception, hint, scope);\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // If the event is of type Exception, then a request session should be captured\n const isException = !event.type && event.exception?.values && event.exception.values.length > 0;\n if (isException) {\n setCurrentRequestSessionErroredOrCrashed(hint);\n }\n\n return super.captureEvent(event, hint, scope);\n }\n\n /**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\n captureCheckIn(checkIn, monitorConfig, scope) {\n const id = 'checkInId' in checkIn && checkIn.checkInId ? checkIn.checkInId : uuid4();\n if (!this._isEnabled()) {\n DEBUG_BUILD && debug.warn('SDK not enabled, will not capture check-in.');\n return id;\n }\n\n const options = this.getOptions();\n const { release, environment, tunnel } = options;\n\n const serializedCheckIn = {\n check_in_id: id,\n monitor_slug: checkIn.monitorSlug,\n status: checkIn.status,\n release,\n environment,\n };\n\n if ('duration' in checkIn) {\n serializedCheckIn.duration = checkIn.duration;\n }\n\n if (monitorConfig) {\n serializedCheckIn.monitor_config = {\n schedule: monitorConfig.schedule,\n checkin_margin: monitorConfig.checkinMargin,\n max_runtime: monitorConfig.maxRuntime,\n timezone: monitorConfig.timezone,\n failure_issue_threshold: monitorConfig.failureIssueThreshold,\n recovery_threshold: monitorConfig.recoveryThreshold,\n };\n }\n\n const [dynamicSamplingContext, traceContext] = _getTraceInfoFromScope(this, scope);\n if (traceContext) {\n serializedCheckIn.contexts = {\n trace: traceContext,\n };\n }\n\n const envelope = createCheckInEnvelope(\n serializedCheckIn,\n dynamicSamplingContext,\n this.getSdkMetadata(),\n tunnel,\n this.getDsn(),\n );\n\n DEBUG_BUILD && debug.log('Sending checkin:', checkIn.monitorSlug, checkIn.status);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n\n return id;\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * This method clears all internal state to allow the client to be garbage collected.\n * It clears hooks, event processors, integrations, transport, and other internal references.\n *\n * Call this method after flushing to allow the client to be garbage collected.\n * After calling dispose(), the client should not be used anymore.\n *\n * Subclasses should override this method to clean up their own resources and call `super.dispose()`.\n */\n dispose() {\n DEBUG_BUILD && debug.log('Disposing client...');\n\n for (const hookName of Object.keys(this._hooks)) {\n this._hooks[hookName]?.clear();\n }\n\n this._hooks = {};\n this._eventProcessors.length = 0;\n this._integrations = {};\n this._outcomes = {};\n (this )._transport = undefined;\n this._promiseBuffer = makePromiseBuffer(DEFAULT_TRANSPORT_BUFFER_SIZE);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(\n event,\n hint,\n currentScope,\n isolationScope,\n ) {\n if (this._options.platform) {\n event.platform = event.platform || this._options.platform;\n }\n\n if (this._options.runtime) {\n event.contexts = {\n ...event.contexts,\n runtime: event.contexts?.runtime || this._options.runtime,\n };\n }\n\n if (this._options.serverName) {\n event.server_name = event.server_name || this._options.serverName;\n }\n\n return super._prepareEvent(event, hint, currentScope, isolationScope);\n }\n\n /**\n * Process a server-side metric before it is captured.\n */\n _setUpMetricsProcessing() {\n this.on('processMetric', metric => {\n if (this._options.serverName) {\n metric.attributes = {\n 'server.address': this._options.serverName,\n ...metric.attributes,\n };\n }\n });\n }\n}\n\nfunction setCurrentRequestSessionErroredOrCrashed(eventHint) {\n const requestSession = getIsolationScope().getScopeData().sdkProcessingMetadata.requestSession;\n if (requestSession) {\n // We mutate instead of doing `setSdkProcessingMetadata` because the http integration stores away a particular\n // isolationScope. If that isolation scope is forked, setting the processing metadata here will not mutate the\n // original isolation scope that the http integration stored away.\n const isHandledException = eventHint?.mechanism?.handled ?? true;\n // A request session can go from \"errored\" -> \"crashed\" but not \"crashed\" -> \"errored\".\n // Crashed (unhandled exception) is worse than errored (handled exception).\n if (isHandledException && requestSession.status !== 'crashed') {\n requestSession.status = 'errored';\n } else if (!isHandledException) {\n requestSession.status = 'crashed';\n }\n }\n}\n\nexport { ServerRuntimeClient };\n//# sourceMappingURL=server-runtime-client.js.map\n", + "import { DEBUG_BUILD } from '../../debug-build.js';\nimport { debug } from '../debug-logger.js';\n\n/**\n * Registry tracking which AI provider modules should skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n */\nconst SKIPPED_AI_PROVIDERS = new Set();\n\n/**\n * Mark AI provider modules to skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n *\n * @internal\n * @param modules - Array of npm module names to skip (e.g., '@anthropic-ai/sdk', 'openai')\n *\n * @example\n * ```typescript\n * // In LangChain integration\n * _INTERNAL_skipAiProviderWrapping(['@anthropic-ai/sdk', 'openai', '@google/generative-ai']);\n * ```\n */\nfunction _INTERNAL_skipAiProviderWrapping(modules) {\n modules.forEach(module => {\n SKIPPED_AI_PROVIDERS.add(module);\n DEBUG_BUILD && debug.log(`AI provider \"${module}\" wrapping will be skipped`);\n });\n}\n\n/**\n * Check if an AI provider module should skip instrumentation wrapping.\n *\n * @internal\n * @param module - The npm module name (e.g., '@anthropic-ai/sdk', 'openai')\n * @returns true if wrapping should be skipped\n *\n * @example\n * ```typescript\n * // In AI provider instrumentation\n * if (_INTERNAL_shouldSkipAiProviderWrapping('@anthropic-ai/sdk')) {\n * return Reflect.construct(Original, args); // Don't instrument\n * }\n * ```\n */\nfunction _INTERNAL_shouldSkipAiProviderWrapping(module) {\n return SKIPPED_AI_PROVIDERS.has(module);\n}\n\n/**\n * Clear all AI provider skip registrations.\n *\n * This is automatically called at the start of Sentry.init() to ensure a clean state\n * between different client initializations.\n *\n * @internal\n */\nfunction _INTERNAL_clearAiProviderSkips() {\n SKIPPED_AI_PROVIDERS.clear();\n DEBUG_BUILD && debug.log('Cleared AI provider skip registrations');\n}\n\nexport { _INTERNAL_clearAiProviderSkips, _INTERNAL_shouldSkipAiProviderWrapping, _INTERNAL_skipAiProviderWrapping };\n//# sourceMappingURL=providerSkip.js.map\n", + "const FALSY_ENV_VALUES = new Set(['false', 'f', 'n', 'no', 'off', '0']);\nconst TRUTHY_ENV_VALUES = new Set(['true', 't', 'y', 'yes', 'on', '1']);\n\n/**\n * A helper function which casts an ENV variable value to `true` or `false` using the constants defined above.\n * In strict mode, it may return `null` if the value doesn't match any of the predefined values.\n *\n * @param value The value of the env variable\n * @param options -- Only has `strict` key for now, which requires a strict match for `true` in TRUTHY_ENV_VALUES\n * @returns true/false if the lowercase value matches the predefined values above. If not, null in strict mode,\n * and Boolean(value) in loose mode.\n */\nfunction envToBool(value, options) {\n const normalized = String(value).toLowerCase();\n\n if (FALSY_ENV_VALUES.has(normalized)) {\n return false;\n }\n\n if (TRUTHY_ENV_VALUES.has(normalized)) {\n return true;\n }\n\n return options?.strict ? null : Boolean(value);\n}\n\nexport { FALSY_ENV_VALUES, TRUTHY_ENV_VALUES, envToBool };\n//# sourceMappingURL=envToBool.js.map\n", + "import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes.js';\n\n// Curious about `thismessage:/`? See: https://www.rfc-editor.org/rfc/rfc2557.html\n// > When the methods above do not yield an absolute URI, a base URL\n// > of \"thismessage:/\" MUST be employed. This base URL has been\n// > defined for the sole purpose of resolving relative references\n// > within a multipart/related structure when no other base URI is\n// > specified.\n//\n// We need to provide a base URL to `parseStringToURLObject` because the fetch API gives us a\n// relative URL sometimes.\n//\n// This is the only case where we need to provide a base URL to `parseStringToURLObject`\n// because the relative URL is not valid on its own.\nconst DEFAULT_BASE_URL = 'thismessage:/';\n\n/**\n * Checks if the URL object is relative\n *\n * @param url - The URL object to check\n * @returns True if the URL object is relative, false otherwise\n */\nfunction isURLObjectRelative(url) {\n return 'isRelative' in url;\n}\n\n/**\n * Parses string to a URL object\n *\n * @param url - The URL to parse\n * @returns The parsed URL object or undefined if the URL is invalid\n */\nfunction parseStringToURLObject(url, urlBase) {\n const isRelative = url.indexOf('://') <= 0 && url.indexOf('//') !== 0;\n const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : undefined);\n try {\n // Use `canParse` to short-circuit the URL constructor if it's not a valid URL\n // This is faster than trying to construct the URL and catching the error\n // Node 20+, Chrome 120+, Firefox 115+, Safari 17+\n if ('canParse' in URL && !(URL ).canParse(url, base)) {\n return undefined;\n }\n\n const fullUrlObject = new URL(url, base);\n if (isRelative) {\n // Because we used a fake base URL, we need to return a relative URL object.\n // We cannot return anything about the origin, host, etc. because it will refer to the fake base URL.\n return {\n isRelative,\n pathname: fullUrlObject.pathname,\n search: fullUrlObject.search,\n hash: fullUrlObject.hash,\n };\n }\n return fullUrlObject;\n } catch {\n // empty body\n }\n\n return undefined;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlStringFromUrlObject(url) {\n if (isURLObjectRelative(url)) {\n return url.pathname;\n }\n\n const newUrl = new URL(url);\n newUrl.search = '';\n newUrl.hash = '';\n if (['80', '443'].includes(newUrl.port)) {\n newUrl.port = '';\n }\n if (newUrl.password) {\n newUrl.password = '%filtered%';\n }\n if (newUrl.username) {\n newUrl.username = '%filtered%';\n }\n\n return newUrl.toString();\n}\n\nfunction getHttpSpanNameFromUrlObject(\n urlObject,\n kind,\n request,\n routeName,\n) {\n const method = request?.method?.toUpperCase() ?? 'GET';\n const route = routeName\n ? routeName\n : urlObject\n ? kind === 'client'\n ? getSanitizedUrlStringFromUrlObject(urlObject)\n : urlObject.pathname\n : '/';\n\n return `${method} ${route}`;\n}\n\n/**\n * Takes a parsed URL object and returns a set of attributes for the span\n * that represents the HTTP request for that url. This is used for both server\n * and client http spans.\n *\n * Follows https://opentelemetry.io/docs/specs/semconv/http/.\n *\n * @param urlObject - see {@link parseStringToURLObject}\n * @param kind - The type of HTTP operation (server or client)\n * @param spanOrigin - The origin of the span\n * @param request - The request object, see {@link PartialRequest}\n * @param routeName - The name of the route, must be low cardinality\n * @returns The span name and attributes for the HTTP operation\n */\nfunction getHttpSpanDetailsFromUrlObject(\n urlObject,\n kind,\n spanOrigin,\n request,\n routeName,\n) {\n const attributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n };\n\n if (routeName) {\n // This is based on https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name\n attributes[kind === 'server' ? 'http.route' : 'url.template'] = routeName;\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n\n if (request?.method) {\n attributes[SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] = request.method.toUpperCase();\n }\n\n if (urlObject) {\n if (urlObject.search) {\n attributes['url.query'] = urlObject.search;\n }\n if (urlObject.hash) {\n attributes['url.fragment'] = urlObject.hash;\n }\n if (urlObject.pathname) {\n attributes['url.path'] = urlObject.pathname;\n if (urlObject.pathname === '/') {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n }\n\n if (!isURLObjectRelative(urlObject)) {\n attributes[SEMANTIC_ATTRIBUTE_URL_FULL] = urlObject.href;\n if (urlObject.port) {\n attributes['url.port'] = urlObject.port;\n }\n if (urlObject.protocol) {\n attributes['url.scheme'] = urlObject.protocol;\n }\n if (urlObject.hostname) {\n attributes[kind === 'server' ? 'server.address' : 'url.domain'] = urlObject.hostname;\n }\n }\n }\n\n return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes];\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url) {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n return (urlPath.split(/[?#]/, 1) )[0];\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlString(url) {\n const { protocol, host, path } = url;\n\n const filteredHost =\n host\n // Always filter out authority\n ?.replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '') || '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\n/**\n * Strips the content from a data URL, returning a placeholder with the MIME type.\n *\n * Data URLs can be very long (e.g. base64 encoded scripts for Web Workers),\n * with little valuable information, often leading to envelopes getting dropped due\n * to size limit violations. Therefore, we strip data URLs and replace them with a\n * placeholder.\n *\n * @param url - The URL to process\n * @param includeDataPrefix - If true, includes the first 10 characters of the data stream\n * for debugging (e.g., to identify magic bytes like WASM's AGFzbQ).\n * Defaults to true.\n * @returns For data URLs, returns a short format like `data:text/javascript;base64,SGVsbG8gV2... [truncated]`.\n * For non-data URLs, returns the original URL unchanged.\n */\nfunction stripDataUrlContent(url, includeDataPrefix = true) {\n if (url.startsWith('data:')) {\n // Match the MIME type (everything after 'data:' until the first ';' or ',')\n const match = url.match(/^data:([^;,]+)/);\n const mimeType = match ? match[1] : 'text/plain';\n const isBase64 = url.includes(';base64,');\n\n // Find where the actual data starts (after the comma)\n const dataStart = url.indexOf(',');\n let dataPrefix = '';\n if (includeDataPrefix && dataStart !== -1) {\n const data = url.slice(dataStart + 1);\n // Include first 10 chars of data to help identify content (e.g., magic bytes)\n dataPrefix = data.length > 10 ? `${data.slice(0, 10)}... [truncated]` : data;\n }\n\n return `data:${mimeType}${isBase64 ? ',base64' : ''}${dataPrefix ? `,${dataPrefix}` : ''}`;\n }\n return url;\n}\n\nexport { getHttpSpanDetailsFromUrlObject, getSanitizedUrlString, getSanitizedUrlStringFromUrlObject, isURLObjectRelative, parseStringToURLObject, parseUrl, stripDataUrlContent, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n", + "import { SDK_VERSION } from './version.js';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nfunction applySdkMetadata(options, name, names = [name], source = 'npm') {\n const sdk = ((options._metadata = options._metadata || {}).sdk = options._metadata.sdk || {});\n\n if (!sdk.name) {\n sdk.name = `sentry.javascript.${name}`;\n sdk.packages = names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n }));\n sdk.version = SDK_VERSION;\n }\n}\n\nexport { applySdkMetadata };\n//# sourceMappingURL=sdkMetadata.js.map\n", + "import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getClient, getCurrentScope } from '../currentScopes.js';\nimport { isEnabled } from '../exports.js';\nimport { debug } from './debug-logger.js';\nimport { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils.js';\nimport { getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromScope } from '../tracing/dynamicSamplingContext.js';\nimport { dynamicSamplingContextToSentryBaggageHeader } from './baggage.js';\nimport { TRACEPARENT_REGEXP, generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js';\n\n/**\n * Extracts trace propagation data from the current span or from the client's scope (via transaction or propagation\n * context) and serializes it to `sentry-trace` and `baggage` values. These values can be used to propagate\n * a trace via our tracing Http headers or Html `` tags.\n *\n * This function also applies some validation to the generated sentry-trace and baggage values to ensure that\n * only valid strings are returned.\n *\n * If (@param options.propagateTraceparent) is `true`, the function will also generate a `traceparent` value,\n * following the W3C traceparent header format.\n *\n * @returns an object with the tracing data values. The object keys are the name of the tracing key to be used as header\n * or meta tag name.\n */\nfunction getTraceData(\n options = {},\n) {\n const client = options.client || getClient();\n if (!isEnabled() || !client) {\n return {};\n }\n\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getTraceData) {\n return acs.getTraceData(options);\n }\n\n const scope = options.scope || getCurrentScope();\n const span = options.span || getActiveSpan();\n const sentryTrace = span ? spanToTraceHeader(span) : scopeToTraceHeader(scope);\n const dsc = span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromScope(client, scope);\n const baggage = dynamicSamplingContextToSentryBaggageHeader(dsc);\n\n const isValidSentryTraceHeader = TRACEPARENT_REGEXP.test(sentryTrace);\n if (!isValidSentryTraceHeader) {\n debug.warn('Invalid sentry-trace data. Cannot generate trace data');\n return {};\n }\n\n const traceData = {\n 'sentry-trace': sentryTrace,\n baggage,\n };\n\n if (options.propagateTraceparent) {\n traceData.traceparent = span ? spanToTraceparentHeader(span) : scopeToTraceparentHeader(scope);\n }\n\n return traceData;\n}\n\n/**\n * Get a sentry-trace header value for the given scope.\n */\nfunction scopeToTraceHeader(scope) {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateSentryTraceHeader(traceId, propagationSpanId, sampled);\n}\n\nfunction scopeToTraceparentHeader(scope) {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateTraceparentHeader(traceId, propagationSpanId, sampled);\n}\n\nexport { getTraceData };\n//# sourceMappingURL=traceData.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { stringMatchesSomePattern } from './string.js';\n\nconst NOT_PROPAGATED_MESSAGE =\n '[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:';\n\n/**\n * Check if a given URL should be propagated to or not.\n * If no url is defined, or no trace propagation targets are defined, this will always return `true`.\n * You can also optionally provide a decision map, to cache decisions and avoid repeated regex lookups.\n */\nfunction shouldPropagateTraceForUrl(\n url,\n tracePropagationTargets,\n decisionMap,\n) {\n if (typeof url !== 'string' || !tracePropagationTargets) {\n return true;\n }\n\n const cachedDecision = decisionMap?.get(url);\n if (cachedDecision !== undefined) {\n DEBUG_BUILD && !cachedDecision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return cachedDecision;\n }\n\n const decision = stringMatchesSomePattern(url, tracePropagationTargets);\n decisionMap?.set(url, decision);\n\n DEBUG_BUILD && !decision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return decision;\n}\n\nexport { shouldPropagateTraceForUrl };\n//# sourceMappingURL=tracePropagationTargets.js.map\n", + "/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nfunction debounce(func, wait, options) {\n let callbackReturnValue;\n\n let timerId;\n let maxTimerId;\n\n const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0;\n const setTimeoutImpl = options?.setTimeoutImpl || setTimeout;\n\n function invokeFunc() {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers() {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush() {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced() {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeoutImpl(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeoutImpl(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n\nexport { debounce };\n//# sourceMappingURL=debounce.js.map\n", + "/**\n * Transforms a `Headers` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into a simple key-value dict.\n * The header keys will be lower case: e.g. A \"Content-Type\" header will be stored as \"content-type\".\n */\nfunction winterCGHeadersToDict(winterCGHeaders) {\n const headers = {};\n try {\n winterCGHeaders.forEach((value, key) => {\n if (typeof value === 'string') {\n // We check that value is a string even though it might be redundant to make sure prototype pollution is not possible.\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Convert common request headers to a simple dictionary.\n */\nfunction headersToDict(reqHeaders) {\n const headers = Object.create(null);\n\n try {\n Object.entries(reqHeaders).forEach(([key, value]) => {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Converts a `Request` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into the format that the `RequestData` integration understands.\n */\nfunction winterCGRequestToRequestData(req) {\n const headers = winterCGHeadersToDict(req.headers);\n\n return {\n method: req.method,\n url: req.url,\n query_string: extractQueryParamsFromUrl(req.url),\n headers,\n // TODO: Can we extract body data from the request?\n };\n}\n\n/**\n * Convert a HTTP request object to RequestEventData to be passed as normalizedRequest.\n * Instead of allowing `PolymorphicRequest` to be passed,\n * we want to be more specific and generally require a http.IncomingMessage-like object.\n */\nfunction httpRequestToRequestData(request\n\n) {\n const headers = request.headers || {};\n\n // Check for x-forwarded-host first, then fall back to host header\n const forwardedHost = typeof headers['x-forwarded-host'] === 'string' ? headers['x-forwarded-host'] : undefined;\n const host = forwardedHost || (typeof headers.host === 'string' ? headers.host : undefined);\n\n // Check for x-forwarded-proto first, then fall back to existing protocol detection\n const forwardedProto = typeof headers['x-forwarded-proto'] === 'string' ? headers['x-forwarded-proto'] : undefined;\n const protocol = forwardedProto || request.protocol || (request.socket?.encrypted ? 'https' : 'http');\n\n const url = request.url || '';\n\n const absoluteUrl = getAbsoluteUrl({\n url,\n host,\n protocol,\n });\n\n // This is non-standard, but may be sometimes set\n // It may be overwritten later by our own body handling\n const data = (request ).body || undefined;\n\n // This is non-standard, but may be set on e.g. Next.js or Express requests\n const cookies = (request ).cookies;\n\n return {\n url: absoluteUrl,\n method: request.method,\n query_string: extractQueryParamsFromUrl(url),\n headers: headersToDict(headers),\n cookies,\n data,\n };\n}\n\nfunction getAbsoluteUrl({\n url,\n protocol,\n host,\n}\n\n) {\n if (url?.startsWith('http')) {\n return url;\n }\n\n if (url && host) {\n return `${protocol}://${host}${url}`;\n }\n\n return undefined;\n}\n\nconst SENSITIVE_HEADER_SNIPPETS = [\n 'auth',\n 'token',\n 'secret',\n 'session', // for the user_session cookie\n 'password',\n 'passwd',\n 'pwd',\n 'key',\n 'jwt',\n 'bearer',\n 'sso',\n 'saml',\n 'csrf',\n 'xsrf',\n 'credentials',\n // Always treat cookie headers as sensitive in case individual key-value cookie pairs cannot properly be extracted\n 'set-cookie',\n 'cookie',\n];\n\nconst PII_HEADER_SNIPPETS = ['x-forwarded-', '-user'];\n\n/**\n * Converts incoming HTTP request or response headers to OpenTelemetry span attributes following semantic conventions.\n * Header names are converted to the format: http..header.\n * where is the header name in lowercase with dashes converted to underscores.\n *\n * @param lifecycle - The lifecycle of the headers, either 'request' or 'response'\n *\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-response-header\n *\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-request-header-key\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-response-header-key\n */\nfunction httpHeadersToSpanAttributes(\n headers,\n sendDefaultPii = false,\n lifecycle = 'request',\n) {\n const spanAttributes = {};\n\n try {\n Object.entries(headers).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n const lowerCasedHeaderKey = key.toLowerCase();\n const isCookieHeader = lowerCasedHeaderKey === 'cookie' || lowerCasedHeaderKey === 'set-cookie';\n\n if (isCookieHeader && typeof value === 'string' && value !== '') {\n // Set-Cookie: single cookie with attributes (\"name=value; HttpOnly; Secure\")\n // Cookie: multiple cookies separated by \"; \" (\"cookie1=value1; cookie2=value2\")\n const isSetCookie = lowerCasedHeaderKey === 'set-cookie';\n const semicolonIndex = value.indexOf(';');\n const cookieString = isSetCookie && semicolonIndex !== -1 ? value.substring(0, semicolonIndex) : value;\n const cookies = isSetCookie ? [cookieString] : cookieString.split('; ');\n\n for (const cookie of cookies) {\n // Split only at the first '=' to preserve '=' characters in cookie values\n const equalSignIndex = cookie.indexOf('=');\n const cookieKey = equalSignIndex !== -1 ? cookie.substring(0, equalSignIndex) : cookie;\n const cookieValue = equalSignIndex !== -1 ? cookie.substring(equalSignIndex + 1) : '';\n\n const lowerCasedCookieKey = cookieKey.toLowerCase();\n\n addSpanAttribute(\n spanAttributes,\n lowerCasedHeaderKey,\n lowerCasedCookieKey,\n cookieValue,\n sendDefaultPii,\n lifecycle,\n );\n }\n } else {\n addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii, lifecycle);\n }\n });\n } catch {\n // Return empty object if there's an error\n }\n\n return spanAttributes;\n}\n\nfunction normalizeAttributeKey(key) {\n return key.replace(/-/g, '_');\n}\n\nfunction addSpanAttribute(\n spanAttributes,\n headerKey,\n cookieKey,\n value,\n sendPii,\n lifecycle,\n) {\n const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii);\n if (headerValue == null) {\n return;\n }\n\n const normalizedKey = `http.${lifecycle}.header.${normalizeAttributeKey(headerKey)}${cookieKey ? `.${normalizeAttributeKey(cookieKey)}` : ''}`;\n spanAttributes[normalizedKey] = headerValue;\n}\n\nfunction handleHttpHeader(\n lowerCasedKey,\n value,\n sendPii,\n) {\n const isSensitive = sendPii\n ? SENSITIVE_HEADER_SNIPPETS.some(snippet => lowerCasedKey.includes(snippet))\n : [...PII_HEADER_SNIPPETS, ...SENSITIVE_HEADER_SNIPPETS].some(snippet => lowerCasedKey.includes(snippet));\n\n if (isSensitive) {\n return '[Filtered]';\n } else if (Array.isArray(value)) {\n return value.map(v => (v != null ? String(v) : v)).join(';');\n } else if (typeof value === 'string') {\n return value;\n }\n\n return undefined;\n}\n\n/** Extract the query params from an URL. */\nfunction extractQueryParamsFromUrl(url) {\n // url is path and query string\n if (!url) {\n return;\n }\n\n try {\n // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n // hostname as the base. Since the point here is just to grab the query string, it doesn't matter what we use.\n const queryParams = new URL(url, 'http://s.io').search.slice(1);\n return queryParams.length ? queryParams : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport { extractQueryParamsFromUrl, headersToDict, httpHeadersToSpanAttributes, httpRequestToRequestData, winterCGHeadersToDict, winterCGRequestToRequestData };\n//# sourceMappingURL=request.js.map\n", + "import { getClient, getIsolationScope } from './currentScopes.js';\nimport { consoleSandbox } from './utils/debug-logger.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n */\nfunction addBreadcrumb(breadcrumb, hint) {\n const client = getClient();\n const isolationScope = getIsolationScope();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions();\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint))\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n\nexport { addBreadcrumb };\n//# sourceMappingURL=breadcrumbs.js.map\n", + "import { getClient } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { getOriginalFunction } from '../utils/object.js';\n\nlet originalFunctionToString;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n Function.prototype.toString = function ( ...args) {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() ) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) ;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nconst functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\nexport { functionToStringIntegration };\n//# sourceMappingURL=functiontostring.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getPossibleEventMessages } from '../utils/eventUtils.js';\nimport { getEventDescription } from '../utils/misc.js';\nimport { stringMatchesSomePattern } from '../utils/string.js';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n /^Can't find variable: gmo$/, // Error from Google Search App https://issuetracker.google.com/issues/396043331\n /^undefined is not an object \\(evaluating 'a\\.[A-Z]'\\)$/, // Random error that happens but not actionable or noticeable to end-users.\n /can't redefine non-configurable property \"solana\"/, // Probably a browser extension or custom browser (Brave) throwing this error\n /vv\\(\\)\\.getRestrictions is not a function/, // Error thrown by GTM, seemingly not affecting end-users\n /Can't find variable: _AutofillCallbackHandler/, // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n /Object Not Found Matching Id:\\d+, MethodName:simulateEvent/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n /^Java exception was raised during method invocation$/, // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065)\n];\n\n/** Options for the EventFilters integration */\n\nconst INTEGRATION_NAME = 'EventFilters';\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n */\nconst eventFiltersIntegration = defineIntegration((options = {}) => {\n let mergedOptions;\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n },\n processEvent(event, _hint, client) {\n if (!mergedOptions) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n }\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n});\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n *\n * @deprecated this integration was renamed and will be removed in a future major version.\n * Use `eventFiltersIntegration` instead.\n */\nconst inboundFiltersIntegration = defineIntegration(((options = {}) => {\n return {\n ...eventFiltersIntegration(options),\n name: 'InboundFilters',\n };\n}) );\n\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n };\n}\n\nfunction _shouldDropEvent(event, options) {\n if (!event.type) {\n // Filter errors\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isUselessError(event)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n event,\n )}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n } else if (event.type === 'transaction') {\n // Filter transactions\n\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n if (!ignoreErrors?.length) {\n return false;\n }\n\n return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n if (!ignoreTransactions?.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n if (!denyUrls?.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n if (!allowUrls?.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n // If there are linked exceptions or exception aggregates we only want to match against the top frame of the \"root\" (the main exception)\n // The root always comes last in linked exceptions\n const rootException = [...(event.exception?.values ?? [])]\n .reverse()\n .find(value => value.mechanism?.parent_id === undefined && value.stacktrace?.frames?.length);\n const frames = rootException?.stacktrace?.frames;\n return frames ? _getLastValidUrl(frames) : null;\n } catch {\n DEBUG_BUILD && debug.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nfunction _isUselessError(event) {\n // We only want to consider events for dropping that actually have recorded exception values.\n if (!event.exception?.values?.length) {\n return false;\n }\n\n return (\n // No top-level message\n !event.message &&\n // There are no exception values that have a stacktrace, a non-generic-Error type or value\n !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n );\n}\n\nexport { eventFiltersIntegration, inboundFiltersIntegration };\n//# sourceMappingURL=eventFilters.js.map\n", + "import { isInstanceOf } from './is.js';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nfunction applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation,\n parser,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception?.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException ,\n key,\n event.exception.values,\n originalException,\n 0,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error,\n key,\n prevExceptions,\n exception,\n exceptionId,\n) {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, error[key] );\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key] ,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (isExceptionGroup(error)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, childError );\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError ,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction isExceptionGroup(error) {\n return Array.isArray(error.errors);\n}\n\nfunction applyExceptionGroupFieldsForParentException(\n exception,\n exceptionId,\n error,\n) {\n exception.mechanism = {\n handled: true,\n type: 'auto.core.linked_errors',\n ...(isExceptionGroup(error) && { is_exception_group: true }),\n ...exception.mechanism,\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception,\n source,\n exceptionId,\n parentId,\n) {\n exception.mechanism = {\n handled: true,\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\nexport { applyAggregateErrorsToEvent };\n//# sourceMappingURL=aggregate-errors.js.map\n", + "import { defineIntegration } from '../integration.js';\nimport { applyAggregateErrorsToEvent } from '../utils/aggregate-errors.js';\nimport { exceptionFromError } from '../utils/eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(exceptionFromError, options.stackParser, key, limit, event, hint);\n },\n };\n}) ;\n\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\nexport { linkedErrorsIntegration };\n//# sourceMappingURL=linkederrors.js.map\n", + "/**\n * This code was originally copied from the 'cookie` module at v0.5.0 and was simplified for our use case.\n * https://github.com/jshttp/cookie/blob/a0c84147aab6266bdb3996cf4062e93907c0b0fc/index.js\n * It had the following license:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Roman Shtylman \n * Copyright (c) 2015 Douglas Christopher Wilson \n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/**\n * Parses a cookie string\n */\nfunction parseCookie(str) {\n const obj = {};\n let index = 0;\n\n while (index < str.length) {\n const eqIdx = str.indexOf('=', index);\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break;\n }\n\n let endIdx = str.indexOf(';', index);\n\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1;\n continue;\n }\n\n const key = str.slice(index, eqIdx).trim();\n\n // only assign once\n if (undefined === obj[key]) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1);\n }\n\n try {\n obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val;\n } catch {\n obj[key] = val;\n }\n }\n\n index = endIdx + 1;\n }\n\n return obj;\n}\n\nexport { parseCookie };\n//# sourceMappingURL=cookie.js.map\n", + "// Vendored / modified from @sergiodxa/remix-utils\n\n// https://github.com/sergiodxa/remix-utils/blob/02af80e12829a53696bfa8f3c2363975cf59f55e/src/server/get-client-ip-address.ts\n// MIT License\n\n// Copyright (c) 2021 Sergio Xalambrí\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// The headers to check, in priority order\nconst ipHeaderNames = [\n 'X-Client-IP',\n 'X-Forwarded-For',\n 'Fly-Client-IP',\n 'CF-Connecting-IP',\n 'Fastly-Client-Ip',\n 'True-Client-Ip',\n 'X-Real-IP',\n 'X-Cluster-Client-IP',\n 'X-Forwarded',\n 'Forwarded-For',\n 'Forwarded',\n 'X-Vercel-Forwarded-For',\n];\n\n/**\n * Get the IP address of the client sending a request.\n *\n * It receives a Request headers object and use it to get the\n * IP address from one of the following headers in order.\n *\n * If the IP address is valid, it will be returned. Otherwise, null will be\n * returned.\n *\n * If the header values contains more than one IP address, the first valid one\n * will be returned.\n */\nfunction getClientIPAddress(headers) {\n // Build a map of lowercase header names to their values for case-insensitive lookup\n // This is needed because headers from different sources may have different casings\n const lowerCaseHeaders = {};\n\n for (const key of Object.keys(headers)) {\n lowerCaseHeaders[key.toLowerCase()] = headers[key];\n }\n\n // This will end up being Array because of the various possible values a header\n // can take\n const headerValues = ipHeaderNames.map((headerName) => {\n const rawValue = lowerCaseHeaders[headerName.toLowerCase()];\n const value = Array.isArray(rawValue) ? rawValue.join(';') : rawValue;\n\n if (headerName === 'Forwarded') {\n return parseForwardedHeader(value);\n }\n\n return value?.split(',').map((v) => v.trim());\n });\n\n // Flatten the array and filter out any falsy entries\n const flattenedHeaderValues = headerValues.reduce((acc, val) => {\n if (!val) {\n return acc;\n }\n\n return acc.concat(val);\n }, []);\n\n // Find the first value which is a valid IP address, if any\n const ipAddress = flattenedHeaderValues.find(ip => ip !== null && isIP(ip));\n\n return ipAddress || null;\n}\n\nfunction parseForwardedHeader(value) {\n if (!value) {\n return null;\n }\n\n for (const part of value.split(';')) {\n if (part.startsWith('for=')) {\n return part.slice(4);\n }\n }\n\n return null;\n}\n\n//\n/**\n * Custom method instead of importing this from `net` package, as this only exists in node\n * Accepts:\n * 127.0.0.1\n * 192.168.1.1\n * 192.168.1.255\n * 255.255.255.255\n * 10.1.1.1\n * 0.0.0.0\n * 2b01:cb19:8350:ed00:d0dd:fa5b:de31:8be5\n *\n * Rejects:\n * 1.1.1.01\n * 30.168.1.255.1\n * 127.1\n * 192.168.1.256\n * -1.2.3.4\n * 1.1.1.1.\n * 3...3\n * 192.168.1.099\n */\nfunction isIP(str) {\n const regex =\n /(?:^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$)|(?:^(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|(?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/;\n return regex.test(str);\n}\n\nexport { getClientIPAddress, ipHeaderNames };\n//# sourceMappingURL=getIpAddress.js.map\n", + "import { defineIntegration } from '../integration.js';\nimport { parseCookie } from '../utils/cookie.js';\nimport { getClientIPAddress, ipHeaderNames } from '../vendor/getIpAddress.js';\n\n// TODO(v11): Change defaults based on `sendDefaultPii`\nconst DEFAULT_INCLUDE = {\n cookies: true,\n data: true,\n headers: true,\n query_string: true,\n url: true,\n};\n\nconst INTEGRATION_NAME = 'RequestData';\n\nconst _requestDataIntegration = ((options = {}) => {\n const include = {\n ...DEFAULT_INCLUDE,\n ...options.include,\n };\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event, _hint, client) {\n const { sdkProcessingMetadata = {} } = event;\n const { normalizedRequest, ipAddress } = sdkProcessingMetadata;\n\n const includeWithDefaultPiiApplied = {\n ...include,\n ip: include.ip ?? client.getOptions().sendDefaultPii,\n };\n\n if (normalizedRequest) {\n addNormalizedRequestDataToEvent(event, normalizedRequest, { ipAddress }, includeWithDefaultPiiApplied);\n }\n\n return event;\n },\n };\n}) ;\n\n/**\n * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core`\n * so it can be used in cross-platform SDKs like `@sentry/nextjs`.\n */\nconst requestDataIntegration = defineIntegration(_requestDataIntegration);\n\n/**\n * Add already normalized request data to an event.\n * This mutates the passed in event.\n */\nfunction addNormalizedRequestDataToEvent(\n event,\n req,\n // Data that should not go into `event.request` but is somehow related to requests\n additionalData,\n include,\n) {\n event.request = {\n ...event.request,\n ...extractNormalizedRequestData(req, include),\n };\n\n if (include.ip) {\n const ip = (req.headers && getClientIPAddress(req.headers)) || additionalData.ipAddress;\n if (ip) {\n event.user = {\n ...event.user,\n ip_address: ip,\n };\n }\n }\n}\n\nfunction extractNormalizedRequestData(\n normalizedRequest,\n include,\n) {\n const requestData = {};\n const headers = { ...normalizedRequest.headers };\n\n if (include.headers) {\n requestData.headers = headers;\n\n // Remove the Cookie header in case cookie data should not be included in the event\n if (!include.cookies) {\n delete (headers ).cookie;\n }\n\n // Remove IP headers in case IP data should not be included in the event\n if (!include.ip) {\n ipHeaderNames.forEach(ipHeaderName => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (headers )[ipHeaderName];\n });\n }\n }\n\n requestData.method = normalizedRequest.method;\n\n if (include.url) {\n requestData.url = normalizedRequest.url;\n }\n\n if (include.cookies) {\n const cookies = normalizedRequest.cookies || (headers?.cookie ? parseCookie(headers.cookie) : undefined);\n requestData.cookies = cookies || {};\n }\n\n if (include.query_string) {\n requestData.query_string = normalizedRequest.query_string;\n }\n\n if (include.data) {\n requestData.data = normalizedRequest.data;\n }\n\n return requestData;\n}\n\nexport { requestDataIntegration };\n//# sourceMappingURL=requestdata.js.map\n", + "import { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger.js';\nimport { fill } from '../utils/object.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addConsoleInstrumentationHandler(handler) {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole() {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod) {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args) {\n const handlerData = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log?.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n\nexport { addConsoleInstrumentationHandler };\n//# sourceMappingURL=console.js.map\n", + "/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (\n level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n ) ;\n}\n\nexport { severityLevelFromString };\n//# sourceMappingURL=severity.js.map\n", + "// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js\n//\n// Copyright Joyent, Inc.and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/** JSDoc */\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n let up = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\S+:\\\\|\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^/\\\\]+?|)(\\.[^./\\\\]*|))(?:[/\\\\]*)$/;\n/** JSDoc */\nfunction splitPath(filename) {\n // Truncate files names greater than 1024 characters to avoid regex dos\n // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172\n const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename;\n const parts = splitPathRe.exec(truncated);\n return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nfunction resolve(...args) {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : '/';\n\n // Skip empty entries\n if (!path) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(\n resolvedPath.split('/').filter(p => !!p),\n !resolvedAbsolute,\n ).join('/');\n\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr) {\n let start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') {\n break;\n }\n }\n\n let end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') {\n break;\n }\n }\n\n if (start > end) {\n return [];\n }\n return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nfunction relative(from, to) {\n /* eslint-disable no-param-reassign */\n from = resolve(from).slice(1);\n to = resolve(to).slice(1);\n /* eslint-enable no-param-reassign */\n\n const fromParts = trim(from.split('/'));\n const toParts = trim(to.split('/'));\n\n const length = Math.min(fromParts.length, toParts.length);\n let samePartsLength = length;\n for (let i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n let outputParts = [];\n for (let i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nfunction normalizePath(path) {\n const isPathAbsolute = isAbsolute(path);\n const trailingSlash = path.slice(-1) === '/';\n\n // Normalize the path\n let normalizedPath = normalizeArray(\n path.split('/').filter(p => !!p),\n !isPathAbsolute,\n ).join('/');\n\n if (!normalizedPath && !isPathAbsolute) {\n normalizedPath = '.';\n }\n if (normalizedPath && trailingSlash) {\n normalizedPath += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nfunction isAbsolute(path) {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nfunction join(...args) {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nfunction dirname(path) {\n const result = splitPath(path);\n const root = result[0] || '';\n let dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.slice(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\n/** JSDoc */\nfunction basename(path, ext) {\n let f = splitPath(path)[2] || '';\n if (ext && f.slice(ext.length * -1) === ext) {\n f = f.slice(0, f.length - ext.length);\n }\n return f;\n}\n\nexport { basename, dirname, isAbsolute, join, normalizePath, relative, resolve };\n//# sourceMappingURL=path.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getActiveSpan } from '../utils/spanUtils.js';\nimport { SPAN_STATUS_ERROR } from '../tracing/spanstatus.js';\nimport { startSpanManual } from '../tracing/trace.js';\n\n// Portable instrumentation for https://github.com/porsager/postgres\n// This can be used in any environment (Node.js, Cloudflare Workers, etc.)\n// without depending on OpenTelemetry module hooking.\n\n\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\nconst CONNECTION_CONTEXT_SYMBOL = Symbol('sentryPostgresConnectionContext');\n\n// Use the same Symbol.for() markers as the Node.js OTel instrumentation\n// so that both approaches recognize each other and prevent double-wrapping.\nconst INSTRUMENTED_MARKER = Symbol.for('sentry.instrumented.postgresjs');\n// Marker to track if a query was created from an instrumented sql instance.\n// This prevents double-spanning when both the wrapper and the Node.js Query.prototype\n// fallback patch are active simultaneously.\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\n/**\n * Instruments a postgres.js `sql` instance with Sentry tracing.\n *\n * This is a portable instrumentation function that works in any environment\n * (Node.js, Cloudflare Workers, etc.) without depending on OpenTelemetry.\n *\n * @example\n * ```javascript\n * import postgres from 'postgres';\n * import * as Sentry from '@sentry/cloudflare'; // or '@sentry/deno'\n *\n * const sql = Sentry.instrumentPostgresJsSql(\n * postgres({ host: 'localhost', database: 'mydb' })\n * );\n *\n * // All queries now create Sentry spans\n * await sql`SELECT * FROM users WHERE id = ${userId}`;\n * ```\n */\nfunction instrumentPostgresJsSql(sql, options) {\n if (!sql || typeof sql !== 'function') {\n DEBUG_BUILD && debug.warn('instrumentPostgresJsSql: provided value is not a valid postgres.js sql instance');\n return sql;\n }\n\n return _instrumentSqlInstance(sql, { requireParentSpan: true, ...options }) ;\n}\n\n/**\n * Instruments a sql instance by wrapping its query execution methods.\n */\nfunction _instrumentSqlInstance(\n sql,\n options,\n parentConnectionContext,\n) {\n // Check if already instrumented to prevent double-wrapping\n // Using Symbol.for() ensures the marker survives proxying\n if ((sql )[INSTRUMENTED_MARKER]) {\n return sql;\n }\n\n // Wrap the sql function to intercept query creation\n const proxiedSql = new Proxy(sql , {\n apply(target, thisArg, argumentsList) {\n const query = Reflect.apply(target, thisArg, argumentsList);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query , proxiedSql, options);\n }\n\n return query;\n },\n get(target, prop) {\n const original = (target )[prop];\n\n if (typeof prop !== 'string' || typeof original !== 'function') {\n return original;\n }\n\n // Wrap methods that return PendingQuery objects (unsafe, file)\n if (prop === 'unsafe' || prop === 'file') {\n return _wrapQueryMethod(original , target, proxiedSql, options);\n }\n\n // Wrap begin and reserve (not savepoint to avoid duplicate spans)\n if (prop === 'begin' || prop === 'reserve') {\n return _wrapCallbackMethod(original , target, proxiedSql, options);\n }\n\n return original;\n },\n });\n\n // Use provided parent context if available, otherwise extract from sql.options\n if (parentConnectionContext) {\n (proxiedSql )[CONNECTION_CONTEXT_SYMBOL] = parentConnectionContext;\n } else {\n _attachConnectionContext(sql, proxiedSql );\n }\n\n // Mark both the original and proxy as instrumented to prevent double-wrapping\n (sql )[INSTRUMENTED_MARKER] = true;\n (proxiedSql )[INSTRUMENTED_MARKER] = true;\n\n return proxiedSql;\n}\n\n/**\n * Wraps query-returning methods (unsafe, file) to ensure their queries are instrumented.\n */\nfunction _wrapQueryMethod(\n original,\n target,\n proxiedSql,\n options,\n) {\n return function ( ...args) {\n const query = Reflect.apply(original, target, args);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query , proxiedSql, options);\n }\n\n return query;\n };\n}\n\n/**\n * Wraps callback-based methods (begin, reserve) to recursively instrument Sql instances.\n * Note: These methods can also be used as tagged templates, which we pass through unchanged.\n *\n * Savepoint is not wrapped to avoid complex nested transaction instrumentation issues.\n * Queries within savepoint callbacks are still instrumented through the parent transaction's Sql instance.\n */\nfunction _wrapCallbackMethod(\n original,\n target,\n parentSqlInstance,\n options,\n) {\n return function ( ...args) {\n // Extract parent context to propagate to child instances\n const parentContext = (parentSqlInstance )[CONNECTION_CONTEXT_SYMBOL]\n\n;\n\n // Check if this is a callback-based call by verifying the last argument is a function\n const isCallbackBased = typeof args[args.length - 1] === 'function';\n\n if (!isCallbackBased) {\n // Not a callback-based call - could be tagged template or promise-based\n const result = Reflect.apply(original, target, args);\n // If result is a Promise (e.g., reserve() without callback), instrument the resolved Sql instance\n if (result && typeof (result ).then === 'function') {\n return (result ).then((sqlInstance) => {\n return _instrumentSqlInstance(sqlInstance, options, parentContext);\n });\n }\n return result;\n }\n\n // Callback-based call: wrap the callback to instrument the Sql instance\n const callback = (args.length === 1 ? args[0] : args[1]) ;\n const wrappedCallback = function (sqlInstance) {\n const instrumentedSql = _instrumentSqlInstance(sqlInstance, options, parentContext);\n return callback(instrumentedSql);\n };\n\n const newArgs = args.length === 1 ? [wrappedCallback] : [args[0], wrappedCallback];\n return Reflect.apply(original, target, newArgs);\n };\n}\n\n/**\n * Wraps a single query's handle method to create spans.\n */\nfunction _wrapSingleQueryHandle(\n query,\n sqlInstance,\n options,\n) {\n // Prevent double wrapping - check if the handle itself is already wrapped\n if ((query.handle )?.__sentryWrapped) {\n return;\n }\n\n // Mark this query as coming from an instrumented sql instance.\n // This prevents the Node.js Query.prototype fallback patch from double-spanning.\n (query )[QUERY_FROM_INSTRUMENTED_SQL] = true;\n\n const originalHandle = query.handle ;\n\n // IMPORTANT: We must replace the handle function directly, not use a Proxy,\n // because Query.then() internally calls this.handle(), which would bypass a Proxy wrapper.\n const wrappedHandle = async function ( ...args) {\n if (!_shouldCreateSpans(options)) {\n return originalHandle.apply(this, args);\n }\n\n const fullQuery = _reconstructQuery(query.strings);\n const sanitizedSqlQuery = _sanitizeSqlQuery(fullQuery);\n\n return startSpanManual(\n {\n name: sanitizedSqlQuery || 'postgresjs.query',\n op: 'db',\n },\n (span) => {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.postgresjs');\n\n span.setAttributes({\n 'db.system.name': 'postgres',\n 'db.query.text': sanitizedSqlQuery,\n });\n\n const connectionContext = sqlInstance\n ? ((sqlInstance )[CONNECTION_CONTEXT_SYMBOL]\n\n)\n : undefined;\n\n _setConnectionAttributes(span, connectionContext);\n\n if (options.requestHook) {\n try {\n options.requestHook(span, sanitizedSqlQuery, connectionContext);\n } catch (e) {\n span.setAttribute('sentry.hook.error', 'requestHook failed');\n DEBUG_BUILD && debug.error('Error in requestHook for PostgresJs instrumentation:', e);\n }\n }\n\n const queryWithCallbacks = this\n\n;\n\n queryWithCallbacks.resolve = new Proxy(queryWithCallbacks.resolve , {\n apply: (resolveTarget, resolveThisArg, resolveArgs) => {\n try {\n _setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n }\n\n return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n },\n });\n\n queryWithCallbacks.reject = new Proxy(queryWithCallbacks.reject , {\n apply: (rejectTarget, rejectThisArg, rejectArgs) => {\n try {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: rejectArgs?.[0]?.message || 'unknown_error',\n });\n\n span.setAttribute('db.response.status_code', rejectArgs?.[0]?.code || 'unknown');\n span.setAttribute('error.type', rejectArgs?.[0]?.name || 'unknown');\n\n _setOperationName(span, sanitizedSqlQuery);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n }\n return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n },\n });\n\n // Handle synchronous errors that might occur before promise is created\n try {\n return originalHandle.apply(this, args);\n } catch (e) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: e instanceof Error ? e.message : 'unknown_error',\n });\n span.end();\n throw e;\n }\n },\n );\n };\n\n (wrappedHandle ).__sentryWrapped = true;\n query.handle = wrappedHandle;\n}\n\n/**\n * Determines whether a span should be created based on the current context.\n * If `requireParentSpan` is set to true in the options, a span will\n * only be created if there is a parent span available.\n */\nfunction _shouldCreateSpans(options) {\n const hasParentSpan = getActiveSpan() !== undefined;\n return hasParentSpan || !options.requireParentSpan;\n}\n\n/**\n * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n *\n * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n * strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n * returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n *\n * @internal Exported for testing only\n */\nfunction _reconstructQuery(strings) {\n if (!strings?.length) {\n return undefined;\n }\n if (strings.length === 1) {\n return strings[0] || undefined;\n }\n // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n}\n\n/**\n * Sanitize SQL query as per the OTEL semantic conventions\n * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n *\n * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n *\n * @internal Exported for testing only\n */\nfunction _sanitizeSqlQuery(sqlQuery) {\n if (!sqlQuery) {\n return 'Unknown SQL Query';\n }\n\n return (\n sqlQuery\n // Remove comments first (they may contain newlines and extra spaces)\n .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n .replace(/;\\s*$/, '') // Remove trailing semicolons\n // Collapse whitespace to a single space (after removing comments)\n .replace(/\\s+/g, ' ')\n .trim() // Remove extra spaces and trim\n // Sanitize hex/binary literals before string literals\n .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n // Sanitize string literals (handles escaped quotes)\n .replace(/'(?:[^']|'')*'/g, '?')\n // Sanitize hex numbers\n .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n // Sanitize boolean literals\n .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n .replace(/(? {\n const levels = new Set(options.levels || CONSOLE_LEVELS);\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.has(level)) {\n return;\n }\n\n addConsoleBreadcrumb(level, args);\n });\n },\n };\n});\n\n/**\n * Capture a console breadcrumb.\n *\n * Exported just for tests.\n */\nfunction addConsoleBreadcrumb(level, args) {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: args,\n logger: 'console',\n },\n level: severityLevelFromString(level),\n message: formatConsoleArgs(args),\n };\n\n if (level === 'assert') {\n if (args[0] === false) {\n const assertionArgs = args.slice(1);\n breadcrumb.message =\n assertionArgs.length > 0 ? `Assertion failed: ${formatConsoleArgs(assertionArgs)}` : 'Assertion failed';\n breadcrumb.data.arguments = assertionArgs;\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: args,\n level,\n });\n}\n\nfunction formatConsoleArgs(values) {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ ).util.format === 'function'\n ? (GLOBAL_OBJ ).util.format(...values)\n : safeJoin(values, ' ');\n}\n\nexport { addConsoleBreadcrumb, consoleIntegration };\n//# sourceMappingURL=console.js.map\n", + "import { getCurrentScope, getIsolationScope } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { GEN_AI_CONVERSATION_ID_ATTRIBUTE } from '../semanticAttributes.js';\n\nconst INTEGRATION_NAME = 'ConversationId';\n\nconst _conversationIdIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n client.on('spanStart', (span) => {\n const scopeData = getCurrentScope().getScopeData();\n const isolationScopeData = getIsolationScope().getScopeData();\n\n const conversationId = scopeData.conversationId || isolationScopeData.conversationId;\n\n if (conversationId) {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, conversationId);\n }\n });\n },\n };\n}) ;\n\n/**\n * Automatically applies conversation ID from scope to spans.\n *\n * This integration reads the conversation ID from the current or isolation scope\n * and applies it to spans when they start. This ensures the conversation ID is\n * available for all AI-related operations.\n */\nconst conversationIdIntegration = defineIntegration(_conversationIdIntegration);\n\nexport { conversationIdIntegration };\n//# sourceMappingURL=conversationId.js.map\n", + "import { _INTERNAL_captureMetric } from './internal.js';\n\n/**\n * Options for capturing a metric.\n */\n\n/**\n * Capture a metric with the given type, name, and value.\n *\n * @param type - The type of the metric.\n * @param name - The name of the metric.\n * @param value - The value of the metric.\n * @param options - Options for capturing the metric.\n */\nfunction captureMetric(type, name, value, options) {\n _INTERNAL_captureMetric(\n { type, name, value, unit: options?.unit, attributes: options?.attributes },\n { scope: options?.scope },\n );\n}\n\n/**\n * @summary Increment a counter metric.\n *\n * @param name - The name of the counter metric.\n * @param value - The value to increment by (defaults to 1).\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.count('api.requests', 1, {\n * attributes: {\n * endpoint: '/api/users',\n * method: 'GET',\n * status: 200\n * }\n * });\n * ```\n *\n * @example With custom value\n *\n * ```\n * Sentry.metrics.count('items.processed', 5, {\n * attributes: {\n * processor: 'batch-processor',\n * queue: 'high-priority'\n * }\n * });\n * ```\n */\nfunction count(name, value = 1, options) {\n captureMetric('counter', name, value, options);\n}\n\n/**\n * @summary Set a gauge metric to a specific value.\n *\n * @param name - The name of the gauge metric.\n * @param value - The current value of the gauge.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.gauge('memory.usage', 1024, {\n * unit: 'megabyte',\n * attributes: {\n * process: 'web-server',\n * region: 'us-east-1'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.gauge('active.connections', 42, {\n * attributes: {\n * server: 'api-1',\n * protocol: 'websocket'\n * }\n * });\n * ```\n */\nfunction gauge(name, value, options) {\n captureMetric('gauge', name, value, options);\n}\n\n/**\n * @summary Record a value in a distribution metric.\n *\n * @param name - The name of the distribution metric.\n * @param value - The value to record in the distribution.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.distribution('task.duration', 500, {\n * unit: 'millisecond',\n * attributes: {\n * task: 'data-processing',\n * priority: 'high'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.distribution('batch.size', 100, {\n * attributes: {\n * processor: 'batch-1',\n * type: 'async'\n * }\n * });\n * ```\n */\nfunction distribution(name, value, options) {\n captureMetric('distribution', name, value, options);\n}\n\nexport { count, distribution, gauge };\n//# sourceMappingURL=public-api.js.map\n", + "/**\n * OpenAI Integration Telemetry Attributes\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n */\n\n// =============================================================================\n// OPENTELEMETRY SEMANTIC CONVENTIONS FOR GENAI\n// =============================================================================\n\n/**\n * The input messages sent to the model\n */\nconst GEN_AI_PROMPT_ATTRIBUTE = 'gen_ai.prompt';\n\n/**\n * The Generative AI system being used\n * For OpenAI, this should always be \"openai\"\n */\nconst GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * The name of the model as requested\n * Examples: \"gpt-4\", \"gpt-3.5-turbo\"\n */\nconst GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Whether streaming was enabled for the request\n */\nconst GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream';\n\n/**\n * The temperature setting for the model request\n */\nconst GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * The maximum number of tokens requested\n */\nconst GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * The frequency penalty setting for the model request\n */\nconst GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * The presence penalty setting for the model request\n */\nconst GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * The top_p (nucleus sampling) setting for the model request\n */\nconst GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * The top_k setting for the model request\n */\nconst GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * The encoding format for the model request\n */\nconst GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format';\n\n/**\n * The dimensions for the model request\n */\nconst GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions';\n\n/**\n * Array of reasons why the model stopped generating tokens\n */\nconst GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * The name of the model that generated the response\n */\nconst GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * The unique identifier for the response\n */\nconst GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * The reason why the model stopped generating tokens\n */\nconst GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason';\n\n/**\n * The number of tokens used in the prompt\n */\nconst GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * The number of tokens used in the response\n */\nconst GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n/**\n * The total number of tokens used (input + output)\n */\nconst GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens';\n\n/**\n * The operation name\n */\nconst GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';\n\n/**\n * Original length of messages array, used to indicate truncations had occured\n */\nconst GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'sentry.sdk_meta.gen_ai.input.messages.original_length';\n\n/**\n * The prompt messages\n * Only recorded when recordInputs is enabled\n */\nconst GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.messages';\n\n/**\n * The model's response messages including text and tool calls\n * Only recorded when recordOutputs is enabled\n * Format: stringified array of message objects with role, parts, and finish_reason\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-output-messages\n */\nconst GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE = 'gen_ai.output.messages';\n\n/**\n * The system instructions extracted from system messages\n * Only recorded when recordInputs is enabled\n * According to OpenTelemetry spec: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions\n */\nconst GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions';\n\n/**\n * The response text\n * Only recorded when recordOutputs is enabled\n */\nconst GEN_AI_RESPONSE_TEXT_ATTRIBUTE = 'gen_ai.response.text';\n\n/**\n * The available tools from incoming request\n * Only recorded when recordInputs is enabled\n */\nconst GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools';\n\n/**\n * Whether the response is a streaming response\n */\nconst GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = 'gen_ai.response.streaming';\n\n/**\n * The tool calls from the response\n * Only recorded when recordOutputs is enabled\n */\nconst GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls';\n\n/**\n * The agent name\n */\nconst GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name';\n\n/**\n * The pipeline name\n */\nconst GEN_AI_PIPELINE_NAME_ATTRIBUTE = 'gen_ai.pipeline.name';\n\n/**\n * The conversation ID for linking messages across API calls\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nconst GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\n/**\n * The number of cache creation input tokens used\n */\nconst GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_creation_input_tokens';\n\n/**\n * The number of cache read input tokens used\n */\nconst GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_read_input_tokens';\n\n/**\n * The number of cache write input tokens used\n */\nconst GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = 'gen_ai.usage.input_tokens.cache_write';\n\n/**\n * The number of cached input tokens that were used\n */\nconst GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = 'gen_ai.usage.input_tokens.cached';\n\n/**\n * The span operation name for invoking an agent\n */\nconst GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent';\n\n/**\n * The span operation name for generating text\n */\nconst GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text';\n\n/**\n * The span operation name for streaming text\n */\nconst GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text';\n\n/**\n * The span operation name for generating object\n */\nconst GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object';\n\n/**\n * The span operation name for streaming object\n */\nconst GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_object';\n\n/**\n * The embeddings input\n * Only recorded when recordInputs is enabled\n */\nconst GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input';\n\n/**\n * The span operation name for embedding\n */\nconst GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for embedding many\n */\nconst GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for reranking\n */\nconst GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE = 'gen_ai.rerank';\n\n/**\n * The span operation name for executing a tool\n */\nconst GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool';\n\n/**\n * The tool name for tool call spans\n */\nconst GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name';\n\n/**\n * The tool call ID\n */\nconst GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id';\n\n/**\n * The tool type (e.g., 'function')\n */\nconst GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type';\n\n/**\n * The tool input/arguments\n */\nconst GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input';\n\n/**\n * The tool output/result\n */\nconst GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output';\n\n/**\n * The description of the tool being used\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-description\n */\nconst GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE = 'gen_ai.tool.description';\n\n// =============================================================================\n// OPENAI-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/**\n * The response ID from OpenAI\n */\nconst OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id';\n\n/**\n * The response model from OpenAI\n */\nconst OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model';\n\n/**\n * The response timestamp from OpenAI (ISO string)\n */\nconst OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp';\n\n/**\n * The number of completion tokens used\n */\nconst OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens';\n\n/**\n * The number of prompt tokens used\n */\nconst OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'openai.usage.prompt_tokens';\n\n// =============================================================================\n// OPENAI OPERATIONS\n// =============================================================================\n\n/**\n * OpenAI API operations following OpenTelemetry semantic conventions\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nconst OPENAI_OPERATIONS = {\n CHAT: 'chat',\n EMBEDDINGS: 'embeddings',\n} ;\n\n// =============================================================================\n// ANTHROPIC AI OPERATIONS\n// =============================================================================\n\n/**\n * The response timestamp from Anthropic AI (ISO string)\n */\nconst ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp';\n\nexport { ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE, GEN_AI_AGENT_NAME_ATTRIBUTE, GEN_AI_CONVERSATION_ID_ATTRIBUTE, GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE, GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE, GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE, GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE, GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE, GEN_AI_PIPELINE_NAME_ATTRIBUTE, GEN_AI_PROMPT_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE, GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_STREAM_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_TOP_K_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, GEN_AI_RESPONSE_STREAMING_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE, GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE, GEN_AI_TOOL_TYPE_ATTRIBUTE, GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, OPENAI_OPERATIONS, OPENAI_RESPONSE_ID_ATTRIBUTE, OPENAI_RESPONSE_MODEL_ATTRIBUTE, OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE, OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE };\n//# sourceMappingURL=gen-ai-attributes.js.map\n", + "// Global map to track tool call IDs to their corresponding span contexts.\n// This allows us to capture tool errors and link them to the correct span\n// without keeping full Span objects (and their potentially large attributes) alive.\nconst toolCallSpanContextMap = new Map();\n\n// Operation sets for efficient mapping to OpenTelemetry semantic convention values\nconst INVOKE_AGENT_OPS = new Set(['ai.generateText', 'ai.streamText', 'ai.generateObject', 'ai.streamObject']);\n\nconst GENERATE_CONTENT_OPS = new Set([\n 'ai.generateText.doGenerate',\n 'ai.streamText.doStream',\n 'ai.generateObject.doGenerate',\n 'ai.streamObject.doStream',\n]);\n\nconst EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']);\n\nconst RERANK_OPS = new Set(['ai.rerank.doRerank']);\n\nconst DO_SPAN_NAME_PREFIX = {\n 'ai.embed.doEmbed': 'embeddings',\n 'ai.embedMany.doEmbed': 'embeddings',\n 'ai.rerank.doRerank': 'rerank',\n};\n\nexport { DO_SPAN_NAME_PREFIX, EMBEDDINGS_OPS, GENERATE_CONTENT_OPS, INVOKE_AGENT_OPS, RERANK_OPS, toolCallSpanContextMap };\n//# sourceMappingURL=constants.js.map\n", + "/**\n * Inline media content source, with a potentially very large base64\n * blob or data: uri.\n */\n\n/**\n * Check if a content part is an OpenAI/Anthropic media source\n */\nfunction isContentMedia(part) {\n if (!part || typeof part !== 'object') return false;\n\n return (\n isContentMediaSource(part) ||\n hasInlineData(part) ||\n hasImageUrl(part) ||\n hasInputAudio(part) ||\n hasFileData(part) ||\n hasMediaTypeData(part) ||\n hasVercelFileData(part) ||\n hasVercelImageData(part) ||\n hasBlobOrBase64Type(part) ||\n hasB64Json(part) ||\n hasImageGenerationResult(part) ||\n hasDataUri(part)\n );\n}\n\nfunction hasImageUrl(part) {\n if (!('image_url' in part)) return false;\n if (typeof part.image_url === 'string') return part.image_url.startsWith('data:');\n return hasNestedImageUrl(part);\n}\n\nfunction hasNestedImageUrl(part) {\n return (\n 'image_url' in part &&\n !!part.image_url &&\n typeof part.image_url === 'object' &&\n 'url' in part.image_url &&\n typeof part.image_url.url === 'string' &&\n part.image_url.url.startsWith('data:')\n );\n}\n\nfunction isContentMediaSource(part) {\n return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source);\n}\n\nfunction hasInlineData(part) {\n return (\n 'inlineData' in part &&\n !!part.inlineData &&\n typeof part.inlineData === 'object' &&\n 'data' in part.inlineData &&\n typeof part.inlineData.data === 'string'\n );\n}\n\nfunction hasInputAudio(part) {\n return (\n 'type' in part &&\n part.type === 'input_audio' &&\n 'input_audio' in part &&\n !!part.input_audio &&\n typeof part.input_audio === 'object' &&\n 'data' in part.input_audio &&\n typeof part.input_audio.data === 'string'\n );\n}\n\nfunction hasFileData(part) {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'file' in part &&\n !!part.file &&\n typeof part.file === 'object' &&\n 'file_data' in part.file &&\n typeof part.file.file_data === 'string'\n );\n}\n\nfunction hasMediaTypeData(part) {\n return 'media_type' in part && typeof part.media_type === 'string' && 'data' in part;\n}\n\n/**\n * Check for Vercel AI SDK file format: { type: \"file\", mediaType: \"...\", data: \"...\" }\n * Only matches base64/binary data, not HTTP/HTTPS URLs (which should be preserved).\n */\nfunction hasVercelFileData(part) {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'mediaType' in part &&\n typeof part.mediaType === 'string' &&\n 'data' in part &&\n typeof part.data === 'string' &&\n // Only strip base64/binary data, not HTTP/HTTPS URLs which should be preserved as references\n !part.data.startsWith('http://') &&\n !part.data.startsWith('https://')\n );\n}\n\n/**\n * Check for Vercel AI SDK image format: { type: \"image\", image: \"base64...\", mimeType?: \"...\" }\n * Only matches base64/data URIs, not HTTP/HTTPS URLs (which should be preserved).\n * Note: mimeType is optional in Vercel AI SDK image parts.\n */\nfunction hasVercelImageData(part) {\n return (\n 'type' in part &&\n part.type === 'image' &&\n 'image' in part &&\n typeof part.image === 'string' &&\n // Only strip base64/data URIs, not HTTP/HTTPS URLs which should be preserved as references\n !part.image.startsWith('http://') &&\n !part.image.startsWith('https://')\n );\n}\n\nfunction hasBlobOrBase64Type(part) {\n return 'type' in part && (part.type === 'blob' || part.type === 'base64');\n}\n\nfunction hasB64Json(part) {\n return 'b64_json' in part;\n}\n\nfunction hasImageGenerationResult(part) {\n return 'type' in part && 'result' in part && part.type === 'image_generation';\n}\n\nfunction hasDataUri(part) {\n return 'uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:');\n}\n\nconst REMOVED_STRING = '[Blob substitute]';\n\nconst MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri', 'image'] ;\n\n/**\n * Replace inline binary data in a single media content part with a placeholder.\n */\nfunction stripInlineMediaFromSingleMessage(part) {\n const strip = { ...part };\n if (isContentMedia(strip.source)) {\n strip.source = stripInlineMediaFromSingleMessage(strip.source);\n }\n if (hasInlineData(part)) {\n strip.inlineData = { ...part.inlineData, data: REMOVED_STRING };\n }\n if (hasNestedImageUrl(part)) {\n strip.image_url = { ...part.image_url, url: REMOVED_STRING };\n }\n if (hasInputAudio(part)) {\n strip.input_audio = { ...part.input_audio, data: REMOVED_STRING };\n }\n if (hasFileData(part)) {\n strip.file = { ...part.file, file_data: REMOVED_STRING };\n }\n for (const field of MEDIA_FIELDS) {\n if (typeof strip[field] === 'string') strip[field] = REMOVED_STRING;\n }\n return strip;\n}\n\nexport { isContentMedia, stripInlineMediaFromSingleMessage };\n//# sourceMappingURL=mediaStripping.js.map\n", + "import { isContentMedia, stripInlineMediaFromSingleMessage } from './mediaStripping.js';\n\n/**\n * Default maximum size in bytes for GenAI messages.\n * Messages exceeding this limit will be truncated.\n */\nconst DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000;\n\n/**\n * Message format used by OpenAI and Anthropic APIs.\n */\n\n/**\n * Calculate the UTF-8 byte length of a string.\n */\nconst utf8Bytes = (text) => {\n return new TextEncoder().encode(text).length;\n};\n\n/**\n * Calculate the UTF-8 byte length of a value's JSON representation.\n */\nconst jsonBytes = (value) => {\n return utf8Bytes(JSON.stringify(value));\n};\n\n/**\n * Truncate a string to fit within maxBytes (inclusive) when encoded as UTF-8.\n * Uses binary search for efficiency with multi-byte characters.\n *\n * @param text - The string to truncate\n * @param maxBytes - Maximum byte length (inclusive, UTF-8 encoded)\n * @returns Truncated string whose UTF-8 byte length is at most maxBytes\n */\nfunction truncateTextByBytes(text, maxBytes) {\n if (utf8Bytes(text) <= maxBytes) {\n return text;\n }\n\n let low = 0;\n let high = text.length;\n let bestFit = '';\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = text.slice(0, mid);\n const byteSize = utf8Bytes(candidate);\n\n if (byteSize <= maxBytes) {\n bestFit = candidate;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n return bestFit;\n}\n\n/**\n * Extract text content from a message item.\n * Handles plain strings and objects with a text property.\n *\n * @returns The text content\n */\nfunction getItemText(item) {\n if (typeof item === 'string') {\n return item;\n }\n if ('text' in item && typeof item.text === 'string') {\n return item.text;\n }\n return '';\n}\n\n/**\n * Create a new item with updated text content while preserving the original structure.\n *\n * @param item - Original item (string or object)\n * @param text - New text content\n * @returns New item with updated text\n */\nfunction withItemText(item, text) {\n if (typeof item === 'string') {\n return text;\n }\n return { ...item, text };\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content format.\n */\nfunction isContentMessage(message) {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'content' in message &&\n typeof (message ).content === 'string'\n );\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content array format.\n */\nfunction isContentArrayMessage(message) {\n return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content);\n}\n\n/**\n * Check if a message has the Google GenAI parts format.\n */\nfunction isPartsMessage(message) {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'parts' in message &&\n Array.isArray((message ).parts) &&\n (message ).parts.length > 0\n );\n}\n\n/**\n * Truncate a message with `content: string` format (OpenAI/Anthropic).\n *\n * @param message - Message with content property\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateContentMessage(message, maxBytes) {\n // Calculate overhead (message structure without content)\n const emptyMessage = { ...message, content: '' };\n const overhead = jsonBytes(emptyMessage);\n const availableForContent = maxBytes - overhead;\n\n if (availableForContent <= 0) {\n return [];\n }\n\n const truncatedContent = truncateTextByBytes(message.content, availableForContent);\n return [{ ...message, content: truncatedContent }];\n}\n\n/**\n * Extracts the array items and their key from an array-based message.\n * Returns `null` key if neither `parts` nor `content` is a valid array.\n */\nfunction getArrayItems(message)\n\n {\n if ('parts' in message && Array.isArray(message.parts)) {\n return { key: 'parts', items: message.parts };\n }\n if ('content' in message && Array.isArray(message.content)) {\n return { key: 'content', items: message.content };\n }\n return { key: null, items: [] };\n}\n\n/**\n * Truncate a message with an array-based format.\n * Handles both `parts: [...]` (Google GenAI) and `content: [...]` (OpenAI/Anthropic multimodal).\n * Keeps as many complete items as possible, only truncating the first item if needed.\n *\n * @param message - Message with parts or content array\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateArrayMessage(message, maxBytes) {\n const { key, items } = getArrayItems(message);\n\n if (key === null || items.length === 0) {\n return [];\n }\n\n // Calculate overhead by creating empty text items\n const emptyItems = items.map(item => withItemText(item, ''));\n const overhead = jsonBytes({ ...message, [key]: emptyItems });\n let remainingBytes = maxBytes - overhead;\n\n if (remainingBytes <= 0) {\n return [];\n }\n\n // Include items until we run out of space\n const includedItems = [];\n\n for (const item of items) {\n const text = getItemText(item);\n const textSize = utf8Bytes(text);\n\n if (textSize <= remainingBytes) {\n // Item fits: include it as-is\n includedItems.push(item);\n remainingBytes -= textSize;\n } else if (includedItems.length === 0) {\n // First item doesn't fit: truncate it\n const truncated = truncateTextByBytes(text, remainingBytes);\n if (truncated) {\n includedItems.push(withItemText(item, truncated));\n }\n break;\n } else {\n // Subsequent item doesn't fit: stop here\n break;\n }\n }\n\n /* c8 ignore start\n * for type safety only, algorithm guarantees SOME text included */\n if (includedItems.length <= 0) {\n return [];\n } else {\n /* c8 ignore stop */\n return [{ ...message, [key]: includedItems }];\n }\n}\n\n/**\n * Truncate a single message to fit within maxBytes.\n *\n * Supports three message formats:\n * - OpenAI/Anthropic: `{ ..., content: string }`\n * - Vercel AI/OpenAI multimodal: `{ ..., content: Array<{type, text?, ...}> }`\n * - Google GenAI: `{ ..., parts: Array }`\n *\n * @param message - The message to truncate\n * @param maxBytes - Maximum byte limit for the message\n * @returns Array containing the truncated message, or empty array if truncation fails\n */\nfunction truncateSingleMessage(message, maxBytes) {\n if (!message) return [];\n\n // Handle plain strings (e.g., embeddings input)\n if (typeof message === 'string') {\n const truncated = truncateTextByBytes(message, maxBytes);\n return truncated ? [truncated] : [];\n }\n\n if (typeof message !== 'object') {\n return [];\n }\n\n if (isContentMessage(message)) {\n return truncateContentMessage(message, maxBytes);\n }\n\n if (isContentArrayMessage(message) || isPartsMessage(message)) {\n return truncateArrayMessage(message, maxBytes);\n }\n\n // Unknown message format: cannot truncate safely\n return [];\n}\n\n/**\n * Strip the inline media from message arrays.\n *\n * This returns a stripped message. We do NOT want to mutate the data in place,\n * because of course we still want the actual API/client to handle the media.\n */\nfunction stripInlineMediaFromMessages(messages) {\n const stripped = messages.map(message => {\n let newMessage = undefined;\n if (!!message && typeof message === 'object') {\n if (isContentArrayMessage(message)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromMessages(message.content),\n };\n } else if ('content' in message && isContentMedia(message.content)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromSingleMessage(message.content),\n };\n }\n if (isPartsMessage(message)) {\n newMessage = {\n // might have to strip content AND parts\n ...(newMessage ?? message),\n parts: stripInlineMediaFromMessages(message.parts),\n };\n }\n if (isContentMedia(newMessage)) {\n newMessage = stripInlineMediaFromSingleMessage(newMessage);\n } else if (isContentMedia(message)) {\n newMessage = stripInlineMediaFromSingleMessage(message);\n }\n }\n return newMessage ?? message;\n });\n return stripped;\n}\n\n/**\n * Truncate an array of messages to fit within a byte limit.\n *\n * Strategy:\n * - Always keeps only the last (newest) message\n * - Strips inline media from the message\n * - Truncates the message content if it exceeds the byte limit\n *\n * @param messages - Array of messages to truncate\n * @param maxBytes - Maximum total byte limit for the message\n * @returns Array containing only the last message (possibly truncated)\n *\n * @example\n * ```ts\n * const messages = [msg1, msg2, msg3, msg4]; // newest is msg4\n * const truncated = truncateMessagesByBytes(messages, 10000);\n * // Returns [msg4] (truncated if needed)\n * ```\n */\nfunction truncateMessagesByBytes(messages, maxBytes) {\n // Early return for empty or invalid input\n if (!Array.isArray(messages) || messages.length === 0) {\n return messages;\n }\n\n // The result is always a single-element array that callers wrap with\n // JSON.stringify([message]), so subtract the 2-byte array wrapper (\"[\" and \"]\")\n // to ensure the final serialized value stays under the limit.\n const effectiveMaxBytes = maxBytes - 2;\n\n // Always keep only the last message\n const lastMessage = messages[messages.length - 1];\n\n // Strip inline media from the single message\n const stripped = stripInlineMediaFromMessages([lastMessage]);\n const strippedMessage = stripped[0];\n\n // Check if it fits\n const messageBytes = jsonBytes(strippedMessage);\n if (messageBytes <= effectiveMaxBytes) {\n return stripped;\n }\n\n // Truncate the single message if needed\n return truncateSingleMessage(strippedMessage, effectiveMaxBytes);\n}\n\n/**\n * Truncate GenAI messages using the default byte limit.\n *\n * Convenience wrapper around `truncateMessagesByBytes` with the default limit.\n *\n * @param messages - Array of messages to truncate\n * @returns Truncated array of messages\n */\nfunction truncateGenAiMessages(messages) {\n return truncateMessagesByBytes(messages, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n\n/**\n * Truncate GenAI string input using the default byte limit.\n *\n * @param input - The string to truncate\n * @returns Truncated string\n */\nfunction truncateGenAiStringInput(input) {\n return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n\nexport { DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT, truncateGenAiMessages, truncateGenAiStringInput };\n//# sourceMappingURL=messageTruncation.js.map\n", + "import { captureException } from '../../exports.js';\nimport { getClient } from '../../currentScopes.js';\nimport { isThenable } from '../../utils/is.js';\nimport { GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE } from './gen-ai-attributes.js';\nimport { truncateGenAiStringInput, truncateGenAiMessages } from './messageTruncation.js';\n\n/**\n * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.)\n */\n\n/**\n * Resolves AI recording options by falling back to the client's `sendDefaultPii` setting.\n * Precedence: explicit option > sendDefaultPii > false\n */\nfunction resolveAIRecordingOptions(options) {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n return {\n ...options,\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n } ;\n}\n\n/**\n * Maps AI method paths to OpenTelemetry semantic convention operation names\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction getFinalOperationName(methodPath) {\n if (methodPath.includes('messages')) {\n return 'chat';\n }\n if (methodPath.includes('completions')) {\n return 'text_completion';\n }\n // Google GenAI: models.generateContent* -> generate_content (actually generates AI responses)\n if (methodPath.includes('generateContent')) {\n return 'generate_content';\n }\n // Anthropic: models.get/retrieve -> models (metadata retrieval only)\n if (methodPath.includes('models')) {\n return 'models';\n }\n if (methodPath.includes('chat')) {\n return 'chat';\n }\n return methodPath.split('.').pop() || 'unknown';\n}\n\n/**\n * Get the span operation for AI methods\n * Following Sentry's convention: \"gen_ai.{operation_name}\"\n */\nfunction getSpanOperation(methodPath) {\n return `gen_ai.${getFinalOperationName(methodPath)}`;\n}\n\n/**\n * Build method path from current traversal\n */\nfunction buildMethodPath(currentPath, prop) {\n return currentPath ? `${currentPath}.${prop}` : prop;\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param cachedInputTokens - The number of cached input tokens\n * @param cachedOutputTokens - The number of cached output tokens\n */\nfunction setTokenUsageAttributes(\n span,\n promptTokens,\n completionTokens,\n cachedInputTokens,\n cachedOutputTokens,\n) {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (\n promptTokens !== undefined ||\n completionTokens !== undefined ||\n cachedInputTokens !== undefined ||\n cachedOutputTokens !== undefined\n ) {\n /**\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n const totalTokens =\n (promptTokens ?? 0) + (completionTokens ?? 0) + (cachedInputTokens ?? 0) + (cachedOutputTokens ?? 0);\n\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Get the truncated JSON string for a string or array of strings.\n *\n * @param value - The string or array of strings to truncate\n * @returns The truncated JSON string\n */\nfunction getTruncatedJsonString(value) {\n if (typeof value === 'string') {\n // Some values are already JSON strings, so we don't need to duplicate the JSON parsing\n return truncateGenAiStringInput(value);\n }\n if (Array.isArray(value)) {\n // truncateGenAiMessages returns an array of strings, so we need to stringify it\n const truncatedMessages = truncateGenAiMessages(value);\n return JSON.stringify(truncatedMessages);\n }\n // value is an object, so we need to stringify it\n return JSON.stringify(value);\n}\n\n/**\n * Extract system instructions from messages array.\n * Finds the first system message and formats it according to OpenTelemetry semantic conventions.\n *\n * @param messages - Array of messages to extract system instructions from\n * @returns systemInstructions (JSON string) and filteredMessages (without system message)\n */\nfunction extractSystemInstructions(messages)\n\n {\n if (!Array.isArray(messages)) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessageIndex = messages.findIndex(\n msg => msg && typeof msg === 'object' && 'role' in msg && (msg ).role === 'system',\n );\n\n if (systemMessageIndex === -1) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessage = messages[systemMessageIndex] ;\n const systemContent =\n typeof systemMessage.content === 'string'\n ? systemMessage.content\n : systemMessage.content !== undefined\n ? JSON.stringify(systemMessage.content)\n : undefined;\n\n if (!systemContent) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemInstructions = JSON.stringify([{ type: 'text', content: systemContent }]);\n const filteredMessages = [...messages.slice(0, systemMessageIndex), ...messages.slice(systemMessageIndex + 1)];\n\n return { systemInstructions, filteredMessages };\n}\n\n/**\n * Creates a wrapped version of .withResponse() that replaces the data field\n * with the instrumented result while preserving metadata (response, request_id).\n */\nasync function createWithResponseWrapper(\n originalWithResponse,\n instrumentedPromise,\n mechanismType,\n) {\n // Attach catch handler to originalWithResponse immediately to prevent unhandled rejection\n // If instrumentedPromise rejects first, we still need this handled\n const safeOriginalWithResponse = originalWithResponse.catch(error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: mechanismType,\n },\n });\n throw error;\n });\n\n const instrumentedResult = await instrumentedPromise;\n const originalWrapper = await safeOriginalWithResponse;\n\n // Combine instrumented result with original metadata\n if (originalWrapper && typeof originalWrapper === 'object' && 'data' in originalWrapper) {\n return {\n ...originalWrapper,\n data: instrumentedResult,\n };\n }\n return instrumentedResult;\n}\n\n/**\n * Wraps a promise-like object to preserve additional methods (like .withResponse())\n * that AI SDK clients (OpenAI, Anthropic) attach to their APIPromise return values.\n *\n * Standard Promise methods (.then, .catch, .finally) are routed to the instrumented\n * promise to preserve Sentry's span instrumentation, while custom SDK methods are\n * forwarded to the original promise to maintain the SDK's API surface.\n */\nfunction wrapPromiseWithMethods(\n originalPromiseLike,\n instrumentedPromise,\n mechanismType,\n) {\n // If the original result is not thenable, return the instrumented promise\n if (!isThenable(originalPromiseLike)) {\n return instrumentedPromise;\n }\n\n // Create a proxy that forwards Promise methods to instrumentedPromise\n // and preserves additional methods from the original result\n return new Proxy(originalPromiseLike, {\n get(target, prop) {\n // For standard Promise methods (.then, .catch, .finally, Symbol.toStringTag),\n // use instrumentedPromise to preserve Sentry instrumentation.\n // For custom methods (like .withResponse()), use the original target.\n const useInstrumentedPromise = prop in Promise.prototype || prop === Symbol.toStringTag;\n const source = useInstrumentedPromise ? instrumentedPromise : target;\n\n const value = Reflect.get(source, prop) ;\n\n // Special handling for .withResponse() to preserve instrumentation\n // .withResponse() returns { data: T, response: Response, request_id: string }\n if (prop === 'withResponse' && typeof value === 'function') {\n return function wrappedWithResponse() {\n const originalWithResponse = (value ).call(target);\n return createWithResponseWrapper(originalWithResponse, instrumentedPromise, mechanismType);\n };\n }\n\n return typeof value === 'function' ? value.bind(source) : value;\n },\n }) ;\n}\n\nexport { buildMethodPath, extractSystemInstructions, getFinalOperationName, getSpanOperation, getTruncatedJsonString, resolveAIRecordingOptions, setTokenUsageAttributes, wrapPromiseWithMethods };\n//# sourceMappingURL=utils.js.map\n", + "/* eslint-disable max-lines */\n/**\n * AI SDK Telemetry Attributes\n * Based on https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\n\n// =============================================================================\n// COMMON ATTRIBUTES\n// =============================================================================\n\n/**\n * Common attribute for operation name across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nconst OPERATION_NAME_ATTRIBUTE = 'operation.name';\n\n/**\n * Common attribute for AI operation ID across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nconst AI_OPERATION_ID_ATTRIBUTE = 'ai.operationId';\n\n// =============================================================================\n// SHARED ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n * `streamText` function - `ai.streamText` span\n *\n * The prompt that was used when calling the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nconst AI_PROMPT_ATTRIBUTE = 'ai.prompt';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The JSON schema version of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nconst AI_SCHEMA_ATTRIBUTE = 'ai.schema';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object that was generated (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nconst AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * The values that were passed into the function (array)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nconst AI_VALUES_ATTRIBUTE = 'ai.values';\n\n// =============================================================================\n// GENERATETEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The text that was generated\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_RESPONSE_TEXT_ATTRIBUTE = 'ai.response.text';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The tool calls that were made as part of the generation (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'ai.response.toolCalls';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The reason why the generation finished\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_RESPONSE_FINISH_REASON_ATTRIBUTE = 'ai.response.finishReason';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The messages that were passed into the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_PROMPT_MESSAGES_ATTRIBUTE = 'ai.prompt.messages';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * Array of stringified tool definitions\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The id of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_MODEL_ID_ATTRIBUTE = 'ai.model.id';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * Provider specific metadata returned with the generation response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of cached input tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = 'ai.usage.cachedInputTokens';\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The functionId that was set through `telemetry.functionId`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'ai.usage.completionTokens';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens';\n\n// =============================================================================\n// BASIC EMBEDDING SPAN INFORMATION\n// =============================================================================\n\n/**\n * Basic embedding span information\n * Embedding spans\n *\n * The number of tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-embedding-span-information\n */\nconst AI_USAGE_TOKENS_ATTRIBUTE = 'ai.usage.tokens';\n\n// =============================================================================\n// TOOL CALL SPANS\n// =============================================================================\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The name of the tool\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nconst AI_TOOL_CALL_NAME_ATTRIBUTE = 'ai.toolCall.name';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The id of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nconst AI_TOOL_CALL_ID_ATTRIBUTE = 'ai.toolCall.id';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The parameters of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nconst AI_TOOL_CALL_ARGS_ATTRIBUTE = 'ai.toolCall.args';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The result of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nconst AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result';\n\n// =============================================================================\n// PROVIDER METADATA\n// =============================================================================\n\n/**\n * OpenAI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/openai-chat-language-model.ts#L397-L416\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/responses/openai-responses-language-model.ts#L377C7-L384\n */\n\nexport { AI_MODEL_ID_ATTRIBUTE, AI_OPERATION_ID_ATTRIBUTE, AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE, AI_PROMPT_TOOLS_ATTRIBUTE, AI_RESPONSE_FINISH_REASON_ATTRIBUTE, AI_RESPONSE_OBJECT_ATTRIBUTE, AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE, AI_RESPONSE_TEXT_ATTRIBUTE, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, AI_SCHEMA_ATTRIBUTE, AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE, AI_TOOL_CALL_ARGS_ATTRIBUTE, AI_TOOL_CALL_ID_ATTRIBUTE, AI_TOOL_CALL_NAME_ATTRIBUTE, AI_TOOL_CALL_RESULT_ATTRIBUTE, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, AI_USAGE_TOKENS_ATTRIBUTE, AI_VALUES_ATTRIBUTE, OPERATION_NAME_ATTRIBUTE };\n//# sourceMappingURL=vercel-ai-attributes.js.map\n", + "import { GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE, GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE, GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE, GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE, GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE, GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE, GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE, GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE, GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE, GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils.js';\nimport { toolCallSpanContextMap } from './constants.js';\nimport { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes.js';\n\n/**\n * Accumulates token data from a span to its parent in the token accumulator map.\n * This function extracts token usage from the current span and adds it to the\n * accumulated totals for its parent span.\n */\nfunction accumulateTokensForParent(span, tokenAccumulator) {\n const parentSpanId = span.parent_span_id;\n if (!parentSpanId) {\n return;\n }\n\n const inputTokens = span.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n const outputTokens = span.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE];\n\n if (typeof inputTokens === 'number' || typeof outputTokens === 'number') {\n const existing = tokenAccumulator.get(parentSpanId) || { inputTokens: 0, outputTokens: 0 };\n\n if (typeof inputTokens === 'number') {\n existing.inputTokens += inputTokens;\n }\n if (typeof outputTokens === 'number') {\n existing.outputTokens += outputTokens;\n }\n\n tokenAccumulator.set(parentSpanId, existing);\n }\n}\n\n/**\n * Applies accumulated token data to the `gen_ai.invoke_agent` span.\n * Only immediate children of the `gen_ai.invoke_agent` span are considered,\n * since aggregation will automatically occur for each parent span.\n */\nfunction applyAccumulatedTokens(\n spanOrTrace,\n tokenAccumulator,\n) {\n const accumulated = tokenAccumulator.get(spanOrTrace.span_id);\n if (!accumulated || !spanOrTrace.data) {\n return;\n }\n\n if (accumulated.inputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = accumulated.inputTokens;\n }\n if (accumulated.outputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = accumulated.outputTokens;\n }\n if (accumulated.inputTokens > 0 || accumulated.outputTokens > 0) {\n spanOrTrace.data['gen_ai.usage.total_tokens'] = accumulated.inputTokens + accumulated.outputTokens;\n }\n}\n\n/**\n * Builds a map of tool name -> description from all spans with available_tools.\n * This avoids O(n²) iteration and repeated JSON parsing.\n */\nfunction buildToolDescriptionMap(spans) {\n const toolDescriptions = new Map();\n\n for (const span of spans) {\n const availableTools = span.data[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE];\n if (typeof availableTools !== 'string') {\n continue;\n }\n try {\n const tools = JSON.parse(availableTools) ;\n for (const tool of tools) {\n if (tool.name && tool.description && !toolDescriptions.has(tool.name)) {\n toolDescriptions.set(tool.name, tool.description);\n }\n }\n } catch {\n // ignore parse errors\n }\n }\n\n return toolDescriptions;\n}\n\n/**\n * Applies tool descriptions and accumulated tokens to spans in a single pass.\n *\n * - For `gen_ai.execute_tool` spans: looks up tool description from\n * `gen_ai.request.available_tools` on sibling spans\n * - For `gen_ai.invoke_agent` spans: applies accumulated token data from children\n */\nfunction applyToolDescriptionsAndTokens(spans, tokenAccumulator) {\n // Build lookup map once to avoid O(n²) iteration and repeated JSON parsing\n const toolDescriptions = buildToolDescriptionMap(spans);\n\n for (const span of spans) {\n if (span.op === 'gen_ai.execute_tool') {\n const toolName = span.data[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (typeof toolName === 'string') {\n const description = toolDescriptions.get(toolName);\n if (description) {\n span.data[GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE] = description;\n }\n }\n }\n\n if (span.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(span, tokenAccumulator);\n }\n }\n}\n\n/**\n * Get the span context associated with a tool call ID.\n */\nfunction _INTERNAL_getSpanContextForToolCallId(toolCallId) {\n return toolCallSpanContextMap.get(toolCallId);\n}\n\n/**\n * Clean up the span mapping for a tool call ID\n */\nfunction _INTERNAL_cleanupToolCallSpanContext(toolCallId) {\n toolCallSpanContextMap.delete(toolCallId);\n}\n\n/**\n * Convert an array of tool strings to a JSON string\n */\nfunction convertAvailableToolsToJsonString(tools) {\n const toolObjects = tools.map(tool => {\n if (typeof tool === 'string') {\n try {\n return JSON.parse(tool);\n } catch {\n return tool;\n }\n }\n return tool;\n });\n return JSON.stringify(toolObjects);\n}\n\n/**\n * Filter out invalid entries in messages array\n * @param input - The input array to filter\n * @returns The filtered array\n */\nfunction filterMessagesArray(input) {\n return input.filter(\n (m) =>\n !!m && typeof m === 'object' && 'role' in m && 'content' in m,\n );\n}\n\n/**\n * Normalize the user input (stringified object with prompt, system, messages) to messages array\n */\nfunction convertUserInputToMessagesFormat(userInput) {\n try {\n const p = JSON.parse(userInput);\n if (!!p && typeof p === 'object') {\n let { messages } = p;\n const { prompt, system } = p;\n const result = [];\n\n // prepend top-level system instruction if present\n if (typeof system === 'string') {\n result.push({ role: 'system', content: system });\n }\n\n // stringified messages array\n if (typeof messages === 'string') {\n try {\n messages = JSON.parse(messages);\n } catch {\n // ignore parse errors\n }\n }\n\n // messages array format: { messages: [...] }\n if (Array.isArray(messages)) {\n result.push(...filterMessagesArray(messages));\n return result;\n }\n\n // prompt array format: { prompt: [...] }\n if (Array.isArray(prompt)) {\n result.push(...filterMessagesArray(prompt));\n return result;\n }\n\n // prompt string format: { prompt: \"...\" }\n if (typeof prompt === 'string') {\n result.push({ role: 'user', content: prompt });\n }\n\n if (result.length > 0) {\n return result;\n }\n }\n // eslint-disable-next-line no-empty\n } catch {}\n return [];\n}\n\n/**\n * Generate a request.messages JSON array from the prompt field in the\n * invoke_agent op\n */\nfunction requestMessagesFromPrompt(span, attributes) {\n if (\n typeof attributes[AI_PROMPT_ATTRIBUTE] === 'string' &&\n !attributes[GEN_AI_INPUT_MESSAGES_ATTRIBUTE] &&\n !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]\n ) {\n // No messages array is present, so we need to convert the prompt to the proper messages format\n // This is the case for ai.generateText spans\n // The ai.prompt attribute is a stringified object with prompt, system, messages attributes\n // The format of these is described in the vercel docs, for instance: https://ai-sdk.dev/docs/reference/ai-sdk-core/stream-object#parameters\n const userInput = attributes[AI_PROMPT_ATTRIBUTE];\n const messages = convertUserInputToMessagesFormat(userInput);\n if (messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n } else if (typeof attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') {\n // In this case we already get a properly formatted messages array, this is the preferred way to get the messages\n // This is the case for ai.generateText.doGenerate spans\n try {\n const messages = JSON.parse(attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]);\n if (Array.isArray(messages)) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n // eslint-disable-next-line no-empty\n } catch {}\n }\n}\n\n/**\n * Maps a Vercel AI span name to the corresponding Sentry op.\n */\nfunction getSpanOpFromName(name) {\n switch (name) {\n case 'ai.generateText':\n case 'ai.streamText':\n case 'ai.generateObject':\n case 'ai.streamObject':\n return GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE;\n case 'ai.generateText.doGenerate':\n return GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamText.doStream':\n return GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.generateObject.doGenerate':\n return GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamObject.doStream':\n return GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.embed.doEmbed':\n return GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.embedMany.doEmbed':\n return GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.rerank.doRerank':\n return GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE;\n case 'ai.toolCall':\n return GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE;\n default:\n if (name.startsWith('ai.stream')) {\n return 'ai.run';\n }\n return undefined;\n }\n}\n\nexport { _INTERNAL_cleanupToolCallSpanContext, _INTERNAL_getSpanContextForToolCallId, accumulateTokensForParent, applyAccumulatedTokens, applyToolDescriptionsAndTokens, convertAvailableToolsToJsonString, convertUserInputToMessagesFormat, getSpanOpFromName, requestMessagesFromPrompt };\n//# sourceMappingURL=utils.js.map\n", + "import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '../../semanticAttributes.js';\nimport { spanToJSON } from '../../utils/spanUtils.js';\nimport { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_TYPE_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { toolCallSpanContextMap, INVOKE_AGENT_OPS, GENERATE_CONTENT_OPS, DO_SPAN_NAME_PREFIX, EMBEDDINGS_OPS, RERANK_OPS } from './constants.js';\nimport { accumulateTokensForParent, applyToolDescriptionsAndTokens, applyAccumulatedTokens, requestMessagesFromPrompt, getSpanOpFromName, convertAvailableToolsToJsonString } from './utils.js';\nimport { AI_TOOL_CALL_NAME_ATTRIBUTE, AI_TOOL_CALL_ID_ATTRIBUTE, AI_OPERATION_ID_ATTRIBUTE, AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE, AI_MODEL_ID_ATTRIBUTE, AI_PROMPT_TOOLS_ATTRIBUTE, OPERATION_NAME_ATTRIBUTE, AI_VALUES_ATTRIBUTE, AI_RESPONSE_TEXT_ATTRIBUTE, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, AI_RESPONSE_FINISH_REASON_ATTRIBUTE, AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, AI_USAGE_TOKENS_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE, AI_RESPONSE_OBJECT_ATTRIBUTE, AI_TOOL_CALL_ARGS_ATTRIBUTE, AI_TOOL_CALL_RESULT_ATTRIBUTE, AI_SCHEMA_ATTRIBUTE } from './vercel-ai-attributes.js';\n\n/**\n * Maps Vercel AI SDK operation names to OpenTelemetry semantic convention values\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction mapVercelAiOperationName(operationName) {\n // Top-level pipeline operations map to invoke_agent\n if (INVOKE_AGENT_OPS.has(operationName)) {\n return 'invoke_agent';\n }\n // .do* operations are the actual LLM calls\n if (GENERATE_CONTENT_OPS.has(operationName)) {\n return 'generate_content';\n }\n if (EMBEDDINGS_OPS.has(operationName)) {\n return 'embeddings';\n }\n if (RERANK_OPS.has(operationName)) {\n return 'rerank';\n }\n if (operationName === 'ai.toolCall') {\n return 'execute_tool';\n }\n // Return the original value for unknown operations\n return operationName;\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n * This is supposed to be used in `client.on('spanStart', ...)\n */\nfunction onVercelAiSpanStart(span) {\n const { data: attributes, description: name } = spanToJSON(span);\n\n if (!name) {\n return;\n }\n\n // Tool call spans\n // https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n if (attributes[AI_TOOL_CALL_NAME_ATTRIBUTE] && attributes[AI_TOOL_CALL_ID_ATTRIBUTE] && name === 'ai.toolCall') {\n processToolCallSpan(span, attributes);\n return;\n }\n\n // V6+ Check if this is a Vercel AI span by checking if the operation ID attribute is present.\n // V5+ Check if this is a Vercel AI span by name pattern.\n if (!attributes[AI_OPERATION_ID_ATTRIBUTE] && !name.startsWith('ai.')) {\n return;\n }\n\n processGenerateSpan(span, name, attributes);\n}\n\nfunction vercelAiEventProcessor(event) {\n if (event.type === 'transaction' && event.spans) {\n // Map to accumulate token data by parent span ID\n const tokenAccumulator = new Map();\n\n // First pass: process all spans and accumulate token data\n for (const span of event.spans) {\n processEndedVercelAiSpan(span);\n\n // Accumulate token data for parent spans\n accumulateTokensForParent(span, tokenAccumulator);\n }\n\n // Second pass: apply tool descriptions and accumulated tokens\n applyToolDescriptionsAndTokens(event.spans, tokenAccumulator);\n\n // Also apply to root when it is the invoke_agent pipeline\n const trace = event.contexts?.trace;\n if (trace?.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(trace, tokenAccumulator);\n }\n }\n\n return event;\n}\n\n/**\n * Tool call structure from Vercel AI SDK\n * Note: V5/V6 use 'input' for arguments, V4 and earlier use 'args'\n */\n\n/**\n * Normalize finish reason to match OpenTelemetry semantic conventions.\n * Valid values: \"stop\", \"length\", \"content_filter\", \"tool_call\", \"error\"\n *\n * Vercel AI SDK uses \"tool-calls\" (plural, with hyphen) which we map to \"tool_call\".\n */\nfunction normalizeFinishReason(finishReason) {\n if (typeof finishReason !== 'string') {\n return 'stop';\n }\n\n // Map Vercel AI SDK finish reasons to OpenTelemetry semantic convention values\n switch (finishReason) {\n case 'tool-calls':\n return 'tool_call';\n case 'stop':\n case 'length':\n case 'content_filter':\n case 'error':\n return finishReason;\n default:\n // For unknown values, return as-is (schema allows arbitrary strings)\n return finishReason;\n }\n}\n\n/**\n * Build gen_ai.output.messages from ai.response.text and/or ai.response.toolCalls\n *\n * Format follows OpenTelemetry semantic conventions:\n * [{\"role\": \"assistant\", \"parts\": [...], \"finish_reason\": \"stop\"}]\n *\n * Parts can be:\n * - {\"type\": \"text\", \"content\": \"...\"}\n * - {\"type\": \"tool_call\", \"id\": \"...\", \"name\": \"...\", \"arguments\": \"...\"}\n */\nfunction buildOutputMessages(attributes) {\n const responseText = attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n const responseToolCalls = attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n const finishReason = attributes[AI_RESPONSE_FINISH_REASON_ATTRIBUTE];\n\n // Skip if neither text nor tool calls are present\n if (responseText == null && responseToolCalls == null) {\n return;\n }\n\n const parts = [];\n\n // Add text part if present\n if (typeof responseText === 'string' && responseText.length > 0) {\n parts.push({\n type: 'text',\n content: responseText,\n });\n }\n\n // Add tool call parts if present\n if (responseToolCalls != null) {\n try {\n // Tool calls can be a string (JSON) or already parsed array\n const toolCalls =\n typeof responseToolCalls === 'string' ? JSON.parse(responseToolCalls) : responseToolCalls;\n\n if (Array.isArray(toolCalls)) {\n for (const toolCall of toolCalls) {\n // V5/V6 use 'input', V4 and earlier use 'args'\n const args = toolCall.input ?? toolCall.args;\n parts.push({\n type: 'tool_call',\n id: toolCall.toolCallId,\n name: toolCall.toolName,\n // Handle undefined args: JSON.stringify(undefined) returns undefined, not a string,\n // which would cause the property to be omitted from the final JSON output\n arguments: typeof args === 'string' ? args : JSON.stringify(args ?? {}),\n });\n }\n // Only delete tool calls attribute if we successfully processed them\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n }\n } catch {\n // Ignore parsing errors - tool calls attribute is preserved\n }\n }\n\n // Only set output messages and delete text attribute if we have parts\n if (parts.length > 0) {\n const outputMessage = {\n role: 'assistant',\n parts,\n finish_reason: normalizeFinishReason(finishReason),\n };\n\n attributes[GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE] = JSON.stringify([outputMessage]);\n\n // Remove the text attribute since it's now captured in gen_ai.output.messages\n // Note: tool calls attribute is deleted above only if successfully parsed\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n }\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n */\nfunction processEndedVercelAiSpan(span) {\n const { data: attributes, origin } = span;\n\n if (origin !== 'auto.vercelai.otel') {\n return;\n }\n\n // The Vercel AI SDK sets span status to raw error message strings.\n // Any such value should be normalized to a SpanStatusType value. We pick internal_error as it is the most generic.\n if (span.status && span.status !== 'ok') {\n span.status = 'internal_error';\n }\n\n renameAttributeKey(attributes, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE);\n\n // Parent spans (ai.streamText, ai.streamObject, etc.) use inputTokens/outputTokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, 'ai.usage.inputTokens', GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, 'ai.usage.outputTokens', GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n\n // Embedding spans use ai.usage.tokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, AI_USAGE_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n\n // AI SDK uses avgOutputTokensPerSecond, map to our expected attribute name\n renameAttributeKey(attributes, 'ai.response.avgOutputTokensPerSecond', 'ai.response.avgCompletionTokensPerSecond');\n\n // Input tokens is the sum of prompt tokens and cached input tokens\n if (\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' &&\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE] === 'number'\n ) {\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] =\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] + attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE];\n }\n\n // Compute total tokens from input + output (embeddings may only have input tokens)\n if (typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number') {\n const outputTokens =\n typeof attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number'\n ? attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]\n : 0;\n attributes[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = outputTokens + attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n }\n\n // Convert the available tools array to a JSON string\n if (attributes[AI_PROMPT_TOOLS_ATTRIBUTE] && Array.isArray(attributes[AI_PROMPT_TOOLS_ATTRIBUTE])) {\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] = convertAvailableToolsToJsonString(\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] ,\n );\n }\n\n // Rename AI SDK attributes to standardized gen_ai attributes\n // Map operation.name to OpenTelemetry semantic convention values\n if (attributes[OPERATION_NAME_ATTRIBUTE]) {\n const operationName = mapVercelAiOperationName(attributes[OPERATION_NAME_ATTRIBUTE] );\n attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE] = operationName;\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[OPERATION_NAME_ATTRIBUTE];\n }\n renameAttributeKey(attributes, AI_PROMPT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE);\n\n // Build gen_ai.output.messages from response text and/or tool calls\n // Note: buildOutputMessages also removes the source attributes when output is successfully generated\n buildOutputMessages(attributes);\n\n renameAttributeKey(attributes, AI_RESPONSE_OBJECT_ATTRIBUTE, 'gen_ai.response.object');\n renameAttributeKey(attributes, AI_PROMPT_TOOLS_ATTRIBUTE, 'gen_ai.request.available_tools');\n\n renameAttributeKey(attributes, AI_TOOL_CALL_ARGS_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_RESULT_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE);\n\n renameAttributeKey(attributes, AI_SCHEMA_ATTRIBUTE, 'gen_ai.request.schema');\n renameAttributeKey(attributes, AI_MODEL_ID_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE);\n\n // Map embedding input: ai.values → gen_ai.embeddings.input\n // Vercel AI SDK JSON-stringifies each value individually, so we parse each element back.\n // Single embed gets unwrapped to a plain value; batch embedMany stays as a JSON array.\n if (Array.isArray(attributes[AI_VALUES_ATTRIBUTE])) {\n const parsed = (attributes[AI_VALUES_ATTRIBUTE] ).map(v => {\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n });\n attributes[GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE] = parsed.length === 1 ? parsed[0] : JSON.stringify(parsed);\n }\n\n addProviderMetadataToAttributes(attributes);\n\n // Change attributes namespaced with `ai.X` to `vercel.ai.X`\n for (const key of Object.keys(attributes)) {\n if (key.startsWith('ai.')) {\n renameAttributeKey(attributes, key, `vercel.${key}`);\n }\n }\n}\n\n/**\n * Renames an attribute key in the provided attributes object if the old key exists.\n * This function safely handles null and undefined values.\n */\nfunction renameAttributeKey(attributes, oldKey, newKey) {\n if (attributes[oldKey] != null) {\n attributes[newKey] = attributes[oldKey];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[oldKey];\n }\n}\n\nfunction processToolCallSpan(span, attributes) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'gen_ai.execute_tool');\n span.setAttribute(GEN_AI_OPERATION_NAME_ATTRIBUTE, 'execute_tool');\n renameAttributeKey(attributes, AI_TOOL_CALL_NAME_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE);\n\n // Store the span context in our global map using the tool call ID.\n // This allows us to capture tool errors and link them to the correct span\n // without retaining the full Span object in memory.\n const toolCallId = attributes[GEN_AI_TOOL_CALL_ID_ATTRIBUTE];\n\n if (typeof toolCallId === 'string') {\n toolCallSpanContextMap.set(toolCallId, span.spanContext());\n }\n\n // https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-type\n if (!attributes[GEN_AI_TOOL_TYPE_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_TOOL_TYPE_ATTRIBUTE, 'function');\n }\n const toolName = attributes[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (toolName) {\n span.updateName(`execute_tool ${toolName}`);\n }\n}\n\nfunction processGenerateSpan(span, name, attributes) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n\n const nameWthoutAi = name.replace('ai.', '');\n span.setAttribute('ai.pipeline.name', nameWthoutAi);\n span.updateName(nameWthoutAi);\n\n const functionId = attributes[AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE];\n if (functionId && typeof functionId === 'string') {\n span.setAttribute('gen_ai.function_id', functionId);\n }\n\n requestMessagesFromPrompt(span, attributes);\n\n if (attributes[AI_MODEL_ID_ATTRIBUTE] && !attributes[GEN_AI_RESPONSE_MODEL_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, attributes[AI_MODEL_ID_ATTRIBUTE]);\n }\n span.setAttribute('ai.streaming', name.includes('stream'));\n\n // Set the op based on the span name\n const op = getSpanOpFromName(name);\n if (op) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n // For invoke_agent pipeline spans, use 'invoke_agent' as the description\n // to be consistent with other AI integrations (e.g. LangGraph)\n if (INVOKE_AGENT_OPS.has(name)) {\n if (functionId && typeof functionId === 'string') {\n span.updateName(`invoke_agent ${functionId}`);\n } else {\n span.updateName('invoke_agent');\n }\n return;\n }\n\n const modelId = attributes[AI_MODEL_ID_ATTRIBUTE];\n if (modelId) {\n const doSpanPrefix = GENERATE_CONTENT_OPS.has(name) ? 'generate_content' : DO_SPAN_NAME_PREFIX[name];\n if (doSpanPrefix) {\n span.updateName(`${doSpanPrefix} ${modelId}`);\n }\n }\n}\n\n/**\n * Add event processors to the given client to process Vercel AI spans.\n */\nfunction addVercelAiProcessors(client) {\n client.on('spanStart', onVercelAiSpanStart);\n // Note: We cannot do this on `spanEnd`, because the span cannot be mutated anymore at this point\n client.addEventProcessor(Object.assign(vercelAiEventProcessor, { id: 'VercelAiEventProcessor' }));\n}\n\nfunction addProviderMetadataToAttributes(attributes) {\n const providerMetadata = attributes[AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] ;\n if (providerMetadata) {\n try {\n const providerMetadataObject = JSON.parse(providerMetadata) ;\n\n // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure')\n const openaiMetadata =\n providerMetadataObject.openai ?? providerMetadataObject.azure;\n if (openaiMetadata) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n openaiMetadata.cachedPromptTokens,\n );\n setAttributeIfDefined(attributes, 'gen_ai.usage.output_tokens.reasoning', openaiMetadata.reasoningTokens);\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_accepted',\n openaiMetadata.acceptedPredictionTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_rejected',\n openaiMetadata.rejectedPredictionTokens,\n );\n if (!attributes['gen_ai.conversation.id']) {\n setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId);\n }\n }\n\n if (providerMetadataObject.anthropic) {\n const cachedInputTokens =\n providerMetadataObject.anthropic.usage?.cache_read_input_tokens ??\n providerMetadataObject.anthropic.cacheReadInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, cachedInputTokens);\n\n const cacheWriteInputTokens =\n providerMetadataObject.anthropic.usage?.cache_creation_input_tokens ??\n providerMetadataObject.anthropic.cacheCreationInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, cacheWriteInputTokens);\n }\n\n if (providerMetadataObject.bedrock?.usage) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheReadInputTokens,\n );\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheWriteInputTokens,\n );\n }\n\n if (providerMetadataObject.deepseek) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.deepseek.promptCacheHitTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.input_tokens.cache_miss',\n providerMetadataObject.deepseek.promptCacheMissTokens,\n );\n }\n } catch {\n // Ignore\n }\n }\n}\n\n/**\n * Sets an attribute only if the value is not null or undefined.\n */\nfunction setAttributeIfDefined(attributes, key, value) {\n if (value != null) {\n attributes[key] = value;\n }\n}\n\nexport { addVercelAiProcessors };\n//# sourceMappingURL=index.js.map\n", + "const OPENAI_INTEGRATION_NAME = 'OpenAI';\n\n// https://platform.openai.com/docs/quickstart?api-mode=responses\n// https://platform.openai.com/docs/quickstart?api-mode=chat\n// https://platform.openai.com/docs/api-reference/conversations\nconst INSTRUMENTED_METHODS = [\n 'responses.create',\n 'chat.completions.create',\n 'embeddings.create',\n // Conversations API - for conversation state management\n // https://platform.openai.com/docs/guides/conversation-state\n 'conversations.create',\n] ;\nconst RESPONSES_TOOL_CALL_EVENT_TYPES = [\n 'response.output_item.added',\n 'response.function_call_arguments.delta',\n 'response.function_call_arguments.done',\n 'response.output_item.done',\n] ;\nconst RESPONSE_EVENT_TYPES = [\n 'response.created',\n 'response.in_progress',\n 'response.failed',\n 'response.completed',\n 'response.incomplete',\n 'response.queued',\n 'response.output_text.delta',\n ...RESPONSES_TOOL_CALL_EVENT_TYPES,\n] ;\n\nexport { INSTRUMENTED_METHODS, OPENAI_INTEGRATION_NAME, RESPONSES_TOOL_CALL_EVENT_TYPES, RESPONSE_EVENT_TYPES };\n//# sourceMappingURL=constants.js.map\n", + "import { OPENAI_OPERATIONS, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_STREAM_ATTRIBUTE, GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE, GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE, GEN_AI_CONVERSATION_ID_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, OPENAI_RESPONSE_ID_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, OPENAI_RESPONSE_MODEL_ATTRIBUTE, OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { INSTRUMENTED_METHODS } from './constants.js';\n\n/**\n * Maps OpenAI method paths to OpenTelemetry semantic convention operation names\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction getOperationName(methodPath) {\n if (methodPath.includes('chat.completions')) {\n return OPENAI_OPERATIONS.CHAT;\n }\n if (methodPath.includes('responses')) {\n return OPENAI_OPERATIONS.CHAT;\n }\n if (methodPath.includes('embeddings')) {\n return OPENAI_OPERATIONS.EMBEDDINGS;\n }\n if (methodPath.includes('conversations')) {\n return OPENAI_OPERATIONS.CHAT;\n }\n return methodPath.split('.').pop() || 'unknown';\n}\n\n/**\n * Get the span operation for OpenAI methods\n * Following Sentry's convention: \"gen_ai.{operation_name}\"\n */\nfunction getSpanOperation(methodPath) {\n return `gen_ai.${getOperationName(methodPath)}`;\n}\n\n/**\n * Check if a method path should be instrumented\n */\nfunction shouldInstrument(methodPath) {\n return INSTRUMENTED_METHODS.includes(methodPath );\n}\n\n/**\n * Check if response is a Chat Completion object\n */\nfunction isChatCompletionResponse(response) {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response ).object === 'chat.completion'\n );\n}\n\n/**\n * Check if response is a Responses API object\n */\nfunction isResponsesApiResponse(response) {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response ).object === 'response'\n );\n}\n\n/**\n * Check if response is an Embeddings API object\n */\nfunction isEmbeddingsResponse(response) {\n if (response === null || typeof response !== 'object' || !('object' in response)) {\n return false;\n }\n const responseObject = response ;\n return (\n responseObject.object === 'list' &&\n typeof responseObject.model === 'string' &&\n responseObject.model.toLowerCase().includes('embedding')\n );\n}\n\n/**\n * Check if response is a Conversations API object\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nfunction isConversationResponse(response) {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response ).object === 'conversation'\n );\n}\n\n/**\n * Check if streaming event is from the Responses API\n */\nfunction isResponsesApiStreamEvent(event) {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'type' in event &&\n typeof (event ).type === 'string' &&\n ((event ).type ).startsWith('response.')\n );\n}\n\n/**\n * Check if streaming event is a chat completion chunk\n */\nfunction isChatCompletionChunk(event) {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'object' in event &&\n (event ).object === 'chat.completion.chunk'\n );\n}\n\n/**\n * Add attributes for Chat Completion responses\n */\nfunction addChatCompletionAttributes(\n span,\n response,\n recordOutputs,\n) {\n setCommonResponseAttributes(span, response.id, response.model, response.created);\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.prompt_tokens,\n response.usage.completion_tokens,\n response.usage.total_tokens,\n );\n }\n if (Array.isArray(response.choices)) {\n const finishReasons = response.choices\n .map(choice => choice.finish_reason)\n .filter((reason) => reason !== null);\n if (finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(finishReasons),\n });\n }\n\n // Extract tool calls from all choices (only if recordOutputs is true)\n if (recordOutputs) {\n const toolCalls = response.choices\n .map(choice => choice.message?.tool_calls)\n .filter(calls => Array.isArray(calls) && calls.length > 0)\n .flat();\n\n if (toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Responses API responses\n */\nfunction addResponsesApiAttributes(span, response, recordOutputs) {\n setCommonResponseAttributes(span, response.id, response.model, response.created_at);\n if (response.status) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify([response.status]),\n });\n }\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.total_tokens,\n );\n }\n\n // Extract function calls from output (only if recordOutputs is true)\n if (recordOutputs) {\n const responseWithOutput = response ;\n if (Array.isArray(responseWithOutput.output) && responseWithOutput.output.length > 0) {\n // Filter for function_call type objects in the output array\n const functionCalls = responseWithOutput.output.filter(\n (item) =>\n // oxlint-disable-next-line typescript/prefer-optional-chain\n typeof item === 'object' && item !== null && (item ).type === 'function_call',\n );\n\n if (functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Embeddings API responses\n */\nfunction addEmbeddingsAttributes(span, response) {\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if (response.usage) {\n setTokenUsageAttributes(span, response.usage.prompt_tokens, undefined, response.usage.total_tokens);\n }\n}\n\n/**\n * Add attributes for Conversations API responses\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nfunction addConversationAttributes(span, response) {\n const { id, created_at } = response;\n\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n // The conversation id is used to link messages across API calls\n [GEN_AI_CONVERSATION_ID_ATTRIBUTE]: id,\n });\n\n if (created_at) {\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(created_at * 1000).toISOString(),\n });\n }\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param totalTokens - The number of total tokens\n */\nfunction setTokenUsageAttributes(\n span,\n promptTokens,\n completionTokens,\n totalTokens,\n) {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE]: promptTokens,\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE]: completionTokens,\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (totalTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Set common response attributes\n * @param span - The span to add attributes to\n * @param id - The response id\n * @param model - The response model\n * @param timestamp - The response timestamp\n */\nfunction setCommonResponseAttributes(span, id, model, timestamp) {\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: model,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(timestamp * 1000).toISOString(),\n });\n}\n\n/**\n * Extract conversation ID from request parameters\n * Supports both Conversations API and previous_response_id chaining\n * @see https://platform.openai.com/docs/guides/conversation-state\n */\nfunction extractConversationId(params) {\n // Conversations API: conversation parameter (e.g., \"conv_...\")\n if ('conversation' in params && typeof params.conversation === 'string') {\n return params.conversation;\n }\n // Responses chaining: previous_response_id links to parent response\n if ('previous_response_id' in params && typeof params.previous_response_id === 'string') {\n return params.previous_response_id;\n }\n return undefined;\n}\n\n/**\n * Extract request parameters including model settings and conversation context\n */\nfunction extractRequestParameters(params) {\n const attributes = {\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: params.model ?? 'unknown',\n };\n\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('frequency_penalty' in params) attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('presence_penalty' in params) attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = params.presence_penalty;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('encoding_format' in params) attributes[GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE] = params.encoding_format;\n if ('dimensions' in params) attributes[GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE] = params.dimensions;\n\n // Capture conversation ID for linking messages across API calls\n const conversationId = extractConversationId(params);\n if (conversationId) {\n attributes[GEN_AI_CONVERSATION_ID_ATTRIBUTE] = conversationId;\n }\n\n return attributes;\n}\n\nexport { addChatCompletionAttributes, addConversationAttributes, addEmbeddingsAttributes, addResponsesApiAttributes, extractRequestParameters, getOperationName, getSpanOperation, isChatCompletionChunk, isChatCompletionResponse, isConversationResponse, isEmbeddingsResponse, isResponsesApiResponse, isResponsesApiStreamEvent, setCommonResponseAttributes, setTokenUsageAttributes, shouldInstrument };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { GEN_AI_RESPONSE_STREAMING_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { RESPONSE_EVENT_TYPES } from './constants.js';\nimport { isChatCompletionChunk, isResponsesApiStreamEvent, setCommonResponseAttributes, setTokenUsageAttributes } from './utils.js';\n\n/**\n * State object used to accumulate information from a stream of OpenAI events/chunks.\n */\n\n/**\n * Processes tool calls from a chat completion chunk delta.\n * Follows the pattern: accumulate by index, then convert to array at the end.\n *\n * @param toolCalls - Array of tool calls from the delta.\n * @param state - The current streaming state to update.\n *\n * @see https://platform.openai.com/docs/guides/function-calling#streaming\n */\nfunction processChatCompletionToolCalls(toolCalls, state) {\n for (const toolCall of toolCalls) {\n const index = toolCall.index;\n if (index === undefined || !toolCall.function) continue;\n\n // Initialize tool call if this is the first chunk for this index\n if (!(index in state.chatCompletionToolCalls)) {\n state.chatCompletionToolCalls[index] = {\n ...toolCall,\n function: {\n name: toolCall.function.name,\n arguments: toolCall.function.arguments || '',\n },\n };\n } else {\n // Accumulate function arguments from subsequent chunks\n const existingToolCall = state.chatCompletionToolCalls[index];\n if (toolCall.function.arguments && existingToolCall?.function) {\n existingToolCall.function.arguments += toolCall.function.arguments;\n }\n }\n }\n}\n\n/**\n * Processes a single OpenAI ChatCompletionChunk event, updating the streaming state.\n *\n * @param chunk - The ChatCompletionChunk event to process.\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n */\nfunction processChatCompletionChunk(chunk, state, recordOutputs) {\n state.responseId = chunk.id ?? state.responseId;\n state.responseModel = chunk.model ?? state.responseModel;\n state.responseTimestamp = chunk.created ?? state.responseTimestamp;\n\n if (chunk.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = chunk.usage.prompt_tokens;\n state.completionTokens = chunk.usage.completion_tokens;\n state.totalTokens = chunk.usage.total_tokens;\n }\n\n for (const choice of chunk.choices ?? []) {\n if (recordOutputs) {\n if (choice.delta?.content) {\n state.responseTexts.push(choice.delta.content);\n }\n\n // Handle tool calls from delta\n if (choice.delta?.tool_calls) {\n processChatCompletionToolCalls(choice.delta.tool_calls, state);\n }\n }\n if (choice.finish_reason) {\n state.finishReasons.push(choice.finish_reason);\n }\n }\n}\n\n/**\n * Processes a single OpenAI Responses API streaming event, updating the streaming state and span.\n *\n * @param streamEvent - The event to process (may be an error or unknown object).\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n * @param span - The span to update with error status if needed.\n */\nfunction processResponsesApiEvent(\n streamEvent,\n state,\n recordOutputs,\n span,\n) {\n if (!(streamEvent && typeof streamEvent === 'object')) {\n state.eventTypes.push('unknown:non-object');\n return;\n }\n if (streamEvent instanceof Error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(streamEvent, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream-response',\n },\n });\n return;\n }\n\n if (!('type' in streamEvent)) return;\n const event = streamEvent ;\n\n if (!RESPONSE_EVENT_TYPES.includes(event.type)) {\n state.eventTypes.push(event.type);\n return;\n }\n\n // Handle output text delta\n if (recordOutputs) {\n // Handle tool call events for Responses API\n if (event.type === 'response.output_item.done' && 'item' in event) {\n state.responsesApiToolCalls.push(event.item);\n }\n\n if (event.type === 'response.output_text.delta' && 'delta' in event && event.delta) {\n state.responseTexts.push(event.delta);\n return;\n }\n }\n\n if ('response' in event) {\n const { response } = event ;\n state.responseId = response.id ?? state.responseId;\n state.responseModel = response.model ?? state.responseModel;\n state.responseTimestamp = response.created_at ?? state.responseTimestamp;\n\n if (response.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = response.usage.input_tokens;\n state.completionTokens = response.usage.output_tokens;\n state.totalTokens = response.usage.total_tokens;\n }\n\n if (response.status) {\n state.finishReasons.push(response.status);\n }\n\n if (recordOutputs && response.output_text) {\n state.responseTexts.push(response.output_text);\n }\n }\n}\n\n/**\n * Instruments a stream of OpenAI events, updating the provided span with relevant attributes and\n * optionally recording output text. This function yields each event from the input stream as it is processed.\n *\n * @template T - The type of events in the stream.\n * @param stream - The async iterable stream of events to instrument.\n * @param span - The span to add attributes to and to finish at the end of the stream.\n * @param recordOutputs - Whether to record output text fragments in the span.\n * @returns An async generator yielding each event from the input stream.\n */\nasync function* instrumentStream(\n stream,\n span,\n recordOutputs,\n) {\n const state = {\n eventTypes: [],\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n responseTimestamp: 0,\n promptTokens: undefined,\n completionTokens: undefined,\n totalTokens: undefined,\n chatCompletionToolCalls: {},\n responsesApiToolCalls: [],\n };\n\n try {\n for await (const event of stream) {\n if (isChatCompletionChunk(event)) {\n processChatCompletionChunk(event , state, recordOutputs);\n } else if (isResponsesApiStreamEvent(event)) {\n processResponsesApiEvent(event , state, recordOutputs, span);\n }\n yield event;\n }\n } finally {\n setCommonResponseAttributes(span, state.responseId, state.responseModel, state.responseTimestamp);\n setTokenUsageAttributes(span, state.promptTokens, state.completionTokens, state.totalTokens);\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls attribute if any were accumulated\n const chatCompletionToolCallsArray = Object.values(state.chatCompletionToolCalls);\n const allToolCalls = [...chatCompletionToolCallsArray, ...state.responsesApiToolCalls];\n\n if (allToolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(allToolCalls),\n });\n }\n\n span.end();\n }\n}\n\nexport { instrumentStream };\n//# sourceMappingURL=streaming.js.map\n", + "import { DEBUG_BUILD } from '../../debug-build.js';\nimport { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { debug } from '../../utils/debug-logger.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpanManual, startSpan } from '../trace.js';\nimport { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, OPENAI_OPERATIONS, GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { resolveAIRecordingOptions, wrapPromiseWithMethods, extractSystemInstructions, getTruncatedJsonString, buildMethodPath } from '../ai/utils.js';\nimport { instrumentStream } from './streaming.js';\nimport { shouldInstrument, getOperationName, getSpanOperation, extractRequestParameters, isChatCompletionResponse, addChatCompletionAttributes, isResponsesApiResponse, addResponsesApiAttributes, isEmbeddingsResponse, addEmbeddingsAttributes, isConversationResponse, addConversationAttributes } from './utils.js';\n\n/**\n * Extract available tools from request parameters\n */\nfunction extractAvailableTools(params) {\n const tools = Array.isArray(params.tools) ? params.tools : [];\n const hasWebSearchOptions = params.web_search_options && typeof params.web_search_options === 'object';\n const webSearchOptions = hasWebSearchOptions\n ? [{ type: 'web_search_options', ...(params.web_search_options ) }]\n : [];\n\n const availableTools = [...tools, ...webSearchOptions];\n if (availableTools.length === 0) {\n return undefined;\n }\n\n try {\n return JSON.stringify(availableTools);\n } catch (error) {\n DEBUG_BUILD && debug.error('Failed to serialize OpenAI tools:', error);\n return undefined;\n }\n}\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args, methodPath) {\n const attributes = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getOperationName(methodPath),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] ;\n\n const availableTools = extractAvailableTools(params);\n if (availableTools) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = availableTools;\n }\n\n Object.assign(attributes, extractRequestParameters(params));\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n\n return attributes;\n}\n\n/**\n * Add response attributes to spans\n * This supports Chat Completion, Responses API, Embeddings, and Conversations API responses\n */\nfunction addResponseAttributes(span, result, recordOutputs) {\n if (!result || typeof result !== 'object') return;\n\n const response = result ;\n\n if (isChatCompletionResponse(response)) {\n addChatCompletionAttributes(span, response, recordOutputs);\n if (recordOutputs && response.choices?.length) {\n const responseTexts = response.choices.map(choice => choice.message?.content || '');\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(responseTexts) });\n }\n } else if (isResponsesApiResponse(response)) {\n addResponsesApiAttributes(span, response, recordOutputs);\n if (recordOutputs && response.output_text) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.output_text });\n }\n } else if (isEmbeddingsResponse(response)) {\n addEmbeddingsAttributes(span, response);\n } else if (isConversationResponse(response)) {\n addConversationAttributes(span, response);\n }\n}\n\n// Extract and record AI request inputs, if present. This is intentionally separate from response attributes.\nfunction addRequestAttributes(span, params, operationName) {\n // Store embeddings input on a separate attribute and do not truncate it\n if (operationName === OPENAI_OPERATIONS.EMBEDDINGS && 'input' in params) {\n const input = params.input;\n\n // No input provided\n if (input == null) {\n return;\n }\n\n // Empty input string\n if (typeof input === 'string' && input.length === 0) {\n return;\n }\n\n // Empty array input\n if (Array.isArray(input) && input.length === 0) {\n return;\n }\n\n // Store strings as-is, arrays/objects as JSON\n span.setAttribute(GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, typeof input === 'string' ? input : JSON.stringify(input));\n return;\n }\n\n const src = 'input' in params ? params.input : 'messages' in params ? params.messages : undefined;\n\n if (!src) {\n return;\n }\n\n if (Array.isArray(src) && src.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(src);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedInput = getTruncatedJsonString(filteredMessages);\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ATTRIBUTE, truncatedInput);\n\n if (Array.isArray(filteredMessages)) {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredMessages.length);\n } else {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, 1);\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod,\n methodPath,\n context,\n options,\n) {\n return function instrumentedMethod(...args) {\n const requestAttributes = extractRequestAttributes(args, methodPath);\n const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ) || 'unknown';\n const operationName = getOperationName(methodPath);\n\n const params = args[0] ;\n const isStreamRequested = params && typeof params === 'object' && params.stream === true;\n\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes ,\n };\n\n if (isStreamRequested) {\n let originalResult;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span) => {\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n // Return async processing\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentStream(\n result ,\n span,\n options.recordOutputs ?? false,\n ) ;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n }\n\n // Non-streaming\n let originalResult;\n\n const instrumentedPromise = startSpan(spanConfig, (span) => {\n // Call synchronously to capture the promise\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result, options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai',\n data: { function: methodPath },\n },\n });\n throw error;\n },\n );\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n };\n}\n\n/**\n * Create a deep proxy for OpenAI client instrumentation\n */\nfunction createDeepProxy(target, currentPath = '', options) {\n return new Proxy(target, {\n get(obj, prop) {\n const value = (obj )[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n return instrumentMethod(value , methodPath, obj, options);\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n // which is required for accessing private class fields (e.g. #baseURL) in OpenAI SDK v5.\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) ;\n}\n\n/**\n * Instrument an OpenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n */\nfunction instrumentOpenAiClient(client, options) {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n\nexport { instrumentOpenAiClient };\n//# sourceMappingURL=index.js.map\n", + "const ANTHROPIC_AI_INTEGRATION_NAME = 'Anthropic_AI';\n\n// https://docs.anthropic.com/en/api/messages\n// https://docs.anthropic.com/en/api/models-list\nconst ANTHROPIC_AI_INSTRUMENTED_METHODS = [\n 'messages.create',\n 'messages.stream',\n 'messages.countTokens',\n 'models.get',\n 'completions.create',\n 'models.retrieve',\n 'beta.messages.create',\n] ;\n\nexport { ANTHROPIC_AI_INSTRUMENTED_METHODS, ANTHROPIC_AI_INTEGRATION_NAME };\n//# sourceMappingURL=constants.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils.js';\nimport { ANTHROPIC_AI_INSTRUMENTED_METHODS } from './constants.js';\n\n/**\n * Check if a method path should be instrumented\n */\nfunction shouldInstrument(methodPath) {\n return ANTHROPIC_AI_INSTRUMENTED_METHODS.includes(methodPath );\n}\n\n/**\n * Set the messages and messages original length attributes.\n * Extracts system instructions before truncation.\n */\nfunction setMessagesAttribute(span, messages) {\n if (Array.isArray(messages) && messages.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttributes({\n [GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions,\n });\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n}\n\nconst ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS = {\n invalid_request_error: 'invalid_argument',\n authentication_error: 'unauthenticated',\n permission_error: 'permission_denied',\n not_found_error: 'not_found',\n request_too_large: 'failed_precondition',\n rate_limit_error: 'resource_exhausted',\n api_error: 'internal_error',\n overloaded_error: 'unavailable',\n};\n\n/**\n * Map an Anthropic API error type to a SpanStatusType value.\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nfunction mapAnthropicErrorToStatusMessage(errorType) {\n if (!errorType) {\n return 'internal_error';\n }\n return ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS[errorType] || 'internal_error';\n}\n\n/**\n * Capture error information from the response\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nfunction handleResponseError(span, response) {\n if (response.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(response.error.type) });\n\n captureException(response.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n }\n}\n\n/**\n * Include the system prompt in the messages list, if available\n */\nfunction messagesFromParams(params) {\n const { system, messages, input } = params;\n\n const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : [];\n\n const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : undefined;\n\n const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : [];\n\n const userMessages = inputParamMessages ?? messagesParamMessages;\n\n return [...systemMessages, ...userMessages];\n}\n\nexport { handleResponseError, mapAnthropicErrorToStatusMessage, messagesFromParams, setMessagesAttribute, shouldInstrument };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { GEN_AI_RESPONSE_STREAMING_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { setTokenUsageAttributes } from '../ai/utils.js';\nimport { mapAnthropicErrorToStatusMessage } from './utils.js';\n\n/**\n * State object used to accumulate information from a stream of Anthropic AI events.\n */\n\n/**\n * Checks if an event is an error event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n * @returns Whether an error occurred\n */\n\nfunction isErrorEvent(event, span) {\n if ('type' in event && typeof event.type === 'string') {\n // If the event is an error, set the span status and capture the error\n // These error events are not rejected by the API by default, but are sent as metadata of the response\n if (event.type === 'error') {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(event.error?.type) });\n captureException(event.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n return true;\n }\n }\n return false;\n}\n\n/**\n * Processes the message metadata of an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n */\n\nfunction handleMessageMetadata(event, state) {\n // The token counts shown in the usage field of the message_delta event are cumulative.\n // @see https://docs.anthropic.com/en/docs/build-with-claude/streaming#event-types\n if (event.type === 'message_delta' && event.usage) {\n if ('output_tokens' in event.usage && typeof event.usage.output_tokens === 'number') {\n state.completionTokens = event.usage.output_tokens;\n }\n }\n\n if (event.message) {\n const message = event.message;\n\n if (message.id) state.responseId = message.id;\n if (message.model) state.responseModel = message.model;\n if (message.stop_reason) state.finishReasons.push(message.stop_reason);\n\n if (message.usage) {\n if (typeof message.usage.input_tokens === 'number') state.promptTokens = message.usage.input_tokens;\n if (typeof message.usage.cache_creation_input_tokens === 'number')\n state.cacheCreationInputTokens = message.usage.cache_creation_input_tokens;\n if (typeof message.usage.cache_read_input_tokens === 'number')\n state.cacheReadInputTokens = message.usage.cache_read_input_tokens;\n }\n }\n}\n\n/**\n * Handle start of a content block (e.g., tool_use)\n */\nfunction handleContentBlockStart(event, state) {\n if (event.type !== 'content_block_start' || typeof event.index !== 'number' || !event.content_block) return;\n if (event.content_block.type === 'tool_use' || event.content_block.type === 'server_tool_use') {\n state.activeToolBlocks[event.index] = {\n id: event.content_block.id,\n name: event.content_block.name,\n inputJsonParts: [],\n };\n }\n}\n\n/**\n * Handle deltas of a content block, including input_json_delta for tool_use\n */\nfunction handleContentBlockDelta(\n event,\n state,\n recordOutputs,\n) {\n if (event.type !== 'content_block_delta' || !event.delta) return;\n\n // Accumulate tool_use input JSON deltas only when we have an index and an active tool block\n if (\n typeof event.index === 'number' &&\n 'partial_json' in event.delta &&\n typeof event.delta.partial_json === 'string'\n ) {\n const active = state.activeToolBlocks[event.index];\n if (active) {\n active.inputJsonParts.push(event.delta.partial_json);\n }\n }\n\n // Accumulate streamed response text regardless of index\n if (recordOutputs && typeof event.delta.text === 'string') {\n state.responseTexts.push(event.delta.text);\n }\n}\n\n/**\n * Handle stop of a content block; finalize tool_use entries\n */\nfunction handleContentBlockStop(event, state) {\n if (event.type !== 'content_block_stop' || typeof event.index !== 'number') return;\n\n const active = state.activeToolBlocks[event.index];\n if (!active) return;\n\n const raw = active.inputJsonParts.join('');\n let parsedInput;\n\n try {\n parsedInput = raw ? JSON.parse(raw) : {};\n } catch {\n parsedInput = { __unparsed: raw };\n }\n\n state.toolCalls.push({\n type: 'tool_use',\n id: active.id,\n name: active.name,\n input: parsedInput,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete state.activeToolBlocks[event.index];\n}\n\n/**\n * Processes an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processEvent(\n event,\n state,\n recordOutputs,\n span,\n) {\n if (!(event && typeof event === 'object')) {\n return;\n }\n\n const isError = isErrorEvent(event, span);\n if (isError) return;\n\n handleMessageMetadata(event, state);\n\n // Tool call events are sent via 3 separate events:\n // - content_block_start (start of the tool call)\n // - content_block_delta (delta aka input of the tool call)\n // - content_block_stop (end of the tool call)\n // We need to handle them all to capture the full tool call.\n handleContentBlockStart(event, state);\n handleContentBlockDelta(event, state, recordOutputs);\n handleContentBlockStop(event, state);\n}\n\n/**\n * Finalizes span attributes when stream processing completes\n */\nfunction finalizeStreamSpan(state, span, recordOutputs) {\n if (!span.isRecording()) {\n return;\n }\n\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n}\n\n/**\n * Instruments an async iterable stream of Anthropic events, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each event from the input stream unchanged.\n */\nasync function* instrumentAsyncIterableStream(\n stream,\n span,\n recordOutputs,\n) {\n const state = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n try {\n for await (const event of stream) {\n processEvent(event, state, recordOutputs, span);\n yield event;\n }\n } finally {\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n }\n}\n\n/**\n * Instruments a MessageStream by registering event handlers and preserving the original stream API.\n */\nfunction instrumentMessageStream(\n stream,\n span,\n recordOutputs,\n) {\n const state = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n stream.on('streamEvent', (event) => {\n processEvent(event , state, recordOutputs, span);\n });\n\n // The event fired when a message is done being streamed by the API. Corresponds to the message_stop SSE event.\n // @see https://github.com/anthropics/anthropic-sdk-typescript/blob/d3be31f5a4e6ebb4c0a2f65dbb8f381ae73a9166/helpers.md?plain=1#L42-L44\n stream.on('message', () => {\n finalizeStreamSpan(state, span, recordOutputs);\n });\n\n stream.on('error', (error) => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.stream_error',\n },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n });\n\n return stream;\n}\n\nexport { instrumentAsyncIterableStream, instrumentMessageStream };\n//# sourceMappingURL=streaming.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpan, startSpanManual } from '../trace.js';\nimport { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_REQUEST_STREAM_ATTRIBUTE, GEN_AI_REQUEST_TOP_K_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, GEN_AI_PROMPT_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { resolveAIRecordingOptions, getFinalOperationName, getSpanOperation, wrapPromiseWithMethods, setTokenUsageAttributes, buildMethodPath } from '../ai/utils.js';\nimport { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming.js';\nimport { shouldInstrument, messagesFromParams, setMessagesAttribute, handleResponseError } from './utils.js';\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args, methodPath) {\n const attributes = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getFinalOperationName(methodPath),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] ;\n if (params.tools && Array.isArray(params.tools)) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(params.tools);\n }\n\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = params.model ?? 'unknown';\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('top_k' in params) attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = params.top_k;\n if ('frequency_penalty' in params)\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('max_tokens' in params) attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = params.max_tokens;\n } else {\n if (methodPath === 'models.retrieve' || methodPath === 'models.get') {\n // models.retrieve(model-id) and models.get(model-id)\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = args[0];\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n */\nfunction addPrivateRequestAttributes(span, params) {\n const messages = messagesFromParams(params);\n setMessagesAttribute(span, messages);\n\n if ('prompt' in params) {\n span.setAttributes({ [GEN_AI_PROMPT_ATTRIBUTE]: JSON.stringify(params.prompt) });\n }\n}\n\n/**\n * Add content attributes when recordOutputs is enabled\n */\nfunction addContentAttributes(span, response) {\n // Messages.create\n if ('content' in response) {\n if (Array.isArray(response.content)) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.content\n .map((item) => item.text)\n .filter(text => !!text)\n .join(''),\n });\n\n const toolCalls = [];\n\n for (const item of response.content) {\n if (item.type === 'tool_use' || item.type === 'server_tool_use') {\n toolCalls.push(item);\n }\n }\n if (toolCalls.length > 0) {\n span.setAttributes({ [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls) });\n }\n }\n }\n // Completions.create\n if ('completion' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.completion });\n }\n // Models.countTokens\n if ('input_tokens' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(response.input_tokens) });\n }\n}\n\n/**\n * Add basic metadata attributes from the response\n */\nfunction addMetadataAttributes(span, response) {\n if ('id' in response && 'model' in response) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: response.id,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if ('created' in response && typeof response.created === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created * 1000).toISOString(),\n });\n }\n if ('created_at' in response && typeof response.created_at === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created_at * 1000).toISOString(),\n });\n }\n\n if ('usage' in response && response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.cache_creation_input_tokens,\n response.usage.cache_read_input_tokens,\n );\n }\n }\n}\n\n/**\n * Add response attributes to spans\n */\nfunction addResponseAttributes(span, response, recordOutputs) {\n if (!response || typeof response !== 'object') return;\n\n // capture error, do not add attributes if error (they shouldn't exist)\n if ('type' in response && response.type === 'error') {\n handleResponseError(span, response);\n return;\n }\n\n // Private response attributes that are only recorded if recordOutputs is true.\n if (recordOutputs) {\n addContentAttributes(span, response);\n }\n\n // Add basic metadata attributes\n addMetadataAttributes(span, response);\n}\n\n/**\n * Handle common error catching and reporting for streaming requests\n */\nfunction handleStreamingError(error, span, methodPath) {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.anthropic', data: { function: methodPath } },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n throw error;\n}\n\n/**\n * Handle streaming cases with common logic\n */\nfunction handleStreamingRequest(\n originalMethod,\n target,\n context,\n args,\n requestAttributes,\n operationName,\n methodPath,\n params,\n options,\n isStreamRequested,\n isStreamingMethod,\n) {\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes ,\n };\n\n // messages.stream() always returns a sync MessageStream, even with stream: true param\n if (isStreamRequested && !isStreamingMethod) {\n let originalResult;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span) => {\n originalResult = originalMethod.apply(context, args) ;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentAsyncIterableStream(\n result ,\n span,\n options.recordOutputs ?? false,\n ) ;\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n } else {\n return startSpanManual(spanConfig, span => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const messageStream = target.apply(context, args);\n return instrumentMessageStream(messageStream, span, options.recordOutputs ?? false);\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n });\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod,\n methodPath,\n context,\n options,\n) {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args) {\n const requestAttributes = extractRequestAttributes(args, methodPath);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const operationName = getFinalOperationName(methodPath);\n\n const params = typeof args[0] === 'object' ? (args[0] ) : undefined;\n const isStreamRequested = Boolean(params?.stream);\n const isStreamingMethod = methodPath === 'messages.stream';\n\n if (isStreamRequested || isStreamingMethod) {\n return handleStreamingRequest(\n originalMethod,\n target,\n context,\n args,\n requestAttributes,\n operationName,\n methodPath,\n params,\n options,\n isStreamRequested,\n isStreamingMethod,\n );\n }\n\n let originalResult;\n\n const instrumentedPromise = startSpan(\n {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes ,\n },\n span => {\n originalResult = target.apply(context, args) ;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result , options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic',\n data: {\n function: methodPath,\n },\n },\n });\n throw error;\n },\n );\n },\n );\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n },\n }) ;\n}\n\n/**\n * Create a deep proxy for Anthropic AI client instrumentation\n */\nfunction createDeepProxy(target, currentPath = '', options) {\n return new Proxy(target, {\n get(obj, prop) {\n const value = (obj )[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n return instrumentMethod(value , methodPath, obj, options);\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) ;\n}\n\n/**\n * Instrument an Anthropic AI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends object\n * @param client - The Anthropic AI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n */\nfunction instrumentAnthropicAiClient(anthropicAiClient, options) {\n return createDeepProxy(anthropicAiClient, '', resolveAIRecordingOptions(options));\n}\n\nexport { instrumentAnthropicAiClient };\n//# sourceMappingURL=index.js.map\n", + "const GOOGLE_GENAI_INTEGRATION_NAME = 'Google_GenAI';\n\n// https://ai.google.dev/api/rest/v1/models/generateContent\n// https://ai.google.dev/api/rest/v1/chats/sendMessage\n// https://googleapis.github.io/js-genai/release_docs/classes/models.Models.html#generatecontentstream\n// https://googleapis.github.io/js-genai/release_docs/classes/chats.Chat.html#sendmessagestream\nconst GOOGLE_GENAI_INSTRUMENTED_METHODS = [\n 'models.generateContent',\n 'models.generateContentStream',\n 'chats.create',\n 'sendMessage',\n 'sendMessageStream',\n] ;\n\n// Constants for internal use\nconst GOOGLE_GENAI_SYSTEM_NAME = 'google_genai';\nconst CHATS_CREATE_METHOD = 'chats.create';\nconst CHAT_PATH = 'chat';\n\nexport { CHATS_CREATE_METHOD, CHAT_PATH, GOOGLE_GENAI_INSTRUMENTED_METHODS, GOOGLE_GENAI_INTEGRATION_NAME, GOOGLE_GENAI_SYSTEM_NAME };\n//# sourceMappingURL=constants.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { GEN_AI_RESPONSE_STREAMING_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\n\n/**\n * State object used to accumulate information from a stream of Google GenAI events.\n */\n\n/**\n * Checks if a response chunk contains an error\n * @param chunk - The response chunk to check\n * @param span - The span to update if error is found\n * @returns Whether an error occurred\n */\nfunction isErrorChunk(chunk, span) {\n const feedback = chunk?.promptFeedback;\n if (feedback?.blockReason) {\n const message = feedback.blockReasonMessage ?? feedback.blockReason;\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(`Content blocked: ${message}`, {\n mechanism: { handled: false, type: 'auto.ai.google_genai' },\n });\n return true;\n }\n return false;\n}\n\n/**\n * Processes response metadata from a chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n */\nfunction handleResponseMetadata(chunk, state) {\n if (typeof chunk.responseId === 'string') state.responseId = chunk.responseId;\n if (typeof chunk.modelVersion === 'string') state.responseModel = chunk.modelVersion;\n\n const usage = chunk.usageMetadata;\n if (usage) {\n if (typeof usage.promptTokenCount === 'number') state.promptTokens = usage.promptTokenCount;\n if (typeof usage.candidatesTokenCount === 'number') state.completionTokens = usage.candidatesTokenCount;\n if (typeof usage.totalTokenCount === 'number') state.totalTokens = usage.totalTokenCount;\n }\n}\n\n/**\n * Processes candidate content from a response chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n */\nfunction handleCandidateContent(chunk, state, recordOutputs) {\n if (Array.isArray(chunk.functionCalls)) {\n state.toolCalls.push(...chunk.functionCalls);\n }\n\n for (const candidate of chunk.candidates ?? []) {\n if (candidate?.finishReason && !state.finishReasons.includes(candidate.finishReason)) {\n state.finishReasons.push(candidate.finishReason);\n }\n\n for (const part of candidate?.content?.parts ?? []) {\n if (recordOutputs && part.text) state.responseTexts.push(part.text);\n if (part.functionCall) {\n state.toolCalls.push({\n type: 'function',\n id: part.functionCall.id,\n name: part.functionCall.name,\n arguments: part.functionCall.args,\n });\n }\n }\n }\n}\n\n/**\n * Processes a single chunk from the Google GenAI stream\n * @param chunk - The chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processChunk(chunk, state, recordOutputs, span) {\n if (!chunk || isErrorChunk(chunk, span)) return;\n handleResponseMetadata(chunk, state);\n handleCandidateContent(chunk, state, recordOutputs);\n}\n\n/**\n * Instruments an async iterable stream of Google GenAI response chunks, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each chunk from the input stream unchanged.\n */\nasync function* instrumentStream(\n stream,\n span,\n recordOutputs,\n) {\n const state = {\n responseTexts: [],\n finishReasons: [],\n toolCalls: [],\n };\n\n try {\n for await (const chunk of stream) {\n processChunk(chunk, state, recordOutputs, span);\n yield chunk;\n }\n } finally {\n const attrs = {\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n };\n\n if (state.responseId) attrs[GEN_AI_RESPONSE_ID_ATTRIBUTE] = state.responseId;\n if (state.responseModel) attrs[GEN_AI_RESPONSE_MODEL_ATTRIBUTE] = state.responseModel;\n if (state.promptTokens !== undefined) attrs[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = state.promptTokens;\n if (state.completionTokens !== undefined) attrs[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = state.completionTokens;\n if (state.totalTokens !== undefined) attrs[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = state.totalTokens;\n\n if (state.finishReasons.length) {\n attrs[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE] = JSON.stringify(state.finishReasons);\n }\n if (recordOutputs && state.responseTexts.length) {\n attrs[GEN_AI_RESPONSE_TEXT_ATTRIBUTE] = state.responseTexts.join('');\n }\n if (recordOutputs && state.toolCalls.length) {\n attrs[GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE] = JSON.stringify(state.toolCalls);\n }\n\n span.setAttributes(attrs);\n span.end();\n }\n}\n\nexport { instrumentStream };\n//# sourceMappingURL=streaming.js.map\n", + "import { GOOGLE_GENAI_INSTRUMENTED_METHODS } from './constants.js';\n\n/**\n * Check if a method path should be instrumented\n */\nfunction shouldInstrument(methodPath) {\n // Check for exact matches first (like 'models.generateContent')\n if (GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodPath )) {\n return true;\n }\n\n // Check for method name matches (like 'sendMessage' from chat instances)\n const methodName = methodPath.split('.').pop();\n return GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodName );\n}\n\n/**\n * Check if a method is a streaming method\n */\nfunction isStreamingMethod(methodPath) {\n return methodPath.includes('Stream');\n}\n\n// Copied from https://googleapis.github.io/js-genai/release_docs/index.html\n\n/**\n *\n */\nfunction contentUnionToMessages(content, role = 'user') {\n if (typeof content === 'string') {\n return [{ role, content }];\n }\n if (Array.isArray(content)) {\n return content.flatMap(content => contentUnionToMessages(content, role));\n }\n if (typeof content !== 'object' || !content) return [];\n if ('role' in content && typeof content.role === 'string') {\n return [content ];\n }\n if ('parts' in content) {\n return [{ ...content, role } ];\n }\n return [{ role, content }];\n}\n\nexport { contentUnionToMessages, isStreamingMethod, shouldInstrument };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpanManual, startSpan } from '../trace.js';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors.js';\nimport { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_REQUEST_TOP_K_ATTRIBUTE, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { truncateGenAiMessages } from '../ai/messageTruncation.js';\nimport { resolveAIRecordingOptions, buildMethodPath, getFinalOperationName, getSpanOperation, extractSystemInstructions } from '../ai/utils.js';\nimport { CHATS_CREATE_METHOD, CHAT_PATH, GOOGLE_GENAI_SYSTEM_NAME } from './constants.js';\nimport { instrumentStream } from './streaming.js';\nimport { shouldInstrument, isStreamingMethod, contentUnionToMessages } from './utils.js';\n\n/**\n * Extract model from parameters or chat context object\n * For chat instances, the model is available on the chat object as 'model' (older versions) or 'modelVersion' (newer versions)\n */\nfunction extractModel(params, context) {\n if ('model' in params && typeof params.model === 'string') {\n return params.model;\n }\n\n // Try to get model from chat context object (chat instance has model property)\n if (context && typeof context === 'object') {\n const contextObj = context ;\n\n // Check for 'model' property (older versions, and streaming)\n if ('model' in contextObj && typeof contextObj.model === 'string') {\n return contextObj.model;\n }\n\n // Check for 'modelVersion' property (newer versions)\n if ('modelVersion' in contextObj && typeof contextObj.modelVersion === 'string') {\n return contextObj.modelVersion;\n }\n }\n\n return 'unknown';\n}\n\n/**\n * Extract generation config parameters\n */\nfunction extractConfigAttributes(config) {\n const attributes = {};\n\n if ('temperature' in config && typeof config.temperature === 'number') {\n attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = config.temperature;\n }\n if ('topP' in config && typeof config.topP === 'number') {\n attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = config.topP;\n }\n if ('topK' in config && typeof config.topK === 'number') {\n attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = config.topK;\n }\n if ('maxOutputTokens' in config && typeof config.maxOutputTokens === 'number') {\n attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = config.maxOutputTokens;\n }\n if ('frequencyPenalty' in config && typeof config.frequencyPenalty === 'number') {\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = config.frequencyPenalty;\n }\n if ('presencePenalty' in config && typeof config.presencePenalty === 'number') {\n attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = config.presencePenalty;\n }\n\n return attributes;\n}\n\n/**\n * Extract request attributes from method arguments\n * Builds the base attributes for span creation including system info, model, and config\n */\nfunction extractRequestAttributes(\n methodPath,\n params,\n context,\n) {\n const attributes = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: GOOGLE_GENAI_SYSTEM_NAME,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getFinalOperationName(methodPath),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.google_genai',\n };\n\n if (params) {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel(params, context);\n\n // Extract generation config parameters\n if ('config' in params && typeof params.config === 'object' && params.config) {\n const config = params.config ;\n Object.assign(attributes, extractConfigAttributes(config));\n\n // Extract available tools from config\n if ('tools' in config && Array.isArray(config.tools)) {\n const functionDeclarations = config.tools.flatMap(\n (tool) => tool.functionDeclarations,\n );\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(functionDeclarations);\n }\n }\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel({}, context);\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n * Handles different parameter formats for different Google GenAI methods.\n */\nfunction addPrivateRequestAttributes(span, params) {\n const messages = [];\n\n // config.systemInstruction: ContentUnion\n if (\n 'config' in params &&\n params.config &&\n typeof params.config === 'object' &&\n 'systemInstruction' in params.config &&\n params.config.systemInstruction\n ) {\n messages.push(...contentUnionToMessages(params.config.systemInstruction , 'system'));\n }\n\n // For chats.create: history contains the conversation history\n if ('history' in params) {\n messages.push(...contentUnionToMessages(params.history , 'user'));\n }\n\n // For models.generateContent: ContentListUnion\n if ('contents' in params) {\n messages.push(...contentUnionToMessages(params.contents , 'user'));\n }\n\n // For chat.sendMessage: message can be PartListUnion\n if ('message' in params) {\n messages.push(...contentUnionToMessages(params.message , 'user'));\n }\n\n if (Array.isArray(messages) && messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncateGenAiMessages(filteredMessages )),\n });\n }\n}\n\n/**\n * Add response attributes from the Google GenAI response\n * @see https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L2313\n */\nfunction addResponseAttributes(span, response, recordOutputs) {\n if (!response || typeof response !== 'object') return;\n\n if (response.modelVersion) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, response.modelVersion);\n }\n\n // Add usage metadata if present\n if (response.usageMetadata && typeof response.usageMetadata === 'object') {\n const usage = response.usageMetadata;\n if (typeof usage.promptTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: usage.promptTokenCount,\n });\n }\n if (typeof usage.candidatesTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: usage.candidatesTokenCount,\n });\n }\n if (typeof usage.totalTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: usage.totalTokenCount,\n });\n }\n }\n\n // Add response text if recordOutputs is enabled\n if (recordOutputs && Array.isArray(response.candidates) && response.candidates.length > 0) {\n const responseTexts = response.candidates\n .map((candidate) => {\n if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {\n return candidate.content.parts\n .map((part) => (typeof part.text === 'string' ? part.text : ''))\n .filter((text) => text.length > 0)\n .join('');\n }\n return '';\n })\n .filter((text) => text.length > 0);\n\n if (responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: responseTexts.join(''),\n });\n }\n }\n\n // Add tool calls if recordOutputs is enabled\n if (recordOutputs && response.functionCalls) {\n const functionCalls = response.functionCalls;\n if (Array.isArray(functionCalls) && functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n}\n\n/**\n * Instrument any async or synchronous genai method with Sentry spans\n * Handles operations like models.generateContent and chat.sendMessage and chats.create\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod,\n methodPath,\n context,\n options,\n) {\n const isSyncCreate = methodPath === CHATS_CREATE_METHOD;\n\n return new Proxy(originalMethod, {\n apply(target, _, args) {\n const params = args[0] ;\n const requestAttributes = extractRequestAttributes(methodPath, params, context);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const operationName = getFinalOperationName(methodPath);\n\n // Check if this is a streaming method\n if (isStreamingMethod(methodPath)) {\n // Use startSpanManual for streaming methods to control span lifecycle\n return startSpanManual(\n {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes,\n },\n async (span) => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const stream = await target.apply(context, args);\n return instrumentStream(stream, span, Boolean(options.recordOutputs)) ;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.google_genai',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n },\n );\n }\n // Single span for both sync and async operations\n return startSpan(\n {\n name: isSyncCreate ? `${operationName} ${model} create` : `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes,\n },\n (span) => {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return handleCallbackErrors(\n () => target.apply(context, args),\n error => {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.google_genai', data: { function: methodPath } },\n });\n },\n () => {},\n result => {\n // Only add response attributes for content-producing methods, not for chats.create\n if (!isSyncCreate) {\n addResponseAttributes(span, result, options.recordOutputs);\n }\n },\n );\n },\n );\n },\n }) ;\n}\n\n/**\n * Create a deep proxy for Google GenAI client instrumentation\n * Recursively instruments methods and handles special cases like chats.create\n */\nfunction createDeepProxy(target, currentPath = '', options) {\n return new Proxy(target, {\n get: (t, prop, receiver) => {\n const value = Reflect.get(t, prop, receiver);\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n // Special case: chats.create is synchronous but needs both instrumentation AND result proxying\n if (methodPath === CHATS_CREATE_METHOD) {\n const instrumentedMethod = instrumentMethod(value , methodPath, t, options);\n return function instrumentedAndProxiedCreate(...args) {\n const result = instrumentedMethod(...args);\n // If the result is an object (like a chat instance), proxy it too\n if (result && typeof result === 'object') {\n return createDeepProxy(result, CHAT_PATH, options);\n }\n return result;\n };\n }\n\n return instrumentMethod(value , methodPath, t, options);\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context\n return value.bind(t);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n });\n}\n\n/**\n * Instrument a Google GenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends client object\n * @param client - The Google GenAI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n *\n * @example\n * ```typescript\n * import { GoogleGenAI } from '@google/genai';\n * import { instrumentGoogleGenAIClient } from '@sentry/core';\n *\n * const genAI = new GoogleGenAI({ apiKey: process.env.GOOGLE_GENAI_API_KEY });\n * const instrumentedClient = instrumentGoogleGenAIClient(genAI);\n *\n * // Now both chats.create and sendMessage will be instrumented\n * const chat = instrumentedClient.chats.create({ model: 'gemini-1.5-pro' });\n * const response = await chat.sendMessage({ message: 'Hello' });\n * ```\n */\nfunction instrumentGoogleGenAIClient(client, options) {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n\nexport { extractModel, instrumentGoogleGenAIClient };\n//# sourceMappingURL=index.js.map\n", + "const LANGCHAIN_INTEGRATION_NAME = 'LangChain';\nconst LANGCHAIN_ORIGIN = 'auto.ai.langchain';\n\nconst ROLE_MAP = {\n human: 'user',\n ai: 'assistant',\n assistant: 'assistant',\n system: 'system',\n function: 'function',\n tool: 'tool',\n};\n\nexport { LANGCHAIN_INTEGRATION_NAME, LANGCHAIN_ORIGIN, ROLE_MAP };\n//# sourceMappingURL=constants.js.map\n", + "import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_STREAM_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { isContentMedia, stripInlineMediaFromSingleMessage } from '../ai/mediaStripping.js';\nimport { truncateGenAiMessages } from '../ai/messageTruncation.js';\nimport { extractSystemInstructions } from '../ai/utils.js';\nimport { LANGCHAIN_ORIGIN, ROLE_MAP } from './constants.js';\n\n/**\n * Assigns an attribute only when the value is neither `undefined` nor `null`.\n *\n * We keep this tiny helper because call sites are repetitive and easy to miswrite.\n * It also preserves falsy-but-valid values like `0` and `\"\"`.\n */\nconst setIfDefined = (target, key, value) => {\n if (value != null) target[key] = value ;\n};\n\n/**\n * Like `setIfDefined`, but converts the value with `Number()` and skips only when the\n * result is `NaN`. This ensures numeric 0 makes it through (unlike truthy checks).\n */\nconst setNumberIfDefined = (target, key, value) => {\n const n = Number(value);\n if (!Number.isNaN(n)) target[key] = n;\n};\n\n/**\n * Converts a value to a string. Avoids double-quoted JSON strings where a plain\n * string is desired, but still handles objects/arrays safely.\n */\nfunction asString(v) {\n if (typeof v === 'string') return v;\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\n/**\n * Converts message content to a string, stripping inline media (base64 images, audio, etc.)\n * from multimodal content before stringification so downstream media stripping can't miss it.\n *\n * @example\n * // String content passes through unchanged:\n * normalizeContent(\"Hello\") // => \"Hello\"\n *\n * // Multimodal array content — media is replaced with \"[Blob substitute]\" before JSON.stringify:\n * normalizeContent([\n * { type: \"text\", text: \"What color?\" },\n * { type: \"image_url\", image_url: { url: \"data:image/png;base64,iVBOR...\" } }\n * ])\n * // => '[{\"type\":\"text\",\"text\":\"What color?\"},{\"type\":\"image_url\",\"image_url\":{\"url\":\"[Blob substitute]\"}}]'\n *\n * // Without this, asString() would JSON.stringify the raw array and the base64 blob\n * // would end up in span attributes, since downstream stripping only works on objects.\n */\nfunction normalizeContent(v) {\n if (Array.isArray(v)) {\n try {\n const stripped = v.map(part =>\n part && typeof part === 'object' && isContentMedia(part) ? stripInlineMediaFromSingleMessage(part) : part,\n );\n return JSON.stringify(stripped);\n } catch {\n return String(v);\n }\n }\n return asString(v);\n}\n\n/**\n * Normalizes a single role token to our canonical set.\n *\n * @param role Incoming role value (free-form, any casing)\n * @returns Canonical role: 'user' | 'assistant' | 'system' | 'function' | 'tool' | \n */\nfunction normalizeMessageRole(role) {\n const normalized = role.toLowerCase();\n return ROLE_MAP[normalized] ?? normalized;\n}\n\n/**\n * Infers a role from a LangChain message constructor name.\n *\n * Checks for substrings like \"System\", \"Human\", \"AI\", etc.\n */\nfunction normalizeRoleNameFromCtor(name) {\n if (name.includes('System')) return 'system';\n if (name.includes('Human')) return 'user';\n if (name.includes('AI') || name.includes('Assistant')) return 'assistant';\n if (name.includes('Function')) return 'function';\n if (name.includes('Tool')) return 'tool';\n return 'user';\n}\n\n/**\n * Returns invocation params from a LangChain `tags` object.\n *\n * LangChain often passes runtime parameters (model, temperature, etc.) via the\n * `tags.invocation_params` bag. If `tags` is an array (LangChain sometimes uses\n * string tags), we return `undefined`.\n *\n * @param tags LangChain tags (string[] or record)\n * @returns The `invocation_params` object, if present\n */\nfunction getInvocationParams(tags) {\n if (!tags || Array.isArray(tags)) return undefined;\n return tags.invocation_params ;\n}\n\n/**\n * Normalizes a heterogeneous set of LangChain messages to `{ role, content }`.\n *\n * Why so many branches? LangChain messages can arrive in several shapes:\n * - Message classes with `_getType()` (most reliable)\n * - Classes with meaningful constructor names (e.g. `SystemMessage`)\n * - Plain objects with `type`, or `{ role, content }`\n * - Serialized format with `{ lc: 1, id: [...], kwargs: { content } }`\n * We preserve the prioritization to minimize behavioral drift.\n *\n * @param messages Mixed LangChain messages\n * @returns Array of normalized `{ role, content }`\n */\nfunction normalizeLangChainMessages(messages) {\n return messages.map(message => {\n // 1) Prefer _getType() when present\n const maybeGetType = (message )._getType;\n if (typeof maybeGetType === 'function') {\n const messageType = maybeGetType.call(message);\n return {\n role: normalizeMessageRole(messageType),\n content: normalizeContent(message.content),\n };\n }\n\n // 2) Serialized LangChain format (lc: 1) - check before constructor name\n // This is more reliable than constructor.name which can be lost during serialization\n if (message.lc === 1 && message.kwargs) {\n const id = message.id;\n const messageType = Array.isArray(id) && id.length > 0 ? id[id.length - 1] : '';\n const role = typeof messageType === 'string' ? normalizeRoleNameFromCtor(messageType) : 'user';\n\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.kwargs?.content),\n };\n }\n\n // 3) Then objects with `type`\n if (message.type) {\n const role = String(message.type).toLowerCase();\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.content),\n };\n }\n\n // 4) Then objects with `{ role, content }` - check before constructor name\n // Plain objects have constructor.name=\"Object\" which would incorrectly default to \"user\"\n if (message.role) {\n return {\n role: normalizeMessageRole(String(message.role)),\n content: normalizeContent(message.content),\n };\n }\n\n // 5) Then try constructor name (SystemMessage / HumanMessage / ...)\n // Only use this if we haven't matched a more specific case\n const ctor = (message ).constructor?.name;\n if (ctor && ctor !== 'Object') {\n return {\n role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)),\n content: normalizeContent(message.content),\n };\n }\n\n // 6) Fallback: treat as user text\n return {\n role: 'user',\n content: normalizeContent(message.content),\n };\n });\n}\n\n/**\n * Extracts request attributes common to both LLM and ChatModel invocations.\n *\n * Source precedence:\n * 1) `invocationParams` (highest)\n * 2) `langSmithMetadata`\n *\n * Numeric values are set even when 0 (e.g. `temperature: 0`), but skipped if `NaN`.\n */\nfunction extractCommonRequestAttributes(\n serialized,\n invocationParams,\n langSmithMetadata,\n) {\n const attrs = {};\n\n // Get kwargs if available (from constructor type)\n const kwargs = 'kwargs' in serialized ? serialized.kwargs : undefined;\n\n const temperature = invocationParams?.temperature ?? langSmithMetadata?.ls_temperature ?? kwargs?.temperature;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, temperature);\n\n const maxTokens = invocationParams?.max_tokens ?? langSmithMetadata?.ls_max_tokens ?? kwargs?.max_tokens;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, maxTokens);\n\n const topP = invocationParams?.top_p ?? kwargs?.top_p;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, topP);\n\n const frequencyPenalty = invocationParams?.frequency_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, frequencyPenalty);\n\n const presencePenalty = invocationParams?.presence_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, presencePenalty);\n\n // LangChain uses `stream`. We only set the attribute if the key actually exists\n // (some callbacks report `false` even on streamed requests, this stems from LangChain's callback handler).\n if (invocationParams && 'stream' in invocationParams) {\n setIfDefined(attrs, GEN_AI_REQUEST_STREAM_ATTRIBUTE, Boolean(invocationParams.stream));\n }\n\n return attrs;\n}\n\n/**\n * Small helper to assemble boilerplate attributes shared by both request extractors.\n * Always uses 'chat' as the operation type for all LLM and chat model operations.\n */\nfunction baseRequestAttributes(\n system,\n modelName,\n serialized,\n invocationParams,\n langSmithMetadata,\n) {\n return {\n [GEN_AI_SYSTEM_ATTRIBUTE]: asString(system ?? 'langchain'),\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'chat',\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: asString(modelName),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n ...extractCommonRequestAttributes(serialized, invocationParams, langSmithMetadata),\n };\n}\n\n/**\n * Extracts attributes for plain LLM invocations (string prompts).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain LLM operations are treated as chat operations.\n * - When `recordInputs` is true, string prompts are wrapped into `{role:\"user\"}`\n * messages to align with the chat schema used elsewhere.\n */\nfunction extractLLMRequestAttributes(\n llm,\n prompts,\n recordInputs,\n invocationParams,\n langSmithMetadata,\n) {\n const system = langSmithMetadata?.ls_provider;\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(prompts) && prompts.length > 0) {\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, prompts.length);\n const messages = prompts.map(p => ({ role: 'user', content: p }));\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(messages));\n }\n\n return attrs;\n}\n\n/**\n * Extracts attributes for ChatModel invocations (array-of-arrays of messages).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain chat model operations are chat operations.\n * - We flatten LangChain's `LangChainMessage[][]` and normalize shapes into a\n * consistent `{ role, content }` array when `recordInputs` is true.\n * - Provider system value falls back to `serialized.id?.[2]`.\n */\nfunction extractChatModelRequestAttributes(\n llm,\n langChainMessages,\n recordInputs,\n invocationParams,\n langSmithMetadata,\n) {\n const system = langSmithMetadata?.ls_provider ?? llm.id?.[2];\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(langChainMessages) && langChainMessages.length > 0) {\n const normalized = normalizeLangChainMessages(langChainMessages.flat());\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalized);\n\n if (systemInstructions) {\n setIfDefined(attrs, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredLength);\n\n const truncated = truncateGenAiMessages(filteredMessages );\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(truncated));\n }\n\n return attrs;\n}\n\n/**\n * Scans generations for Anthropic-style `tool_use` items and records them.\n *\n * LangChain represents some provider messages (e.g., Anthropic) with a `message.content`\n * array that may include objects `{ type: 'tool_use', ... }`. We collect and attach\n * them as a JSON array on `gen_ai.response.tool_calls` for downstream consumers.\n */\nfunction addToolCallsAttributes(generations, attrs) {\n const toolCalls = [];\n const flatGenerations = generations.flat();\n\n for (const gen of flatGenerations) {\n const content = gen.message?.content;\n if (Array.isArray(content)) {\n for (const item of content) {\n const t = item ;\n if (t.type === 'tool_use') toolCalls.push(t);\n }\n }\n }\n\n if (toolCalls.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, asString(toolCalls));\n }\n}\n\n/**\n * Adds token usage attributes, supporting both OpenAI (`tokenUsage`) and Anthropic (`usage`) formats.\n * - Preserve zero values (0 tokens) by avoiding truthy checks.\n * - Compute a total for Anthropic when not explicitly provided.\n * - Include cache token metrics when present.\n */\nfunction addTokenUsageAttributes(\n llmOutput,\n attrs,\n) {\n if (!llmOutput) return;\n\n const tokenUsage = llmOutput.tokenUsage\n\n;\n const anthropicUsage = llmOutput.usage\n\n;\n\n if (tokenUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, tokenUsage.promptTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, tokenUsage.completionTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, tokenUsage.totalTokens);\n } else if (anthropicUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.input_tokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, anthropicUsage.output_tokens);\n\n // Compute total when not provided by the provider.\n const input = Number(anthropicUsage.input_tokens);\n const output = Number(anthropicUsage.output_tokens);\n const total = (Number.isNaN(input) ? 0 : input) + (Number.isNaN(output) ? 0 : output);\n if (total > 0) setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, total);\n\n // Extra Anthropic cache metrics (present only when caching is enabled)\n if (anthropicUsage.cache_creation_input_tokens !== undefined)\n setNumberIfDefined(\n attrs,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n anthropicUsage.cache_creation_input_tokens,\n );\n if (anthropicUsage.cache_read_input_tokens !== undefined)\n setNumberIfDefined(attrs, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.cache_read_input_tokens);\n }\n}\n\n/**\n * Extracts response-related attributes based on a `LangChainLLMResult`.\n *\n * - Records finish reasons when present on generations (e.g., OpenAI)\n * - When `recordOutputs` is true, captures textual response content and any\n * tool calls.\n * - Also propagates model name (`model_name` or `model`), response `id`, and\n * `stop_reason` (for providers that use it).\n */\nfunction extractLlmResponseAttributes(\n llmResult,\n recordOutputs,\n) {\n if (!llmResult) return;\n\n const attrs = {};\n\n if (Array.isArray(llmResult.generations)) {\n const finishReasons = llmResult.generations\n .flat()\n .map(g => {\n // v1 uses generationInfo.finish_reason\n if (g.generationInfo?.finish_reason) {\n return g.generationInfo.finish_reason;\n }\n // v0.3+ uses generation_info.finish_reason\n if (g.generation_info?.finish_reason) {\n return g.generation_info.finish_reason;\n }\n return null;\n })\n .filter((r) => typeof r === 'string');\n\n if (finishReasons.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, asString(finishReasons));\n }\n\n // Tool calls metadata (names, IDs) are not PII, so capture them regardless of recordOutputs\n addToolCallsAttributes(llmResult.generations , attrs);\n\n if (recordOutputs) {\n const texts = llmResult.generations\n .flat()\n .map(gen => gen.text ?? gen.message?.content)\n .filter(t => typeof t === 'string');\n\n if (texts.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, asString(texts));\n }\n }\n }\n\n addTokenUsageAttributes(llmResult.llmOutput, attrs);\n\n const llmOutput = llmResult.llmOutput;\n\n // Extract from v1 generations structure if available\n const firstGeneration = llmResult.generations?.[0]?.[0];\n const v1Message = firstGeneration?.message;\n\n // Provider model identifier: `model_name` (OpenAI-style) or `model` (others)\n // v1 stores this in message.response_metadata.model_name\n const modelName = llmOutput?.model_name ?? llmOutput?.model ?? v1Message?.response_metadata?.model_name;\n if (modelName) setIfDefined(attrs, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, modelName);\n\n // Response ID: v1 stores this in message.id\n const responseId = llmOutput?.id ?? v1Message?.id;\n if (responseId) {\n setIfDefined(attrs, GEN_AI_RESPONSE_ID_ATTRIBUTE, responseId);\n }\n\n // Stop reason: v1 stores this in message.response_metadata.finish_reason\n const stopReason = llmOutput?.stop_reason ?? v1Message?.response_metadata?.finish_reason;\n if (stopReason) {\n setIfDefined(attrs, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, asString(stopReason));\n }\n\n return attrs;\n}\n\nexport { extractChatModelRequestAttributes, extractLLMRequestAttributes, extractLlmResponseAttributes, getInvocationParams, normalizeLangChainMessages };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpanManual } from '../trace.js';\nimport { GEN_AI_TOOL_OUTPUT_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { resolveAIRecordingOptions } from '../ai/utils.js';\nimport { LANGCHAIN_ORIGIN } from './constants.js';\nimport { extractLlmResponseAttributes, getInvocationParams, extractChatModelRequestAttributes, extractLLMRequestAttributes } from './utils.js';\n\n/**\n * Creates a Sentry callback handler for LangChain\n * Returns a plain object that LangChain will call via duck-typing\n *\n * This is a stateful handler that tracks spans across multiple LangChain executions.\n */\nfunction createLangChainCallbackHandler(options = {}) {\n const { recordInputs, recordOutputs } = resolveAIRecordingOptions(options);\n\n // Internal state - single instance tracks all spans\n const spanMap = new Map();\n\n /**\n * Exit a span and clean up\n */\n const exitSpan = (runId) => {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.end();\n spanMap.delete(runId);\n }\n };\n\n /**\n * Handler for LLM Start\n * This handler will be called by LangChain's callback handler when an LLM event is detected.\n */\n const handler = {\n // Required LangChain BaseCallbackHandler properties\n lc_serializable: false,\n lc_namespace: ['langchain_core', 'callbacks', 'sentry'],\n lc_secrets: undefined,\n lc_attributes: undefined,\n lc_aliases: undefined,\n lc_serializable_keys: undefined,\n lc_id: ['langchain_core', 'callbacks', 'sentry'],\n lc_kwargs: {},\n name: 'SentryCallbackHandler',\n\n // BaseCallbackHandlerInput boolean flags\n ignoreLLM: false,\n ignoreChain: false,\n ignoreAgent: false,\n ignoreRetriever: false,\n ignoreCustomEvent: false,\n raiseError: false,\n awaitHandlers: true,\n\n handleLLMStart(\n llm,\n prompts,\n runId,\n _parentRunId,\n _extraParams,\n tags,\n metadata,\n _runName,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractLLMRequestAttributes(\n llm ,\n prompts,\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chat Model Start Handler\n handleChatModelStart(\n llm,\n messages,\n runId,\n _parentRunId,\n _extraParams,\n tags,\n metadata,\n _runName,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractChatModelRequestAttributes(\n llm ,\n messages ,\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // LLM End Handler - note: handleLLMEnd with capital LLM (used by both LLMs and chat models!)\n handleLLMEnd(\n output,\n runId,\n _parentRunId,\n _tags,\n _extraParams,\n ) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n const attributes = extractLlmResponseAttributes(output , recordOutputs);\n if (attributes) {\n span.setAttributes(attributes);\n }\n exitSpan(runId);\n }\n },\n\n // LLM Error Handler - note: handleLLMError with capital LLM\n handleLLMError(error, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.llm_error_handler`,\n },\n });\n },\n\n // Chain Start Handler\n handleChainStart(\n chain,\n inputs,\n runId,\n _parentRunId,\n _tags,\n _metadata,\n _runType,\n runName,\n ) {\n const chainName = runName || chain.name || 'unknown_chain';\n const attributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',\n 'langchain.chain.name': chainName,\n };\n\n // Add inputs if recordInputs is enabled\n if (recordInputs) {\n attributes['langchain.chain.inputs'] = JSON.stringify(inputs);\n }\n\n startSpanManual(\n {\n name: `chain ${chainName}`,\n op: 'gen_ai.invoke_agent',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.invoke_agent',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chain End Handler\n handleChainEnd(outputs, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add outputs if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n 'langchain.chain.outputs': JSON.stringify(outputs),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Chain Error Handler\n handleChainError(error, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.chain_error_handler`,\n },\n });\n },\n\n // Tool Start Handler\n handleToolStart(tool, input, runId, _parentRunId) {\n const toolName = tool.name || 'unknown_tool';\n const attributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n [GEN_AI_TOOL_NAME_ATTRIBUTE]: toolName,\n };\n\n // Add input if recordInputs is enabled\n if (recordInputs) {\n attributes[GEN_AI_TOOL_INPUT_ATTRIBUTE] = input;\n }\n\n startSpanManual(\n {\n name: `execute_tool ${toolName}`,\n op: 'gen_ai.execute_tool',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.execute_tool',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Tool End Handler\n handleToolEnd(output, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add output if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n [GEN_AI_TOOL_OUTPUT_ATTRIBUTE]: JSON.stringify(output),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Tool Error Handler\n handleToolError(error, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.tool_error_handler`,\n },\n });\n },\n\n // LangChain BaseCallbackHandler required methods\n copy() {\n return handler;\n },\n\n toJSON() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n\n toJSONNotImplemented() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n };\n\n return handler;\n}\n\nexport { createLangChainCallbackHandler };\n//# sourceMappingURL=index.js.map\n", + "const LANGGRAPH_INTEGRATION_NAME = 'LangGraph';\nconst LANGGRAPH_ORIGIN = 'auto.ai.langgraph';\n\nexport { LANGGRAPH_INTEGRATION_NAME, LANGGRAPH_ORIGIN };\n//# sourceMappingURL=constants.js.map\n", + "import { GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { normalizeLangChainMessages } from '../langchain/utils.js';\n\n/**\n * Extract tool calls from messages\n */\nfunction extractToolCalls(messages) {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const toolCalls = [];\n\n for (const message of messages) {\n if (message && typeof message === 'object') {\n const msgToolCalls = message.tool_calls;\n if (msgToolCalls && Array.isArray(msgToolCalls)) {\n toolCalls.push(...msgToolCalls);\n }\n }\n }\n\n return toolCalls.length > 0 ? toolCalls : null;\n}\n\n/**\n * Extract token usage from a message's usage_metadata or response_metadata\n * Returns token counts without setting span attributes\n */\nfunction extractTokenUsageFromMessage(message)\n\n {\n const msg = message ;\n let inputTokens = 0;\n let outputTokens = 0;\n let totalTokens = 0;\n\n // Extract from usage_metadata (newer format)\n if (msg.usage_metadata && typeof msg.usage_metadata === 'object') {\n const usage = msg.usage_metadata ;\n if (typeof usage.input_tokens === 'number') {\n inputTokens = usage.input_tokens;\n }\n if (typeof usage.output_tokens === 'number') {\n outputTokens = usage.output_tokens;\n }\n if (typeof usage.total_tokens === 'number') {\n totalTokens = usage.total_tokens;\n }\n return { inputTokens, outputTokens, totalTokens };\n }\n\n // Fallback: Extract from response_metadata.tokenUsage\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata ;\n if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') {\n const tokenUsage = metadata.tokenUsage ;\n if (typeof tokenUsage.promptTokens === 'number') {\n inputTokens = tokenUsage.promptTokens;\n }\n if (typeof tokenUsage.completionTokens === 'number') {\n outputTokens = tokenUsage.completionTokens;\n }\n if (typeof tokenUsage.totalTokens === 'number') {\n totalTokens = tokenUsage.totalTokens;\n }\n }\n }\n\n return { inputTokens, outputTokens, totalTokens };\n}\n\n/**\n * Extract model and finish reason from a message's response_metadata\n */\nfunction extractModelMetadata(span, message) {\n const msg = message ;\n\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata ;\n\n if (metadata.model_name && typeof metadata.model_name === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, metadata.model_name);\n }\n\n if (metadata.finish_reason && typeof metadata.finish_reason === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, [metadata.finish_reason]);\n }\n }\n}\n\n/**\n * Extract tools from compiled graph structure\n *\n * Tools are stored in: compiledGraph.builder.nodes.tools.runnable.tools\n */\nfunction extractToolsFromCompiledGraph(compiledGraph) {\n if (!compiledGraph.builder?.nodes?.tools?.runnable?.tools) {\n return null;\n }\n\n const tools = compiledGraph.builder?.nodes?.tools?.runnable?.tools;\n\n if (!tools || !Array.isArray(tools) || tools.length === 0) {\n return null;\n }\n\n // Extract name, description, and schema from each tool's lc_kwargs\n return tools.map((tool) => ({\n name: tool.lc_kwargs?.name,\n description: tool.lc_kwargs?.description,\n schema: tool.lc_kwargs?.schema,\n }));\n}\n\n/**\n * Set response attributes on the span\n */\nfunction setResponseAttributes(span, inputMessages, result) {\n // Extract messages from result\n const resultObj = result ;\n const outputMessages = resultObj?.messages;\n\n if (!outputMessages || !Array.isArray(outputMessages)) {\n return;\n }\n\n // Get new messages (delta between input and output)\n const inputCount = inputMessages?.length ?? 0;\n const newMessages = outputMessages.length > inputCount ? outputMessages.slice(inputCount) : [];\n\n if (newMessages.length === 0) {\n return;\n }\n\n // Extract and set tool calls from new messages BEFORE normalization\n // (normalization strips tool_calls, so we need to extract them first)\n const toolCalls = extractToolCalls(newMessages );\n if (toolCalls) {\n span.setAttribute(GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, JSON.stringify(toolCalls));\n }\n\n // Normalize the new messages\n const normalizedNewMessages = normalizeLangChainMessages(newMessages);\n span.setAttribute(GEN_AI_RESPONSE_TEXT_ATTRIBUTE, JSON.stringify(normalizedNewMessages));\n\n // Accumulate token usage across all messages\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalTokens = 0;\n\n // Extract metadata from messages\n for (const message of newMessages) {\n // Accumulate token usage\n const tokens = extractTokenUsageFromMessage(message);\n totalInputTokens += tokens.inputTokens;\n totalOutputTokens += tokens.outputTokens;\n totalTokens += tokens.totalTokens;\n\n // Extract model metadata (last message's metadata wins for model/finish_reason)\n extractModelMetadata(span, message);\n }\n\n // Set accumulated token usage on span\n if (totalInputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, totalInputTokens);\n }\n if (totalOutputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, totalOutputTokens);\n }\n if (totalTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, totalTokens);\n }\n}\n\nexport { extractModelMetadata, extractTokenUsageFromMessage, extractToolCalls, extractToolsFromCompiledGraph, setResponseAttributes };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpan } from '../trace.js';\nimport { GEN_AI_AGENT_NAME_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_PIPELINE_NAME_ATTRIBUTE, GEN_AI_CONVERSATION_ID_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { truncateGenAiMessages } from '../ai/messageTruncation.js';\nimport { resolveAIRecordingOptions, extractSystemInstructions } from '../ai/utils.js';\nimport { normalizeLangChainMessages } from '../langchain/utils.js';\nimport { LANGGRAPH_ORIGIN } from './constants.js';\nimport { extractToolsFromCompiledGraph, setResponseAttributes } from './utils.js';\n\n/**\n * Instruments StateGraph's compile method to create spans for agent creation and invocation\n *\n * Wraps the compile() method to:\n * - Create a `gen_ai.create_agent` span when compile() is called\n * - Automatically wrap the invoke() method on the returned compiled graph with a `gen_ai.invoke_agent` span\n *\n */\nfunction instrumentStateGraphCompile(\n originalCompile,\n options,\n) {\n return new Proxy(originalCompile, {\n apply(target, thisArg, args) {\n return startSpan(\n {\n op: 'gen_ai.create_agent',\n name: 'create_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.create_agent',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'create_agent',\n },\n },\n span => {\n try {\n const compiledGraph = Reflect.apply(target, thisArg, args);\n const compileOptions = args.length > 0 ? (args[0] ) : {};\n\n // Extract graph name\n if (compileOptions?.name && typeof compileOptions.name === 'string') {\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, compileOptions.name);\n span.updateName(`create_agent ${compileOptions.name}`);\n }\n\n // Instrument agent invoke method on the compiled graph\n const originalInvoke = compiledGraph.invoke;\n if (originalInvoke && typeof originalInvoke === 'function') {\n compiledGraph.invoke = instrumentCompiledGraphInvoke(\n originalInvoke.bind(compiledGraph) ,\n compiledGraph,\n compileOptions,\n options,\n ) ;\n }\n\n return compiledGraph;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) ;\n}\n\n/**\n * Instruments CompiledGraph's invoke method to create spans for agent invocation\n *\n * Creates a `gen_ai.invoke_agent` span when invoke() is called\n */\nfunction instrumentCompiledGraphInvoke(\n originalInvoke,\n graphInstance,\n compileOptions,\n options,\n) {\n return new Proxy(originalInvoke, {\n apply(target, thisArg, args) {\n return startSpan(\n {\n op: 'gen_ai.invoke_agent',\n name: 'invoke_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'invoke_agent',\n },\n },\n async span => {\n try {\n const graphName = compileOptions?.name;\n\n if (graphName && typeof graphName === 'string') {\n span.setAttribute(GEN_AI_PIPELINE_NAME_ATTRIBUTE, graphName);\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, graphName);\n span.updateName(`invoke_agent ${graphName}`);\n }\n\n // Extract thread_id from the config (second argument)\n // LangGraph uses config.configurable.thread_id for conversation/session linking\n const config = args.length > 1 ? (args[1] ) : undefined;\n const configurable = config?.configurable ;\n const threadId = configurable?.thread_id;\n if (threadId && typeof threadId === 'string') {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, threadId);\n }\n\n // Extract available tools from the graph instance\n const tools = extractToolsFromCompiledGraph(graphInstance);\n if (tools) {\n span.setAttribute(GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, JSON.stringify(tools));\n }\n\n // Parse input messages\n const recordInputs = options.recordInputs;\n const recordOutputs = options.recordOutputs;\n const inputMessages =\n args.length > 0 ? ((args[0] )?.messages ?? []) : [];\n\n if (inputMessages && recordInputs) {\n const normalizedMessages = normalizeLangChainMessages(inputMessages);\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalizedMessages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedMessages = truncateGenAiMessages(filteredMessages );\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncatedMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n\n // Call original invoke\n const result = await Reflect.apply(target, thisArg, args);\n\n // Set response attributes\n if (recordOutputs) {\n setResponseAttributes(span, inputMessages ?? null, result);\n }\n\n return result;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) ;\n}\n\n/**\n * Directly instruments a StateGraph instance to add tracing spans\n *\n * This function can be used to manually instrument LangGraph StateGraph instances\n * in environments where automatic instrumentation is not available or desired.\n *\n * @param stateGraph - The StateGraph instance to instrument\n * @param options - Optional configuration for recording inputs/outputs\n *\n * @example\n * ```typescript\n * import { instrumentLangGraph } from '@sentry/cloudflare';\n * import { StateGraph } from '@langchain/langgraph';\n *\n * const graph = new StateGraph(MessagesAnnotation)\n * .addNode('agent', mockLlm)\n * .addEdge(START, 'agent')\n * .addEdge('agent', END);\n *\n * instrumentLangGraph(graph, { recordInputs: true, recordOutputs: true });\n * const compiled = graph.compile({ name: 'my_agent' });\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction instrumentLangGraph(\n stateGraph,\n options,\n) {\n stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile, resolveAIRecordingOptions(options));\n\n return stateGraph;\n}\n\nexport { instrumentLangGraph, instrumentStateGraphCompile };\n//# sourceMappingURL=index.js.map\n", + "/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nfunction getBreadcrumbLogLevelFromHttpStatusCode(statusCode) {\n // NOTE: undefined defaults to 'info' in Sentry\n if (statusCode === undefined) {\n return undefined;\n } else if (statusCode >= 400 && statusCode < 500) {\n return 'warning';\n } else if (statusCode >= 500) {\n return 'error';\n } else {\n return undefined;\n }\n}\n\nexport { getBreadcrumbLogLevelFromHttpStatusCode };\n//# sourceMappingURL=breadcrumb-log-level.js.map\n", + "/**\n * Replaces constructor functions in module exports, handling read-only properties,\n * and both default and named exports by wrapping them with the constructor.\n *\n * @param exports The module exports object to modify\n * @param exportName The name of the export to replace (e.g., 'GoogleGenAI', 'Anthropic', 'OpenAI')\n * @param wrappedConstructor The wrapped constructor function to replace the original with\n * @returns void\n */\nfunction replaceExports(\n exports$1,\n exportName,\n wrappedConstructor,\n) {\n const original = exports$1[exportName];\n\n if (typeof original !== 'function') {\n return;\n }\n\n // Replace the named export - handle read-only properties\n try {\n exports$1[exportName] = wrappedConstructor;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, exportName, {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Replace the default export if it points to the original constructor\n if (exports$1.default === original) {\n try {\n exports$1.default = wrappedConstructor;\n } catch {\n Object.defineProperty(exports$1, 'default', {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n}\n\nexport { replaceExports };\n//# sourceMappingURL=exports.js.map\n", + "import { normalizeStackTracePath, UNKNOWN_FUNCTION } from './stacktrace.js';\n\n/**\n * Does this filename look like it's part of the app code?\n */\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal =\n isNative ||\n (filename &&\n // It's not internal if it's an absolute linux path\n !filename.startsWith('/') &&\n // It's not internal if it's an absolute windows path\n !filename.match(/^[A-Z]:/) &&\n // It's not internal if the path is starting with a dot\n !filename.startsWith('.') &&\n // It's not internal if the frame has a protocol. In node, this is usually the case if the file got pre-processed with a bundler like webpack\n !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//)); // Schema from: https://stackoverflow.com/a/3641782\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n\n return !isInternal && filename !== undefined && !filename.includes('node_modules/');\n}\n\n/** Node Stack line parser */\nfunction node(getModule) {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n const DATA_URI_MATCH = /at (?:async )?(.+?) \\(data:(.*?),/;\n\n return (line) => {\n const dataUriMatch = line.match(DATA_URI_MATCH);\n if (dataUriMatch) {\n return {\n filename: ``,\n function: dataUriMatch[1],\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n let filename = normalizeStackTracePath(lineMatch[2]);\n const isNative = lineMatch[5] === 'native';\n\n if (!filename && lineMatch[5] && !isNative) {\n filename = lineMatch[5];\n }\n\n const maybeDecodedFilename = filename ? _safeDecodeURI(filename) : undefined;\n return {\n filename: maybeDecodedFilename ?? filename,\n module: maybeDecodedFilename && getModule?.(maybeDecodedFilename),\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n };\n }\n\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n return undefined;\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/core so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || undefined;\n}\n\nfunction _safeDecodeURI(filename) {\n try {\n return decodeURI(filename);\n } catch {\n return undefined;\n }\n}\n\nexport { filenameIsInApp, node, nodeStackLineParser };\n//# sourceMappingURL=node-stack-trace.js.map\n", + "/** A simple Least Recently Used map */\nclass LRUMap {\n\n constructor( _maxSize) {this._maxSize = _maxSize;\n this._cache = new Map();\n }\n\n /** Get the current size of the cache */\n get size() {\n return this._cache.size;\n }\n\n /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */\n get(key) {\n const value = this._cache.get(key);\n if (value === undefined) {\n return undefined;\n }\n // Remove and re-insert to update the order\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n\n /** Insert an entry and evict an older entry if we've reached maxSize */\n set(key, value) {\n if (this._cache.size >= this._maxSize) {\n // keys() returns an iterator in insertion order so keys().next() gives us the oldest key\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nextKey = this._cache.keys().next().value;\n this._cache.delete(nextKey);\n }\n this._cache.set(key, value);\n }\n\n /** Remove an entry and return the entry if it was in the cache */\n remove(key) {\n const value = this._cache.get(key);\n if (value) {\n this._cache.delete(key);\n }\n return value;\n }\n\n /** Clear all entries */\n clear() {\n this._cache.clear();\n }\n\n /** Get all the keys */\n keys() {\n return Array.from(this._cache.keys());\n }\n\n /** Get all the values */\n values() {\n const values = [];\n this._cache.forEach(value => values.push(value));\n return values;\n }\n}\n\nexport { LRUMap };\n//# sourceMappingURL=lru.js.map\n", + "import { errorMonitor } from 'node:events';\nimport { SpanKind, context, trace } from '@opentelemetry/api';\nimport { RPCType, setRPCMetadata, isTracingSuppressed, getRPCMetadata } from '@opentelemetry/core';\nimport { SEMATTRS_NET_HOST_IP, SEMATTRS_NET_HOST_PORT, SEMATTRS_NET_PEER_IP, SEMATTRS_HTTP_STATUS_CODE, ATTR_HTTP_ROUTE, ATTR_HTTP_RESPONSE_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport { debug, parseStringToURLObject, stripUrlQueryAndFragment, httpHeadersToSpanAttributes, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, getSpanStatusFromHttpCode, SPAN_STATUS_ERROR, getIsolationScope } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\nimport { addStartSpanCallback } from './httpServerIntegration.js';\n\nconst INTEGRATION_NAME = 'Http.ServerSpans';\n\n// Tree-shakable guard to remove all code related to tracing\n\nconst _httpServerSpansIntegration = ((options = {}) => {\n const ignoreStaticAssets = options.ignoreStaticAssets ?? true;\n const ignoreIncomingRequests = options.ignoreIncomingRequests;\n const ignoreStatusCodes = options.ignoreStatusCodes ?? [\n [401, 404],\n // 300 and 304 are possibly valid status codes we do not want to filter\n [301, 303],\n [305, 399],\n ];\n\n const { onSpanCreated } = options;\n // eslint-disable-next-line deprecation/deprecation\n const { requestHook, responseHook, applyCustomAttributesOnSpan } = options.instrumentation ?? {};\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n // If no tracing, we can just skip everything here\n if (typeof __SENTRY_TRACING__ !== 'undefined' && !__SENTRY_TRACING__) {\n return;\n }\n\n client.on('httpServerRequest', (_request, _response, normalizedRequest) => {\n // Type-casting this here because we do not want to put the node types into core\n const request = _request ;\n const response = _response ;\n\n const startSpan = (next) => {\n if (\n shouldIgnoreSpansForIncomingRequest(request, {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n })\n ) {\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Skipping span creation for incoming request', request.url);\n return next();\n }\n\n const fullUrl = normalizedRequest.url || request.url || '/';\n const urlObj = parseStringToURLObject(fullUrl);\n\n const headers = request.headers;\n const userAgent = headers['user-agent'];\n const ips = headers['x-forwarded-for'];\n const httpVersion = request.httpVersion;\n const host = headers.host;\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n const tracer = client.tracer;\n const scheme = fullUrl.startsWith('https') ? 'https' : 'http';\n\n const method = normalizedRequest.method || request.method?.toUpperCase() || 'GET';\n const httpTargetWithoutQueryFragment = urlObj ? urlObj.pathname : stripUrlQueryAndFragment(fullUrl);\n const bestEffortTransactionName = `${method} ${httpTargetWithoutQueryFragment}`;\n\n // We use the plain tracer.startSpan here so we can pass the span kind\n const span = tracer.startSpan(bestEffortTransactionName, {\n kind: SpanKind.SERVER,\n attributes: {\n // Sentry specific attributes\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.server',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.http',\n 'sentry.http.prefetch': isKnownPrefetchRequest(request) || undefined,\n // Old Semantic Conventions attributes - added for compatibility with what `@opentelemetry/instrumentation-http` output before\n 'http.url': fullUrl,\n 'http.method': normalizedRequest.method,\n 'http.target': urlObj ? `${urlObj.pathname}${urlObj.search}` : httpTargetWithoutQueryFragment,\n 'http.host': host,\n 'net.host.name': hostname,\n 'http.client_ip': typeof ips === 'string' ? ips.split(',')[0] : undefined,\n 'http.user_agent': userAgent,\n 'http.scheme': scheme,\n 'http.flavor': httpVersion,\n 'net.transport': httpVersion?.toUpperCase() === 'QUIC' ? 'ip_udp' : 'ip_tcp',\n ...getRequestContentLengthAttribute(request),\n ...httpHeadersToSpanAttributes(\n normalizedRequest.headers || {},\n client.getOptions().sendDefaultPii ?? false,\n ),\n },\n });\n\n // TODO v11: Remove the following three hooks, only onSpanCreated should remain\n requestHook?.(span, request);\n responseHook?.(span, response);\n applyCustomAttributesOnSpan?.(span, request, response);\n onSpanCreated?.(span, request, response);\n\n const rpcMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(setRPCMetadata(trace.setSpan(context.active(), span), rpcMetadata), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n // Ensure we only end the span once\n // E.g. error can be emitted before close is emitted\n let isEnded = false;\n function endSpan(status) {\n if (isEnded) {\n return;\n }\n\n isEnded = true;\n\n const newAttributes = getIncomingRequestAttributesOnResponse(request, response);\n span.setAttributes(newAttributes);\n span.setStatus(status);\n span.end();\n\n // Update the transaction name if the route has changed\n const route = newAttributes['http.route'];\n if (route) {\n getIsolationScope().setTransactionName(`${request.method?.toUpperCase() || 'GET'} ${route}`);\n }\n }\n\n response.on('close', () => {\n endSpan(getSpanStatusFromHttpCode(response.statusCode));\n });\n response.on(errorMonitor, () => {\n const httpStatus = getSpanStatusFromHttpCode(response.statusCode);\n // Ensure we def. have an error status here\n endSpan(httpStatus.code === SPAN_STATUS_ERROR ? httpStatus : { code: SPAN_STATUS_ERROR });\n });\n\n return next();\n });\n };\n\n addStartSpanCallback(request, startSpan);\n });\n },\n processEvent(event) {\n // Drop transaction if it has a status code that should be ignored\n if (event.type === 'transaction') {\n const statusCode = event.contexts?.trace?.data?.['http.response.status_code'];\n if (typeof statusCode === 'number') {\n const shouldDrop = shouldFilterStatusCode(statusCode, ignoreStatusCodes);\n if (shouldDrop) {\n DEBUG_BUILD && debug.log('Dropping transaction due to status code', statusCode);\n return null;\n }\n }\n }\n\n return event;\n },\n afterAllSetup(client) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n if (client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerSpansIntergation` while `httpIntegration` is also present. Make sure to remove `httpIntegration` when adding `httpServerSpansIntegration`.',\n );\n }\n\n if (!client.getIntegrationByName('Http.Server')) {\n debug.error(\n 'It seems that you have manually added `httpServerSpansIntergation` without adding `httpServerIntegration`. This is a requiement for spans to be created - please add the `httpServerIntegration` integration.',\n );\n }\n },\n };\n}) ;\n\n/**\n * This integration emits spans for incoming requests handled via the node `http` module.\n * It requires the `httpServerIntegration` to be present.\n */\nconst httpServerSpansIntegration = _httpServerSpansIntegration\n\n;\n\nfunction isKnownPrefetchRequest(req) {\n // Currently only handles Next.js prefetch requests but may check other frameworks in the future.\n return req.headers['next-router-prefetch'] === '1';\n}\n\n/**\n * Check if a request is for a common static asset that should be ignored by default.\n *\n * Only exported for tests.\n */\nfunction isStaticAssetRequest(urlPath) {\n const path = stripUrlQueryAndFragment(urlPath);\n // Common static file extensions\n if (path.match(/\\.(ico|png|jpg|jpeg|gif|svg|css|js|woff|woff2|ttf|eot|webp|avif)$/)) {\n return true;\n }\n\n // Common metadata files\n if (path.match(/^\\/(robots\\.txt|sitemap\\.xml|manifest\\.json|browserconfig\\.xml)$/)) {\n return true;\n }\n\n return false;\n}\n\nfunction shouldIgnoreSpansForIncomingRequest(\n request,\n {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n }\n\n,\n) {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // request.url is the only property that holds any information about the url\n // it only consists of the URL path and query string (if any)\n const urlPath = request.url;\n\n const method = request.method?.toUpperCase();\n // We do not capture OPTIONS/HEAD requests as spans\n if (method === 'OPTIONS' || method === 'HEAD' || !urlPath) {\n return true;\n }\n\n // Default static asset filtering\n if (ignoreStaticAssets && method === 'GET' && isStaticAssetRequest(urlPath)) {\n return true;\n }\n\n if (ignoreIncomingRequests?.(urlPath, request)) {\n return true;\n }\n\n return false;\n}\n\nfunction getRequestContentLengthAttribute(request) {\n const length = getContentLength(request.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(request.headers)) {\n return {\n ['http.request_content_length']: length,\n };\n } else {\n return {\n ['http.request_content_length_uncompressed']: length,\n };\n }\n}\n\nfunction getContentLength(headers) {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nfunction isCompressed(headers) {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n\nfunction getIncomingRequestAttributesOnResponse(request, response) {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n\n const newAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n // eslint-disable-next-line deprecation/deprecation\n [SEMATTRS_HTTP_STATUS_CODE]: statusCode,\n 'http.status_text': statusMessage?.toUpperCase(),\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_IP] = localAddress;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_PORT] = localPort;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_PEER_IP] = remoteAddress;\n newAttributes['net.peer.port'] = remotePort;\n }\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_HTTP_STATUS_CODE] = statusCode;\n newAttributes['http.status_text'] = (statusMessage || '').toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n const routeName = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = routeName;\n }\n\n return newAttributes;\n}\n\n/**\n * If the given status code should be filtered for the given list of status codes/ranges.\n */\nfunction shouldFilterStatusCode(statusCode, dropForStatusCodes) {\n return dropForStatusCodes.some(code => {\n if (typeof code === 'number') {\n return code === statusCode;\n }\n\n const [min, max] = code;\n return statusCode >= min && statusCode <= max;\n });\n}\n\nexport { httpServerSpansIntegration, isStaticAssetRequest };\n//# sourceMappingURL=httpServerSpansIntegration.js.map\n", + "/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n", + "import { subscribe } from 'node:diagnostics_channel';\nimport { createContextKey, context, propagation } from '@opentelemetry/api';\nimport { debug, addNonEnumerableProperty, getClient, getIsolationScope, httpRequestToRequestData, stripUrlQueryAndFragment, withIsolationScope, generateSpanId, _INTERNAL_safeMathRandom, generateTraceId, getCurrentScope } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\nimport { patchRequestToCaptureBody } from '../../utils/captureRequestBody.js';\n\nconst HTTP_SERVER_INSTRUMENTED_KEY = createContextKey('sentry_http_server_instrumented');\nconst INTEGRATION_NAME = 'Http.Server';\n\nconst clientToRequestSessionAggregatesMap = new Map\n\n();\n\n// We keep track of emit functions we wrapped, to avoid double wrapping\n// We do this instead of putting a non-enumerable property on the function, because\n// sometimes the property seems to be migrated to forks of the emit function, which we do not want to happen\n// This was the case in the nestjs-distributed-tracing E2E test\nconst wrappedEmitFns = new WeakSet();\n\n/**\n * Add a callback to the request object that will be called when the request is started.\n * The callback will receive the next function to continue processing the request.\n */\nfunction addStartSpanCallback(request, callback) {\n addNonEnumerableProperty(request, '_startSpanCallback', new WeakRef(callback));\n}\n\nconst _httpServerIntegration = ((options = {}) => {\n const _options = {\n sessions: options.sessions ?? true,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS ?? 60000,\n maxRequestBodySize: options.maxRequestBodySize ?? 'medium',\n ignoreRequestBody: options.ignoreRequestBody,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const onHttpServerRequestStart = ((_data) => {\n const data = _data ;\n\n instrumentServer(data.server, _options);\n }) ;\n\n subscribe('http.server.request.start', onHttpServerRequestStart);\n },\n afterAllSetup(client) {\n if (DEBUG_BUILD && client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerIntegration` while `httpIntegration` is also present. Make sure to remove `httpServerIntegration` when adding `httpIntegration`.',\n );\n }\n },\n };\n}) ;\n\n/**\n * This integration handles request isolation, trace continuation and other core Sentry functionality around incoming http requests\n * handled via the node `http` module.\n *\n * This version uses OpenTelemetry for context propagation and span management.\n *\n * @see {@link ../../light/integrations/httpServerIntegration.ts} for the lightweight version without OpenTelemetry\n */\nconst httpServerIntegration = _httpServerIntegration\n\n;\n\n/**\n * Instrument a server to capture incoming requests.\n *\n */\nfunction instrumentServer(\n server,\n {\n ignoreRequestBody,\n maxRequestBodySize,\n sessions,\n sessionFlushingDelayMS,\n }\n\n,\n) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEmit = server.emit;\n\n if (wrappedEmitFns.has(originalEmit)) {\n return;\n }\n\n const newEmit = new Proxy(originalEmit, {\n apply(target, thisArg, args) {\n // Only traces request events\n if (args[0] !== 'request') {\n return target.apply(thisArg, args);\n }\n\n const client = getClient();\n\n // Make sure we do not double execute our wrapper code, for edge cases...\n // Without this check, if we double-wrap emit, for whatever reason, you'd get two http.server spans (one the children of the other)\n if (context.active().getValue(HTTP_SERVER_INSTRUMENTED_KEY) || !client) {\n return target.apply(thisArg, args);\n }\n\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Handling incoming request');\n\n const isolationScope = getIsolationScope().clone();\n const request = args[1] ;\n const response = args[2] ;\n\n const normalizedRequest = httpRequestToRequestData(request);\n\n // request.ip is non-standard but some frameworks set this\n const ipAddress = (request ).ip || request.socket?.remoteAddress;\n\n const url = request.url || '/';\n if (maxRequestBodySize !== 'none' && !ignoreRequestBody?.(url, request)) {\n patchRequestToCaptureBody(request, isolationScope, maxRequestBodySize, INTEGRATION_NAME);\n }\n\n // Update the isolation scope, isolate this request\n isolationScope.setSDKProcessingMetadata({ normalizedRequest, ipAddress });\n\n // attempt to update the scope's `transactionName` based on the request URL\n // Ideally, framework instrumentations coming after the HttpInstrumentation\n // update the transactionName once we get a parameterized route.\n const httpMethod = (request.method || 'GET').toUpperCase();\n const httpTargetWithoutQueryFragment = stripUrlQueryAndFragment(url);\n\n const bestEffortTransactionName = `${httpMethod} ${httpTargetWithoutQueryFragment}`;\n\n isolationScope.setTransactionName(bestEffortTransactionName);\n\n if (sessions && client) {\n recordRequestSession(client, {\n requestIsolationScope: isolationScope,\n response,\n sessionFlushingDelayMS: sessionFlushingDelayMS ?? 60000,\n });\n }\n\n return withIsolationScope(isolationScope, () => {\n const newPropagationContext = {\n traceId: generateTraceId(),\n sampleRand: _INTERNAL_safeMathRandom(),\n propagationSpanId: generateSpanId(),\n };\n // - Set a fresh propagation context so each request gets a unique traceId.\n // When there are incoming trace headers, propagation.extract() below sets a remote\n // span on the OTel context which takes precedence in getTraceContextForScope().\n // - We can write directly to the current scope here because it is forked implicitly via\n // `context.with` in `withIsolationScope` (See `SentryContextManager`).\n // - explicitly making a deep copy to avoid mutation of original PC on the other scope\n getCurrentScope().setPropagationContext({ ...newPropagationContext });\n isolationScope.setPropagationContext({ ...newPropagationContext });\n\n const ctx = propagation\n .extract(context.active(), normalizedRequest.headers)\n .setValue(HTTP_SERVER_INSTRUMENTED_KEY, true);\n\n return context.with(ctx, () => {\n // This is used (optionally) by the httpServerSpansIntegration to attach _startSpanCallback to the request object\n client.emit('httpServerRequest', request, response, normalizedRequest);\n\n const callback = (request )._startSpanCallback?.deref();\n if (callback) {\n return callback(() => target.apply(thisArg, args));\n }\n return target.apply(thisArg, args);\n });\n });\n },\n });\n\n wrappedEmitFns.add(newEmit);\n server.emit = newEmit;\n}\n\n/**\n * Starts a session and tracks it in the context of a given isolation scope.\n * When the passed response is finished, the session is put into a task and is\n * aggregated with other sessions that may happen in a certain time window\n * (sessionFlushingDelayMs).\n *\n * The sessions are always aggregated by the client that is on the current scope\n * at the time of ending the response (if there is one).\n */\n// Exported for unit tests\nfunction recordRequestSession(\n client,\n {\n requestIsolationScope,\n response,\n sessionFlushingDelayMS,\n }\n\n,\n) {\n requestIsolationScope.setSDKProcessingMetadata({\n requestSession: { status: 'ok' },\n });\n response.once('close', () => {\n const requestSession = requestIsolationScope.getScopeData().sdkProcessingMetadata.requestSession;\n\n if (client && requestSession) {\n DEBUG_BUILD && debug.log(`Recorded request session with status: ${requestSession.status}`);\n\n const roundedDate = new Date();\n roundedDate.setSeconds(0, 0);\n const dateBucketKey = roundedDate.toISOString();\n\n const existingClientAggregate = clientToRequestSessionAggregatesMap.get(client);\n const bucket = existingClientAggregate?.[dateBucketKey] || { exited: 0, crashed: 0, errored: 0 };\n bucket[({ ok: 'exited', crashed: 'crashed', errored: 'errored' } )[requestSession.status]]++;\n\n if (existingClientAggregate) {\n existingClientAggregate[dateBucketKey] = bucket;\n } else {\n DEBUG_BUILD && debug.log('Opened new request session aggregate.');\n const newClientAggregate = { [dateBucketKey]: bucket };\n clientToRequestSessionAggregatesMap.set(client, newClientAggregate);\n\n const flushPendingClientAggregates = () => {\n clearTimeout(timeout);\n unregisterClientFlushHook();\n clientToRequestSessionAggregatesMap.delete(client);\n\n const aggregatePayload = Object.entries(newClientAggregate).map(\n ([timestamp, value]) => ({\n started: timestamp,\n exited: value.exited,\n errored: value.errored,\n crashed: value.crashed,\n }),\n );\n client.sendSession({ aggregates: aggregatePayload });\n };\n\n const unregisterClientFlushHook = client.on('flush', () => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to client flush');\n flushPendingClientAggregates();\n });\n const timeout = setTimeout(() => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to flushing schedule');\n flushPendingClientAggregates();\n }, sessionFlushingDelayMS).unref();\n }\n }\n });\n}\n\nexport { addStartSpanCallback, httpServerIntegration, recordRequestSession };\n//# sourceMappingURL=httpServerIntegration.js.map\n", + "const INSTRUMENTATION_NAME = '@sentry/instrumentation-http';\n\n/** We only want to capture request bodies up to 1mb. */\nconst MAX_BODY_BYTE_LENGTH = 1024 * 1024;\n\nexport { INSTRUMENTATION_NAME, MAX_BODY_BYTE_LENGTH };\n//# sourceMappingURL=constants.js.map\n", + "import { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { MAX_BODY_BYTE_LENGTH } from '../integrations/http/constants.js';\n\n/**\n * This method patches the request object to capture the body.\n * Instead of actually consuming the streamed body ourselves, which has potential side effects,\n * we monkey patch `req.on('data')` to intercept the body chunks.\n * This way, we only read the body if the user also consumes the body, ensuring we do not change any behavior in unexpected ways.\n */\nfunction patchRequestToCaptureBody(\n req,\n isolationScope,\n maxIncomingRequestBodySize,\n integrationName,\n) {\n let bodyByteLength = 0;\n const chunks = [];\n\n DEBUG_BUILD && debug.log(integrationName, 'Patching request.on');\n\n /**\n * We need to keep track of the original callbacks, in order to be able to remove listeners again.\n * Since `off` depends on having the exact same function reference passed in, we need to be able to map\n * original listeners to our wrapped ones.\n */\n const callbackMap = new WeakMap();\n\n const maxBodySize =\n maxIncomingRequestBodySize === 'small'\n ? 1000\n : maxIncomingRequestBodySize === 'medium'\n ? 10000\n : MAX_BODY_BYTE_LENGTH;\n\n try {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.on = new Proxy(req.on, {\n apply: (target, thisArg, args) => {\n const [event, listener, ...restArgs] = args;\n\n if (event === 'data') {\n DEBUG_BUILD &&\n debug.log(integrationName, `Handling request.on(\"data\") with maximum body size of ${maxBodySize}b`);\n\n const callback = new Proxy(listener, {\n apply: (target, thisArg, args) => {\n try {\n const chunk = args[0] ;\n const bufferifiedChunk = Buffer.from(chunk);\n\n if (bodyByteLength < maxBodySize) {\n chunks.push(bufferifiedChunk);\n bodyByteLength += bufferifiedChunk.byteLength;\n } else if (DEBUG_BUILD) {\n debug.log(\n integrationName,\n `Dropping request body chunk because maximum body length of ${maxBodySize}b is exceeded.`,\n );\n }\n } catch (_err) {\n DEBUG_BUILD && debug.error(integrationName, 'Encountered error while storing body chunk.');\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n callbackMap.set(listener, callback);\n\n return Reflect.apply(target, thisArg, [event, callback, ...restArgs]);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n // Ensure we also remove callbacks correctly\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.off = new Proxy(req.off, {\n apply: (target, thisArg, args) => {\n const [, listener] = args;\n\n const callback = callbackMap.get(listener);\n if (callback) {\n callbackMap.delete(listener);\n\n const modifiedArgs = args.slice();\n modifiedArgs[1] = callback;\n return Reflect.apply(target, thisArg, modifiedArgs);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n req.on('end', () => {\n try {\n const body = Buffer.concat(chunks).toString('utf-8');\n if (body) {\n // Using Buffer.byteLength here, because the body may contain characters that are not 1 byte long\n const bodyByteLength = Buffer.byteLength(body, 'utf-8');\n const truncatedBody =\n bodyByteLength > maxBodySize\n ? `${Buffer.from(body)\n .subarray(0, maxBodySize - 3)\n .toString('utf-8')}...`\n : body;\n\n isolationScope.setSDKProcessingMetadata({ normalizedRequest: { data: truncatedBody } });\n }\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error building captured request body', error);\n }\n }\n });\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error patching request to capture body', error);\n }\n }\n}\n\nexport { patchRequestToCaptureBody };\n//# sourceMappingURL=captureRequestBody.js.map\n", + "import { subscribe, unsubscribe } from 'node:diagnostics_channel';\nimport { errorMonitor } from 'node:events';\nimport { context, trace, SpanStatusCode } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { ATTR_URL_FULL, ATTR_USER_AGENT_ORIGINAL, ATTR_NETWORK_PEER_ADDRESS, ATTR_NETWORK_PEER_PORT, SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, ATTR_NETWORK_TRANSPORT, ATTR_NETWORK_PROTOCOL_VERSION, ATTR_HTTP_RESPONSE_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport { SDK_VERSION, LRUMap, startInactiveSpan, debug, getSpanStatusFromHttpCode, getHttpSpanDetailsFromUrlObject, parseStringToURLObject, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\nimport { INSTRUMENTATION_NAME } from './constants.js';\nimport { addRequestBreadcrumb, addTracePropagationHeadersToOutgoingRequest, getRequestOptions, getClientRequestUrl } from '../../utils/outgoingHttpRequest.js';\n\n/**\n * This custom HTTP instrumentation handles outgoing HTTP requests.\n *\n * It provides:\n * - Breadcrumbs for all outgoing requests\n * - Trace propagation headers (when enabled)\n * - Span creation for outgoing requests (when createSpansForOutgoingRequests is enabled)\n *\n * Span creation requires Node 22+ and uses diagnostic channels to avoid monkey-patching.\n * By default, this is only enabled in the node SDK, not in node-core or other runtime SDKs.\n *\n * Important note: Contrary to other OTEL instrumentation, this one cannot be unwrapped.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js/blob/f8ab5592ddea5cba0a3b33bf8d74f27872c0367f/experimental/packages/opentelemetry-instrumentation-http/src/http.ts\n */\nclass SentryHttpInstrumentation extends InstrumentationBase {\n\n constructor(config = {}) {\n super(INSTRUMENTATION_NAME, SDK_VERSION, config);\n\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** @inheritdoc */\n init() {\n // We register handlers when either http or https is instrumented\n // but we only want to register them once, whichever is loaded first\n let hasRegisteredHandlers = false;\n\n const onHttpClientResponseFinish = ((_data) => {\n const data = _data ;\n this._onOutgoingRequestFinish(data.request, data.response);\n }) ;\n\n const onHttpClientRequestError = ((_data) => {\n const data = _data ;\n this._onOutgoingRequestFinish(data.request, undefined);\n }) ;\n\n const onHttpClientRequestCreated = ((_data) => {\n const data = _data ;\n this._onOutgoingRequestCreated(data.request);\n }) ;\n\n const wrap = (moduleExports) => {\n if (hasRegisteredHandlers) {\n return moduleExports;\n }\n\n hasRegisteredHandlers = true;\n\n subscribe('http.client.response.finish', onHttpClientResponseFinish);\n\n // When an error happens, we still want to have a breadcrumb\n // In this case, `http.client.response.finish` is not triggered\n subscribe('http.client.request.error', onHttpClientRequestError);\n\n // NOTE: This channel only exists since Node 22.12+\n // Before that, outgoing requests are not patched\n // and trace headers are not propagated, sadly.\n if (this.getConfig().propagateTraceInOutgoingRequests || this.getConfig().createSpansForOutgoingRequests) {\n subscribe('http.client.request.created', onHttpClientRequestCreated);\n }\n return moduleExports;\n };\n\n const unwrap = () => {\n unsubscribe('http.client.response.finish', onHttpClientResponseFinish);\n unsubscribe('http.client.request.error', onHttpClientRequestError);\n unsubscribe('http.client.request.created', onHttpClientRequestCreated);\n };\n\n /**\n * You may be wondering why we register these diagnostics-channel listeners\n * in such a convoluted way (as InstrumentationNodeModuleDefinition...)˝,\n * instead of simply subscribing to the events once in here.\n * The reason for this is timing semantics: These functions are called once the http or https module is loaded.\n * If we'd subscribe before that, there seem to be conflicts with the OTEL native instrumentation in some scenarios,\n * especially the \"import-on-top\" pattern of setting up ESM applications.\n */\n return [\n new InstrumentationNodeModuleDefinition('http', ['*'], wrap, unwrap),\n new InstrumentationNodeModuleDefinition('https', ['*'], wrap, unwrap),\n ];\n }\n\n /**\n * Start a span for an outgoing request.\n * The span wraps the callback of the request, and ends when the response is finished.\n */\n _startSpanForOutgoingRequest(request) {\n // We monkey-patch `req.once('response'), which is used to trigger the callback of the request\n // eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation\n const originalOnce = request.once;\n\n const [name, attributes] = _getOutgoingRequestSpanData(request);\n\n const span = startInactiveSpan({\n name,\n attributes,\n onlyIfParent: true,\n });\n\n this.getConfig().outgoingRequestHook?.(span, request);\n\n const newOnce = new Proxy(originalOnce, {\n apply(target, thisArg, args) {\n const [event] = args;\n if (event !== 'response') {\n return target.apply(thisArg, args);\n }\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n return context.with(requestContext, () => {\n return target.apply(thisArg, args);\n });\n },\n });\n\n // eslint-disable-next-line deprecation/deprecation\n request.once = newOnce;\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\n const endSpan = (status) => {\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n\n span.setStatus(status);\n span.end();\n };\n\n request.prependListener('response', response => {\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n\n context.bind(context.active(), response);\n\n const additionalAttributes = _getOutgoingRequestEndedSpanData(response);\n span.setAttributes(additionalAttributes);\n\n this.getConfig().outgoingResponseHook?.(span, response);\n this.getConfig().outgoingRequestApplyCustomAttributes?.(span, request, response);\n\n const endHandler = (forceError = false) => {\n this._diag.debug('outgoingRequest on end()');\n\n const status =\n // eslint-disable-next-line deprecation/deprecation\n forceError || typeof response.statusCode !== 'number' || (response.aborted && !response.complete)\n ? { code: SpanStatusCode.ERROR }\n : getSpanStatusFromHttpCode(response.statusCode);\n\n endSpan(status);\n };\n\n response.on('end', () => {\n endHandler();\n });\n response.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on response error()', error);\n endHandler(true);\n });\n });\n\n // Fallback if proper response end handling above fails\n request.on('close', () => {\n endSpan({ code: SpanStatusCode.UNSET });\n });\n request.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on request error()', error);\n endSpan({ code: SpanStatusCode.ERROR });\n });\n\n return span;\n }\n\n /**\n * This is triggered when an outgoing request finishes.\n * It has access to the final request and response objects.\n */\n _onOutgoingRequestFinish(request, response) {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling finished outgoing request');\n\n const _breadcrumbs = this.getConfig().breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n // Note: We cannot rely on the map being set by `_onOutgoingRequestCreated`, because that is not run in Node <22\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addRequestBreadcrumb(request, response);\n }\n }\n\n /**\n * This is triggered when an outgoing request is created.\n * It creates a span (if enabled) and propagates trace headers within the span's context,\n * so downstream services link to the outgoing HTTP span rather than its parent.\n */\n _onOutgoingRequestCreated(request) {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling outgoing request created');\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n const shouldCreateSpan = this.getConfig().createSpansForOutgoingRequests && (this.getConfig().spans ?? true);\n const shouldPropagate = this.getConfig().propagateTraceInOutgoingRequests;\n\n if (shouldCreateSpan) {\n const span = this._startSpanForOutgoingRequest(request);\n\n // Propagate headers within the span's context so the sentry-trace header\n // contains the outgoing span's ID, not the parent span's ID.\n // Only do this if the span is recording (has a parent) - otherwise the non-recording\n // span would produce all-zero trace IDs instead of using the scope's propagation context.\n if (shouldPropagate && span.isRecording()) {\n const requestContext = trace.setSpan(context.active(), span);\n context.with(requestContext, () => {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n });\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n _shouldIgnoreOutgoingRequest(request) {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (!ignoreOutgoingRequests) {\n return false;\n }\n\n const options = getRequestOptions(request);\n const url = getClientRequestUrl(request);\n return ignoreOutgoingRequests(url, options);\n }\n}\n\nfunction _getOutgoingRequestSpanData(request) {\n const url = getClientRequestUrl(request);\n\n const [name, attributes] = getHttpSpanDetailsFromUrlObject(\n parseStringToURLObject(url),\n 'client',\n 'auto.http.otel.http',\n request,\n );\n\n const userAgent = request.getHeader('user-agent');\n\n return [\n name,\n {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n 'otel.kind': 'CLIENT',\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n [ATTR_URL_FULL]: url,\n 'http.url': url,\n 'http.method': request.method,\n 'http.target': request.path || '/',\n 'net.peer.name': request.host,\n 'http.host': request.getHeader('host'),\n ...attributes,\n },\n ];\n}\n\nfunction _getOutgoingRequestEndedSpanData(response) {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n\n const transport = httpVersion.toUpperCase() !== 'QUIC' ? 'ip_tcp' : 'ip_udp';\n\n const additionalAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n [ATTR_NETWORK_PROTOCOL_VERSION]: httpVersion,\n 'http.flavor': httpVersion,\n [ATTR_NETWORK_TRANSPORT]: transport,\n 'net.transport': transport,\n ['http.status_text']: statusMessage?.toUpperCase(),\n 'http.status_code': statusCode,\n ...getResponseContentLengthAttributes(response),\n };\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n\n additionalAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n additionalAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n additionalAttributes['net.peer.ip'] = remoteAddress;\n additionalAttributes['net.peer.port'] = remotePort;\n }\n\n return additionalAttributes;\n}\n\nfunction getResponseContentLengthAttributes(response) {\n const length = getContentLength(response.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(response.headers)) {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]: length };\n } else {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]: length };\n }\n}\n\nfunction getContentLength(headers) {\n const contentLengthHeader = headers['content-length'];\n if (typeof contentLengthHeader === 'number') {\n return contentLengthHeader;\n }\n if (typeof contentLengthHeader !== 'string') {\n return undefined;\n }\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) {\n return undefined;\n }\n\n return contentLength;\n}\n\nfunction isCompressed(headers) {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n\nexport { SentryHttpInstrumentation };\n//# sourceMappingURL=SentryHttpInstrumentation.js.map\n", + "import { parseBaggageHeader, objectToBaggageHeader } from '@sentry/core';\n\n/**\n * Merge two baggage headers into one.\n * - Sentry-specific entries (keys starting with \"sentry-\") from the new baggage take precedence\n * - Non-Sentry entries from existing baggage take precedence\n * The order of the existing baggage will be preserved, and new entries will be added to the end.\n *\n * This matches the behavior of OTEL's propagation.inject() which uses baggage.setEntry()\n * to overwrite existing entries with the same key.\n */\nfunction mergeBaggageHeaders(\n existing,\n baggage,\n) {\n if (!existing) {\n return baggage;\n }\n\n const existingBaggageEntries = parseBaggageHeader(existing);\n const newBaggageEntries = parseBaggageHeader(baggage);\n\n if (!newBaggageEntries) {\n return existing;\n }\n\n // Start with existing entries, but Sentry entries from new baggage will overwrite\n const mergedBaggageEntries = { ...existingBaggageEntries };\n Object.entries(newBaggageEntries).forEach(([key, value]) => {\n // Sentry-specific keys always take precedence from new baggage\n // Non-Sentry keys only added if not already present\n if (key.startsWith('sentry-') || !mergedBaggageEntries[key]) {\n mergedBaggageEntries[key] = value;\n }\n });\n\n return objectToBaggageHeader(mergedBaggageEntries);\n}\n\nexport { mergeBaggageHeaders };\n//# sourceMappingURL=baggage.js.map\n", + "import { getBreadcrumbLogLevelFromHttpStatusCode, addBreadcrumb, getClient, shouldPropagateTraceForUrl, getTraceData, debug, isError, parseUrl, getSanitizedUrlString } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { mergeBaggageHeaders } from './baggage.js';\n\nconst LOG_PREFIX = '@sentry/instrumentation-http';\n\n/** Add a breadcrumb for outgoing requests. */\nfunction addRequestBreadcrumb(request, response) {\n const data = getBreadcrumbData(request);\n\n const statusCode = response?.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\n/**\n * Add trace propagation headers to an outgoing request.\n * This must be called _before_ the request is sent!\n */\n// eslint-disable-next-line complexity\nfunction addTracePropagationHeadersToOutgoingRequest(\n request,\n propagationDecisionMap,\n) {\n const url = getClientRequestUrl(request);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const headersToAdd = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!headersToAdd) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = headersToAdd;\n\n if (sentryTrace && !request.getHeader('sentry-trace')) {\n try {\n request.setHeader('sentry-trace', sentryTrace);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added sentry-trace header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add sentry-trace header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (traceparent && !request.getHeader('traceparent')) {\n try {\n request.setHeader('traceparent', traceparent);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added traceparent header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add traceparent header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (baggage) {\n const newBaggage = mergeBaggageHeaders(request.getHeader('baggage'), baggage);\n if (newBaggage) {\n try {\n request.setHeader('baggage', newBaggage);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added baggage header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add baggage header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n }\n}\n\nfunction getBreadcrumbData(request) {\n try {\n // `request.host` does not contain the port, but the host header does\n const host = request.getHeader('host') || request.host;\n const url = new URL(request.path, `${request.protocol}//${host}`);\n const parsedUrl = parseUrl(url.toString());\n\n const data = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Convert an outgoing request to request options. */\nfunction getRequestOptions(request) {\n return {\n method: request.method,\n protocol: request.protocol,\n host: request.host,\n hostname: request.host,\n path: request.path,\n headers: request.getHeaders(),\n };\n}\n\n/**\n *\n */\nfunction getClientRequestUrl(request) {\n const hostname = request.getHeader('host') || request.host;\n const protocol = request.protocol;\n const path = request.path;\n\n return `${protocol}//${hostname}${path}`;\n}\n\nexport { addRequestBreadcrumb, addTracePropagationHeadersToOutgoingRequest, getClientRequestUrl, getRequestOptions };\n//# sourceMappingURL=outgoingHttpRequest.js.map\n", + "import { context } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, LRUMap } from '@sentry/core';\nimport * as diagch from 'diagnostics_channel';\nimport { NODE_MAJOR, NODE_MINOR } from '../../nodeVersion.js';\nimport { addTracePropagationHeadersToFetchRequest, addFetchRequestBreadcrumb, getAbsoluteUrl } from '../../utils/outgoingFetchRequest.js';\n\n/**\n * This custom node-fetch instrumentation is used to instrument outgoing fetch requests.\n * It does not emit any spans.\n *\n * The reason this is isolated from the OpenTelemetry instrumentation is that users may overwrite this,\n * which would lead to Sentry not working as expected.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js-contrib/blob/28e209a9da36bc4e1f8c2b0db7360170ed46cb80/plugins/node/instrumentation-undici/src/undici.ts\n */\nclass SentryNodeFetchInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n\n constructor(config = {}) {\n super('@sentry/instrumentation-node-fetch', SDK_VERSION, config);\n this._channelSubs = [];\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** No need to instrument files/modules. */\n init() {\n return undefined;\n }\n\n /** Disable the instrumentation. */\n disable() {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs = [];\n }\n\n /** Enable the instrumentation. */\n enable() {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n\n this._subscribeToChannel('undici:request:create', this._onRequestCreated.bind(this));\n this._subscribeToChannel('undici:request:headers', this._onResponseHeaders.bind(this));\n }\n\n /**\n * This method is called when a request is created.\n * You can still mutate the request here before it is sent.\n */\n _onRequestCreated({ request }) {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const shouldIgnore = this._shouldIgnoreOutgoingRequest(request);\n // We store this decisision for later so we do not need to re-evaluate it\n // Additionally, the active context is not correct in _onResponseHeaders, so we need to make sure it is evaluated here\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n if (config.tracePropagation !== false) {\n addTracePropagationHeadersToFetchRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * This method is called when a response is received.\n */\n _onResponseHeaders({ request, response }) {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const _breadcrumbs = config.breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addFetchRequestBreadcrumb(request, response);\n }\n }\n\n /** Subscribe to a diagnostics channel. */\n _subscribeToChannel(\n diagnosticChannel,\n onMessage,\n ) {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const useNewSubscribe = NODE_MAJOR > 18 || (NODE_MAJOR === 18 && NODE_MINOR >= 19);\n\n let unsubscribe;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n } else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n _shouldIgnoreOutgoingRequest(request) {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // Add trace propagation headers\n const url = getAbsoluteUrl(request.origin, request.path);\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (typeof ignoreOutgoingRequests !== 'function' || !url) {\n return false;\n }\n\n return ignoreOutgoingRequests(url);\n }\n}\n\nexport { SentryNodeFetchInstrumentation };\n//# sourceMappingURL=SentryNodeFetchInstrumentation.js.map\n", + "import { parseSemver } from '@sentry/core';\n\nconst NODE_VERSION = parseSemver(process.versions.node) ;\nconst NODE_MAJOR = NODE_VERSION.major;\nconst NODE_MINOR = NODE_VERSION.minor;\n\nexport { NODE_MAJOR, NODE_MINOR, NODE_VERSION };\n//# sourceMappingURL=nodeVersion.js.map\n", + "import { getClient, shouldPropagateTraceForUrl, getTraceData, getBreadcrumbLogLevelFromHttpStatusCode, addBreadcrumb, parseUrl, getSanitizedUrlString } from '@sentry/core';\nimport { mergeBaggageHeaders } from './baggage.js';\n\nconst SENTRY_TRACE_HEADER = 'sentry-trace';\nconst SENTRY_BAGGAGE_HEADER = 'baggage';\n\n// For baggage, we make sure to merge this into a possibly existing header\nconst BAGGAGE_HEADER_REGEX = /baggage: (.*)\\r\\n/;\n\n/**\n * Add trace propagation headers to an outgoing fetch/undici request.\n *\n * Checks if the request URL matches trace propagation targets,\n * then injects sentry-trace, traceparent, and baggage headers.\n */\n// eslint-disable-next-line complexity\nfunction addTracePropagationHeadersToFetchRequest(\n request,\n propagationDecisionMap,\n) {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Manually add the trace headers, if it applies\n // Note: We do not use `propagation.inject()` here, because our propagator relies on an active span\n // Which we do not have in this case\n // The propagator _may_ overwrite this, but this should be fine as it is the same data\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const addedHeaders = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!addedHeaders) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = addedHeaders;\n\n // We do not want to overwrite existing headers here\n // If the core UndiciInstrumentation is registered, it will already have set the headers\n // We do not want to add any then\n if (Array.isArray(request.headers)) {\n const requestHeaders = request.headers;\n\n // We do not want to overwrite existing header here, if it was already set\n if (sentryTrace && !requestHeaders.includes(SENTRY_TRACE_HEADER)) {\n requestHeaders.push(SENTRY_TRACE_HEADER, sentryTrace);\n }\n\n if (traceparent && !requestHeaders.includes('traceparent')) {\n requestHeaders.push('traceparent', traceparent);\n }\n\n // For baggage, we make sure to merge this into a possibly existing header\n const existingBaggagePos = requestHeaders.findIndex(header => header === SENTRY_BAGGAGE_HEADER);\n if (baggage && existingBaggagePos === -1) {\n requestHeaders.push(SENTRY_BAGGAGE_HEADER, baggage);\n } else if (baggage) {\n const existingBaggage = requestHeaders[existingBaggagePos + 1];\n const merged = mergeBaggageHeaders(existingBaggage, baggage);\n if (merged) {\n requestHeaders[existingBaggagePos + 1] = merged;\n }\n }\n } else {\n const requestHeaders = request.headers;\n // We do not want to overwrite existing header here, if it was already set\n if (sentryTrace && !requestHeaders.includes(`${SENTRY_TRACE_HEADER}:`)) {\n request.headers += `${SENTRY_TRACE_HEADER}: ${sentryTrace}\\r\\n`;\n }\n\n if (traceparent && !requestHeaders.includes('traceparent:')) {\n request.headers += `traceparent: ${traceparent}\\r\\n`;\n }\n\n const existingBaggage = request.headers.match(BAGGAGE_HEADER_REGEX)?.[1];\n if (baggage && !existingBaggage) {\n request.headers += `${SENTRY_BAGGAGE_HEADER}: ${baggage}\\r\\n`;\n } else if (baggage) {\n const merged = mergeBaggageHeaders(existingBaggage, baggage);\n if (merged) {\n request.headers = request.headers.replace(BAGGAGE_HEADER_REGEX, `baggage: ${merged}\\r\\n`);\n }\n }\n }\n}\n\n/** Add a breadcrumb for an outgoing fetch/undici request. */\nfunction addFetchRequestBreadcrumb(request, response) {\n const data = getBreadcrumbData(request);\n\n const statusCode = response.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\nfunction getBreadcrumbData(request) {\n try {\n const url = getAbsoluteUrl(request.origin, request.path);\n const parsedUrl = parseUrl(url);\n\n const data = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Get the absolute URL from an origin and path. */\nfunction getAbsoluteUrl(origin, path = '/') {\n try {\n const url = new URL(path, origin);\n return url.toString();\n } catch {\n // fallback: Construct it on our own\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n }\n}\n\nexport { addFetchRequestBreadcrumb, addTracePropagationHeadersToFetchRequest, getAbsoluteUrl };\n//# sourceMappingURL=outgoingFetchRequest.js.map\n", + "import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { wrapContextManagerClass } from '@sentry/opentelemetry';\n\n/**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\nconst SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n\nexport { SentryContextManager };\n//# sourceMappingURL=contextManager.js.map\n", + "import { ATTR_URL_FULL, SEMATTRS_HTTP_URL, ATTR_HTTP_REQUEST_METHOD, SEMATTRS_HTTP_METHOD, ATTR_DB_SYSTEM_NAME, SEMATTRS_DB_SYSTEM, SEMATTRS_RPC_SERVICE, SEMATTRS_MESSAGING_SYSTEM, SEMATTRS_FAAS_TRIGGER, SEMATTRS_DB_STATEMENT, SEMATTRS_HTTP_TARGET, ATTR_HTTP_ROUTE, ATTR_HTTP_RESPONSE_STATUS_CODE, SEMATTRS_HTTP_STATUS_CODE, SEMATTRS_RPC_GRPC_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport { parseUrl, getSanitizedUrlString, SDK_VERSION, addNonEnumerableProperty, isSentryRequestUrl, getClient, baggageHeaderToDynamicSamplingContext, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, stripUrlQueryAndFragment, spanToJSON, hasSpansEnabled, dynamicSamplingContextToSentryBaggageHeader, LRUMap, debug, shouldPropagateTraceForUrl, parseBaggageHeader, SENTRY_BAGGAGE_KEY_PREFIX, generateSentryTraceHeader, generateTraceparentHeader, getDynamicSamplingContextFromSpan, getCurrentScope, getDynamicSamplingContextFromScope, getIsolationScope, propagationContextFromHeaders, shouldContinueTrace, spanToTraceContext, getTraceContextFromScope, getRootSpan, handleCallbackErrors, getCapturedScopesOnSpan, setAsyncContextStrategy, getDefaultIsolationScope, getDefaultCurrentScope, SPAN_STATUS_OK, SPAN_STATUS_ERROR, getSpanStatusFromHttpCode, _INTERNAL_safeDateNow, debounce, timedEventsToMeasurements, captureEvent, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, convertSpanLinksForEnvelope, getStatusMessage, spanTimeInputToSeconds, addChildSpanToSpan, setCapturedScopesOnSpan, logSpanStart, logSpanEnd, parseSampleRate, _INTERNAL_safeMathRandom, sampleSpan } from '@sentry/core';\nexport { getClient, getDynamicSamplingContextFromSpan, shouldPropagateTraceForUrl } from '@sentry/core';\nimport * as api from '@opentelemetry/api';\nimport { trace, SpanKind, createContextKey, TraceFlags, propagation, INVALID_TRACEID, context, SpanStatusCode, ROOT_CONTEXT, isSpanContextValid } from '@opentelemetry/api';\nimport { TraceState, W3CBaggagePropagator, isTracingSuppressed, suppressTracing as suppressTracing$1 } from '@opentelemetry/core';\nimport { SamplingDecision } from '@opentelemetry/sdk-trace-base';\n\n/** If this attribute is true, it means that the parent is a remote span. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE = 'sentry.parentIsRemote';\n\n// These are not standardized yet, but used by the graphql instrumentation\nconst SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION = 'sentry.graphql.operation';\n\n/**\n * Get the parent span id from a span.\n * In OTel v1, the parent span id is accessed as `parentSpanId`\n * In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n */\nfunction getParentSpanId(span) {\n if ('parentSpanId' in span) {\n return span.parentSpanId ;\n } else if ('parentSpanContext' in span) {\n return (span.parentSpanContext )?.spanId;\n }\n\n return undefined;\n}\n\n/**\n * Check if a given span has attributes.\n * This is necessary because the base `Span` type does not have attributes,\n * so in places where we are passed a generic span, we need to check if we want to access them.\n */\nfunction spanHasAttributes(\n span,\n) {\n const castSpan = span ;\n return !!castSpan.attributes && typeof castSpan.attributes === 'object';\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasKind(span) {\n const castSpan = span ;\n return typeof castSpan.kind === 'number';\n}\n\n/**\n * Check if a given span has a status.\n * This is necessary because the base `Span` type does not have a status,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasStatus(\n span,\n) {\n const castSpan = span ;\n return !!castSpan.status;\n}\n\n/**\n * Check if a given span has a name.\n * This is necessary because the base `Span` type does not have a name,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasName(span) {\n const castSpan = span ;\n return !!castSpan.name;\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasParentId(\n span,\n) {\n const castSpan = span ;\n return !!getParentSpanId(castSpan);\n}\n\n/**\n * Check if a given span has events.\n * This is necessary because the base `Span` type does not have events,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasEvents(\n span,\n) {\n const castSpan = span ;\n return Array.isArray(castSpan.events);\n}\n\n/**\n * Get sanitizied request data from an OTEL span.\n */\nfunction getRequestSpanData(span) {\n // The base `Span` type has no `attributes`, so we need to guard here against that\n if (!spanHasAttributes(span)) {\n return {};\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeUrlAttribute = (span.attributes[ATTR_URL_FULL] || span.attributes[SEMATTRS_HTTP_URL])\n\n;\n\n const data = {\n url: maybeUrlAttribute,\n // eslint-disable-next-line deprecation/deprecation\n 'http.method': (span.attributes[ATTR_HTTP_REQUEST_METHOD] || span.attributes[SEMATTRS_HTTP_METHOD])\n\n,\n };\n\n // Default to GET if URL is set but method is not\n if (!data['http.method'] && data.url) {\n data['http.method'] = 'GET';\n }\n\n try {\n if (typeof maybeUrlAttribute === 'string') {\n const url = parseUrl(maybeUrlAttribute);\n\n data.url = getSanitizedUrlString(url);\n\n if (url.search) {\n data['http.query'] = url.search;\n }\n if (url.hash) {\n data['http.fragment'] = url.hash;\n }\n }\n } catch {\n // ignore\n }\n\n return data;\n}\n\n// Typescript complains if we do not use `...args: any[]` for the mixin, with:\n// A mixin class must have a constructor with a single rest parameter of type 'any[]'.ts(2545)\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Wrap an Client class with things we need for OpenTelemetry support.\n * Make sure that the Client class passed in is non-abstract!\n *\n * Usage:\n * const OpenTelemetryClient = getWrappedClientClass(NodeClient);\n * const client = new OpenTelemetryClient(options);\n */\nfunction wrapClientClass\n\n(ClientClass) {\n // @ts-expect-error We just assume that this is non-abstract, if you pass in an abstract class this would make it non-abstract\n class OpenTelemetryClient extends ClientClass {\n\n constructor(...args) {\n super(...args);\n }\n\n /** Get the OTEL tracer. */\n get tracer() {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/opentelemetry';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /**\n * @inheritDoc\n */\n async flush(timeout) {\n const provider = this.traceProvider;\n await provider?.forceFlush();\n return super.flush(timeout);\n }\n }\n\n return OpenTelemetryClient ;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Get the span kind from a span.\n * For whatever reason, this is not public API on the generic \"Span\" type,\n * so we need to check if we actually have a `SDKTraceBaseSpan` where we can fetch this from.\n * Otherwise, we fall back to `SpanKind.INTERNAL`.\n */\nfunction getSpanKind(span) {\n if (spanHasKind(span)) {\n return span.kind;\n }\n\n return SpanKind.INTERNAL;\n}\n\nconst SENTRY_TRACE_HEADER = 'sentry-trace';\nconst SENTRY_BAGGAGE_HEADER = 'baggage';\n\nconst SENTRY_TRACE_STATE_DSC = 'sentry.dsc';\nconst SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING = 'sentry.sampled_not_recording';\nconst SENTRY_TRACE_STATE_URL = 'sentry.url';\nconst SENTRY_TRACE_STATE_SAMPLE_RAND = 'sentry.sample_rand';\nconst SENTRY_TRACE_STATE_SAMPLE_RATE = 'sentry.sample_rate';\n\nconst SENTRY_SCOPES_CONTEXT_KEY = createContextKey('sentry_scopes');\n\nconst SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_isolation_scope');\n\nconst SENTRY_FORK_SET_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_scope');\n\nconst SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_isolation_scope');\n\nconst SCOPE_CONTEXT_FIELD = '_scopeContext';\n\n/**\n * Try to get the current scopes from the given OTEL context.\n * This requires a Context Manager that was wrapped with getWrappedContextManager.\n */\nfunction getScopesFromContext(context) {\n return context.getValue(SENTRY_SCOPES_CONTEXT_KEY) ;\n}\n\n/**\n * Set the current scopes on an OTEL context.\n * This will return a forked context with the Propagation Context set.\n */\nfunction setScopesOnContext(context, scopes) {\n return context.setValue(SENTRY_SCOPES_CONTEXT_KEY, scopes);\n}\n\n/**\n * Set the context on the scope so we can later look it up.\n * We need this to get the context from the scope in the `trace` functions.\n */\nfunction setContextOnScope(scope, context) {\n addNonEnumerableProperty(scope, SCOPE_CONTEXT_FIELD, context);\n}\n\n/**\n * Get the context related to a scope.\n */\nfunction getContextFromScope(scope) {\n return (scope )[SCOPE_CONTEXT_FIELD];\n}\n\n/**\n *\n * @param otelSpan Checks whether a given OTEL Span is an http request to sentry.\n * @returns boolean\n */\nfunction isSentryRequestSpan(span) {\n if (!spanHasAttributes(span)) {\n return false;\n }\n\n const { attributes } = span;\n\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n\n if (!httpUrl) {\n return false;\n }\n\n return isSentryRequestUrl(httpUrl.toString(), getClient());\n}\n\n/**\n * OpenTelemetry only knows about SAMPLED or NONE decision,\n * but for us it is important to differentiate between unset and unsampled.\n *\n * Both of these are identified as `traceFlags === TracegFlags.NONE`,\n * but we additionally look at a special trace state to differentiate between them.\n */\nfunction getSamplingDecision(spanContext) {\n const { traceFlags, traceState } = spanContext;\n\n const sampledNotRecording = traceState ? traceState.get(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING) === '1' : false;\n\n // If trace flag is `SAMPLED`, we interpret this as sampled\n // If it is `NONE`, it could mean either it was sampled to be not recorder, or that it was not sampled at all\n // For us this is an important difference, sow e look at the SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING\n // to identify which it is\n if (traceFlags === TraceFlags.SAMPLED) {\n return true;\n }\n\n if (sampledNotRecording) {\n return false;\n }\n\n // Fall back to DSC as a last resort, that may also contain `sampled`...\n const dscString = traceState ? traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n if (dsc?.sampled === 'true') {\n return true;\n }\n if (dsc?.sampled === 'false') {\n return false;\n }\n\n return undefined;\n}\n\n/**\n * Infer the op & description for a set of name, attributes and kind of a span.\n */\nfunction inferSpanData(spanName, attributes, kind) {\n // if http.method exists, this is an http request span\n // eslint-disable-next-line deprecation/deprecation\n const httpMethod = attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD];\n if (httpMethod) {\n return descriptionForHttpMethod({ attributes, name: spanName, kind }, httpMethod);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const dbSystem = attributes[ATTR_DB_SYSTEM_NAME] || attributes[SEMATTRS_DB_SYSTEM];\n const opIsCache =\n typeof attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] === 'string' &&\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP].startsWith('cache.');\n\n // If db.type exists then this is a database call span\n // If the Redis DB is used as a cache, the span description should not be changed\n if (dbSystem && !opIsCache) {\n return descriptionForDbSystem({ attributes, name: spanName });\n }\n\n const customSourceOrRoute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom' ? 'custom' : 'route';\n\n // If rpc.service exists then this is a rpc call span.\n // eslint-disable-next-line deprecation/deprecation\n const rpcService = attributes[SEMATTRS_RPC_SERVICE];\n if (rpcService) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, 'route'),\n op: 'rpc',\n };\n }\n\n // If messaging.system exists then this is a messaging system span.\n // eslint-disable-next-line deprecation/deprecation\n const messagingSystem = attributes[SEMATTRS_MESSAGING_SYSTEM];\n if (messagingSystem) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: 'message',\n };\n }\n\n // If faas.trigger exists then this is a function as a service span.\n // eslint-disable-next-line deprecation/deprecation\n const faasTrigger = attributes[SEMATTRS_FAAS_TRIGGER];\n if (faasTrigger) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: faasTrigger.toString(),\n };\n }\n\n return { op: undefined, description: spanName, source: 'custom' };\n}\n\n/**\n * Extract better op/description from an otel span.\n *\n * Does not overwrite the span name if the source is already set to custom to ensure\n * that user-updated span names are preserved. In this case, we only adjust the op but\n * leave span description and source unchanged.\n *\n * Based on https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/7422ce2a06337f68a59b552b8c5a2ac125d6bae5/exporter/sentryexporter/sentry_exporter.go#L306\n */\nfunction parseSpanDescription(span) {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const name = spanHasName(span) ? span.name : '';\n const kind = getSpanKind(span);\n\n return inferSpanData(name, attributes, kind);\n}\n\nfunction descriptionForDbSystem({ attributes, name }) {\n // if we already have a custom name, we don't overwrite it but only set the op\n const userDefinedName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n if (typeof userDefinedName === 'string') {\n return {\n op: 'db',\n description: userDefinedName,\n source: (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ) || 'custom',\n };\n }\n\n // if we already have the source set to custom, we don't overwrite the span description but only set the op\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom') {\n return { op: 'db', description: name, source: 'custom' };\n }\n\n // Use DB statement (Ex \"SELECT * FROM table\") if possible as description.\n // eslint-disable-next-line deprecation/deprecation\n const statement = attributes[SEMATTRS_DB_STATEMENT];\n\n const description = statement ? statement.toString() : name;\n\n return { op: 'db', description, source: 'task' };\n}\n\n/** Only exported for tests. */\nfunction descriptionForHttpMethod(\n { name, kind, attributes },\n httpMethod,\n) {\n const opParts = ['http'];\n\n switch (kind) {\n case SpanKind.CLIENT:\n opParts.push('client');\n break;\n case SpanKind.SERVER:\n opParts.push('server');\n break;\n }\n\n // Spans for HTTP requests we have determined to be prefetch requests will have a `.prefetch` postfix in the op\n if (attributes['sentry.http.prefetch']) {\n opParts.push('prefetch');\n }\n\n const { urlPath, url, query, fragment, hasRoute } = getSanitizedUrl(attributes, kind);\n\n if (!urlPath) {\n return { ...getUserUpdatedNameAndSource(name, attributes), op: opParts.join('.') };\n }\n\n const graphqlOperationsAttribute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION];\n\n // Ex. GET /api/users\n const baseDescription = `${httpMethod} ${urlPath}`;\n\n // When the http span has a graphql operation, append it to the description\n // We add these in the graphqlIntegration\n const inferredDescription = graphqlOperationsAttribute\n ? `${baseDescription} (${getGraphqlOperationNamesFromAttribute(graphqlOperationsAttribute)})`\n : baseDescription;\n\n // If `httpPath` is a root path, then we can categorize the transaction source as route.\n const inferredSource = hasRoute || urlPath === '/' ? 'route' : 'url';\n\n const data = {};\n\n if (url) {\n data.url = url;\n }\n if (query) {\n data['http.query'] = query;\n }\n if (fragment) {\n data['http.fragment'] = fragment;\n }\n\n // If the span kind is neither client nor server, we use the original name\n // this infers that somebody manually started this span, in which case we don't want to overwrite the name\n const isClientOrServerKind = kind === SpanKind.CLIENT || kind === SpanKind.SERVER;\n\n // If the span is an auto-span (=it comes from one of our instrumentations),\n // we always want to infer the name\n // this is necessary because some of the auto-instrumentation we use uses kind=INTERNAL\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] || 'manual';\n const isManualSpan = !`${origin}`.startsWith('auto');\n\n // If users (or in very rare occasions we) set the source to custom, we don't overwrite the name\n const alreadyHasCustomSource = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom';\n const customSpanName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n const useInferredDescription =\n !alreadyHasCustomSource && customSpanName == null && (isClientOrServerKind || !isManualSpan);\n\n const { description, source } = useInferredDescription\n ? { description: inferredDescription, source: inferredSource }\n : getUserUpdatedNameAndSource(name, attributes);\n\n return {\n op: opParts.join('.'),\n description,\n source,\n data,\n };\n}\n\nfunction getGraphqlOperationNamesFromAttribute(attr) {\n if (Array.isArray(attr)) {\n // oxlint-disable-next-line typescript/require-array-sort-compare\n const sorted = attr.slice().sort();\n\n // Up to 5 items, we just add all of them\n if (sorted.length <= 5) {\n return sorted.join(', ');\n } else {\n // Else, we add the first 5 and the diff of other operations\n return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n }\n }\n\n return `${attr}`;\n}\n\n/** Exported for tests only */\nfunction getSanitizedUrl(\n attributes,\n kind,\n)\n\n {\n // This is the relative path of the URL, e.g. /sub\n // eslint-disable-next-line deprecation/deprecation\n const httpTarget = attributes[SEMATTRS_HTTP_TARGET];\n // This is the full URL, including host & query params etc., e.g. https://example.com/sub?foo=bar\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n // This is the normalized route name - may not always be available!\n const httpRoute = attributes[ATTR_HTTP_ROUTE];\n\n const parsedUrl = typeof httpUrl === 'string' ? parseUrl(httpUrl) : undefined;\n const url = parsedUrl ? getSanitizedUrlString(parsedUrl) : undefined;\n const query = parsedUrl?.search || undefined;\n const fragment = parsedUrl?.hash || undefined;\n\n if (typeof httpRoute === 'string') {\n return { urlPath: httpRoute, url, query, fragment, hasRoute: true };\n }\n\n if (kind === SpanKind.SERVER && typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n if (parsedUrl) {\n return { urlPath: url, url, query, fragment, hasRoute: false };\n }\n\n // fall back to target even for client spans, if no URL is present\n if (typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n return { urlPath: undefined, url, query, fragment, hasRoute: false };\n}\n\n/**\n * Because Otel instrumentation sometimes mutates span names via `span.updateName`, the only way\n * to ensure that a user-set span name is preserved is to store it as a tmp attribute on the span.\n * We delete this attribute once we're done with it when preparing the event envelope.\n *\n * This temp attribute always takes precedence over the original name.\n *\n * We also need to take care of setting the correct source. Users can always update the source\n * after updating the name, so we need to respect that.\n *\n * @internal exported only for testing\n */\nfunction getUserUpdatedNameAndSource(\n originalName,\n attributes,\n fallbackSource = 'custom',\n)\n\n {\n const source = (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ) || fallbackSource;\n const description = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n if (description && typeof description === 'string') {\n return {\n description,\n source,\n };\n }\n\n return { description: originalName, source };\n}\n\n/**\n * Setup a DSC handler on the passed client,\n * ensuring that the transaction name is inferred from the span correctly.\n */\nfunction enhanceDscWithOpenTelemetryRootSpanName(client) {\n client.on('createDsc', (dsc, rootSpan) => {\n if (!rootSpan) {\n return;\n }\n\n // We want to overwrite the transaction on the DSC that is created by default in core\n // The reason for this is that we want to infer the span name, not use the initial one\n // Otherwise, we'll get names like \"GET\" instead of e.g. \"GET /foo\"\n // `parseSpanDescription` takes the attributes of the span into account for the name\n // This mutates the passed-in DSC\n\n const jsonSpan = spanToJSON(rootSpan);\n const attributes = jsonSpan.data;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n const { description } = spanHasName(rootSpan) ? parseSpanDescription(rootSpan) : { description: undefined };\n if (source !== 'url' && description) {\n dsc.transaction = description;\n }\n\n // Also ensure sampling decision is correctly inferred\n // In core, we use `spanIsSampled`, which just looks at the trace flags\n // but in OTEL, we use a slightly more complex logic to be able to differntiate between unsampled and deferred sampling\n if (hasSpansEnabled()) {\n const sampled = getSamplingDecision(rootSpan.spanContext());\n dsc.sampled = sampled == undefined ? undefined : String(sampled);\n }\n });\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n return trace.getActiveSpan();\n}\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\n/**\n * Generate a TraceState for the given data.\n */\nfunction makeTraceState({\n dsc,\n sampled,\n}\n\n) {\n // We store the DSC as OTEL trace state on the span context\n const dscString = dsc ? dynamicSamplingContextToSentryBaggageHeader(dsc) : undefined;\n\n const traceStateBase = new TraceState();\n\n const traceStateWithDsc = dscString ? traceStateBase.set(SENTRY_TRACE_STATE_DSC, dscString) : traceStateBase;\n\n // We also specifically want to store if this is sampled to be not recording,\n // or unsampled (=could be either sampled or not)\n return sampled === false ? traceStateWithDsc.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') : traceStateWithDsc;\n}\n\nconst setupElements = new Set();\n\n/** Get all the OpenTelemetry elements that have been set up. */\nfunction openTelemetrySetupCheck() {\n return Array.from(setupElements);\n}\n\n/** Mark an OpenTelemetry element as setup. */\nfunction setIsSetup(element) {\n setupElements.add(element);\n}\n\n/**\n * Injects and extracts `sentry-trace` and `baggage` headers from carriers.\n */\nclass SentryPropagator extends W3CBaggagePropagator {\n /** A map of URLs that have already been checked for if they match tracePropagationTargets. */\n\n constructor() {\n super();\n setIsSetup('SentryPropagator');\n\n // We're caching results so we don't have to recompute regexp every time we create a request.\n this._urlMatchesTargetsMap = new LRUMap(100);\n }\n\n /**\n * @inheritDoc\n */\n inject(context, carrier, setter) {\n if (isTracingSuppressed(context)) {\n DEBUG_BUILD && debug.log('[Tracing] Not injecting trace data for url because tracing is suppressed.');\n return;\n }\n\n const activeSpan = trace.getSpan(context);\n const url = activeSpan && getCurrentURL(activeSpan);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n if (!shouldPropagateTraceForUrl(url, tracePropagationTargets, this._urlMatchesTargetsMap)) {\n DEBUG_BUILD &&\n debug.log('[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:', url);\n return;\n }\n\n const existingBaggageHeader = getExistingBaggage(carrier);\n let baggage = propagation.getBaggage(context) || propagation.createBaggage({});\n\n const { dynamicSamplingContext, traceId, spanId, sampled } = getInjectionData(context);\n\n if (existingBaggageHeader) {\n const baggageEntries = parseBaggageHeader(existingBaggageHeader);\n\n if (baggageEntries) {\n Object.entries(baggageEntries).forEach(([key, value]) => {\n baggage = baggage.setEntry(key, { value });\n });\n }\n }\n\n if (dynamicSamplingContext) {\n baggage = Object.entries(dynamicSamplingContext).reduce((b, [dscKey, dscValue]) => {\n if (dscValue) {\n return b.setEntry(`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`, { value: dscValue });\n }\n return b;\n }, baggage);\n }\n\n // We also want to avoid setting the default OTEL trace ID, if we get that for whatever reason\n if (traceId && traceId !== INVALID_TRACEID) {\n setter.set(carrier, SENTRY_TRACE_HEADER, generateSentryTraceHeader(traceId, spanId, sampled));\n\n if (propagateTraceparent) {\n setter.set(carrier, 'traceparent', generateTraceparentHeader(traceId, spanId, sampled));\n }\n }\n\n super.inject(propagation.setBaggage(context, baggage), carrier, setter);\n }\n\n /**\n * @inheritDoc\n */\n extract(context, carrier, getter) {\n const maybeSentryTraceHeader = getter.get(carrier, SENTRY_TRACE_HEADER);\n const baggage = getter.get(carrier, SENTRY_BAGGAGE_HEADER);\n\n const sentryTrace = maybeSentryTraceHeader\n ? Array.isArray(maybeSentryTraceHeader)\n ? maybeSentryTraceHeader[0]\n : maybeSentryTraceHeader\n : undefined;\n\n // Add remote parent span context\n // If there is no incoming trace, this will return the context as-is\n return ensureScopesOnContext(getContextWithRemoteActiveSpan(context, { sentryTrace, baggage }));\n }\n\n /**\n * @inheritDoc\n */\n fields() {\n return [SENTRY_TRACE_HEADER, SENTRY_BAGGAGE_HEADER, 'traceparent'];\n }\n}\n\n/**\n * Get propagation injection data for the given context.\n * The additional options can be passed to override the scope and client that is otherwise derived from the context.\n */\nfunction getInjectionData(\n context,\n options = {},\n)\n\n {\n const span = trace.getSpan(context);\n\n // If we have a remote span, the spanId should be considered as the parentSpanId, not spanId itself\n // Instead, we use a virtual (generated) spanId for propagation\n if (span?.spanContext().isRemote) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: undefined,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // If we have a local span, we just use this\n if (span) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: spanContext.spanId,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // Else we try to use the propagation context from the scope\n // The only scenario where this should happen is when we neither have a span, nor an incoming trace\n const scope = options.scope || getScopesFromContext(context)?.scope || getCurrentScope();\n const client = options.client || getClient();\n\n const propagationContext = scope.getPropagationContext();\n const dynamicSamplingContext = client ? getDynamicSamplingContextFromScope(client, scope) : undefined;\n return {\n dynamicSamplingContext,\n traceId: propagationContext.traceId,\n spanId: propagationContext.propagationSpanId,\n sampled: propagationContext.sampled,\n };\n}\n\nfunction getContextWithRemoteActiveSpan(\n ctx,\n { sentryTrace, baggage },\n) {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n\n const { traceId, parentSpanId, sampled, dsc } = propagationContext;\n\n const client = getClient();\n const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n\n // We only want to set the virtual span if we are continuing a concrete trace\n // Otherwise, we ignore the incoming trace here, e.g. if we have no trace headers\n if (!parentSpanId || (client && !shouldContinueTrace(client, incomingDsc?.org_id))) {\n return ctx;\n }\n\n const spanContext = generateRemoteSpanContext({\n traceId,\n spanId: parentSpanId,\n sampled,\n dsc,\n });\n\n return trace.setSpanContext(ctx, spanContext);\n}\n\n/**\n * Takes trace strings and propagates them as a remote active span.\n * This should be used in addition to `continueTrace` in OTEL-powered environments.\n */\nfunction continueTraceAsRemoteSpan(\n ctx,\n options,\n callback,\n) {\n const ctxWithSpanContext = ensureScopesOnContext(getContextWithRemoteActiveSpan(ctx, options));\n\n return context.with(ctxWithSpanContext, callback);\n}\n\nfunction ensureScopesOnContext(ctx) {\n // If there are no scopes yet on the context, ensure we have them\n const scopes = getScopesFromContext(ctx);\n const newScopes = {\n // If we have no scope here, this is most likely either the root context or a context manually derived from it\n // In this case, we want to fork the current scope, to ensure we do not pollute the root scope\n scope: scopes ? scopes.scope : getCurrentScope().clone(),\n isolationScope: scopes ? scopes.isolationScope : getIsolationScope(),\n };\n\n return setScopesOnContext(ctx, newScopes);\n}\n\n/** Try to get the existing baggage header so we can merge this in. */\nfunction getExistingBaggage(carrier) {\n try {\n const baggage = (carrier )[SENTRY_BAGGAGE_HEADER];\n return Array.isArray(baggage) ? baggage.join(',') : baggage;\n } catch {\n return undefined;\n }\n}\n\n/**\n * It is pretty tricky to get access to the outgoing request URL of a request in the propagator.\n * As we only have access to the context of the span to be sent and the carrier (=headers),\n * but the span may be unsampled and thus have no attributes.\n *\n * So we use the following logic:\n * 1. If we have an active span, we check if it has a URL attribute.\n * 2. Else, if the active span has no URL attribute (e.g. it is unsampled), we check a special trace state (which we set in our sampler).\n */\nfunction getCurrentURL(span) {\n const spanData = spanToJSON(span).data;\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const urlAttribute = spanData[SEMATTRS_HTTP_URL] || spanData[ATTR_URL_FULL];\n if (typeof urlAttribute === 'string') {\n return urlAttribute;\n }\n\n // Also look at the traceState, which we may set in the sampler even for unsampled spans\n const urlTraceState = span.spanContext().traceState?.get(SENTRY_TRACE_STATE_URL);\n if (urlTraceState) {\n return urlTraceState;\n }\n\n return undefined;\n}\n\nfunction generateRemoteSpanContext({\n spanId,\n traceId,\n sampled,\n dsc,\n}\n\n) {\n // We store the DSC as OTEL trace state on the span context\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n return spanContext;\n}\n\n/**\n * Internal helper for starting spans and manual spans. See {@link startSpan} and {@link startSpanManual} for the public APIs.\n * @param options - The span context options\n * @param callback - The callback to execute with the span\n * @param autoEnd - Whether to automatically end the span after the callback completes\n */\nfunction _startSpan(options, callback, autoEnd) {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n const ctx = shouldSkipSpan ? suppressTracing$1(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n // If spans are not enabled, ensure we suppress tracing for the span creation\n // but preserve the original context for the callback execution\n // This ensures that we don't create spans when tracing is disabled which\n // would otherwise be a problem for users that don't enable tracing but use\n // custom OpenTelemetry setups.\n if (!hasSpansEnabled()) {\n const suppressedCtx = isTracingSuppressed(ctx) ? ctx : suppressTracing$1(ctx);\n\n return context.with(suppressedCtx, () => {\n return tracer.startActiveSpan(name, spanOptions, suppressedCtx, span => {\n // Restore the original unsuppressed context for the callback execution\n // so that custom OpenTelemetry spans maintain the correct context.\n // We use activeCtx (not ctx) because ctx may be suppressed when onlyIfParent is true\n // and no parent span exists. Using activeCtx ensures custom OTel spans are never\n // inadvertently suppressed.\n return context.with(activeCtx, () => {\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n });\n }\n\n return tracer.startActiveSpan(name, spanOptions, ctx, span => {\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startSpan(options, callback) {\n return _startSpan(options, callback, true);\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` or the `finish` function passed to the callback manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startSpanManual(\n options,\n callback,\n) {\n return _startSpan(options, span => callback(span, () => span.end()), false);\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startInactiveSpan(options) {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n let ctx = shouldSkipSpan ? suppressTracing$1(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n if (!hasSpansEnabled()) {\n ctx = isTracingSuppressed(ctx) ? ctx : suppressTracing$1(ctx);\n }\n\n return tracer.startSpan(name, spanOptions, ctx);\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will be root spans.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nfunction withActiveSpan(span, callback) {\n const newContextWithActiveSpan = span ? trace.setSpan(context.active(), span) : trace.deleteSpan(context.active());\n return context.with(newContextWithActiveSpan, () => callback(getCurrentScope()));\n}\n\nfunction getTracer() {\n const client = getClient();\n return client?.tracer || trace.getTracer('@sentry/opentelemetry', SDK_VERSION);\n}\n\nfunction getSpanOptions(options) {\n const { startTime, attributes, kind, op, links } = options;\n\n // OTEL expects timestamps in ms, not seconds\n const fixedStartTime = typeof startTime === 'number' ? ensureTimestampInMilliseconds(startTime) : startTime;\n\n return {\n attributes: op\n ? {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...attributes,\n }\n : attributes,\n kind,\n links,\n startTime: fixedStartTime,\n };\n}\n\nfunction ensureTimestampInMilliseconds(timestamp) {\n const isMs = timestamp < 9999999999;\n return isMs ? timestamp * 1000 : timestamp;\n}\n\nfunction getContext(scope, forceTransaction) {\n const ctx = getContextForScope(scope);\n const parentSpan = trace.getSpan(ctx);\n\n // In the case that we have no parent span, we start a new trace\n // Note that if we continue a trace, we'll always have a remote parent span here anyhow\n if (!parentSpan) {\n return ctx;\n }\n\n // If we don't want to force a transaction, and we have a parent span, all good, we just return as-is!\n if (!forceTransaction) {\n return ctx;\n }\n\n // Else, if we do have a parent span but want to force a transaction, we have to simulate a \"root\" context\n\n // Else, we need to do two things:\n // 1. Unset the parent span from the context, so we'll create a new root span\n // 2. Ensure the propagation context is correct, so we'll continue from the parent span\n const ctxWithoutSpan = trace.deleteSpan(ctx);\n\n const { spanId, traceId } = parentSpan.spanContext();\n const sampled = getSamplingDecision(parentSpan.spanContext());\n\n // In this case, when we are forcing a transaction, we want to treat this like continuing an incoming trace\n // so we set the traceState according to the root span\n const rootSpan = getRootSpan(parentSpan);\n const dsc = getDynamicSamplingContextFromSpan(rootSpan);\n\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanOptions = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n const ctxWithSpanContext = trace.setSpanContext(ctxWithoutSpan, spanOptions);\n\n return ctxWithSpanContext;\n}\n\nfunction getContextForScope(scope) {\n if (scope) {\n const ctx = getContextFromScope(scope);\n if (ctx) {\n return ctx;\n }\n }\n\n return context.active();\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * This is a custom version of `continueTrace` that is used in OTEL-powered environments.\n * It propagates the trace as a remote span, in addition to setting it on the propagation context.\n */\nfunction continueTrace(options, callback) {\n return continueTraceAsRemoteSpan(context.active(), options, callback);\n}\n\n/**\n * Get the trace context for a given scope.\n * We have a custom implementation here because we need an OTEL-specific way to get the span from a scope.\n */\nfunction getTraceContextForScope(\n client,\n scope,\n) {\n const ctx = getContextFromScope(scope);\n const span = ctx && trace.getSpan(ctx);\n\n const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n\n const dynamicSamplingContext = span\n ? getDynamicSamplingContextFromSpan(span)\n : getDynamicSamplingContextFromScope(client, scope);\n return [dynamicSamplingContext, traceContext];\n}\n\nfunction getActiveSpanWrapper(parentSpan) {\n return parentSpan !== undefined\n ? (callback) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback) => callback();\n}\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nfunction suppressTracing(callback) {\n const ctx = suppressTracing$1(context.active());\n return context.with(ctx, callback);\n}\n\n/** Ensure the `trace` context is set on all events. */\nfunction setupEventContextTrace(client) {\n client.on('preprocessEvent', event => {\n const span = getActiveSpan();\n // For transaction events, this is handled separately\n // Because the active span may not be the span that is actually the transaction event\n if (!span || event.type === 'transaction') {\n return;\n }\n\n // If event has already set `trace` context, use that one.\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n const rootSpan = getRootSpan(span);\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(rootSpan),\n ...event.sdkProcessingMetadata,\n };\n\n return event;\n });\n}\n\n/**\n * Otel-specific implementation of `getTraceData`.\n * @see `@sentry/core` version of `getTraceData` for more information\n */\nfunction getTraceData({\n span,\n scope,\n client,\n propagateTraceparent,\n} = {}) {\n let ctx = (scope && getContextFromScope(scope)) ?? api.context.active();\n\n if (span) {\n const { scope } = getCapturedScopesOnSpan(span);\n // fall back to current context if for whatever reason we can't find the one of the span\n ctx = (scope && getContextFromScope(scope)) || api.trace.setSpan(api.context.active(), span);\n }\n\n const { traceId, spanId, sampled, dynamicSamplingContext } = getInjectionData(ctx, { scope, client });\n\n const traceData = {\n 'sentry-trace': generateSentryTraceHeader(traceId, spanId, sampled),\n baggage: dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext),\n };\n\n if (propagateTraceparent) {\n traceData.traceparent = generateTraceparentHeader(traceId, spanId, sampled);\n }\n\n return traceData;\n}\n\n/**\n * Sets the async context strategy to use follow the OTEL context under the hood.\n * We handle forking a hub inside of our custom OTEL Context Manager (./otelContextManager.ts)\n */\nfunction setOpenTelemetryContextAsyncContextStrategy() {\n function getScopes() {\n const ctx = api.context.active();\n const scopes = getScopesFromContext(ctx);\n\n if (scopes) {\n return scopes;\n }\n\n // fallback behavior:\n // if, for whatever reason, we can't find scopes on the context here, we have to fix this somehow\n return {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n function withScope(callback) {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n // as by default, we don't want to fork this, unless triggered explicitly by `withScope`\n return api.context.with(ctx, () => {\n return callback(getCurrentScope());\n });\n }\n\n function withSetScope(scope, callback) {\n const ctx = getContextFromScope(scope) || api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_SET_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which picks up this scope as the current scope\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY, scope), () => {\n return callback(scope);\n });\n }\n\n function withIsolationScope(callback) {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY, true), () => {\n return callback(getIsolationScope());\n });\n }\n\n function withSetIsolationScope(isolationScope, callback) {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY, isolationScope), () => {\n return callback(getIsolationScope());\n });\n }\n\n function getCurrentScope() {\n return getScopes().scope;\n }\n\n function getIsolationScope() {\n return getScopes().isolationScope;\n }\n\n setAsyncContextStrategy({\n withScope,\n withSetScope,\n withSetIsolationScope,\n withIsolationScope,\n getCurrentScope,\n getIsolationScope,\n startSpan,\n startSpanManual,\n startInactiveSpan,\n getActiveSpan,\n suppressTracing,\n getTraceData,\n continueTrace,\n // The types here don't fully align, because our own `Span` type is narrower\n // than the OTEL one - but this is OK for here, as we now we'll only have OTEL spans passed around\n withActiveSpan: withActiveSpan ,\n });\n}\n\n/**\n * Wrap an OpenTelemetry ContextManager in a way that ensures the context is kept in sync with the Sentry Scope.\n *\n * Usage:\n * import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\n * const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n * const contextManager = new SentryContextManager();\n */\nfunction wrapContextManagerClass(\n ContextManagerClass,\n) {\n /**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create new scopes per context, so that the OTEL Context & the Sentry Scope are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\n\n // @ts-expect-error TS does not like this, but we know this is fine\n class SentryContextManager extends ContextManagerClass {\n constructor(...args) {\n super(...args);\n setIsSetup('SentryContextManager');\n }\n /**\n * Overwrite with() of the original AsyncLocalStorageContextManager\n * to ensure we also create new scopes per context.\n */\n with(\n context,\n fn,\n thisArg,\n ...args\n ) {\n const currentScopes = getScopesFromContext(context);\n const currentScope = currentScopes?.scope || getCurrentScope();\n const currentIsolationScope = currentScopes?.isolationScope || getIsolationScope();\n\n const shouldForkIsolationScope = context.getValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY) === true;\n const scope = context.getValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY) ;\n const isolationScope = context.getValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY) ;\n\n const newCurrentScope = scope || currentScope.clone();\n const newIsolationScope =\n isolationScope || (shouldForkIsolationScope ? currentIsolationScope.clone() : currentIsolationScope);\n const scopes = { scope: newCurrentScope, isolationScope: newIsolationScope };\n\n const ctx1 = setScopesOnContext(context, scopes);\n\n // Remove the unneeded values again\n const ctx2 = ctx1\n .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);\n\n setContextOnScope(newCurrentScope, ctx2);\n\n return super.with(ctx2, fn, thisArg, ...args);\n }\n\n /**\n * Gets underlying AsyncLocalStorage and symbol to allow lookup of scope.\n */\n getAsyncLocalStorageLookup() {\n return {\n // @ts-expect-error This is on the base class, but not part of the interface\n asyncLocalStorage: this._asyncLocalStorage,\n contextSymbol: SENTRY_SCOPES_CONTEXT_KEY,\n };\n }\n }\n\n return SentryContextManager ;\n}\n\n/**\n * This function runs through a list of OTEL Spans, and wraps them in an `SpanNode`\n * where each node holds a reference to their parent node.\n */\nfunction groupSpansWithParents(spans) {\n const nodeMap = new Map();\n\n for (const span of spans) {\n createOrUpdateSpanNodeAndRefs(nodeMap, span);\n }\n\n return Array.from(nodeMap, function ([_id, spanNode]) {\n return spanNode;\n });\n}\n\n/**\n * This returns the _local_ parent ID - `parentId` on the span may point to a remote span.\n */\nfunction getLocalParentId(span) {\n const parentIsRemote = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE] === true;\n // If the parentId is the trace parent ID, we pretend it's undefined\n // As this means the parent exists somewhere else\n return !parentIsRemote ? getParentSpanId(span) : undefined;\n}\n\nfunction createOrUpdateSpanNodeAndRefs(nodeMap, span) {\n const id = span.spanContext().spanId;\n const parentId = getLocalParentId(span);\n\n if (!parentId) {\n createOrUpdateNode(nodeMap, { id, span, children: [] });\n return;\n }\n\n // Else make sure to create parent node as well\n // Note that the parent may not know it's parent _yet_, this may be updated in a later pass\n const parentNode = createOrGetParentNode(nodeMap, parentId);\n const node = createOrUpdateNode(nodeMap, { id, span, parentNode, children: [] });\n parentNode.children.push(node);\n}\n\nfunction createOrGetParentNode(nodeMap, id) {\n const existing = nodeMap.get(id);\n\n if (existing) {\n return existing;\n }\n\n return createOrUpdateNode(nodeMap, { id, children: [] });\n}\n\nfunction createOrUpdateNode(nodeMap, spanNode) {\n const existing = nodeMap.get(spanNode.id);\n\n // If span is already set, nothing to do here\n if (existing?.span) {\n return existing;\n }\n\n // If it exists but span is not set yet, we update it\n if (existing && !existing.span) {\n existing.span = spanNode.span;\n existing.parentNode = spanNode.parentNode;\n return existing;\n }\n\n // Else, we create a new one...\n nodeMap.set(spanNode.id, spanNode);\n return spanNode;\n}\n\n// canonicalCodesGrpcMap maps some GRPC codes to Sentry's span statuses. See description in grpc documentation.\nconst canonicalGrpcErrorCodesMap = {\n '1': 'cancelled',\n '2': 'unknown_error',\n '3': 'invalid_argument',\n '4': 'deadline_exceeded',\n '5': 'not_found',\n '6': 'already_exists',\n '7': 'permission_denied',\n '8': 'resource_exhausted',\n '9': 'failed_precondition',\n '10': 'aborted',\n '11': 'out_of_range',\n '12': 'unimplemented',\n '13': 'internal_error',\n '14': 'unavailable',\n '15': 'data_loss',\n '16': 'unauthenticated',\n} ;\n\nconst isStatusErrorMessageValid = (message) => {\n return Object.values(canonicalGrpcErrorCodesMap).includes(message );\n};\n\n/**\n * Get a Sentry span status from an otel span.\n */\nfunction mapStatus(span) {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const status = spanHasStatus(span) ? span.status : undefined;\n\n if (status) {\n // Since span status OK is not set by default, we give it priority: https://opentelemetry.io/docs/concepts/signals/traces/#span-status\n if (status.code === SpanStatusCode.OK) {\n return { code: SPAN_STATUS_OK };\n // If the span is already marked as erroneous we return that exact status\n } else if (status.code === SpanStatusCode.ERROR) {\n if (typeof status.message === 'undefined') {\n const inferredStatus = inferStatusFromAttributes(attributes);\n if (inferredStatus) {\n return inferredStatus;\n }\n }\n\n if (status.message && isStatusErrorMessageValid(status.message)) {\n return { code: SPAN_STATUS_ERROR, message: status.message };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n }\n\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n const inferredStatus = inferStatusFromAttributes(attributes);\n\n if (inferredStatus) {\n return inferredStatus;\n }\n\n // We default to setting the spans status to ok.\n if (status?.code === SpanStatusCode.UNSET) {\n return { code: SPAN_STATUS_OK };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n }\n}\n\nfunction inferStatusFromAttributes(attributes) {\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n\n // eslint-disable-next-line deprecation/deprecation\n const httpCodeAttribute = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE];\n // eslint-disable-next-line deprecation/deprecation\n const grpcCodeAttribute = attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n\n const numberHttpCode =\n typeof httpCodeAttribute === 'number'\n ? httpCodeAttribute\n : typeof httpCodeAttribute === 'string'\n ? parseInt(httpCodeAttribute)\n : undefined;\n\n if (typeof numberHttpCode === 'number') {\n return getSpanStatusFromHttpCode(numberHttpCode);\n }\n\n if (typeof grpcCodeAttribute === 'string') {\n return { code: SPAN_STATUS_ERROR, message: canonicalGrpcErrorCodesMap[grpcCodeAttribute] || 'unknown_error' };\n }\n\n return undefined;\n}\n\nconst MAX_SPAN_COUNT = 1000;\nconst DEFAULT_TIMEOUT = 300; // 5 min\n\n/**\n * A Sentry-specific exporter that converts OpenTelemetry Spans to Sentry Spans & Transactions.\n */\nclass SentrySpanExporter {\n /*\n * A quick explanation on the buckets: We do bucketing of finished spans for efficiency. This span exporter is\n * accumulating spans until a root span is encountered and then it flushes all the spans that are descendants of that\n * root span. Because it is totally in the realm of possibilities that root spans are never finished, and we don't\n * want to accumulate spans indefinitely in memory, we need to periodically evacuate spans. Naively we could simply\n * store the spans in an array and each time a new span comes in we could iterate through the entire array and\n * evacuate all spans that have an end-timestamp that is older than our limit. This could get quite expensive because\n * we would have to iterate a potentially large number of spans every time we evacuate. We want to avoid these large\n * bursts of computation.\n *\n * Instead we go for a bucketing approach and put spans into buckets, based on what second\n * (modulo the time limit) the span was put into the exporter. With buckets, when we decide to evacuate, we can\n * iterate through the bucket entries instead, which have an upper bound of items, making the evacuation much more\n * efficient. Cleaning up also becomes much more efficient since it simply involves de-referencing a bucket within the\n * bucket array, and letting garbage collection take care of the rest.\n */\n\n // Essentially a a set of span ids that are already sent. The values are expiration\n // times in this cache so we don't hold onto them indefinitely.\n\n /* Internally, we use a debounced flush to give some wiggle room to the span processor to accumulate more spans. */\n\n constructor(options\n\n) {\n this._finishedSpanBucketSize = options?.timeout || DEFAULT_TIMEOUT;\n this._finishedSpanBuckets = new Array(this._finishedSpanBucketSize).fill(undefined);\n this._lastCleanupTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n this._spansToBucketEntry = new WeakMap();\n this._sentSpans = new Map();\n this._debouncedFlush = debounce(this.flush.bind(this), 1, { maxWait: 100 });\n }\n\n /**\n * Export a single span.\n * This is called by the span processor whenever a span is ended.\n */\n export(span) {\n const currentTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n\n if (this._lastCleanupTimestampInS !== currentTimestampInS) {\n let droppedSpanCount = 0;\n this._finishedSpanBuckets.forEach((bucket, i) => {\n if (bucket && bucket.timestampInS <= currentTimestampInS - this._finishedSpanBucketSize) {\n droppedSpanCount += bucket.spans.size;\n this._finishedSpanBuckets[i] = undefined;\n }\n });\n if (droppedSpanCount > 0) {\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter dropped ${droppedSpanCount} spans because they were pending for more than ${this._finishedSpanBucketSize} seconds.`,\n );\n }\n this._lastCleanupTimestampInS = currentTimestampInS;\n }\n\n const currentBucketIndex = currentTimestampInS % this._finishedSpanBucketSize;\n const currentBucket = this._finishedSpanBuckets[currentBucketIndex] || {\n timestampInS: currentTimestampInS,\n spans: new Set(),\n };\n this._finishedSpanBuckets[currentBucketIndex] = currentBucket;\n currentBucket.spans.add(span);\n this._spansToBucketEntry.set(span, currentBucket);\n\n // If the span doesn't have a local parent ID (it's a root span), we're gonna flush all the ended spans\n const localParentId = getLocalParentId(span);\n if (!localParentId || this._sentSpans.has(localParentId)) {\n this._debouncedFlush();\n }\n }\n\n /**\n * Try to flush any pending spans immediately.\n * This is called internally by the exporter (via _debouncedFlush),\n * but can also be triggered externally if we force-flush.\n */\n flush() {\n const finishedSpans = this._finishedSpanBuckets.flatMap(bucket => (bucket ? Array.from(bucket.spans) : []));\n\n this._flushSentSpanCache();\n const sentSpans = this._maybeSend(finishedSpans);\n\n const sentSpanCount = sentSpans.size;\n const remainingOpenSpanCount = finishedSpans.length - sentSpanCount;\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter exported ${sentSpanCount} spans, ${remainingOpenSpanCount} spans are waiting for their parent spans to finish`,\n );\n\n const expirationDate = _INTERNAL_safeDateNow() + DEFAULT_TIMEOUT * 1000;\n\n for (const span of sentSpans) {\n this._sentSpans.set(span.spanContext().spanId, expirationDate);\n const bucketEntry = this._spansToBucketEntry.get(span);\n if (bucketEntry) {\n bucketEntry.spans.delete(span);\n }\n }\n // Cancel a pending debounced flush, if there is one\n // This can be relevant if we directly flush, circumventing the debounce\n // in that case, we want to cancel any pending debounced flush\n this._debouncedFlush.cancel();\n }\n\n /**\n * Clear the exporter.\n * This is called when the span processor is shut down.\n */\n clear() {\n this._finishedSpanBuckets = this._finishedSpanBuckets.fill(undefined);\n this._sentSpans.clear();\n this._debouncedFlush.cancel();\n }\n\n /**\n * Send the given spans, but only if they are part of a finished transaction.\n *\n * Returns the sent spans.\n * Spans remain unsent when their parent span is not yet finished.\n * This will happen regularly, as child spans are generally finished before their parents.\n * But it _could_ also happen because, for whatever reason, a parent span was lost.\n * In this case, we'll eventually need to clean this up.\n */\n _maybeSend(spans) {\n const grouped = groupSpansWithParents(spans);\n const sentSpans = new Set();\n\n const rootNodes = this._getCompletedRootNodes(grouped);\n\n for (const root of rootNodes) {\n const span = root.span;\n sentSpans.add(span);\n const transactionEvent = createTransactionForOtelSpan(span);\n\n // Add an attribute to the transaction event to indicate that this transaction is an orphaned transaction\n if (root.parentNode && this._sentSpans.has(root.parentNode.id)) {\n const traceData = transactionEvent.contexts?.trace?.data;\n if (traceData) {\n traceData['sentry.parent_span_already_sent'] = true;\n }\n }\n\n // We'll recursively add all the child spans to this array\n const spans = transactionEvent.spans || [];\n\n for (const child of root.children) {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n }\n\n // spans.sort() mutates the array, but we do not use this anymore after this point\n // so we can safely mutate it here\n transactionEvent.spans =\n spans.length > MAX_SPAN_COUNT\n ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n : spans;\n\n const measurements = timedEventsToMeasurements(span.events);\n if (measurements) {\n transactionEvent.measurements = measurements;\n }\n\n captureEvent(transactionEvent);\n }\n\n return sentSpans;\n }\n\n /** Remove \"expired\" span id entries from the _sentSpans cache. */\n _flushSentSpanCache() {\n const currentTimestamp = _INTERNAL_safeDateNow();\n // Note, it is safe to delete items from the map as we go: https://stackoverflow.com/a/35943995/90297\n for (const [spanId, expirationTime] of this._sentSpans.entries()) {\n if (expirationTime <= currentTimestamp) {\n this._sentSpans.delete(spanId);\n }\n }\n }\n\n /** Check if a node is a completed root node or a node whose parent has already been sent */\n _nodeIsCompletedRootNodeOrHasSentParent(node) {\n return !!node.span && (!node.parentNode || this._sentSpans.has(node.parentNode.id));\n }\n\n /** Get all completed root nodes from a list of nodes */\n _getCompletedRootNodes(nodes) {\n // TODO: We should be able to remove the explicit `node is SpanNodeCompleted` type guard\n // once we stop supporting TS < 5.5\n return nodes.filter((node) => this._nodeIsCompletedRootNodeOrHasSentParent(node));\n }\n}\n\nfunction parseSpan(span) {\n const attributes = span.attributes;\n\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ;\n const op = attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] ;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ;\n\n return { origin, op, source };\n}\n\n/** Exported only for tests. */\nfunction createTransactionForOtelSpan(span) {\n const { op, description, data, origin = 'manual', source } = getSpanData(span);\n const capturedSpanScopes = getCapturedScopesOnSpan(span );\n\n const sampleRate = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ;\n\n const attributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: sampleRate,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n ...data,\n ...removeSentryAttributes(span.attributes),\n };\n\n const { links } = span;\n const { traceId: trace_id, spanId: span_id } = span.spanContext();\n\n // If parentSpanIdFromTraceState is defined at all, we want it to take precedence\n // In that case, an empty string should be interpreted as \"no parent span id\",\n // even if `span.parentSpanId` is set\n // this is the case when we are starting a new trace, where we have a virtual span based on the propagationContext\n // We only want to continue the traceId in this case, but ignore the parent span\n const parent_span_id = getParentSpanId(span);\n\n const status = mapStatus(span);\n\n const traceContext = {\n parent_span_id,\n span_id,\n trace_id,\n data: attributes,\n origin,\n op,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n links: convertSpanLinksForEnvelope(links),\n };\n\n const statusCode = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n const responseContext = typeof statusCode === 'number' ? { response: { status_code: statusCode } } : undefined;\n\n const transactionEvent = {\n contexts: {\n trace: traceContext,\n otel: {\n resource: span.resource.attributes,\n },\n ...responseContext,\n },\n spans: [],\n start_timestamp: spanTimeInputToSeconds(span.startTime),\n timestamp: spanTimeInputToSeconds(span.endTime),\n transaction: description,\n type: 'transaction',\n sdkProcessingMetadata: {\n capturedSpanScope: capturedSpanScopes.scope,\n capturedSpanIsolationScope: capturedSpanScopes.isolationScope,\n sampleRate,\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span ),\n },\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n return transactionEvent;\n}\n\nfunction createAndFinishSpanForOtelSpan(node, spans, sentSpans) {\n const span = node.span;\n\n if (span) {\n sentSpans.add(span);\n }\n\n const shouldDrop = !span;\n\n // If this span should be dropped, we still want to create spans for the children of this\n if (shouldDrop) {\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n return;\n }\n\n const span_id = span.spanContext().spanId;\n const trace_id = span.spanContext().traceId;\n const parentSpanId = getParentSpanId(span);\n\n const { attributes, startTime, endTime, links } = span;\n\n const { op, description, data, origin = 'manual' } = getSpanData(span);\n const allData = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...removeSentryAttributes(attributes),\n ...data,\n };\n\n const status = mapStatus(span);\n\n const spanJSON = {\n span_id,\n trace_id,\n data: allData,\n description,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n op,\n origin,\n measurements: timedEventsToMeasurements(span.events),\n links: convertSpanLinksForEnvelope(links),\n };\n\n spans.push(spanJSON);\n\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n}\n\nfunction getSpanData(span)\n\n {\n const { op: definedOp, source: definedSource, origin } = parseSpan(span);\n const { op: inferredOp, description, source: inferredSource, data: inferredData } = parseSpanDescription(span);\n\n const op = definedOp || inferredOp;\n const source = definedSource || inferredSource;\n\n const data = { ...inferredData, ...getData(span) };\n\n return {\n op,\n description,\n source,\n origin,\n data,\n };\n}\n\n/**\n * Remove custom `sentry.` attributes we do not need to send.\n * These are more carrier attributes we use inside of the SDK, we do not need to send them to the API.\n */\nfunction removeSentryAttributes(data) {\n const cleanedData = { ...data };\n\n /* eslint-disable @typescript-eslint/no-dynamic-delete */\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n /* eslint-enable @typescript-eslint/no-dynamic-delete */\n\n return cleanedData;\n}\n\nfunction getData(span) {\n const attributes = span.attributes;\n const data = {};\n\n if (span.kind !== SpanKind.INTERNAL) {\n data['otel.kind'] = SpanKind[span.kind];\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeHttpStatusCodeAttribute = attributes[SEMATTRS_HTTP_STATUS_CODE];\n if (maybeHttpStatusCodeAttribute) {\n data[ATTR_HTTP_RESPONSE_STATUS_CODE] = maybeHttpStatusCodeAttribute ;\n }\n\n const requestData = getRequestSpanData(span);\n\n if (requestData.url) {\n data.url = requestData.url;\n }\n\n if (requestData['http.query']) {\n data['http.query'] = requestData['http.query'].slice(1);\n }\n if (requestData['http.fragment']) {\n data['http.fragment'] = requestData['http.fragment'].slice(1);\n }\n\n return data;\n}\n\nfunction onSpanStart(span, parentContext) {\n // This is a reliable way to get the parent span - because this is exactly how the parent is identified in the OTEL SDK\n const parentSpan = trace.getSpan(parentContext);\n\n let scopes = getScopesFromContext(parentContext);\n\n // We need access to the parent span in order to be able to move up the span tree for breadcrumbs\n if (parentSpan && !parentSpan.spanContext().isRemote) {\n addChildSpanToSpan(parentSpan, span);\n }\n\n // We need this in the span exporter\n if (parentSpan?.spanContext().isRemote) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE, true);\n }\n\n // The root context does not have scopes stored, so we check for this specifically\n // As fallback we attach the global scopes\n if (parentContext === ROOT_CONTEXT) {\n scopes = {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n // We need the scope at time of span creation in order to apply it to the event when the span is finished\n if (scopes) {\n setCapturedScopesOnSpan(span, scopes.scope, scopes.isolationScope);\n }\n\n logSpanStart(span);\n\n const client = getClient();\n client?.emit('spanStart', span);\n}\n\nfunction onSpanEnd(span) {\n logSpanEnd(span);\n\n const client = getClient();\n client?.emit('spanEnd', span);\n}\n\n/**\n * Converts OpenTelemetry Spans to Sentry Spans and sends them to Sentry via\n * the Sentry SDK.\n */\nclass SentrySpanProcessor {\n\n constructor(options) {\n setIsSetup('SentrySpanProcessor');\n this._exporter = new SentrySpanExporter(options);\n }\n\n /**\n * @inheritDoc\n */\n async forceFlush() {\n this._exporter.flush();\n }\n\n /**\n * @inheritDoc\n */\n async shutdown() {\n this._exporter.clear();\n }\n\n /**\n * @inheritDoc\n */\n onStart(span, parentContext) {\n onSpanStart(span, parentContext);\n }\n\n /** @inheritDoc */\n onEnd(span) {\n onSpanEnd(span);\n\n this._exporter.export(span);\n }\n}\n\n/**\n * A custom OTEL sampler that uses Sentry sampling rates to make its decision\n */\nclass SentrySampler {\n\n constructor(client) {\n this._client = client;\n setIsSetup('SentrySampler');\n }\n\n /** @inheritDoc */\n shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n spanAttributes,\n _links,\n ) {\n const options = this._client.getOptions();\n\n const parentSpan = getValidSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n if (!hasSpansEnabled(options)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n // `ATTR_HTTP_REQUEST_METHOD` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_METHOD`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const maybeSpanHttpMethod = spanAttributes[SEMATTRS_HTTP_METHOD] || spanAttributes[ATTR_HTTP_REQUEST_METHOD];\n\n // If we have a http.client span that has no local parent, we never want to sample it\n // but we want to leave downstream sampling decisions up to the server\n if (spanKind === SpanKind.CLIENT && maybeSpanHttpMethod && (!parentSpan || parentContext?.isRemote)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const parentSampled = parentSpan ? getParentSampled(parentSpan, traceId, spanName) : undefined;\n const isRootSpan = !parentSpan || parentContext?.isRemote;\n\n // We only sample based on parameters (like tracesSampleRate or tracesSampler) for root spans (which is done in sampleSpan).\n // Non-root-spans simply inherit the sampling decision from their parent.\n if (!isRootSpan) {\n return wrapSamplingDecision({\n decision: parentSampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n });\n }\n\n // We want to pass the inferred name & attributes to the sampler method\n const {\n description: inferredSpanName,\n data: inferredAttributes,\n op,\n } = inferSpanData(spanName, spanAttributes, spanKind);\n\n const mergedAttributes = {\n ...inferredAttributes,\n ...spanAttributes,\n };\n\n if (op) {\n mergedAttributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] = op;\n }\n\n const mutableSamplingDecision = { decision: true };\n this._client.emit(\n 'beforeSampling',\n {\n spanAttributes: mergedAttributes,\n spanName: inferredSpanName,\n parentSampled: parentSampled,\n parentContext: parentContext,\n },\n mutableSamplingDecision,\n );\n if (!mutableSamplingDecision.decision) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const { isolationScope } = getScopesFromContext(context) ?? {};\n\n const dscString = parentContext?.traceState ? parentContext.traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n const sampleRand = parseSampleRate(dsc?.sample_rand) ?? _INTERNAL_safeMathRandom();\n\n const [sampled, sampleRate, localSampleRateWasApplied] = sampleSpan(\n options,\n {\n name: inferredSpanName,\n attributes: mergedAttributes,\n normalizedRequest: isolationScope?.getScopeData().sdkProcessingMetadata.normalizedRequest,\n parentSampled,\n parentSampleRate: parseSampleRate(dsc?.sample_rate),\n },\n sampleRand,\n );\n\n const method = `${maybeSpanHttpMethod}`.toUpperCase();\n if (method === 'OPTIONS' || method === 'HEAD') {\n DEBUG_BUILD && debug.log(`[Tracing] Not sampling span because HTTP method is '${method}' for ${spanName}`);\n\n return wrapSamplingDecision({\n decision: SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: 0, // we don't want to sample anything in the downstream trace either\n });\n }\n\n if (\n !sampled &&\n // We check for `parentSampled === undefined` because we only want to record client reports for spans that are trace roots (ie. when there was incoming trace)\n parentSampled === undefined\n ) {\n DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n this._client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return {\n ...wrapSamplingDecision({\n decision: sampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: localSampleRateWasApplied ? sampleRate : undefined,\n }),\n attributes: {\n // We set the sample rate on the span when a local sample rate was applied to better understand how traces were sampled in Sentry\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: localSampleRateWasApplied ? sampleRate : undefined,\n },\n };\n }\n\n /** Returns the sampler name or short description with the configuration. */\n toString() {\n return 'SentrySampler';\n }\n}\n\nfunction getParentSampled(parentSpan, traceId, spanName) {\n const parentContext = parentSpan.spanContext();\n\n // Only inherit sample rate if `traceId` is the same\n // Note for testing: `isSpanContextValid()` checks the format of the traceId/spanId, so we need to pass valid ones\n if (isSpanContextValid(parentContext) && parentContext.traceId === traceId) {\n if (parentContext.isRemote) {\n const parentSampled = getSamplingDecision(parentSpan.spanContext());\n DEBUG_BUILD &&\n debug.log(`[Tracing] Inheriting remote parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n const parentSampled = getSamplingDecision(parentContext);\n DEBUG_BUILD && debug.log(`[Tracing] Inheriting parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n return undefined;\n}\n\n/**\n * Wrap a sampling decision with data that Sentry needs to work properly with it.\n * If you pass `decision: undefined`, it will be treated as `NOT_RECORDING`, but in contrast to passing `NOT_RECORDING`\n * it will not propagate this decision to downstream Sentry SDKs.\n */\nfunction wrapSamplingDecision({\n decision,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate,\n}\n\n) {\n let traceState = getBaseTraceState(context, spanAttributes);\n\n // We will override the propagated sample rate downstream when\n // - the tracesSampleRate is applied\n // - the tracesSampler is invoked\n // Since unsampled OTEL spans (NonRecordingSpans) cannot hold attributes we need to store this on the (trace)context.\n if (downstreamTraceSampleRate !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RATE, `${downstreamTraceSampleRate}`);\n }\n\n if (sampleRand !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RAND, `${sampleRand}`);\n }\n\n // If the decision is undefined, we treat it as NOT_RECORDING, but we don't propagate this decision to downstream SDKs\n // Which is done by not setting `SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING` traceState\n if (decision == undefined) {\n return { decision: SamplingDecision.NOT_RECORD, traceState };\n }\n\n if (decision === SamplingDecision.NOT_RECORD) {\n return { decision, traceState: traceState.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') };\n }\n\n return { decision, traceState };\n}\n\nfunction getBaseTraceState(context, spanAttributes) {\n const parentSpan = trace.getSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n let traceState = parentContext?.traceState || new TraceState();\n\n // We always keep the URL on the trace state, so we can access it in the propagator\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const url = spanAttributes[SEMATTRS_HTTP_URL] || spanAttributes[ATTR_URL_FULL];\n if (url && typeof url === 'string') {\n traceState = traceState.set(SENTRY_TRACE_STATE_URL, url);\n }\n\n return traceState;\n}\n\n/**\n * If the active span is invalid, we want to ignore it as parent.\n * This aligns with how otel tracers and default samplers handle these cases.\n */\nfunction getValidSpan(context) {\n const span = trace.getSpan(context);\n return span && isSpanContextValid(span.spanContext()) ? span : undefined;\n}\n\nexport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, SentryPropagator, SentrySampler, SentrySpanProcessor, continueTrace, enhanceDscWithOpenTelemetryRootSpanName, getActiveSpan, getRequestSpanData, getScopesFromContext, getSpanKind, getTraceContextForScope, isSentryRequestSpan, openTelemetrySetupCheck, setOpenTelemetryContextAsyncContextStrategy, setupEventContextTrace, spanHasAttributes, spanHasEvents, spanHasKind, spanHasName, spanHasParentId, spanHasStatus, startInactiveSpan, startSpan, startSpanManual, suppressTracing, withActiveSpan, wrapClientClass, wrapContextManagerClass, wrapSamplingDecision };\n//# sourceMappingURL=index.js.map\n", + "import { diag, DiagLogLevel } from '@opentelemetry/api';\nimport { debug } from '@sentry/core';\n\n/**\n * Setup the OTEL logger to use our own debug logger.\n */\nfunction setupOpenTelemetryLogger() {\n // Disable diag, to ensure this works even if called multiple times\n diag.disable();\n diag.setLogger(\n {\n error: debug.error,\n warn: debug.warn,\n info: debug.log,\n debug: debug.log,\n verbose: debug.log,\n },\n DiagLogLevel.DEBUG,\n );\n}\n\nexport { setupOpenTelemetryLogger };\n//# sourceMappingURL=logger.js.map\n", + "import { registerInstrumentations } from '@opentelemetry/instrumentation';\n\n/** Exported only for tests. */\nconst INSTRUMENTED = {};\n\n/**\n * Instrument an OpenTelemetry instrumentation once.\n * This will skip running instrumentation again if it was already instrumented.\n */\nfunction generateInstrumentOnce(\n name,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n creatorOrClass,\n optionsCallback,\n) {\n if (optionsCallback) {\n return _generateInstrumentOnceWithOptions(\n name,\n creatorOrClass ,\n optionsCallback,\n );\n }\n\n return _generateInstrumentOnce(name, creatorOrClass );\n}\n\n// The plain version without handling of options\n// Should not be used with custom options that are mutated in the creator!\nfunction _generateInstrumentOnce(\n name,\n creator,\n) {\n return Object.assign(\n (options) => {\n const instrumented = INSTRUMENTED[name] ;\n if (instrumented) {\n // If options are provided, ensure we update them\n if (options) {\n instrumented.setConfig(options);\n }\n return instrumented;\n }\n\n const instrumentation = creator(options);\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n// This version handles options properly\nfunction _generateInstrumentOnceWithOptions\n\n(\n name,\n instrumentationClass,\n optionsCallback,\n) {\n return Object.assign(\n (_options) => {\n const options = optionsCallback(_options);\n\n const instrumented = INSTRUMENTED[name] ;\n if (instrumented) {\n // Ensure we update options\n instrumented.setConfig(options);\n return instrumented;\n }\n\n const instrumentation = new instrumentationClass(options) ;\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n/**\n * Ensure a given callback is called when the instrumentation is actually wrapping something.\n * This can be used to ensure some logic is only called when the instrumentation is actually active.\n *\n * This function returns a function that can be invoked with a callback.\n * This callback will either be invoked immediately\n * (e.g. if the instrumentation was already wrapped, or if _wrap could not be patched),\n * or once the instrumentation is actually wrapping something.\n *\n * Make sure to call this function right after adding the instrumentation, otherwise it may be too late!\n * The returned callback can be used any time, and also multiple times.\n */\nfunction instrumentWhenWrapped(instrumentation) {\n let isWrapped = false;\n let callbacks = [];\n\n if (!hasWrap(instrumentation)) {\n isWrapped = true;\n } else {\n const originalWrap = instrumentation['_wrap'];\n\n instrumentation['_wrap'] = (...args) => {\n isWrapped = true;\n callbacks.forEach(callback => callback());\n callbacks = [];\n return originalWrap(...args);\n };\n }\n\n const registerCallback = (callback) => {\n if (isWrapped) {\n callback();\n } else {\n callbacks.push(callback);\n }\n };\n\n return registerCallback;\n}\n\nfunction hasWrap(\n instrumentation,\n) {\n return typeof (instrumentation )['_wrap'] === 'function';\n}\n\nexport { INSTRUMENTED, generateInstrumentOnce, instrumentWhenWrapped };\n//# sourceMappingURL=instrument.js.map\n", + "import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport { defineIntegration, addBreadcrumb, captureException } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'ChildProcess';\n\n/**\n * Capture breadcrumbs and events for child processes and worker threads.\n */\nconst childProcessIntegration = defineIntegration((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setup() {\n diagnosticsChannel.channel('child_process').subscribe((event) => {\n if (event && typeof event === 'object' && 'process' in event) {\n captureChildProcessEvents(event.process , options);\n }\n });\n\n diagnosticsChannel.channel('worker_threads').subscribe((event) => {\n if (event && typeof event === 'object' && 'worker' in event) {\n captureWorkerThreadEvents(event.worker , options);\n }\n });\n },\n };\n});\n\nfunction captureChildProcessEvents(child, options) {\n let hasExited = false;\n let data;\n\n child\n .on('spawn', () => {\n // This is Sentry getting macOS OS context\n if (child.spawnfile === '/usr/bin/sw_vers') {\n hasExited = true;\n return;\n }\n\n data = { spawnfile: child.spawnfile };\n if (options.includeChildProcessArgs) {\n data.spawnargs = child.spawnargs;\n }\n })\n .on('exit', code => {\n if (!hasExited) {\n hasExited = true;\n\n // Only log for non-zero exit codes\n if (code !== null && code !== 0) {\n addBreadcrumb({\n category: 'child_process',\n message: `Child process exited with code '${code}'`,\n level: code === 0 ? 'info' : 'warning',\n data,\n });\n }\n }\n })\n .on('error', error => {\n if (!hasExited) {\n hasExited = true;\n\n addBreadcrumb({\n category: 'child_process',\n message: `Child process errored with '${error.message}'`,\n level: 'error',\n data,\n });\n }\n });\n}\n\nfunction captureWorkerThreadEvents(worker, options) {\n let threadId;\n\n worker\n .on('online', () => {\n threadId = worker.threadId;\n })\n .on('error', error => {\n if (options.captureWorkerErrors !== false) {\n captureException(error, {\n mechanism: { type: 'auto.child_process.worker_thread', handled: false, data: { threadId: String(threadId) } },\n });\n } else {\n addBreadcrumb({\n category: 'worker_thread',\n message: `Worker thread errored with '${error.message}'`,\n level: 'error',\n data: { threadId },\n });\n }\n });\n}\n\nexport { childProcessIntegration };\n//# sourceMappingURL=childProcess.js.map\n", + "import { execFile } from 'node:child_process';\nimport { readFile, readdir } from 'node:fs';\nimport * as os from 'node:os';\nimport { join } from 'node:path';\nimport { promisify } from 'node:util';\nimport { defineIntegration } from '@sentry/core';\n\n/* eslint-disable max-lines */\n\n\nconst readFileAsync = promisify(readFile);\nconst readDirAsync = promisify(readdir);\n\n// Process enhanced with methods from Node 18, 20, 22 as @types/node\n// is on `14.18.0` to match minimum version requirements of the SDK\n\nconst INTEGRATION_NAME = 'Context';\n\nconst _nodeContextIntegration = ((options = {}) => {\n let cachedContext;\n\n const _options = {\n app: true,\n os: true,\n device: true,\n culture: true,\n cloudResource: true,\n ...options,\n };\n\n /** Add contexts to the event. Caches the context so we only look it up once. */\n async function addContext(event) {\n if (cachedContext === undefined) {\n cachedContext = _getContexts();\n }\n\n const updatedContext = _updateContext(await cachedContext);\n\n // TODO(v11): conditional with `sendDefaultPii` here?\n event.contexts = {\n ...event.contexts,\n app: { ...updatedContext.app, ...event.contexts?.app },\n os: { ...updatedContext.os, ...event.contexts?.os },\n device: { ...updatedContext.device, ...event.contexts?.device },\n culture: { ...updatedContext.culture, ...event.contexts?.culture },\n cloud_resource: { ...updatedContext.cloud_resource, ...event.contexts?.cloud_resource },\n };\n\n return event;\n }\n\n /** Get the contexts from node. */\n async function _getContexts() {\n const contexts = {};\n\n if (_options.os) {\n contexts.os = await getOsContext();\n }\n\n if (_options.app) {\n contexts.app = getAppContext();\n }\n\n if (_options.device) {\n contexts.device = getDeviceContext(_options.device);\n }\n\n if (_options.culture) {\n const culture = getCultureContext();\n\n if (culture) {\n contexts.culture = culture;\n }\n }\n\n if (_options.cloudResource) {\n contexts.cloud_resource = getCloudResourceContext();\n }\n\n return contexts;\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addContext(event);\n },\n };\n}) ;\n\n/**\n * Capture context about the environment and the device that the client is running on, to events.\n */\nconst nodeContextIntegration = defineIntegration(_nodeContextIntegration);\n\n/**\n * Updates the context with dynamic values that can change\n */\nfunction _updateContext(contexts) {\n // Only update properties if they exist\n\n if (contexts.app?.app_memory) {\n contexts.app.app_memory = process.memoryUsage().rss;\n }\n\n if (contexts.app?.free_memory && typeof (process ).availableMemory === 'function') {\n const freeMemory = (process ).availableMemory?.();\n if (freeMemory != null) {\n contexts.app.free_memory = freeMemory;\n }\n }\n\n if (contexts.device?.free_memory) {\n contexts.device.free_memory = os.freemem();\n }\n\n return contexts;\n}\n\n/**\n * Returns the operating system context.\n *\n * Based on the current platform, this uses a different strategy to provide the\n * most accurate OS information. Since this might involve spawning subprocesses\n * or accessing the file system, this should only be executed lazily and cached.\n *\n * - On macOS (Darwin), this will execute the `sw_vers` utility. The context\n * has a `name`, `version`, `build` and `kernel_version` set.\n * - On Linux, this will try to load a distribution release from `/etc` and set\n * the `name`, `version` and `kernel_version` fields.\n * - On all other platforms, only a `name` and `version` will be returned. Note\n * that `version` might actually be the kernel version.\n */\nasync function getOsContext() {\n const platformId = os.platform();\n switch (platformId) {\n case 'darwin':\n return getDarwinInfo();\n case 'linux':\n return getLinuxInfo();\n default:\n return {\n name: PLATFORM_NAMES[platformId] || platformId,\n version: os.release(),\n };\n }\n}\n\nfunction getCultureContext() {\n try {\n if (typeof process.versions.icu !== 'string') {\n // Node was built without ICU support\n return;\n }\n\n // Check that node was built with full Intl support. Its possible it was built without support for non-English\n // locales which will make resolvedOptions inaccurate\n //\n // https://nodejs.org/api/intl.html#detecting-internationalization-support\n const january = new Date(9e8);\n const spanish = new Intl.DateTimeFormat('es', { month: 'long' });\n if (spanish.format(january) === 'enero') {\n const options = Intl.DateTimeFormat().resolvedOptions();\n\n return {\n locale: options.locale,\n timezone: options.timeZone,\n };\n }\n } catch {\n //\n }\n\n return;\n}\n\n/**\n * Get app context information from process\n */\nfunction getAppContext() {\n const app_memory = process.memoryUsage().rss;\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n const app_start_time = new Date(Date.now() - process.uptime() * 1000).toISOString();\n // https://nodejs.org/api/process.html#processavailablememory\n const appContext = { app_start_time, app_memory };\n\n if (typeof (process ).availableMemory === 'function') {\n const freeMemory = (process ).availableMemory?.();\n if (freeMemory != null) {\n appContext.free_memory = freeMemory;\n }\n }\n\n return appContext;\n}\n\n/**\n * Gets device information from os\n */\nfunction getDeviceContext(deviceOpt) {\n const device = {};\n\n // Sometimes os.uptime() throws due to lacking permissions: https://github.com/getsentry/sentry-javascript/issues/8202\n let uptime;\n try {\n uptime = os.uptime();\n } catch {\n // noop\n }\n\n // os.uptime or its return value seem to be undefined in certain environments (e.g. Azure functions).\n // Hence, we only set boot time, if we get a valid uptime value.\n // @see https://github.com/getsentry/sentry-javascript/issues/5856\n if (typeof uptime === 'number') {\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n device.boot_time = new Date(Date.now() - uptime * 1000).toISOString();\n }\n\n device.arch = os.arch();\n\n if (deviceOpt === true || deviceOpt.memory) {\n device.memory_size = os.totalmem();\n device.free_memory = os.freemem();\n }\n\n if (deviceOpt === true || deviceOpt.cpu) {\n const cpuInfo = os.cpus() ;\n const firstCpu = cpuInfo?.[0];\n if (firstCpu) {\n device.processor_count = cpuInfo.length;\n device.cpu_description = firstCpu.model;\n device.processor_frequency = firstCpu.speed;\n }\n }\n\n return device;\n}\n\n/** Mapping of Node's platform names to actual OS names. */\nconst PLATFORM_NAMES = {\n aix: 'IBM AIX',\n freebsd: 'FreeBSD',\n openbsd: 'OpenBSD',\n sunos: 'SunOS',\n win32: 'Windows',\n ohos: 'OpenHarmony',\n android: 'Android',\n};\n\n/** Linux version file to check for a distribution. */\n\n/** Mapping of linux release files located in /etc to distributions. */\nconst LINUX_DISTROS = [\n { name: 'fedora-release', distros: ['Fedora'] },\n { name: 'redhat-release', distros: ['Red Hat Linux', 'Centos'] },\n { name: 'redhat_version', distros: ['Red Hat Linux'] },\n { name: 'SuSE-release', distros: ['SUSE Linux'] },\n { name: 'lsb-release', distros: ['Ubuntu Linux', 'Arch Linux'] },\n { name: 'debian_version', distros: ['Debian'] },\n { name: 'debian_release', distros: ['Debian'] },\n { name: 'arch-release', distros: ['Arch Linux'] },\n { name: 'gentoo-release', distros: ['Gentoo Linux'] },\n { name: 'novell-release', distros: ['SUSE Linux'] },\n { name: 'alpine-release', distros: ['Alpine Linux'] },\n];\n\n/** Functions to extract the OS version from Linux release files. */\nconst LINUX_VERSIONS\n\n = {\n alpine: content => content,\n arch: content => matchFirst(/distrib_release=(.*)/, content),\n centos: content => matchFirst(/release ([^ ]+)/, content),\n debian: content => content,\n fedora: content => matchFirst(/release (..)/, content),\n mint: content => matchFirst(/distrib_release=(.*)/, content),\n red: content => matchFirst(/release ([^ ]+)/, content),\n suse: content => matchFirst(/VERSION = (.*)\\n/, content),\n ubuntu: content => matchFirst(/distrib_release=(.*)/, content),\n};\n\n/**\n * Executes a regular expression with one capture group.\n *\n * @param regex A regular expression to execute.\n * @param text Content to execute the RegEx on.\n * @returns The captured string if matched; otherwise undefined.\n */\nfunction matchFirst(regex, text) {\n const match = regex.exec(text);\n return match ? match[1] : undefined;\n}\n\n/** Loads the macOS operating system context. */\nasync function getDarwinInfo() {\n // Default values that will be used in case no operating system information\n // can be loaded. The default version is computed via heuristics from the\n // kernel version, but the build ID is missing.\n const darwinInfo = {\n kernel_version: os.release(),\n name: 'Mac OS X',\n version: `10.${Number(os.release().split('.')[0]) - 4}`,\n };\n\n try {\n // We try to load the actual macOS version by executing the `sw_vers` tool.\n // This tool should be available on every standard macOS installation. In\n // case this fails, we stick with the values computed above.\n\n const output = await new Promise((resolve, reject) => {\n execFile('/usr/bin/sw_vers', (error, stdout) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(stdout);\n });\n });\n\n darwinInfo.name = matchFirst(/^ProductName:\\s+(.*)$/m, output);\n darwinInfo.version = matchFirst(/^ProductVersion:\\s+(.*)$/m, output);\n darwinInfo.build = matchFirst(/^BuildVersion:\\s+(.*)$/m, output);\n } catch {\n // ignore\n }\n\n return darwinInfo;\n}\n\n/** Returns a distribution identifier to look up version callbacks. */\nfunction getLinuxDistroId(name) {\n return (name.split(' ') )[0].toLowerCase();\n}\n\n/** Loads the Linux operating system context. */\nasync function getLinuxInfo() {\n // By default, we cannot assume anything about the distribution or Linux\n // version. `os.release()` returns the kernel version and we assume a generic\n // \"Linux\" name, which will be replaced down below.\n const linuxInfo = {\n kernel_version: os.release(),\n name: 'Linux',\n };\n\n try {\n // We start guessing the distribution by listing files in the /etc\n // directory. This is were most Linux distributions (except Knoppix) store\n // release files with certain distribution-dependent meta data. We search\n // for exactly one known file defined in `LINUX_DISTROS` and exit if none\n // are found. In case there are more than one file, we just stick with the\n // first one.\n const etcFiles = await readDirAsync('/etc');\n const distroFile = LINUX_DISTROS.find(file => etcFiles.includes(file.name));\n if (!distroFile) {\n return linuxInfo;\n }\n\n // Once that file is known, load its contents. To make searching in those\n // files easier, we lowercase the file contents. Since these files are\n // usually quite small, this should not allocate too much memory and we only\n // hold on to it for a very short amount of time.\n const distroPath = join('/etc', distroFile.name);\n const contents = (await readFileAsync(distroPath, { encoding: 'utf-8' })).toLowerCase();\n\n // Some Linux distributions store their release information in the same file\n // (e.g. RHEL and Centos). In those cases, we scan the file for an\n // identifier, that basically consists of the first word of the linux\n // distribution name (e.g. \"red\" for Red Hat). In case there is no match, we\n // just assume the first distribution in our list.\n const { distros } = distroFile;\n linuxInfo.name = distros.find(d => contents.indexOf(getLinuxDistroId(d)) >= 0) || distros[0];\n\n // Based on the found distribution, we can now compute the actual version\n // number. This is different for every distribution, so several strategies\n // are computed in `LINUX_VERSIONS`.\n const id = getLinuxDistroId(linuxInfo.name);\n linuxInfo.version = LINUX_VERSIONS[id]?.(contents);\n } catch {\n // ignore\n }\n\n return linuxInfo;\n}\n\n/**\n * Grabs some information about hosting provider based on best effort.\n */\nfunction getCloudResourceContext() {\n if (process.env.VERCEL) {\n // https://vercel.com/docs/concepts/projects/environment-variables/system-environment-variables#system-environment-variables\n return {\n 'cloud.provider': 'vercel',\n 'cloud.region': process.env.VERCEL_REGION,\n };\n } else if (process.env.AWS_REGION) {\n // https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html\n return {\n 'cloud.provider': 'aws',\n 'cloud.region': process.env.AWS_REGION,\n 'cloud.platform': process.env.AWS_EXECUTION_ENV,\n };\n } else if (process.env.GCP_PROJECT) {\n // https://cloud.google.com/composer/docs/how-to/managing/environment-variables#reserved_variables\n return {\n 'cloud.provider': 'gcp',\n };\n } else if (process.env.ALIYUN_REGION_ID) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'alibaba_cloud',\n 'cloud.region': process.env.ALIYUN_REGION_ID,\n };\n } else if (process.env.WEBSITE_SITE_NAME && process.env.REGION_NAME) {\n // https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet#app-environment\n return {\n 'cloud.provider': 'azure',\n 'cloud.region': process.env.REGION_NAME,\n };\n } else if (process.env.IBM_CLOUD_REGION) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'ibm_cloud',\n 'cloud.region': process.env.IBM_CLOUD_REGION,\n };\n } else if (process.env.TENCENTCLOUD_REGION) {\n // https://www.tencentcloud.com/document/product/583/32748\n return {\n 'cloud.provider': 'tencent_cloud',\n 'cloud.region': process.env.TENCENTCLOUD_REGION,\n 'cloud.account.id': process.env.TENCENTCLOUD_APPID,\n 'cloud.availability_zone': process.env.TENCENTCLOUD_ZONE,\n };\n } else if (process.env.NETLIFY) {\n // https://docs.netlify.com/configure-builds/environment-variables/#read-only-variables\n return {\n 'cloud.provider': 'netlify',\n };\n } else if (process.env.FLY_REGION) {\n // https://fly.io/docs/reference/runtime-environment/\n return {\n 'cloud.provider': 'fly.io',\n 'cloud.region': process.env.FLY_REGION,\n };\n } else if (process.env.DYNO) {\n // https://devcenter.heroku.com/articles/dynos#local-environment-variables\n return {\n 'cloud.provider': 'heroku',\n };\n } else {\n return undefined;\n }\n}\n\nexport { getAppContext, getDeviceContext, nodeContextIntegration, readDirAsync, readFileAsync };\n//# sourceMappingURL=context.js.map\n", + "import { createReadStream } from 'node:fs';\nimport { createInterface } from 'node:readline';\nimport { LRUMap, defineIntegration, debug, snipLine } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst LRU_FILE_CONTENTS_CACHE = new LRUMap(10);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new LRUMap(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst INTEGRATION_NAME = 'ContextLines';\n// Determines the upper bound of lineno/colno that we will attempt to read. Large colno values are likely to be\n// minified code while large lineno values are likely to be bundled code.\n// Exported for testing purposes.\nconst MAX_CONTEXTLINES_COLNO = 1000;\nconst MAX_CONTEXTLINES_LINENO = 10000;\n\n/**\n * Get or init map value\n */\nfunction emplace(map, key, contents) {\n const value = map.get(key);\n\n if (value === undefined) {\n map.set(key, contents);\n return contents;\n }\n\n return value;\n}\n\n/**\n * Determines if context lines should be skipped for a file.\n * - .min.(mjs|cjs|js) files are and not useful since they dont point to the original source\n * - node: prefixed modules are part of the runtime and cannot be resolved to a file\n * - data: skip json, wasm and inline js https://nodejs.org/api/esm.html#data-imports\n */\nfunction shouldSkipContextLinesForFile(path) {\n // Test the most common prefix and extension first. These are the ones we\n // are most likely to see in user applications and are the ones we can break out of first.\n if (path.startsWith('node:')) return true;\n if (path.endsWith('.min.js')) return true;\n if (path.endsWith('.min.cjs')) return true;\n if (path.endsWith('.min.mjs')) return true;\n if (path.startsWith('data:')) return true;\n return false;\n}\n\n/**\n * Determines if we should skip contextlines based off the max lineno and colno values.\n */\nfunction shouldSkipContextLinesForFrame(frame) {\n if (frame.lineno !== undefined && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (frame.colno !== undefined && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\n/**\n * Checks if we have all the contents that we need in the cache.\n */\nfunction rangeExistsInContentCache(file, range) {\n const contents = LRU_FILE_CONTENTS_CACHE.get(file);\n if (contents === undefined) return false;\n\n for (let i = range[0]; i <= range[1]; i++) {\n if (contents[i] === undefined) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates contiguous ranges of lines to read from a file. In the case where context lines overlap,\n * the ranges are merged to create a single range.\n */\nfunction makeLineReaderRanges(lines, linecontext) {\n if (!lines.length) {\n return [];\n }\n\n let i = 0;\n const line = lines[0];\n\n if (typeof line !== 'number') {\n return [];\n }\n\n let current = makeContextRange(line, linecontext);\n const out = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n\n // If the next line falls into the current range, extend the current range to lineno + linecontext.\n const next = lines[i + 1];\n if (typeof next !== 'number') {\n break;\n }\n if (next <= current[1]) {\n current[1] = next + linecontext;\n } else {\n out.push(current);\n current = makeContextRange(next, linecontext);\n }\n\n i++;\n }\n\n return out;\n}\n\n/**\n * Extracts lines from a file and stores them in a cache.\n */\nfunction getContextLinesFromFile(path, ranges, output) {\n return new Promise((resolve, _reject) => {\n // It is important *not* to have any async code between createInterface and the 'line' event listener\n // as it will cause the 'line' event to\n // be emitted before the listener is attached.\n const stream = createReadStream(path);\n const lineReaded = createInterface({\n input: stream,\n });\n\n // We need to explicitly destroy the stream to prevent memory leaks,\n // removing the listeners on the readline interface is not enough.\n // See: https://github.com/nodejs/node/issues/9002 and https://github.com/getsentry/sentry-javascript/issues/14892\n function destroyStreamAndResolve() {\n stream.destroy();\n resolve();\n }\n\n // Init at zero and increment at the start of the loop because lines are 1 indexed.\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // We should never reach this point, but if we do, we should resolve the promise to prevent it from hanging.\n destroyStreamAndResolve();\n return;\n }\n let rangeStart = range[0];\n let rangeEnd = range[1];\n\n // We use this inside Promise.all, so we need to resolve the promise even if there is an error\n // to prevent Promise.all from short circuiting the rest.\n function onStreamError(e) {\n // Mark file path as failed to read and prevent multiple read attempts.\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);\n DEBUG_BUILD && debug.error(`Failed to read file: ${path}. Error: ${e}`);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve();\n }\n\n // We need to handle the error event to prevent the process from crashing in < Node 16\n // https://github.com/nodejs/node/pull/31603\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', destroyStreamAndResolve);\n\n lineReaded.on('line', line => {\n lineNumber++;\n if (lineNumber < rangeStart) return;\n\n // !Warning: This mutates the cache by storing the snipped line into the cache.\n output[lineNumber] = snipLine(line, 0);\n\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n // We need to close the file stream and remove listeners, else the reader will continue to run our listener;\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // This should never happen as it means we have a bug in the context.\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\n\n/**\n * Adds surrounding (context) lines of the line that an exception occurred on to the event.\n * This is done by reading the file line by line and extracting the lines. The extracted lines are stored in\n * a cache to prevent multiple reads of the same file. Failures to read a file are similarly cached to prevent multiple\n * failing reads from happening.\n */\n/* eslint-disable complexity */\nasync function addSourceContext(event, contextLines) {\n // keep a lookup map of which files we've already enqueued to read,\n // so we don't enqueue the same file multiple times which would cause multiple i/o reads\n const filesToLines = {};\n\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (!exception.stacktrace?.frames?.length) {\n continue;\n }\n\n // Maps preserve insertion order, so we iterate in reverse, starting at the\n // outermost frame and closer to where the exception has occurred (poor mans priority)\n for (let i = exception.stacktrace.frames.length - 1; i >= 0; i--) {\n const frame = exception.stacktrace.frames[i];\n const filename = frame?.filename;\n\n if (\n !frame ||\n typeof filename !== 'string' ||\n typeof frame.lineno !== 'number' ||\n shouldSkipContextLinesForFile(filename) ||\n shouldSkipContextLinesForFrame(frame)\n ) {\n continue;\n }\n\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n // @ts-expect-error this is defined above\n filesToLines[filename].push(frame.lineno);\n }\n }\n }\n\n const files = Object.keys(filesToLines);\n if (files.length == 0) {\n return event;\n }\n\n const readlinePromises = [];\n for (const file of files) {\n // If we failed to read this before, dont try reading it again.\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) {\n continue;\n }\n\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) {\n continue;\n }\n\n // Sort ranges so that they are sorted by line increasing order and match how the file is read.\n filesToLineRanges.sort((a, b) => a - b);\n // Check if the contents are already in the cache and if we can avoid reading the file again.\n const ranges = makeLineReaderRanges(filesToLineRanges, contextLines);\n if (ranges.every(r => rangeExistsInContentCache(file, r))) {\n continue;\n }\n\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache));\n }\n\n // The promise rejections are caught in order to prevent them from short circuiting Promise.all\n await Promise.all(readlinePromises).catch(() => {\n DEBUG_BUILD && debug.log('Failed to read one or more source files and resolve context lines');\n });\n\n // Perform the same loop as above, but this time we can assume all files are in the cache\n // and attempt to add source context to frames.\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (exception.stacktrace?.frames && exception.stacktrace.frames.length > 0) {\n addSourceContextToFrames(exception.stacktrace.frames, contextLines, LRU_FILE_CONTENTS_CACHE);\n }\n }\n }\n\n return event;\n}\n/* eslint-enable complexity */\n\n/** Adds context lines to frames */\nfunction addSourceContextToFrames(\n frames,\n contextLines,\n cache,\n) {\n for (const frame of frames) {\n // Only add context if we have a filename and it hasn't already been added\n if (frame.filename && frame.context_line === undefined && typeof frame.lineno === 'number') {\n const contents = cache.get(frame.filename);\n if (contents === undefined) {\n continue;\n }\n\n addContextToFrame(frame.lineno, frame, contextLines, contents);\n }\n }\n}\n\n/**\n * Clears the context lines from a frame, used to reset a frame to its original state\n * if we fail to resolve all context lines for it.\n */\nfunction clearLineContext(frame) {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\n\n/**\n * Resolves context lines before and after the given line number and appends them to the frame;\n */\nfunction addContextToFrame(\n lineno,\n frame,\n contextLines,\n contents,\n) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping.\n // We already check for lineno before calling this, but since StackFrame lineno ism optional, we check it again.\n if (frame.lineno === undefined || contents === undefined) {\n DEBUG_BUILD && debug.error('Cannot resolve context for frame with no lineno or file contents');\n return;\n }\n\n frame.pre_context = [];\n for (let i = makeRangeStart(lineno, contextLines); i < lineno; i++) {\n // We always expect the start context as line numbers cannot be negative. If we dont find a line, then\n // something went wrong somewhere. Clear the context and return without adding any linecontext.\n const line = contents[i];\n if (line === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${i} in file ${frame.filename}`);\n return;\n }\n\n frame.pre_context.push(line);\n }\n\n // We should always have the context line. If we dont, something went wrong, so we clear the context and return\n // without adding any linecontext.\n if (contents[lineno] === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${lineno} in file ${frame.filename}`);\n return;\n }\n\n frame.context_line = contents[lineno];\n\n const end = makeRangeEnd(lineno, contextLines);\n frame.post_context = [];\n for (let i = lineno + 1; i <= end; i++) {\n // Since we dont track when the file ends, we cant clear the context if we dont find a line as it could\n // just be that we reached the end of the file.\n const line = contents[i];\n if (line === undefined) {\n break;\n }\n frame.post_context.push(line);\n }\n}\n\n// Helper functions for generating line context ranges. They take a line number and the number of lines of context to\n// include before and after the line and generate an inclusive range of indices.\n\n// Compute inclusive end context range\nfunction makeRangeStart(line, linecontext) {\n return Math.max(1, line - linecontext);\n}\n// Compute inclusive start context range\nfunction makeRangeEnd(line, linecontext) {\n return line + linecontext;\n}\n// Determine start and end indices for context range (inclusive);\nfunction makeContextRange(line, linecontext) {\n return [makeRangeStart(line, linecontext), makeRangeEnd(line, linecontext)];\n}\n\n/** Exported only for tests, as a type-safe variant. */\nconst _contextLinesIntegration = ((options = {}) => {\n const contextLines = options.frameContextLines !== undefined ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addSourceContext(event, contextLines);\n },\n };\n}) ;\n\n/**\n * Capture the lines before and after the frame's context.\n */\nconst contextLinesIntegration = defineIntegration(_contextLinesIntegration);\n\nexport { MAX_CONTEXTLINES_COLNO, MAX_CONTEXTLINES_LINENO, _contextLinesIntegration, addContextToFrame, contextLinesIntegration };\n//# sourceMappingURL=contextlines.js.map\n", + "import { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument.js';\nimport { httpServerIntegration } from './httpServerIntegration.js';\nimport { httpServerSpansIntegration } from './httpServerSpansIntegration.js';\nimport { SentryHttpInstrumentation } from './SentryHttpInstrumentation.js';\n\nconst INTEGRATION_NAME = 'Http';\n\nconst instrumentSentryHttp = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n options => {\n return new SentryHttpInstrumentation(options);\n },\n);\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs for outgoing HTTP requests which will be attached to the currently active span.\n */\nconst httpIntegration = defineIntegration((options = {}) => {\n const serverOptions = {\n sessions: options.trackIncomingRequestsAsSessions,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n ignoreRequestBody: options.ignoreIncomingRequestBody,\n maxRequestBodySize: options.maxIncomingRequestBodySize,\n };\n\n const serverSpansOptions = {\n ignoreIncomingRequests: options.ignoreIncomingRequests,\n ignoreStaticAssets: options.ignoreStaticAssets,\n ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n };\n\n const httpInstrumentationOptions = {\n breadcrumbs: options.breadcrumbs,\n propagateTraceInOutgoingRequests: options.tracePropagation ?? true,\n ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n };\n\n const server = httpServerIntegration(serverOptions);\n const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n // In node-core, for now we disable incoming requests spans by default\n // we may revisit this in a future release\n const spans = options.spans ?? false;\n const disableIncomingRequestSpans = options.disableIncomingRequestSpans ?? false;\n const enabledServerSpans = spans && !disableIncomingRequestSpans;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (enabledServerSpans) {\n serverSpans.setup(client);\n }\n },\n setupOnce() {\n server.setupOnce();\n\n instrumentSentryHttp(httpInstrumentationOptions);\n },\n\n processEvent(event) {\n // Note: We always run this, even if spans are disabled\n // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n return serverSpans.processEvent(event);\n },\n };\n});\n\nexport { httpIntegration, instrumentSentryHttp };\n//# sourceMappingURL=index.js.map\n", + "import { Worker } from 'node:worker_threads';\nimport { defineIntegration, debug } from '@sentry/core';\nimport { isDebuggerEnabled } from '../../utils/debug.js';\nimport { LOCAL_VARIABLES_KEY, functionNamesMatch } from './common.js';\n\n// This string is a placeholder that gets overwritten with the worker code.\nconst base64WorkerScript = 'LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ2LjAgKGU1ZmRjOWQpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyBlfWZyb20ibm9kZTppbnNwZWN0b3IvcHJvbWlzZXMiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIHR9ZnJvbSJub2RlOndvcmtlcl90aHJlYWRzIjtjb25zdCBuPWdsb2JhbFRoaXMsaT17fTtjb25zdCBvPSJfX1NFTlRSWV9FUlJPUl9MT0NBTF9WQVJJQUJMRVNfXyI7Y29uc3QgYT10O2Z1bmN0aW9uIHMoLi4uZSl7YS5kZWJ1ZyYmZnVuY3Rpb24oZSl7aWYoISgiY29uc29sZSJpbiBuKSlyZXR1cm4gZSgpO2NvbnN0IHQ9bi5jb25zb2xlLG89e30sYT1PYmplY3Qua2V5cyhpKTthLmZvckVhY2goZT0+e2NvbnN0IG49aVtlXTtvW2VdPXRbZV0sdFtlXT1ufSk7dHJ5e3JldHVybiBlKCl9ZmluYWxseXthLmZvckVhY2goZT0+e3RbZV09b1tlXX0pfX0oKCk9PmNvbnNvbGUubG9nKCJbTG9jYWxWYXJpYWJsZXMgV29ya2VyXSIsLi4uZSkpfWFzeW5jIGZ1bmN0aW9uIGMoZSx0LG4saSl7Y29uc3Qgbz1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pO2lbbl09by5yZXN1bHQuZmlsdGVyKGU9PiJsZW5ndGgiIT09ZS5uYW1lJiYhaXNOYU4ocGFyc2VJbnQoZS5uYW1lLDEwKSkpLnNvcnQoKGUsdCk9PnBhcnNlSW50KGUubmFtZSwxMCktcGFyc2VJbnQodC5uYW1lLDEwKSkubWFwKGU9PmUudmFsdWU/LnZhbHVlKX1hc3luYyBmdW5jdGlvbiByKGUsdCxuLGkpe2NvbnN0IG89YXdhaXQgZS5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLHtvYmplY3RJZDp0LG93blByb3BlcnRpZXM6ITB9KTtpW25dPW8ucmVzdWx0Lm1hcChlPT5bZS5uYW1lLGUudmFsdWU/LnZhbHVlXSkucmVkdWNlKChlLFt0LG5dKT0+KGVbdF09bixlKSx7fSl9ZnVuY3Rpb24gdShlLHQpe2UudmFsdWUmJigidmFsdWUiaW4gZS52YWx1ZT92b2lkIDA9PT1lLnZhbHVlLnZhbHVlfHxudWxsPT09ZS52YWx1ZS52YWx1ZT90W2UubmFtZV09YDwke2UudmFsdWUudmFsdWV9PmA6dFtlLm5hbWVdPWUudmFsdWUudmFsdWU6ImRlc2NyaXB0aW9uImluIGUudmFsdWUmJiJmdW5jdGlvbiIhPT1lLnZhbHVlLnR5cGU/dFtlLm5hbWVdPWA8JHtlLnZhbHVlLmRlc2NyaXB0aW9ufT5gOiJ1bmRlZmluZWQiPT09ZS52YWx1ZS50eXBlJiYodFtlLm5hbWVdPSI8dW5kZWZpbmVkPiIpKX1hc3luYyBmdW5jdGlvbiBsKGUsdCl7Y29uc3Qgbj1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pLGk9e307Zm9yKGNvbnN0IHQgb2Ygbi5yZXN1bHQpaWYodC52YWx1ZT8ub2JqZWN0SWQmJiJBcnJheSI9PT10LnZhbHVlLmNsYXNzTmFtZSl7Y29uc3Qgbj10LnZhbHVlLm9iamVjdElkO2F3YWl0IGMoZSxuLHQubmFtZSxpKX1lbHNlIGlmKHQudmFsdWU/Lm9iamVjdElkJiYiT2JqZWN0Ij09PXQudmFsdWUuY2xhc3NOYW1lKXtjb25zdCBuPXQudmFsdWUub2JqZWN0SWQ7YXdhaXQgcihlLG4sdC5uYW1lLGkpfWVsc2UgdC52YWx1ZSYmdSh0LGkpO3JldHVybiBpfWxldCBmOyhhc3luYyBmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IGU7dC5jb25uZWN0VG9NYWluVGhyZWFkKCkscygiQ29ubmVjdGVkIHRvIG1haW4gdGhyZWFkIik7bGV0IG49ITE7dC5vbigiRGVidWdnZXIucmVzdW1lZCIsKCk9PntuPSExfSksdC5vbigiRGVidWdnZXIucGF1c2VkIixlPT57bj0hMCxhc3luYyBmdW5jdGlvbihlLHtyZWFzb246dCxkYXRhOntvYmplY3RJZDpufSxjYWxsRnJhbWVzOml9KXtpZigiZXhjZXB0aW9uIiE9PXQmJiJwcm9taXNlUmVqZWN0aW9uIiE9PXQpcmV0dXJuO2lmKGY/LigpLG51bGw9PW4pcmV0dXJuO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0e3Njb3BlQ2hhaW46bixmdW5jdGlvbk5hbWU6byx0aGlzOnN9PWlbdF0sYz1uLmZpbmQoZT0+ImxvY2FsIj09PWUudHlwZSkscj0iZ2xvYmFsIiE9PXMuY2xhc3NOYW1lJiZzLmNsYXNzTmFtZT9gJHtzLmNsYXNzTmFtZX0uJHtvfWA6bztpZih2b2lkIDA9PT1jPy5vYmplY3Qub2JqZWN0SWQpYVt0XT17ZnVuY3Rpb246cn07ZWxzZXtjb25zdCBuPWF3YWl0IGwoZSxjLm9iamVjdC5vYmplY3RJZCk7YVt0XT17ZnVuY3Rpb246cix2YXJzOm59fX1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24iLHtmdW5jdGlvbkRlY2xhcmF0aW9uOmBmdW5jdGlvbigpIHsgdGhpcy4ke299ID0gdGhpcy4ke299IHx8ICR7SlNPTi5zdHJpbmdpZnkoYSl9OyB9YCxzaWxlbnQ6ITAsb2JqZWN0SWQ6bn0pLGF3YWl0IGUucG9zdCgiUnVudGltZS5yZWxlYXNlT2JqZWN0Iix7b2JqZWN0SWQ6bn0pfSh0LGUucGFyYW1zKS50aGVuKGFzeW5jKCk9PntuJiZhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpfSxhc3luYyBlPT57biYmYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKX0pfSksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTtjb25zdCBpPSExIT09YS5jYXB0dXJlQWxsRXhjZXB0aW9ucztpZihhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIix7c3RhdGU6aT8iYWxsIjoidW5jYXVnaHQifSksaSl7Y29uc3QgZT1hLm1heEV4Y2VwdGlvbnNQZXJTZWNvbmR8fDUwO2Y9ZnVuY3Rpb24oZSx0LG4pe2xldCBpPTAsbz01LGE9MDtyZXR1cm4gc2V0SW50ZXJ2YWwoKCk9PnswPT09YT9pPmUmJihvKj0yLG4obyksbz44NjQwMCYmKG89ODY0MDApLGE9byk6KGEtPTEsMD09PWEmJnQoKSksaT0wfSwxZTMpLnVucmVmKCksKCk9PntpKz0xfX0oZSxhc3luYygpPT57cygiUmF0ZS1saW1pdCBsaWZ0ZWQuIiksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJhbGwifSl9LGFzeW5jIGU9PntzKGBSYXRlLWxpbWl0IGV4Y2VlZGVkLiBEaXNhYmxpbmcgY2FwdHVyaW5nIG9mIGNhdWdodCBleGNlcHRpb25zIGZvciAke2V9IHNlY29uZHMuYCksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJ1bmNhdWdodCJ9KX0pfX0pKCkuY2F0Y2goZT0+e3MoIkZhaWxlZCB0byBzdGFydCBkZWJ1Z2dlciIsZSl9KSxzZXRJbnRlcnZhbCgoKT0+e30sMWU0KTs=';\n\nfunction log(...args) {\n debug.log('[LocalVariables]', ...args);\n}\n\n/**\n * Adds local variables to exception frames\n */\nconst localVariablesAsyncIntegration = defineIntegration(((\n integrationOptions = {},\n) => {\n function addLocalVariablesToException(exception, localVariables) {\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const frameLocalVariables = localVariables[i];\n const frame = frames[frameIndex];\n\n if (!frame || !frameLocalVariables) {\n // Drop out if we run out of frames to match up\n break;\n }\n\n if (\n // We need to have vars to add\n frameLocalVariables.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frame.in_app === false && integrationOptions.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frame.function, frameLocalVariables.function)\n ) {\n continue;\n }\n\n frame.vars = frameLocalVariables.vars;\n }\n }\n\n function addLocalVariablesToEvent(event, hint) {\n if (\n hint.originalException &&\n typeof hint.originalException === 'object' &&\n LOCAL_VARIABLES_KEY in hint.originalException &&\n Array.isArray(hint.originalException[LOCAL_VARIABLES_KEY])\n ) {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception, hint.originalException[LOCAL_VARIABLES_KEY]);\n }\n\n hint.originalException[LOCAL_VARIABLES_KEY] = undefined;\n }\n\n return event;\n }\n\n async function startInspector() {\n // We load inspector dynamically because on some platforms Node is built without inspector support\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n function startWorker(options) {\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n worker.once('error', (err) => {\n log('Worker error', err);\n });\n\n worker.once('exit', (code) => {\n log('Worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n }\n\n return {\n name: 'LocalVariablesAsync',\n async setup(client) {\n const clientOptions = client.getOptions();\n\n if (!clientOptions.includeLocalVariables) {\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n const options = {\n ...integrationOptions,\n debug: debug.isEnabled(),\n };\n\n startInspector().then(\n () => {\n try {\n startWorker(options);\n } catch (e) {\n debug.error('Failed to start worker', e);\n }\n },\n e => {\n debug.error('Failed to start inspector', e);\n },\n );\n },\n processEvent(event, hint) {\n return addLocalVariablesToEvent(event, hint);\n },\n };\n}) );\n\nexport { base64WorkerScript, localVariablesAsyncIntegration };\n//# sourceMappingURL=local-variables-async.js.map\n", + "let cachedDebuggerEnabled;\n\n/**\n * Was the debugger enabled when this function was first called?\n */\nasync function isDebuggerEnabled() {\n if (cachedDebuggerEnabled === undefined) {\n try {\n // Node can be built without inspector support\n const inspector = await import('node:inspector');\n cachedDebuggerEnabled = !!inspector.url();\n } catch {\n cachedDebuggerEnabled = false;\n }\n }\n\n return cachedDebuggerEnabled;\n}\n\nexport { isDebuggerEnabled };\n//# sourceMappingURL=debug.js.map\n", + "/**\n * The key used to store the local variables on the error object.\n */\nconst LOCAL_VARIABLES_KEY = '__SENTRY_ERROR_LOCAL_VARIABLES__';\n\n/**\n * Creates a rate limiter that will call the disable callback when the rate limit is reached and the enable callback\n * when a timeout has occurred.\n * @param maxPerSecond Maximum number of calls per second\n * @param enable Callback to enable capture\n * @param disable Callback to disable capture\n * @returns A function to call to increment the rate limiter count\n */\nfunction createRateLimiter(\n maxPerSecond,\n enable,\n disable,\n) {\n let count = 0;\n let retrySeconds = 5;\n let disabledTimeout = 0;\n\n setInterval(() => {\n if (disabledTimeout === 0) {\n if (count > maxPerSecond) {\n retrySeconds *= 2;\n disable(retrySeconds);\n\n // Cap at one day\n if (retrySeconds > 86400) {\n retrySeconds = 86400;\n }\n disabledTimeout = retrySeconds;\n }\n } else {\n disabledTimeout -= 1;\n\n if (disabledTimeout === 0) {\n enable();\n }\n }\n\n count = 0;\n }, 1000).unref();\n\n return () => {\n count += 1;\n };\n}\n\n// Add types for the exception event data\n\n/** Could this be an anonymous function? */\nfunction isAnonymous(name) {\n return name !== undefined && (name.length === 0 || name === '?' || name === '');\n}\n\n/** Do the function names appear to match? */\nfunction functionNamesMatch(a, b) {\n return a === b || `Object.${a}` === b || a === `Object.${b}` || (isAnonymous(a) && isAnonymous(b));\n}\n\nexport { LOCAL_VARIABLES_KEY, createRateLimiter, functionNamesMatch, isAnonymous };\n//# sourceMappingURL=common.js.map\n", + "import { defineIntegration, LRUMap, getClient, debug } from '@sentry/core';\nimport { NODE_MAJOR } from '../../nodeVersion.js';\nimport { isDebuggerEnabled } from '../../utils/debug.js';\nimport { createRateLimiter, functionNamesMatch } from './common.js';\n\n/** Creates a unique hash from stack frames */\nfunction hashFrames(frames) {\n if (frames === undefined) {\n return;\n }\n\n // Only hash the 10 most recent frames (ie. the last 10)\n return frames.slice(-10).reduce((acc, frame) => `${acc},${frame.function},${frame.lineno},${frame.colno}`, '');\n}\n\n/**\n * We use the stack parser to create a unique hash from the exception stack trace\n * This is used to lookup vars when the exception passes through the event processor\n */\nfunction hashFromStack(stackParser, stack) {\n if (stack === undefined) {\n return undefined;\n }\n\n return hashFrames(stackParser(stack, 1));\n}\n\n/** Creates a container for callbacks to be called sequentially */\nfunction createCallbackList(complete) {\n // A collection of callbacks to be executed last to first\n let callbacks = [];\n\n let completedCalled = false;\n function checkedComplete(result) {\n callbacks = [];\n if (completedCalled) {\n return;\n }\n completedCalled = true;\n complete(result);\n }\n\n // complete should be called last\n callbacks.push(checkedComplete);\n\n function add(fn) {\n callbacks.push(fn);\n }\n\n function next(result) {\n const popped = callbacks.pop() || checkedComplete;\n\n try {\n popped(result);\n } catch {\n // If there is an error, we still want to call the complete callback\n checkedComplete(result);\n }\n }\n\n return { add, next };\n}\n\n/**\n * Promise API is available as `Experimental` and in Node 19 only.\n *\n * Callback-based API is `Stable` since v14 and `Experimental` since v8.\n * Because of that, we are creating our own `AsyncSession` class.\n *\n * https://nodejs.org/docs/latest-v19.x/api/inspector.html#promises-api\n * https://nodejs.org/docs/latest-v14.x/api/inspector.html\n */\nclass AsyncSession {\n /** Throws if inspector API is not available */\n constructor( _session) {this._session = _session;\n //\n }\n\n static async create(orDefault) {\n if (orDefault) {\n return orDefault;\n }\n\n const inspector = await import('node:inspector');\n return new AsyncSession(new inspector.Session());\n }\n\n /** @inheritdoc */\n configureAndConnect(onPause, captureAll) {\n this._session.connect();\n\n this._session.on('Debugger.paused', event => {\n onPause(event, () => {\n // After the pause work is complete, resume execution or the exception context memory is leaked\n this._session.post('Debugger.resume');\n });\n });\n\n this._session.post('Debugger.enable');\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n setPauseOnExceptions(captureAll) {\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n /** @inheritdoc */\n getLocalVariables(objectId, complete) {\n this._getProperties(objectId, props => {\n const { add, next } = createCallbackList(complete);\n\n for (const prop of props) {\n if (prop.value?.objectId && prop.value.className === 'Array') {\n const id = prop.value.objectId;\n add(vars => this._unrollArray(id, prop.name, vars, next));\n } else if (prop.value?.objectId && prop.value.className === 'Object') {\n const id = prop.value.objectId;\n add(vars => this._unrollObject(id, prop.name, vars, next));\n } else if (prop.value) {\n add(vars => this._unrollOther(prop, vars, next));\n }\n }\n\n next({});\n });\n }\n\n /**\n * Gets all the PropertyDescriptors of an object\n */\n _getProperties(objectId, next) {\n this._session.post(\n 'Runtime.getProperties',\n {\n objectId,\n ownProperties: true,\n },\n (err, params) => {\n if (err) {\n next([]);\n } else {\n next(params.result);\n }\n },\n );\n }\n\n /**\n * Unrolls an array property\n */\n _unrollArray(objectId, name, vars, next) {\n this._getProperties(objectId, props => {\n vars[name] = props\n .filter(v => v.name !== 'length' && !isNaN(parseInt(v.name, 10)))\n .sort((a, b) => parseInt(a.name, 10) - parseInt(b.name, 10))\n .map(v => v.value?.value);\n\n next(vars);\n });\n }\n\n /**\n * Unrolls an object property\n */\n _unrollObject(objectId, name, vars, next) {\n this._getProperties(objectId, props => {\n vars[name] = props\n .map(v => [v.name, v.value?.value])\n .reduce((obj, [key, val]) => {\n obj[key] = val;\n return obj;\n }, {} );\n\n next(vars);\n });\n }\n\n /**\n * Unrolls other properties\n */\n _unrollOther(prop, vars, next) {\n if (prop.value) {\n if ('value' in prop.value) {\n if (prop.value.value === undefined || prop.value.value === null) {\n vars[prop.name] = `<${prop.value.value}>`;\n } else {\n vars[prop.name] = prop.value.value;\n }\n } else if ('description' in prop.value && prop.value.type !== 'function') {\n vars[prop.name] = `<${prop.value.description}>`;\n } else if (prop.value.type === 'undefined') {\n vars[prop.name] = '';\n }\n }\n\n next(vars);\n }\n}\n\nconst INTEGRATION_NAME = 'LocalVariables';\n\n/**\n * Adds local variables to exception frames\n */\nconst _localVariablesSyncIntegration = ((\n options = {},\n sessionOverride,\n) => {\n const cachedFrames = new LRUMap(20);\n let rateLimiter;\n let shouldProcessEvent = false;\n\n function addLocalVariablesToException(exception) {\n const hash = hashFrames(exception.stacktrace?.frames);\n\n if (hash === undefined) {\n return;\n }\n\n // Check if we have local variables for an exception that matches the hash\n // remove is identical to get but also removes the entry from the cache\n const cachedFrame = cachedFrames.remove(hash);\n\n if (cachedFrame === undefined) {\n return;\n }\n\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const cachedFrameVariable = cachedFrame[i];\n const frameVariable = frames[frameIndex];\n\n // Drop out if we run out of frames to match up\n if (!frameVariable || !cachedFrameVariable) {\n break;\n }\n\n if (\n // We need to have vars to add\n cachedFrameVariable.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frameVariable.in_app === false && options.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frameVariable.function, cachedFrameVariable.function)\n ) {\n continue;\n }\n\n frameVariable.vars = cachedFrameVariable.vars;\n }\n }\n\n function addLocalVariablesToEvent(event) {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception);\n }\n\n return event;\n }\n\n let setupPromise;\n\n async function setup() {\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n if (!clientOptions?.includeLocalVariables) {\n return;\n }\n\n // Only setup this integration if the Node version is >= v18\n // https://github.com/getsentry/sentry-javascript/issues/7697\n const unsupportedNodeVersion = NODE_MAJOR < 18;\n\n if (unsupportedNodeVersion) {\n debug.log('The `LocalVariables` integration is only supported on Node >= v18.');\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n try {\n const session = await AsyncSession.create(sessionOverride);\n\n const handlePaused = (\n stackParser,\n { params: { reason, data, callFrames } },\n complete,\n ) => {\n if (reason !== 'exception' && reason !== 'promiseRejection') {\n complete();\n return;\n }\n\n rateLimiter?.();\n\n // data.description contains the original error.stack\n const exceptionHash = hashFromStack(stackParser, data.description);\n\n if (exceptionHash == undefined) {\n complete();\n return;\n }\n\n const { add, next } = createCallbackList(frames => {\n cachedFrames.set(exceptionHash, frames);\n complete();\n });\n\n // Because we're queuing up and making all these calls synchronously, we can potentially overflow the stack\n // For this reason we only attempt to get local variables for the first 5 frames\n for (let i = 0; i < Math.min(callFrames.length, 5); i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { scopeChain, functionName, this: obj } = callFrames[i];\n\n const localScope = scopeChain.find(scope => scope.type === 'local');\n\n // obj.className is undefined in ESM modules\n const fn = obj.className === 'global' || !obj.className ? functionName : `${obj.className}.${functionName}`;\n\n if (localScope?.object.objectId === undefined) {\n add(frames => {\n frames[i] = { function: fn };\n next(frames);\n });\n } else {\n const id = localScope.object.objectId;\n add(frames =>\n session.getLocalVariables(id, vars => {\n frames[i] = { function: fn, vars };\n next(frames);\n }),\n );\n }\n }\n\n next([]);\n };\n\n const captureAll = options.captureAllExceptions !== false;\n\n session.configureAndConnect(\n (ev, complete) =>\n handlePaused(clientOptions.stackParser, ev , complete),\n captureAll,\n );\n\n if (captureAll) {\n const max = options.maxExceptionsPerSecond || 50;\n\n rateLimiter = createRateLimiter(\n max,\n () => {\n debug.log('Local variables rate-limit lifted.');\n session.setPauseOnExceptions(true);\n },\n seconds => {\n debug.log(\n `Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${seconds} seconds.`,\n );\n session.setPauseOnExceptions(false);\n },\n );\n }\n\n shouldProcessEvent = true;\n } catch (error) {\n debug.log('The `LocalVariables` integration failed to start.', error);\n }\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n setupPromise = setup();\n },\n async processEvent(event) {\n await setupPromise;\n\n if (shouldProcessEvent) {\n return addLocalVariablesToEvent(event);\n }\n\n return event;\n },\n // These are entirely for testing\n _getCachedFramesCount() {\n return cachedFrames.size;\n },\n _getFirstCachedFrame() {\n return cachedFrames.values()[0];\n },\n };\n}) ;\n\n/**\n * Adds local variables to exception frames.\n */\nconst localVariablesSyncIntegration = defineIntegration(_localVariablesSyncIntegration);\n\nexport { createCallbackList, hashFrames, hashFromStack, localVariablesSyncIntegration };\n//# sourceMappingURL=local-variables-sync.js.map\n", + "import { NODE_VERSION } from '../../nodeVersion.js';\nimport { localVariablesAsyncIntegration } from './local-variables-async.js';\nimport { localVariablesSyncIntegration } from './local-variables-sync.js';\n\nconst localVariablesIntegration = (options = {}) => {\n return NODE_VERSION.major < 19 ? localVariablesSyncIntegration(options) : localVariablesAsyncIntegration(options);\n};\n\nexport { localVariablesIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { isCjs } from '../utils/detection.js';\n\nlet moduleCache;\n\nconst INTEGRATION_NAME = 'Modules';\n\n/**\n * `__SENTRY_SERVER_MODULES__` can be replaced at build time with the modules loaded by the server.\n * Right now, we leverage this in Next.js to circumvent the problem that we do not get access to these things at runtime.\n */\nconst SERVER_MODULES = typeof __SENTRY_SERVER_MODULES__ === 'undefined' ? {} : __SENTRY_SERVER_MODULES__;\n\nconst _modulesIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n event.modules = {\n ...event.modules,\n ..._getModules(),\n };\n\n return event;\n },\n getModules: _getModules,\n };\n}) ;\n\n/**\n * Add node modules / packages to the event.\n * For this, multiple sources are used:\n * - They can be injected at build time into the __SENTRY_SERVER_MODULES__ variable (e.g. in Next.js)\n * - They are extracted from the dependencies & devDependencies in the package.json file\n * - They are extracted from the require.cache (CJS only)\n */\nconst modulesIntegration = _modulesIntegration;\n\nfunction getRequireCachePaths() {\n try {\n return require.cache ? Object.keys(require.cache ) : [];\n } catch {\n return [];\n }\n}\n\n/** Extract information about package.json modules */\nfunction collectModules() {\n return {\n ...SERVER_MODULES,\n ...getModulesFromPackageJson(),\n ...(isCjs() ? collectRequireModules() : {}),\n };\n}\n\n/** Extract information about package.json modules from require.cache */\nfunction collectRequireModules() {\n const mainPaths = require.main?.paths || [];\n const paths = getRequireCachePaths();\n\n // We start with the modules from package.json (if possible)\n // These may be overwritten by more specific versions from the require.cache\n const infos = {};\n const seen = new Set();\n\n paths.forEach(path => {\n let dir = path;\n\n /** Traverse directories upward in the search of package.json file */\n const updir = () => {\n const orig = dir;\n dir = dirname(orig);\n\n if (!dir || orig === dir || seen.has(orig)) {\n return undefined;\n }\n if (mainPaths.indexOf(dir) < 0) {\n return updir();\n }\n\n const pkgfile = join(orig, 'package.json');\n seen.add(orig);\n\n if (!existsSync(pkgfile)) {\n return updir();\n }\n\n try {\n const info = JSON.parse(readFileSync(pkgfile, 'utf8'))\n\n;\n infos[info.name] = info.version;\n } catch {\n // no-empty\n }\n };\n\n updir();\n });\n\n return infos;\n}\n\n/** Fetches the list of modules and the versions loaded by the entry file for your node.js app. */\nfunction _getModules() {\n if (!moduleCache) {\n moduleCache = collectModules();\n }\n return moduleCache;\n}\n\nfunction getPackageJson() {\n try {\n const filePath = join(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(filePath, 'utf8')) ;\n\n return packageJson;\n } catch {\n return {};\n }\n}\n\nfunction getModulesFromPackageJson() {\n const packageJson = getPackageJson();\n\n return {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n}\n\nexport { modulesIntegration };\n//# sourceMappingURL=modules.js.map\n", + "import { consoleSandbox } from '@sentry/core';\nimport { NODE_MAJOR, NODE_MINOR } from '../nodeVersion.js';\n\n/** Detect CommonJS. */\nfunction isCjs() {\n try {\n // oxlint-disable-next-line typescript/prefer-optional-chain\n return typeof module !== 'undefined' && typeof module.exports !== 'undefined';\n } catch {\n return false;\n }\n}\n\nlet hasWarnedAboutNodeVersion;\n\n/**\n * Check if the current Node.js version supports module.register\n */\nfunction supportsEsmLoaderHooks() {\n if (isCjs()) {\n return false;\n }\n\n if (NODE_MAJOR >= 21 || (NODE_MAJOR === 20 && NODE_MINOR >= 6) || (NODE_MAJOR === 18 && NODE_MINOR >= 19)) {\n return true;\n }\n\n if (!hasWarnedAboutNodeVersion) {\n hasWarnedAboutNodeVersion = true;\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] You are using Node.js v${process.versions.node} in ESM mode (\"import syntax\"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS (\"require() syntax\"), or upgrade your Node.js version.`,\n );\n });\n }\n\n return false;\n}\n\nexport { isCjs, supportsEsmLoaderHooks };\n//# sourceMappingURL=detection.js.map\n", + "import { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument.js';\nimport { SentryNodeFetchInstrumentation } from './SentryNodeFetchInstrumentation.js';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n instrumentSentryNodeFetch(options);\n },\n };\n}) ;\n\nconst nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n\nexport { nativeNodeFetchIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { defineIntegration, getClient, captureException, debug } from '@sentry/core';\nimport { isMainThread } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { logAndExitProcess } from '../utils/errorhandling.js';\n\nconst INTEGRATION_NAME = 'OnUncaughtException';\n\n/**\n * Add a global exception handler.\n */\nconst onUncaughtExceptionIntegration = defineIntegration((options = {}) => {\n const optionsWithDefaults = {\n exitEvenIfOtherHandlersAreRegistered: false,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n // errors in worker threads are already handled by the childProcessIntegration\n // also we don't want to exit the Node process on worker thread errors\n if (!isMainThread) {\n return;\n }\n\n global.process.on('uncaughtException', makeErrorHandler(client, optionsWithDefaults));\n },\n };\n});\n\n/** Exported only for tests */\nfunction makeErrorHandler(client, options) {\n const timeout = 2000;\n let caughtFirstError = false;\n let caughtSecondError = false;\n let calledFatalError = false;\n let firstError;\n\n const clientOptions = client.getOptions();\n\n return Object.assign(\n (error) => {\n let onFatalError = logAndExitProcess;\n\n if (options.onFatalError) {\n onFatalError = options.onFatalError;\n } else if (clientOptions.onFatalError) {\n onFatalError = clientOptions.onFatalError ;\n }\n\n // Attaching a listener to `uncaughtException` will prevent the node process from exiting. We generally do not\n // want to alter this behaviour so we check for other listeners that users may have attached themselves and adjust\n // exit behaviour of the SDK accordingly:\n // - If other listeners are attached, do not exit.\n // - If the only listener attached is ours, exit.\n const userProvidedListenersCount = (global.process.listeners('uncaughtException') ).filter(\n listener => {\n // There are 3 listeners we ignore:\n return (\n // as soon as we're using domains this listener is attached by node itself\n listener.name !== 'domainUncaughtExceptionClear' &&\n // the handler we register for tracing\n listener.tag !== 'sentry_tracingErrorCallback' &&\n // the handler we register in this integration\n (listener )._errorHandler !== true\n );\n },\n ).length;\n\n const processWouldExit = userProvidedListenersCount === 0;\n const shouldApplyFatalHandlingLogic = options.exitEvenIfOtherHandlersAreRegistered || processWouldExit;\n\n if (!caughtFirstError) {\n // this is the first uncaught error and the ultimate reason for shutting down\n // we want to do absolutely everything possible to ensure it gets captured\n // also we want to make sure we don't go recursion crazy if more errors happen after this one\n firstError = error;\n caughtFirstError = true;\n\n if (getClient() === client) {\n captureException(error, {\n originalException: error,\n captureContext: {\n level: 'fatal',\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onuncaughtexception',\n },\n });\n }\n\n if (!calledFatalError && shouldApplyFatalHandlingLogic) {\n calledFatalError = true;\n onFatalError(error);\n }\n } else {\n if (shouldApplyFatalHandlingLogic) {\n if (calledFatalError) {\n // we hit an error *after* calling onFatalError - pretty boned at this point, just shut it down\n DEBUG_BUILD &&\n debug.warn(\n 'uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown',\n );\n logAndExitProcess(error);\n } else if (!caughtSecondError) {\n // two cases for how we can hit this branch:\n // - capturing of first error blew up and we just caught the exception from that\n // - quit trying to capture, proceed with shutdown\n // - a second independent error happened while waiting for first error to capture\n // - want to avoid causing premature shutdown before first error capture finishes\n // it's hard to immediately tell case 1 from case 2 without doing some fancy/questionable domain stuff\n // so let's instead just delay a bit before we proceed with our action here\n // in case 1, we just wait a bit unnecessarily but ultimately do the same thing\n // in case 2, the delay hopefully made us wait long enough for the capture to finish\n // two potential nonideal outcomes:\n // nonideal case 1: capturing fails fast, we sit around for a few seconds unnecessarily before proceeding correctly by calling onFatalError\n // nonideal case 2: case 2 happens, 1st error is captured but slowly, timeout completes before capture and we treat second error as the sendErr of (nonexistent) failure from trying to capture first error\n // note that after hitting this branch, we might catch more errors where (caughtSecondError && !calledFatalError)\n // we ignore them - they don't matter to us, we're just waiting for the second error timeout to finish\n caughtSecondError = true;\n setTimeout(() => {\n if (!calledFatalError) {\n // it was probably case 1, let's treat err as the sendErr and call onFatalError\n calledFatalError = true;\n onFatalError(firstError, error);\n }\n }, timeout); // capturing could take at least sendTimeout to fail, plus an arbitrary second for how long it takes to collect surrounding source etc\n }\n }\n }\n },\n { _errorHandler: true },\n );\n}\n\nexport { makeErrorHandler, onUncaughtExceptionIntegration };\n//# sourceMappingURL=onuncaughtexception.js.map\n", + "import { consoleSandbox, getClient, debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst DEFAULT_SHUTDOWN_TIMEOUT = 2000;\n\n/**\n * @hidden\n */\nfunction logAndExitProcess(error) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(error);\n });\n\n const client = getClient();\n\n if (client === undefined) {\n DEBUG_BUILD && debug.warn('No NodeClient was defined, we are exiting the process now.');\n global.process.exit(1);\n return;\n }\n\n const options = client.getOptions();\n const timeout =\n options?.shutdownTimeout && options.shutdownTimeout > 0 ? options.shutdownTimeout : DEFAULT_SHUTDOWN_TIMEOUT;\n client.close(timeout).then(\n (result) => {\n if (!result) {\n DEBUG_BUILD && debug.warn('We reached the timeout for emptying the request buffer, still exiting now!');\n }\n global.process.exit(1);\n },\n error => {\n DEBUG_BUILD && debug.error(error);\n },\n );\n}\n\nexport { logAndExitProcess };\n//# sourceMappingURL=errorhandling.js.map\n", + "import { defineIntegration, getClient, withActiveSpan, consoleSandbox, captureException, isMatchingPattern } from '@sentry/core';\nimport { logAndExitProcess } from '../utils/errorhandling.js';\n\nconst INTEGRATION_NAME = 'OnUnhandledRejection';\n\nconst DEFAULT_IGNORES = [\n {\n name: 'AI_NoOutputGeneratedError', // When stream aborts in Vercel AI SDK V5, Vercel flush() fails with an error\n },\n {\n name: 'AbortError', // When stream aborts in Vercel AI SDK V6\n },\n];\n\nconst _onUnhandledRejectionIntegration = ((options = {}) => {\n const opts = {\n mode: options.mode ?? 'warn',\n ignore: [...DEFAULT_IGNORES, ...(options.ignore ?? [])],\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n global.process.on('unhandledRejection', makeUnhandledPromiseHandler(client, opts));\n },\n };\n}) ;\n\nconst onUnhandledRejectionIntegration = defineIntegration(_onUnhandledRejectionIntegration);\n\n/** Extract error info safely */\nfunction extractErrorInfo(reason) {\n // Check if reason is an object (including Error instances, not just plain objects)\n if (typeof reason !== 'object' || reason === null) {\n return { name: '', message: String(reason ?? '') };\n }\n\n const errorLike = reason ;\n const name = typeof errorLike.name === 'string' ? errorLike.name : '';\n const message = typeof errorLike.message === 'string' ? errorLike.message : String(reason);\n\n return { name, message };\n}\n\n/** Check if a matcher matches the reason */\nfunction isMatchingReason(matcher, errorInfo) {\n // name/message matcher\n const nameMatches = matcher.name === undefined || isMatchingPattern(errorInfo.name, matcher.name, true);\n\n const messageMatches = matcher.message === undefined || isMatchingPattern(errorInfo.message, matcher.message);\n\n return nameMatches && messageMatches;\n}\n\n/** Match helper */\nfunction matchesIgnore(list, reason) {\n const errorInfo = extractErrorInfo(reason);\n return list.some(matcher => isMatchingReason(matcher, errorInfo));\n}\n\n/** Core handler */\nfunction makeUnhandledPromiseHandler(\n client,\n options,\n) {\n return function sendUnhandledPromise(reason, promise) {\n // Only handle for the active client\n if (getClient() !== client) {\n return;\n }\n\n // Skip if configured to ignore\n if (matchesIgnore(options.ignore ?? [], reason)) {\n return;\n }\n\n const level = options.mode === 'strict' ? 'fatal' : 'error';\n\n // this can be set in places where we cannot reliably get access to the active span/error\n // when the error bubbles up to this handler, we can use this to set the active span\n const activeSpanForError =\n reason && typeof reason === 'object' ? (reason )._sentry_active_span : undefined;\n\n const activeSpanWrapper = activeSpanForError\n ? (fn) => withActiveSpan(activeSpanForError, fn)\n : (fn) => fn();\n\n activeSpanWrapper(() => {\n captureException(reason, {\n originalException: promise,\n captureContext: {\n extra: { unhandledPromiseRejection: true },\n level,\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onunhandledrejection',\n },\n });\n });\n\n handleRejection(reason, options.mode);\n };\n}\n\n/**\n * Handler for `mode` option\n */\nfunction handleRejection(reason, mode) {\n // https://github.com/nodejs/node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js#L234-L240\n const rejectionWarning =\n 'This error originated either by ' +\n 'throwing inside of an async function without a catch block, ' +\n 'or by rejecting a promise which was not handled with .catch().' +\n ' The promise rejected with the reason:';\n\n /* eslint-disable no-console */\n if (mode === 'warn') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n console.error(reason && typeof reason === 'object' && 'stack' in reason ? reason.stack : reason);\n });\n } else if (mode === 'strict') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n });\n logAndExitProcess(reason);\n }\n /* eslint-enable no-console */\n}\n\nexport { makeUnhandledPromiseHandler, onUnhandledRejectionIntegration };\n//# sourceMappingURL=onunhandledrejection.js.map\n", + "import { defineIntegration, startSession, getIsolationScope, endSession } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'ProcessSession';\n\n/**\n * Records a Session for the current process to track release health.\n */\nconst processSessionIntegration = defineIntegration(() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n startSession();\n\n // Emitted in the case of healthy sessions, error of `mechanism.handled: true` and unhandledrejections because\n // The 'beforeExit' event is not emitted for conditions causing explicit termination,\n // such as calling process.exit() or uncaught exceptions.\n // Ref: https://nodejs.org/api/process.html#process_event_beforeexit\n process.on('beforeExit', () => {\n const session = getIsolationScope().getSession();\n\n // Only call endSession, if the Session exists on Scope and SessionStatus is not a\n // Terminal Status i.e. Exited or Crashed because\n // \"When a session is moved away from ok it must not be updated anymore.\"\n // Ref: https://develop.sentry.dev/sdk/sessions/\n if (session?.status !== 'ok') {\n endSession();\n }\n });\n },\n };\n});\n\nexport { processSessionIntegration };\n//# sourceMappingURL=processSession.js.map\n", + "import * as http from 'node:http';\nimport { defineIntegration, debug, serializeEnvelope, suppressTracing } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'Spotlight';\n\nconst _spotlightIntegration = ((options = {}) => {\n const _options = {\n sidecarUrl: options.sidecarUrl || 'http://localhost:8969/stream',\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n try {\n if (process.env.NODE_ENV && process.env.NODE_ENV !== 'development') {\n debug.warn(\"[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?\");\n }\n } catch {\n // ignore\n }\n connectToSpotlight(client, _options);\n },\n };\n}) ;\n\n/**\n * Use this integration to send errors and transactions to Spotlight.\n *\n * Learn more about spotlight at https://spotlightjs.com\n *\n * Important: This integration only works with Node 18 or newer.\n */\nconst spotlightIntegration = defineIntegration(_spotlightIntegration);\n\nfunction connectToSpotlight(client, options) {\n const spotlightUrl = parseSidecarUrl(options.sidecarUrl);\n if (!spotlightUrl) {\n return;\n }\n\n let failedRequests = 0;\n\n client.on('beforeEnvelope', (envelope) => {\n if (failedRequests > 3) {\n debug.warn('[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests');\n return;\n }\n\n const serializedEnvelope = serializeEnvelope(envelope);\n suppressTracing(() => {\n const req = http.request(\n {\n method: 'POST',\n path: spotlightUrl.pathname,\n hostname: spotlightUrl.hostname,\n port: spotlightUrl.port,\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n },\n res => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 400) {\n // Reset failed requests counter on success\n failedRequests = 0;\n }\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n res.setEncoding('utf8');\n },\n );\n\n req.on('error', () => {\n failedRequests++;\n debug.warn('[Spotlight] Failed to send envelope to Spotlight Sidecar');\n });\n req.write(serializedEnvelope);\n req.end();\n });\n });\n}\n\nfunction parseSidecarUrl(url) {\n try {\n return new URL(`${url}`);\n } catch {\n debug.warn(`[Spotlight] Invalid sidecar URL: ${url}`);\n return undefined;\n }\n}\n\nexport { INTEGRATION_NAME, spotlightIntegration };\n//# sourceMappingURL=spotlight.js.map\n", + "import * as util from 'node:util';\nimport { defineIntegration } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'NodeSystemError';\n\nfunction isSystemError(error) {\n if (!(error instanceof Error)) {\n return false;\n }\n\n if (!('errno' in error) || typeof error.errno !== 'number') {\n return false;\n }\n\n // Appears this is the recommended way to check for Node.js SystemError\n // https://github.com/nodejs/node/issues/46869\n return util.getSystemErrorMap().has(error.errno);\n}\n\n/**\n * Captures context for Node.js SystemError errors.\n */\nconst systemErrorIntegration = defineIntegration((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n processEvent: (event, hint, client) => {\n if (!isSystemError(hint.originalException)) {\n return event;\n }\n\n const error = hint.originalException;\n\n const errorContext = {\n ...(error ),\n };\n\n if (!client.getOptions().sendDefaultPii && options.includePaths !== true) {\n delete errorContext.path;\n delete errorContext.dest;\n }\n\n event.contexts = {\n ...event.contexts,\n node_system_error: errorContext,\n };\n\n for (const exception of event.exception?.values || []) {\n if (exception.value) {\n if (error.path && exception.value.includes(error.path)) {\n exception.value = exception.value.replace(`'${error.path}'`, '').trim();\n }\n if (error.dest && exception.value.includes(error.dest)) {\n exception.value = exception.value.replace(`'${error.dest}'`, '').trim();\n }\n }\n }\n\n return event;\n },\n };\n});\n\nexport { systemErrorIntegration };\n//# sourceMappingURL=systemError.js.map\n", + "import * as http from 'node:http';\nimport * as https from 'node:https';\nimport { Readable } from 'node:stream';\nimport { createGzip } from 'node:zlib';\nimport { consoleSandbox, createTransport, suppressTracing } from '@sentry/core';\nimport { HttpsProxyAgent } from '../proxy/index.js';\n\n// Estimated maximum size for reasonable standalone event\nconst GZIP_THRESHOLD = 1024 * 32;\n\n/**\n * Gets a stream from a Uint8Array or string\n * Readable.from is ideal but was added in node.js v12.3.0 and v10.17.0\n */\nfunction streamFromBody(body) {\n return new Readable({\n read() {\n this.push(body);\n this.push(null);\n },\n });\n}\n\n/**\n * Creates a Transport that uses native the native 'http' and 'https' modules to send events to Sentry.\n */\nfunction makeNodeTransport(options) {\n let urlSegments;\n\n try {\n urlSegments = new URL(options.url);\n } catch (_e) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.',\n );\n });\n return createTransport(options, () => Promise.resolve({}));\n }\n\n const isHttps = urlSegments.protocol === 'https:';\n\n // Proxy prioritization: http => `options.proxy` | `process.env.http_proxy`\n // Proxy prioritization: https => `options.proxy` | `process.env.https_proxy` | `process.env.http_proxy`\n const proxy = applyNoProxyOption(\n urlSegments,\n options.proxy || (isHttps ? process.env.https_proxy : undefined) || process.env.http_proxy,\n );\n\n const nativeHttpModule = isHttps ? https : http;\n const keepAlive = options.keepAlive === undefined ? false : options.keepAlive;\n\n // TODO(v11): Evaluate if we can set keepAlive to true. This would involve testing for memory leaks in older node\n // versions(>= 8) as they had memory leaks when using it: #2555\n const agent = proxy\n ? (new HttpsProxyAgent(proxy) )\n : new nativeHttpModule.Agent({ keepAlive, maxSockets: 30, timeout: 2000 });\n\n const requestExecutor = createRequestExecutor(options, options.httpModule ?? nativeHttpModule, agent);\n return createTransport(options, requestExecutor);\n}\n\n/**\n * Honors the `no_proxy` env variable with the highest priority to allow for hosts exclusion.\n *\n * @param transportUrl The URL the transport intends to send events to.\n * @param proxy The client configured proxy.\n * @returns A proxy the transport should use.\n */\nfunction applyNoProxyOption(transportUrlSegments, proxy) {\n const { no_proxy } = process.env;\n\n const urlIsExemptFromProxy = no_proxy\n ?.split(',')\n .some(\n exemption => transportUrlSegments.host.endsWith(exemption) || transportUrlSegments.hostname.endsWith(exemption),\n );\n\n if (urlIsExemptFromProxy) {\n return undefined;\n } else {\n return proxy;\n }\n}\n\n/**\n * Creates a RequestExecutor to be used with `createTransport`.\n */\nfunction createRequestExecutor(\n options,\n httpModule,\n agent,\n) {\n const { hostname, pathname, port, protocol, search } = new URL(options.url);\n return function makeRequest(request) {\n return new Promise((resolve, reject) => {\n // This ensures we do not generate any spans in OpenTelemetry for the transport\n suppressTracing(() => {\n let body = streamFromBody(request.body);\n\n const headers = { ...options.headers };\n\n if (request.body.length > GZIP_THRESHOLD) {\n headers['content-encoding'] = 'gzip';\n body = body.pipe(createGzip());\n }\n\n const hostnameIsIPv6 = hostname.startsWith('[');\n\n const req = httpModule.request(\n {\n method: 'POST',\n agent,\n headers,\n // Remove \"[\" and \"]\" from IPv6 hostnames\n hostname: hostnameIsIPv6 ? hostname.slice(1, -1) : hostname,\n path: `${pathname}${search}`,\n port,\n protocol,\n ca: options.caCerts,\n },\n res => {\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n\n res.setEncoding('utf8');\n\n // \"Key-value pairs of header names and values. Header names are lower-cased.\"\n // https://nodejs.org/api/http.html#http_message_headers\n const retryAfterHeader = res.headers['retry-after'] ?? null;\n const rateLimitsHeader = res.headers['x-sentry-rate-limits'] ?? null;\n\n resolve({\n statusCode: res.statusCode,\n headers: {\n 'retry-after': retryAfterHeader,\n 'x-sentry-rate-limits': Array.isArray(rateLimitsHeader)\n ? rateLimitsHeader[0] || null\n : rateLimitsHeader,\n },\n });\n },\n );\n\n req.on('error', reject);\n body.pipe(req);\n });\n });\n };\n}\n\nexport { makeNodeTransport };\n//# sourceMappingURL=http.js.map\n", + "import * as net from 'node:net';\nimport * as tls from 'node:tls';\nimport { debug } from '@sentry/core';\nimport { Agent } from './base.js';\nimport { parseProxyResponse } from './parse-proxy-response.js';\n\nfunction debugLog(...args) {\n debug.log('[https-proxy-agent]', ...args);\n}\n\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nclass HttpsProxyAgent extends Agent {\n static __initStatic() {this.protocols = ['http', 'https']; }\n\n constructor(proxy, opts) {\n super(opts);\n this.options = {};\n this.proxy = typeof proxy === 'string' ? new URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debugLog('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === 'https:' ? 443 : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req, opts) {\n const { proxy } = this;\n\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n\n // Create a socket connection to the proxy server.\n let socket;\n if (proxy.protocol === 'https:') {\n debugLog('Creating `tls.Socket`: %o', this.connectOpts);\n const servername = this.connectOpts.servername || this.connectOpts.host;\n socket = tls.connect({\n ...this.connectOpts,\n servername: servername && net.isIP(servername) ? undefined : servername,\n });\n } else {\n debugLog('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n\n const headers =\n typeof this.proxyHeaders === 'function' ? this.proxyHeaders() : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n\n headers.Host = `${host}:${opts.port}`;\n\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive ? 'Keep-Alive' : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n\n const proxyResponsePromise = parseProxyResponse(socket);\n\n socket.write(`${payload}\\r\\n`);\n\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not EventEmitter in Node types\n this.emit('proxyConnect', connect, req);\n\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debugLog('Upgrading socket connection to TLS');\n const servername = opts.servername || opts.host;\n return tls.connect({\n ...omit(opts, 'host', 'path', 'port'),\n socket,\n servername: net.isIP(servername) ? undefined : servername,\n });\n }\n\n return socket;\n }\n\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debugLog('Replaying proxy buffer for failed request');\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n\n return fakeSocket;\n }\n} HttpsProxyAgent.__initStatic();\n\nfunction resume(socket) {\n socket.resume();\n}\n\nfunction omit(\n obj,\n ...keys\n)\n\n {\n const ret = {}\n\n;\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n\nexport { HttpsProxyAgent };\n//# sourceMappingURL=index.js.map\n", + "import * as http from 'node:http';\nimport 'node:https';\n\n/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n\nconst INTERNAL = Symbol('AgentBaseInternalState');\n\nclass Agent extends http.Agent {\n\n // Set by `http.Agent` - missing from `@types/node`\n\n constructor(opts) {\n super(opts);\n this[INTERNAL] = {};\n }\n\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options) {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n if (typeof (options ).secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string') return false;\n return stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);\n }\n\n createSocket(req, options, cb) {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then(socket => {\n if (socket instanceof http.Agent) {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, cb);\n }\n\n createConnection() {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n\n get defaultPort() {\n return this[INTERNAL].defaultPort ?? (this.protocol === 'https:' ? 443 : 80);\n }\n\n set defaultPort(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n\n get protocol() {\n return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? 'https:' : 'http:');\n }\n\n set protocol(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\n\nexport { Agent };\n//# sourceMappingURL=base.js.map\n", + "import { debug } from '@sentry/core';\n\nfunction debugLog(...args) {\n debug.log('[https-proxy-agent:parse-proxy-response]', ...args);\n}\n\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n\n function read() {\n const b = socket.read();\n if (b) ondata(b);\n else socket.once('readable', read);\n }\n\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n\n function onend() {\n cleanup();\n debugLog('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n\n function onerror(err) {\n cleanup();\n debugLog('onerror %o', err);\n reject(err);\n }\n\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n\n if (endOfHeaders === -1) {\n // keep buffering\n debugLog('have not received end of HTTP headers yet...');\n read();\n return;\n }\n\n const headerParts = buffered.subarray(0, endOfHeaders).toString('ascii').split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +(firstLineParts[1] || 0);\n const statusText = firstLineParts.slice(2).join(' ');\n const headers = {};\n for (const header of headerParts) {\n if (!header) continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n } else if (Array.isArray(current)) {\n current.push(value);\n } else {\n headers[key] = value;\n }\n }\n debugLog('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n\n socket.on('error', onerror);\n socket.on('end', onend);\n\n read();\n });\n}\n\nexport { parseProxyResponse };\n//# sourceMappingURL=parse-proxy-response.js.map\n", + "import { envToBool } from '@sentry/core';\n\n/**\n * Parse the spotlight option with proper precedence:\n * - `false` or explicit string from options: use as-is\n * - `true`: enable spotlight, but prefer a custom URL from the env var if set\n * - `undefined`: defer entirely to the env var (bool or URL)\n */\nfunction getSpotlightConfig(optionsSpotlight) {\n if (optionsSpotlight === false) {\n return false;\n }\n\n if (typeof optionsSpotlight === 'string') {\n return optionsSpotlight;\n }\n\n // optionsSpotlight is true or undefined\n const envBool = envToBool(process.env.SENTRY_SPOTLIGHT, { strict: true });\n const envUrl = envBool === null && process.env.SENTRY_SPOTLIGHT ? process.env.SENTRY_SPOTLIGHT : undefined;\n\n return optionsSpotlight === true\n ? (envUrl ?? true) // true: use env URL if present, otherwise true\n : (envBool ?? envUrl); // undefined: use env var (bool or URL)\n}\n\nexport { getSpotlightConfig };\n//# sourceMappingURL=spotlight.js.map\n", + "import { posix, sep } from 'node:path';\nimport { dirname } from '@sentry/core';\n\n/** normalizes Windows paths */\nfunction normalizeWindowsPath(path) {\n return path\n .replace(/^[A-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/'); // replace all `\\` instances with `/`\n}\n\n/** Creates a function that gets the module name from a filename */\nfunction createGetModuleFromFilename(\n basePath = process.argv[1] ? dirname(process.argv[1]) : process.cwd(),\n isWindows = sep === '\\\\',\n) {\n const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;\n\n return (filename) => {\n if (!filename) {\n return;\n }\n\n const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;\n\n // eslint-disable-next-line prefer-const\n let { dir, base: file, ext } = posix.parse(normalizedFilename);\n\n if (ext === '.js' || ext === '.mjs' || ext === '.cjs') {\n file = file.slice(0, ext.length * -1);\n }\n\n // The file name might be URI-encoded which we want to decode to\n // the original file name.\n const decodedFile = decodeURIComponent(file);\n\n if (!dir) {\n // No dirname whatsoever\n dir = '.';\n }\n\n const n = dir.lastIndexOf('/node_modules');\n if (n > -1) {\n return `${dir.slice(n + 14).replace(/\\//g, '.')}:${decodedFile}`;\n }\n\n // Let's see if it's a part of the main module\n // To be a part of main module, it has to share the same base\n if (dir.startsWith(normalizedBase)) {\n const moduleName = dir.slice(normalizedBase.length + 1).replace(/\\//g, '.');\n return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;\n }\n\n return decodedFile;\n };\n}\n\nexport { createGetModuleFromFilename };\n//# sourceMappingURL=module.js.map\n", + "import { createStackParser, nodeStackLineParser, GLOBAL_OBJ } from '@sentry/core';\nimport { createGetModuleFromFilename } from '../utils/module.js';\n\n/**\n * Returns a release dynamically from environment variables.\n */\n// eslint-disable-next-line complexity\nfunction getSentryRelease(fallback) {\n // Always read first as Sentry takes this as precedence\n if (process.env.SENTRY_RELEASE) {\n return process.env.SENTRY_RELEASE;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (GLOBAL_OBJ.SENTRY_RELEASE?.id) {\n return GLOBAL_OBJ.SENTRY_RELEASE.id;\n }\n\n // This list is in approximate alpha order, separated into 3 categories:\n // 1. Git providers\n // 2. CI providers with specific environment variables (has the provider name in the variable name)\n // 3. CI providers with generic environment variables (checked for last to prevent possible false positives)\n\n const possibleReleaseNameOfGitProvider =\n // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables\n process.env['GITHUB_SHA'] ||\n // GitLab CI - https://docs.gitlab.com/ee/ci/variables/predefined_variables.html\n process.env['CI_MERGE_REQUEST_SOURCE_BRANCH_SHA'] ||\n process.env['CI_BUILD_REF'] ||\n process.env['CI_COMMIT_SHA'] ||\n // Bitbucket - https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/\n process.env['BITBUCKET_COMMIT'];\n\n const possibleReleaseNameOfCiProvidersWithSpecificEnvVar =\n // AppVeyor - https://www.appveyor.com/docs/environment-variables/\n process.env['APPVEYOR_PULL_REQUEST_HEAD_COMMIT'] ||\n process.env['APPVEYOR_REPO_COMMIT'] ||\n // AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html\n process.env['CODEBUILD_RESOLVED_SOURCE_VERSION'] ||\n // AWS Amplify - https://docs.aws.amazon.com/amplify/latest/userguide/environment-variables.html\n process.env['AWS_COMMIT_ID'] ||\n // Azure Pipelines - https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml\n process.env['BUILD_SOURCEVERSION'] ||\n // Bitrise - https://devcenter.bitrise.io/builds/available-environment-variables/\n process.env['GIT_CLONE_COMMIT_HASH'] ||\n // Buddy CI - https://buddy.works/docs/pipelines/environment-variables#default-environment-variables\n process.env['BUDDY_EXECUTION_REVISION'] ||\n // Builtkite - https://buildkite.com/docs/pipelines/environment-variables\n process.env['BUILDKITE_COMMIT'] ||\n // CircleCI - https://circleci.com/docs/variables/\n process.env['CIRCLE_SHA1'] ||\n // Cirrus CI - https://cirrus-ci.org/guide/writing-tasks/#environment-variables\n process.env['CIRRUS_CHANGE_IN_REPO'] ||\n // Codefresh - https://codefresh.io/docs/docs/codefresh-yaml/variables/\n process.env['CF_REVISION'] ||\n // Codemagic - https://docs.codemagic.io/yaml-basic-configuration/environment-variables/\n process.env['CM_COMMIT'] ||\n // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables\n process.env['CF_PAGES_COMMIT_SHA'] ||\n // Drone - https://docs.drone.io/pipeline/environment/reference/\n process.env['DRONE_COMMIT_SHA'] ||\n // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables\n process.env['FC_GIT_COMMIT_SHA'] ||\n // Heroku #1 https://devcenter.heroku.com/articles/heroku-ci\n process.env['HEROKU_TEST_RUN_COMMIT_VERSION'] ||\n // Heroku #2 https://devcenter.heroku.com/articles/dyno-metadata#dyno-metadata\n process.env['HEROKU_BUILD_COMMIT'] ||\n // Heroku #3 (deprecated by Heroku, kept for backward compatibility)\n process.env['HEROKU_SLUG_COMMIT'] ||\n // Railway - https://docs.railway.app/reference/variables#git-variables\n process.env['RAILWAY_GIT_COMMIT_SHA'] ||\n // Render - https://render.com/docs/environment-variables\n process.env['RENDER_GIT_COMMIT'] ||\n // Semaphore CI - https://docs.semaphoreci.com/ci-cd-environment/environment-variables\n process.env['SEMAPHORE_GIT_SHA'] ||\n // TravisCI - https://docs.travis-ci.com/user/environment-variables/#default-environment-variables\n process.env['TRAVIS_PULL_REQUEST_SHA'] ||\n // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables\n process.env['VERCEL_GIT_COMMIT_SHA'] ||\n process.env['VERCEL_GITHUB_COMMIT_SHA'] ||\n process.env['VERCEL_GITLAB_COMMIT_SHA'] ||\n process.env['VERCEL_BITBUCKET_COMMIT_SHA'] ||\n // Zeit (now known as Vercel)\n process.env['ZEIT_GITHUB_COMMIT_SHA'] ||\n process.env['ZEIT_GITLAB_COMMIT_SHA'] ||\n process.env['ZEIT_BITBUCKET_COMMIT_SHA'];\n\n const possibleReleaseNameOfCiProvidersWithGenericEnvVar =\n // CloudBees CodeShip - https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables\n process.env['CI_COMMIT_ID'] ||\n // Coolify - https://coolify.io/docs/knowledge-base/environment-variables\n process.env['SOURCE_COMMIT'] ||\n // Heroku #3 https://devcenter.heroku.com/changelog-items/630\n process.env['SOURCE_VERSION'] ||\n // Jenkins - https://plugins.jenkins.io/git/#environment-variables\n process.env['GIT_COMMIT'] ||\n // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata\n process.env['COMMIT_REF'] ||\n // TeamCity - https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html\n process.env['BUILD_VCS_NUMBER'] ||\n // Woodpecker CI - https://woodpecker-ci.org/docs/usage/environment\n process.env['CI_COMMIT_SHA'];\n\n return (\n possibleReleaseNameOfGitProvider ||\n possibleReleaseNameOfCiProvidersWithSpecificEnvVar ||\n possibleReleaseNameOfCiProvidersWithGenericEnvVar ||\n fallback\n );\n}\n\n/** Node.js stack parser */\nconst defaultStackParser = createStackParser(nodeStackLineParser(createGetModuleFromFilename()));\n\nexport { defaultStackParser, getSentryRelease };\n//# sourceMappingURL=api.js.map\n", + "import * as os from 'node:os';\nimport { trace } from '@opentelemetry/api';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { ServerRuntimeClient, applySdkMetadata, debug, _INTERNAL_flushLogsBuffer, SDK_VERSION, _INTERNAL_clearAiProviderSkips } from '@sentry/core';\nimport { getTraceContextForScope } from '@sentry/opentelemetry';\nimport { threadId, isMainThread } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS = 60000; // 60s was chosen arbitrarily\n\n/** A client for using Sentry with Node & OpenTelemetry. */\nclass NodeClient extends ServerRuntimeClient {\n\n constructor(options) {\n const serverName =\n options.includeServerName === false\n ? undefined\n : options.serverName || global.process.env.SENTRY_NAME || os.hostname();\n\n const clientOptions = {\n ...options,\n platform: 'node',\n // Use provided runtime or default to 'node' with current process version\n runtime: options.runtime || { name: 'node', version: global.process.version },\n serverName,\n };\n\n if (options.openTelemetryInstrumentations) {\n registerInstrumentations({\n instrumentations: options.openTelemetryInstrumentations,\n });\n }\n\n applySdkMetadata(clientOptions, 'node');\n\n debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${isMainThread ? 'main' : `worker-${threadId}`}.`);\n\n super(clientOptions);\n\n if (this.getOptions().enableLogs) {\n this._logOnExitFlushListener = () => {\n _INTERNAL_flushLogsBuffer(this);\n };\n\n if (serverName) {\n this.on('beforeCaptureLog', log => {\n log.attributes = {\n ...log.attributes,\n 'server.address': serverName,\n };\n });\n }\n\n process.on('beforeExit', this._logOnExitFlushListener);\n }\n }\n\n /** Get the OTEL tracer. */\n get tracer() {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/node';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async flush(timeout) {\n await this.traceProvider?.forceFlush();\n\n if (this.getOptions().sendClientReports) {\n this._flushOutcomes();\n }\n\n return super.flush(timeout);\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async close(timeout) {\n if (this._clientReportInterval) {\n clearInterval(this._clientReportInterval);\n }\n\n if (this._clientReportOnExitFlushListener) {\n process.off('beforeExit', this._clientReportOnExitFlushListener);\n }\n\n if (this._logOnExitFlushListener) {\n process.off('beforeExit', this._logOnExitFlushListener);\n }\n\n const allEventsSent = await super.close(timeout);\n if (this.traceProvider) {\n await this.traceProvider.shutdown();\n }\n\n return allEventsSent;\n }\n\n /**\n * Will start tracking client reports for this client.\n *\n * NOTICE: This method will create an interval that is periodically called and attach a `process.on('beforeExit')`\n * hook. To clean up these resources, call `.close()` when you no longer intend to use the client. Not doing so will\n * result in a memory leak.\n */\n // The reason client reports need to be manually activated with this method instead of just enabling them in a\n // constructor, is that if users periodically and unboundedly create new clients, we will create more and more\n // intervals and beforeExit listeners, thus leaking memory. In these situations, users are required to call\n // `client.close()` in order to dispose of the acquired resources.\n // We assume that calling this method in Sentry.init() is a sensible default, because calling Sentry.init() over and\n // over again would also result in memory leaks.\n // Note: We have experimented with using `FinalizationRegisty` to clear the interval when the client is garbage\n // collected, but it did not work, because the cleanup function never got called.\n startClientReportTracking() {\n const clientOptions = this.getOptions();\n if (clientOptions.sendClientReports) {\n this._clientReportOnExitFlushListener = () => {\n this._flushOutcomes();\n };\n\n this._clientReportInterval = setInterval(() => {\n DEBUG_BUILD && debug.log('Flushing client reports based on interval.');\n this._flushOutcomes();\n }, clientOptions.clientReportFlushInterval ?? DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS)\n // Unref is critical for not preventing the process from exiting because the interval is active.\n .unref();\n\n process.on('beforeExit', this._clientReportOnExitFlushListener);\n }\n }\n\n /** @inheritDoc */\n _setupIntegrations() {\n // Clear AI provider skip registrations before setting up integrations\n // This ensures a clean state between different client initializations\n // (e.g., when LangChain skips OpenAI in one client, but a subsequent client uses OpenAI standalone)\n _INTERNAL_clearAiProviderSkips();\n super._setupIntegrations();\n }\n\n /** Custom implementation for OTEL, so we can handle scope-span linking. */\n _getTraceInfoFromScope(\n scope,\n ) {\n if (!scope) {\n return [undefined, undefined];\n }\n\n return getTraceContextForScope(this, scope);\n }\n}\n\nexport { NodeClient };\n//# sourceMappingURL=client.js.map\n", + "import { GLOBAL_OBJ, debug } from '@sentry/core';\nimport { createAddHookMessageChannel } from 'import-in-the-middle';\nimport * as moduleModule from 'module';\nimport { supportsEsmLoaderHooks } from '../utils/detection.js';\n\n/**\n * Initialize the ESM loader - This method is private and not part of the public\n * API.\n *\n * @ignore\n */\nfunction initializeEsmLoader() {\n if (!supportsEsmLoaderHooks()) {\n return;\n }\n\n if (!GLOBAL_OBJ._sentryEsmLoaderHookRegistered) {\n GLOBAL_OBJ._sentryEsmLoaderHookRegistered = true;\n\n try {\n const { addHookMessagePort } = createAddHookMessageChannel();\n // @ts-expect-error register is available in these versions\n moduleModule.register('import-in-the-middle/hook.mjs', import.meta.url, {\n data: { addHookMessagePort, include: [] },\n transferList: [addHookMessagePort],\n });\n } catch (error) {\n debug.warn(\"Failed to register 'import-in-the-middle' hook\", error);\n }\n }\n}\n\nexport { initializeEsmLoader };\n//# sourceMappingURL=esmLoader.js.map\n", + "import { debug, consoleSandbox, getCurrentScope, applySdkMetadata, envToBool, stackParserFromStackParserOptions, getIntegrationsToSetup, propagationContextFromHeaders, inboundFiltersIntegration, functionToStringIntegration, linkedErrorsIntegration, requestDataIntegration, conversationIdIntegration, consoleIntegration, hasSpansEnabled } from '@sentry/core';\nimport { setOpenTelemetryContextAsyncContextStrategy, enhanceDscWithOpenTelemetryRootSpanName, setupEventContextTrace, openTelemetrySetupCheck } from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { childProcessIntegration } from '../integrations/childProcess.js';\nimport { nodeContextIntegration } from '../integrations/context.js';\nimport { contextLinesIntegration } from '../integrations/contextlines.js';\nimport { httpIntegration } from '../integrations/http/index.js';\nimport { localVariablesIntegration } from '../integrations/local-variables/index.js';\nimport { modulesIntegration } from '../integrations/modules.js';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch/index.js';\nimport { onUncaughtExceptionIntegration } from '../integrations/onuncaughtexception.js';\nimport { onUnhandledRejectionIntegration } from '../integrations/onunhandledrejection.js';\nimport { processSessionIntegration } from '../integrations/processSession.js';\nimport { INTEGRATION_NAME, spotlightIntegration } from '../integrations/spotlight.js';\nimport { systemErrorIntegration } from '../integrations/systemError.js';\nimport { makeNodeTransport } from '../transports/http.js';\nimport { isCjs } from '../utils/detection.js';\nimport { getSpotlightConfig } from '../utils/spotlight.js';\nimport { defaultStackParser, getSentryRelease } from './api.js';\nimport { NodeClient } from './client.js';\nimport { initializeEsmLoader } from './esmLoader.js';\n\n/**\n * Get default integrations for the Node-Core SDK.\n */\nfunction getDefaultIntegrations() {\n return [\n // Common\n // TODO(v11): Replace with `eventFiltersIntegration` once we remove the deprecated `inboundFiltersIntegration`\n // eslint-disable-next-line deprecation/deprecation\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n linkedErrorsIntegration(),\n requestDataIntegration(),\n systemErrorIntegration(),\n conversationIdIntegration(),\n // Native Wrappers\n consoleIntegration(),\n httpIntegration(),\n nativeNodeFetchIntegration(),\n // Global Handlers\n onUncaughtExceptionIntegration(),\n onUnhandledRejectionIntegration(),\n // Event Info\n contextLinesIntegration(),\n localVariablesIntegration(),\n nodeContextIntegration(),\n childProcessIntegration(),\n processSessionIntegration(),\n modulesIntegration(),\n ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nfunction init(options = {}) {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nfunction initWithoutDefaultIntegrations(options = {}) {\n return _init(options, () => []);\n}\n\n/**\n * Initialize Sentry for Node, without performance instrumentation.\n */\nfunction _init(\n _options = {},\n getDefaultIntegrationsImpl,\n) {\n const options = getClientOptions(_options, getDefaultIntegrationsImpl);\n\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n debug.enable();\n } else {\n // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n\n if (options.registerEsmLoaderHooks !== false) {\n initializeEsmLoader();\n }\n\n setOpenTelemetryContextAsyncContextStrategy();\n\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n if (options.spotlight && !options.integrations.some(({ name }) => name === INTEGRATION_NAME)) {\n options.integrations.push(\n spotlightIntegration({\n sidecarUrl: typeof options.spotlight === 'string' ? options.spotlight : undefined,\n }),\n );\n }\n\n applySdkMetadata(options, 'node-core');\n\n const client = new NodeClient(options);\n // The client is on the current scope, from where it generally is inherited\n getCurrentScope().setClient(client);\n\n client.init();\n\n debug.log(`SDK initialized from ${isCjs() ? 'CommonJS' : 'ESM'}`);\n\n client.startClientReportTracking();\n\n updateScopeFromEnvVariables();\n\n enhanceDscWithOpenTelemetryRootSpanName(client);\n setupEventContextTrace(client);\n\n // Ensure we flush events when vercel functions are ended\n // See: https://vercel.com/docs/functions/functions-api-reference#sigterm-signal\n if (process.env.VERCEL) {\n process.on('SIGTERM', async () => {\n // We have 500ms for processing here, so we try to make sure to have enough time to send the events\n await client.flush(200);\n });\n }\n\n return client;\n}\n\n/**\n * Validate that your OpenTelemetry setup is correct.\n */\nfunction validateOpenTelemetrySetup() {\n if (!DEBUG_BUILD) {\n return;\n }\n\n const setup = openTelemetrySetupCheck();\n\n const required = ['SentryContextManager', 'SentryPropagator'];\n\n if (hasSpansEnabled()) {\n required.push('SentrySpanProcessor');\n }\n\n for (const k of required) {\n if (!setup.includes(k)) {\n debug.error(\n `You have to set up the ${k}. Without this, the OpenTelemetry & Sentry integration will not work properly.`,\n );\n }\n }\n\n if (!setup.includes('SentrySampler')) {\n debug.warn(\n 'You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.',\n );\n }\n}\n\nfunction getClientOptions(\n options,\n getDefaultIntegrationsImpl,\n) {\n const release = getRelease(options.release);\n\n const spotlight = getSpotlightConfig(options.spotlight);\n\n const tracesSampleRate = getTracesSampleRate(options.tracesSampleRate);\n\n const mergedOptions = {\n ...options,\n dsn: options.dsn ?? process.env.SENTRY_DSN,\n environment: options.environment ?? process.env.SENTRY_ENVIRONMENT,\n sendClientReports: options.sendClientReports ?? true,\n transport: options.transport ?? makeNodeTransport,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n release,\n tracesSampleRate,\n spotlight,\n debug: envToBool(options.debug ?? process.env.SENTRY_DEBUG),\n };\n\n const integrations = options.integrations;\n const defaultIntegrations = options.defaultIntegrations ?? getDefaultIntegrationsImpl(mergedOptions);\n\n return {\n ...mergedOptions,\n integrations: getIntegrationsToSetup({\n defaultIntegrations,\n integrations,\n }),\n };\n}\n\nfunction getRelease(release) {\n if (release !== undefined) {\n return release;\n }\n\n const detectedRelease = getSentryRelease();\n if (detectedRelease !== undefined) {\n return detectedRelease;\n }\n\n return undefined;\n}\n\nfunction getTracesSampleRate(tracesSampleRate) {\n if (tracesSampleRate !== undefined) {\n return tracesSampleRate;\n }\n\n const sampleRateFromEnv = process.env.SENTRY_TRACES_SAMPLE_RATE;\n if (!sampleRateFromEnv) {\n return undefined;\n }\n\n const parsed = parseFloat(sampleRateFromEnv);\n return isFinite(parsed) ? parsed : undefined;\n}\n\n/**\n * Update scope and propagation context based on environmental variables.\n *\n * See https://github.com/getsentry/rfcs/blob/main/text/0071-continue-trace-over-process-boundaries.md\n * for more details.\n */\nfunction updateScopeFromEnvVariables() {\n if (envToBool(process.env.SENTRY_USE_ENVIRONMENT) !== false) {\n const sentryTraceEnv = process.env.SENTRY_TRACE;\n const baggageEnv = process.env.SENTRY_BAGGAGE;\n const propagationContext = propagationContextFromHeaders(sentryTraceEnv, baggageEnv);\n getCurrentScope().setPropagationContext(propagationContext);\n }\n}\n\nexport { getDefaultIntegrations, init, initWithoutDefaultIntegrations, validateOpenTelemetrySetup };\n//# sourceMappingURL=index.js.map\n", + "import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\n\n/** Adds an origin to an OTEL Span. */\nfunction addOriginToSpan(span, origin) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n}\n\nexport { addOriginToSpan };\n//# sourceMappingURL=addOriginToSpan.js.map\n", + "/** Build a full URL from request options or a ClientRequest. */\nfunction getRequestUrl(requestOptions\n\n) {\n const protocol = requestOptions.protocol || '';\n const hostname = requestOptions.hostname || requestOptions.host || '';\n // Don't log standard :80 (http) and :443 (https) ports to reduce the noise\n // Also don't add port if the hostname already includes a port\n const port =\n !requestOptions.port || requestOptions.port === 80 || requestOptions.port === 443 || /^(.*):(\\d+)$/.test(hostname)\n ? ''\n : `:${requestOptions.port}`;\n const path = requestOptions.path ? requestOptions.path : '/';\n return `${protocol}//${hostname}${port}${path}`;\n}\n\nexport { getRequestUrl };\n//# sourceMappingURL=getRequestUrl.js.map\n", + "import { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici';\nimport { defineIntegration, stripDataUrlContent, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getClient, hasSpansEnabled } from '@sentry/core';\nimport { generateInstrumentOnce, SentryNodeFetchInstrumentation } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\nconst instrumentOtelNodeFetch = generateInstrumentOnce(\n INTEGRATION_NAME,\n UndiciInstrumentation,\n (options) => {\n return _getConfigWithDefaults(options);\n },\n);\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n const instrumentSpans = _shouldInstrumentSpans(options, getClient()?.getOptions());\n\n // This is the \"regular\" OTEL instrumentation that emits spans\n if (instrumentSpans) {\n instrumentOtelNodeFetch(options);\n }\n\n // This is the Sentry-specific instrumentation that creates breadcrumbs & propagates traces\n // This must be registered after the OTEL one, to ensure that the core trace propagation logic takes presedence\n // Otherwise, the sentry-trace header may be set multiple times\n instrumentSentryNodeFetch(options);\n },\n };\n}) ;\n\nconst nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n\n// Matching the behavior of the base instrumentation\nfunction getAbsoluteUrl(origin, path = '/') {\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n}\n\nfunction _shouldInstrumentSpans(options, clientOptions = {}) {\n // If `spans` is passed in, it takes precedence\n // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n return typeof options.spans === 'boolean'\n ? options.spans\n : !clientOptions.skipOpenTelemetrySetup && hasSpansEnabled(clientOptions);\n}\n\n/** Exported only for tests. */\nfunction _getConfigWithDefaults(options = {}) {\n const instrumentationConfig = {\n requireParentforSpans: false,\n ignoreRequestHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n const shouldIgnore = _ignoreOutgoingRequests && url && _ignoreOutgoingRequests(url);\n\n return !!shouldIgnore;\n },\n startSpanHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Sanitize data URLs to prevent long base64 strings in span attributes\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n 'http.url': sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_URL_FULL]: sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: `${request.method || 'GET'} ${sanitizedUrl}`,\n };\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n };\n },\n requestHook: options.requestHook,\n responseHook: options.responseHook,\n headersToSpanAttributes: options.headersToSpanAttributes,\n } ;\n\n return instrumentationConfig;\n}\n\nexport { _getConfigWithDefaults, nativeNodeFetchIntegration };\n//# sourceMappingURL=node-fetch.js.map\n", + "import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';\nimport { defineIntegration, getIsolationScope, getDefaultIsolationScope, debug, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, httpRequestToRequestData, captureException } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan, ensureIsWrapped } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\n\nconst INTEGRATION_NAME = 'Express';\n\nfunction requestHook(span) {\n addOriginToSpan(span, 'auto.http.otel.express');\n\n const attributes = spanToJSON(span).data;\n // this is one of: middleware, request_handler, router\n const type = attributes['express.type'];\n\n if (type) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.express`);\n }\n\n // Also update the name, we don't need to \"middleware - \" prefix\n const name = attributes['express.name'];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n}\n\nfunction spanNameHook(info, defaultName) {\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is still default isolation scope - skipping setting transactionName');\n return defaultName;\n }\n if (info.layerType === 'request_handler') {\n // type cast b/c Otel unfortunately types info.request as any :(\n const req = info.request ;\n const method = req.method ? req.method.toUpperCase() : 'GET';\n getIsolationScope().setTransactionName(`${method} ${info.route}`);\n }\n return defaultName;\n}\n\nconst instrumentExpress = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new ExpressInstrumentation({\n requestHook: span => requestHook(span),\n spanNameHook: (info, defaultName) => spanNameHook(info, defaultName),\n }),\n);\n\nconst _expressIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentExpress();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Express](https://expressjs.com/).\n *\n * If you also want to capture errors, you need to call `setupExpressErrorHandler(app)` after you set up your Express server.\n *\n * For more information, see the [express documentation](https://docs.sentry.io/platforms/javascript/guides/express/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.expressIntegration()],\n * })\n * ```\n */\nconst expressIntegration = defineIntegration(_expressIntegration);\n\n/**\n * An Express-compatible error handler.\n */\nfunction expressErrorHandler(options) {\n return function sentryErrorMiddleware(\n error,\n request,\n res,\n next,\n ) {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n // When an error happens, the `expressRequestHandler` middleware does not run, so we set it here too\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n\n if (shouldHandleError(error)) {\n const eventId = captureException(error, { mechanism: { type: 'auto.middleware.express', handled: false } });\n (res ).sentry = eventId;\n }\n\n next(error);\n };\n}\n\nfunction expressRequestHandler() {\n return function sentryRequestMiddleware(\n request,\n _res,\n next,\n ) {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n next();\n };\n}\n\n/**\n * Add an Express error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const express = require(\"express\");\n *\n * const app = express();\n *\n * // Add your routes, etc.\n *\n * // Add this after all routes,\n * // but before any and other error-handling middlewares are defined\n * Sentry.setupExpressErrorHandler(app);\n *\n * app.listen(3000);\n * ```\n */\nfunction setupExpressErrorHandler(\n app,\n options,\n) {\n app.use(expressRequestHandler());\n app.use(expressErrorHandler(options));\n ensureIsWrapped(app.use, 'express');\n}\n\nfunction getStatusCodeFromResponse(error) {\n const statusCode = error.status || error.statusCode || error.status_code || error.output?.statusCode;\n return statusCode ? parseInt(statusCode , 10) : 500;\n}\n\n/** Returns true if response code is internal server error */\nfunction defaultShouldHandleError(error) {\n const status = getStatusCodeFromResponse(error);\n return status >= 500;\n}\n\nexport { expressErrorHandler, expressIntegration, instrumentExpress, setupExpressErrorHandler };\n//# sourceMappingURL=express.js.map\n", + "/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n", + "import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { debug, defineIntegration, getClient, getIsolationScope, captureException, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build.js';\nimport { FastifyInstrumentationV3 } from './v3/instrumentation.js';\n\n/**\n * Options for the Fastify integration.\n *\n * `shouldHandleError` - Callback method deciding whether error should be captured and sent to Sentry\n * This is used on Fastify v5 where Sentry handles errors in the diagnostics channel.\n * Fastify v3 and v4 use `setupFastifyErrorHandler` instead.\n *\n * @example\n *\n * ```javascript\n * Sentry.init({\n * integrations: [\n * Sentry.fastifyIntegration({\n * shouldHandleError(_error, _request, reply) {\n * return reply.statusCode >= 500;\n * },\n * });\n * },\n * });\n * ```\n *\n */\n\nconst INTEGRATION_NAME = 'Fastify';\n\nconst instrumentFastifyV3 = generateInstrumentOnce(\n `${INTEGRATION_NAME}.v3`,\n () => new FastifyInstrumentationV3(),\n);\n\nfunction getFastifyIntegration() {\n const client = getClient();\n if (!client) {\n return undefined;\n } else {\n return client.getIntegrationByName(INTEGRATION_NAME);\n }\n}\n\nfunction handleFastifyError(\n\n error,\n request,\n reply,\n handlerOrigin,\n) {\n const shouldHandleError = getFastifyIntegration()?.getShouldHandleError() || defaultShouldHandleError;\n // Diagnostics channel runs before the onError hook, so we can use it to check if the handler was already registered\n if (handlerOrigin === 'diagnostics-channel') {\n this.diagnosticsChannelExists = true;\n }\n\n if (this.diagnosticsChannelExists && handlerOrigin === 'onError-hook') {\n DEBUG_BUILD &&\n debug.warn(\n 'Fastify error handler was already registered via diagnostics channel.',\n 'You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.',\n );\n\n // If the diagnostics channel already exists, we don't need to handle the error again\n return;\n }\n\n if (shouldHandleError(error, request, reply)) {\n captureException(error, { mechanism: { handled: false, type: 'auto.function.fastify' } });\n }\n}\n\nconst instrumentFastify = generateInstrumentOnce(`${INTEGRATION_NAME}.v5`, () => {\n const fastifyOtelInstrumentationInstance = new FastifyOtelInstrumentation();\n const plugin = fastifyOtelInstrumentationInstance.plugin();\n\n // This message handler works for Fastify versions 3, 4 and 5\n diagnosticsChannel.subscribe('fastify.initialization', message => {\n const fastifyInstance = (message ).fastify;\n\n fastifyInstance?.register(plugin).after(err => {\n if (err) {\n DEBUG_BUILD && debug.error('Failed to setup Fastify instrumentation', err);\n } else {\n instrumentClient();\n\n if (fastifyInstance) {\n instrumentOnRequest(fastifyInstance);\n }\n }\n });\n });\n\n // This diagnostics channel only works on Fastify version 5\n // For versions 3 and 4, we use `setupFastifyErrorHandler` instead\n diagnosticsChannel.subscribe('tracing:fastify.request.handler:error', message => {\n const { error, request, reply } = message\n\n;\n\n handleFastifyError.call(handleFastifyError, error, request, reply, 'diagnostics-channel');\n });\n\n // Returning this as Instrumentation to avoid leaking @fastify/otel types into the public API\n return fastifyOtelInstrumentationInstance ;\n});\n\nconst _fastifyIntegration = (({ shouldHandleError }) => {\n let _shouldHandleError;\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n _shouldHandleError = shouldHandleError || defaultShouldHandleError;\n\n instrumentFastifyV3();\n instrumentFastify();\n },\n getShouldHandleError() {\n return _shouldHandleError;\n },\n setShouldHandleError(fn) {\n _shouldHandleError = fn;\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Fastify](https://fastify.dev/).\n *\n * If you also want to capture errors, you need to call `setupFastifyErrorHandler(app)` after you set up your Fastify server.\n *\n * For more information, see the [fastify documentation](https://docs.sentry.io/platforms/javascript/guides/fastify/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.fastifyIntegration()],\n * })\n * ```\n */\nconst fastifyIntegration = defineIntegration((options = {}) =>\n _fastifyIntegration(options),\n);\n\n/**\n * Default function to determine if an error should be sent to Sentry\n *\n * 3xx and 4xx errors are not sent by default.\n */\nfunction defaultShouldHandleError(_error, _request, reply) {\n const statusCode = reply.statusCode;\n // 3xx and 4xx errors are not sent by default.\n return statusCode >= 500 || statusCode <= 299;\n}\n\n/**\n * Add an Fastify error handler to capture errors to Sentry.\n *\n * @param fastify The Fastify instance to which to add the error handler\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Fastify = require(\"fastify\");\n *\n * const app = Fastify();\n *\n * Sentry.setupFastifyErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen({ port: 3000 });\n * ```\n */\nfunction setupFastifyErrorHandler(fastify, options) {\n if (options?.shouldHandleError) {\n getFastifyIntegration()?.setShouldHandleError(options.shouldHandleError);\n }\n\n const plugin = Object.assign(\n function (fastify, _options, done) {\n fastify.addHook('onError', async (request, reply, error) => {\n handleFastifyError.call(handleFastifyError, error, request, reply, 'onError-hook');\n });\n done();\n },\n {\n [Symbol.for('skip-override')]: true,\n [Symbol.for('fastify.display-name')]: 'sentry-fastify-error-handler',\n },\n );\n\n fastify.register(plugin);\n}\n\nfunction addFastifySpanAttributes(span) {\n const spanJSON = spanToJSON(span);\n const spanName = spanJSON.description;\n const attributes = spanJSON.data;\n\n const type = attributes['fastify.type'];\n\n const isHook = type === 'hook';\n const isHandler = type === spanName?.startsWith('handler -');\n // In @fastify/otel `request-handler` is separated by dash, not underscore\n const isRequestHandler = spanName === 'request' || type === 'request-handler';\n\n // If this is already set, or we have no fastify span, no need to process again...\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || (!isHandler && !isRequestHandler && !isHook)) {\n return;\n }\n\n const opPrefix = isHook ? 'hook' : isHandler ? 'middleware' : isRequestHandler ? 'request_handler' : '';\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${opPrefix}.fastify`,\n });\n\n const attrName = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n if (typeof attrName === 'string') {\n // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n // This is a bit of a hack, and not always working for all spans\n // But it's the best we can do without a proper API\n const updatedName = attrName.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n span.updateName(updatedName);\n }\n}\n\nfunction instrumentClient() {\n const client = getClient();\n if (client) {\n client.on('spanStart', (span) => {\n addFastifySpanAttributes(span);\n });\n }\n}\n\nfunction instrumentOnRequest(fastify) {\n fastify.addHook('onRequest', async (request, _reply) => {\n if (request.opentelemetry) {\n const { span } = request.opentelemetry();\n\n if (span) {\n addFastifySpanAttributes(span);\n }\n }\n\n const routeName = request.routeOptions?.url;\n const method = request.method || 'GET';\n\n getIsolationScope().setTransactionName(`${method} ${routeName}`);\n });\n}\n\nexport { fastifyIntegration, instrumentFastify, instrumentFastifyV3, setupFastifyErrorHandler };\n//# sourceMappingURL=index.js.map\n", + "import { context, trace, SpanStatusCode } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport { getIsolationScope, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getClient } from '@sentry/core';\nimport { FastifyNames, AttributeNames, FastifyTypes } from './enums/AttributeNames.js';\nimport { startSpan, endSpan, safeExecuteInTheMiddleMaybePromise } from './utils.js';\n\n// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** @knipignore */\n\nconst PACKAGE_VERSION = '0.1.0';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-fastify-v3';\nconst ANONYMOUS_NAME = 'anonymous';\n\n// The instrumentation creates a span for invocations of lifecycle hook handlers\n// that take `(request, reply, ...[, done])` arguments. Currently this is all\n// lifecycle hooks except `onRequestAbort`.\n// https://fastify.dev/docs/latest/Reference/Hooks\nconst hooksNamesToWrap = new Set([\n 'onTimeout',\n 'onRequest',\n 'preParsing',\n 'preValidation',\n 'preSerialization',\n 'preHandler',\n 'onSend',\n 'onResponse',\n 'onError',\n]);\n\n/**\n * Fastify instrumentation for OpenTelemetry\n */\nclass FastifyInstrumentationV3 extends InstrumentationBase {\n constructor(config = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition('fastify', ['>=3.0.0 <4'], moduleExports => {\n return this._patchConstructor(moduleExports);\n }),\n ];\n }\n\n _hookOnRequest() {\n const instrumentation = this;\n\n return function onRequest(request, reply, done) {\n if (!instrumentation.isEnabled()) {\n return done();\n }\n instrumentation._wrap(reply, 'send', instrumentation._patchSend());\n\n const anyRequest = request ;\n\n const rpcMetadata = getRPCMetadata(context.active());\n const routeName = anyRequest.routeOptions\n ? anyRequest.routeOptions.url // since fastify@4.10.0\n : request.routerPath;\n if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n rpcMetadata.route = routeName;\n }\n\n const method = request.method || 'GET';\n\n getIsolationScope().setTransactionName(`${method} ${routeName}`);\n done();\n };\n }\n\n _wrapHandler(\n pluginName,\n hookName,\n original,\n syncFunctionWithDone,\n ) {\n const instrumentation = this;\n this._diag.debug('Patching fastify route.handler function');\n\n return function ( ...args) {\n if (!instrumentation.isEnabled()) {\n return original.apply(this, args);\n }\n\n const name = original.name || pluginName || ANONYMOUS_NAME;\n const spanName = `${FastifyNames.MIDDLEWARE} - ${name}`;\n\n const reply = args[1] ;\n\n const span = startSpan(reply, instrumentation.tracer, spanName, {\n [AttributeNames.FASTIFY_TYPE]: FastifyTypes.MIDDLEWARE,\n [AttributeNames.PLUGIN_NAME]: pluginName,\n [AttributeNames.HOOK_NAME]: hookName,\n });\n\n const origDone = syncFunctionWithDone && (args[args.length - 1] );\n if (origDone) {\n args[args.length - 1] = function (...doneArgs) {\n endSpan(reply);\n origDone.apply(this, doneArgs);\n };\n }\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return safeExecuteInTheMiddleMaybePromise(\n () => {\n return original.apply(this, args);\n },\n err => {\n if (err instanceof Error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n span.recordException(err);\n }\n // async hooks should end the span as soon as the promise is resolved\n if (!syncFunctionWithDone) {\n endSpan(reply);\n }\n },\n );\n });\n };\n }\n\n _wrapAddHook() {\n const instrumentation = this;\n this._diag.debug('Patching fastify server.addHook function');\n\n // biome-ignore lint/complexity/useArrowFunction: \n return function (original) {\n return function wrappedAddHook( ...args) {\n const name = args[0] ;\n const handler = args[1] ;\n const pluginName = this.pluginName;\n if (!hooksNamesToWrap.has(name)) {\n return original.apply(this, args);\n }\n\n const syncFunctionWithDone =\n typeof args[args.length - 1] === 'function' && handler.constructor.name !== 'AsyncFunction';\n\n return original.apply(this, [\n name,\n instrumentation._wrapHandler(pluginName, name, handler, syncFunctionWithDone),\n ] );\n };\n };\n }\n\n _patchConstructor(moduleExports\n\n) {\n const instrumentation = this;\n\n function fastify( ...args) {\n const app = moduleExports.fastify.apply(this, args);\n app.addHook('onRequest', instrumentation._hookOnRequest());\n app.addHook('preHandler', instrumentation._hookPreHandler());\n\n instrumentClient();\n\n instrumentation._wrap(app, 'addHook', instrumentation._wrapAddHook());\n\n return app;\n }\n\n if (moduleExports.errorCodes !== undefined) {\n fastify.errorCodes = moduleExports.errorCodes;\n }\n fastify.fastify = fastify;\n fastify.default = fastify;\n return fastify;\n }\n\n _patchSend() {\n const instrumentation = this;\n this._diag.debug('Patching fastify reply.send function');\n\n return function patchSend(original) {\n return function send( ...args) {\n const maybeError = args[0];\n\n if (!instrumentation.isEnabled()) {\n return original.apply(this, args);\n }\n\n return safeExecuteInTheMiddle(\n () => {\n return original.apply(this, args);\n },\n err => {\n if (!err && maybeError instanceof Error) {\n // eslint-disable-next-line no-param-reassign\n err = maybeError;\n }\n endSpan(this, err);\n },\n );\n };\n };\n }\n\n _hookPreHandler() {\n const instrumentation = this;\n this._diag.debug('Patching fastify preHandler function');\n\n return function preHandler( request, reply, done) {\n if (!instrumentation.isEnabled()) {\n return done();\n }\n const anyRequest = request ;\n\n const handler = anyRequest.routeOptions?.handler || anyRequest.context?.handler;\n const handlerName = handler?.name.startsWith('bound ') ? handler.name.substring(6) : handler?.name;\n const spanName = `${FastifyNames.REQUEST_HANDLER} - ${handlerName || this.pluginName || ANONYMOUS_NAME}`;\n\n const spanAttributes = {\n [AttributeNames.PLUGIN_NAME]: this.pluginName,\n [AttributeNames.FASTIFY_TYPE]: FastifyTypes.REQUEST_HANDLER,\n // eslint-disable-next-line deprecation/deprecation\n [SEMATTRS_HTTP_ROUTE]: anyRequest.routeOptions\n ? anyRequest.routeOptions.url // since fastify@4.10.0\n : request.routerPath,\n };\n if (handlerName) {\n spanAttributes[AttributeNames.FASTIFY_NAME] = handlerName;\n }\n const span = startSpan(reply, instrumentation.tracer, spanName, spanAttributes);\n\n addFastifyV3SpanAttributes(span);\n\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n safeExecuteInTheMiddle(\n () => requestHook(span, { request }),\n e => {\n if (e) {\n instrumentation._diag.error('request hook failed', e);\n }\n },\n true,\n );\n }\n\n return context.with(trace.setSpan(context.active(), span), () => {\n done();\n });\n };\n }\n}\n\nfunction instrumentClient() {\n const client = getClient();\n if (client) {\n client.on('spanStart', (span) => {\n addFastifyV3SpanAttributes(span);\n });\n }\n}\n\nfunction addFastifyV3SpanAttributes(span) {\n const attributes = spanToJSON(span).data;\n\n // this is one of: middleware, request_handler\n const type = attributes['fastify.type'];\n\n // If this is already set, or we have no fastify span, no need to process again...\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n return;\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.fastify`,\n });\n\n // Also update the name, we don't need to \"middleware - \" prefix\n const name = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n if (typeof name === 'string') {\n // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n // This is a bit of a hack, and not always working for all spans\n // But it's the best we can do without a proper API\n const updatedName = name.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n span.updateName(updatedName);\n }\n}\n\nexport { FastifyInstrumentationV3 };\n//# sourceMappingURL=instrumentation.js.map\n", + "// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts\n//\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar AttributeNames; (function (AttributeNames) {\n const FASTIFY_NAME = 'fastify.name'; AttributeNames[\"FASTIFY_NAME\"] = FASTIFY_NAME;\n const FASTIFY_TYPE = 'fastify.type'; AttributeNames[\"FASTIFY_TYPE\"] = FASTIFY_TYPE;\n const HOOK_NAME = 'hook.name'; AttributeNames[\"HOOK_NAME\"] = HOOK_NAME;\n const PLUGIN_NAME = 'plugin.name'; AttributeNames[\"PLUGIN_NAME\"] = PLUGIN_NAME;\n})(AttributeNames || (AttributeNames = {}));\n\nvar FastifyTypes; (function (FastifyTypes) {\n const MIDDLEWARE = 'middleware'; FastifyTypes[\"MIDDLEWARE\"] = MIDDLEWARE;\n const REQUEST_HANDLER = 'request_handler'; FastifyTypes[\"REQUEST_HANDLER\"] = REQUEST_HANDLER;\n})(FastifyTypes || (FastifyTypes = {}));\n\nvar FastifyNames; (function (FastifyNames) {\n const MIDDLEWARE = 'middleware'; FastifyNames[\"MIDDLEWARE\"] = MIDDLEWARE;\n const REQUEST_HANDLER = 'request handler'; FastifyNames[\"REQUEST_HANDLER\"] = REQUEST_HANDLER;\n})(FastifyNames || (FastifyNames = {}));\n\nexport { AttributeNames, FastifyNames, FastifyTypes };\n//# sourceMappingURL=AttributeNames.js.map\n", + "import { SpanStatusCode } from '@opentelemetry/api';\nimport { spanRequestSymbol } from './constants.js';\n\n// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * Starts Span\n * @param reply - reply function\n * @param tracer - tracer\n * @param spanName - span name\n * @param spanAttributes - span attributes\n */\nfunction startSpan(\n reply,\n tracer,\n spanName,\n spanAttributes = {},\n) {\n const span = tracer.startSpan(spanName, { attributes: spanAttributes });\n\n const spans = reply[spanRequestSymbol] || [];\n spans.push(span);\n\n Object.defineProperty(reply, spanRequestSymbol, {\n enumerable: false,\n configurable: true,\n value: spans,\n });\n\n return span;\n}\n\n/**\n * Ends span\n * @param reply - reply function\n * @param err - error\n */\nfunction endSpan(reply, err) {\n const spans = reply[spanRequestSymbol] || [];\n // there is no active span, or it has already ended\n if (!spans.length) {\n return;\n }\n // biome-ignore lint/complexity/noForEach: \n spans.forEach((span) => {\n if (err) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n span.recordException(err);\n }\n span.end();\n });\n delete reply[spanRequestSymbol];\n}\n\n// @TODO after approve add this to instrumentation package and replace usage\n// when it will be released\n\n/**\n * This function handles the missing case from instrumentation package when\n * execute can either return a promise or void. And using async is not an\n * option as it is producing unwanted side effects.\n * @param execute - function to be executed\n * @param onFinish - function called when function executed\n * @param preventThrowingError - prevent to throw error when execute\n * function fails\n */\n\nfunction safeExecuteInTheMiddleMaybePromise(\n execute,\n onFinish,\n preventThrowingError,\n) {\n let error;\n let result = undefined;\n try {\n result = execute();\n\n if (isPromise(result)) {\n result.then(\n res => onFinish(undefined, res),\n err => onFinish(err),\n );\n }\n } catch (e) {\n error = e;\n } finally {\n if (!isPromise(result)) {\n onFinish(error, result);\n if (error && true) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\n\nfunction isPromise(val) {\n return (\n (typeof val === 'object' && val && typeof Object.getOwnPropertyDescriptor(val, 'then')?.value === 'function') ||\n false\n );\n}\n\nexport { endSpan, safeExecuteInTheMiddleMaybePromise, startSpan };\n//# sourceMappingURL=utils.js.map\n", + "// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst spanRequestSymbol = Symbol('opentelemetry.instrumentation.fastify.request_active_span');\n\nexport { spanRequestSymbol };\n//# sourceMappingURL=constants.js.map\n", + "import { SpanStatusCode } from '@opentelemetry/api';\nimport { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql';\nimport { spanToJSON, getRootSpan, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '@sentry/opentelemetry';\n\nconst INTEGRATION_NAME = 'Graphql';\n\nconst instrumentGraphql = generateInstrumentOnce(\n INTEGRATION_NAME,\n GraphQLInstrumentation,\n (_options) => {\n const options = getOptionsWithDefaults(_options);\n\n return {\n ...options,\n responseHook(span, result) {\n addOriginToSpan(span, 'auto.graphql.otel.graphql');\n\n // We want to ensure spans are marked as errored if there are errors in the result\n // We only do that if the span is not already marked with a status\n const resultWithMaybeError = result ;\n if (resultWithMaybeError.errors?.length && !spanToJSON(span).status) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n\n const attributes = spanToJSON(span).data;\n\n // If operation.name is not set, we fall back to use operation.type only\n const operationType = attributes['graphql.operation.type'];\n const operationName = attributes['graphql.operation.name'];\n\n if (options.useOperationNameForRootSpan && operationType) {\n const rootSpan = getRootSpan(span);\n const rootSpanAttributes = spanToJSON(rootSpan).data;\n\n const existingOperations = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION] || [];\n\n const newOperation = operationName ? `${operationType} ${operationName}` : `${operationType}`;\n\n // We keep track of each operation on the root span\n // This can either be a string, or an array of strings (if there are multiple operations)\n if (Array.isArray(existingOperations)) {\n (existingOperations ).push(newOperation);\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, existingOperations);\n } else if (typeof existingOperations === 'string') {\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, [existingOperations, newOperation]);\n } else {\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, newOperation);\n }\n\n if (!spanToJSON(rootSpan).data['original-description']) {\n rootSpan.setAttribute('original-description', spanToJSON(rootSpan).description);\n }\n // Important for e.g. @sentry/aws-serverless because this would otherwise overwrite the name again\n rootSpan.updateName(\n `${spanToJSON(rootSpan).data['original-description']} (${getGraphqlOperationNamesFromAttribute(\n existingOperations,\n )})`,\n );\n }\n },\n };\n },\n);\n\nconst _graphqlIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // We set defaults here, too, because otherwise we'd update the instrumentation config\n // to the config without defaults, as `generateInstrumentOnce` automatically calls `setConfig(options)`\n // when being called the second time\n instrumentGraphql(getOptionsWithDefaults(options));\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [graphql](https://www.npmjs.com/package/graphql) library.\n *\n * For more information, see the [`graphqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/graphql/).\n *\n * @param {GraphqlOptions} options Configuration options for the GraphQL integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.graphqlIntegration()],\n * });\n */\nconst graphqlIntegration = defineIntegration(_graphqlIntegration);\n\nfunction getOptionsWithDefaults(options) {\n return {\n ignoreResolveSpans: true,\n ignoreTrivialResolveSpans: true,\n useOperationNameForRootSpan: true,\n ...options,\n };\n}\n\n// copy from packages/opentelemetry/utils\nfunction getGraphqlOperationNamesFromAttribute(attr) {\n if (Array.isArray(attr)) {\n // oxlint-disable-next-line typescript/require-array-sort-compare\n const sorted = attr.slice().sort();\n\n // Up to 5 items, we just add all of them\n if (sorted.length <= 5) {\n return sorted.join(', ');\n } else {\n // Else, we add the first 5 and the diff of other operations\n return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n }\n }\n\n return `${attr}`;\n}\n\nexport { graphqlIntegration, instrumentGraphql };\n//# sourceMappingURL=graphql.js.map\n", + "import { KafkaJsInstrumentation } from '@opentelemetry/instrumentation-kafkajs';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Kafka';\n\nconst instrumentKafka = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new KafkaJsInstrumentation({\n consumerHook(span) {\n addOriginToSpan(span, 'auto.kafkajs.otel.consumer');\n },\n producerHook(span) {\n addOriginToSpan(span, 'auto.kafkajs.otel.producer');\n },\n }),\n);\n\nconst _kafkaIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentKafka();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [kafkajs](https://www.npmjs.com/package/kafkajs) library.\n *\n * For more information, see the [`kafkaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/kafka/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.kafkaIntegration()],\n * });\n */\nconst kafkaIntegration = defineIntegration(_kafkaIntegration);\n\nexport { instrumentKafka, kafkaIntegration };\n//# sourceMappingURL=kafka.js.map\n", + "import { LruMemoizerInstrumentation } from '@opentelemetry/instrumentation-lru-memoizer';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'LruMemoizer';\n\nconst instrumentLruMemoizer = generateInstrumentOnce(INTEGRATION_NAME, () => new LruMemoizerInstrumentation());\n\nconst _lruMemoizerIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentLruMemoizer();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [lru-memoizer](https://www.npmjs.com/package/lru-memoizer) library.\n *\n * For more information, see the [`lruMemoizerIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/lrumemoizer/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.lruMemoizerIntegration()],\n * });\n */\nconst lruMemoizerIntegration = defineIntegration(_lruMemoizerIntegration);\n\nexport { instrumentLruMemoizer, lruMemoizerIntegration };\n//# sourceMappingURL=lrumemoizer.js.map\n", + "import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongo';\n\nconst instrumentMongo = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new MongoDBInstrumentation({\n dbStatementSerializer: _defaultDbStatementSerializer,\n responseHook(span) {\n addOriginToSpan(span, 'auto.db.otel.mongo');\n },\n }),\n);\n\n/**\n * Replaces values in document with '?', hiding PII and helping grouping.\n */\nfunction _defaultDbStatementSerializer(commandObj) {\n const resultObj = _scrubStatement(commandObj);\n return JSON.stringify(resultObj);\n}\n\nfunction _scrubStatement(value) {\n if (Array.isArray(value)) {\n return value.map(element => _scrubStatement(element));\n }\n\n if (isCommandObj(value)) {\n const initial = {};\n return Object.entries(value)\n .map(([key, element]) => [key, _scrubStatement(element)])\n .reduce((prev, current) => {\n if (isCommandEntry(current)) {\n prev[current[0]] = current[1];\n }\n return prev;\n }, initial);\n }\n\n // A value like string or number, possible contains PII, scrub it\n return '?';\n}\n\nfunction isCommandObj(value) {\n return typeof value === 'object' && value !== null && !isBuffer(value);\n}\n\nfunction isBuffer(value) {\n let isBuffer = false;\n if (typeof Buffer !== 'undefined') {\n isBuffer = Buffer.isBuffer(value);\n }\n return isBuffer;\n}\n\nfunction isCommandEntry(value) {\n return Array.isArray(value);\n}\n\nconst _mongoIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMongo();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongodb](https://www.npmjs.com/package/mongodb) library.\n *\n * For more information, see the [`mongoIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongo/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mongoIntegration()],\n * });\n * ```\n */\nconst mongoIntegration = defineIntegration(_mongoIntegration);\n\nexport { _defaultDbStatementSerializer, instrumentMongo, mongoIntegration };\n//# sourceMappingURL=mongo.js.map\n", + "import { MongooseInstrumentation } from '@opentelemetry/instrumentation-mongoose';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongoose';\n\nconst instrumentMongoose = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new MongooseInstrumentation({\n responseHook(span) {\n addOriginToSpan(span, 'auto.db.otel.mongoose');\n },\n }),\n);\n\nconst _mongooseIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMongoose();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nconst mongooseIntegration = defineIntegration(_mongooseIntegration);\n\nexport { instrumentMongoose, mongooseIntegration };\n//# sourceMappingURL=mongoose.js.map\n", + "import { MySQLInstrumentation } from '@opentelemetry/instrumentation-mysql';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql';\n\nconst instrumentMysql = generateInstrumentOnce(INTEGRATION_NAME, () => new MySQLInstrumentation({}));\n\nconst _mysqlIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMysql();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql](https://www.npmjs.com/package/mysql) library.\n *\n * For more information, see the [`mysqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nconst mysqlIntegration = defineIntegration(_mysqlIntegration);\n\nexport { instrumentMysql, mysqlIntegration };\n//# sourceMappingURL=mysql.js.map\n", + "import { MySQL2Instrumentation } from '@opentelemetry/instrumentation-mysql2';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql2';\n\nconst instrumentMysql2 = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new MySQL2Instrumentation({\n responseHook(span) {\n addOriginToSpan(span, 'auto.db.otel.mysql2');\n },\n }),\n);\n\nconst _mysql2Integration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMysql2();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql2](https://www.npmjs.com/package/mysql2) library.\n *\n * For more information, see the [`mysql2Integration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql2/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nconst mysql2Integration = defineIntegration(_mysql2Integration);\n\nexport { instrumentMysql2, mysql2Integration };\n//# sourceMappingURL=mysql2.js.map\n", + "import { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_SENTRY_OP, truncate } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { getCacheKeySafely, getCacheOperation, shouldConsiderForCache, calculateCacheItemSize, isInCommands, GET_COMMANDS } from '../../utils/redisCache.js';\n\nconst INTEGRATION_NAME = 'Redis';\n\n/* Only exported for testing purposes */\nlet _redisOptions = {};\n\n/* Only exported for testing purposes */\nconst cacheResponseHook = (\n span,\n redisCommand,\n cmdArgs,\n response,\n) => {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.redis');\n\n const safeKey = getCacheKeySafely(redisCommand, cmdArgs);\n const cacheOperation = getCacheOperation(redisCommand);\n\n if (\n !safeKey ||\n !cacheOperation ||\n !_redisOptions.cachePrefixes ||\n !shouldConsiderForCache(redisCommand, safeKey, _redisOptions.cachePrefixes)\n ) {\n // not relevant for cache\n return;\n }\n\n // otel/ioredis seems to be using the old standard, as there was a change to those params: https://github.com/open-telemetry/opentelemetry-specification/issues/3199\n // We are using params based on the docs: https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/\n const networkPeerAddress = spanToJSON(span).data['net.peer.name'];\n const networkPeerPort = spanToJSON(span).data['net.peer.port'];\n if (networkPeerPort && networkPeerAddress) {\n span.setAttributes({ 'network.peer.address': networkPeerAddress, 'network.peer.port': networkPeerPort });\n }\n\n const cacheItemSize = calculateCacheItemSize(response);\n\n if (cacheItemSize) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, cacheItemSize);\n }\n\n if (isInCommands(GET_COMMANDS, redisCommand) && cacheItemSize !== undefined) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_HIT, cacheItemSize > 0);\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: cacheOperation,\n [SEMANTIC_ATTRIBUTE_CACHE_KEY]: safeKey,\n });\n\n // todo: change to string[] once EAP supports it\n const spanDescription = safeKey.join(', ');\n\n span.updateName(\n _redisOptions.maxCacheKeyLength ? truncate(spanDescription, _redisOptions.maxCacheKeyLength) : spanDescription,\n );\n};\n\nconst instrumentIORedis = generateInstrumentOnce(`${INTEGRATION_NAME}.IORedis`, () => {\n return new IORedisInstrumentation({\n responseHook: cacheResponseHook,\n });\n});\n\nconst instrumentRedisModule = generateInstrumentOnce(`${INTEGRATION_NAME}.Redis`, () => {\n return new RedisInstrumentation({\n responseHook: cacheResponseHook,\n });\n});\n\n/** To be able to preload all Redis OTel instrumentations with just one ID (\"Redis\"), all the instrumentations are generated in this one function */\nconst instrumentRedis = Object.assign(\n () => {\n instrumentIORedis();\n instrumentRedisModule();\n\n // todo: implement them gradually\n // new LegacyRedisInstrumentation({}),\n },\n { id: INTEGRATION_NAME },\n);\n\nconst _redisIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n _redisOptions = options;\n instrumentRedis();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [redis](https://www.npmjs.com/package/redis) and\n * [ioredis](https://www.npmjs.com/package/ioredis) libraries.\n *\n * For more information, see the [`redisIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/redis/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.redisIntegration()],\n * });\n * ```\n */\nconst redisIntegration = defineIntegration(_redisIntegration);\n\nexport { _redisOptions, cacheResponseHook, instrumentRedis, redisIntegration };\n//# sourceMappingURL=redis.js.map\n", + "const SINGLE_ARG_COMMANDS = ['get', 'set', 'setex'];\n\nconst GET_COMMANDS = ['get', 'mget'];\nconst SET_COMMANDS = ['set', 'setex'];\n// todo: del, expire\n\n/** Checks if a given command is in the list of redis commands.\n * Useful because commands can come in lowercase or uppercase (depending on the library). */\nfunction isInCommands(redisCommands, command) {\n return redisCommands.includes(command.toLowerCase());\n}\n\n/** Determine cache operation based on redis statement */\nfunction getCacheOperation(\n command,\n) {\n if (isInCommands(GET_COMMANDS, command)) {\n return 'cache.get';\n } else if (isInCommands(SET_COMMANDS, command)) {\n return 'cache.put';\n } else {\n return undefined;\n }\n}\n\nfunction keyHasPrefix(key, prefixes) {\n return prefixes.some(prefix => key.startsWith(prefix));\n}\n\n/** Safely converts a redis key to a string (comma-separated if there are multiple keys) */\nfunction getCacheKeySafely(redisCommand, cmdArgs) {\n try {\n if (cmdArgs.length === 0) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const processArg = (arg) => {\n if (typeof arg === 'string' || typeof arg === 'number' || Buffer.isBuffer(arg)) {\n return [arg.toString()];\n } else if (Array.isArray(arg)) {\n return flatten(arg.map(arg => processArg(arg)));\n } else {\n return [''];\n }\n };\n\n const firstArg = cmdArgs[0];\n if (isInCommands(SINGLE_ARG_COMMANDS, redisCommand) && firstArg != null) {\n return processArg(firstArg);\n }\n\n return flatten(cmdArgs.map(arg => processArg(arg)));\n } catch {\n return undefined;\n }\n}\n\n/** Determines whether a redis operation should be considered as \"cache operation\" by checking if a key is prefixed.\n * We only support certain commands (such as 'set', 'get', 'mget'). */\nfunction shouldConsiderForCache(redisCommand, keys, prefixes) {\n if (!getCacheOperation(redisCommand)) {\n return false;\n }\n\n for (const key of keys) {\n if (keyHasPrefix(key, prefixes)) {\n return true;\n }\n }\n return false;\n}\n\n/** Calculates size based on the cache response value */\nfunction calculateCacheItemSize(response) {\n const getSize = (value) => {\n try {\n if (Buffer.isBuffer(value)) return value.byteLength;\n else if (typeof value === 'string') return value.length;\n else if (typeof value === 'number') return value.toString().length;\n else if (value === null || value === undefined) return 0;\n return JSON.stringify(value).length;\n } catch {\n return undefined;\n }\n };\n\n return Array.isArray(response)\n ? response.reduce((acc, curr) => {\n const size = getSize(curr);\n return typeof size === 'number' ? (acc !== undefined ? acc + size : size) : acc;\n }, 0)\n : getSize(response);\n}\n\nfunction flatten(input) {\n const result = [];\n\n const flattenHelper = (input) => {\n input.forEach((el) => {\n if (Array.isArray(el)) {\n flattenHelper(el);\n } else {\n result.push(el);\n }\n });\n };\n\n flattenHelper(input);\n return result;\n}\n\nexport { GET_COMMANDS, SET_COMMANDS, calculateCacheItemSize, getCacheKeySafely, getCacheOperation, isInCommands, shouldConsiderForCache };\n//# sourceMappingURL=redisCache.js.map\n", + "import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Postgres';\n\nconst instrumentPostgres = generateInstrumentOnce(\n INTEGRATION_NAME,\n PgInstrumentation,\n (options) => ({\n requireParentSpan: true,\n requestHook(span) {\n addOriginToSpan(span, 'auto.db.otel.postgres');\n },\n ignoreConnectSpans: options?.ignoreConnectSpans ?? false,\n }),\n);\n\nconst _postgresIntegration = ((options) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentPostgres(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [pg](https://www.npmjs.com/package/pg) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.postgresIntegration()],\n * });\n * ```\n */\nconst postgresIntegration = defineIntegration(_postgresIntegration);\n\nexport { instrumentPostgres, postgresIntegration };\n//# sourceMappingURL=postgres.js.map\n", + "import { trace, context } from '@opentelemetry/api';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { ATTR_DB_OPERATION_NAME, ATTR_DB_QUERY_TEXT, ATTR_DB_SYSTEM_NAME, ATTR_DB_RESPONSE_STATUS_CODE, ATTR_ERROR_TYPE } from '@opentelemetry/semantic-conventions';\nimport { SDK_VERSION, debug, replaceExports, startSpanManual, SPAN_STATUS_ERROR, defineIntegration, instrumentPostgresJsSql } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\n\n// Instrumentation for https://github.com/porsager/postgres\n\n\nconst INTEGRATION_NAME = 'PostgresJs';\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <4'];\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\n// Marker to track if a query was created from an instrumented sql instance\n// This prevents double-spanning when both wrapper and prototype patches are active\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\nconst instrumentPostgresJs = generateInstrumentOnce(\n INTEGRATION_NAME,\n (options) =>\n new PostgresJsInstrumentation({\n requireParentSpan: options?.requireParentSpan ?? true,\n requestHook: options?.requestHook,\n }),\n);\n\n/**\n * Instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n * This instrumentation captures postgresjs queries and their attributes.\n *\n * Uses internal Sentry patching patterns to support both CommonJS and ESM environments.\n */\nclass PostgresJsInstrumentation extends InstrumentationBase {\n constructor(config) {\n super('sentry-postgres-js', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by patching the postgres module.\n * Uses two complementary approaches:\n * 1. Main function wrapper: instruments sql instances created AFTER instrumentation is set up (CJS + ESM)\n * 2. Query.prototype patch: fallback for sql instances created BEFORE instrumentation (CJS only)\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n 'postgres',\n SUPPORTED_VERSIONS,\n exports$1 => {\n try {\n return this._patchPostgres(exports$1);\n } catch (e) {\n DEBUG_BUILD && debug.error('Failed to patch postgres module:', e);\n return exports$1;\n }\n },\n exports$1 => exports$1,\n );\n\n // Add fallback Query.prototype patching for pre-existing sql instances (CJS only)\n // This catches queries from sql instances created before Sentry was initialized\n ['src', 'cf/src', 'cjs/src'].forEach(path => {\n module.files.push(\n new InstrumentationNodeModuleFile(\n `postgres/${path}/query.js`,\n SUPPORTED_VERSIONS,\n this._patchQueryPrototype.bind(this),\n this._unpatchQueryPrototype.bind(this),\n ),\n );\n });\n\n return module;\n }\n\n /**\n * Patches the postgres module by wrapping the main export function.\n * This intercepts the creation of sql instances and instruments them.\n */\n _patchPostgres(exports$1) {\n // In CJS: exports is the function itself\n // In ESM: exports.default is the function\n const isFunction = typeof exports$1 === 'function';\n const Original = isFunction ? exports$1 : exports$1.default;\n\n if (typeof Original !== 'function') {\n DEBUG_BUILD && debug.warn('postgres module does not export a function. Skipping instrumentation.');\n return exports$1;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n const WrappedPostgres = function ( ...args) {\n const sql = Reflect.construct(Original , args);\n\n // Validate that construction succeeded and returned a valid function object\n if (!sql || typeof sql !== 'function') {\n DEBUG_BUILD && debug.warn('postgres() did not return a valid instance');\n return sql;\n }\n\n // Delegate to the portable instrumentation from @sentry/core\n const config = self.getConfig();\n return instrumentPostgresJsSql(sql, {\n requireParentSpan: config.requireParentSpan,\n requestHook: config.requestHook,\n });\n };\n\n Object.setPrototypeOf(WrappedPostgres, Original);\n Object.setPrototypeOf(WrappedPostgres.prototype, (Original ).prototype);\n\n for (const key of Object.getOwnPropertyNames(Original)) {\n if (!['length', 'name', 'prototype'].includes(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n if (descriptor) {\n Object.defineProperty(WrappedPostgres, key, descriptor);\n }\n }\n }\n\n // For CJS: the exports object IS the function, so return the wrapped function\n // For ESM: replace the default export\n if (isFunction) {\n return WrappedPostgres ;\n } else {\n replaceExports(exports$1, 'default', WrappedPostgres);\n return exports$1;\n }\n }\n\n /**\n * Determines whether a span should be created based on the current context.\n * If `requireParentSpan` is set to true in the configuration, a span will\n * only be created if there is a parent span available.\n */\n _shouldCreateSpans() {\n const config = this.getConfig();\n const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n return hasParentSpan || !config.requireParentSpan;\n }\n\n /**\n * Extracts DB operation name from SQL query and sets it on the span.\n */\n _setOperationName(span, sanitizedQuery, command) {\n if (command) {\n span.setAttribute(ATTR_DB_OPERATION_NAME, command);\n return;\n }\n // Fallback: extract operation from the SQL query\n const operationMatch = sanitizedQuery?.match(SQL_OPERATION_REGEX);\n if (operationMatch?.[1]) {\n span.setAttribute(ATTR_DB_OPERATION_NAME, operationMatch[1].toUpperCase());\n }\n }\n\n /**\n * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n *\n * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n * strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n * returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n */\n _reconstructQuery(strings) {\n if (!strings?.length) {\n return undefined;\n }\n if (strings.length === 1) {\n return strings[0] || undefined;\n }\n // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n }\n\n /**\n * Sanitize SQL query as per the OTEL semantic conventions\n * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n *\n * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n */\n _sanitizeSqlQuery(sqlQuery) {\n if (!sqlQuery) {\n return 'Unknown SQL Query';\n }\n\n return (\n sqlQuery\n // Remove comments first (they may contain newlines and extra spaces)\n .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n .replace(/;\\s*$/, '') // Remove trailing semicolons\n // Collapse whitespace to a single space (after removing comments)\n .replace(/\\s+/g, ' ')\n .trim() // Remove extra spaces and trim\n // Sanitize hex/binary literals before string literals\n .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n // Sanitize string literals (handles escaped quotes)\n .replace(/'(?:[^']|'')*'/g, '?')\n // Sanitize hex numbers\n .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n // Sanitize boolean literals\n .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n .replace(/(? {\n addOriginToSpan(span, 'auto.db.postgresjs');\n\n span.setAttributes({\n [ATTR_DB_SYSTEM_NAME]: 'postgres',\n [ATTR_DB_QUERY_TEXT]: sanitizedSqlQuery,\n });\n\n // Note: No connection context available for pre-existing instances\n // because the sql instance wasn't created through our instrumented wrapper\n\n const config = self.getConfig();\n const { requestHook } = config;\n if (requestHook) {\n safeExecuteInTheMiddle(\n () => requestHook(span, sanitizedSqlQuery, undefined),\n e => {\n if (e) {\n span.setAttribute('sentry.hook.error', 'requestHook failed');\n DEBUG_BUILD && debug.error(`Error in requestHook for ${INTEGRATION_NAME} integration:`, e);\n }\n },\n true,\n );\n }\n\n // Wrap resolve to end span on success\n const originalResolve = this.resolve;\n this.resolve = new Proxy(originalResolve , {\n apply: (resolveTarget, resolveThisArg, resolveArgs) => {\n try {\n self._setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n }\n return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n },\n });\n\n // Wrap reject to end span on error\n const originalReject = this.reject;\n this.reject = new Proxy(originalReject , {\n apply: (rejectTarget, rejectThisArg, rejectArgs) => {\n try {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: rejectArgs?.[0]?.message || 'unknown_error',\n });\n span.setAttribute(ATTR_DB_RESPONSE_STATUS_CODE, rejectArgs?.[0]?.code || 'unknown');\n span.setAttribute(ATTR_ERROR_TYPE, rejectArgs?.[0]?.name || 'unknown');\n self._setOperationName(span, sanitizedSqlQuery);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n }\n return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n },\n });\n\n try {\n return originalHandle.apply(this, args);\n } catch (e) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: e instanceof Error ? e.message : 'unknown_error',\n });\n span.end();\n throw e;\n }\n },\n );\n };\n\n // Store original for unpatch - must be set on the NEW patched function\n moduleExports.Query.prototype.handle.__sentry_original__ = originalHandle;\n\n return moduleExports;\n }\n\n /**\n * Restores the original Query.prototype.handle method.\n */\n _unpatchQueryPrototype(moduleExports\n\n) {\n if (moduleExports.Query.prototype.handle.__sentry_original__) {\n moduleExports.Query.prototype.handle = moduleExports.Query.prototype.handle.__sentry_original__;\n }\n return moduleExports;\n }\n}\n\nconst _postgresJsIntegration = ((options) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentPostgresJs(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.postgresJsIntegration()],\n * });\n * ```\n */\n\nconst postgresJsIntegration = defineIntegration(_postgresJsIntegration);\n\nexport { PostgresJsInstrumentation, instrumentPostgresJs, postgresJsIntegration };\n//# sourceMappingURL=postgresjs.js.map\n", + "import { trace, TraceFlags, context, SpanKind } from '@opentelemetry/api';\nimport { PrismaInstrumentation } from '@prisma/instrumentation';\nimport { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, consoleSandbox } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Prisma';\n\nfunction isPrismaV6TracingHelper(helper) {\n return !!helper && typeof helper === 'object' && 'dispatchEngineSpans' in helper;\n}\n\nfunction getPrismaTracingHelper() {\n const prismaInstrumentationObject = (globalThis ).PRISMA_INSTRUMENTATION;\n const prismaTracingHelper =\n prismaInstrumentationObject &&\n typeof prismaInstrumentationObject === 'object' &&\n 'helper' in prismaInstrumentationObject\n ? prismaInstrumentationObject.helper\n : undefined;\n\n return prismaTracingHelper;\n}\n\nclass SentryPrismaInteropInstrumentation extends PrismaInstrumentation {\n constructor(options) {\n super(options?.instrumentationConfig);\n }\n\n enable() {\n super.enable();\n\n // The PrismaIntegration (super class) defines a global variable `global[\"PRISMA_INSTRUMENTATION\"]` when `enable()` is called. This global variable holds a \"TracingHelper\" which Prisma uses internally to create tracing data. It's their way of not depending on OTEL with their main package. The sucky thing is, prisma broke the interface of the tracing helper with the v6 major update. This means that if you use Prisma 5 with the v6 instrumentation (or vice versa) Prisma just blows up, because tries to call methods on the helper that no longer exist.\n // Because we actually want to use the v6 instrumentation and not blow up in Prisma 5 user's faces, what we're doing here is backfilling the v5 method (`createEngineSpan`) with a noop so that no longer crashes when it attempts to call that function.\n const prismaTracingHelper = getPrismaTracingHelper();\n\n if (isPrismaV6TracingHelper(prismaTracingHelper)) {\n // Inspired & adjusted from https://github.com/prisma/prisma/tree/5.22.0/packages/instrumentation\n (prismaTracingHelper ).createEngineSpan = (\n engineSpanEvent,\n ) => {\n const tracer = trace.getTracer('prismaV5Compatibility') ;\n\n // Prisma v5 relies on being able to create spans with a specific span & trace ID\n // this is no longer possible in OTEL v2, there is no public API to do this anymore\n // So in order to kind of hack this possibility, we rely on the internal `_idGenerator` property\n // This is used to generate the random IDs, and we overwrite this temporarily to generate static IDs\n // This is flawed and may not work, e.g. if the code is bundled and the private property is renamed\n // in such cases, these spans will not be captured and some Prisma spans will be missing\n const initialIdGenerator = tracer._idGenerator;\n\n if (!initialIdGenerator) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!',\n );\n });\n\n return;\n }\n\n try {\n engineSpanEvent.spans.forEach(engineSpan => {\n const kind = engineSpanKindToOTELSpanKind(engineSpan.kind);\n\n const parentSpanId = engineSpan.parent_span_id;\n const spanId = engineSpan.span_id;\n const traceId = engineSpan.trace_id;\n\n const links = engineSpan.links?.map(link => {\n return {\n context: {\n traceId: link.trace_id,\n spanId: link.span_id,\n traceFlags: TraceFlags.SAMPLED,\n },\n };\n });\n\n const ctx = trace.setSpanContext(context.active(), {\n traceId,\n spanId: parentSpanId,\n traceFlags: TraceFlags.SAMPLED,\n });\n\n context.with(ctx, () => {\n const temporaryIdGenerator = {\n generateTraceId: () => {\n return traceId;\n },\n generateSpanId: () => {\n return spanId;\n },\n };\n\n tracer._idGenerator = temporaryIdGenerator;\n\n const span = tracer.startSpan(engineSpan.name, {\n kind,\n links,\n startTime: engineSpan.start_time,\n attributes: engineSpan.attributes,\n });\n\n span.end(engineSpan.end_time);\n\n tracer._idGenerator = initialIdGenerator;\n });\n });\n } finally {\n // Ensure we always restore this at the end, even if something errors\n tracer._idGenerator = initialIdGenerator;\n }\n };\n }\n }\n}\n\nfunction engineSpanKindToOTELSpanKind(engineSpanKind) {\n switch (engineSpanKind) {\n case 'client':\n return SpanKind.CLIENT;\n case 'internal':\n default: // Other span kinds aren't currently supported\n return SpanKind.INTERNAL;\n }\n}\n\nconst instrumentPrisma = generateInstrumentOnce(INTEGRATION_NAME, options => {\n return new SentryPrismaInteropInstrumentation(options);\n});\n\n/**\n * Adds Sentry tracing instrumentation for the [prisma](https://www.npmjs.com/package/prisma) library.\n * For more information, see the [`prismaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/prisma/).\n *\n * NOTE: By default, this integration works with Prisma version 6.\n * To get performance instrumentation for other Prisma versions,\n * 1. Install the `@prisma/instrumentation` package with the desired version.\n * 1. Pass a `new PrismaInstrumentation()` instance as exported from `@prisma/instrumentation` to the `prismaInstrumentation` option of this integration:\n *\n * ```js\n * import { PrismaInstrumentation } from '@prisma/instrumentation'\n *\n * Sentry.init({\n * integrations: [\n * prismaIntegration({\n * // Override the default instrumentation that Sentry uses\n * prismaInstrumentation: new PrismaInstrumentation()\n * })\n * ]\n * })\n * ```\n *\n * The passed instrumentation instance will override the default instrumentation instance the integration would use, while the `prismaIntegration` will still ensure data compatibility for the various Prisma versions.\n * 1. Depending on your Prisma version (prior to version 6), add `previewFeatures = [\"tracing\"]` to the client generator block of your Prisma schema:\n *\n * ```\n * generator client {\n * provider = \"prisma-client-js\"\n * previewFeatures = [\"tracing\"]\n * }\n * ```\n */\nconst prismaIntegration = defineIntegration((options) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentPrisma(options);\n },\n setup(client) {\n // If no tracing helper exists, we skip any work here\n // this means that prisma is not being used\n if (!getPrismaTracingHelper()) {\n return;\n }\n\n client.on('spanStart', span => {\n const spanJSON = spanToJSON(span);\n if (spanJSON.description?.startsWith('prisma:')) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.prisma');\n }\n\n // Make sure we use the query text as the span name, for ex. SELECT * FROM \"User\" WHERE \"id\" = $1\n if (spanJSON.description === 'prisma:engine:db_query' && spanJSON.data['db.query.text']) {\n span.updateName(spanJSON.data['db.query.text'] );\n }\n\n // In Prisma v5.22+, the `db.system` attribute is automatically set\n // On older versions, this is missing, so we add it here\n if (spanJSON.description === 'prisma:engine:db_query' && !spanJSON.data['db.system']) {\n span.setAttribute('db.system', 'prisma');\n }\n });\n },\n };\n});\n\nexport { instrumentPrisma, prismaIntegration };\n//# sourceMappingURL=prisma.js.map\n", + "// src/PrismaInstrumentation.ts\nimport { trace as trace2 } from \"@opentelemetry/api\";\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition\n} from \"@opentelemetry/instrumentation\";\n\n// ../instrumentation-contract/dist/index.mjs\nvar package_default = {\n name: \"@prisma/instrumentation-contract\",\n version: \"7.4.2\",\n description: \"Shared types and utilities for Prisma instrumentation\",\n main: \"dist/index.js\",\n module: \"dist/index.mjs\",\n types: \"dist/index.d.ts\",\n exports: {\n \".\": {\n require: {\n types: \"./dist/index.d.ts\",\n default: \"./dist/index.js\"\n },\n import: {\n types: \"./dist/index.d.mts\",\n default: \"./dist/index.mjs\"\n }\n }\n },\n license: \"Apache-2.0\",\n homepage: \"https://www.prisma.io\",\n repository: {\n type: \"git\",\n url: \"https://github.com/prisma/prisma.git\",\n directory: \"packages/instrumentation-contract\"\n },\n bugs: \"https://github.com/prisma/prisma/issues\",\n scripts: {\n dev: \"DEV=true tsx helpers/build.ts\",\n build: \"tsx helpers/build.ts\",\n prepublishOnly: \"pnpm run build\",\n test: \"vitest run\"\n },\n files: [\n \"dist\"\n ],\n sideEffects: false,\n devDependencies: {\n \"@opentelemetry/api\": \"1.9.0\"\n },\n peerDependencies: {\n \"@opentelemetry/api\": \"^1.8\"\n }\n};\nvar majorVersion = package_default.version.split(\".\")[0];\nvar GLOBAL_INSTRUMENTATION_KEY = \"PRISMA_INSTRUMENTATION\";\nvar GLOBAL_VERSIONED_INSTRUMENTATION_KEY = `V${majorVersion}_PRISMA_INSTRUMENTATION`;\nvar globalThisWithPrismaInstrumentation = globalThis;\nfunction getGlobalTracingHelper() {\n const versionedGlobal = globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n if (versionedGlobal?.helper) {\n return versionedGlobal.helper;\n }\n const fallbackGlobal = globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n return fallbackGlobal?.helper;\n}\nfunction setGlobalTracingHelper(helper) {\n const globalValue = { helper };\n globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY] = globalValue;\n globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY] = globalValue;\n}\nfunction clearGlobalTracingHelper() {\n delete globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n delete globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n}\n\n// src/ActiveTracingHelper.ts\nimport {\n context as _context,\n SpanKind,\n trace\n} from \"@opentelemetry/api\";\nvar showAllTraces = process.env.PRISMA_SHOW_ALL_TRACES === \"true\";\nvar nonSampledTraceParent = `00-10-10-00`;\nfunction engineSpanKindToOtelSpanKind(engineSpanKind) {\n switch (engineSpanKind) {\n case \"client\":\n return SpanKind.CLIENT;\n case \"internal\":\n default:\n return SpanKind.INTERNAL;\n }\n}\nvar ActiveTracingHelper = class {\n tracerProvider;\n ignoreSpanTypes;\n constructor({ tracerProvider, ignoreSpanTypes }) {\n this.tracerProvider = tracerProvider;\n this.ignoreSpanTypes = ignoreSpanTypes;\n }\n isEnabled() {\n return true;\n }\n getTraceParent(context) {\n const span = trace.getSpanContext(context ?? _context.active());\n if (span) {\n return `00-${span.traceId}-${span.spanId}-0${span.traceFlags}`;\n }\n return nonSampledTraceParent;\n }\n dispatchEngineSpans(spans) {\n const tracer = this.tracerProvider.getTracer(\"prisma\");\n const linkIds = /* @__PURE__ */ new Map();\n const roots = spans.filter((span) => span.parentId === null);\n for (const root of roots) {\n dispatchEngineSpan(tracer, root, spans, linkIds, this.ignoreSpanTypes);\n }\n }\n getActiveContext() {\n return _context.active();\n }\n runInChildSpan(options, callback) {\n if (typeof options === \"string\") {\n options = { name: options };\n }\n if (options.internal && !showAllTraces) {\n return callback();\n }\n const tracer = this.tracerProvider.getTracer(\"prisma\");\n const context = options.context ?? this.getActiveContext();\n const name = `prisma:client:${options.name}`;\n if (shouldIgnoreSpan(name, this.ignoreSpanTypes)) {\n return callback();\n }\n if (options.active === false) {\n const span = tracer.startSpan(name, options, context);\n return endSpan(span, callback(span, context));\n }\n return tracer.startActiveSpan(name, options, (span) => endSpan(span, callback(span, context)));\n }\n};\nfunction dispatchEngineSpan(tracer, engineSpan, allSpans, linkIds, ignoreSpanTypes) {\n if (shouldIgnoreSpan(engineSpan.name, ignoreSpanTypes)) return;\n const spanOptions = {\n attributes: engineSpan.attributes,\n kind: engineSpanKindToOtelSpanKind(engineSpan.kind),\n startTime: engineSpan.startTime\n };\n tracer.startActiveSpan(engineSpan.name, spanOptions, (span) => {\n linkIds.set(engineSpan.id, span.spanContext().spanId);\n if (engineSpan.links) {\n span.addLinks(\n engineSpan.links.flatMap((link) => {\n const linkedId = linkIds.get(link);\n if (!linkedId) {\n return [];\n }\n return {\n context: {\n spanId: linkedId,\n traceId: span.spanContext().traceId,\n traceFlags: span.spanContext().traceFlags\n }\n };\n })\n );\n }\n const children = allSpans.filter((s) => s.parentId === engineSpan.id);\n for (const child of children) {\n dispatchEngineSpan(tracer, child, allSpans, linkIds, ignoreSpanTypes);\n }\n span.end(engineSpan.endTime);\n });\n}\nfunction endSpan(span, result) {\n if (isPromiseLike(result)) {\n return result.then(\n (value) => {\n span.end();\n return value;\n },\n (reason) => {\n span.end();\n throw reason;\n }\n );\n }\n span.end();\n return result;\n}\nfunction isPromiseLike(value) {\n return value != null && typeof value[\"then\"] === \"function\";\n}\nfunction shouldIgnoreSpan(spanName, ignoreSpanTypes) {\n return ignoreSpanTypes.some(\n (pattern) => typeof pattern === \"string\" ? pattern === spanName : pattern.test(spanName)\n );\n}\n\n// package.json\nvar package_default2 = {\n name: \"@prisma/instrumentation\",\n version: \"7.4.2\",\n description: \"OpenTelemetry compliant instrumentation for Prisma Client\",\n main: \"dist/index.js\",\n module: \"dist/index.mjs\",\n types: \"dist/index.d.ts\",\n exports: {\n \".\": {\n require: {\n types: \"./dist/index.d.ts\",\n default: \"./dist/index.js\"\n },\n import: {\n types: \"./dist/index.d.ts\",\n default: \"./dist/index.mjs\"\n }\n }\n },\n license: \"Apache-2.0\",\n homepage: \"https://www.prisma.io\",\n repository: {\n type: \"git\",\n url: \"https://github.com/prisma/prisma.git\",\n directory: \"packages/instrumentation\"\n },\n bugs: \"https://github.com/prisma/prisma/issues\",\n devDependencies: {\n \"@opentelemetry/api\": \"1.9.0\",\n \"@prisma/instrumentation-contract\": \"workspace:*\",\n \"@types/node\": \"~20.19.24\",\n typescript: \"5.4.5\"\n },\n dependencies: {\n \"@opentelemetry/instrumentation\": \"^0.207.0\"\n },\n peerDependencies: {\n \"@opentelemetry/api\": \"^1.8\"\n },\n files: [\n \"dist\"\n ],\n keywords: [\n \"prisma\",\n \"instrumentation\",\n \"opentelemetry\",\n \"otel\"\n ],\n scripts: {\n dev: \"DEV=true tsx helpers/build.ts\",\n build: \"tsx helpers/build.ts\",\n prepublishOnly: \"pnpm run build\",\n test: \"vitest run\"\n },\n sideEffects: false\n};\n\n// src/constants.ts\nvar VERSION = package_default2.version;\nvar NAME = package_default2.name;\nvar MODULE_NAME = \"@prisma/client\";\n\n// src/PrismaInstrumentation.ts\nvar PrismaInstrumentation = class extends InstrumentationBase {\n tracerProvider;\n constructor(config = {}) {\n super(NAME, VERSION, config);\n }\n setTracerProvider(tracerProvider) {\n this.tracerProvider = tracerProvider;\n }\n init() {\n const module = new InstrumentationNodeModuleDefinition(MODULE_NAME, [VERSION]);\n return [module];\n }\n enable() {\n const config = this._config;\n setGlobalTracingHelper(\n new ActiveTracingHelper({\n tracerProvider: this.tracerProvider ?? trace2.getTracerProvider(),\n ignoreSpanTypes: config.ignoreSpanTypes ?? []\n })\n );\n }\n disable() {\n clearGlobalTracingHelper();\n }\n isEnabled() {\n return getGlobalTracingHelper() !== void 0;\n }\n};\n\n// src/index.ts\nimport { registerInstrumentations } from \"@opentelemetry/instrumentation\";\nexport {\n PrismaInstrumentation,\n registerInstrumentations\n};\n", + "import { HapiInstrumentation } from '@opentelemetry/instrumentation-hapi';\nimport { defineIntegration, SDK_VERSION, getClient, getIsolationScope, getDefaultIsolationScope, debug, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, captureException } from '@sentry/core';\nimport { generateInstrumentOnce, ensureIsWrapped } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build.js';\n\nconst INTEGRATION_NAME = 'Hapi';\n\nconst instrumentHapi = generateInstrumentOnce(INTEGRATION_NAME, () => new HapiInstrumentation());\n\nconst _hapiIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentHapi();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Hapi](https://hapi.dev/).\n *\n * If you also want to capture errors, you need to call `setupHapiErrorHandler(server)` after you set up your server.\n *\n * For more information, see the [hapi documentation](https://docs.sentry.io/platforms/javascript/guides/hapi/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.hapiIntegration()],\n * })\n * ```\n */\nconst hapiIntegration = defineIntegration(_hapiIntegration);\n\nfunction isErrorEvent(event) {\n return !!(event && typeof event === 'object' && 'error' in event && event.error);\n}\n\nfunction sendErrorToSentry(errorData) {\n captureException(errorData, {\n mechanism: {\n type: 'auto.function.hapi',\n handled: false,\n },\n });\n}\n\nconst hapiErrorPlugin = {\n name: 'SentryHapiErrorPlugin',\n version: SDK_VERSION,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register: async function (serverArg) {\n const server = serverArg ;\n\n server.events.on({ name: 'request', channels: ['error'] }, (request, event) => {\n if (getIsolationScope() !== getDefaultIsolationScope()) {\n const route = request.route;\n if (route.path) {\n getIsolationScope().setTransactionName(`${route.method.toUpperCase()} ${route.path}`);\n }\n } else {\n DEBUG_BUILD &&\n debug.warn('Isolation scope is still the default isolation scope - skipping setting transactionName');\n }\n\n if (isErrorEvent(event)) {\n sendErrorToSentry(event.error);\n }\n });\n },\n};\n\n/**\n * Add a Hapi plugin to capture errors to Sentry.\n *\n * @param server The Hapi server to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Hapi = require('@hapi/hapi');\n *\n * const init = async () => {\n * const server = Hapi.server();\n *\n * // all your routes here\n *\n * await Sentry.setupHapiErrorHandler(server);\n *\n * await server.start();\n * };\n * ```\n */\nasync function setupHapiErrorHandler(server) {\n await server.register(hapiErrorPlugin);\n\n // Sadly, middleware spans do not go through `requestHook`, so we handle those here\n // We register this hook in this method, because if we register it in the integration `setup`,\n // it would always run even for users that are not even using hapi\n const client = getClient();\n if (client) {\n client.on('spanStart', span => {\n addHapiSpanAttributes(span);\n });\n }\n\n ensureIsWrapped(server.register, 'hapi');\n}\n\nfunction addHapiSpanAttributes(span) {\n const attributes = spanToJSON(span).data;\n\n // this is one of: router, plugin, server.ext\n const type = attributes['hapi.type'];\n\n // If this is already set, or we have no Hapi span, no need to process again...\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n return;\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hapi',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hapi`,\n });\n}\n\nexport { hapiErrorPlugin, hapiIntegration, instrumentHapi, setupHapiErrorHandler };\n//# sourceMappingURL=index.js.map\n", + "import { ATTR_HTTP_ROUTE, ATTR_HTTP_REQUEST_METHOD } from '@opentelemetry/semantic-conventions';\nimport { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getIsolationScope, getDefaultIsolationScope, debug, httpRequestToRequestData, captureException } from '@sentry/core';\nimport { generateInstrumentOnce, ensureIsWrapped } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build.js';\nimport { AttributeNames } from './constants.js';\nimport { HonoInstrumentation } from './instrumentation.js';\n\nconst INTEGRATION_NAME = 'Hono';\n\nfunction addHonoSpanAttributes(span) {\n const attributes = spanToJSON(span).data;\n const type = attributes[AttributeNames.HONO_TYPE];\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n return;\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hono',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hono`,\n });\n\n const name = attributes[AttributeNames.HONO_NAME];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n return;\n }\n\n const route = attributes[ATTR_HTTP_ROUTE];\n const method = attributes[ATTR_HTTP_REQUEST_METHOD];\n if (typeof route === 'string' && typeof method === 'string') {\n getIsolationScope().setTransactionName(`${method} ${route}`);\n }\n}\n\nconst instrumentHono = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new HonoInstrumentation({\n responseHook: span => {\n addHonoSpanAttributes(span);\n },\n }),\n);\n\nconst _honoIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentHono();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Hono](https://hono.dev/).\n *\n * If you also want to capture errors, you need to call `setupHonoErrorHandler(app)` after you set up your Hono server.\n *\n * For more information, see the [hono documentation](https://docs.sentry.io/platforms/javascript/guides/hono/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.honoIntegration()],\n * })\n * ```\n */\nconst honoIntegration = defineIntegration(_honoIntegration);\n\nfunction honoRequestHandler() {\n return async function sentryRequestMiddleware(context, next) {\n const normalizedRequest = httpRequestToRequestData(context.req);\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n await next();\n };\n}\n\nfunction defaultShouldHandleError(context) {\n const statusCode = context.res.status;\n return statusCode >= 500;\n}\n\nfunction honoErrorHandler(options) {\n return async function sentryErrorMiddleware(context, next) {\n await next();\n\n const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n if (shouldHandleError(context)) {\n (context.res ).sentry = captureException(context.error, {\n mechanism: {\n type: 'auto.middleware.hono',\n handled: false,\n },\n });\n }\n };\n}\n\n/**\n * Add a Hono error handler to capture errors to Sentry.\n *\n * @param app The Hono instances\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const { Hono } = require(\"hono\");\n *\n * const app = new Hono();\n *\n * Sentry.setupHonoErrorHandler(app);\n *\n * // Add your routes, etc.\n * ```\n */\nfunction setupHonoErrorHandler(\n app,\n options,\n) {\n app.use(honoRequestHandler());\n app.use(honoErrorHandler(options));\n ensureIsWrapped(app.use, 'hono');\n}\n\nexport { honoIntegration, instrumentHono, setupHonoErrorHandler };\n//# sourceMappingURL=index.js.map\n", + "const AttributeNames = {\n HONO_TYPE: 'hono.type',\n HONO_NAME: 'hono.name',\n} ;\n\nconst HonoTypes = {\n MIDDLEWARE: 'middleware',\n REQUEST_HANDLER: 'request_handler',\n} ;\n\nexport { AttributeNames, HonoTypes };\n//# sourceMappingURL=constants.js.map\n", + "import { context, trace, SpanStatusCode } from '@opentelemetry/api';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { isThenable } from '@sentry/core';\nimport { AttributeNames, HonoTypes } from './constants.js';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-hono';\nconst PACKAGE_VERSION = '0.0.1';\n\n/**\n * Hono instrumentation for OpenTelemetry\n */\nclass HonoInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n /**\n * Initialize the instrumentation.\n */\n init() {\n return [\n new InstrumentationNodeModuleDefinition('hono', ['>=4.0.0 <5'], moduleExports => this._patch(moduleExports)),\n ];\n }\n\n /**\n * Patches the module exports to instrument Hono.\n */\n _patch(moduleExports) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n class WrappedHono extends moduleExports.Hono {\n constructor(...args) {\n super(...args);\n\n instrumentation._wrap(this, 'get', instrumentation._patchHandler());\n instrumentation._wrap(this, 'post', instrumentation._patchHandler());\n instrumentation._wrap(this, 'put', instrumentation._patchHandler());\n instrumentation._wrap(this, 'delete', instrumentation._patchHandler());\n instrumentation._wrap(this, 'options', instrumentation._patchHandler());\n instrumentation._wrap(this, 'patch', instrumentation._patchHandler());\n instrumentation._wrap(this, 'all', instrumentation._patchHandler());\n instrumentation._wrap(this, 'on', instrumentation._patchOnHandler());\n instrumentation._wrap(this, 'use', instrumentation._patchMiddlewareHandler());\n }\n }\n\n try {\n moduleExports.Hono = WrappedHono;\n } catch {\n // This is a workaround for environments where direct assignment is not allowed.\n return { ...moduleExports, Hono: WrappedHono };\n }\n\n return moduleExports;\n }\n\n /**\n * Patches the route handler to instrument it.\n */\n _patchHandler() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n return function (original) {\n return function wrappedHandler( ...args) {\n if (typeof args[0] === 'string') {\n const path = args[0];\n if (args.length === 1) {\n return original.apply(this, [path]);\n }\n\n const handlers = args.slice(1);\n return original.apply(this, [\n path,\n ...handlers.map(handler => instrumentation._wrapHandler(handler )),\n ]);\n }\n\n return original.apply(\n this,\n args.map(handler => instrumentation._wrapHandler(handler )),\n );\n };\n };\n }\n\n /**\n * Patches the 'on' handler to instrument it.\n */\n _patchOnHandler() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n return function (original) {\n return function wrappedHandler( ...args) {\n const handlers = args.slice(2);\n return original.apply(this, [\n ...args.slice(0, 2),\n ...handlers.map(handler => instrumentation._wrapHandler(handler )),\n ]);\n };\n };\n }\n\n /**\n * Patches the middleware handler to instrument it.\n */\n _patchMiddlewareHandler() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n return function (original) {\n return function wrappedHandler( ...args) {\n if (typeof args[0] === 'string') {\n const path = args[0];\n if (args.length === 1) {\n return original.apply(this, [path]);\n }\n\n const handlers = args.slice(1);\n return original.apply(this, [\n path,\n ...handlers.map(handler => instrumentation._wrapHandler(handler )),\n ]);\n }\n\n return original.apply(\n this,\n args.map(handler => instrumentation._wrapHandler(handler )),\n );\n };\n };\n }\n\n /**\n * Wraps a handler or middleware handler to apply instrumentation.\n */\n _wrapHandler(handler) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n return function ( c, next) {\n if (!instrumentation.isEnabled()) {\n return handler.apply(this, [c, next]);\n }\n\n const path = c.req.path;\n const span = instrumentation.tracer.startSpan(path);\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return instrumentation._safeExecute(\n () => {\n const result = handler.apply(this, [c, next]);\n if (isThenable(result)) {\n return result.then(result => {\n const type = instrumentation._determineHandlerType(result);\n span.setAttributes({\n [AttributeNames.HONO_TYPE]: type,\n [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n });\n instrumentation.getConfig().responseHook?.(span);\n return result;\n });\n } else {\n const type = instrumentation._determineHandlerType(result);\n span.setAttributes({\n [AttributeNames.HONO_TYPE]: type,\n [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n });\n instrumentation.getConfig().responseHook?.(span);\n return result;\n }\n },\n () => span.end(),\n error => {\n instrumentation._handleError(span, error);\n span.end();\n },\n );\n });\n };\n }\n\n /**\n * Safely executes a function and handles errors.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _safeExecute(execute, onSuccess, onFailure) {\n try {\n const result = execute();\n\n if (isThenable(result)) {\n result.then(\n () => onSuccess(),\n (error) => onFailure(error),\n );\n } else {\n onSuccess();\n }\n\n return result;\n } catch (error) {\n onFailure(error);\n throw error;\n }\n }\n\n /**\n * Determines the handler type based on the result.\n * @param result\n * @private\n */\n _determineHandlerType(result) {\n return result === undefined ? HonoTypes.MIDDLEWARE : HonoTypes.REQUEST_HANDLER;\n }\n\n /**\n * Handles errors by setting the span status and recording the exception.\n */\n _handleError(span, error) {\n if (error instanceof Error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n }\n }\n}\n\nexport { HonoInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { KoaInstrumentation } from '@opentelemetry/instrumentation-koa';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport { spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, getIsolationScope, getDefaultIsolationScope, debug, defineIntegration, captureException } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan, ensureIsWrapped } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\n\nconst INTEGRATION_NAME = 'Koa';\n\nconst instrumentKoa = generateInstrumentOnce(\n INTEGRATION_NAME,\n KoaInstrumentation,\n (options = {}) => {\n return {\n ignoreLayersType: options.ignoreLayersType ,\n requestHook(span, info) {\n addOriginToSpan(span, 'auto.http.otel.koa');\n\n const attributes = spanToJSON(span).data;\n\n // this is one of: middleware, router\n const type = attributes['koa.type'];\n if (type) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.koa`);\n }\n\n // Also update the name\n const name = attributes['koa.name'];\n if (typeof name === 'string') {\n // Somehow, name is sometimes `''` for middleware spans\n // See: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2220\n span.updateName(name || '< unknown >');\n }\n\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n return;\n }\n const route = attributes[ATTR_HTTP_ROUTE];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const method = info.context?.request?.method?.toUpperCase() || 'GET';\n if (route) {\n getIsolationScope().setTransactionName(`${method} ${route}`);\n }\n },\n } ;\n },\n);\n\nconst _koaIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentKoa(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Koa](https://koajs.com/).\n *\n * If you also want to capture errors, you need to call `setupKoaErrorHandler(app)` after you set up your Koa server.\n *\n * For more information, see the [koa documentation](https://docs.sentry.io/platforms/javascript/guides/koa/).\n *\n * @param {KoaOptions} options Configuration options for the Koa integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.koaIntegration()],\n * })\n * ```\n *\n * @example\n * ```javascript\n * // To ignore middleware spans\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [\n * Sentry.koaIntegration({\n * ignoreLayersType: ['middleware']\n * })\n * ],\n * })\n * ```\n */\nconst koaIntegration = defineIntegration(_koaIntegration);\n\n/**\n * Add an Koa error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Koa = require(\"koa\");\n *\n * const app = new Koa();\n *\n * Sentry.setupKoaErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen(3000);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst setupKoaErrorHandler = (app) => {\n app.use(async (ctx, next) => {\n try {\n await next();\n } catch (error) {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.middleware.koa',\n },\n });\n throw error;\n }\n });\n\n ensureIsWrapped(app.use, 'koa');\n};\n\nexport { instrumentKoa, koaIntegration, setupKoaErrorHandler };\n//# sourceMappingURL=koa.js.map\n", + "import { ConnectInstrumentation } from '@opentelemetry/instrumentation-connect';\nimport { defineIntegration, getClient, captureException, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce, ensureIsWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Connect';\n\nconst instrumentConnect = generateInstrumentOnce(INTEGRATION_NAME, () => new ConnectInstrumentation());\n\nconst _connectIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentConnect();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Connect](https://github.com/senchalabs/connect/).\n *\n * If you also want to capture errors, you need to call `setupConnectErrorHandler(app)` after you initialize your connect app.\n *\n * For more information, see the [connect documentation](https://docs.sentry.io/platforms/javascript/guides/connect/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.connectIntegration()],\n * })\n * ```\n */\nconst connectIntegration = defineIntegration(_connectIntegration);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction connectErrorMiddleware(err, req, res, next) {\n captureException(err, {\n mechanism: {\n handled: false,\n type: 'auto.middleware.connect',\n },\n });\n next(err);\n}\n\n/**\n * Add a Connect middleware to capture errors to Sentry.\n *\n * @param app The Connect app to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const connect = require(\"connect\");\n *\n * const app = connect();\n *\n * Sentry.setupConnectErrorHandler(app);\n *\n * // Add you connect routes here\n *\n * app.listen(3000);\n * ```\n */\nconst setupConnectErrorHandler = (app) => {\n app.use(connectErrorMiddleware);\n\n // Sadly, ConnectInstrumentation has no requestHook, so we need to add the attributes here\n // We register this hook in this method, because if we register it in the integration `setup`,\n // it would always run even for users that are not even using connect\n const client = getClient();\n if (client) {\n client.on('spanStart', span => {\n addConnectSpanAttributes(span);\n });\n }\n\n ensureIsWrapped(app.use, 'connect');\n};\n\nfunction addConnectSpanAttributes(span) {\n const attributes = spanToJSON(span).data;\n\n // this is one of: middleware, request_handler\n const type = attributes['connect.type'];\n\n // If this is already set, or we have no connect span, no need to process again...\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n return;\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.connect',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.connect`,\n });\n\n // Also update the name, we don't need the \"middleware - \" prefix\n const name = attributes['connect.name'];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n}\n\nexport { connectIntegration, instrumentConnect, setupConnectErrorHandler };\n//# sourceMappingURL=connect.js.map\n", + "import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';\nimport { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst TEDIUS_INSTRUMENTED_METHODS = new Set([\n 'callProcedure',\n 'execSql',\n 'execSqlBatch',\n 'execBulkLoad',\n 'prepare',\n 'execute',\n]);\n\nconst INTEGRATION_NAME = 'Tedious';\n\nconst instrumentTedious = generateInstrumentOnce(INTEGRATION_NAME, () => new TediousInstrumentation({}));\n\nconst _tediousIntegration = (() => {\n let instrumentationWrappedCallback;\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const instrumentation = instrumentTedious();\n instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n },\n\n setup(client) {\n instrumentationWrappedCallback?.(() =>\n client.on('spanStart', span => {\n const { description, data } = spanToJSON(span);\n // Tedius integration always set a span name and `db.system` attribute to `mssql`.\n if (!description || data['db.system'] !== 'mssql') {\n return;\n }\n\n const operation = description.split(' ')[0] || '';\n if (TEDIUS_INSTRUMENTED_METHODS.has(operation)) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.tedious');\n }\n }),\n );\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [tedious](https://www.npmjs.com/package/tedious) library.\n *\n * For more information, see the [`tediousIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/tedious/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.tediousIntegration()],\n * });\n * ```\n */\nconst tediousIntegration = defineIntegration(_tediousIntegration);\n\nexport { instrumentTedious, tediousIntegration };\n//# sourceMappingURL=tedious.js.map\n", + "import { GenericPoolInstrumentation } from '@opentelemetry/instrumentation-generic-pool';\nimport { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nconst instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n let instrumentationWrappedCallback;\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const instrumentation = instrumentGenericPool();\n instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n },\n\n setup(client) {\n instrumentationWrappedCallback?.(() =>\n client.on('spanStart', span => {\n const spanJSON = spanToJSON(span);\n\n const spanDescription = spanJSON.description;\n\n // typo in emitted span for version <= 0.38.0 of @opentelemetry/instrumentation-generic-pool\n const isGenericPoolSpan =\n spanDescription === 'generic-pool.aquire' || spanDescription === 'generic-pool.acquire';\n\n if (isGenericPoolSpan) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.generic_pool');\n }\n }),\n );\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [generic-pool](https://www.npmjs.com/package/generic-pool) library.\n *\n * For more information, see the [`genericPoolIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/genericpool/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.genericPoolIntegration()],\n * });\n * ```\n */\nconst genericPoolIntegration = defineIntegration(_genericPoolIntegration);\n\nexport { genericPoolIntegration, instrumentGenericPool };\n//# sourceMappingURL=genericPool.js.map\n", + "import { AmqplibInstrumentation } from '@opentelemetry/instrumentation-amqplib';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Amqplib';\n\nconst config = {\n consumeEndHook: (span) => {\n addOriginToSpan(span, 'auto.amqplib.otel.consumer');\n },\n publishHook: (span) => {\n addOriginToSpan(span, 'auto.amqplib.otel.publisher');\n },\n};\n\nconst instrumentAmqplib = generateInstrumentOnce(INTEGRATION_NAME, () => new AmqplibInstrumentation(config));\n\nconst _amqplibIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentAmqplib();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [amqplib](https://www.npmjs.com/package/amqplib) library.\n *\n * For more information, see the [`amqplibIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/amqplib/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.amqplibIntegration()],\n * });\n * ```\n */\nconst amqplibIntegration = defineIntegration(_amqplibIntegration);\n\nexport { amqplibIntegration, instrumentAmqplib };\n//# sourceMappingURL=amqplib.js.map\n", + "const INTEGRATION_NAME = 'VercelAI';\n\nexport { INTEGRATION_NAME };\n//# sourceMappingURL=constants.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, getClient, handleCallbackErrors, addNonEnumerableProperty, getActiveSpan, _INTERNAL_getSpanContextForToolCallId, withScope, captureException, _INTERNAL_cleanupToolCallSpanContext } from '@sentry/core';\nimport { INTEGRATION_NAME } from './constants.js';\n\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <7'];\n\n// List of patched methods\n// From: https://sdk.vercel.ai/docs/ai-sdk-core/telemetry#collected-data\nconst INSTRUMENTED_METHODS = [\n 'generateText',\n 'streamText',\n 'generateObject',\n 'streamObject',\n 'embed',\n 'embedMany',\n 'rerank',\n] ;\n\nfunction isToolError(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const candidate = obj ;\n return (\n 'type' in candidate &&\n 'error' in candidate &&\n 'toolName' in candidate &&\n 'toolCallId' in candidate &&\n candidate.type === 'tool-error' &&\n candidate.error instanceof Error\n );\n}\n\n/**\n * Process tool call results: capture tool errors and clean up span context mappings.\n *\n * Error checking runs first (needs span context for linking), then cleanup removes all entries.\n * Tool errors are not rejected in Vercel AI V5 — they appear as metadata in the result content.\n */\nfunction processToolCallResults(result) {\n if (typeof result !== 'object' || result === null || !('content' in result)) {\n return;\n }\n\n const resultObj = result ;\n if (!Array.isArray(resultObj.content)) {\n return;\n }\n\n captureToolErrors(resultObj.content);\n cleanupToolCallSpanContexts(resultObj.content);\n}\n\nfunction captureToolErrors(content) {\n for (const item of content) {\n if (!isToolError(item)) {\n continue;\n }\n\n // Try to get the span context associated with this tool call ID\n const spanContext = _INTERNAL_getSpanContextForToolCallId(item.toolCallId);\n\n if (spanContext) {\n // We have the span context, so link the error using span and trace IDs\n withScope(scope => {\n scope.setContext('trace', {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n });\n\n scope.setTag('vercel.ai.tool.name', item.toolName);\n scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n scope.setLevel('error');\n\n captureException(item.error, {\n mechanism: {\n type: 'auto.vercelai.otel',\n handled: false,\n },\n });\n });\n } else {\n // Fallback: capture without span linking\n withScope(scope => {\n scope.setTag('vercel.ai.tool.name', item.toolName);\n scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n scope.setLevel('error');\n\n captureException(item.error, {\n mechanism: {\n type: 'auto.vercelai.otel',\n handled: false,\n },\n });\n });\n }\n }\n}\n\n/**\n * Remove span context entries for all completed tool calls in the content array.\n */\nfunction cleanupToolCallSpanContexts(content) {\n for (const item of content) {\n if (\n typeof item === 'object' &&\n item !== null &&\n 'toolCallId' in item &&\n typeof (item ).toolCallId === 'string'\n ) {\n _INTERNAL_cleanupToolCallSpanContext((item ).toolCallId );\n }\n }\n}\n\n/**\n * Determines whether to record inputs and outputs for Vercel AI telemetry based on the configuration hierarchy.\n *\n * The order of precedence is:\n * 1. The vercel ai integration options\n * 2. The experimental_telemetry options in the vercel ai method calls\n * 3. When telemetry is explicitly enabled (isEnabled: true), default to recording\n * 4. Otherwise, use the sendDefaultPii option from client options\n */\nfunction determineRecordingSettings(\n integrationRecordingOptions,\n methodTelemetryOptions,\n telemetryExplicitlyEnabled,\n defaultRecordingEnabled,\n) {\n const recordInputs =\n integrationRecordingOptions?.recordInputs !== undefined\n ? integrationRecordingOptions.recordInputs\n : methodTelemetryOptions.recordInputs !== undefined\n ? methodTelemetryOptions.recordInputs\n : telemetryExplicitlyEnabled === true\n ? true // When telemetry is explicitly enabled, default to recording inputs\n : defaultRecordingEnabled;\n\n const recordOutputs =\n integrationRecordingOptions?.recordOutputs !== undefined\n ? integrationRecordingOptions.recordOutputs\n : methodTelemetryOptions.recordOutputs !== undefined\n ? methodTelemetryOptions.recordOutputs\n : telemetryExplicitlyEnabled === true\n ? true // When telemetry is explicitly enabled, default to recording inputs\n : defaultRecordingEnabled;\n\n return { recordInputs, recordOutputs };\n}\n\n/**\n * This detects is added by the Sentry Vercel AI Integration to detect if the integration should\n * be enabled.\n *\n * It also patches the `ai` module to enable Vercel AI telemetry automatically for all methods.\n */\nclass SentryVercelAiInstrumentation extends InstrumentationBase {\n __init() {this._isPatched = false;}\n __init2() {this._callbacks = [];}\n\n constructor(config = {}) {\n super('@sentry/instrumentation-vercel-ai', SDK_VERSION, config);SentryVercelAiInstrumentation.prototype.__init.call(this);SentryVercelAiInstrumentation.prototype.__init2.call(this); }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition('ai', SUPPORTED_VERSIONS, this._patch.bind(this));\n return module;\n }\n\n /**\n * Call the provided callback when the module is patched.\n * If it has already been patched, the callback will be called immediately.\n */\n callWhenPatched(callback) {\n if (this._isPatched) {\n callback();\n } else {\n this._callbacks.push(callback);\n }\n }\n\n /**\n * Patches module exports to enable Vercel AI telemetry.\n */\n _patch(moduleExports) {\n this._isPatched = true;\n\n this._callbacks.forEach(callback => callback());\n this._callbacks = [];\n\n const generatePatch = (originalMethod) => {\n return new Proxy(originalMethod, {\n apply: (target, thisArg, args) => {\n const existingExperimentalTelemetry = args[0].experimental_telemetry || {};\n const isEnabled = existingExperimentalTelemetry.isEnabled;\n\n const client = getClient();\n const integration = client?.getIntegrationByName(INTEGRATION_NAME);\n const integrationOptions = integration?.options;\n const shouldRecordInputsAndOutputs = integration ? Boolean(client?.getOptions().sendDefaultPii) : false;\n\n const { recordInputs, recordOutputs } = determineRecordingSettings(\n integrationOptions,\n existingExperimentalTelemetry,\n isEnabled,\n shouldRecordInputsAndOutputs,\n );\n\n args[0].experimental_telemetry = {\n ...existingExperimentalTelemetry,\n isEnabled: isEnabled !== undefined ? isEnabled : true,\n recordInputs,\n recordOutputs,\n };\n\n return handleCallbackErrors(\n () => Reflect.apply(target, thisArg, args),\n error => {\n // This error bubbles up to unhandledrejection handler (if not handled before),\n // where we do not know the active span anymore\n // So to circumvent this, we set the active span on the error object\n // which is picked up by the unhandledrejection handler\n if (error && typeof error === 'object') {\n addNonEnumerableProperty(error, '_sentry_active_span', getActiveSpan());\n }\n },\n () => {},\n result => {\n processToolCallResults(result);\n },\n );\n },\n });\n };\n\n // Is this an ESM module?\n // https://tc39.es/ecma262/#sec-module-namespace-objects\n if (Object.prototype.toString.call(moduleExports) === '[object Module]') {\n // In ESM we take the usual route and just replace the exports we want to instrument\n for (const method of INSTRUMENTED_METHODS) {\n // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n if (moduleExports[method] != null) {\n moduleExports[method] = generatePatch(moduleExports[method]);\n }\n }\n\n return moduleExports;\n } else {\n // In CJS we can't replace the exports in the original module because they\n // don't have setters, so we create a new object with the same properties\n const patchedModuleExports = INSTRUMENTED_METHODS.reduce((acc, curr) => {\n // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n if (moduleExports[curr] != null) {\n acc[curr] = generatePatch(moduleExports[curr]);\n }\n return acc;\n }, {} );\n\n return { ...moduleExports, ...patchedModuleExports };\n }\n }\n}\n\nexport { SentryVercelAiInstrumentation, cleanupToolCallSpanContexts, determineRecordingSettings, processToolCallResults };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { defineIntegration, addVercelAiProcessors } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { INTEGRATION_NAME } from './constants.js';\nimport { SentryVercelAiInstrumentation } from './instrumentation.js';\n\nconst instrumentVercelAi = generateInstrumentOnce(INTEGRATION_NAME, () => new SentryVercelAiInstrumentation({}));\n\n/**\n * Determines if the integration should be forced based on environment and package availability.\n * Returns true if the 'ai' package is available.\n */\nfunction shouldForceIntegration(client) {\n const modules = client.getIntegrationByName('Modules');\n return !!modules?.getModules?.()?.ai;\n}\n\nconst _vercelAIIntegration = ((options = {}) => {\n let instrumentation;\n\n return {\n name: INTEGRATION_NAME,\n options,\n setupOnce() {\n instrumentation = instrumentVercelAi();\n },\n afterAllSetup(client) {\n // Auto-detect if we should force the integration when running with 'ai' package available\n // Note that this can only be detected if the 'Modules' integration is available, and running in CJS mode\n const shouldForce = options.force ?? shouldForceIntegration(client);\n\n if (shouldForce) {\n addVercelAiProcessors(client);\n } else {\n instrumentation?.callWhenPatched(() => addVercelAiProcessors(client));\n }\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [ai](https://www.npmjs.com/package/ai) library.\n * This integration is not enabled by default, you need to manually add it.\n *\n * For more information, see the [`ai` documentation](https://sdk.vercel.ai/docs/ai-sdk-core/telemetry).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.vercelAIIntegration()],\n * });\n * ```\n *\n * This integration adds tracing support to all `ai` function calls.\n * You need to opt-in to collecting spans for a specific call,\n * you can do so by setting `experimental_telemetry.isEnabled` to `true` in the first argument of the function call.\n *\n * ```javascript\n * const result = await generateText({\n * model: openai('gpt-4-turbo'),\n * experimental_telemetry: { isEnabled: true },\n * });\n * ```\n *\n * If you want to collect inputs and outputs for a specific call, you must specifically opt-in to each\n * function call by setting `experimental_telemetry.recordInputs` and `experimental_telemetry.recordOutputs`\n * to `true`.\n *\n * ```javascript\n * const result = await generateText({\n * model: openai('gpt-4-turbo'),\n * experimental_telemetry: { isEnabled: true, recordInputs: true, recordOutputs: true },\n * });\n */\nconst vercelAIIntegration = defineIntegration(_vercelAIIntegration);\n\nexport { instrumentVercelAi, vercelAIIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, _INTERNAL_shouldSkipAiProviderWrapping, OPENAI_INTEGRATION_NAME, instrumentOpenAiClient } from '@sentry/core';\n\nconst supportedVersions = ['>=4.0.0 <7'];\n\n/**\n * Sentry OpenAI instrumentation using OpenTelemetry.\n */\nclass SentryOpenAiInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-openai', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition('openai', supportedVersions, this._patch.bind(this));\n return module;\n }\n\n /**\n * Core patch logic applying instrumentation to the OpenAI and AzureOpenAI client constructors.\n */\n _patch(exports$1) {\n let result = exports$1;\n result = this._patchClient(result, 'OpenAI');\n result = this._patchClient(result, 'AzureOpenAI');\n return result;\n }\n\n /**\n * Patch logic applying instrumentation to the specified client constructor.\n */\n _patchClient(exports$1, exportKey) {\n const Original = exports$1[exportKey];\n if (!Original) {\n return exports$1;\n }\n\n const config = this.getConfig();\n\n const WrappedOpenAI = function ( ...args) {\n // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n if (_INTERNAL_shouldSkipAiProviderWrapping(OPENAI_INTEGRATION_NAME)) {\n return Reflect.construct(Original, args) ;\n }\n\n const instance = Reflect.construct(Original, args);\n\n return instrumentOpenAiClient(instance , config);\n } ;\n\n // Preserve static and prototype chains\n Object.setPrototypeOf(WrappedOpenAI, Original);\n Object.setPrototypeOf(WrappedOpenAI.prototype, Original.prototype);\n\n for (const key of Object.getOwnPropertyNames(Original)) {\n if (!['length', 'name', 'prototype'].includes(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n if (descriptor) {\n Object.defineProperty(WrappedOpenAI, key, descriptor);\n }\n }\n }\n\n // Constructor replacement - handle read-only properties\n // The OpenAI property might have only a getter, so use defineProperty\n try {\n exports$1[exportKey] = WrappedOpenAI;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, exportKey, {\n value: WrappedOpenAI,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Wrap the default export if it points to the original constructor\n // Constructor replacement - handle read-only properties\n // The OpenAI property might have only a getter, so use defineProperty\n if (exports$1.default === Original) {\n try {\n exports$1.default = WrappedOpenAI;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, 'default', {\n value: WrappedOpenAI,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n return exports$1;\n }\n}\n\nexport { SentryOpenAiInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { OPENAI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryOpenAiInstrumentation } from './instrumentation.js';\n\nconst instrumentOpenAi = generateInstrumentOnce(\n OPENAI_INTEGRATION_NAME,\n options => new SentryOpenAiInstrumentation(options),\n);\n\nconst _openAiIntegration = ((options = {}) => {\n return {\n name: OPENAI_INTEGRATION_NAME,\n setupOnce() {\n instrumentOpenAi(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the OpenAI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments OpenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.openAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.openAIIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.openAIIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n */\nconst openAIIntegration = defineIntegration(_openAiIntegration);\n\nexport { instrumentOpenAi, openAIIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, _INTERNAL_shouldSkipAiProviderWrapping, ANTHROPIC_AI_INTEGRATION_NAME, instrumentAnthropicAiClient } from '@sentry/core';\n\nconst supportedVersions = ['>=0.19.2 <1.0.0'];\n\n/**\n * Sentry Anthropic AI instrumentation using OpenTelemetry.\n */\nclass SentryAnthropicAiInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-anthropic-ai', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n '@anthropic-ai/sdk',\n supportedVersions,\n this._patch.bind(this),\n );\n return module;\n }\n\n /**\n * Core patch logic applying instrumentation to the Anthropic AI client constructor.\n */\n _patch(exports$1) {\n const Original = exports$1.Anthropic;\n\n const config = this.getConfig();\n\n const WrappedAnthropic = function ( ...args) {\n // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n if (_INTERNAL_shouldSkipAiProviderWrapping(ANTHROPIC_AI_INTEGRATION_NAME)) {\n return Reflect.construct(Original, args) ;\n }\n\n const instance = Reflect.construct(Original, args);\n\n return instrumentAnthropicAiClient(instance , config);\n } ;\n\n // Preserve static and prototype chains\n Object.setPrototypeOf(WrappedAnthropic, Original);\n Object.setPrototypeOf(WrappedAnthropic.prototype, Original.prototype);\n\n for (const key of Object.getOwnPropertyNames(Original)) {\n if (!['length', 'name', 'prototype'].includes(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n if (descriptor) {\n Object.defineProperty(WrappedAnthropic, key, descriptor);\n }\n }\n }\n\n // Constructor replacement - handle read-only properties\n // The Anthropic property might have only a getter, so use defineProperty\n try {\n exports$1.Anthropic = WrappedAnthropic;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, 'Anthropic', {\n value: WrappedAnthropic,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Wrap the default export if it points to the original constructor\n // Constructor replacement - handle read-only properties\n // The Anthropic property might have only a getter, so use defineProperty\n if (exports$1.default === Original) {\n try {\n exports$1.default = WrappedAnthropic;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, 'default', {\n value: WrappedAnthropic,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n return exports$1;\n }\n}\n\nexport { SentryAnthropicAiInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { ANTHROPIC_AI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryAnthropicAiInstrumentation } from './instrumentation.js';\n\nconst instrumentAnthropicAi = generateInstrumentOnce(\n ANTHROPIC_AI_INTEGRATION_NAME,\n options => new SentryAnthropicAiInstrumentation(options),\n);\n\nconst _anthropicAIIntegration = ((options = {}) => {\n return {\n name: ANTHROPIC_AI_INTEGRATION_NAME,\n options,\n setupOnce() {\n instrumentAnthropicAi(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the Anthropic AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Anthropic AI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.anthropicAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.anthropicAIIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.anthropicAIIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n */\nconst anthropicAIIntegration = defineIntegration(_anthropicAIIntegration);\n\nexport { anthropicAIIntegration, instrumentAnthropicAi };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, replaceExports, _INTERNAL_shouldSkipAiProviderWrapping, GOOGLE_GENAI_INTEGRATION_NAME, instrumentGoogleGenAIClient } from '@sentry/core';\n\nconst supportedVersions = ['>=0.10.0 <2'];\n\n/**\n * Represents the patched shape of the Google GenAI module export.\n */\n\n/**\n * Sentry Google GenAI instrumentation using OpenTelemetry.\n */\nclass SentryGoogleGenAiInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-google-genai', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n '@google/genai',\n supportedVersions,\n exports$1 => this._patch(exports$1),\n exports$1 => exports$1,\n // In CJS, @google/genai re-exports from (dist/node/index.cjs) file.\n // Patching only the root module sometimes misses the real implementation or\n // gets overwritten when that file is loaded. We add a file-level patch so that\n // _patch runs again on the concrete implementation\n [\n new InstrumentationNodeModuleFile(\n '@google/genai/dist/node/index.cjs',\n supportedVersions,\n exports$1 => this._patch(exports$1),\n exports$1 => exports$1,\n ),\n ],\n );\n return module;\n }\n\n /**\n * Core patch logic applying instrumentation to the Google GenAI client constructor.\n */\n _patch(exports$1) {\n const Original = exports$1.GoogleGenAI;\n const config = this.getConfig();\n\n if (typeof Original !== 'function') {\n return exports$1;\n }\n\n const WrappedGoogleGenAI = function ( ...args) {\n // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n if (_INTERNAL_shouldSkipAiProviderWrapping(GOOGLE_GENAI_INTEGRATION_NAME)) {\n return Reflect.construct(Original, args) ;\n }\n\n const instance = Reflect.construct(Original, args);\n\n return instrumentGoogleGenAIClient(instance, config);\n };\n\n // Preserve static and prototype chains\n Object.setPrototypeOf(WrappedGoogleGenAI, Original);\n Object.setPrototypeOf(WrappedGoogleGenAI.prototype, Original.prototype);\n\n for (const key of Object.getOwnPropertyNames(Original)) {\n if (!['length', 'name', 'prototype'].includes(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n if (descriptor) {\n Object.defineProperty(WrappedGoogleGenAI, key, descriptor);\n }\n }\n }\n\n // Replace google genai exports with the wrapped constructor\n replaceExports(exports$1, 'GoogleGenAI', WrappedGoogleGenAI);\n\n return exports$1;\n }\n}\n\nexport { SentryGoogleGenAiInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { GOOGLE_GENAI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryGoogleGenAiInstrumentation } from './instrumentation.js';\n\nconst instrumentGoogleGenAI = generateInstrumentOnce(\n GOOGLE_GENAI_INTEGRATION_NAME,\n options => new SentryGoogleGenAiInstrumentation(options),\n);\n\nconst _googleGenAIIntegration = ((options = {}) => {\n return {\n name: GOOGLE_GENAI_INTEGRATION_NAME,\n setupOnce() {\n instrumentGoogleGenAI(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the Google Generative AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Google GenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.googleGenAiIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.googleGenAiIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.googleGenAiIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n */\nconst googleGenAIIntegration = defineIntegration(_googleGenAIIntegration);\n\nexport { googleGenAIIntegration, instrumentGoogleGenAI };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, _INTERNAL_skipAiProviderWrapping, OPENAI_INTEGRATION_NAME, ANTHROPIC_AI_INTEGRATION_NAME, GOOGLE_GENAI_INTEGRATION_NAME, createLangChainCallbackHandler } from '@sentry/core';\n\nconst supportedVersions = ['>=0.1.0 <2.0.0'];\n\n/**\n * Augments a callback handler list with Sentry's handler if not already present\n */\nfunction augmentCallbackHandlers(handlers, sentryHandler) {\n // Handle null/undefined - return array with just our handler\n if (!handlers) {\n return [sentryHandler];\n }\n\n // If handlers is already an array\n if (Array.isArray(handlers)) {\n // Check if our handler is already in the list\n if (handlers.includes(sentryHandler)) {\n return handlers;\n }\n // Add our handler to the list\n return [...handlers, sentryHandler];\n }\n\n // If it's a single handler object, convert to array\n if (typeof handlers === 'object') {\n return [handlers, sentryHandler];\n }\n\n // Unknown type - return original\n return handlers;\n}\n\n/**\n * Wraps Runnable methods (invoke, stream, batch) to inject Sentry callbacks at request time\n * Uses a Proxy to intercept method calls and augment the options.callbacks\n */\nfunction wrapRunnableMethod(\n originalMethod,\n sentryHandler,\n _methodName,\n) {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args) {\n // LangChain Runnable method signatures:\n // invoke(input, options?) - options contains callbacks\n // stream(input, options?) - options contains callbacks\n // batch(inputs, options?) - options contains callbacks\n\n // Options is typically the second argument\n const optionsIndex = 1;\n let options = args[optionsIndex] ;\n\n // If options don't exist or aren't an object, create them\n if (!options || typeof options !== 'object' || Array.isArray(options)) {\n options = {};\n args[optionsIndex] = options;\n }\n\n // Inject our callback handler into options.callbacks (request time callbacks)\n const existingCallbacks = options.callbacks;\n const augmentedCallbacks = augmentCallbackHandlers(existingCallbacks, sentryHandler);\n options.callbacks = augmentedCallbacks;\n\n // Call original method with augmented options\n return Reflect.apply(target, thisArg, args);\n },\n }) ;\n}\n\n/**\n * Sentry LangChain instrumentation using OpenTelemetry.\n */\nclass SentryLangChainInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-langchain', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n * We patch the BaseChatModel class methods to inject callbacks\n *\n * We hook into provider packages (@langchain/anthropic, @langchain/openai, etc.)\n * because @langchain/core is often bundled and not loaded as a separate module\n */\n init() {\n const modules = [];\n\n // Hook into common LangChain provider packages\n const providerPackages = [\n '@langchain/anthropic',\n '@langchain/openai',\n '@langchain/google-genai',\n '@langchain/mistralai',\n '@langchain/google-vertexai',\n '@langchain/groq',\n ];\n\n for (const packageName of providerPackages) {\n // In CJS, LangChain packages re-export from dist/index.cjs files.\n // Patching only the root module sometimes misses the real implementation or\n // gets overwritten when that file is loaded. We add a file-level patch so that\n // _patch runs again on the concrete implementation\n modules.push(\n new InstrumentationNodeModuleDefinition(\n packageName,\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n [\n new InstrumentationNodeModuleFile(\n `${packageName}/dist/index.cjs`,\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n ),\n ],\n ),\n );\n }\n\n // Hook into main 'langchain' package to catch initChatModel (v1+)\n modules.push(\n new InstrumentationNodeModuleDefinition(\n 'langchain',\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n [\n // To catch the CJS build that contains ConfigurableModel / initChatModel for v1\n new InstrumentationNodeModuleFile(\n 'langchain/dist/chat_models/universal.cjs',\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n ),\n ],\n ),\n );\n\n return modules;\n }\n\n /**\n * Core patch logic - patches chat model methods to inject Sentry callbacks\n * This is called when a LangChain provider package is loaded\n */\n _patch(exports$1) {\n // Skip AI provider wrapping now that LangChain is actually being used\n // This prevents duplicate spans from Anthropic/OpenAI/GoogleGenAI standalone integrations\n _INTERNAL_skipAiProviderWrapping([\n OPENAI_INTEGRATION_NAME,\n ANTHROPIC_AI_INTEGRATION_NAME,\n GOOGLE_GENAI_INTEGRATION_NAME,\n ]);\n\n // Create a shared handler instance\n const sentryHandler = createLangChainCallbackHandler(this.getConfig());\n\n // Patch Runnable methods to inject callbacks at request time\n // This directly manipulates options.callbacks that LangChain uses\n this._patchRunnableMethods(exports$1, sentryHandler);\n\n return exports$1;\n }\n\n /**\n * Patches chat model methods (invoke, stream, batch) to inject Sentry callbacks\n * Finds a chat model class from the provider package exports and patches its prototype methods\n */\n _patchRunnableMethods(exports$1, sentryHandler) {\n // Known chat model class names for each provider\n const knownChatModelNames = [\n 'ChatAnthropic',\n 'ChatOpenAI',\n 'ChatGoogleGenerativeAI',\n 'ChatMistralAI',\n 'ChatVertexAI',\n 'ChatGroq',\n 'ConfigurableModel',\n ];\n\n const exportsToPatch = (exports$1.universal_exports ?? exports$1) ;\n\n const chatModelClass = Object.values(exportsToPatch).find(exp => {\n return typeof exp === 'function' && knownChatModelNames.includes(exp.name);\n }) ;\n\n if (!chatModelClass) {\n return;\n }\n\n // Patch directly on chatModelClass.prototype\n const targetProto = chatModelClass.prototype ;\n\n // Skip if already patched (both file-level and module-level hooks resolve to the same prototype)\n if (targetProto.__sentry_patched__) {\n return;\n }\n targetProto.__sentry_patched__ = true;\n\n // Patch the methods (invoke, stream, batch)\n // All chat model instances will inherit these patched methods\n const methodsToPatch = ['invoke', 'stream', 'batch'] ;\n\n for (const methodName of methodsToPatch) {\n const method = targetProto[methodName];\n if (typeof method === 'function') {\n targetProto[methodName] = wrapRunnableMethod(\n method ,\n sentryHandler);\n }\n }\n }\n}\n\nexport { SentryLangChainInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { LANGCHAIN_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangChainInstrumentation } from './instrumentation.js';\n\nconst instrumentLangChain = generateInstrumentOnce(\n LANGCHAIN_INTEGRATION_NAME,\n options => new SentryLangChainInstrumentation(options),\n);\n\nconst _langChainIntegration = ((options = {}) => {\n return {\n name: LANGCHAIN_INTEGRATION_NAME,\n setupOnce() {\n instrumentLangChain(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for LangChain.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangChain runnable instances\n * to capture telemetry data by injecting Sentry callback handlers into all LangChain calls.\n *\n * **Important:** This integration automatically skips wrapping the OpenAI, Anthropic, and Google GenAI\n * providers to prevent duplicate spans when using LangChain with these AI providers.\n * LangChain handles the instrumentation for all underlying AI providers.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * Sentry.init({\n * integrations: [Sentry.langChainIntegration()],\n * sendDefaultPii: true, // Enable to record inputs/outputs\n * });\n *\n * // LangChain calls are automatically instrumented\n * const model = new ChatOpenAI();\n * await model.invoke(\"What is the capital of France?\");\n * ```\n *\n * ## Manual Callback Handler\n *\n * You can also manually add the Sentry callback handler alongside other callbacks:\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * const sentryHandler = Sentry.createLangChainCallbackHandler({\n * recordInputs: true,\n * recordOutputs: true\n * });\n *\n * const model = new ChatOpenAI();\n * await model.invoke(\n * \"What is the capital of France?\",\n * { callbacks: [sentryHandler, myOtherCallback] }\n * );\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages/prompts (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.langChainIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.langChainIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n * ## Supported Events\n *\n * The integration captures the following LangChain lifecycle events:\n * - LLM/Chat Model: start, end, error\n * - Chain: start, end, error\n * - Tool: start, end, error\n *\n */\nconst langChainIntegration = defineIntegration(_langChainIntegration);\n\nexport { instrumentLangChain, langChainIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, instrumentLangGraph } from '@sentry/core';\n\nconst supportedVersions = ['>=0.0.0 <2.0.0'];\n\n/**\n * Sentry LangGraph instrumentation using OpenTelemetry.\n */\nclass SentryLangGraphInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-langgraph', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n '@langchain/langgraph',\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n [\n new InstrumentationNodeModuleFile(\n /**\n * In CJS, LangGraph packages re-export from dist/index.cjs files.\n * Patching only the root module sometimes misses the real implementation or\n * gets overwritten when that file is loaded. We add a file-level patch so that\n * _patch runs again on the concrete implementation\n */\n '@langchain/langgraph/dist/index.cjs',\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n ),\n ],\n );\n return module;\n }\n\n /**\n * Core patch logic applying instrumentation to the LangGraph module.\n */\n _patch(exports$1) {\n // Patch StateGraph.compile to instrument both compile() and invoke()\n if (exports$1.StateGraph && typeof exports$1.StateGraph === 'function') {\n instrumentLangGraph(\n exports$1.StateGraph.prototype ,\n this.getConfig(),\n );\n }\n\n return exports$1;\n }\n}\n\nexport { SentryLangGraphInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { LANGGRAPH_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangGraphInstrumentation } from './instrumentation.js';\n\nconst instrumentLangGraph = generateInstrumentOnce(\n LANGGRAPH_INTEGRATION_NAME,\n options => new SentryLangGraphInstrumentation(options),\n);\n\nconst _langGraphIntegration = ((options = {}) => {\n return {\n name: LANGGRAPH_INTEGRATION_NAME,\n setupOnce() {\n instrumentLangGraph(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for LangGraph.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangGraph StateGraph and compiled graph instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.langGraphIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.langGraphIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.langGraphIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n * ## Captured Operations\n *\n * The integration captures the following LangGraph operations:\n * - **Agent Creation** (`StateGraph.compile()`) - Creates a `gen_ai.create_agent` span\n * - **Agent Invocation** (`CompiledGraph.invoke()`) - Creates a `gen_ai.invoke_agent` span\n *\n * ## Captured Data\n *\n * When `recordInputs` and `recordOutputs` are enabled, the integration captures:\n * - Input messages from the graph state\n * - Output messages and LLM responses\n * - Tool calls made during agent execution\n * - Agent and graph names\n * - Available tools configured in the graph\n *\n */\nconst langGraphIntegration = defineIntegration(_langGraphIntegration);\n\nexport { instrumentLangGraph, langGraphIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION } from '@sentry/core';\nimport { patchFirestore } from './patches/firestore.js';\nimport { patchFunctions } from './patches/functions.js';\n\nconst DefaultFirebaseInstrumentationConfig = {};\nconst firestoreSupportedVersions = ['>=3.0.0 <5']; // firebase 9+\nconst functionsSupportedVersions = ['>=6.0.0 <7']; // firebase-functions v2\n\n/**\n * Instrumentation for Firebase services, specifically Firestore.\n */\nclass FirebaseInstrumentation extends InstrumentationBase {\n constructor(config = DefaultFirebaseInstrumentationConfig) {\n super('@sentry/instrumentation-firebase', SDK_VERSION, config);\n }\n\n /**\n * sets config\n * @param config\n */\n setConfig(config = {}) {\n super.setConfig({ ...DefaultFirebaseInstrumentationConfig, ...config });\n }\n\n /**\n *\n * @protected\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n init() {\n const modules = [];\n\n modules.push(patchFirestore(this.tracer, firestoreSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n modules.push(patchFunctions(this.tracer, functionsSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n\n return modules;\n }\n}\n\nexport { FirebaseInstrumentation };\n//# sourceMappingURL=firebaseInstrumentation.js.map\n", + "import * as net from 'node:net';\nimport { SpanKind, context, trace, diag } from '@opentelemetry/api';\nimport { InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, isWrapped, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { ATTR_DB_OPERATION_NAME, ATTR_DB_NAMESPACE, ATTR_DB_COLLECTION_NAME, ATTR_DB_SYSTEM_NAME, ATTR_SERVER_ADDRESS, ATTR_SERVER_PORT } from '@opentelemetry/semantic-conventions';\n\n// Inline minimal types used from `shimmer` to avoid importing shimmer's types directly.\n// We only need the shape for `wrap` and `unwrap` used in this file.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n/**\n *\n * @param tracer - Opentelemetry Tracer\n * @param firestoreSupportedVersions - supported version of firebase/firestore\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation wrap function\n */\nfunction patchFirestore(\n tracer,\n firestoreSupportedVersions,\n wrap,\n unwrap,\n config,\n) {\n const defaultFirestoreSpanCreationHook = () => {};\n\n let firestoreSpanCreationHook = defaultFirestoreSpanCreationHook;\n const configFirestoreSpanCreationHook = config.firestoreSpanCreationHook;\n\n if (typeof configFirestoreSpanCreationHook === 'function') {\n firestoreSpanCreationHook = (span) => {\n safeExecuteInTheMiddle(\n () => configFirestoreSpanCreationHook(span),\n error => {\n if (!error) {\n return;\n }\n diag.error(error?.message);\n },\n true,\n );\n };\n }\n\n const moduleFirestoreCJS = new InstrumentationNodeModuleDefinition(\n '@firebase/firestore',\n firestoreSupportedVersions,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports) => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n );\n const files = [\n '@firebase/firestore/dist/lite/index.node.cjs.js',\n '@firebase/firestore/dist/lite/index.node.mjs.js',\n '@firebase/firestore/dist/lite/index.rn.esm2017.js',\n '@firebase/firestore/dist/lite/index.cjs.js',\n ];\n\n for (const file of files) {\n moduleFirestoreCJS.files.push(\n new InstrumentationNodeModuleFile(\n file,\n firestoreSupportedVersions,\n moduleExports => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n moduleExports => unwrapMethods(moduleExports, unwrap),\n ),\n );\n }\n\n return moduleFirestoreCJS;\n}\n\nfunction wrapMethods(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports,\n wrap,\n unwrap,\n tracer,\n firestoreSpanCreationHook,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n unwrapMethods(moduleExports, unwrap);\n\n wrap(moduleExports, 'addDoc', patchAddDoc(tracer, firestoreSpanCreationHook));\n wrap(moduleExports, 'getDocs', patchGetDocs(tracer, firestoreSpanCreationHook));\n wrap(moduleExports, 'setDoc', patchSetDoc(tracer, firestoreSpanCreationHook));\n wrap(moduleExports, 'deleteDoc', patchDeleteDoc(tracer, firestoreSpanCreationHook));\n\n return moduleExports;\n}\n\nfunction unwrapMethods(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports,\n unwrap,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n for (const method of ['addDoc', 'getDocs', 'setDoc', 'deleteDoc']) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isWrapped(moduleExports[method])) {\n unwrap(moduleExports, method);\n }\n }\n return moduleExports;\n}\n\nfunction patchAddDoc(\n tracer,\n firestoreSpanCreationHook,\n)\n\n {\n return function addDoc(original) {\n return function (\n reference,\n data,\n ) {\n const span = startDBSpan(tracer, 'addDoc', reference);\n firestoreSpanCreationHook(span);\n return executeContextWithSpan(span, () => {\n return original(reference, data);\n });\n };\n };\n}\n\nfunction patchDeleteDoc(\n tracer,\n firestoreSpanCreationHook,\n)\n\n {\n return function deleteDoc(original) {\n return function (reference) {\n const span = startDBSpan(tracer, 'deleteDoc', reference.parent || reference);\n firestoreSpanCreationHook(span);\n return executeContextWithSpan(span, () => {\n return original(reference);\n });\n };\n };\n}\n\nfunction patchGetDocs(\n tracer,\n firestoreSpanCreationHook,\n)\n\n {\n return function getDocs(original) {\n return function (\n reference,\n ) {\n const span = startDBSpan(tracer, 'getDocs', reference);\n firestoreSpanCreationHook(span);\n return executeContextWithSpan(span, () => {\n return original(reference);\n });\n };\n };\n}\n\nfunction patchSetDoc(\n tracer,\n firestoreSpanCreationHook,\n)\n\n {\n return function setDoc(original) {\n return function (\n reference,\n data,\n options,\n ) {\n const span = startDBSpan(tracer, 'setDoc', reference.parent || reference);\n firestoreSpanCreationHook(span);\n\n return executeContextWithSpan(span, () => {\n return typeof options !== 'undefined' ? original(reference, data, options) : original(reference, data);\n });\n };\n };\n}\n\nfunction executeContextWithSpan(span, callback) {\n return context.with(trace.setSpan(context.active(), span), () => {\n return safeExecuteInTheMiddle(\n () => {\n return callback();\n },\n err => {\n if (err) {\n span.recordException(err);\n }\n span.end();\n },\n true,\n );\n });\n}\n\nfunction startDBSpan(\n tracer,\n spanName,\n reference,\n) {\n const span = tracer.startSpan(`${spanName} ${reference.path}`, { kind: SpanKind.CLIENT });\n addAttributes(span, reference);\n span.setAttribute(ATTR_DB_OPERATION_NAME, spanName);\n return span;\n}\n\n/**\n * Gets the server address and port attributes from the Firestore settings.\n * It's best effort to extract the address and port from the settings, especially for IPv6.\n * @param span - The span to set attributes on.\n * @param settings - The Firestore settings containing host information.\n */\nfunction getPortAndAddress(settings)\n\n {\n let address;\n let port;\n\n if (typeof settings.host === 'string') {\n if (settings.host.startsWith('[')) {\n // IPv6 addresses can be enclosed in square brackets, e.g., [2001:db8::1]:8080\n if (settings.host.endsWith(']')) {\n // IPv6 with square brackets without port\n address = settings.host.replace(/^\\[|\\]$/g, '');\n } else if (settings.host.includes(']:')) {\n // IPv6 with square brackets with port\n const lastColonIndex = settings.host.lastIndexOf(':');\n if (lastColonIndex !== -1) {\n address = settings.host.slice(1, lastColonIndex).replace(/^\\[|\\]$/g, '');\n port = settings.host.slice(lastColonIndex + 1);\n }\n }\n } else {\n // IPv4 or IPv6 without square brackets\n // If it's an IPv6 address without square brackets, we assume it does not have a port.\n if (net.isIPv6(settings.host)) {\n address = settings.host;\n }\n // If it's an IPv4 address, we can extract the port if it exists.\n else {\n const lastColonIndex = settings.host.lastIndexOf(':');\n if (lastColonIndex !== -1) {\n address = settings.host.slice(0, lastColonIndex);\n port = settings.host.slice(lastColonIndex + 1);\n } else {\n address = settings.host;\n }\n }\n }\n }\n return {\n address: address,\n port: port ? parseInt(port, 10) : undefined,\n };\n}\n\nfunction addAttributes(\n span,\n reference,\n) {\n const firestoreApp = reference.firestore.app;\n const firestoreOptions = firestoreApp.options;\n const json = reference.firestore.toJSON() || {};\n const settings = json.settings || {};\n\n const attributes = {\n [ATTR_DB_COLLECTION_NAME]: reference.path,\n [ATTR_DB_NAMESPACE]: firestoreApp.name,\n [ATTR_DB_SYSTEM_NAME]: 'firebase.firestore',\n 'firebase.firestore.type': reference.type,\n 'firebase.firestore.options.projectId': firestoreOptions.projectId,\n 'firebase.firestore.options.appId': firestoreOptions.appId,\n 'firebase.firestore.options.messagingSenderId': firestoreOptions.messagingSenderId,\n 'firebase.firestore.options.storageBucket': firestoreOptions.storageBucket,\n };\n\n const { address, port } = getPortAndAddress(settings);\n\n if (address) {\n attributes[ATTR_SERVER_ADDRESS] = address;\n }\n if (port) {\n attributes[ATTR_SERVER_PORT] = port;\n }\n\n span.setAttributes(attributes);\n}\n\nexport { getPortAndAddress, patchFirestore };\n//# sourceMappingURL=firestore.js.map\n", + "import { SpanKind, context, trace, diag } from '@opentelemetry/api';\nimport { InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, isWrapped, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\n\n/**\n * Patches Firebase Functions v2 to add OpenTelemetry instrumentation\n * @param tracer - Opentelemetry Tracer\n * @param functionsSupportedVersions - supported versions of firebase-functions\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation unwrap function\n * @param config - Firebase instrumentation config\n */\nfunction patchFunctions(\n tracer,\n functionsSupportedVersions,\n wrap,\n unwrap,\n config,\n) {\n let requestHook = () => {};\n let responseHook = () => {};\n const errorHook = config.functions?.errorHook;\n const configRequestHook = config.functions?.requestHook;\n const configResponseHook = config.functions?.responseHook;\n\n if (typeof configResponseHook === 'function') {\n responseHook = (span, err) => {\n safeExecuteInTheMiddle(\n () => configResponseHook(span, err),\n error => {\n if (!error) {\n return;\n }\n diag.error(error?.message);\n },\n true,\n );\n };\n }\n if (typeof configRequestHook === 'function') {\n requestHook = (span) => {\n safeExecuteInTheMiddle(\n () => configRequestHook(span),\n error => {\n if (!error) {\n return;\n }\n diag.error(error?.message);\n },\n true,\n );\n };\n }\n\n const moduleFunctionsCJS = new InstrumentationNodeModuleDefinition('firebase-functions', functionsSupportedVersions);\n const modulesToInstrument = [\n { name: 'firebase-functions/lib/v2/providers/https.js', triggerType: 'function' },\n { name: 'firebase-functions/lib/v2/providers/firestore.js', triggerType: 'firestore' },\n { name: 'firebase-functions/lib/v2/providers/scheduler.js', triggerType: 'scheduler' },\n { name: 'firebase-functions/lib/v2/storage.js', triggerType: 'storage' },\n ] ;\n\n modulesToInstrument.forEach(({ name, triggerType }) => {\n moduleFunctionsCJS.files.push(\n new InstrumentationNodeModuleFile(\n name,\n functionsSupportedVersions,\n moduleExports =>\n wrapCommonFunctions(\n moduleExports,\n wrap,\n unwrap,\n tracer,\n { requestHook, responseHook, errorHook },\n triggerType,\n ),\n moduleExports => unwrapCommonFunctions(moduleExports, unwrap),\n ),\n );\n });\n\n return moduleFunctionsCJS;\n}\n\n/**\n * Patches Cloud Functions for Firebase (v2) to add OpenTelemetry instrumentation\n *\n * @param tracer - Opentelemetry Tracer\n * @param functionsConfig - Firebase instrumentation config\n * @param triggerType - Type of trigger\n * @returns A function that patches the function\n */\nfunction patchV2Functions(\n tracer,\n functionsConfig,\n triggerType,\n) {\n return function v2FunctionsWrapper(original) {\n return function ( ...args) {\n const handler = typeof args[0] === 'function' ? args[0] : args[1];\n const documentOrOptions = typeof args[0] === 'function' ? undefined : args[0];\n\n if (!handler) {\n return original.call(this, ...args);\n }\n\n const wrappedHandler = async function ( ...handlerArgs) {\n const functionName = process.env.FUNCTION_TARGET || process.env.K_SERVICE || 'unknown';\n const span = tracer.startSpan(`firebase.function.${triggerType}`, {\n kind: SpanKind.SERVER,\n });\n\n const attributes = {\n 'faas.name': functionName,\n 'faas.trigger': triggerType,\n 'faas.provider': 'firebase',\n };\n\n if (process.env.GCLOUD_PROJECT) {\n attributes['cloud.project_id'] = process.env.GCLOUD_PROJECT;\n }\n\n if (process.env.EVENTARC_CLOUD_EVENT_SOURCE) {\n attributes['cloud.event_source'] = process.env.EVENTARC_CLOUD_EVENT_SOURCE;\n }\n\n span.setAttributes(attributes);\n functionsConfig?.requestHook?.(span);\n\n // Can be changed to safeExecuteInTheMiddleAsync once following is merged and released\n // https://github.com/open-telemetry/opentelemetry-js/pull/6032\n return context.with(trace.setSpan(context.active(), span), async () => {\n let error;\n let result;\n\n try {\n result = await handler.apply(this, handlerArgs);\n } catch (e) {\n error = e ;\n }\n\n functionsConfig?.responseHook?.(span, error);\n\n if (error) {\n span.recordException(error);\n }\n\n span.end();\n\n if (error) {\n await functionsConfig?.errorHook?.(span, error);\n throw error;\n }\n\n return result;\n });\n };\n\n if (documentOrOptions) {\n return original.call(this, documentOrOptions, wrappedHandler);\n } else {\n return original.call(this, wrappedHandler);\n }\n };\n };\n}\n\nfunction wrapCommonFunctions(\n moduleExports,\n wrap,\n unwrap,\n tracer,\n functionsConfig,\n triggerType,\n) {\n unwrapCommonFunctions(moduleExports, unwrap);\n\n switch (triggerType) {\n case 'function':\n wrap(moduleExports, 'onRequest', patchV2Functions(tracer, functionsConfig, 'http.request'));\n wrap(moduleExports, 'onCall', patchV2Functions(tracer, functionsConfig, 'http.call'));\n break;\n\n case 'firestore':\n wrap(moduleExports, 'onDocumentCreated', patchV2Functions(tracer, functionsConfig, 'firestore.document.created'));\n wrap(moduleExports, 'onDocumentUpdated', patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'));\n wrap(moduleExports, 'onDocumentDeleted', patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'));\n wrap(moduleExports, 'onDocumentWritten', patchV2Functions(tracer, functionsConfig, 'firestore.document.written'));\n wrap(\n moduleExports,\n 'onDocumentCreatedWithAuthContext',\n patchV2Functions(tracer, functionsConfig, 'firestore.document.created'),\n );\n wrap(\n moduleExports,\n 'onDocumentUpdatedWithAuthContext',\n patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'),\n );\n\n wrap(\n moduleExports,\n 'onDocumentDeletedWithAuthContext',\n patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'),\n );\n\n wrap(\n moduleExports,\n 'onDocumentWrittenWithAuthContext',\n patchV2Functions(tracer, functionsConfig, 'firestore.document.written'),\n );\n break;\n\n case 'scheduler':\n wrap(moduleExports, 'onSchedule', patchV2Functions(tracer, functionsConfig, 'scheduler.scheduled'));\n break;\n\n case 'storage':\n wrap(moduleExports, 'onObjectFinalized', patchV2Functions(tracer, functionsConfig, 'storage.object.finalized'));\n wrap(moduleExports, 'onObjectArchived', patchV2Functions(tracer, functionsConfig, 'storage.object.archived'));\n wrap(moduleExports, 'onObjectDeleted', patchV2Functions(tracer, functionsConfig, 'storage.object.deleted'));\n wrap(\n moduleExports,\n 'onObjectMetadataUpdated',\n patchV2Functions(tracer, functionsConfig, 'storage.object.metadataUpdated'),\n );\n break;\n }\n\n return moduleExports;\n}\n\nfunction unwrapCommonFunctions(\n moduleExports,\n unwrap,\n) {\n const methods = [\n 'onSchedule',\n 'onRequest',\n 'onCall',\n 'onObjectFinalized',\n 'onObjectArchived',\n 'onObjectDeleted',\n 'onObjectMetadataUpdated',\n 'onDocumentCreated',\n 'onDocumentUpdated',\n 'onDocumentDeleted',\n 'onDocumentWritten',\n 'onDocumentCreatedWithAuthContext',\n 'onDocumentUpdatedWithAuthContext',\n 'onDocumentDeletedWithAuthContext',\n 'onDocumentWrittenWithAuthContext',\n ];\n\n for (const method of methods) {\n if (isWrapped(moduleExports[method])) {\n unwrap(moduleExports, method);\n }\n }\n return moduleExports;\n}\n\nexport { patchFunctions, patchV2Functions };\n//# sourceMappingURL=functions.js.map\n", + "import { defineIntegration, captureException, flush, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\nimport { FirebaseInstrumentation } from './otel/firebaseInstrumentation.js';\n\nconst INTEGRATION_NAME = 'Firebase';\n\nconst config = {\n firestoreSpanCreationHook: span => {\n addOriginToSpan(span, 'auto.firebase.otel.firestore');\n\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'db.query');\n },\n functions: {\n requestHook: span => {\n addOriginToSpan(span, 'auto.firebase.otel.functions');\n\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.request');\n },\n errorHook: async (_, error) => {\n if (error) {\n captureException(error, {\n mechanism: {\n type: 'auto.firebase.otel.functions',\n handled: false,\n },\n });\n await flush(2000);\n }\n },\n },\n};\n\nconst instrumentFirebase = generateInstrumentOnce(INTEGRATION_NAME, () => new FirebaseInstrumentation(config));\n\nconst _firebaseIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentFirebase();\n },\n };\n}) ;\n\nconst firebaseIntegration = defineIntegration(_firebaseIntegration);\n\nexport { firebaseIntegration, instrumentFirebase };\n//# sourceMappingURL=firebase.js.map\n", + "import { instrumentSentryHttp, instrumentOtelHttp } from '../http.js';\nimport { instrumentAmqplib, amqplibIntegration } from './amqplib.js';\nimport { instrumentAnthropicAi, anthropicAIIntegration } from './anthropic-ai/index.js';\nimport { instrumentConnect, connectIntegration } from './connect.js';\nimport { instrumentExpress, expressIntegration } from './express.js';\nimport { instrumentFastify, instrumentFastifyV3, fastifyIntegration } from './fastify/index.js';\nimport { instrumentFirebase, firebaseIntegration } from './firebase/firebase.js';\nimport { instrumentGenericPool, genericPoolIntegration } from './genericPool.js';\nimport { instrumentGoogleGenAI, googleGenAIIntegration } from './google-genai/index.js';\nimport { instrumentGraphql, graphqlIntegration } from './graphql.js';\nimport { instrumentHapi, hapiIntegration } from './hapi/index.js';\nimport { instrumentHono, honoIntegration } from './hono/index.js';\nimport { instrumentKafka, kafkaIntegration } from './kafka.js';\nimport { instrumentKoa, koaIntegration } from './koa.js';\nimport { instrumentLangChain, langChainIntegration } from './langchain/index.js';\nimport { instrumentLangGraph, langGraphIntegration } from './langgraph/index.js';\nimport { instrumentLruMemoizer, lruMemoizerIntegration } from './lrumemoizer.js';\nimport { instrumentMongo, mongoIntegration } from './mongo.js';\nimport { instrumentMongoose, mongooseIntegration } from './mongoose.js';\nimport { instrumentMysql, mysqlIntegration } from './mysql.js';\nimport { instrumentMysql2, mysql2Integration } from './mysql2.js';\nimport { instrumentOpenAi, openAIIntegration } from './openai/index.js';\nimport { instrumentPostgres, postgresIntegration } from './postgres.js';\nimport { instrumentPostgresJs, postgresJsIntegration } from './postgresjs.js';\nimport { prismaIntegration } from './prisma.js';\nimport { instrumentRedis, redisIntegration } from './redis.js';\nimport { instrumentTedious, tediousIntegration } from './tedious.js';\nimport { instrumentVercelAi, vercelAIIntegration } from './vercelai/index.js';\n\n/**\n * With OTEL, all performance integrations will be added, as OTEL only initializes them when the patched package is actually required.\n */\nfunction getAutoPerformanceIntegrations() {\n return [\n expressIntegration(),\n fastifyIntegration(),\n graphqlIntegration(),\n honoIntegration(),\n mongoIntegration(),\n mongooseIntegration(),\n mysqlIntegration(),\n mysql2Integration(),\n redisIntegration(),\n postgresIntegration(),\n prismaIntegration(),\n hapiIntegration(),\n koaIntegration(),\n connectIntegration(),\n tediousIntegration(),\n genericPoolIntegration(),\n kafkaIntegration(),\n amqplibIntegration(),\n lruMemoizerIntegration(),\n // AI providers\n // LangChain must come first to disable AI provider integrations before they instrument\n langChainIntegration(),\n langGraphIntegration(),\n vercelAIIntegration(),\n openAIIntegration(),\n anthropicAIIntegration(),\n googleGenAIIntegration(),\n postgresJsIntegration(),\n firebaseIntegration(),\n ];\n}\n\n/**\n * Get a list of methods to instrument OTEL, when preload instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getOpenTelemetryInstrumentationToPreload() {\n return [\n instrumentSentryHttp,\n instrumentOtelHttp,\n instrumentExpress,\n instrumentConnect,\n instrumentFastify,\n instrumentFastifyV3,\n instrumentHapi,\n instrumentHono,\n instrumentKafka,\n instrumentKoa,\n instrumentLruMemoizer,\n instrumentMongo,\n instrumentMongoose,\n instrumentMysql,\n instrumentMysql2,\n instrumentPostgres,\n instrumentHapi,\n instrumentGraphql,\n instrumentRedis,\n instrumentTedious,\n instrumentGenericPool,\n instrumentAmqplib,\n instrumentLangChain,\n instrumentVercelAi,\n instrumentOpenAi,\n instrumentPostgresJs,\n instrumentFirebase,\n instrumentAnthropicAi,\n instrumentGoogleGenAI,\n instrumentLangGraph,\n ];\n}\n\nexport { getAutoPerformanceIntegrations, getOpenTelemetryInstrumentationToPreload };\n//# sourceMappingURL=index.js.map\n", + "import { trace, propagation, context } from '@opentelemetry/api';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_SERVICE_VERSION, SEMRESATTRS_SERVICE_NAMESPACE, ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { SDK_VERSION, debug } from '@sentry/core';\nimport { setupOpenTelemetryLogger, SentryContextManager, initializeEsmLoader } from '@sentry/node-core';\nimport { SentrySpanProcessor, SentrySampler, SentryPropagator } from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing/index.js';\n\n// About 277h - this must fit into new Array(len)!\nconst MAX_MAX_SPAN_WAIT_DURATION = 1000000;\n\n/**\n * Initialize OpenTelemetry for Node.\n */\nfunction initOpenTelemetry(client, options = {}) {\n if (client.getOptions().debug) {\n setupOpenTelemetryLogger();\n }\n\n const [provider, asyncLocalStorageLookup] = setupOtel(client, options);\n client.traceProvider = provider;\n client.asyncLocalStorageLookup = asyncLocalStorageLookup;\n}\n\n/**\n * Preload OpenTelemetry for Node.\n * This can be used to preload instrumentation early, but set up Sentry later.\n * By preloading the OTEL instrumentation wrapping still happens early enough that everything works.\n */\nfunction preloadOpenTelemetry(options = {}) {\n const { debug: debug$1 } = options;\n\n if (debug$1) {\n debug.enable();\n }\n\n initializeEsmLoader();\n\n // These are all integrations that we need to pre-load to ensure they are set up before any other code runs\n getPreloadMethods(options.integrations).forEach(fn => {\n fn();\n\n if (debug$1) {\n debug.log(`[Sentry] Preloaded ${fn.id} instrumentation`);\n }\n });\n}\n\nfunction getPreloadMethods(integrationNames) {\n const instruments = getOpenTelemetryInstrumentationToPreload();\n\n if (!integrationNames) {\n return instruments;\n }\n\n // We match exact matches of instrumentation, but also match prefixes, e.g. \"Fastify.v5\" will match \"Fastify\"\n return instruments.filter(instrumentation => {\n const id = instrumentation.id;\n return integrationNames.some(integrationName => id === integrationName || id.startsWith(`${integrationName}.`));\n });\n}\n\n/** Just exported for tests. */\nfunction setupOtel(\n client,\n options = {},\n) {\n // Create and configure NodeTracerProvider\n const provider = new BasicTracerProvider({\n sampler: new SentrySampler(client),\n resource: defaultResource().merge(\n resourceFromAttributes({\n [ATTR_SERVICE_NAME]: 'node',\n // eslint-disable-next-line deprecation/deprecation\n [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry',\n [ATTR_SERVICE_VERSION]: SDK_VERSION,\n }),\n ),\n forceFlushTimeoutMillis: 500,\n spanProcessors: [\n new SentrySpanProcessor({\n timeout: _clampSpanProcessorTimeout(client.getOptions().maxSpanWaitDuration),\n }),\n ...(options.spanProcessors || []),\n ],\n });\n\n // Register as globals\n trace.setGlobalTracerProvider(provider);\n propagation.setGlobalPropagator(new SentryPropagator());\n\n const ctxManager = new SentryContextManager();\n context.setGlobalContextManager(ctxManager);\n\n return [provider, ctxManager.getAsyncLocalStorageLookup()];\n}\n\n/** Just exported for tests. */\nfunction _clampSpanProcessorTimeout(maxSpanWaitDuration) {\n if (maxSpanWaitDuration == null) {\n return undefined;\n }\n\n // We guard for a max. value here, because we create an array with this length\n // So if this value is too large, this would fail\n if (maxSpanWaitDuration > MAX_MAX_SPAN_WAIT_DURATION) {\n DEBUG_BUILD &&\n debug.warn(`\\`maxSpanWaitDuration\\` is too high, using the maximum value of ${MAX_MAX_SPAN_WAIT_DURATION}`);\n return MAX_MAX_SPAN_WAIT_DURATION;\n } else if (maxSpanWaitDuration <= 0 || Number.isNaN(maxSpanWaitDuration)) {\n DEBUG_BUILD && debug.warn('`maxSpanWaitDuration` must be a positive number, using default value instead.');\n return undefined;\n }\n\n return maxSpanWaitDuration;\n}\n\nexport { _clampSpanProcessorTimeout, initOpenTelemetry, preloadOpenTelemetry, setupOtel };\n//# sourceMappingURL=initOtel.js.map\n", + "import { applySdkMetadata, hasSpansEnabled } from '@sentry/core';\nimport { init as init$1, validateOpenTelemetrySetup, getDefaultIntegrations as getDefaultIntegrations$1 } from '@sentry/node-core';\nimport { httpIntegration } from '../integrations/http.js';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch.js';\nimport { getAutoPerformanceIntegrations } from '../integrations/tracing/index.js';\nimport { initOpenTelemetry } from './initOtel.js';\n\n/**\n * Get default integrations, excluding performance.\n */\nfunction getDefaultIntegrationsWithoutPerformance() {\n const nodeCoreIntegrations = getDefaultIntegrations$1();\n\n // Filter out the node-core HTTP and NodeFetch integrations and replace them with Node SDK's composite versions\n return nodeCoreIntegrations\n .filter(integration => integration.name !== 'Http' && integration.name !== 'NodeFetch')\n .concat(httpIntegration(), nativeNodeFetchIntegration());\n}\n\n/** Get the default integrations for the Node SDK. */\nfunction getDefaultIntegrations(options) {\n return [\n ...getDefaultIntegrationsWithoutPerformance(),\n // We only add performance integrations if tracing is enabled\n // Note that this means that without tracing enabled, e.g. `expressIntegration()` will not be added\n // This means that generally request isolation will work (because that is done by httpIntegration)\n // But `transactionName` will not be set automatically\n ...(hasSpansEnabled(options) ? getAutoPerformanceIntegrations() : []),\n ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nfunction init(options = {}) {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Internal initialization function.\n */\nfunction _init(\n options = {},\n getDefaultIntegrationsImpl,\n) {\n applySdkMetadata(options, 'node');\n\n const client = init$1({\n ...options,\n // Only use Node SDK defaults if none provided\n defaultIntegrations: options.defaultIntegrations ?? getDefaultIntegrationsImpl(options),\n });\n\n // Add Node SDK specific OpenTelemetry setup\n if (client && !options.skipOpenTelemetrySetup) {\n initOpenTelemetry(client, {\n spanProcessors: options.openTelemetrySpanProcessors,\n });\n validateOpenTelemetrySetup();\n }\n\n return client;\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nfunction initWithoutDefaultIntegrations(options = {}) {\n return _init(options, () => []);\n}\n\nexport { getDefaultIntegrations, getDefaultIntegrationsWithoutPerformance, init, initWithoutDefaultIntegrations };\n//# sourceMappingURL=index.js.map\n", + "import * as Sentry from '@sentry/node'\nimport type { Event } from '@sentry/node'\nimport type { ElideSetupActionOptions } from './options'\n\n// Public DSN — not a secret. Only allows sending events, not reading them.\nconst SENTRY_DSN =\n 'https://b5a33745f4bf36a0f1e66dbcfceaa898@o4510814125228032.ingest.us.sentry.io/4511124523974656'\n\nconst ACTION_VERSION = '1.0.0'\n\nlet telemetryEnabled = false\n\n// Environment variable patterns that could contain secrets.\nconst SENSITIVE_PATTERNS = [\n /token/i,\n /secret/i,\n /password/i,\n /key/i,\n /credential/i,\n /auth/i,\n /^GITHUB_/i,\n /^AWS_/i,\n /^AZURE_/i,\n /^GCP_/i,\n /^NPM_/i,\n /^NODE_AUTH/i\n]\n\n/**\n * Scrub a string of any values that look like they came from sensitive env vars.\n * Replaces any known env var value found in the string with [REDACTED].\n */\nfunction scrubEnvVars(input: string): string {\n let result = input\n for (const [key, value] of Object.entries(process.env)) {\n if (!value || value.length < 8) continue\n if (SENSITIVE_PATTERNS.some(p => p.test(key))) {\n result = result.replaceAll(value, '[REDACTED]')\n }\n }\n return result\n}\n\n/**\n * Scrub an entire Sentry event of sensitive data.\n */\nfunction scrubEvent(event: Event): Event {\n delete event.server_name\n delete event.extra\n delete event.user\n delete event.request\n event.contexts = {}\n event.breadcrumbs = []\n\n if (event.exception?.values) {\n for (const ex of event.exception.values) {\n if (ex.value) {\n ex.value = scrubEnvVars(ex.value)\n }\n }\n }\n\n if (event.message) {\n event.message = scrubEnvVars(event.message)\n }\n\n return event\n}\n\n/**\n * Initialize Sentry telemetry with aggressive scrubbing.\n * Enables error reporting, tracing, and metrics.\n * No environment data, no PII, no secrets — only the error/span and action config tags.\n */\nexport function initTelemetry(\n enabled: boolean,\n options: ElideSetupActionOptions\n): void {\n telemetryEnabled = enabled\n if (!enabled) return\n\n Sentry.init({\n dsn: SENTRY_DSN,\n defaultIntegrations: false,\n environment: options.channel,\n release: `setup-elide@${ACTION_VERSION}`,\n tracesSampleRate: 1.0,\n beforeSend(event) {\n return scrubEvent(event)\n },\n beforeSendTransaction(event) {\n return scrubEvent(event)\n }\n })\n\n Sentry.setTags({\n installer: options.installer,\n os: options.os,\n arch: options.arch,\n channel: options.channel,\n version: options.version,\n action_version: ACTION_VERSION\n })\n}\n\n/**\n * Report an error to Sentry with optional additional tags.\n */\nexport function reportError(\n err: Error,\n context?: Record\n): void {\n if (!telemetryEnabled) return\n\n Sentry.withScope(scope => {\n if (context) {\n for (const [k, v] of Object.entries(context)) {\n scope.setTag(k, v)\n }\n }\n Sentry.captureException(err)\n })\n}\n\n/**\n * Run an async function inside a Sentry tracing span.\n * If telemetry is disabled, runs the function directly.\n */\nexport async function withSpan(\n name: string,\n op: string,\n fn: () => Promise\n): Promise {\n if (!telemetryEnabled) return fn()\n\n return Sentry.startSpan(\n { name, op, attributes: { 'sentry.origin': 'manual' } },\n async () => fn()\n )\n}\n\n/**\n * Record a metric gauge value (e.g., install duration).\n */\nexport function recordMetric(\n name: string,\n value: number,\n unit: string,\n tags?: Record\n): void {\n if (!telemetryEnabled) return\n Sentry.metrics.gauge(name, value, { unit, tags })\n}\n\n/**\n * Log an informational event to Sentry.\n */\nexport function logEvent(message: string, data?: Record): void {\n if (!telemetryEnabled) return\n Sentry.captureMessage(message, {\n level: 'info',\n tags: data\n })\n}\n\n/**\n * Flush pending Sentry events. Call before process exit.\n */\nexport async function flushTelemetry(): Promise {\n if (!telemetryEnabled) return\n await Sentry.flush(2000)\n}\n", + "import os from 'node:os'\nimport path from 'node:path'\nimport * as core from '@actions/core'\n\n/**\n * Enumerates options and maps them to their well-known option names.\n */\nexport enum OptionName {\n VERSION = 'version',\n CHANNEL = 'channel',\n OS = 'os',\n ARCH = 'arch',\n EXPORT_PATH = 'export_path',\n CUSTOM_URL = 'custom_url',\n VERSION_TAG = 'version_tag',\n TOKEN = 'token',\n INSTALL_PATH = 'install_path',\n FORCE = 'force',\n NO_CACHE = 'no_cache',\n INSTALLER = 'installer',\n TELEMETRY = 'telemetry'\n}\n\n/**\n * Recognized release channels.\n */\nexport type ElideChannel = 'nightly' | 'preview' | 'release'\n\n/**\n * Recognized installer methods.\n */\nexport type InstallerMethod =\n | 'archive'\n | 'shell'\n | 'msi'\n | 'pkg'\n | 'apt'\n | 'rpm'\n\n/**\n * Describes the interface provided by setup action configuration, once interpreted and once\n * defaults are applied.\n */\nexport interface ElideSetupActionOptions {\n // Desired version of Elide; the special token `latest` resolves the latest version.\n version: string | 'latest'\n\n // Release channel: 'nightly' (default), 'preview', or 'release'.\n channel: ElideChannel\n\n // Installation method: 'archive' (default), 'shell', 'msi', 'pkg', 'apt', or 'rpm'.\n installer: InstallerMethod\n\n // Whether to setup Elide on the PATH; defaults to `true`.\n export_path: boolean\n\n // Desired OS for the downloaded binary. If not provided, the current OS is resolved.\n os: 'darwin' | 'windows' | 'linux'\n\n // Desired arch for the downloaded binary. If not provided, the current arch is resolved.\n arch: 'amd64' | 'aarch64'\n\n // Directory path where Elide should be installed; if none is provided, conventional location is used for GHA.\n install_path: string\n\n // Whether to disable tool and action caching.\n no_cache: boolean\n\n // Whether to force installation if a copy of Elide is already installed.\n force: boolean\n\n // Custom download URL to use in place of interpreted download URLs.\n custom_url?: string\n\n // Version tag corresponding to a custom download URL.\n version_tag?: string\n\n // Custom GitHub token to use, or the workflow's default token, if any.\n token?: string\n\n // Whether to send anonymous error telemetry; defaults to `true`.\n telemetry: boolean\n}\n\n/**\n * Default install prefix on Windows.\n */\nexport const windowsDefaultPath = 'C:\\\\Elide'\n\n/**\n * Default install prefix on macOS and Linux.\n */\nexport const nixDefaultPath = path.resolve(os.homedir(), 'elide')\n\n/**\n * Default Elide configurations path on all platforms.\n */\nexport const configPath = path.resolve(os.homedir(), '.elide')\n\nconst defaultTargetPath =\n process.platform === 'win32' ? windowsDefaultPath : nixDefaultPath\n\n/**\n * Defaults to apply to all instances of the Elide setup action.\n */\nexport const defaults: ElideSetupActionOptions = {\n version: 'latest',\n channel: 'nightly',\n installer: 'archive',\n telemetry: true,\n no_cache: false,\n export_path: true,\n force: false,\n os: normalizeOs(process.platform),\n arch: normalizeArch(process.arch),\n install_path: defaultTargetPath\n}\n\n/**\n * Normalize an installer string to a recognized installer method.\n */\nexport function normalizeInstaller(value: string): InstallerMethod {\n switch (value.trim().toLowerCase()) {\n case 'archive':\n return 'archive'\n case 'shell':\n return 'shell'\n case 'msi':\n return 'msi'\n case 'pkg':\n return 'pkg'\n case 'apt':\n return 'apt'\n case 'rpm':\n return 'rpm'\n default:\n return 'archive'\n }\n}\n\n/**\n * Validate that the chosen installer method is compatible with the target OS.\n * Returns `{ valid: true }` or `{ valid: false, reason: string }`.\n */\nexport function validateInstallerForPlatform(\n installer: InstallerMethod,\n targetOs: string\n): { valid: boolean; reason?: string } {\n switch (installer) {\n case 'archive':\n case 'shell':\n return { valid: true }\n case 'msi':\n if (targetOs !== 'windows')\n return { valid: false, reason: 'MSI is only available on Windows' }\n return { valid: true }\n case 'pkg':\n if (targetOs !== 'darwin')\n return { valid: false, reason: 'PKG is only available on macOS' }\n return { valid: true }\n case 'apt':\n if (targetOs !== 'linux')\n return { valid: false, reason: 'apt is only available on Linux' }\n return { valid: true }\n case 'rpm':\n if (targetOs !== 'linux')\n return { valid: false, reason: 'RPM is only available on Linux' }\n return { valid: true }\n }\n}\n\n/**\n * Normalize a channel string to a recognized channel token.\n */\nexport function normalizeChannel(channel: string): ElideChannel {\n switch (channel.trim().toLowerCase()) {\n case 'nightly':\n return 'nightly'\n case 'preview':\n return 'preview'\n case 'release':\n case 'stable':\n return 'release'\n default:\n return 'nightly'\n }\n}\n\n/**\n * Normalize the provided OS name or token into a recognized token.\n *\n * @param os Operating system name or token.\n * @return Normalized OS name.\n */\nexport function normalizeOs(os: string): 'darwin' | 'windows' | 'linux' {\n switch (os.trim().toLowerCase()) {\n case 'macos':\n return 'darwin'\n case 'mac':\n return 'darwin'\n case 'darwin':\n return 'darwin'\n case 'windows':\n return 'windows'\n case 'win':\n return 'windows'\n case 'win32':\n return 'windows'\n case 'linux':\n return 'linux'\n }\n throw new Error(`Unrecognized OS: ${os}`)\n}\n\n/**\n * Normalize the provided architecture name or token into a recognized token.\n *\n * @param arch Architecture name or token.\n * @return Normalized architecture.\n */\nexport function normalizeArch(arch: string): 'amd64' | 'aarch64' {\n switch (arch.trim().toLowerCase()) {\n case 'x64':\n return 'amd64'\n case 'amd64':\n return 'amd64'\n case 'x86_64':\n return 'amd64'\n case 'aarch64':\n return 'aarch64'\n case 'arm64':\n return 'aarch64'\n }\n throw new Error(`Unrecognized architecture: ${arch}`)\n}\n\n/**\n * Build a suite of action options from defaults and overrides provided by the user.\n *\n * @param opts Override options provided by the user.\n * @return Merged set of applicable options.\n */\nexport default function buildOptions(\n opts?: Partial\n): ElideSetupActionOptions {\n return {\n ...defaults,\n ...opts,\n // force-normalize the OS and arch\n os: normalizeOs(opts?.os || defaults.os),\n arch: normalizeArch(opts?.arch || defaults.arch)\n } satisfies ElideSetupActionOptions\n}\n\nconst SENSITIVE_INPUT_NAMES = new Set([OptionName.TOKEN, 'secret', 'password'])\n\nfunction isSensitiveInput(name: string): boolean {\n return (\n SENSITIVE_INPUT_NAMES.has(name) ||\n name.toLowerCase().includes('token') ||\n name.toLowerCase().includes('secret')\n )\n}\n\nfunction stringInput(name: string, defaultValue?: string): string | undefined {\n const value = core.getInput(name)\n if (isSensitiveInput(name)) {\n core.debug(\n `Input: ${name}=${value ? '' : defaultValue ? '' : ''}`\n )\n } else {\n core.debug(`Input: ${name}=${value || defaultValue}`)\n }\n return value || defaultValue || undefined\n}\n\nfunction booleanInput(name: string, defaultValue: boolean): boolean {\n try {\n return core.getBooleanInput(name)\n } catch {\n return defaultValue\n }\n}\n\n/**\n * Build action options by reading GitHub Actions inputs via core.getInput.\n */\nexport function buildOptionsFromInputs(): ElideSetupActionOptions {\n return buildOptions({\n version: stringInput(OptionName.VERSION, 'latest'),\n installer: normalizeInstaller(\n stringInput(OptionName.INSTALLER, 'archive') as string\n ),\n install_path: stringInput(\n OptionName.INSTALL_PATH,\n process.env.ELIDE_HOME || defaults.install_path\n ),\n os: normalizeOs(stringInput(OptionName.OS, process.platform) as string),\n arch: normalizeArch(stringInput(OptionName.ARCH, process.arch) as string),\n channel: normalizeChannel(\n stringInput(OptionName.CHANNEL, 'nightly') as string\n ),\n force: booleanInput(OptionName.FORCE, false),\n export_path: booleanInput(OptionName.EXPORT_PATH, true),\n no_cache: booleanInput(OptionName.NO_CACHE, false),\n telemetry: booleanInput(OptionName.TELEMETRY, true),\n token: stringInput(OptionName.TOKEN, process.env.GITHUB_TOKEN),\n custom_url: stringInput(OptionName.CUSTOM_URL),\n version_tag: stringInput(OptionName.VERSION_TAG)\n })\n}\n", "export function getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${\n process.arch\n })`;\n }\n\n return \"\";\n}\n", "// @ts-check\n\nexport function register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce((callback, name) => {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(() => {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce((method, registered) => {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n", "// @ts-check\n\nexport function addHook(state, kind, name, hook) {\n const orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = (method, options) => {\n let result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then((result_) => {\n result = result_;\n return orig(result, options);\n })\n .then(() => {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = (method, options) => {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch((error) => {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n", @@ -207,15 +818,16 @@ "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as httpClient from '@actions/http-client';\nimport { fetch } from 'undici';\nexport function getAuthString(token, options) {\n if (!token && !options.auth) {\n throw new Error('Parameter token or opts.auth is required');\n }\n else if (token && options.auth) {\n throw new Error('Parameters token and opts.auth may not both be specified');\n }\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\n}\nexport function getProxyAgent(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgent(destinationUrl);\n}\nexport function getProxyAgentDispatcher(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgentDispatcher(destinationUrl);\n}\nexport function getProxyFetch(destinationUrl) {\n const httpDispatcher = getProxyAgentDispatcher(destinationUrl);\n const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () {\n return fetch(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }));\n });\n return proxyFetch;\n}\nexport function getApiBaseUrl() {\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\n}\n//# sourceMappingURL=utils.js.map", "import * as Context from './context.js';\nimport * as Utils from './internal/utils.js';\n// octokit + plugins\nimport { Octokit } from '@octokit/core';\nimport { restEndpointMethods } from '@octokit/plugin-rest-endpoint-methods';\nimport { paginateRest } from '@octokit/plugin-paginate-rest';\nexport const context = new Context.Context();\nconst baseUrl = Utils.getApiBaseUrl();\nexport const defaults = {\n baseUrl,\n request: {\n agent: Utils.getProxyAgent(baseUrl),\n fetch: Utils.getProxyFetch(baseUrl)\n }\n};\nexport const GitHub = Octokit.plugin(restEndpointMethods, paginateRest).defaults(defaults);\n/**\n * Convience function to correctly format Octokit Options to pass into the constructor.\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nexport function getOctokitOptions(token, options) {\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\n // Auth\n const auth = Utils.getAuthString(token, opts);\n if (auth) {\n opts.auth = auth;\n }\n return opts;\n}\n//# sourceMappingURL=utils.js.map", "import * as Context from './context.js';\nimport { GitHub, getOctokitOptions } from './utils.js';\nexport const context = new Context.Context();\n/**\n * Returns a hydrated octokit ready to use for GitHub Actions\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nexport function getOctokit(token, options, ...additionalPlugins) {\n const GitHubWithPlugins = GitHub.plugin(...additionalPlugins);\n return new GitHubWithPlugins(getOctokitOptions(token, options));\n}\n//# sourceMappingURL=github.js.map", - "// Version of the GitHub API to use.\nexport const GITHUB_API_VERSION = '2022-11-28'\n\n// Default headers to send on GitHub API requests.\nexport const GITHUB_DEFAULT_HEADERS = {\n 'X-GitHub-Api-Version': GITHUB_API_VERSION\n}\n", - "import * as core from '@actions/core'\nimport { Octokit } from 'octokit'\nimport * as toolCache from '@actions/tool-cache'\nimport * as github from '@actions/github'\nimport type { ElideSetupActionOptions } from './options'\nimport { GITHUB_DEFAULT_HEADERS } from './config'\nimport { obtainVersion } from './command'\nimport { which, mv } from '@actions/io'\nimport { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nconst downloadBase = 'https://elide.zip'\n\n/**\n * Version info resolved for a release of Elide.\n */\nexport type ElideVersionInfo = {\n // Name of the release, if available.\n name?: string\n\n // String identifying the version tag.\n tag_name: string\n\n // Whether this version is resolved (`false`) or user-provided (`true`).\n userProvided: boolean\n}\n\n/**\n * Release archive type.\n */\nexport enum ArchiveType {\n // Release is compressed with `gzip`.\n GZIP = 'gzip',\n\n // Release is compressed as a tarball with `xz`.\n TXZ = 'txz',\n\n // Release is compressed with `zip`.\n ZIP = 'zip'\n}\n\n/**\n * Information about an Elide release.\n */\nexport type ElideRelease = {\n // Resolved version, from fetching the latest version, or from the user's provided version.\n version: ElideVersionInfo\n\n // Path to the installed binary.\n elidePath: string\n\n // Path to Elide's home.\n elideHome: string\n\n // Path to Elide's bin folder.\n elideBin: string\n\n // Deferred cleanup or after-action method.\n deferred?: () => Promise\n}\n\n/**\n * Enumerates operating systems recognized by the action; presence in this enum does not\n * guarantee support.\n */\nexport enum ElideOS {\n // Darwin/macOS.\n MACOS = 'darwin',\n\n // Linux.\n LINUX = 'linux',\n\n // Windows.\n WINDOWS = 'windows'\n}\n\n/**\n * Enumerates architectures recognized by the action; presence in this enum does not\n * guarantee support.\n */\nexport enum ElideArch {\n // AMD64 and x86_64.\n AMD64 = 'amd64',\n\n // ARM64 and aarch64.\n ARM64 = 'aarch64'\n}\n\n/**\n * Describes downloaded and cached tool info.\n */\nexport interface DownloadedToolInfo {\n url: URL\n tarballPath: string\n archiveType: ArchiveType\n}\n\n/**\n * Map the internal OS token to the CDN platform tag.\n * The elide.zip CDN expects \"macos\" (not \"darwin\").\n */\nexport function cdnOs(os: string): string {\n return os === 'darwin' ? 'macos' : os\n}\n\n/**\n * Map the internal arch token to the CDN platform tag.\n * The elide.zip CDN expects \"arm64\" (not \"aarch64\").\n */\nexport function cdnArch(arch: string): string {\n return arch === 'aarch64' ? 'arm64' : arch\n}\n\n/**\n * Build a download URL for an Elide release; if a custom URL is provided as part of the set of\n * `options`, use it instead.\n *\n * @param version Version we are downloading.\n * @param options Effective options.\n * @return URL and archive type to use.\n */\nexport async function buildDownloadUrl(\n options: ElideSetupActionOptions,\n version: ElideVersionInfo\n): Promise<{ url: URL; archiveType: ArchiveType }> {\n let ext = 'tgz'\n let archiveType = ArchiveType.GZIP\n const hasXz = await which('xz')\n\n /* istanbul ignore next */\n if (options.os === ElideOS.WINDOWS) {\n ext = 'zip'\n archiveType = ArchiveType.ZIP\n } else if (hasXz) {\n // use xz if available\n ext = 'txz'\n archiveType = ArchiveType.TXZ\n }\n\n // determine channel and revision from version tag\n // tag_name examples: \"nightly-20260323\", \"preview-20260323\", \"1.0.0\"\n let channel = 'release'\n let revision = version.tag_name\n if (version.tag_name.startsWith('nightly-')) {\n channel = 'nightly'\n revision = version.tag_name.slice('nightly-'.length)\n } else if (version.tag_name.startsWith('preview-')) {\n channel = 'preview'\n revision = version.tag_name.slice('preview-'.length)\n }\n\n // when version was resolved (not user-provided), use \"latest\" to let\n // the CDN resolve the current artifact\n if (options.version === 'latest') {\n revision = 'latest'\n }\n\n // Map internal tokens to CDN platform tags (darwin→macos, aarch64→arm64)\n const os = cdnOs(options.os)\n const arch = cdnArch(options.arch)\n\n return {\n archiveType,\n url: new URL(\n // https://elide.zip/artifacts/{channel}/{revision}/elide.{os}-{arch}.{ext}\n `${downloadBase}/artifacts/${channel}/${revision}/elide.${os}-${arch}.${ext}`\n )\n }\n}\n\n/**\n * Unpack a release archive.\n *\n * @param archive Path to the archive.\n * @param elideHome Unpack target.\n * @param archiveType Type of archive to unpack.\n * @param resolvedVersion Actual version (not a symbolic version)\n * @param options Options which apply to this action run.\n * @return Path to the unpacked release.\n */\nasync function unpackRelease(\n archive: string,\n elideHome: string,\n archiveType: ArchiveType,\n resolvedVersion: string,\n options: ElideSetupActionOptions\n): Promise {\n let target: string\n try {\n /* istanbul ignore next */\n if (options.os === ElideOS.WINDOWS) {\n core.debug(\n `Extracting as zip on Windows, from: ${archive}, to: ${elideHome}`\n )\n target = await toolCache.extractZip(archive, elideHome)\n } else {\n const tarArchive = `${archive}.tar`\n\n switch (archiveType) {\n // extract as zip\n /* istanbul ignore next */\n case ArchiveType.ZIP:\n core.debug(\n `Extracting as zip on Unix or Linux, from: ${archive}, to: ${elideHome}`\n )\n target = await toolCache.extractZip(archive, elideHome)\n break\n\n // extract as tgz\n case ArchiveType.GZIP:\n core.debug(\n `Extracting as tgz on Unix or Linux, from: ${archive}, to: ${elideHome}`\n )\n target = await toolCache.extractTar(archive, elideHome, [\n 'xz',\n '--strip-components=1'\n ])\n break\n\n // extract as txz\n case ArchiveType.TXZ:\n {\n core.debug(\n `Extracting as txz on Unix or Linux, from: ${archive}, to: ${elideHome}`\n )\n const xzTool = await which('xz')\n if (!xzTool) {\n throw new Error('xz command not found, please install xz-utils')\n }\n core.debug(`xz command found at: ${xzTool}`)\n\n // xz is moody about archive names. so rename it.\n const xzArchive = `${tarArchive}.xz`\n await mv(archive, xzArchive, { force: false })\n\n // check if the archive exists\n if (!existsSync(xzArchive)) {\n throw new Error(\n `Archive not found (renaming failed?): ${xzArchive} (renamed)`\n )\n }\n\n // unpack using xz first; we pass `-v` for verbose and `-d` to decompress\n const xzRun = spawnSync(xzTool, ['-v', '-d', xzArchive], {\n encoding: 'utf-8'\n })\n if (xzRun.status !== 0) {\n console.log('XZ output: ', xzRun.stdout)\n console.error('XZ error output: ', xzRun.stderr)\n throw new Error(`xz extraction failed: ${xzRun.stderr}`)\n }\n core.debug(`XZ extraction completed: ${xzRun.status}`)\n }\n\n // now extract the tarball\n target = await toolCache.extractTar(tarArchive, elideHome, [\n 'x',\n '--strip-components=1'\n ])\n break\n }\n }\n } catch (err) {\n /* istanbul ignore next */\n core.warning(`Failed to extract Elide release: ${err}`)\n target = elideHome\n }\n\n // determine if the archive has a directory root\n if (\n resolvedVersion === '1.0.0-alpha7' ||\n resolvedVersion === '1.0.0-alpha8'\n ) {\n return target // no directory root: early release\n }\n core.debug(`Elide release ${resolvedVersion} extracted at ${target}`)\n return target\n}\n\n/**\n * Fetch the latest Elide release from GitHub.\n *\n * @param token GitHub token active for this workflow step.\n */\nexport async function resolveLatestVersion(\n token?: string\n): Promise {\n /* istanbul ignore next */\n const octokit = token ? github.getOctokit(token) : new Octokit({})\n const latest = await octokit.request(\n 'GET /repos/{owner}/{repo}/releases/latest',\n {\n owner: 'elide-dev',\n repo: 'elide',\n headers: GITHUB_DEFAULT_HEADERS\n }\n )\n\n /* istanbul ignore next */\n if (!latest) {\n throw new Error('Failed to fetch the latest Elide version')\n }\n /* istanbul ignore next */\n const name = latest.data?.name || undefined\n return {\n name,\n tag_name: latest.data.tag_name,\n userProvided: !!token\n }\n}\n\n/**\n * Conditionally download the desired version of Elide, or use a cached version, if available.\n *\n * @param version Resolved version info for the desired copy of Elide.\n * @param options Effective setup action options.\n */\nasync function maybeDownload(\n version: ElideVersionInfo,\n options: ElideSetupActionOptions\n): Promise {\n // build download URL, use result from cache or disk\n const { url, archiveType } = await buildDownloadUrl(options, version)\n const sep = options.os === ElideOS.WINDOWS ? '\\\\' : '/'\n const binName = options.os === ElideOS.WINDOWS ? 'elide.exe' : 'elide'\n let targetBin = `${options.install_path}${sep}bin${sep}${binName}`\n\n if (options.no_cache === true) {\n console.info('Tool caching is disabled.')\n }\n\n // build resulting tarball path and resolved tool info\n let elidePath = targetBin\n /* istanbul ignore next */\n let elideHome: string = process.env.ELIDE_HOME || options.install_path\n let elidePathTarget = elideHome\n let elideBin: string = `${elideHome}${sep}bin`\n let elideDir: string | null = null\n\n try {\n core.debug(\n `Checking for cached tool 'elide' at version '${version.tag_name}'`\n )\n elideDir = toolCache.find('elide', version.tag_name, options.arch)\n } catch (err) {\n /* istanbul ignore next */\n core.debug(`Failed to locate Elide in tool cache: ${err}`)\n }\n /* istanbul ignore next */\n if (options.no_cache !== true && elideDir) {\n // we have an existing cached copy of elide\n core.debug('Caching enabled and cached Elide release found; using it')\n elidePath = `${elideDir}${sep}bin${sep}${binName}`\n elidePathTarget = elideDir\n elideBin = `${elideDir}${sep}bin`\n core.info(`Using cached copy of Elide at version ${version.tag_name}`)\n } else {\n /* istanbul ignore next */\n if (options.no_cache) {\n core.debug(\n 'Cache disabled; forcing a fetch of the specified Elide release'\n )\n } else {\n core.debug('Cache enabled but no hit was found; downloading release')\n }\n\n core.info(`Installing from URL: ${url} (type: ${archiveType})`)\n\n // we do not have an existing copy; download it\n let elideArchive: string | null = null\n try {\n elideArchive = await toolCache.downloadTool(url.toString())\n } catch (err) {\n /* istanbul ignore next */\n core.error(`Failed to download Elide release: ${err}`)\n /* istanbul ignore next */\n if (err instanceof Error) core.setFailed(err)\n /* istanbul ignore next */\n throw err\n }\n\n core.debug(`Elide release downloaded to: ${elideArchive}`)\n\n elideHome = await unpackRelease(\n elideArchive,\n elideHome,\n archiveType,\n version.tag_name,\n options\n )\n elidePathTarget = elideHome\n\n if (options.no_cache !== true) {\n // cache the tool\n const cachedPath = await toolCache.cacheDir(\n elideHome,\n 'elide',\n version.tag_name,\n options.arch\n )\n\n elidePathTarget = cachedPath\n elideBin = `${cachedPath}${sep}bin`\n core.debug(`Elide release cached at: ${cachedPath}`)\n } else {\n core.debug('Tool caching is disabled; not caching downloaded release')\n }\n }\n\n const result = {\n version,\n elidePath,\n elideHome: elidePathTarget,\n elideBin\n }\n core.debug(`Elide release info: ${JSON.stringify(result)}`)\n return result\n}\n\n/**\n * Fetch a download link for the specified Elide version; if the version is `latest`, fetch\n * the download link which matches for the latest release.\n *\n * @param options Canonical suite of options to use for this action instance.\n */\nexport async function downloadRelease(\n options: ElideSetupActionOptions\n): Promise {\n if (options.custom_url) {\n // if we're using a custom URL, download it based on that token\n try {\n core.debug(`Downloading custom archive: ${options.custom_url}`)\n const customArchive = await toolCache.downloadTool(options.custom_url)\n const versionTag = options.version_tag || 'dev'\n\n // sniff archive type from URL\n let archiveType: ArchiveType = ArchiveType.GZIP\n /* istanbul ignore next */\n if (options.custom_url.endsWith('.txz')) {\n archiveType = ArchiveType.TXZ\n } else if (options.custom_url.endsWith('.zip')) {\n archiveType = ArchiveType.ZIP\n }\n\n /* istanbul ignore next */\n let elideHome: string = process.env.ELIDE_HOME || options.install_path\n elideHome = await unpackRelease(\n customArchive,\n elideHome,\n archiveType,\n versionTag,\n options\n )\n const sep = options.os === ElideOS.WINDOWS ? '\\\\' : '/'\n const binName = options.os === ElideOS.WINDOWS ? 'elide.exe' : 'elide'\n const elideBin = `${elideHome}${sep}bin`\n const elidePath = `${elideBin}${sep}${binName}`\n\n return {\n version: {\n tag_name: await obtainVersion(elidePath),\n userProvided: true\n },\n elideHome,\n elideBin,\n elidePath\n }\n } catch (err) {\n /* istanbul ignore next */\n core.error(`Failed to download custom release: ${err}`)\n /* istanbul ignore next */\n if (err instanceof Error) core.setFailed(err)\n /* istanbul ignore next */\n throw err\n }\n } else {\n // resolve applicable version\n let versionInfo: ElideVersionInfo\n if (options.version === 'latest') {\n core.debug('Resolving latest version via GitHub API')\n versionInfo = await resolveLatestVersion(options.token)\n } else {\n /* istanbul ignore next */\n versionInfo = {\n tag_name: options.version,\n userProvided: true\n }\n }\n\n // setup caching with the effective version and perform download\n return maybeDownload(versionInfo, options)\n }\n}\n", - "import { access } from 'node:fs/promises'\n\n/**\n * Check whether the current system is Debian-like (Debian, Ubuntu, etc.)\n * by testing for the presence of `/etc/debian_version`.\n *\n * @return `true` if `/etc/debian_version` exists.\n */\nexport async function isDebianLike(): Promise {\n try {\n await access('/etc/debian_version')\n return true\n } catch {\n return false\n }\n}\n", - "import path from 'node:path'\nimport * as core from '@actions/core'\nimport * as exec from '@actions/exec'\nimport { which } from '@actions/io'\nimport type { ElideRelease } from './releases'\nimport type { ElideSetupActionOptions } from './options'\nimport { obtainVersion } from './command'\n\n/**\n * Map the normalized arch token used by the action to the Debian arch name.\n */\nfunction debianArch(arch: 'amd64' | 'aarch64'): string {\n switch (arch) {\n case 'amd64':\n return 'amd64'\n case 'aarch64':\n return 'arm64'\n }\n}\n\n/**\n * Install Elide via the official apt repository.\n *\n * Steps:\n * 1. Import the Elide GPG signing key.\n * 2. Add the apt repository source.\n * 3. `apt-get update` and `apt-get install elide`.\n *\n * @param options Effective action options.\n * @return Release information for the installed binary.\n */\nexport async function installViaApt(\n options: ElideSetupActionOptions\n): Promise {\n const arch = debianArch(options.arch)\n\n // 1. Import GPG key\n core.info('Adding Elide apt repository GPG key')\n await exec.exec('bash', [\n '-c',\n 'set -o pipefail && curl -fsSL https://keys.elide.dev/gpg.key | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/elide.gpg'\n ])\n\n // 2. Add apt source\n core.info('Adding Elide apt repository')\n const sourceLine = `deb [arch=${arch} signed-by=/usr/share/keyrings/elide.gpg] https://dl.elide.dev nightly main`\n await exec.exec('sudo', ['tee', '/etc/apt/sources.list.d/elide.list'], {\n input: Buffer.from(sourceLine)\n })\n\n // 3. Update and install\n core.info('Installing Elide via apt')\n await exec.exec('sudo', ['apt-get', 'update', '-qq'])\n\n const installArgs = ['apt-get', 'install', '-y', '-qq']\n if (\n options.version &&\n options.version !== 'latest' &&\n options.version !== 'local'\n ) {\n installArgs.push(`elide=${options.version}`)\n } else {\n installArgs.push('elide')\n }\n await exec.exec('sudo', installArgs)\n\n // 4. Locate the installed binary\n const elidePath = await which('elide', true)\n const version = await obtainVersion(elidePath)\n const elideBin = path.dirname(elidePath)\n const elideHome = elideBin\n\n core.info(`Elide ${version} installed via apt at ${elidePath}`)\n\n return {\n version: {\n tag_name: version,\n userProvided: options.version !== 'latest'\n },\n elidePath,\n elideHome,\n elideBin\n }\n}\n", - "import path from 'node:path'\nimport * as core from '@actions/core'\nimport * as exec from '@actions/exec'\nimport * as toolCache from '@actions/tool-cache'\nimport { which } from '@actions/io'\nimport type { ElideRelease } from './releases'\nimport type { ElideSetupActionOptions } from './options'\nimport { obtainVersion } from './command'\n\nconst installScriptUrl = 'https://dl.elide.dev/cli/install.sh'\n\n/**\n * Install Elide via the official `elide.sh` install script.\n *\n * This path is used on macOS and non-Debian Linux where the apt repository\n * is not available.\n *\n * @param options Effective action options.\n * @return Release information for the installed binary.\n */\nexport async function installViaScript(\n options: ElideSetupActionOptions\n): Promise {\n // Download the install script to a temp file (safer than curl | bash)\n core.info('Downloading Elide install script')\n const scriptPath = await toolCache.downloadTool(installScriptUrl)\n\n // Build script arguments\n const scriptArgs = [scriptPath]\n if (\n options.version &&\n options.version !== 'latest' &&\n options.version !== 'local'\n ) {\n scriptArgs.push('--version', options.version)\n }\n\n // Execute the install script\n core.info('Running Elide install script')\n await exec.exec('bash', scriptArgs)\n\n // Locate the installed binary\n let elidePath: string\n try {\n elidePath = await which('elide', true)\n } catch {\n // The install script may place the binary in ~/.elide/bin which\n // might not be on PATH yet. Try the conventional location.\n const home = process.env.HOME || process.env.USERPROFILE || '~'\n const fallbackBin = `${home}/.elide/bin`\n core.addPath(fallbackBin)\n elidePath = await which('elide', true)\n }\n\n const version = await obtainVersion(elidePath)\n const elideBin = path.dirname(elidePath)\n const elideHome = elideBin\n\n core.info(`Elide ${version} installed via script at ${elidePath}`)\n\n return {\n version: {\n tag_name: version,\n userProvided: options.version !== 'latest'\n },\n elidePath,\n elideHome,\n elideBin\n }\n}\n", - "import * as core from '@actions/core'\nimport * as io from '@actions/io'\nimport { ActionOutputName, ElideSetupActionOutputs } from './outputs'\nimport { prewarm, info, obtainVersion } from './command'\n\nimport buildOptions, {\n OptionName,\n ElideSetupActionOptions,\n defaults,\n normalizeOs,\n normalizeArch\n} from './options'\n\nimport { downloadRelease, ElideRelease } from './releases'\nimport { isDebianLike } from './platform'\nimport { installViaApt } from './install-apt'\nimport { installViaScript } from './install-script'\n\nfunction stringOption(\n option: string,\n defaultValue?: string\n): string | undefined {\n const value: string = core.getInput(option)\n core.debug(`Property value: ${option}=${value || defaultValue}`)\n return value || defaultValue || undefined\n}\n\nfunction getBooleanOption(booleanInputName: string): boolean {\n const trueValue = [\n 'true',\n 'True',\n 'TRUE',\n 'yes',\n 'Yes',\n 'YES',\n 'y',\n 'Y',\n 'on',\n 'On',\n 'ON'\n ]\n const falseValue = [\n 'false',\n 'False',\n 'FALSE',\n 'no',\n 'No',\n 'NO',\n 'n',\n 'N',\n 'off',\n 'Off',\n 'OFF'\n ]\n const stringInput = core.getInput(booleanInputName)\n /* istanbul ignore next */\n if (trueValue.includes(stringInput)) return true\n /* istanbul ignore next */\n if (falseValue.includes(stringInput)) return false\n return false // default to `false`\n}\n\nfunction booleanOption(option: string, defaultValue: boolean): boolean {\n const value: boolean = getBooleanOption(option)\n /* istanbul ignore next */\n return value !== null && value !== undefined ? value : defaultValue\n}\n\nexport function notSupported(options: ElideSetupActionOptions): null | Error {\n const spec = `${options.os}-${options.arch}`\n switch (spec) {\n case 'linux-amd64':\n case 'linux-aarch64':\n case 'darwin-aarch64':\n case 'darwin-amd64':\n case 'windows-amd64':\n return null\n default:\n core.error(`Platform is not supported: ${spec}`)\n return new Error(`Platform not supported: ${spec}`)\n }\n}\n\nexport async function postInstall(\n bin: string,\n options: ElideSetupActionOptions\n): Promise {\n if (options.prewarm) {\n try {\n await prewarm(bin)\n } catch (err) {\n core.debug(\n `Prewarm failed; proceeding anyway. Error: ${err instanceof Error ? err.message : err}`\n )\n }\n }\n try {\n await info(bin)\n } catch (err) {\n core.debug(\n `Info command failed; proceeding anyway. Error: ${err instanceof Error ? err.message : err}`\n )\n }\n}\n\nexport async function resolveExistingBinary(): Promise {\n try {\n return await io.which('elide', true)\n } catch {\n // ignore: no existing copy\n return null\n }\n}\n\n/**\n * The main function for the action.\n * @returns {Promise} Resolves when the action is complete.\n */\nexport async function run(\n options?: Partial\n): Promise {\n try {\n // resolve effective plugin options\n core.info('Installing Elide with GitHub Actions')\n const effectiveOptions: ElideSetupActionOptions = options\n ? buildOptions(options)\n : buildOptions({\n version: stringOption(OptionName.VERSION, 'latest'),\n install_path: stringOption(\n OptionName.INSTALL_PATH,\n /* istanbul ignore next */\n process.env.ELIDE_HOME || defaults.install_path\n ),\n os: normalizeOs(\n stringOption(OptionName.OS, process.platform) as string\n ),\n arch: normalizeArch(\n stringOption(OptionName.ARCH, process.arch) as string\n ),\n export_path: booleanOption(OptionName.EXPORT_PATH, true),\n token: stringOption(OptionName.TOKEN, process.env.GITHUB_TOKEN),\n custom_url: stringOption(OptionName.CUSTOM_URL),\n version_tag: stringOption(OptionName.VERSION_TAG)\n })\n\n // make sure the requested version, platform, and os triple is supported\n const supportErr = notSupported(effectiveOptions)\n if (supportErr) {\n core.setFailed(supportErr.message)\n return\n }\n\n // if elide is already installed and the user didn't set `force`, we can bail\n if (!effectiveOptions.force) {\n const existing: string | null = await resolveExistingBinary()\n if (existing) {\n core.debug(\n `Located existing Elide binary at: '${existing}'. Obtaining version...`\n )\n await postInstall(existing, effectiveOptions)\n const version = await obtainVersion(existing)\n\n /* istanbul ignore next */\n if (\n version === effectiveOptions.version ||\n effectiveOptions.version === 'local'\n ) {\n core.info(\n `Existing Elide installation at version '${version}' was preserved`\n )\n core.setOutput(ActionOutputName.PATH, existing)\n core.setOutput(ActionOutputName.VERSION, version)\n return\n }\n }\n }\n\n // choose installation method based on platform\n let release: ElideRelease\n if (effectiveOptions.custom_url) {\n // custom URL always uses the tarball download path\n release = await downloadRelease(effectiveOptions)\n } else if (effectiveOptions.os === 'linux' && (await isDebianLike())) {\n core.info('Detected Debian/Ubuntu -- installing via apt repository')\n release = await installViaApt(effectiveOptions)\n } else if (effectiveOptions.os === 'windows') {\n core.info('Detected Windows -- installing via archive download')\n release = await downloadRelease(effectiveOptions)\n } else if (\n effectiveOptions.os === 'linux' ||\n effectiveOptions.os === 'darwin'\n ) {\n core.info('Installing via install script')\n release = await installViaScript(effectiveOptions)\n } else {\n // Unknown platform: fall back to archive download\n release = await downloadRelease(effectiveOptions)\n }\n core.debug(`Release version: '${release.version.tag_name}'`)\n\n // if instructed, add Elide to the path\n if (effectiveOptions.export_path) {\n core.info(`Adding '${release.elideBin}' to PATH`)\n core.addPath(release.elideBin)\n }\n\n // begin preparing outputs\n const outputs: ElideSetupActionOutputs = {\n path: release.elidePath,\n version: effectiveOptions.version\n }\n\n // verify installed version\n await postInstall(release.elidePath, effectiveOptions)\n const version = await obtainVersion(release.elidePath)\n\n const isNightly = release.version.tag_name.startsWith('nightly-')\n if (!isNightly && version !== release.version.tag_name) {\n core.warning(\n `Elide version mismatch: expected '${release.version.tag_name}', but got '${version}'`\n )\n }\n\n // mount outputs\n core.setOutput(ActionOutputName.PATH, outputs.path)\n core.setOutput(ActionOutputName.VERSION, version)\n core.info(`Elide installed at version ${release.version.tag_name}`)\n } catch (error) {\n // Fail the workflow run if an error occurs\n if (error instanceof Error) core.setFailed(error.message)\n }\n}\n", + "import * as core from '@actions/core'\nimport { Octokit } from 'octokit'\nimport * as toolCache from '@actions/tool-cache'\nimport * as github from '@actions/github'\nimport type { ElideSetupActionOptions } from './options'\nimport { obtainVersion } from './command'\nimport { which, mv } from '@actions/io'\nimport { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nconst downloadBase = 'https://elide.zip'\n\nconst GITHUB_API_VERSION = '2022-11-28'\n\nconst GITHUB_DEFAULT_HEADERS = {\n 'X-GitHub-Api-Version': GITHUB_API_VERSION\n}\n\n// Matches tags like \"nightly-20260328\" or \"nightly-2026-03-28\"\nconst NIGHTLY_TAG_RE = /^nightly-(.+)$/\n\n/**\n * Convert a release tag to a valid semver string for use with @actions/tool-cache.\n *\n * tool-cache's `find()` calls `semver.clean()` on the version, which returns null\n * for non-semver strings like \"nightly-20260328\". This causes cache lookups to\n * silently fail (never hit, never store correctly).\n *\n * Mapping:\n * \"1.0.0\" → \"1.0.0\" (already semver)\n * \"1.0.0-beta10\" → \"1.0.0-beta10\" (valid semver prerelease)\n * \"nightly-20260328\" → \"0.0.0-nightly.20260328\"\n *\n * We use prerelease (not build metadata with +) because semver.clean strips\n * build metadata, making it useless for cache key matching.\n */\nexport function toSemverCacheKey(tag: string): string {\n const nightlyMatch = tag.match(NIGHTLY_TAG_RE)\n if (nightlyMatch) {\n // Use prerelease segment so semver.clean preserves it\n const datePart = nightlyMatch[1].replaceAll('-', '')\n return `0.0.0-nightly.${datePart}`\n }\n return tag\n}\n\n/**\n * Version info resolved for a release of Elide.\n */\nexport type ElideVersionInfo = {\n // Name of the release, if available.\n name?: string\n\n // String identifying the version tag.\n tag_name: string\n\n // Whether this version is resolved (`false`) or user-provided (`true`).\n userProvided: boolean\n}\n\n/**\n * Release archive type.\n */\nexport enum ArchiveType {\n // Release is compressed with `gzip`.\n GZIP = 'gzip',\n\n // Release is compressed as a tarball with `xz`.\n TXZ = 'txz',\n\n // Release is compressed with `zip`.\n ZIP = 'zip'\n}\n\n/**\n * Information about an Elide release.\n */\nexport type ElideRelease = {\n // Resolved version, from fetching the latest version, or from the user's provided version.\n version: ElideVersionInfo\n\n // Path to the installed binary.\n elidePath: string\n\n // Path to Elide's home.\n elideHome: string\n\n // Path to Elide's bin folder.\n elideBin: string\n\n // Whether this release was served from the tool cache.\n cached?: boolean\n\n // Deferred cleanup or after-action method.\n deferred?: () => Promise\n}\n\n/**\n * Enumerates operating systems recognized by the action; presence in this enum does not\n * guarantee support.\n */\nexport enum ElideOS {\n // Darwin/macOS.\n MACOS = 'darwin',\n\n // Linux.\n LINUX = 'linux',\n\n // Windows.\n WINDOWS = 'windows'\n}\n\n/**\n * Enumerates architectures recognized by the action; presence in this enum does not\n * guarantee support.\n */\nexport enum ElideArch {\n // AMD64 and x86_64.\n AMD64 = 'amd64',\n\n // ARM64 and aarch64.\n ARM64 = 'aarch64'\n}\n\n/**\n * Describes downloaded and cached tool info.\n */\nexport interface DownloadedToolInfo {\n url: URL\n tarballPath: string\n archiveType: ArchiveType\n}\n\n/**\n * Map the internal OS token to the CDN platform tag.\n * The elide.zip CDN expects \"macos\" (not \"darwin\").\n */\nexport function cdnOs(os: string): string {\n return os === 'darwin' ? 'macos' : os\n}\n\n/**\n * Map the internal arch token to the CDN platform tag.\n * The elide.zip CDN expects \"arm64\" (not \"aarch64\").\n */\nexport function cdnArch(arch: string): string {\n return arch === 'aarch64' ? 'arm64' : arch\n}\n\n/**\n * Build a CDN asset URL for an Elide release artifact.\n * Appends `?source=gha` for analytics tracking.\n *\n * @param options Effective options (uses channel, version, os, arch).\n * @param ext File extension (e.g. 'tgz', 'txz', 'zip', 'msi', 'pkg', 'rpm').\n * @return Full CDN URL.\n */\nexport function buildCdnAssetUrl(\n options: ElideSetupActionOptions,\n ext: string\n): URL {\n const channel = options.channel || 'nightly'\n const revision = options.version === 'latest' ? 'latest' : options.version\n const os = cdnOs(options.os)\n const arch = cdnArch(options.arch)\n return new URL(\n `${downloadBase}/artifacts/${channel}/${revision}/elide.${os}-${arch}.${ext}?source=gha`\n )\n}\n\n/**\n * Build a download URL for an Elide release archive.\n * Selects the best archive format based on local tool availability.\n *\n * @param options Effective options.\n * @return URL and archive type to use.\n */\nexport async function buildDownloadUrl(\n options: ElideSetupActionOptions\n): Promise<{ url: URL; archiveType: ArchiveType }> {\n let ext = 'tgz'\n let archiveType = ArchiveType.GZIP\n const hasXz = await which('xz')\n\n if (options.os === ElideOS.WINDOWS) {\n ext = 'zip'\n archiveType = ArchiveType.ZIP\n } else if (hasXz) {\n ext = 'txz'\n archiveType = ArchiveType.TXZ\n }\n\n return {\n archiveType,\n url: buildCdnAssetUrl(options, ext)\n }\n}\n\n/**\n * Unpack a release archive.\n *\n * @param archive Path to the archive.\n * @param elideHome Unpack target.\n * @param archiveType Type of archive to unpack.\n * @param resolvedVersion Actual version (not a symbolic version)\n * @param options Options which apply to this action run.\n * @return Path to the unpacked release.\n */\nasync function unpackRelease(\n archive: string,\n elideHome: string,\n archiveType: ArchiveType,\n resolvedVersion: string,\n options: ElideSetupActionOptions\n): Promise {\n let target: string\n try {\n if (options.os === ElideOS.WINDOWS) {\n core.debug(\n `Extracting as zip on Windows, from: ${archive}, to: ${elideHome}`\n )\n target = await toolCache.extractZip(archive, elideHome)\n } else {\n const tarArchive = `${archive}.tar`\n\n switch (archiveType) {\n // extract as zip\n case ArchiveType.ZIP:\n core.debug(\n `Extracting as zip on Unix or Linux, from: ${archive}, to: ${elideHome}`\n )\n target = await toolCache.extractZip(archive, elideHome)\n break\n\n // extract as tgz\n case ArchiveType.GZIP:\n core.debug(\n `Extracting as tgz on Unix or Linux, from: ${archive}, to: ${elideHome}`\n )\n target = await toolCache.extractTar(archive, elideHome, [\n 'xz',\n '--strip-components=1'\n ])\n break\n\n // extract as txz\n case ArchiveType.TXZ:\n {\n core.debug(\n `Extracting as txz on Unix or Linux, from: ${archive}, to: ${elideHome}`\n )\n const xzTool = await which('xz')\n if (!xzTool) {\n throw new Error('xz command not found, please install xz-utils')\n }\n core.debug(`xz command found at: ${xzTool}`)\n\n // xz is moody about archive names. so rename it.\n const xzArchive = `${tarArchive}.xz`\n await mv(archive, xzArchive, { force: false })\n\n // check if the archive exists\n if (!existsSync(xzArchive)) {\n throw new Error(\n `Archive not found (renaming failed?): ${xzArchive} (renamed)`\n )\n }\n\n // unpack using xz first; we pass `-v` for verbose and `-d` to decompress\n const xzRun = spawnSync(xzTool, ['-v', '-d', xzArchive], {\n encoding: 'utf-8'\n })\n if (xzRun.status !== 0) {\n console.log('XZ output: ', xzRun.stdout)\n console.error('XZ error output: ', xzRun.stderr)\n throw new Error(`xz extraction failed: ${xzRun.stderr}`)\n }\n core.debug(`XZ extraction completed: ${xzRun.status}`)\n }\n\n // now extract the tarball\n target = await toolCache.extractTar(tarArchive, elideHome, [\n 'x',\n '--strip-components=1'\n ])\n break\n }\n }\n } catch (err) {\n core.warning(`Failed to extract Elide release: ${err}`)\n target = elideHome\n }\n\n core.debug(`Elide release ${resolvedVersion} extracted at ${target}`)\n return target\n}\n\nconst MAX_RETRIES = 3\nconst RETRY_DELAY_MS = 1000\n\n/**\n * Fetch the latest Elide release from GitHub, with retry on transient failures.\n *\n * @param token GitHub token active for this workflow step.\n */\nexport async function resolveLatestVersion(\n token?: string\n): Promise {\n if (!token) {\n core.warning(\n 'No GitHub token provided. API requests may be rate-limited. ' +\n 'Set the `token` input or ensure GITHUB_TOKEN is available.'\n )\n }\n const octokit = token ? github.getOctokit(token) : new Octokit({})\n\n let lastError: Error | undefined\n for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\n try {\n const latest = await octokit.request(\n 'GET /repos/{owner}/{repo}/releases/latest',\n {\n owner: 'elide-dev',\n repo: 'elide',\n headers: GITHUB_DEFAULT_HEADERS\n }\n )\n\n if (!latest) {\n throw new Error('Failed to fetch the latest Elide version')\n }\n const name = latest.data?.name || undefined\n return {\n name,\n tag_name: latest.data.tag_name,\n userProvided: !!token\n }\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err))\n const isRateLimit =\n lastError.message.includes('rate limit') ||\n lastError.message.includes('quota exhausted') ||\n lastError.message.includes('403') ||\n lastError.message.includes('429')\n\n if (attempt < MAX_RETRIES) {\n const delay = RETRY_DELAY_MS * attempt\n core.warning(\n `GitHub API request failed (attempt ${attempt}/${MAX_RETRIES}): ${lastError.message}. Retrying in ${delay}ms...`\n )\n await new Promise(resolve => setTimeout(resolve, delay))\n } else if (isRateLimit) {\n core.error(\n 'GitHub API rate limit exhausted. Provide a token via the `token` input to increase the limit.',\n { title: 'Rate Limited' }\n )\n }\n }\n }\n\n throw lastError!\n}\n\n/**\n * Conditionally download the desired version of Elide, or use a cached version, if available.\n *\n * @param version Resolved version info for the desired copy of Elide.\n * @param options Effective setup action options.\n */\nasync function maybeDownload(\n version: ElideVersionInfo,\n options: ElideSetupActionOptions\n): Promise {\n // build download URL, use result from cache or disk\n const { url, archiveType } = await buildDownloadUrl(options)\n const sep = options.os === ElideOS.WINDOWS ? '\\\\' : '/'\n const binName = options.os === ElideOS.WINDOWS ? 'elide.exe' : 'elide'\n let targetBin = `${options.install_path}${sep}bin${sep}${binName}`\n\n if (options.no_cache === true) {\n console.info('Tool caching is disabled.')\n }\n\n // build resulting tarball path and resolved tool info\n let elidePath = targetBin\n let elideHome: string = process.env.ELIDE_HOME || options.install_path\n let elidePathTarget = elideHome\n let elideBin: string = `${elideHome}${sep}bin`\n let elideDir: string | null = null\n const cacheVersion = toSemverCacheKey(version.tag_name)\n\n try {\n core.debug(\n `Checking for cached tool 'elide' at version '${version.tag_name}' (cache key: ${cacheVersion})`\n )\n elideDir = toolCache.find('elide', cacheVersion, options.arch)\n } catch (err) {\n core.debug(`Failed to locate Elide in tool cache: ${err}`)\n }\n if (options.no_cache !== true && elideDir) {\n // we have an existing cached copy of elide\n core.debug('Caching enabled and cached Elide release found; using it')\n elidePath = `${elideDir}${sep}bin${sep}${binName}`\n elidePathTarget = elideDir\n elideBin = `${elideDir}${sep}bin`\n core.info(`Using cached copy of Elide at version ${version.tag_name}`)\n } else {\n if (options.no_cache) {\n core.debug(\n 'Cache disabled; forcing a fetch of the specified Elide release'\n )\n } else {\n core.debug('Cache enabled but no hit was found; downloading release')\n }\n\n core.info(`Installing from URL: ${url} (type: ${archiveType})`)\n\n // we do not have an existing copy; download it\n let elideArchive: string | null = null\n try {\n elideArchive = await toolCache.downloadTool(url.toString())\n } catch (err) {\n core.error(`Failed to download Elide release: ${err}`)\n if (err instanceof Error) core.setFailed(err)\n throw err\n }\n\n core.debug(`Elide release downloaded to: ${elideArchive}`)\n\n elideHome = await unpackRelease(\n elideArchive,\n elideHome,\n archiveType,\n version.tag_name,\n options\n )\n elidePathTarget = elideHome\n\n if (options.no_cache !== true) {\n // cache the tool\n const cachedPath = await toolCache.cacheDir(\n elideHome,\n 'elide',\n cacheVersion,\n options.arch\n )\n\n elidePathTarget = cachedPath\n elideBin = `${cachedPath}${sep}bin`\n core.debug(`Elide release cached at: ${cachedPath}`)\n } else {\n core.debug('Tool caching is disabled; not caching downloaded release')\n }\n }\n\n const wasCached = !!(options.no_cache !== true && elideDir)\n const result = {\n version,\n elidePath,\n elideHome: elidePathTarget,\n elideBin,\n cached: wasCached\n }\n core.debug(`Elide release info: ${JSON.stringify(result)}`)\n return result\n}\n\n/**\n * Fetch a download link for the specified Elide version; if the version is `latest`, fetch\n * the download link which matches for the latest release.\n *\n * @param options Canonical suite of options to use for this action instance.\n */\nexport async function downloadRelease(\n options: ElideSetupActionOptions\n): Promise {\n if (options.custom_url) {\n // if we're using a custom URL, download it based on that token\n try {\n core.debug(`Downloading custom archive: ${options.custom_url}`)\n const customArchive = await toolCache.downloadTool(options.custom_url)\n const versionTag = options.version_tag || 'dev'\n\n // sniff archive type from URL\n let archiveType: ArchiveType = ArchiveType.GZIP\n if (options.custom_url.endsWith('.txz')) {\n archiveType = ArchiveType.TXZ\n } else if (options.custom_url.endsWith('.zip')) {\n archiveType = ArchiveType.ZIP\n }\n\n let elideHome: string = process.env.ELIDE_HOME || options.install_path\n elideHome = await unpackRelease(\n customArchive,\n elideHome,\n archiveType,\n versionTag,\n options\n )\n const sep = options.os === ElideOS.WINDOWS ? '\\\\' : '/'\n const binName = options.os === ElideOS.WINDOWS ? 'elide.exe' : 'elide'\n const elideBin = `${elideHome}${sep}bin`\n const elidePath = `${elideBin}${sep}${binName}`\n\n return {\n version: {\n tag_name: await obtainVersion(elidePath),\n userProvided: true\n },\n elideHome,\n elideBin,\n elidePath\n }\n } catch (err) {\n core.error(`Failed to download custom release: ${err}`)\n if (err instanceof Error) core.setFailed(err)\n throw err\n }\n } else {\n // resolve applicable version\n let versionInfo: ElideVersionInfo\n if (options.version === 'latest') {\n core.debug('Resolving latest version via GitHub API')\n versionInfo = await resolveLatestVersion(options.token)\n } else {\n versionInfo = {\n tag_name: options.version,\n userProvided: true\n }\n }\n\n // setup caching with the effective version and perform download\n return maybeDownload(versionInfo, options)\n }\n}\n", + "import path from 'node:path'\nimport * as core from '@actions/core'\nimport * as exec from '@actions/exec'\nimport { which } from '@actions/io'\nimport type { ElideRelease } from './releases'\nimport type { ElideSetupActionOptions } from './options'\nimport { obtainVersion } from './command'\n\n/**\n * Map the normalized arch token used by the action to the Debian arch name.\n */\nfunction debianArch(arch: 'amd64' | 'aarch64'): string {\n switch (arch) {\n case 'amd64':\n return 'amd64'\n case 'aarch64':\n return 'arm64'\n }\n}\n\n/**\n * Install Elide via the official apt repository.\n *\n * Steps:\n * 1. Import the Elide GPG signing key.\n * 2. Add the apt repository source.\n * 3. `apt-get update` and `apt-get install elide`.\n *\n * @param options Effective action options.\n * @return Release information for the installed binary.\n */\nexport async function installViaApt(\n options: ElideSetupActionOptions\n): Promise {\n const arch = debianArch(options.arch)\n\n // 1. Import GPG key\n core.info('Adding Elide apt repository GPG key')\n await exec.exec('bash', [\n '-c',\n 'set -o pipefail && curl -fsSL https://keys.elide.dev/gpg.key | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/elide.gpg'\n ])\n\n // 2. Add apt source\n core.info('Adding Elide apt repository')\n const channel = options.channel || 'nightly'\n const sourceLine = `deb [arch=${arch} signed-by=/usr/share/keyrings/elide.gpg] https://dl.elide.dev ${channel} main`\n await exec.exec('sudo', ['tee', '/etc/apt/sources.list.d/elide.list'], {\n input: Buffer.from(sourceLine)\n })\n\n // 3. Update and install\n core.info('Installing Elide via apt')\n await exec.exec('sudo', ['apt-get', 'update', '-qq'])\n\n const installArgs = ['apt-get', 'install', '-y', '-qq']\n if (\n options.version &&\n options.version !== 'latest' &&\n options.version !== 'local'\n ) {\n installArgs.push(`elide=${options.version}`)\n } else {\n installArgs.push('elide')\n }\n await exec.exec('sudo', installArgs)\n\n // 4. Locate the installed binary\n const elidePath = await which('elide', true)\n const version = await obtainVersion(elidePath)\n const elideBin = path.dirname(elidePath)\n const elideHome = elideBin\n\n core.info(`Elide ${version} installed via apt at ${elidePath}`)\n\n return {\n version: {\n tag_name: version,\n userProvided: options.version !== 'latest'\n },\n elidePath,\n elideHome,\n elideBin\n }\n}\n", + "import path from 'node:path'\nimport * as core from '@actions/core'\nimport * as exec from '@actions/exec'\nimport * as toolCache from '@actions/tool-cache'\nimport { which } from '@actions/io'\nimport type { ElideRelease } from './releases'\nimport type { ElideSetupActionOptions } from './options'\nimport { obtainVersion } from './command'\n\nconst bashScriptUrl = 'https://dl.elide.dev/cli/install.sh'\nconst powershellScriptUrl = 'https://dl.elide.dev/cli/install.ps1'\n\n/**\n * Install Elide via the official install scripts.\n *\n * - Linux/macOS: downloads `install.sh` and runs with `bash ... --gha`\n * - Windows: downloads `install.ps1` and runs with `powershell ... -Gha`\n *\n * The `--gha` / `-Gha` flags ensure the scripts route downloads through\n * GitHub Releases for faster performance in GitHub Actions.\n *\n * @param options Effective action options.\n * @return Release information for the installed binary.\n */\nexport async function installViaShell(\n options: ElideSetupActionOptions\n): Promise {\n if (options.os === 'windows') {\n return installViaPowerShell(options)\n }\n return installViaBash(options)\n}\n\nasync function installViaBash(\n options: ElideSetupActionOptions\n): Promise {\n core.info('Downloading Elide install script (bash)')\n const scriptPath = await toolCache.downloadTool(bashScriptUrl)\n\n const scriptArgs = [scriptPath, '--gha']\n if (\n options.version &&\n options.version !== 'latest' &&\n options.version !== 'local'\n ) {\n scriptArgs.push('--version', options.version)\n }\n\n core.info('Running Elide install script')\n await exec.exec('bash', scriptArgs)\n\n let elidePath: string\n try {\n elidePath = await which('elide', true)\n } catch {\n // The install script may place the binary in ~/.elide/bin which\n // might not be on PATH yet. Try the conventional location.\n const home = process.env.HOME || process.env.USERPROFILE || '~'\n const fallbackBin = `${home}/.elide/bin`\n core.addPath(fallbackBin)\n elidePath = await which('elide', true)\n }\n\n const version = await obtainVersion(elidePath)\n const elideBin = path.dirname(elidePath)\n const elideHome = elideBin\n\n core.info(`Elide ${version} installed via bash script at ${elidePath}`)\n\n return {\n version: {\n tag_name: version,\n userProvided: options.version !== 'latest'\n },\n elidePath,\n elideHome,\n elideBin\n }\n}\n\nasync function installViaPowerShell(\n options: ElideSetupActionOptions\n): Promise {\n core.info('Downloading Elide install script (PowerShell)')\n const scriptPath = await toolCache.downloadTool(powershellScriptUrl)\n\n const psArgs = ['-ExecutionPolicy', 'Bypass', '-File', scriptPath, '-Gha']\n if (\n options.version &&\n options.version !== 'latest' &&\n options.version !== 'local'\n ) {\n psArgs.push('-Version', options.version)\n }\n\n core.info('Running Elide install script (PowerShell)')\n await exec.exec('powershell', psArgs)\n\n const elidePath = await which('elide', true)\n const version = await obtainVersion(elidePath)\n const elideBin = path.dirname(elidePath)\n const elideHome = elideBin\n\n core.info(`Elide ${version} installed via PowerShell script at ${elidePath}`)\n\n return {\n version: {\n tag_name: version,\n userProvided: options.version !== 'latest'\n },\n elidePath,\n elideHome,\n elideBin\n }\n}\n", + "import path from 'node:path'\nimport * as core from '@actions/core'\nimport * as exec from '@actions/exec'\nimport * as toolCache from '@actions/tool-cache'\nimport { which } from '@actions/io'\nimport type { ElideRelease } from './releases'\nimport { buildCdnAssetUrl } from './releases'\nimport type { ElideSetupActionOptions } from './options'\nimport { obtainVersion } from './command'\n\nexport async function installViaMsi(\n options: ElideSetupActionOptions\n): Promise {\n const url = buildCdnAssetUrl(options, 'msi')\n core.info(`Downloading Elide MSI from ${url}`)\n const msiPath = await toolCache.downloadTool(url.toString())\n\n core.info('Installing Elide via MSI')\n const installDir = options.install_path || 'C:\\\\Elide'\n await exec.exec('msiexec', [\n '/i',\n msiPath,\n '/quiet',\n '/norestart',\n `INSTALLDIR=${installDir}`\n ])\n\n const elidePath = await which('elide', true)\n const version = await obtainVersion(elidePath)\n const elideBin = path.dirname(elidePath)\n const elideHome = elideBin\n\n core.info(`Elide ${version} installed via MSI at ${elidePath}`)\n\n return {\n version: { tag_name: version, userProvided: options.version !== 'latest' },\n elidePath,\n elideHome,\n elideBin\n }\n}\n", + "import path from 'node:path'\nimport * as core from '@actions/core'\nimport * as exec from '@actions/exec'\nimport * as toolCache from '@actions/tool-cache'\nimport { which } from '@actions/io'\nimport type { ElideRelease } from './releases'\nimport { buildCdnAssetUrl } from './releases'\nimport type { ElideSetupActionOptions } from './options'\nimport { obtainVersion } from './command'\n\nexport async function installViaPkg(\n options: ElideSetupActionOptions\n): Promise {\n const url = buildCdnAssetUrl(options, 'pkg')\n core.info(`Downloading Elide PKG from ${url}`)\n const pkgPath = await toolCache.downloadTool(url.toString())\n\n core.info('Installing Elide via PKG')\n await exec.exec('sudo', ['installer', '-pkg', pkgPath, '-target', '/'])\n\n const elidePath = await which('elide', true)\n const version = await obtainVersion(elidePath)\n const elideBin = path.dirname(elidePath)\n const elideHome = elideBin\n\n core.info(`Elide ${version} installed via PKG at ${elidePath}`)\n\n return {\n version: { tag_name: version, userProvided: options.version !== 'latest' },\n elidePath,\n elideHome,\n elideBin\n }\n}\n", + "import path from 'node:path'\nimport * as core from '@actions/core'\nimport * as exec from '@actions/exec'\nimport * as toolCache from '@actions/tool-cache'\nimport { which } from '@actions/io'\nimport type { ElideRelease } from './releases'\nimport { buildCdnAssetUrl } from './releases'\nimport type { ElideSetupActionOptions } from './options'\nimport { obtainVersion } from './command'\n\nexport async function installViaRpm(\n options: ElideSetupActionOptions\n): Promise {\n const url = buildCdnAssetUrl(options, 'rpm')\n core.info(`Downloading Elide RPM from ${url}`)\n const rpmPath = await toolCache.downloadTool(url.toString())\n\n // Try dnf first (modern RHEL/Fedora), fall back to rpm\n let useDnf = false\n try {\n await which('dnf', true)\n useDnf = true\n } catch {\n // dnf not available, will use rpm\n }\n\n if (useDnf) {\n core.info('Installing Elide via dnf')\n await exec.exec('sudo', ['dnf', 'install', '-y', rpmPath])\n } else {\n core.info('Installing Elide via rpm')\n await exec.exec('sudo', ['rpm', '-U', '--replacepkgs', rpmPath])\n }\n\n const elidePath = await which('elide', true)\n const version = await obtainVersion(elidePath)\n const elideBin = path.dirname(elidePath)\n const elideHome = elideBin\n\n core.info(`Elide ${version} installed via RPM at ${elidePath}`)\n\n return {\n version: { tag_name: version, userProvided: options.version !== 'latest' },\n elidePath,\n elideHome,\n elideBin\n }\n}\n", + "import * as core from '@actions/core'\nimport * as io from '@actions/io'\nimport { elideInfo, obtainVersion } from './command'\nimport {\n initTelemetry,\n reportError,\n flushTelemetry,\n withSpan,\n recordMetric,\n logEvent\n} from './telemetry'\n\n/**\n * Enumerates outputs and maps them to their well-known names.\n */\nexport enum ActionOutputName {\n PATH = 'path',\n VERSION = 'version',\n CACHED = 'cached',\n INSTALLER = 'installer'\n}\n\nimport buildOptions, {\n ElideSetupActionOptions,\n buildOptionsFromInputs,\n validateInstallerForPlatform\n} from './options'\n\nimport { downloadRelease, ElideRelease } from './releases'\nimport { installViaApt } from './install-apt'\nimport { installViaShell } from './install-shell'\nimport { installViaMsi } from './install-msi'\nimport { installViaPkg } from './install-pkg'\nimport { installViaRpm } from './install-rpm'\n\nexport function notSupported(options: ElideSetupActionOptions): null | Error {\n const spec = `${options.os}-${options.arch}`\n switch (spec) {\n case 'linux-amd64':\n case 'linux-aarch64':\n case 'darwin-aarch64':\n case 'darwin-amd64':\n case 'windows-amd64':\n return null\n default:\n return new Error(`Platform not supported: ${spec}`)\n }\n}\n\nexport async function postInstall(bin: string): Promise {\n try {\n await elideInfo(bin)\n } catch (err) {\n core.debug(\n `Post-install info failed; proceeding anyway. Error: ${err instanceof Error ? err.message : err}`\n )\n }\n}\n\nexport async function resolveExistingBinary(): Promise {\n try {\n return await io.which('elide', true)\n } catch {\n return null\n }\n}\n\nasync function writeSummary(\n version: string,\n options: ElideSetupActionOptions,\n installer: string,\n elidePath: string,\n cached: boolean,\n elapsedMs: number\n): Promise {\n try {\n const elapsed =\n elapsedMs < 1000\n ? `${Math.round(elapsedMs)}ms`\n : `${(elapsedMs / 1000).toFixed(1)}s`\n\n await core.summary\n .addHeading('Elide Installed', 2)\n .addTable([\n [\n { data: 'Version', header: true },\n { data: version, header: false }\n ],\n [\n { data: 'Channel', header: true },\n { data: options.channel, header: false }\n ],\n [\n { data: 'Installer', header: true },\n { data: installer, header: false }\n ],\n [\n { data: 'Platform', header: true },\n { data: `${options.os}-${options.arch}`, header: false }\n ],\n [\n { data: 'Path', header: true },\n { data: elidePath, header: false }\n ],\n [\n { data: 'Cached', header: true },\n { data: cached ? 'yes' : 'no', header: false }\n ],\n [\n { data: 'Time', header: true },\n { data: elapsed, header: false }\n ]\n ])\n .write()\n } catch {\n // Summary writes can fail in non-GHA environments; ignore\n }\n}\n\nasync function writeErrorSummary(error: Error): Promise {\n try {\n await core.summary\n .addHeading('Setup Elide Failed', 2)\n .addCodeBlock(error.message, 'text')\n .addLink(\n 'Report this issue',\n 'https://github.com/elide-dev/setup-elide/issues/new'\n )\n .write()\n } catch {\n // ignore\n }\n}\n\n/**\n * The main function for the action.\n * @returns {Promise} Resolves when the action is complete.\n */\nexport async function run(\n options?: Partial\n): Promise {\n const startTime = Date.now()\n\n try {\n // --- Resolve options ---\n const effectiveOptions: ElideSetupActionOptions = await core.group(\n '⚙️ Resolving options',\n async () => {\n const opts = options ? buildOptions(options) : buildOptionsFromInputs()\n core.info(\n `Options: version=${opts.version} channel=${opts.channel} installer=${opts.installer} os=${opts.os} arch=${opts.arch}`\n )\n return opts\n }\n )\n\n // Init telemetry early so errors during install are captured\n initTelemetry(effectiveOptions.telemetry, effectiveOptions)\n logEvent('setup-elide.start', {\n installer: effectiveOptions.installer,\n version: effectiveOptions.version,\n os: effectiveOptions.os,\n arch: effectiveOptions.arch\n })\n\n await withSpan('setup-elide', 'setup', async () => {\n // --- Validate platform ---\n const supportErr = notSupported(effectiveOptions)\n if (supportErr) {\n core.error(supportErr.message, { title: 'Platform Not Supported' })\n core.setFailed(supportErr.message)\n return\n }\n\n // --- Check for existing binary ---\n if (!effectiveOptions.force) {\n const existing: string | null = await resolveExistingBinary()\n if (existing) {\n core.debug(\n `Located existing Elide binary at: '${existing}'. Obtaining version...`\n )\n await postInstall(existing)\n const version = await obtainVersion(existing)\n\n if (\n version === effectiveOptions.version ||\n effectiveOptions.version === 'local'\n ) {\n core.notice(`Existing Elide ${version} preserved at ${existing}`, {\n title: 'Already Installed'\n })\n core.setOutput(ActionOutputName.PATH, existing)\n core.setOutput(ActionOutputName.VERSION, version)\n core.setOutput(ActionOutputName.CACHED, 'true')\n core.setOutput(ActionOutputName.INSTALLER, 'none')\n logEvent('setup-elide.exit', { status: 'cached' })\n return\n }\n }\n }\n\n // --- Validate installer for platform ---\n let installer = effectiveOptions.installer\n const validation = validateInstallerForPlatform(\n installer,\n effectiveOptions.os\n )\n if (!validation.valid) {\n core.warning(\n `Installer '${installer}' is not supported on ${effectiveOptions.os}: ${validation.reason}. Falling back to 'archive'.`,\n { title: 'Installer Fallback' }\n )\n installer = 'archive'\n }\n\n // --- Install ---\n const release: ElideRelease = await core.group(\n `📦 Installing Elide via ${installer}`,\n async () =>\n withSpan(`install.${installer}`, 'install', async () => {\n if (effectiveOptions.custom_url) {\n core.info(`Using custom URL: ${effectiveOptions.custom_url}`)\n return downloadRelease(effectiveOptions)\n }\n\n switch (installer) {\n case 'archive':\n return downloadRelease(effectiveOptions)\n case 'shell':\n return installViaShell(effectiveOptions)\n case 'msi':\n return installViaMsi(effectiveOptions)\n case 'pkg':\n return installViaPkg(effectiveOptions)\n case 'apt':\n return installViaApt(effectiveOptions)\n case 'rpm':\n return installViaRpm(effectiveOptions)\n }\n })\n )\n core.debug(`Release version: '${release.version.tag_name}'`)\n\n // --- Post-install ---\n const version: string = await core.group(\n '✅ Verifying installation',\n async () =>\n withSpan('verify', 'verify', async () => {\n if (effectiveOptions.export_path) {\n core.info(`Adding '${release.elideBin}' to PATH`)\n core.addPath(release.elideBin)\n }\n\n await postInstall(release.elidePath)\n const ver = await obtainVersion(release.elidePath)\n\n const isNightly = release.version.tag_name.startsWith('nightly-')\n if (!isNightly && ver !== release.version.tag_name) {\n core.warning(\n `Elide version mismatch: expected '${release.version.tag_name}', but got '${ver}'`,\n { title: 'Version Mismatch' }\n )\n }\n\n return ver\n })\n )\n\n // --- Set outputs ---\n const cached = release.cached ?? false\n core.setOutput(ActionOutputName.PATH, release.elidePath)\n core.setOutput(ActionOutputName.VERSION, version)\n core.setOutput(ActionOutputName.CACHED, cached ? 'true' : 'false')\n core.setOutput(ActionOutputName.INSTALLER, installer)\n\n if (cached) {\n core.notice(`Using cached Elide ${release.version.tag_name}`, {\n title: 'Cache Hit'\n })\n }\n\n const elapsed = Date.now() - startTime\n core.info(\n `Elide ${release.version.tag_name} installed in ${elapsed < 1000 ? `${elapsed}ms` : `${(elapsed / 1000).toFixed(1)}s`}`\n )\n\n // Record install duration as a metric\n recordMetric('setup_elide.duration_ms', elapsed, 'millisecond', {\n installer,\n os: effectiveOptions.os,\n arch: effectiveOptions.arch,\n cached: cached ? 'true' : 'false'\n })\n\n logEvent('setup-elide.exit', {\n status: 'success',\n installer,\n version,\n cached: cached ? 'true' : 'false'\n })\n\n await writeSummary(\n version,\n effectiveOptions,\n installer,\n release.elidePath,\n cached,\n elapsed\n )\n })\n } catch (error) {\n if (error instanceof Error) {\n reportError(error)\n core.error(error.message, { title: 'Installation Failed' })\n core.setFailed(error.message)\n await writeErrorSummary(error)\n }\n } finally {\n await flushTelemetry()\n }\n}\n", "/**\n * The entrypoint for the action.\n */\nimport { run } from './main'\n\nrun()\n" ], - "mappings": "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CAC1B,KAAK,KAAO,kBACZ,KAAK,MAAQ,SAGP,OAAO,YAAa,CAAC,EAAU,CACrC,OAAO,GAAY,EAAS,MAAiC,IAG9D,IAA+B,EAClC,CAEA,IAAM,GAA4B,OAAO,IAAI,+CAA+C,EAC5F,MAAM,WAAiC,EAAY,CACjD,WAAY,CAAC,EAAS,CACpB,MAAM,CAAO,EACb,KAAK,KAAO,2BACZ,KAAK,QAAU,GAAW,yCAC1B,KAAK,KAAO,0CAGN,OAAO,YAAa,CAAC,EAAU,CACrC,OAAO,GAAY,EAAS,MAA+B,OAGxD,GAA2B,EAAG,CACjC,MAAO,GAEX,CAEA,GAAO,QAAU,CACf,cACA,mBACA,eACA,uBACA,wBACA,oBACA,qCACA,uBACA,2BACA,wBACA,2BACA,uBACA,wBACA,qBACA,sBACA,eACA,qBACA,sCACA,oCACA,gCACA,qBACA,iBACA,8BACA,2BACF,uBCraA,IAAM,GAA6B,CAAC,EAG9B,GAAuB,CAC3B,SACA,kBACA,kBACA,gBACA,mCACA,+BACA,+BACA,8BACA,gCACA,yBACA,iCACA,gCACA,MACA,QACA,UACA,WACA,gBACA,gBACA,kBACA,aACA,sBACA,mBACA,mBACA,iBACA,mBACA,gBACA,0BACA,sCACA,eACA,SACA,+BACA,6BACA,+BACA,OACA,gBACA,WACA,MACA,OACA,SACA,YACA,UACA,YACA,OACA,OACA,WACA,oBACA,gBACA,WACA,sBACA,aACA,gBACA,OACA,WACA,eACA,SACA,qBACA,SACA,qBACA,sBACA,MACA,QACA,UACA,kBACA,UACA,cACA,uBACA,2BACA,oBACA,yBACA,wBACA,SACA,gBACA,yBACA,oCACA,aACA,YACA,4BACA,wBACA,KACA,sBACA,UACA,oBACA,UACA,4BACA,aACA,OACA,MACA,mBACA,yBACA,yBACA,kBACA,oCACA,eACA,mBACA,kBACF,EAEA,QAAS,EAAI,EAAG,EAAI,GAAqB,OAAQ,EAAE,EAAG,CACpD,IAAM,EAAM,GAAqB,GAC3B,EAAgB,EAAI,YAAY,EACtC,GAA2B,GAAO,GAA2B,GAC3D,EAIJ,OAAO,eAAe,GA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ACH,MAAO,iBACJ,aACA,eACA,kBACA,kBACA,uBACA,eACA,iBACA,mBACA,mBACA,iBACA,gBACA,eACA,iBACA,kBACH,MAAO,iBACJ,sBACA,eACA,eACA,YACA,aACA,iBACA,iBACA,gBACA,eACA,iBACA,sBACA,eACH,MAAO,iBACJ,kBACA,uBACA,aACA,iBACA,mBACA,iBACA,gBACA,eACA,iBACA,sBACA,SACH,MAAO,iBACJ,kBACA,mBACA,UACH,MAAO,mBACJ,kBACA,kBACA,iBACA,iBACA,gBACA,SACA,SACH,MAAO,kBACJ,kBACA,iBACA,YACH,MAAO,kBACJ,kBACA,iBACA,YACH,MAAO,kBACJ,kBACA,kBACA,iBACA,gBACA,kBACA,KACH,MAAO,kBACJ,cACH,MAAO,kBACJ,cACA,UACA,WACA,aACA,SACH,MAAO,aACJ,cACA,SACH,MAAO,aACJ,kBACA,UACA,gBACA,cACH,MAAO,gBACJ,kBACA,iBACA,gBACA,cACA,cACH,MAAO,kBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,qBACA,YACA,aACA,YACA,kBACA,aACA,iBACA,iBACA,gBACA,eACA,iBACA,sBACA,SACA,aACA,eACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,kBACA,iBACA,iBACA,gBACA,eACA,iBACA,sBACA,SACA,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,qBACA,kBACH,MAAO,qBACJ,cACA,eACA,sBACA,aACA,cACA,iBACA,UACA,gBACA,QACH,MAAO,UACJ,UACH,MAAO,cACJ,WACA,iBACA,cACA,aACA,WACH,MAAO,WACJ,0BACA,aACA,WACH,MAAO,aACJ,kBACA,cACH,MAAO,kBACJ,iBACA,YACA,eACA,gBACA,gBACA,WACA,kBACA,SACH,MAAO,gBACJ,cACA,oBACA,aA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B,CACzB,sEACF,EACA,yBAA0B,CAAC,yCAAyC,EACpE,gCAAiC,CAC/B,iFACF,EACA,wBAAyB,CAAC,+CAA+C,EACzE,yBAA0B,CACxB,yDACF,EACA,kBAAmB,CAAC,oCAAoC,EACxD,8BAA+B,CAC7B,qDACF,EACA,+BAAgC,CAC9B,+DACF,EACA,wBAAyB,CAAC,+CAA+C,EACzE,yBAA0B,CACxB,yDACF,EACA,mBAAoB,CAAC,8CAA8C,EACnE,uBAAwB,CACtB,uEACF,EACA,uBAAwB,CACtB,wDACF,EACA,wBAAyB,CACvB,uDACF,EACA,eAAgB,CACd,8DACF,EACA,yBAA0B,CACxB,+EACF,EACA,gCAAiC,CAC/B,kGACF,EACA,wBAAyB,CACvB,oFACF,EACA,0BAA2B,CACzB,+EACF,EACA,yBAA0B,CACxB,8DACF,EACA,gBAAiB,CAAC,kDAAkD,EACpE,kBAAmB,CAAC,6CAA6C,EACjE,iBAAkB,CAChB,4DACF,EACA,mBAAoB,CAClB,uDACF,EACA,8BAA+B,CAC7B,gDACF,EACA,+BAAgC,CAC9B,0DACF,EACA,kBAAmB,CAAC,oDAAoD,EACxE,sBAAuB,CACrB,yDACF,EACA,mDAAoD,CAClD,qEACF,EACA,gBAAiB,CACf,mEACF,EACA,iBAAkB,CAChB,4EACF,EACA,8BAA+B,CAC7B,sDACF,EACA,+BAAgC,CAC9B,gFACF,EACA,wBAAyB,CACvB,sDACF,EACA,kDAAmD,CACjD,kEACF,EACA,eAAgB,CACd,kEACF,EACA,uBAAwB,CACtB,+DACF,EACA,8BAA+B,CAC7B,qDACF,EACA,+BAAgC,CAC9B,+DACF,EACA,oBAAqB,CAAC,0CAA0C,EAChE,qBAAsB,CAAC,+CAA+C,EACtE,iCAAkC,CAChC,mDACF,EACA,2BAA4B,CAAC,qCAAqC,EAClE,8BAA+B,CAC7B,sDACF,EACA,4BAA6B,CAC3B,gEACF,EACA,YAAa,CAAC,2DAA2D,EACzE,qBAAsB,CACpB,4EACF,EACA,4BAA6B,CAC3B,+FACF,EACA,6BAA8B,CAC5B,0DACF,EACA,wBAAyB,CACvB,8EACF,EACA,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EACD,CACE,QAAS,CACP,WACA,yDACF,CACF,CACF,EACA,wDAAyD,CACvD,2DACF,EACA,0CAA2C,CACzC,iEACF,EACA,2CAA4C,CAC1C,uEACF,EACA,+BAAgC,CAC9B,kDACF,EACA,0BAA2B,CACzB,wDACF,EACA,kBAAmB,CACjB,8DACF,EACA,sCAAuC,CACrC,gFACF,EACA,iCAAkC,CAChC,sFACF,EACA,yBAA0B,CACxB,4FACF,EACA,2DAA4D,CAC1D,4BACF,EACA,sDAAuD,CACrD,kCACF,EACA,8CAA+C,CAC7C,wCACF,EACA,iCAAkC,CAAC,oBAAoB,EACvD,4BAA6B,CAAC,0BAA0B,EACxD,oBAAqB,CAAC,gCAAgC,EACtD,mCAAoC,CAClC,mEACF,EACA,qBAAsB,CACpB,yEACF,EACA,sBAAuB,CACrB,+EACF,EACA,0CAA2C,CACzC,yFACF,EACA,4BAA6B,CAC3B,+FACF,EACA,6BAA8B,CAC5B,qGACF,CACF,EACA,kBAAmB,CACjB,yBAA0B,CAAC,qCAAqC,EAChE,yBAA0B,CACxB,qDACF,EACA,sBAAuB,CAAC,kDAAkD,EAC1E,gBAAiB,CAAC,+CAA+C,EACjE,yBAA0B,CAAC,oCAAoC,EAC/D,yBAA0B,CACxB,oDACF,CACF,EACA,SAAU,CACR,cAAe,CAAC,oDAAoD,EACpE,eAAgB,CACd,0DACF,EACA,iBAAkB,CAChB,gEACF,EACA,kBAAmB,CACjB,sEACF,EACA,eAAgB,CACd,+DACF,EACA,gBAAiB,CACf,qEACF,EACA,UAAW,CAAC,6CAA6C,EACzD,WAAY,CAAC,mDAAmD,EAChE,WAAY,CAAC,6DAA6D,EAC1E,YAAa,CACX,mEACF,EACA,iBAAkB,CAAC,oDAAoD,EACvE,kBAAmB,CACjB,0DACF,EACA,WAAY,CAAC,4BAA4B,EACzC,YAAa,CAAC,kCAAkC,EAChD,gBAAiB,CAAC,mDAAmD,EACrE,iBAAkB,CAChB,yDACF,EACA,iBAAkB,CAChB,+DACF,EACA,kBAAmB,CACjB,qEACF,CACF,EACA,MAAO,CACL,cAAe,CAAC,qDAAqD,EACrE,OAAQ,CAAC,kCAAkC,EAC3C,4BAA6B,CAC3B,8EACF,EACA,aAAc,CAAC,wDAAwD,EACvE,oBAAqB,CACnB,yDACF,EACA,oBAAqB,CACnB,sEACF,EACA,oBAAqB,CACnB,0DACF,EACA,cAAe,CACb,8EACF,EACA,IAAK,CAAC,+CAA+C,EACrD,UAAW,CACT,mEACF,EACA,iBAAkB,CAAC,uDAAuD,EAC1E,KAAM,CAAC,iCAAiC,EACxC,sBAAuB,CACrB,4EACF,EACA,YAAa,CAAC,uDAAuD,EACrE,UAAW,CAAC,qDAAqD,EACjE,uBAAwB,CACtB,mEACF,EACA,mBAAoB,CAClB,wDACF,EACA,0BAA2B,CAAC,0CAA0C,EACtE,YAAa,CAAC,uDAAuD,EACrE,MAAO,CAAC,qDAAqD,EAC7D,yBAA0B,CACxB,sEACF,EACA,iBAAkB,CAChB,oEACF,EACA,aAAc,CACZ,2EACF,EACA,OAAQ,CAAC,iDAAiD,EAC1D,aAAc,CACZ,6DACF,EACA,aAAc,CACZ,mEACF,EACA,oBAAqB,CACnB,yDACF,CACF,EACA,UAAW,CAAE,IAAK,CAAC,iBAAiB,CAAE,EACtC,UAAW,CACT,uBAAwB,CACtB,4DACF,EACA,eAAgB,CACd,4DACF,EACA,sBAAuB,CACrB,mEACF,EACA,kCAAmC,CACjC,kEACF,EACA,iBAAkB,CAChB,4DACF,EACA,oCAAqC,CACnC,wGACF,EACA,6BAA8B,CAC5B,8EACF,EACA,uBAAwB,CACtB,4EACF,EACA,eAAgB,CACd,4EACF,EACA,sBAAuB,CACrB,mFACF,EACA,4BAA6B,CAC3B,kFACF,EACA,iBAAkB,CAChB,4EACF,EACA,wBAAyB,CACvB,8FACF,EACA,+BAAgC,CAC9B,wHACF,EACA,qBAAsB,CACpB,2DACF,EACA,aAAc,CAAC,2DAA2D,EAC1E,oBAAqB,CACnB,kEACF,EACA,gCAAiC,CAC/B,iEACF,EACA,eAAgB,CACd,2DACF,EACA,kCAAmC,CACjC,uGACF,EACA,2BAA4B,CAC1B,6EACF,CACF,EACA,MAAO,CACL,iBAAkB,CAChB,qDACA,CAAC,EACD,CAAE,QAAS,CA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AAQ,EAAS,CAAS,EAEvD,MAAO,GAET,GAAI,IAA2B,OAC7B,QAAW,KAAK,EAAmB,CACjC,IAAM,EAAI,MAAM,GAAO,EAAG,EAAS,CAAS,EAC5C,GAAI,EACF,OAAO,EAIb,MAAO,GCzDT,IAAI,GAAe,CAAC,EAAS,CAAC,IAAM,CAClC,GAAI,OAAO,EAAO,QAAU,WAC1B,EAAO,MAAQ,IAAM,GAGvB,GAAI,OAAO,EAAO,OAAS,WACzB,EAAO,KAAO,IAAM,GAGtB,GAAI,OAAO,EAAO,OAAS,WACzB,EAAO,KAAO,QAAQ,KAAK,KAAK,OAAO,EAEzC,GAAI,OAAO,EAAO,QAAU,WAC1B,EAAO,MAAQ,QAAQ,MAAM,KAAK,OAAO,EAE3C,OAAO,GAIL,GAAoB,CACtB,kCACA,2CACA,0CACA,yBACA,iCACA,iCACA,gCACA,YACA,sBACA,oBACA,6BACA,wBACA,cACA,wBACA,wBACA,0BACA,sBACA,yCACA,qCACA,8BACA,4BACA,+BACA,uCACA,iBACA,yBACA,SACA,kBACA,0BACA,0BACA,wCACA,0BACA,yBACA,iCACA,SACA,mBACA,kCACA,iCACA,2BACA,6BACA,yBACA,gCACA,4BACA,aACA,qBACA,qBACA,aACA,qBACA,6BACA,uCACA,oBACA,6BACA,6BACA,8BACA,oBACA,4BACA,aACA,sBACA,8BACA,oBACA,qBACA,qBACA,oBACA,qBACA,oBACA,oBACA,sBACA,yBACA,wBACA,uBACA,sBACA,sBACA,qBACA,6BACA,6BACA,4BACA,OACA,2BACA,mCACA,SACA,eACA,uBACA,uBACA,wCACA,uBACA,yBACA,4BACA,kCACA,oCACA,sBACA,8BACA,gBACA,wBACA,wBACA,uBACA,qBACA,sCACA,wCACA,oCACA,sCACA,SACA,kBACA,gBACA,iBACA,sBACA,gBACA,iBACA,gBACA,oBACA,gBACA,gBACA,kBACA,qBACA,eACA,oBACA,mBACA,kBACA,kBACA,iBACA,QACA,gBACA,gBACA,eACA,uBACA,iCACA,+BACA,sCACA,gDACA,iCACA,SACA,eACA,gBACA,iBACA,aACA,mBACA,qBACA,cACA,+BACA,wBACA,OACA,eACA,YACA,mBACA,oBACA,oBACA,mBACA,mBACA,YACA,oBACA,sBACA,eACA,uBACA,4BACA,8BACA,8BACA,uBACA,UACA,oBACA,kBACA,aACA,gCACA,yCACA,0CACA,wCACA,uCACA,OACA,UACA,iBACA,kBACA,kBACA,iBACA,mBACA,eACA,yBACA,uBACA,uBACA,sBACA,qBACA,iBACA,yBACA,yBACA,wBACA,uBACA,cACA,qBACA,sBACA,sBACA,qBACA,uBACA,mBACA,4BACA,6BACA,2BACA,2BACA,0BACA,6BACA,4BACA,4BACA,oCACA,oCACA,mCACA,SACA,eACA,wBACA,mCACA,kCACA,sBACA,kCACA,4BACA,wBACA,sBACA,wBACA,uBACA,sBACA,0BACA,sBACA,gCACA,wBACA,sCACA,gCACA,2BACA,0BACA,yBACA,wBACA,sBACA,gCACA,6BACA,gCACA,8BACA,sCACA,sCACA,qCACA,6BACA,sCACA,wCACA,OACA,mBACA,6BACA,2BACA,UACA,kBACA,kBACA,iBACA,sBACA,oBACA,mBACA,sBACA,aACA,sBACA,qBACA,qBACA,oBACA,wBACA,wBACA,qBACA,yBACA,wBACA,sBACA,gCACA,+BACA,sBACA,uCACA,oBACA,qBACA,6BACA,6BACA,4BACA,iCACA,wCACA,yCACA,wCACA,yCACA,wBACA,iCACA,gCACA,wCACA,iCACA,iCACA,mCACA,kCACA,iCACA,yCACA,uBACA,iCACA,oBACA,8BACA,4BACA,8BACA,wBACA,cACA,wBACA,sBACA,qBACA,mCACA,kCACA,2BACA,OACA,eACA,eACA,SACA,aACA,gCACA,kCACA,6BACA,+BACA,OACA,2BACA,eACA,eACA,cACA,+BACA,WACA,QACA,gBACA,oBACA,eACA,yBACA,2BACA,sBACA,uBACA,eACA,yBACA,2BACA,wBACF,EAGA,SAAS,EAAiB,CAAC,EAAW,EAAU,CAAC,EAAG,CAClD,GAAI,OAAO,IAAc,SACvB,MAAU,UAAU,kCAAkC,EAExD,GA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", - "debugId": "1720B86932B8DA3364756E2164756E21", + "mappings": "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,iCAC1B,KAAK,KAAO,kBACZ,KAAK,MAAQ,SAGP,OAAO,YAAa,CAAC,EAAU,CACrC,OAAO,GAAY,EAAS,MAAiC,IAG9D,IAA+B,EAClC,CAEA,IAAM,GAA4B,OAAO,IAAI,+CAA+C,EAC5F,MAAM,WAAiC,EAAY,CACjD,WAAY,CAAC,EAAS,CACpB,MAAM,CAAO,EACb,KAAK,KAAO,2BACZ,KAAK,QAAU,GAAW,yCAC1B,KAAK,KAAO,0CAGN,OAAO,YAAa,CAAC,EAAU,CACrC,OAAO,GAAY,EAAS,MAA+B,OAGxD,GAA2B,EAAG,CACjC,MAAO,GAEX,CAEA,GAAO,QAAU,CACf,cACA,mBACA,eACA,uBACA,wBACA,oBACA,qCACA,uBACA,2BACA,wBACA,2BACA,uBACA,wBACA,qBACA,sBACA,eACA,qBACA,sCACA,oCACA,gCACA,qBACA,iBACA,8BACA,2BACF,wBCraA,IAAM,GAA6B,CAAC,EAG9B,GAAuB,CAC3B,SACA,kBACA,kBACA,gBACA,mCACA,+BACA,+BACA,8BACA,gCACA,yBACA,iCACA,gCACA,MACA,QACA,UACA,WACA,gBACA,gBACA,kBACA,aACA,sBACA,mBACA,mBACA,iBACA,mBACA,gBACA,0BACA,sCACA,eACA,SACA,+BACA,6BACA,+BACA,OACA,gBACA,WACA,MACA,OACA,SACA,YACA,UACA,YACA,OACA,OACA,WACA,oBACA,gBACA,WACA,sBACA,aACA,gBACA,OACA,WACA,eACA,SACA,qBACA,SACA,qBACA,sBACA,MACA,QACA,UACA,kBACA,UACA,cACA,uBACA,2BACA,oBACA,yBACA,wBACA,SACA,gBACA,yBACA,oCACA,aACA,YACA,4BACA,wBACA,KACA,sBACA,UACA,oBACA,UACA,4BACA,aACA,OACA,MACA,mBACA,yBACA,yBACA,kBACA,oCACA,eACA,mBACA,kBACF,EAEA,QAAS,EAAI,EAAG,EAAI,GAAqB,OAAQ,EAAE,EAAG,CACpD,IAAM,EAAM,GAAqB,GAC3B,EAAgB,EAAI,YAAY,EACtC,GAA2B,GAAO,GAA2B,GAC3D,EAIJ,OAAO,eAAe,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ACA,gBACA,eACA,iBACA,kBACH,MAAO,iBACJ,aACA,eACA,kBACA,kBACA,uBACA,eACA,iBACA,mBACA,mBACA,iBACA,gBACA,eACA,iBACA,kBACH,MAAO,iBACJ,sBACA,eACA,eACA,YACA,aACA,iBACA,iBACA,gBACA,eACA,iBACA,sBACA,eACH,MAAO,iBACJ,kBACA,uBACA,aACA,iBACA,mBACA,iBACA,gBACA,eACA,iBACA,sBACA,SACH,MAAO,iBACJ,kBACA,mBACA,UACH,MAAO,mBACJ,kBACA,kBACA,iBACA,iBACA,gBACA,SACA,SACH,MAAO,kBACJ,kBACA,iBACA,YACH,MAAO,kBACJ,kBACA,iBACA,YACH,MAAO,kBACJ,kBACA,kBACA,iBACA,gBACA,kBACA,KACH,MAAO,kBACJ,cACH,MAAO,kBACJ,cACA,UACA,WACA,aACA,SACH,MAAO,aACJ,cACA,SACH,MAAO,aACJ,kBACA,UACA,gBACA,cACH,MAAO,gBACJ,kBACA,iBACA,gBACA,cACA,cACH,MAAO,kBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,qBACA,YACA,aACA,YACA,kBACA,aACA,iBACA,iBACA,gBACA,eACA,iBACA,sBACA,SACA,aACA,eACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,kBACA,iBACA,iBACA,gBACA,eACA,iBACA,sBACA,SACA,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,aACA,mBACA,WACH,MAAO,mBACJ,qBACA,kBACH,MAAO,qBACJ,cACA,eACA,sBACA,aACA,cACA,iBACA,UACA,gBACA,QACH,MAAO,UACJ,UACH,MAAO,cACJ,WACA,iBACA,cACA,aACA,WACH,MAAO,WACJ,0BACA,aACA,WACH,MAAO,aACJ,kBACA,cACH,MAAO,kBACJ,iBACA,YACA,eACA,gBACA,gBACA,WACA,kBACA,SACH,M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,uCAAsC,GAMtC,+CAA8C,GAM9C,wDAAuD,GAMvD,6BAA4B,GAM5B,kCAAiC,GAMjC,uCAAsC,GAMtC,uCAAsC,GAMtC,+BAA8B,GAM9B,uCAAsC,GAMtC,0BAAyB,GAMzB,iCAAgC,GAMhC,sCAAqC,GAMrC,iDAAgD,GAMhD,4DAA2D,GAM3D,gCAA+B,GAM/B,kCAAiC,GAMjC,2CAA0C,GAQ1C,wCAAuC,GAMvC,2CAA0C,GAM1C,sCAAqC,GAMrC,sCAAqC,GAMrC,sCAAqC,GAMrC,uBAAsB,GAQtB,wBAAuB,GAQvB,uBAAsB,GAMtB,iCAAgC,GAMhC,gCAA+B,GAM/B,mCAAkC,GAMlC,mCAAkC,GAMlC,sCAAqC,GAMrC,yBAAwB,GAQxB,uBAAsB,GAMtB,oCAAmC,GAMnC,sCAAqC,GAKrC,uBACO,EAAG,GAAQ,gBAAgB,CACtC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACJ,CAAC,EAQD,IAAM,GAA+B,YAC/B,GAA2B,QAC3B,GAA2B,QAC3B,GAA4B,SAC5B,GAAyB,MACzB,GAAgC,aAChC,G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A,yBAA0B,CAAC,yCAAyC,EACpE,gCAAiC,CAC/B,iFACF,EACA,wBAAyB,CAAC,+CAA+C,EACzE,yBAA0B,CACxB,yDACF,EACA,kBAAmB,CAAC,oCAAoC,EACxD,8BAA+B,CAC7B,qDACF,EACA,+BAAgC,CAC9B,+DACF,EACA,wBAAyB,CAAC,+CAA+C,EACzE,yBAA0B,CACxB,yDACF,EACA,mBAAoB,CAAC,8CAA8C,EACnE,uBAAwB,CACtB,uEACF,EACA,uBAAwB,CACtB,wDACF,EACA,wBAAyB,CACvB,uDACF,EACA,eAAgB,CACd,8DACF,EACA,yBAA0B,CACxB,+EACF,EACA,gCAAiC,CAC/B,kGACF,EACA,wBAAyB,CACvB,oFACF,EACA,0BAA2B,CACzB,+EACF,EACA,yBAA0B,CACxB,8DACF,EACA,gBAAiB,CAAC,kDAAkD,EACpE,kBAAmB,CAAC,6CAA6C,EACjE,iBAAkB,CAChB,4DACF,EACA,mBAAoB,CAClB,uDACF,EACA,8BAA+B,CAC7B,gDACF,EACA,+BAAgC,CAC9B,0DACF,EACA,kBAAmB,CAAC,oDAAoD,EACxE,sBAAuB,CACrB,yDACF,EACA,mDAAoD,CAClD,qEACF,EACA,gBAAiB,CACf,mEACF,EACA,iBAAkB,CAChB,4EACF,EACA,8BAA+B,CAC7B,sDACF,EACA,+BAAgC,CAC9B,gFACF,EACA,wBAAyB,CACvB,sDACF,EACA,kDAAmD,CACjD,kEACF,EACA,eAAgB,CACd,kEACF,EACA,uBAAwB,CACtB,+DACF,EACA,8BAA+B,CAC7B,qDACF,EACA,+BAAgC,CAC9B,+DACF,EACA,oBAAqB,CAAC,0CAA0C,EAChE,qBAAsB,CAAC,+CAA+C,EACtE,iCAAkC,CAChC,mDACF,EACA,2BAA4B,CAAC,qCAAqC,EAClE,8BAA+B,CAC7B,sDACF,EACA,4BAA6B,CAC3B,gEACF,EACA,YAAa,CAAC,2DAA2D,EACzE,qBAAsB,CACpB,4EACF,EACA,4BAA6B,CAC3B,+FACF,EACA,6BAA8B,CAC5B,0DACF,EACA,wBAAyB,CACvB,8EACF,EACA,qBAAsB,CACpB,iFACF,EACA,uBAAwB,CACtB,4EACF,EACA,uDAAwD,CACtD,8CACF,EACA,qDAAsD,CACpD,wDACF,EACA,wCAAyC,CACvC,qCACF,EACA,sCAAuC,CACrC,+CACF,EACA,sBAAuB,CACrB,2DACF,EACA,wCAAyC,CACvC,4DACF,EACA,6BAA8B,CAC5B,+CACF,EACA,mCAAoC,CAClC,sDACF,EACA,oCAAqC,CACnC,uDACF,EACA,gCAAiC,CAC/B,kDACF,EACA,qBAAsB,CAAC,iDAAiD,EACxE,gBAAiB,CAAC,4CAA4C,EAC9D,aAAc,CAAC,+CAA+C,EAC9D,eAAgB,CAAC,0CAA0C,EAC3D,4BAA6B,CAC3B,qEACF,EACA,mBAAoB,CAClB,gDACA,CAAC,EACD,CAAE,QAAS,CAAC,UAAW,uCAAuC,CAAE,CAClE,EACA,iBAAkB,CAAC,sDAAsD,EACzE,cAAe,CAAC,yDAAyD,EACzE,gBAAiB,CAAC,oDAAoD,EACtE,iBAAkB,CAChB,2DACF,EACA,0BAA2B,CAAC,6CAA6C,EACzE,2BAA4B,CAC1B,uDACF,EACA,YAAa,CAAC,2DAA2D,EACzE,8BAA+B,CAC7B,sDACF,EACA,eAAgB,CAAC,iDAAiD,EAClE,sBAAuB,CACrB,2EACF,EACA,oBAAqB,CACnB,wDACF,EACA,iBAAkB,CAChB,kEACF,EACA,qBAAsB,CAAC,6CAA6C,EACpE,8BAA+B,CAC7B,qFACF,EACA,uBAAwB,CACtB,sDACF,EACA,uBAAwB,CACtB,mEACF,EACA,yBAA0B,CACxB,qEACF,EACA,qCAAsC,CACpC,wEACF,EACA,wBAAyB,CAAC,wCAAwC,EAClE,uBAAwB,CACtB,sDACF,EACA,8BAA+B,CAC7B,gFACF,EACA,oCAAqC,CACnC,oDACF,EACA,qCAAsC,CACpC,8DACF,EACA,eAAgB,CAAC,iCAAiC,EAClD,iBAAkB,CAAC,mCAAmC,EACtD,4BAA6B,CAC3B,wDACF,EACA,8BAA+B,CAC7B,0DACF,EACA,gBAAiB,CAAC,2CAA2C,EAC7D,kBAAmB,CAAC,6CAA6C,EACjE,kBAAmB,CAAC,6CAA6C,EACjE,6BAA8B,CAAC,2CAA2C,EAC1E,8BAA+B,CAC7B,qDACF,EACA,8BAA+B,CAC7B,4DACF,EACA,gCAAiC,CAC/B,uDACF,EACA,yDAA0D,CACxD,kDACF,EACA,4BAA6B,CAAC,iCAAiC,EAC/D,6BAA8B,CAAC,2CAA2C,EAC1E,yBAA0B,CACxB,2DACF,EACA,iBAAkB,CAChB,gEACF,EACA,wBAAyB,CAAC,wCAAwC,EAClE,uBAAwB,CACtB,wDACF,EACA,cAAe,CAAC,wDAAwD,EACxE,wBAAyB,CACvB,oEACF,EACA,gDAAiD,CAC/C,uDACF,EACA,iDAAkD,CAChD,iEACF,EACA,4CAA6C,CAC3C,8DACF,EACA,6CAA8C,CAC5C,wEACF,EACA,gCAAiC,CAC/B,+EACF,EACA,kCAAmC,CACjC,0EACF,EACA,wBAAyB,CACvB,6EACF,EACA,+BAAgC,CAC9B,sEACF,EACA,8BAA+B,CAC7B,sDACF,EACA,4BAA6B,CAC3B,gEACF,EACA,yCAA0C,CACxC,oDACF,EACA,0CAA2C,CACzC,8DACF,EACA,6BAA8B,CAC5B,0DACF,EACA,uDAAwD,CACtD,8CACF,EACA,qDAAsD,CACpD,wDACF,EACA,wCAAyC,CACvC,qCACF,EACA,sCAAuC,CACrC,+CACF,EACA,6BAA8B,CAC5B,4DACF,EACA,+BAAgC,CAC9B,uDACF,EACA,wDAAyD,CACvD,kDACF,EACA,8BAA+B,CAC7B,sDACF,EACA,0BAA2B,CACzB,8EACF,EACA,yBAA0B,CACxB,6DACF,EACA,kBAAmB,CAAC,4CAA4C,EAChE,mBAAoB,CAClB,sDACF,CACF,EACA,SAAU,CACR,sCAAuC,CAAC,kCAAkC,EAC1E,uBAAwB,CAAC,2CAA2C,EACpE,yBAA0B,CACxB,wDACF,EACA,SAAU,CAAC,YAAY,EACvB,oBAAqB,CAAC,wCAAwC,EAC9D,UAAW,CAAC,wCAAwC,EACpD,0CAA2C,CACzC,qDACF,EACA,+BAAgC,CAAC,8BAA8B,EAC/D,sCAAuC,CAAC,oBAAoB,EAC5D,kCAAmC,CACjC,yCACF,EACA,iBAAkB,CAAC,aAAa,EAChC,+BAAgC,CAAC,qCAAqC,EACtE,wBAAyB,CAAC,qCAAqC,EAC/D,oBAAqB,CAAC,wBAAwB,EAC9C,0BAA2B,CAAC,uCAAuC,EACnE,gCAAiC,CAC/B,8CACF,EACA,eAAgB,CAAC,kCAAkC,EACnD,0CAA2C,CACzC,yCACF,EACA,oCAAqC,CAAC,mBAAmB,EACzD,uBAAwB,CAAC,+BAA+B,EACxD,uBAAwB,CAAC,qCAAqC,EAC9D,sBAAuB,CAAC,sCAAsC,EAC9D,qCAAsC,CAAC,yBAAyB,EAChE,oBAAqB,CAAC,uCAAuC,EAC7D,wBAAyB,CAAC,oBAAoB,EAC9C,4BAA6B,CAAC,yCAAyC,EACvE,iBAAkB,CAAC,2CAA2C,EAC9D,iBAAkB,CAAC,0CAA0C,EAC7D,oBAAqB,CAAC,wCAAwC,EAC9D,sBAAuB,CACrB,qDACF,EACA,6BAA8B,CAAC,kCAAkC,EACjE,+BAAgC,CAAC,qCAAqC,CACxE,EACA,KAAM,CACJ,sBAAuB,CACrB,yEACA,CAAC,EACD,CAAE,QAAS,CAAC,OAAQ,2CAA2C,CAAE,CACnE,EACA,0CAA2C,CACzC,wEACF,EACA,WAAY,CAAC,sCAAsC,EACnD,mBAAoB,CAAC,wCAAwC,EAC7D,8BAA+B,CAC7B,yDACF,EACA,oBAAqB,CAAC,wCAAwC,EAC9D,mBAAoB,CAAC,6CAA6C,EAClE,YAAa,CAAC,wCAAwC,EACtD,iBAAkB,CAAC,UAAU,EAC7B,UAAW,CAAC,sBAAsB,EAClC,gBAAiB,CAAC,0CAA0C,EAC5D,mBAAoB,CAAC,8BAA8B,EACnD,oBAAqB,CAAC,wCAAwC,EAC9D,8BAA+B,CAC7B,gDACF,EACA,qCAAsC,CACpC,wDACF,EACA,oBAAqB,CAAC,oCAAoC,EAC1D,uBAAwB,CAAC,sBAAsB,EAC/C,mBAAoB,CAAC,wCAAwC,EAC7D,oBAAqB,CAAC,mDAAmD,EACzE,2BAA4B,CAC1B,2DACF,EACA,0CAA2C,CACzC,wDACF,EACA,4CAA6C,CAC3C,gCACF,EACA,kBAAmB,CAAC,wBAAwB,EAC5C,sCAAuC,CAAC,yBAAyB,EACjE,UAAW,CAAC,gCAAgC,EAC5C,iBAAkB,CAAC,wCAAwC,EAC3D,kCAAmC,CAAC,gCAAgC,EACpE,sCAAuC,CAAC,iCAAiC,EACzE,6CAA8C,CAC5C,yCACF,EACA,sBAAuB,CAAC,0BAA0B,EAClD,yBAA0B,CACxB,kDACF,EACA,2BAA4B,CAC1B,4EACA,CAAC,EACD,CAAE,QAAS,CAAC,OAAQ,gDAAgD,CAAE,CACxE,EACA,+CAAgD,CAC9C,2EACF,EACA,WAAY,CAAC,uCAAuC,EACpD,8BAA+B,CAAC,4BAA4B,EAC5D,WAAY,CAAC,6CAA6C,EAC1D,oBAAqB,CAAC,oDAAoD,EAC1E,sBAAuB,CACrB,uDACF,EACA,0BAA2B,CAAC,wBAAwB,CACtD,EACA,QAAS,CACP,2BAA4B,CAAC,0CAA0C,EACvE,4BAA6B,CAC3B,gDACF,EACA,6CAA8C,CAC5C,iEACF,EACA,8CAA+C,CAC7C,8DACF,EACA,+BAAgC,CAC9B,iDACF,EACA,gCAAiC,CAC/B,8CACF,EACA,4BAA6B,CAAC,2CAA2C,EACzE,6BAA8B,CAC5B,iDACF,EACA,2BAA4B,CAC1B,iDACF,EACA,4BAA6B,CAC3B,uDACF,CACF,EACA,UAAW,CACT,eAAgB,CAAC,4BAA4B,EAC7C,eAAgB,CAAC,gDAAgD,EACjE,mBAAoB,CAAC,6CAA6C,EAClE,iBAAkB,CAAC,2BAA2B,EAC9C,eAAgB,CAAC,+CAA+C,CAClE,EACA,OAAQ,CACN,OAAQ,CAAC,uCAAuC,EAChD,YAAa,CAAC,yCAAyC,EACvD,IAAK,CAAC,qDAAqD,EAC3D,SAAU,CAAC,yDAAyD,EACpE,gBAAiB,CACf,iEACF,EACA,WAAY,CAAC,oDAAoD,EACjE,aAAc,CACZ,oEACF,EACA,iBAAkB,CAAC,sDAAsD,EACzE,aAAc,CACZ,gEACF,EACA,eAAgB,CACd,oEACF,EACA,qBAAsB,CACpB,sDACF,EACA,OAAQ,CAAC,uDAAuD,CAClE,EACA,aAAc,CACZ,cAAe,CACb,gFACF,EACA,cAAe,CACb,wEACF,EACA,sBAAuB,CACrB,kEACF,EACA,eAAgB,CACd,oFACF,EACA,qBAAsB,CACpB,wEACF,EACA,SAAU,CACR,gEACA,CAAC,EACD,CAAE,kBAAmB,CAAE,SAAU,cAAe,CAAE,CACpD,EACA,YAAa,CACX,gEACF,EACA,WAAY,CACV,uEACF,EACA,kBAAmB,CACjB,qEACF,EACA,gBAAiB,CAAC,uDAAuD,EACzE,SAAU,CAAC,2DAA2D,EACtE,mBAAoB,CAClB,8FACF,EACA,2BAA4B,CAC1B,6HACF,EACA,mBAAoB,CAClB,yEACF,EACA,iBAAkB,CAAC,sCAAsC,EACzD,kBAAmB,CAAC,gDAAgD,EACpE,oBAAqB,CACnB,0EACA,CAAC,EACD,CAAE,QAAS,CAAC,eAAgB,oBAAoB,CAAE,CACpD,EACA,oBAAqB,CACnB,0DACF,EACA,mBAAoB,CAAC,kDAAkD,EACvE,YAAa,CACX,iEACF,EACA,mBAAoB,CAClB,yDACF,EACA,YAAa,CAAC,iDAAiD,CACjE,EACA,aAAc,CACZ,oBAAqB,CACnB,yEACF,EACA,8BAA+B,CAC7B,uFACF,EACA,oBAAqB,CAAC,+CAA+C,EACrE,iCAAkC,CAChC,6DACF,EACA,oBAAqB,CACnB,oEACF,EACA,iCAAkC,CAChC,kFACF,EACA,oBAAqB,CACnB,wDACF,EACA,iBAAkB,CAChB,iEACF,EACA,8BAA+B,CAC7B,uDACF,EACA,+BAAgC,CAC9B,4DACF,EACA,wBAAyB,CAAC,8CAA8C,EACxE,yBAA0B,CACxB,uDACF,EACA,sCAAuC,CACrC,qEACF,EACA,gCAAiC,CAC/B,8EACF,EACA,0CAA2C,CACzC,4FACF,EACA,oCAAqC,CACnC,+EACF,EACA,0BAA2B,CACzB,0EACF,EACA,uCAAwC,CACtC,wFACF,EACA,oBAAqB,CACnB,mEACF,EACA,8BAA+B,CAC7B,iFACF,CACF,EACA,eAAgB,CACd,qBAAsB,CAAC,uBAAuB,EAC9C,eAAgB,CAAC,6BAA6B,CAChD,EACA,WAAY,CACV,2CAA4C,CAC1C,yEACF,EACA,2BAA4B,CAC1B,+EACF,EACA,gCAAiC,CAC/B,wDACF,EACA,sCAAuC,CACrC,gDACF,EACA,2BAA4B,CAAC,uBAAuB,EACpD,wBAAyB,CACvB,kDACF,EACA,yBAA0B,CACxB,4DACF,EACA,yCAA0C,CACxC,4CACF,EACA,iCAAkC,CAChC,2DACF,EACA,mCAAoC,CAClC,uCACF,EACA,2BAA4B,CAAC,0CAA0C,EACvE,uBAAwB,CACtB,mEACF,EACA,gBAAiB,CAAC,qDAAqD,EACvE,iBAAkB,CAChB,+DACF,EACA,iCAAkC,CAChC,+CACF,EACA,2BAA4B,CAC1B,gDACF,EACA,0BAA2B,CACzB,+CACF,EACA,qCAAsC,CACpC,2DACF,EACA,wBAAyB,CAAC,uCAAuC,EACjE,gBAAiB,CAAC,+CAA+C,EACjE,aAAc,CAAC,kDAAkD,EACjE,iCAAkC,CAChC,yCACF,EACA,iBAAkB,CAChB,yDACF,EACA,cAAe,CACb,4DACF,EACA,8BAA+B,CAC7B,4CACF,EACA,kDAAmD,CACjD,oDACF,EACA,yBAA0B,CAAC,sBAAsB,EACjD,mBAAoB,CAClB,6BACA,CAAC,EACD,CAAE,kBAAmB,CAAE,OAAQ,KAAM,CAAE,CACzC,EACA,qCAAsC,CACpC,sCACF,EACA,eAAgB,CAAC,oCAAoC,EACrD,gBAAiB,CAAC,8CAA8C,EAChE,8CAA+C,CAC7C,yDACF,EACA,gCAAiC,CAAC,8BAA8B,EAChE,8BAA+B,CAC7B,+DACF,EACA,sCAAuC,CACrC,0CACF,EACA,4BAA6B,CAC3B,gDACF,EACA,8CAA+C,CAC7C,4EACF,EACA,gCAAiC,CAC/B,kFACF,EACA,iCAAkC,CAChC,+CACF,EACA,6CAA8C,CAC5C,yDACF,EACA,6BAA8B,CAC5B,+DACF,EACA,0BAA2B,CAAC,8CAA8C,EAC1E,yBAA0B,CAAC,6CAA6C,EACxE,mBAAoB,CAClB,sEACF,EACA,2BAA4B,CAAC,yCAAyC,CACxE,EACA,QAAS,CACP,wBAAyB,CACvB,iDACF,EACA,wBAAyB,CACvB,iDACF,EACA,oCAAqC,CACnC,mDACF,EACA,oCAAqC,CACnC,mDACF,EACA,8BAA+B,CAAC,iCAAiC,EACjE,sBAAuB,CAAC,kDAAkD,EAC1E,8BAA+B,CAAC,iCAAiC,EACjE,6BAA8B,CAC5B,4CACF,EACA,iBAAkB,CAAC,uCAAuC,CAC5D,EACA,YAAa,CAAE,OAAQ,CAAC,0BAA0B,CAAE,EACpD,WAAY,CACV,2BAA4B,CAC1B,+EACF,EACA,wBAAyB,CACvB,kDACF,EACA,yBAA0B,CACxB,4DACF,EACA,gBAAiB,CAAC,qDAAqD,EACvE,iBAAkB,CAChB,+DACF,EACA,SAAU,CAAC,4DAA4D,EACvE,gBAAiB,CAAC,+CAA+C,EACjE,aAAc,CAAC,kDAAkD,EACjE,iBAAkB,CAChB,yDACF,EACA,cAAe,CACb,4DACF,EACA,wBAAyB,CACvB,iDACF,EACA,iBAAkB,CAAC,mCAAmC,EACtD,kBAAmB,CAAC,6CAA6C,EACjE,eAAgB,CAAC,oCAAoC,EACrD,gBAAiB,CAAC,8CAA8C,EAChE,8BAA+B,CAC7B,+DACF,EACA,gCAAiC,CAC/B,kFACF,EACA,uBAAwB,CACtB,uDACF,EACA,gCAAiC,CAC/B,qEACF,EACA,6BAA8B,CAC5B,+DACF,EACA,YAAa,CACX,8DACF,EACA,6BAA8B,CAC5B,yDACF,CACF,EACA,gBAAiB,CACf,yBAA0B,CACxB,uDACF,EACA,UAAW,CACT,+DACF,EACA,WAAY,CAAC,iDAAiD,CAChE,EACA,OAAQ,CAAE,IAAK,CAAC,aAAa,CAAE,EAC/B,0BAA2B,CACzB,IAAK,CACH,8EACF,EACA,QAAS,CACP,wEACF,EACA,WAAY,CACV,2EACF,EACA,IAAK,CACH,8EACF,EACA,KAAM,CAAC,mEAAmE,EAC1E,OAAQ,CACN,iFACF,CACF,EACA,4BAA6B,CAC3B,IAAK,CACH,2EACF,EACA,QAAS,CACP,0EACF,EACA,WAAY,CACV,6EACF,EACA,OAAQ,CACN,8EACF,EACA,cAAe,CACb,2EACF,EACA,eAAgB,CACd,qEACF,CACF,EACA,gBAAiB,CACf,OAAQ,CAAC,sCAAsC,EAC/C,OAAQ,CAAC,oDAAoD,EAC7D,IAAK,CAAC,iDAAiD,EACvD,KAAM,CAAC,qCAAqC,EAC5C,OAAQ,CAAC,mDAAmD,CAC9D,EACA,MAAO,CACL,eAAgB,CAAC,2BAA2B,EAC5C,OAAQ,CAAC,aAAa,EACtB,cAAe,CAAC,gCAAgC,EAChD,OAAQ,CAAC,yBAAyB,EAClC,cAAe,CAAC,+CAA+C,EAC/D,KAAM,CAAC,6BAA6B,EACpC,IAAK,CAAC,sBAAsB,EAC5B,WAAY,CAAC,4CAA4C,EACzD,YAAa,CAAC,4BAA4B,EAC1C,KAAM,CAAC,YAAY,EACnB,aAAc,CAAC,+BAA+B,EAC9C,YAAa,CAAC,8BAA8B,EAC5C,YAAa,CAAC,6BAA6B,EAC3C,UAAW,CAAC,4BAA4B,EACxC,WAAY,CAAC,mBAAmB,EAChC,YAAa,CAAC,oBAAoB,EAClC,KAAM,CAAC,2BAA2B,EAClC,OAAQ,CAAC,8BAA8B,EACvC,OAAQ,CAAC,wBAAwB,EACjC,cAAe,CAAC,8CAA8C,CAChE,EACA,IAAK,CACH,WAAY,CAAC,sCAAsC,EACnD,aAAc,CAAC,wCAAwC,EACvD,UAAW,CAAC,qCAAqC,EACjD,UAAW,CAAC,qCAAqC,EACjD,WAAY,CAAC,sCAAsC,EACnD,UAAW,CAAC,6CAA6C,EACzD,QAAS,CAAC,gDAAgD,EAC1D,UAAW,CAAC,oDAAoD,EAChE,OAAQ,CAAC,yCAAyC,EAClD,OAAQ,CAAC,8CAA8C,EACvD,QAAS,CAAC,gDAAgD,EAC1D,iBAAkB,CAAC,mDAAmD,EACtE,UAAW,CAAC,4CAA4C,CAC1D,EACA,UAAW,CACT,gBAAiB,CAAC,0BAA0B,EAC5C,YAAa,CAAC,iCAAiC,CACjD,EACA,cAAe,CACb,iCAAkC,CAChC,kDACF,EACA,kCAAmC,CACjC,+EACF,EACA,8BAA+B,CAC7B,4EACF,EACA,yBAA0B,CACxB,iEACF,EACA,gCAAiC,CAC/B,iDACF,EACA,iCAAkC,CAChC,8EACF,CACF,EACA,aAAc,CACZ,oCAAqC,CAAC,8BAA8B,EACpE,sBAAuB,CAAC,oCAAoC,EAC5D,uBAAwB,CAAC,8CAA8C,EACvE,kCAAmC,CACjC,+BACA,CAAC,EACD,CAAE,QAAS,CAAC,eAAgB,qCAAqC,CAAE,CACrE,EACA,uCAAwC,CAAC,iCAAiC,EAC1E,yBAA0B,CAAC,uCAAuC,EAClE,0BAA2B,CACzB,iDACF,EACA,qCAAsC,CACpC,kCACA,CAAC,EACD,CAAE,QAAS,CAAC,eAAgB,wCAAwC,CAAE,CACxE,EACA,oCAAqC,CAAC,8BAA8B,EACpE,sBAAuB,CAAC,oCAAoC,EAC5D,uBAAwB,CAAC,8CAA8C,EACvE,kCAAmC,CACjC,+BACA,CAAC,EACD,CAAE,QAAS,CAAC,eAAgB,qCAAqC,CAAE,CACrE,CACF,EACA,OAAQ,CACN,aAAc,CACZ,4DACF,EACA,uBAAwB,CACtB,0EACF,EACA,UAAW,CAAC,yDAAyD,EACrE,YAAa,CACX,6DACF,EACA,uBAAwB,CAAC,gDAAgD,EACzE,8BAA+B,CAC7B,sEACF,EACA,OAAQ,CAAC,mCAAmC,EAC5C,cAAe,CACb,2DACF,EACA,YAAa,CAAC,mCAAmC,EACjD,gBAAiB,CAAC,uCAAuC,EACzD,cAAe,CACb,2DACF,EACA,YAAa,CAAC,4CAA4C,EAC1D,gBAAiB,CACf,4DACF,EACA,IAAK,CAAC,iDAAiD,EACvD,WAAY,CAAC,wDAAwD,EACrE,SAAU,CAAC,oDAAoD,EAC/D,SAAU,CAAC,yCAAyC,EACpD,aAAc,CAAC,yDAAyD,EACxE,UAAW,CAAC,wDAAwD,EACpE,KAAM,CAAC,aAAa,EACpB,cAAe,CAAC,qCAAqC,EACrD,aAAc,CAAC,0DAA0D,EACzE,oBAAqB,CAAC,2CAA2C,EACjE,0BAA2B,CACzB,yEACF,EACA,yBAA0B,CACxB,uEACF,EACA,WAAY,CAAC,wDAAwD,EACrE,kBAAmB,CAAC,yCAAyC,EAC7D,sBAAuB,CACrB,0DACF,EACA,yBAA0B,CAAC,kBAAkB,EAC7C,WAAY,CAAC,wBAAwB,EACrC,YAAa,CAAC,kCAAkC,EAChD,uBAAwB,CACtB,gEACF,EACA,kBAAmB,CAAC,kCAAkC,EACtD,kBAAmB,CACjB,wDACF,EACA,eAAgB,CAAC,sCAAsC,EACvD,cAAe,CACb,4DACF,EACA,KAAM,CAAC,sDAAsD,EAC7D,gBAAiB,CACf,2DACF,EACA,gBAAiB,CACf,8DACF,EACA,0BAA2B,CACzB,uFACF,EACA,YAAa,CACX,kEACF,EACA,eAAgB,CACd,8DACF,EACA,qBAAsB,CACpB,uEACF,EACA,UAAW,CAAC,wDAAwD,EACpE,OAAQ,CAAC,yDAAyD,EAClE,OAAQ,CAAC,mDAAmD,EAC5D,cAAe,CAAC,0DAA0D,EAC1E,YAAa,CAAC,2CAA2C,EACzD,gBAAiB,CACf,2DACF,CACF,EACA,SAAU,CACR,IAAK,CAAC,yBAAyB,EAC/B,mBAAoB,CAAC,eAAe,EACpC,WAAY,CAAC,mCAAmC,CAClD,EACA,SAAU,CACR,OAAQ,CAAC,gBAAgB,EACzB,UAAW,CACT,qBACA,CAAE,QAAS,CAAE,eAAgB,2BAA4B,CAAE,CAC7D,CACF,EACA,KAAM,CACJ,IAAK,CAAC,WAAW,EACjB,eAAgB,CAAC,eAAe,EAChC,WAAY,CAAC,cAAc,EAC3B,OAAQ,CAAC,UAAU,EACnB,KAAM,CAAC,OAAO,CAChB,EACA,WAAY,CACV,kCAAmC,CACjC,gDACF,EACA,oBAAqB,CACnB,sDACF,EACA,sBAAuB,CACrB,mDACF,EACA,+BAAgC,CAC9B,6CACF,EACA,8BAA+B,CAAC,qCAAqC,EACrE,gBAAiB,CAAC,2CAA2C,EAC7D,yBAA0B,CAAC,sBAAsB,EACjD,WAAY,CAAC,4BAA4B,EACzC,8BAA+B,CAC7B,kDACF,EACA,gBAAiB,CAAC,wDAAwD,EAC1E,iBAAkB,CAChB,mDACA,CAAC,EACD,CAAE,QAAS,CAAC,aAAc,+BAA+B,CAAE,CAC7D,EACA,0BAA2B,CAAC,uBAAuB,EACnD,YAAa,CAAC,6BAA6B,EAC3C,+BAAgC,CAC9B,+DACF,EACA,iBAAkB,CAChB,qEACF,CACF,EACA,KAAM,CACJ,+BAAgC,CAC9B,gDACF,EACA,kCAAmC,CACjC,gDACF,CACF,EACA,KAAM,CACJ,uBAAwB,CACtB,sDACA,CAAC,EACD,CACE,WAAY,+IACd,CACF,EACA,oBAAqB,CACnB,gEACF,EACA,oBAAqB,CACnB,+DACF,EACA,UAAW,CAAC,mCAAmC,EAC/C,iBAAkB,CAAC,gDAAgD,EACnE,iBAAkB,CAAC,mCAAmC,EACtD,uBAAwB,CAAC,oCAAoC,EAC7D,6BAA8B,CAAC,2CAA2C,EAC1E,mCAAoC,CAClC,kDACF,EACA,4BAA6B,CAC3B,oDACF,EACA,iBAAkB,CAAC,8BAA8B,EACjD,gBAAiB,CAAC,8BAA8B,EAChD,cAAe,CAAC,wBAAwB,EACxC,wDAAyD,CACvD,kDACF,EACA,6CAA8C,CAC5C,gDACF,EACA,6DAA8D,CAC5D,0DACF,EACA,8DAA+D,CAC7D,qCACF,EACA,yDAA0D,CACxD,qCACF,EACA,qDAAsD,CACpD,6DACF,EACA,kDAAmD,CACjD,0DACF,EACA,mDAAoD,CAClD,mCACF,EACA,8CAA+C,CAC7C,mCACF,EACA,OAAQ,CAAC,oBAAoB,EAC7B,uBAAwB,CAAC,8CAA8C,EACvE,uBAAwB,CACtB,kDACF,EACA,kCAAmC,CACjC,yDACF,EACA,gBAAiB,CAAC,gDAAgD,EAClE,cAAe,CAAC,oCAAoC,EACpD,uDAAwD,CACtD,6EACF,EACA,sDAAuD,CACrD,0EACF,EACA,IAAK,CAAC,iBAAiB,EACvB,6BAA8B,CAC5B,6CACF,EACA,yCAA0C,CACxC,0DACF,EACA,kCAAmC,CAAC,kCAAkC,EACtE,qBAAsB,CAAC,wCAAwC,EAC/D,WAAY,CAAC,8CAA8C,EAC3D,qBAAsB,CAAC,+CAA+C,EACtE,qBAAsB,CACpB,4DACF,EACA,WAAY,CAAC,iCAAiC,EAC9C,uBAAwB,CAAC,wCAAwC,EACjE,mBAAoB,CAClB,0DACF,EACA,KAAM,CAAC,oBAAoB,EAC3B,qBAAsB,CAAC,+BAA+B,EACtD,2BAA4B,CAC1B,qEACF,EACA,4BAA6B,CAAC,2CAA2C,EACzE,iBAAkB,CAAC,+CAA+C,EAClE,qBAAsB,CACpB,iEACF,EACA,iBAAkB,CAAC,wBAAwB,EAC3C,sBAAuB,CAAC,oCAAoC,EAC5D,yBAA0B,CAAC,gBAAgB,EAC3C,YAAa,CAAC,4BAA4B,EAC1C,oBAAqB,CAAC,mDAAmD,EACzE,eAAgB,CAAC,6BAA6B,EAC9C,YAAa,CAAC,yBAAyB,EACvC,oCAAqC,CAAC,4BAA4B,EAClE,iBAAkB,CAAC,oDAAoD,EACvE,iBAAkB,CAAC,oDAAoD,EACvE,aAAc,CAAC,oCAAoC,EACnD,uCAAwC,CACtC,uDACF,EACA,yBAA0B,CAAC,uCAAuC,EAClE,yBAA0B,CACxB,8DACF,EACA,gCAAiC,CAC/B,8EACF,EACA,qBAAsB,CAAC,gDAAgD,EACvE,cAAe,CAAC,wCAAwC,EACxD,uBAAwB,CAAC,6BAA6B,EACtD,kBAAmB,CAAC,gCAAgC,EACpD,yBAA0B,CACxB,oCACA,CAAC,EACD,CACE,WAAY,iJACd,CACF,EACA,sBAAuB,CAAC,4CAA4C,EACpE,aAAc,CAAC,uBAAuB,EACtC,YAAa,CAAC,wCAAwC,EACtD,yBAA0B,CACxB,oEACF,EACA,aAAc,CAAC,uCAAuC,EACtD,wBAAyB,CAAC,2CAA2C,EACrE,0BAA2B,CACzB,qDACF,EACA,2CAA4C,CAC1C,8CACF,EACA,0BAA2B,CACzB,yDACA,CAAC,EACD,CACE,WAAY,qJACd,CACF,EACA,sBAAuB,CACrB,kEACF,EACA,6BAA8B,CAC5B,iDACF,EACA,sBAAuB,CACrB,yDACF,EACA,sBAAuB,CACrB,wDACF,EACA,kBAAmB,CACjB,mEACF,EACA,kBAAmB,CACjB,kEACF,EACA,6BAA8B,CAC5B,6CACF,EACA,yCAA0C,CACxC,0DACF,EACA,qBAAsB,CAAC,wCAAwC,EAC/D,wCAAyC,CACvC,2CACF,EACA,YAAa,CAAC,sCAAsC,EACpD,OAAQ,CAAC,mBAAmB,EAC5B,gBAAiB,CAAC,6CAA6C,EAC/D,qCAAsC,CACpC,oCACF,EACA,gBAAiB,CAAC,kDAAkD,EACpE,kBAAmB,CAAC,yCAAyC,EAC7D,cAAe,CAAC,mCAAmC,EACnD,0BAA2B,CAAC,0CAA0C,CACxE,EACA,SAAU,CACR,kCAAmC,CACjC,qDACF,EACA,oBAAqB,CACnB,2DACF,EACA,qBAAsB,CACpB,iEACF,EACA,yCAA0C,CACxC,mFACF,EACA,2BAA4B,CAC1B,yFACF,EACA,4BAA6B,CAC3B,+FACF,EACA,6CAA8C,CAC5C,kEACA,CAAC,EACD,CAAE,QAAS,CAAC,WAAY,2CAA2C,CAAE,CACvE,EACA,4DAA6D,CAC3D,4DACA,CAAC,EACD,CACE,QAAS,CACP,WACA,yDACF,CACF,CACF,EACA,wDAAyD,CACvD,2DACF,EACA,0CAA2C,CACzC,iEACF,EACA,2CAA4C,CAC1C,uEACF,EACA,+BAAgC,CAC9B,kDACF,EACA,0BAA2B,CACzB,wDACF,EACA,kBAAmB,CACjB,8DACF,EACA,sCAAuC,CACrC,gFACF,EACA,iCAAkC,CAChC,sFACF,EACA,yBAA0B,CACxB,4FACF,EACA,2DAA4D,CAC1D,4BACF,EACA,sDAAuD,CACrD,kCACF,EACA,8CAA+C,CAC7C,wCACF,EACA,iCAAkC,CAAC,oBAAoB,EACvD,4BAA6B,CAAC,0BAA0B,EACxD,oBAAqB,CAAC,gCAAgC,EACtD,mCAAoC,CAClC,mEACF,EACA,qBAAsB,CACpB,yEACF,EACA,sBAAuB,CACrB,+EACF,EACA,0CAA2C,CACzC,yFACF,EACA,4BAA6B,CAC3B,+FACF,EACA,6BAA8B,CAC5B,qGACF,CACF,EACA,kBAAmB,CACjB,yBAA0B,CAAC,qCAAqC,EAChE,yBAA0B,CACxB,qDACF,EACA,sBAAuB,CAAC,kDAAkD,EAC1E,gBAAiB,CAAC,+CAA+C,EACjE,yBAA0B,CAAC,oCAAoC,EAC/D,yBAA0B,CACxB,oDACF,CACF,EACA,SAAU,CACR,cAAe,CAAC,oDAAoD,EACpE,eAAgB,CACd,0DACF,EACA,iBAAkB,CAChB,gEACF,EACA,kBAAmB,CACjB,sEACF,EACA,eAAgB,CACd,+DACF,EACA,gBAAiB,CACf,qEACF,EACA,UAAW,CAAC,6CAA6C,EACzD,WAAY,CAAC,mDAAmD,EAChE,WAAY,CAAC,6DAA6D,EAC1E,YAAa,CACX,mEACF,EACA,iBAAkB,CAAC,oDAAoD,EACvE,kBAAmB,CACjB,0DACF,EACA,WAAY,CAAC,4BAA4B,EACzC,YAAa,CAAC,kCAAkC,EAChD,gBAAiB,CAAC,mDAAmD,EACrE,iBAAkB,CAChB,yDACF,EACA,iBAAkB,CAChB,+DACF,EACA,kBAAmB,CACjB,qEACF,CACF,EACA,MAAO,CACL,cAAe,CAAC,qDAAqD,EACrE,OAAQ,CAAC,kCAAkC,EAC3C,4BAA6B,CAC3B,8EACF,EACA,aAAc,CAAC,wDAAwD,EACvE,oBAAqB,CACnB,yDACF,EACA,oBAAqB,CACnB,sEACF,EACA,oBAAqB,CACnB,0DACF,EACA,cAAe,CACb,8EACF,EACA,IAAK,CAAC,+CAA+C,EACrD,UAAW,CACT,mEACF,EACA,iBAAkB,CAAC,uDAAuD,EAC1E,KAAM,CAAC,iCAAiC,EACxC,sBAAuB,CACrB,4EACF,EACA,YAAa,CAAC,uDAAuD,EACrE,UAAW,CAAC,qDAAqD,EACjE,uBAAwB,CACtB,mEACF,EACA,mBAAoB,CAClB,wDACF,EACA,0BAA2B,CAAC,0CAA0C,EACtE,YAAa,CAAC,uDAAuD,EACrE,MAAO,CAAC,qDAAqD,EAC7D,yBAA0B,CACxB,sEACF,EACA,iBAAkB,CAChB,oEACF,EACA,aAAc,CACZ,2EACF,EACA,OAAQ,CAAC,iDAAiD,EAC1D,aAAc,CACZ,6DACF,EACA,aAAc,CACZ,mEACF,EACA,oBAAqB,CACnB,yDACF,CACF,EACA,UAAW,CAAE,IAAK,CAAC,iBAAiB,CAAE,EACtC,UAAW,CACT,uBAAwB,CACtB,4DACF,EACA,eAAgB,CACd,4DACF,EACA,sBAAuB,CACrB,mEACF,EACA,kCAAmC,CACjC,kEACF,EACA,iBAAkB,CAChB,4DACF,EACA,oCAAqC,CACnC,wGACF,EACA,6BAA8B,CAC5B,8EACF,EACA,uBAAwB,CACtB,4EACF,EACA,eAAgB,CACd,4EACF,EACA,sBAAuB,CACrB,mFACF,EACA,4BAA6B,CAC3B,kFACF,EACA,iBAAkB,CAChB,4EACF,EACA,wBAAyB,CACvB,8FACF,EACA,+BAAgC,CAC9B,wHACF,EACA,qBAAsB,CACpB,2DACF,EACA,aAAc,CAAC,2DAA2D,EAC1E,oBAAqB,CACnB,kEACF,EACA,gCAAiC,CAC/B,iEACF,EACA,eAAgB,CACd,2DACF,EACA,kCAAmC,CACjC,uGACF,EACA,2BAA4B,CAC1B,6EACF,CACF,EACA,MAAO,CACL,iBAAkB,CAChB,qDACA,CAAC,EACD,CAAE,QAAS,CAAC,QAAS,sCAAsC,CA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vD,MAAO,GAET,GAAI,IAA2B,OAC7B,QAAW,KAAK,EAAmB,CACjC,IAAM,EAAI,MAAM,GAAO,EAAG,EAAS,CAAS,EAC5C,GAAI,EACF,OAAO,EAIb,MAAO,GCzDT,IAAI,IAAe,CAAC,EAAS,CAAC,IAAM,CAClC,GAAI,OAAO,EAAO,QAAU,WAC1B,EAAO,MAAQ,IAAM,GAGvB,GAAI,OAAO,EAAO,OAAS,WACzB,EAAO,KAAO,IAAM,GAGtB,GAAI,OAAO,EAAO,OAAS,WACzB,EAAO,KAAO,QAAQ,KAAK,KAAK,OAAO,EAEzC,GAAI,OAAO,EAAO,QAAU,WAC1B,EAAO,MAAQ,QAAQ,MAAM,KAAK,OAAO,EAE3C,OAAO,GAIL,IAAoB,CACtB,kCACA,2CACA,0CACA,yBACA,iCACA,iCACA,gCACA,YACA,sBACA,oBACA,6BACA,wBACA,cACA,wBACA,wBACA,0BACA,sBACA,yCACA,qCACA,8BACA,4BACA,+BACA,uCACA,iBACA,yBACA,SACA,kBACA,0BACA,0BACA,wCACA,0BACA,yBACA,iCACA,SACA,mBACA,kCACA,iCACA,2BACA,6BACA,yBACA,gCACA,4BACA,aACA,qBACA,qBACA,aACA,qBACA,6BACA,uCACA,oBACA,6BACA,6BACA,8BACA,oBACA,4BACA,aACA,sBACA,8BACA,oBACA,qBACA,qBACA,oBACA,qBACA,oBACA,oBACA,sBACA,yBACA,wBACA,uBACA,sBACA,sBACA,qBACA,6BACA,6BACA,4BACA,OACA,2BACA,mCACA,SACA,eACA,uBACA,uBACA,wCACA,uBACA,yBACA,4BACA,kCACA,oCACA,sBACA,8BACA,gBACA,wBACA,wBACA,uBACA,qBACA,sCACA,wCACA,oCACA,sCACA,SACA,kBACA,gBACA,iBACA,sBACA,gBACA,iBACA,gBACA,oBACA,gBACA,gBACA,kBACA,qBACA,eACA,oBACA,mBACA,kBACA,kBACA,iBACA,QACA,gBACA,gBACA,eACA,uBACA,iCACA,+BACA,sCACA,gDACA,iCACA,SACA,eACA,gBACA,iBACA,aACA,mBACA,qBACA,cACA,+BACA,wBACA,OACA,eACA,YACA,mBACA,oBACA,oBACA,mBACA,mBACA,YACA,oBACA,sBACA,eACA,uBACA,4BACA,8BACA,8BACA,uBACA,UACA,oBACA,kBACA,aACA,gCACA,yCACA,0CACA,wCACA,uCACA,OACA,UACA,iBACA,kBACA,kBACA,iBACA,mBACA,eACA,yBACA,uBACA,uBACA,sBACA,qBACA,iBACA,yBACA,yBACA,wBACA,uBACA,cACA,qBACA,sBACA,sBACA,qBACA,uBACA,mBACA,4BACA,6BACA,2BACA,2BACA,0BACA,6BACA,4BACA,4BACA,oCACA,oCACA,mCACA,SACA,eACA,wBACA,mCACA,kCACA,sBACA,kCACA,4BACA,wBACA,sBACA,wBACA,uBACA,sBACA,0BACA,sBACA,gCACA,wBACA,sCACA,gCACA,2BACA,0BACA,yBACA,wBACA,sBACA,gCACA,6BACA,gCACA,8BACA,sCACA,sCACA,qCACA,6BACA,sCACA,wCACA,OACA,mBACA,6BACA,2BACA,UACA,kBACA,kBACA,iBACA,sBACA,oBACA,mBACA,sBACA,aACA,sBACA,qBACA,qBACA,oBACA,wBACA,wBACA,qBACA,yBACA,wBACA,sBACA,gCACA,+BACA,sBACA,uCACA,oBACA,qBACA,6BACA,6BACA,4BACA,iCACA,wCACA,yCACA,wCACA,yCACA,wBACA,iCACA,gCACA,wCACA,iCACA,iCACA,mCACA,kCACA,iCACA,yCACA,uBACA,iCACA,oBACA,8BACA,4BACA,8BACA,wBACA,cACA,wBACA,sBACA,qBACA,mCACA,kCACA,2BACA,OACA,eACA,eACA,SACA,aACA,gCACA,kCACA,6BACA,+BACA,OACA,2BACA,eACA,eACA,cACA,+BACA,WACA,QACA,gBACA,oBACA,eACA,yBACA,2BACA,sBACA,uBACA,eACA,yBACA,2BACA,wBACF,EAGA,SAAS,GAAiB,CAAC,EAAW,EAAU,CAAC,EAAG,CAClD,GAAI,OAAO,IAAc,SACvB,MAAU,UAAU,kCAAkC,EAExD,GAAI,IAAc,IAChB,MAA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", + "debugId": "C959AC204FAA6F0C64756E2164756E21", "names": [] } \ No newline at end of file diff --git a/dist/post.js b/dist/post.js new file mode 100644 index 0000000..193cdea --- /dev/null +++ b/dist/post.js @@ -0,0 +1,40 @@ +import{createRequire as Xt}from"node:module";var nr=Object.create;var{getPrototypeOf:ar,defineProperty:$X,getOwnPropertyNames:sr}=Object;var rr=Object.prototype.hasOwnProperty;function tr(Z){return this[Z]}var er,Zt,R=(Z,J,Q)=>{var $=Z!=null&&typeof Z==="object";if($){var X=J?er??=new WeakMap:Zt??=new WeakMap,Y=X.get(Z);if(Y)return Y}Q=Z!=null?nr(ar(Z)):{};let W=J||!Z||!Z.__esModule?$X(Q,"default",{value:Z,enumerable:!0}):Q;for(let K of sr(Z))if(!rr.call(W,K))$X(W,K,{get:tr.bind(Z,K),enumerable:!0});if($)X.set(Z,W);return W};var w=(Z,J)=>()=>(J||Z((J={exports:{}}).exports,J),J.exports);var Jt=(Z)=>Z;function Qt(Z,J){this[Z]=Jt.bind(null,J)}var $t=(Z,J)=>{for(var Q in J)$X(Z,Q,{get:J[Q],enumerable:!0,configurable:!0,set:Qt.bind(J,Q)})};var A=Xt(import.meta.url);var XX=w((IV)=>{Object.defineProperty(IV,"__esModule",{value:!0});IV.VERSION=void 0;IV.VERSION="1.9.1"});var hV=w((EV)=>{Object.defineProperty(EV,"__esModule",{value:!0});EV.isCompatible=EV._makeCompatibilityCheck=void 0;var Yt=XX(),TV=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function fV(Z){let J=new Set([Z]),Q=new Set,$=Z.match(TV);if(!$)return()=>!1;let X={major:+$[1],minor:+$[2],patch:+$[3],prerelease:$[4]};if(X.prerelease!=null)return function(z){return z===Z};function Y(K){return Q.add(K),!1}function W(K){return J.add(K),!0}return function(z){if(J.has(z))return!0;if(Q.has(z))return!1;let G=z.match(TV);if(!G)return Y(z);let H={major:+G[1],minor:+G[2],patch:+G[3],prerelease:G[4]};if(H.prerelease!=null)return Y(z);if(X.major!==H.major)return Y(z);if(X.major===0){if(X.minor===H.minor&&X.patch<=H.patch)return W(z);return Y(z)}if(X.minor<=H.minor)return W(z);return Y(z)}}EV._makeCompatibilityCheck=fV;EV.isCompatible=fV(Yt.VERSION)});var U7=w((SV)=>{Object.defineProperty(SV,"__esModule",{value:!0});SV.unregisterGlobal=SV.getGlobal=SV.registerGlobal=void 0;var L1=XX(),Kt=hV(),zt=L1.VERSION.split(".")[0],a8=Symbol.for(`opentelemetry.js.api.${zt}`),s8=typeof globalThis==="object"?globalThis:typeof self==="object"?self:typeof window==="object"?window:typeof global==="object"?global:{};function Gt(Z,J,Q,$=!1){var X;let Y=s8[a8]=(X=s8[a8])!==null&&X!==void 0?X:{version:L1.VERSION};if(!$&&Y[Z]){let W=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${Z}`);return Q.error(W.stack||W.message),!1}if(Y.version!==L1.VERSION){let W=Error(`@opentelemetry/api: Registration of version v${Y.version} for ${Z} does not match previously registered API v${L1.VERSION}`);return Q.error(W.stack||W.message),!1}return Y[Z]=J,Q.debug(`@opentelemetry/api: Registered a global for ${Z} v${L1.VERSION}.`),!0}SV.registerGlobal=Gt;function Bt(Z){var J,Q;let $=(J=s8[a8])===null||J===void 0?void 0:J.version;if(!$||!(0,Kt.isCompatible)($))return;return(Q=s8[a8])===null||Q===void 0?void 0:Q[Z]}SV.getGlobal=Bt;function Ht(Z,J){J.debug(`@opentelemetry/api: Unregistering a global for ${Z} v${L1.VERSION}.`);let Q=s8[a8];if(Q)delete Q[Z]}SV.unregisterGlobal=Ht});var gV=w((bV)=>{Object.defineProperty(bV,"__esModule",{value:!0});bV.DiagComponentLogger=void 0;var wt=U7();class vV{constructor(Z){this._namespace=Z.namespace||"DiagComponentLogger"}debug(...Z){return r8("debug",this._namespace,Z)}error(...Z){return r8("error",this._namespace,Z)}info(...Z){return r8("info",this._namespace,Z)}warn(...Z){return r8("warn",this._namespace,Z)}verbose(...Z){return r8("verbose",this._namespace,Z)}}bV.DiagComponentLogger=vV;function r8(Z,J,Q){let $=(0,wt.getGlobal)("diag");if(!$)return;return $[Z](J,...Q)}});var EJ=w((dV)=>{Object.defineProperty(dV,"__esModule",{value:!0});dV.DiagLogLevel=void 0;var Dt;(function(Z){Z[Z.NONE=0]="NONE",Z[Z.ERROR=30]="ERROR",Z[Z.WARN=50]="WARN",Z[Z.INFO=60]="INFO",Z[Z.DEBUG=70]="DEBUG",Z[Z.VERBOSE=80]="VERBOSE",Z[Z.ALL=9999]="ALL"})(Dt=dV.DiagLogLevel||(dV.DiagLogLevel={}))});var uV=w((cV)=>{Object.defineProperty(cV,"__esModule",{value:!0});cV.createLogLevelDiagLogger=void 0;var l9=EJ();function Ut(Z,J){if(Zl9.DiagLogLevel.ALL)Z=l9.DiagLogLevel.ALL;J=J||{};function Q($,X){let Y=J[$];if(typeof Y==="function"&&Z>=X)return Y.bind(J);return function(){}}return{error:Q("error",l9.DiagLogLevel.ERROR),warn:Q("warn",l9.DiagLogLevel.WARN),info:Q("info",l9.DiagLogLevel.INFO),debug:Q("debug",l9.DiagLogLevel.DEBUG),verbose:Q("verbose",l9.DiagLogLevel.VERBOSE)}}cV.createLogLevelDiagLogger=Ut});var j7=w((pV)=>{Object.defineProperty(pV,"__esModule",{value:!0});pV.DiagAPI=void 0;var jt=gV(),qt=uV(),lV=EJ(),yJ=U7(),Lt="diag";class WX{static instance(){if(!this._instance)this._instance=new WX;return this._instance}constructor(){function Z($){return function(...X){let Y=(0,yJ.getGlobal)("diag");if(!Y)return;return Y[$](...X)}}let J=this,Q=($,X={logLevel:lV.DiagLogLevel.INFO})=>{var Y,W,K;if($===J){let H=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return J.error((Y=H.stack)!==null&&Y!==void 0?Y:H.message),!1}if(typeof X==="number")X={logLevel:X};let z=(0,yJ.getGlobal)("diag"),G=(0,qt.createLogLevelDiagLogger)((W=X.logLevel)!==null&&W!==void 0?W:lV.DiagLogLevel.INFO,$);if(z&&!X.suppressOverrideMessage){let H=(K=Error().stack)!==null&&K!==void 0?K:"";z.warn(`Current logger will be overwritten from ${H}`),G.warn(`Current logger will overwrite one already registered from ${H}`)}return(0,yJ.registerGlobal)("diag",G,J,!0)};J.setLogger=Q,J.disable=()=>{(0,yJ.unregisterGlobal)(Lt,J)},J.createComponentLogger=($)=>{return new jt.DiagComponentLogger($)},J.verbose=Z("verbose"),J.debug=Z("debug"),J.info=Z("info"),J.warn=Z("warn"),J.error=Z("error")}}pV.DiagAPI=WX});var aV=w((oV)=>{Object.defineProperty(oV,"__esModule",{value:!0});oV.BaggageImpl=void 0;class O1{constructor(Z){this._entries=Z?new Map(Z):new Map}getEntry(Z){let J=this._entries.get(Z);if(!J)return;return Object.assign({},J)}getAllEntries(){return Array.from(this._entries.entries())}setEntry(Z,J){let Q=new O1(this._entries);return Q._entries.set(Z,J),Q}removeEntry(Z){let J=new O1(this._entries);return J._entries.delete(Z),J}removeEntries(...Z){let J=new O1(this._entries);for(let Q of Z)J._entries.delete(Q);return J}clear(){return new O1}}oV.BaggageImpl=O1});var tV=w((sV)=>{Object.defineProperty(sV,"__esModule",{value:!0});sV.baggageEntryMetadataSymbol=void 0;sV.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")});var KX=w((eV)=>{Object.defineProperty(eV,"__esModule",{value:!0});eV.baggageEntryMetadataFromString=eV.createBaggage=void 0;var Ot=j7(),Ct=aV(),Pt=tV(),kt=Ot.DiagAPI.instance();function Mt(Z={}){return new Ct.BaggageImpl(new Map(Object.entries(Z)))}eV.createBaggage=Mt;function Rt(Z){if(typeof Z!=="string")kt.error(`Cannot create baggage metadata from unknown type: ${typeof Z}`),Z="";return{__TYPE__:Pt.baggageEntryMetadataSymbol,toString(){return Z}}}eV.baggageEntryMetadataFromString=Rt});var t8=w((JF)=>{Object.defineProperty(JF,"__esModule",{value:!0});JF.ROOT_CONTEXT=JF.createContextKey=void 0;function It(Z){return Symbol.for(Z)}JF.createContextKey=It;class hJ{constructor(Z){let J=this;J._currentContext=Z?new Map(Z):new Map,J.getValue=(Q)=>J._currentContext.get(Q),J.setValue=(Q,$)=>{let X=new hJ(J._currentContext);return X._currentContext.set(Q,$),X},J.deleteValue=(Q)=>{let $=new hJ(J._currentContext);return $._currentContext.delete(Q),$}}}JF.ROOT_CONTEXT=new hJ});var WF=w((XF)=>{Object.defineProperty(XF,"__esModule",{value:!0});XF.DiagConsoleLogger=XF._originalConsoleMethods=void 0;var zX=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];XF._originalConsoleMethods={};if(typeof console<"u"){let Z=["error","warn","info","debug","trace","log"];for(let J of Z)if(typeof console[J]==="function")XF._originalConsoleMethods[J]=console[J]}class $F{constructor(){function Z(J){return function(...Q){let $=XF._originalConsoleMethods[J];if(typeof $!=="function")$=XF._originalConsoleMethods.log;if(typeof $!=="function"&&console){if($=console[J],typeof $!=="function")$=console.log}if(typeof $==="function")return $.apply(console,Q)}}for(let J=0;J{Object.defineProperty(KF,"__esModule",{value:!0});KF.createNoopMeter=KF.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=KF.NOOP_OBSERVABLE_GAUGE_METRIC=KF.NOOP_OBSERVABLE_COUNTER_METRIC=KF.NOOP_UP_DOWN_COUNTER_METRIC=KF.NOOP_HISTOGRAM_METRIC=KF.NOOP_GAUGE_METRIC=KF.NOOP_COUNTER_METRIC=KF.NOOP_METER=KF.NoopObservableUpDownCounterMetric=KF.NoopObservableGaugeMetric=KF.NoopObservableCounterMetric=KF.NoopObservableMetric=KF.NoopHistogramMetric=KF.NoopGaugeMetric=KF.NoopUpDownCounterMetric=KF.NoopCounterMetric=KF.NoopMetric=KF.NoopMeter=void 0;class GX{constructor(){}createGauge(Z,J){return KF.NOOP_GAUGE_METRIC}createHistogram(Z,J){return KF.NOOP_HISTOGRAM_METRIC}createCounter(Z,J){return KF.NOOP_COUNTER_METRIC}createUpDownCounter(Z,J){return KF.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(Z,J){return KF.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(Z,J){return KF.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(Z,J){return KF.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(Z,J){}removeBatchObservableCallback(Z){}}KF.NoopMeter=GX;class C1{}KF.NoopMetric=C1;class BX extends C1{add(Z,J){}}KF.NoopCounterMetric=BX;class HX extends C1{add(Z,J){}}KF.NoopUpDownCounterMetric=HX;class VX extends C1{record(Z,J){}}KF.NoopGaugeMetric=VX;class FX extends C1{record(Z,J){}}KF.NoopHistogramMetric=FX;class e8{addCallback(Z){}removeCallback(Z){}}KF.NoopObservableMetric=e8;class wX extends e8{}KF.NoopObservableCounterMetric=wX;class DX extends e8{}KF.NoopObservableGaugeMetric=DX;class UX extends e8{}KF.NoopObservableUpDownCounterMetric=UX;KF.NOOP_METER=new GX;KF.NOOP_COUNTER_METRIC=new BX;KF.NOOP_GAUGE_METRIC=new VX;KF.NOOP_HISTOGRAM_METRIC=new FX;KF.NOOP_UP_DOWN_COUNTER_METRIC=new HX;KF.NOOP_OBSERVABLE_COUNTER_METRIC=new wX;KF.NOOP_OBSERVABLE_GAUGE_METRIC=new DX;KF.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new UX;function Tt(){return KF.NOOP_METER}KF.createNoopMeter=Tt});var qF=w((jF)=>{Object.defineProperty(jF,"__esModule",{value:!0});jF.ValueType=void 0;var dt;(function(Z){Z[Z.INT=0]="INT",Z[Z.DOUBLE=1]="DOUBLE"})(dt=jF.ValueType||(jF.ValueType={}))});var LX=w((LF)=>{Object.defineProperty(LF,"__esModule",{value:!0});LF.defaultTextMapSetter=LF.defaultTextMapGetter=void 0;LF.defaultTextMapGetter={get(Z,J){if(Z==null)return;return Z[J]},keys(Z){if(Z==null)return[];return Object.keys(Z)}};LF.defaultTextMapSetter={set(Z,J,Q){if(Z==null)return;Z[J]=Q}}});var MF=w((PF)=>{Object.defineProperty(PF,"__esModule",{value:!0});PF.NoopContextManager=void 0;var mt=t8();class CF{active(){return mt.ROOT_CONTEXT}with(Z,J,Q,...$){return J.call(Q,...$)}bind(Z,J){return J}enable(){return this}disable(){return this}}PF.NoopContextManager=CF});var Z5=w((AF)=>{Object.defineProperty(AF,"__esModule",{value:!0});AF.ContextAPI=void 0;var ut=MF(),OX=U7(),RF=j7(),CX="context",lt=new ut.NoopContextManager;class PX{constructor(){}static getInstance(){if(!this._instance)this._instance=new PX;return this._instance}setGlobalContextManager(Z){return(0,OX.registerGlobal)(CX,Z,RF.DiagAPI.instance())}active(){return this._getContextManager().active()}with(Z,J,Q,...$){return this._getContextManager().with(Z,J,Q,...$)}bind(Z,J){return this._getContextManager().bind(Z,J)}_getContextManager(){return(0,OX.getGlobal)(CX)||lt}disable(){this._getContextManager().disable(),(0,OX.unregisterGlobal)(CX,RF.DiagAPI.instance())}}AF.ContextAPI=PX});var MX=w((NF)=>{Object.defineProperty(NF,"__esModule",{value:!0});NF.TraceFlags=void 0;var pt;(function(Z){Z[Z.NONE=0]="NONE",Z[Z.SAMPLED=1]="SAMPLED"})(pt=NF.TraceFlags||(NF.TraceFlags={}))});var _J=w((TF)=>{Object.defineProperty(TF,"__esModule",{value:!0});TF.INVALID_SPAN_CONTEXT=TF.INVALID_TRACEID=TF.INVALID_SPANID=void 0;var it=MX();TF.INVALID_SPANID="0000000000000000";TF.INVALID_TRACEID="00000000000000000000000000000000";TF.INVALID_SPAN_CONTEXT={traceId:TF.INVALID_TRACEID,spanId:TF.INVALID_SPANID,traceFlags:it.TraceFlags.NONE}});var vJ=w((SF)=>{Object.defineProperty(SF,"__esModule",{value:!0});SF.NonRecordingSpan=void 0;var ot=_J();class hF{constructor(Z=ot.INVALID_SPAN_CONTEXT){this._spanContext=Z}spanContext(){return this._spanContext}setAttribute(Z,J){return this}setAttributes(Z){return this}addEvent(Z,J){return this}addLink(Z){return this}addLinks(Z){return this}setStatus(Z){return this}updateName(Z){return this}end(Z){}isRecording(){return!1}recordException(Z,J){}}SF.NonRecordingSpan=hF});var IX=w((bF)=>{Object.defineProperty(bF,"__esModule",{value:!0});bF.getSpanContext=bF.setSpanContext=bF.deleteSpan=bF.setSpan=bF.getActiveSpan=bF.getSpan=void 0;var nt=t8(),at=vJ(),st=Z5(),RX=(0,nt.createContextKey)("OpenTelemetry Context Key SPAN");function AX(Z){return Z.getValue(RX)||void 0}bF.getSpan=AX;function rt(){return AX(st.ContextAPI.getInstance().active())}bF.getActiveSpan=rt;function vF(Z,J){return Z.setValue(RX,J)}bF.setSpan=vF;function tt(Z){return Z.deleteValue(RX)}bF.deleteSpan=tt;function et(Z,J){return vF(Z,new at.NonRecordingSpan(J))}bF.setSpanContext=et;function Ze(Z){var J;return(J=AX(Z))===null||J===void 0?void 0:J.spanContext()}bF.getSpanContext=Ze});var xJ=w((uF)=>{Object.defineProperty(uF,"__esModule",{value:!0});uF.wrapSpanContext=uF.isSpanContextValid=uF.isValidSpanId=uF.isValidTraceId=void 0;var gF=_J(),We=vJ(),bJ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1]);function dF(Z,J){if(typeof Z!=="string"||Z.length!==J)return!1;let Q=0;for(let $=0;${Object.defineProperty(oF,"__esModule",{value:!0});oF.NoopTracer=void 0;var Ve=Z5(),pF=IX(),NX=vJ(),Fe=xJ(),TX=Ve.ContextAPI.getInstance();class iF{startSpan(Z,J,Q=TX.active()){if(Boolean(J===null||J===void 0?void 0:J.root))return new NX.NonRecordingSpan;let X=Q&&(0,pF.getSpanContext)(Q);if(we(X)&&(0,Fe.isSpanContextValid)(X))return new NX.NonRecordingSpan(X);else return new NX.NonRecordingSpan}startActiveSpan(Z,J,Q,$){let X,Y,W;if(arguments.length<2)return;else if(arguments.length===2)W=J;else if(arguments.length===3)X=J,W=Q;else X=J,Y=Q,W=$;let K=Y!==null&&Y!==void 0?Y:TX.active(),z=this.startSpan(Z,X,K),G=(0,pF.setSpan)(K,z);return TX.with(G,W,void 0,z)}}oF.NoopTracer=iF;function we(Z){return Z!==null&&typeof Z==="object"&&"spanId"in Z&&typeof Z.spanId==="string"&&"traceId"in Z&&typeof Z.traceId==="string"&&"traceFlags"in Z&&typeof Z.traceFlags==="number"}});var EX=w((sF)=>{Object.defineProperty(sF,"__esModule",{value:!0});sF.ProxyTracer=void 0;var De=fX(),Ue=new De.NoopTracer;class aF{constructor(Z,J,Q,$){this._provider=Z,this.name=J,this.version=Q,this.options=$}startSpan(Z,J,Q){return this._getTracer().startSpan(Z,J,Q)}startActiveSpan(Z,J,Q,$){let X=this._getTracer();return Reflect.apply(X.startActiveSpan,X,arguments)}_getTracer(){if(this._delegate)return this._delegate;let Z=this._provider.getDelegateTracer(this.name,this.version,this.options);if(!Z)return Ue;return this._delegate=Z,this._delegate}}sF.ProxyTracer=aF});var Jw=w((eF)=>{Object.defineProperty(eF,"__esModule",{value:!0});eF.NoopTracerProvider=void 0;var je=fX();class tF{getTracer(Z,J,Q){return new je.NoopTracer}}eF.NoopTracerProvider=tF});var yX=w(($w)=>{Object.defineProperty($w,"__esModule",{value:!0});$w.ProxyTracerProvider=void 0;var qe=EX(),Le=Jw(),Oe=new Le.NoopTracerProvider;class Qw{getTracer(Z,J,Q){var $;return($=this.getDelegateTracer(Z,J,Q))!==null&&$!==void 0?$:new qe.ProxyTracer(this,Z,J,Q)}getDelegate(){var Z;return(Z=this._delegate)!==null&&Z!==void 0?Z:Oe}setDelegate(Z){this._delegate=Z}getDelegateTracer(Z,J,Q){var $;return($=this._delegate)===null||$===void 0?void 0:$.getTracer(Z,J,Q)}}$w.ProxyTracerProvider=Qw});var Ww=w((Yw)=>{Object.defineProperty(Yw,"__esModule",{value:!0});Yw.SamplingDecision=void 0;var Ce;(function(Z){Z[Z.NOT_RECORD=0]="NOT_RECORD",Z[Z.RECORD=1]="RECORD",Z[Z.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(Ce=Yw.SamplingDecision||(Yw.SamplingDecision={}))});var zw=w((Kw)=>{Object.defineProperty(Kw,"__esModule",{value:!0});Kw.SpanKind=void 0;var Pe;(function(Z){Z[Z.INTERNAL=0]="INTERNAL",Z[Z.SERVER=1]="SERVER",Z[Z.CLIENT=2]="CLIENT",Z[Z.PRODUCER=3]="PRODUCER",Z[Z.CONSUMER=4]="CONSUMER"})(Pe=Kw.SpanKind||(Kw.SpanKind={}))});var Bw=w((Gw)=>{Object.defineProperty(Gw,"__esModule",{value:!0});Gw.SpanStatusCode=void 0;var ke;(function(Z){Z[Z.UNSET=0]="UNSET",Z[Z.OK=1]="OK",Z[Z.ERROR=2]="ERROR"})(ke=Gw.SpanStatusCode||(Gw.SpanStatusCode={}))});var Fw=w((Hw)=>{Object.defineProperty(Hw,"__esModule",{value:!0});Hw.validateValue=Hw.validateKey=void 0;var vX="[_0-9a-z-*/]",Me=`[a-z]${vX}{0,255}`,Re=`[a-z0-9]${vX}{0,240}@[a-z]${vX}{0,13}`,Ae=new RegExp(`^(?:${Me}|${Re})$`),Ie=/^[ -~]{0,255}[!-~]$/,Ne=/,|=/;function Te(Z){return Ae.test(Z)}Hw.validateKey=Te;function fe(Z){return Ie.test(Z)&&!Ne.test(Z)}Hw.validateValue=fe});var Ow=w((qw)=>{Object.defineProperty(qw,"__esModule",{value:!0});qw.TraceStateImpl=void 0;var ww=Fw(),Dw=32,ye=512,Uw=",",jw="=";class bX{constructor(Z){if(this._internalState=new Map,Z)this._parse(Z)}set(Z,J){let Q=this._clone();if(Q._internalState.has(Z))Q._internalState.delete(Z);return Q._internalState.set(Z,J),Q}unset(Z){let J=this._clone();return J._internalState.delete(Z),J}get(Z){return this._internalState.get(Z)}serialize(){return Array.from(this._internalState.keys()).reduceRight((Z,J)=>{return Z.push(J+jw+this.get(J)),Z},[]).join(Uw)}_parse(Z){if(Z.length>ye)return;if(this._internalState=Z.split(Uw).reduceRight((J,Q)=>{let $=Q.trim(),X=$.indexOf(jw);if(X!==-1){let Y=$.slice(0,X),W=$.slice(X+1,Q.length);if((0,ww.validateKey)(Y)&&(0,ww.validateValue)(W))J.set(Y,W)}return J},new Map),this._internalState.size>Dw)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,Dw))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let Z=new bX;return Z._internalState=new Map(this._internalState),Z}}qw.TraceStateImpl=bX});var kw=w((Cw)=>{Object.defineProperty(Cw,"__esModule",{value:!0});Cw.createTraceState=void 0;var he=Ow();function Se(Z){return new he.TraceStateImpl(Z)}Cw.createTraceState=Se});var Aw=w((Mw)=>{Object.defineProperty(Mw,"__esModule",{value:!0});Mw.context=void 0;var _e=Z5();Mw.context=_e.ContextAPI.getInstance()});var Tw=w((Iw)=>{Object.defineProperty(Iw,"__esModule",{value:!0});Iw.diag=void 0;var ve=j7();Iw.diag=ve.DiagAPI.instance()});var yw=w((fw)=>{Object.defineProperty(fw,"__esModule",{value:!0});fw.NOOP_METER_PROVIDER=fw.NoopMeterProvider=void 0;var be=jX();class xX{getMeter(Z,J,Q){return be.NOOP_METER}}fw.NoopMeterProvider=xX;fw.NOOP_METER_PROVIDER=new xX});var vw=w((Sw)=>{Object.defineProperty(Sw,"__esModule",{value:!0});Sw.MetricsAPI=void 0;var ge=yw(),gX=U7(),hw=j7(),dX="metrics";class cX{constructor(){}static getInstance(){if(!this._instance)this._instance=new cX;return this._instance}setGlobalMeterProvider(Z){return(0,gX.registerGlobal)(dX,Z,hw.DiagAPI.instance())}getMeterProvider(){return(0,gX.getGlobal)(dX)||ge.NOOP_METER_PROVIDER}getMeter(Z,J,Q){return this.getMeterProvider().getMeter(Z,J,Q)}disable(){(0,gX.unregisterGlobal)(dX,hw.DiagAPI.instance())}}Sw.MetricsAPI=cX});var gw=w((bw)=>{Object.defineProperty(bw,"__esModule",{value:!0});bw.metrics=void 0;var de=vw();bw.metrics=de.MetricsAPI.getInstance()});var uw=w((cw)=>{Object.defineProperty(cw,"__esModule",{value:!0});cw.NoopTextMapPropagator=void 0;class dw{inject(Z,J){}extract(Z,J){return Z}fields(){return[]}}cw.NoopTextMapPropagator=dw});var ow=w((pw)=>{Object.defineProperty(pw,"__esModule",{value:!0});pw.deleteBaggage=pw.setBaggage=pw.getActiveBaggage=pw.getBaggage=void 0;var ce=Z5(),me=t8(),mX=(0,me.createContextKey)("OpenTelemetry Baggage Key");function lw(Z){return Z.getValue(mX)||void 0}pw.getBaggage=lw;function ue(){return lw(ce.ContextAPI.getInstance().active())}pw.getActiveBaggage=ue;function le(Z,J){return Z.setValue(mX,J)}pw.setBaggage=le;function pe(Z){return Z.deleteValue(mX)}pw.deleteBaggage=pe});var tw=w((sw)=>{Object.defineProperty(sw,"__esModule",{value:!0});sw.PropagationAPI=void 0;var uX=U7(),ae=uw(),nw=LX(),gJ=ow(),se=KX(),aw=j7(),lX="propagation",re=new ae.NoopTextMapPropagator;class pX{constructor(){this.createBaggage=se.createBaggage,this.getBaggage=gJ.getBaggage,this.getActiveBaggage=gJ.getActiveBaggage,this.setBaggage=gJ.setBaggage,this.deleteBaggage=gJ.deleteBaggage}static getInstance(){if(!this._instance)this._instance=new pX;return this._instance}setGlobalPropagator(Z){return(0,uX.registerGlobal)(lX,Z,aw.DiagAPI.instance())}inject(Z,J,Q=nw.defaultTextMapSetter){return this._getGlobalPropagator().inject(Z,J,Q)}extract(Z,J,Q=nw.defaultTextMapGetter){return this._getGlobalPropagator().extract(Z,J,Q)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,uX.unregisterGlobal)(lX,aw.DiagAPI.instance())}_getGlobalPropagator(){return(0,uX.getGlobal)(lX)||re}}sw.PropagationAPI=pX});var JD=w((ew)=>{Object.defineProperty(ew,"__esModule",{value:!0});ew.propagation=void 0;var te=tw();ew.propagation=te.PropagationAPI.getInstance()});var KD=w((YD)=>{Object.defineProperty(YD,"__esModule",{value:!0});YD.TraceAPI=void 0;var iX=U7(),QD=yX(),$D=xJ(),P1=IX(),XD=j7(),oX="trace";class nX{constructor(){this._proxyTracerProvider=new QD.ProxyTracerProvider,this.wrapSpanContext=$D.wrapSpanContext,this.isSpanContextValid=$D.isSpanContextValid,this.deleteSpan=P1.deleteSpan,this.getSpan=P1.getSpan,this.getActiveSpan=P1.getActiveSpan,this.getSpanContext=P1.getSpanContext,this.setSpan=P1.setSpan,this.setSpanContext=P1.setSpanContext}static getInstance(){if(!this._instance)this._instance=new nX;return this._instance}setGlobalTracerProvider(Z){let J=(0,iX.registerGlobal)(oX,this._proxyTracerProvider,XD.DiagAPI.instance());if(J)this._proxyTracerProvider.setDelegate(Z);return J}getTracerProvider(){return(0,iX.getGlobal)(oX)||this._proxyTracerProvider}getTracer(Z,J){return this.getTracerProvider().getTracer(Z,J)}disable(){(0,iX.unregisterGlobal)(oX,XD.DiagAPI.instance()),this._proxyTracerProvider=new QD.ProxyTracerProvider}}YD.TraceAPI=nX});var BD=w((zD)=>{Object.defineProperty(zD,"__esModule",{value:!0});zD.trace=void 0;var ee=KD();zD.trace=ee.TraceAPI.getInstance()});var C=w((J0)=>{Object.defineProperty(J0,"__esModule",{value:!0});J0.trace=J0.propagation=J0.metrics=J0.diag=J0.context=J0.INVALID_SPAN_CONTEXT=J0.INVALID_TRACEID=J0.INVALID_SPANID=J0.isValidSpanId=J0.isValidTraceId=J0.isSpanContextValid=J0.createTraceState=J0.TraceFlags=J0.SpanStatusCode=J0.SpanKind=J0.SamplingDecision=J0.ProxyTracerProvider=J0.ProxyTracer=J0.defaultTextMapSetter=J0.defaultTextMapGetter=J0.ValueType=J0.createNoopMeter=J0.DiagLogLevel=J0.DiagConsoleLogger=J0.ROOT_CONTEXT=J0.createContextKey=J0.baggageEntryMetadataFromString=void 0;var Z00=KX();Object.defineProperty(J0,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return Z00.baggageEntryMetadataFromString}});var HD=t8();Object.defineProperty(J0,"createContextKey",{enumerable:!0,get:function(){return HD.createContextKey}});Object.defineProperty(J0,"ROOT_CONTEXT",{enumerable:!0,get:function(){return HD.ROOT_CONTEXT}});var J00=WF();Object.defineProperty(J0,"DiagConsoleLogger",{enumerable:!0,get:function(){return J00.DiagConsoleLogger}});var Q00=EJ();Object.defineProperty(J0,"DiagLogLevel",{enumerable:!0,get:function(){return Q00.DiagLogLevel}});var $00=jX();Object.defineProperty(J0,"createNoopMeter",{enumerable:!0,get:function(){return $00.createNoopMeter}});var X00=qF();Object.defineProperty(J0,"ValueType",{enumerable:!0,get:function(){return X00.ValueType}});var VD=LX();Object.defineProperty(J0,"defaultTextMapGetter",{enumerable:!0,get:function(){return VD.defaultTextMapGetter}});Object.defineProperty(J0,"defaultTextMapSetter",{enumerable:!0,get:function(){return VD.defaultTextMapSetter}});var Y00=EX();Object.defineProperty(J0,"ProxyTracer",{enumerable:!0,get:function(){return Y00.ProxyTracer}});var W00=yX();Object.defineProperty(J0,"ProxyTracerProvider",{enumerable:!0,get:function(){return W00.ProxyTracerProvider}});var K00=Ww();Object.defineProperty(J0,"SamplingDecision",{enumerable:!0,get:function(){return K00.SamplingDecision}});var z00=zw();Object.defineProperty(J0,"SpanKind",{enumerable:!0,get:function(){return z00.SpanKind}});var G00=Bw();Object.defineProperty(J0,"SpanStatusCode",{enumerable:!0,get:function(){return G00.SpanStatusCode}});var B00=MX();Object.defineProperty(J0,"TraceFlags",{enumerable:!0,get:function(){return B00.TraceFlags}});var H00=kw();Object.defineProperty(J0,"createTraceState",{enumerable:!0,get:function(){return H00.createTraceState}});var aX=xJ();Object.defineProperty(J0,"isSpanContextValid",{enumerable:!0,get:function(){return aX.isSpanContextValid}});Object.defineProperty(J0,"isValidTraceId",{enumerable:!0,get:function(){return aX.isValidTraceId}});Object.defineProperty(J0,"isValidSpanId",{enumerable:!0,get:function(){return aX.isValidSpanId}});var sX=_J();Object.defineProperty(J0,"INVALID_SPANID",{enumerable:!0,get:function(){return sX.INVALID_SPANID}});Object.defineProperty(J0,"INVALID_TRACEID",{enumerable:!0,get:function(){return sX.INVALID_TRACEID}});Object.defineProperty(J0,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return sX.INVALID_SPAN_CONTEXT}});var FD=Aw();Object.defineProperty(J0,"context",{enumerable:!0,get:function(){return FD.context}});var wD=Tw();Object.defineProperty(J0,"diag",{enumerable:!0,get:function(){return wD.diag}});var DD=gw();Object.defineProperty(J0,"metrics",{enumerable:!0,get:function(){return DD.metrics}});var UD=JD();Object.defineProperty(J0,"propagation",{enumerable:!0,get:function(){return UD.propagation}});var jD=BD();Object.defineProperty(J0,"trace",{enumerable:!0,get:function(){return jD.trace}});J0.default={context:FD.context,diag:wD.diag,metrics:DD.metrics,propagation:UD.propagation,trace:jD.trace}});var J5=w((qD)=>{Object.defineProperty(qD,"__esModule",{value:!0});qD.isTracingSuppressed=qD.unsuppressTracing=qD.suppressTracing=void 0;var w00=C(),rX=(0,w00.createContextKey)("OpenTelemetry SDK Context Key SUPPRESS_TRACING");function D00(Z){return Z.setValue(rX,!0)}qD.suppressTracing=D00;function U00(Z){return Z.deleteValue(rX)}qD.unsuppressTracing=U00;function j00(Z){return Z.getValue(rX)===!0}qD.isTracingSuppressed=j00});var tX=w((OD)=>{Object.defineProperty(OD,"__esModule",{value:!0});OD.BAGGAGE_MAX_TOTAL_LENGTH=OD.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=OD.BAGGAGE_MAX_NAME_VALUE_PAIRS=OD.BAGGAGE_HEADER=OD.BAGGAGE_ITEMS_SEPARATOR=OD.BAGGAGE_PROPERTIES_SEPARATOR=OD.BAGGAGE_KEY_PAIR_SEPARATOR=void 0;OD.BAGGAGE_KEY_PAIR_SEPARATOR="=";OD.BAGGAGE_PROPERTIES_SEPARATOR=";";OD.BAGGAGE_ITEMS_SEPARATOR=",";OD.BAGGAGE_HEADER="baggage";OD.BAGGAGE_MAX_NAME_VALUE_PAIRS=180;OD.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=4096;OD.BAGGAGE_MAX_TOTAL_LENGTH=8192});var eX=w((kD)=>{Object.defineProperty(kD,"__esModule",{value:!0});kD.parseKeyPairsIntoRecord=kD.parsePairKeyValue=kD.getKeyPairs=kD.serializeKeyPairs=void 0;var A00=C(),k1=tX();function I00(Z){return Z.reduce((J,Q)=>{let $=`${J}${J!==""?k1.BAGGAGE_ITEMS_SEPARATOR:""}${Q}`;return $.length>k1.BAGGAGE_MAX_TOTAL_LENGTH?J:$},"")}kD.serializeKeyPairs=I00;function N00(Z){return Z.getAllEntries().map(([J,Q])=>{let $=`${encodeURIComponent(J)}=${encodeURIComponent(Q.value)}`;if(Q.metadata!==void 0)$+=k1.BAGGAGE_PROPERTIES_SEPARATOR+Q.metadata.toString();return $})}kD.getKeyPairs=N00;function PD(Z){if(!Z)return;let J=Z.indexOf(k1.BAGGAGE_PROPERTIES_SEPARATOR),Q=J===-1?Z:Z.substring(0,J),$=Q.indexOf(k1.BAGGAGE_KEY_PAIR_SEPARATOR);if($<=0)return;let X=Q.substring(0,$).trim(),Y=Q.substring($+1).trim();if(!X||!Y)return;let W,K;try{W=decodeURIComponent(X),K=decodeURIComponent(Y)}catch{return}let z;if(J!==-1&&J0)Z.split(k1.BAGGAGE_ITEMS_SEPARATOR).forEach((Q)=>{let $=PD(Q);if($!==void 0&&$.value.length>0)J[$.key]=$.value});return J}kD.parseKeyPairsIntoRecord=T00});var ND=w((AD)=>{Object.defineProperty(AD,"__esModule",{value:!0});AD.W3CBaggagePropagator=void 0;var ZY=C(),h00=J5(),q7=tX(),JY=eX();class RD{inject(Z,J,Q){let $=ZY.propagation.getBaggage(Z);if(!$||(0,h00.isTracingSuppressed)(Z))return;let X=(0,JY.getKeyPairs)($).filter((W)=>{return W.length<=q7.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS}).slice(0,q7.BAGGAGE_MAX_NAME_VALUE_PAIRS),Y=(0,JY.serializeKeyPairs)(X);if(Y.length>0)Q.set(J,q7.BAGGAGE_HEADER,Y)}extract(Z,J,Q){let $=Q.get(J,q7.BAGGAGE_HEADER),X=Array.isArray($)?$.join(q7.BAGGAGE_ITEMS_SEPARATOR):$;if(!X)return Z;let Y={};if(X.length===0)return Z;if(X.split(q7.BAGGAGE_ITEMS_SEPARATOR).forEach((K)=>{let z=(0,JY.parsePairKeyValue)(K);if(z){let G={value:z.value};if(z.metadata)G.metadata=z.metadata;Y[z.key]=G}}),Object.entries(Y).length===0)return Z;return ZY.propagation.setBaggage(Z,ZY.propagation.createBaggage(Y))}fields(){return[q7.BAGGAGE_HEADER]}}AD.W3CBaggagePropagator=RD});var yD=w((fD)=>{Object.defineProperty(fD,"__esModule",{value:!0});fD.AnchoredClock=void 0;class TD{_monotonicClock;_epochMillis;_performanceMillis;constructor(Z,J){this._monotonicClock=J,this._epochMillis=Z.now(),this._performanceMillis=J.now()}now(){let Z=this._monotonicClock.now()-this._performanceMillis;return this._epochMillis+Z}}fD.AnchoredClock=TD});var gD=w((bD)=>{Object.defineProperty(bD,"__esModule",{value:!0});bD.isAttributeValue=bD.isAttributeKey=bD.sanitizeAttributes=void 0;var hD=C();function S00(Z){let J={};if(typeof Z!=="object"||Z==null)return J;for(let Q in Z){if(!Object.prototype.hasOwnProperty.call(Z,Q))continue;if(!SD(Q)){hD.diag.warn(`Invalid attribute key: ${Q}`);continue}let $=Z[Q];if(!_D($)){hD.diag.warn(`Invalid attribute value set for key: ${Q}`);continue}if(Array.isArray($))J[Q]=$.slice();else J[Q]=$}return J}bD.sanitizeAttributes=S00;function SD(Z){return typeof Z==="string"&&Z!==""}bD.isAttributeKey=SD;function _D(Z){if(Z==null)return!0;if(Array.isArray(Z))return _00(Z);return vD(typeof Z)}bD.isAttributeValue=_D;function _00(Z){let J;for(let Q of Z){if(Q==null)continue;let $=typeof Q;if($===J)continue;if(!J){if(vD($)){J=$;continue}return!1}return!1}return!0}function vD(Z){switch(Z){case"number":case"boolean":case"string":return!0}return!1}});var QY=w((dD)=>{Object.defineProperty(dD,"__esModule",{value:!0});dD.loggingErrorHandler=void 0;var x00=C();function g00(){return(Z)=>{x00.diag.error(d00(Z))}}dD.loggingErrorHandler=g00;function d00(Z){if(typeof Z==="string")return Z;else return JSON.stringify(c00(Z))}function c00(Z){let J={},Q=Z;while(Q!==null)Object.getOwnPropertyNames(Q).forEach(($)=>{if(J[$])return;let X=Q[$];if(X)J[$]=String(X)}),Q=Object.getPrototypeOf(Q);return J}});var pD=w((uD)=>{Object.defineProperty(uD,"__esModule",{value:!0});uD.globalErrorHandler=uD.setGlobalErrorHandler=void 0;var m00=QY(),mD=(0,m00.loggingErrorHandler)();function u00(Z){mD=Z}uD.setGlobalErrorHandler=u00;function l00(Z){try{mD(Z)}catch{}}uD.globalErrorHandler=l00});var rD=w((aD)=>{Object.defineProperty(aD,"__esModule",{value:!0});aD.getStringListFromEnv=aD.getBooleanFromEnv=aD.getStringFromEnv=aD.getNumberFromEnv=void 0;var iD=C(),oD=A("util");function i00(Z){let J=process.env[Z];if(J==null||J.trim()==="")return;let Q=Number(J);if(isNaN(Q)){iD.diag.warn(`Unknown value ${(0,oD.inspect)(J)} for ${Z}, expected a number, using defaults`);return}return Q}aD.getNumberFromEnv=i00;function nD(Z){let J=process.env[Z];if(J==null||J.trim()==="")return;return J}aD.getStringFromEnv=nD;function o00(Z){let J=process.env[Z]?.trim().toLowerCase();if(J==null||J==="")return!1;if(J==="true")return!0;else if(J==="false")return!1;else return iD.diag.warn(`Unknown value ${(0,oD.inspect)(J)} for ${Z}, expected 'true' or 'false', falling back to 'false' (default)`),!1}aD.getBooleanFromEnv=o00;function n00(Z){return nD(Z)?.split(",").map((J)=>J.trim()).filter((J)=>J!=="")}aD.getStringListFromEnv=n00});var ZU=w((tD)=>{Object.defineProperty(tD,"__esModule",{value:!0});tD._globalThis=void 0;tD._globalThis=globalThis});var $U=w((JU)=>{Object.defineProperty(JU,"__esModule",{value:!0});JU.VERSION=void 0;JU.VERSION="2.6.0"});var $Y=w((XU)=>{Object.defineProperty(XU,"__esModule",{value:!0});XU.createConstMap=void 0;function t00(Z){let J={},Q=Z.length;for(let $=0;${Object.defineProperty(aO,"__esModule",{value:!0});aO.SEMATTRS_NET_HOST_CARRIER_ICC=aO.SEMATTRS_NET_HOST_CARRIER_MNC=aO.SEMATTRS_NET_HOST_CARRIER_MCC=aO.SEMATTRS_NET_HOST_CARRIER_NAME=aO.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE=aO.SEMATTRS_NET_HOST_CONNECTION_TYPE=aO.SEMATTRS_NET_HOST_NAME=aO.SEMATTRS_NET_HOST_PORT=aO.SEMATTRS_NET_HOST_IP=aO.SEMATTRS_NET_PEER_NAME=aO.SEMATTRS_NET_PEER_PORT=aO.SEMATTRS_NET_PEER_IP=aO.SEMATTRS_NET_TRANSPORT=aO.SEMATTRS_FAAS_INVOKED_REGION=aO.SEMATTRS_FAAS_INVOKED_PROVIDER=aO.SEMATTRS_FAAS_INVOKED_NAME=aO.SEMATTRS_FAAS_COLDSTART=aO.SEMATTRS_FAAS_CRON=aO.SEMATTRS_FAAS_TIME=aO.SEMATTRS_FAAS_DOCUMENT_NAME=aO.SEMATTRS_FAAS_DOCUMENT_TIME=aO.SEMATTRS_FAAS_DOCUMENT_OPERATION=aO.SEMATTRS_FAAS_DOCUMENT_COLLECTION=aO.SEMATTRS_FAAS_EXECUTION=aO.SEMATTRS_FAAS_TRIGGER=aO.SEMATTRS_EXCEPTION_ESCAPED=aO.SEMATTRS_EXCEPTION_STACKTRACE=aO.SEMATTRS_EXCEPTION_MESSAGE=aO.SEMATTRS_EXCEPTION_TYPE=aO.SEMATTRS_DB_SQL_TABLE=aO.SEMATTRS_DB_MONGODB_COLLECTION=aO.SEMATTRS_DB_REDIS_DATABASE_INDEX=aO.SEMATTRS_DB_HBASE_NAMESPACE=aO.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC=aO.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID=aO.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT=aO.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE=aO.SEMATTRS_DB_CASSANDRA_TABLE=aO.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL=aO.SEMATTRS_DB_CASSANDRA_PAGE_SIZE=aO.SEMATTRS_DB_CASSANDRA_KEYSPACE=aO.SEMATTRS_DB_MSSQL_INSTANCE_NAME=aO.SEMATTRS_DB_OPERATION=aO.SEMATTRS_DB_STATEMENT=aO.SEMATTRS_DB_NAME=aO.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME=aO.SEMATTRS_DB_USER=aO.SEMATTRS_DB_CONNECTION_STRING=aO.SEMATTRS_DB_SYSTEM=aO.SEMATTRS_AWS_LAMBDA_INVOKED_ARN=void 0;aO.SEMATTRS_MESSAGING_DESTINATION_KIND=aO.SEMATTRS_MESSAGING_DESTINATION=aO.SEMATTRS_MESSAGING_SYSTEM=aO.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES=aO.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS=aO.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT=aO.SEMATTRS_AWS_DYNAMODB_COUNT=aO.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS=aO.SEMATTRS_AWS_DYNAMODB_SEGMENT=aO.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD=aO.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT=aO.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE=aO.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES=aO.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES=aO.SEMATTRS_AWS_DYNAMODB_SELECT=aO.SEMATTRS_AWS_DYNAMODB_INDEX_NAME=aO.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET=aO.SEMATTRS_AWS_DYNAMODB_LIMIT=aO.SEMATTRS_AWS_DYNAMODB_PROJECTION=aO.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ=aO.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY=aO.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY=aO.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS=aO.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY=aO.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES=aO.SEMATTRS_HTTP_CLIENT_IP=aO.SEMATTRS_HTTP_ROUTE=aO.SEMATTRS_HTTP_SERVER_NAME=aO.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED=aO.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH=aO.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED=aO.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH=aO.SEMATTRS_HTTP_USER_AGENT=aO.SEMATTRS_HTTP_FLAVOR=aO.SEMATTRS_HTTP_STATUS_CODE=aO.SEMATTRS_HTTP_SCHEME=aO.SEMATTRS_HTTP_HOST=aO.SEMATTRS_HTTP_TARGET=aO.SEMATTRS_HTTP_URL=aO.SEMATTRS_HTTP_METHOD=aO.SEMATTRS_CODE_LINENO=aO.SEMATTRS_CODE_FILEPATH=aO.SEMATTRS_CODE_NAMESPACE=aO.SEMATTRS_CODE_FUNCTION=aO.SEMATTRS_THREAD_NAME=aO.SEMATTRS_THREAD_ID=aO.SEMATTRS_ENDUSER_SCOPE=aO.SEMATTRS_ENDUSER_ROLE=aO.SEMATTRS_ENDUSER_ID=aO.SEMATTRS_PEER_SERVICE=void 0;aO.DBSYSTEMVALUES_FILEMAKER=aO.DBSYSTEMVALUES_DERBY=aO.DBSYSTEMVALUES_FIREBIRD=aO.DBSYSTEMVALUES_ADABAS=aO.DBSYSTEMVALUES_CACHE=aO.DBSYSTEMVALUES_EDB=aO.DBSYSTEMVALUES_FIRSTSQL=aO.DBSYSTEMVALUES_INGRES=aO.DBSYSTEMVALUES_HANADB=aO.DBSYSTEMVALUES_MAXDB=aO.DBSYSTEMVALUES_PROGRESS=aO.DBSYSTEMVALUES_HSQLDB=aO.DBSYSTEMVALUES_CLOUDSCAPE=aO.DBSYSTEMVALUES_HIVE=aO.DBSYSTEMVALUES_REDSHIFT=aO.DBSYSTEMVALUES_POSTGRESQL=aO.DBSYSTEMVALUES_DB2=aO.DBSYSTEMVALUES_ORACLE=aO.DBSYSTEMVALUES_MYSQL=aO.DBSYSTEMVALUES_MSSQL=aO.DBSYSTEMVALUES_OTHER_SQL=aO.SemanticAttributes=aO.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE=aO.SEMATTRS_MESSAGE_COMPRESSED_SIZE=aO.SEMATTRS_MESSAGE_ID=aO.SEMATTRS_MESSAGE_TYPE=aO.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE=aO.SEMATTRS_RPC_JSONRPC_ERROR_CODE=aO.SEMATTRS_RPC_JSONRPC_REQUEST_ID=aO.SEMATTRS_RPC_JSONRPC_VERSION=aO.SEMATTRS_RPC_GRPC_STATUS_CODE=aO.SEMATTRS_RPC_METHOD=aO.SEMATTRS_RPC_SERVICE=aO.SEMATTRS_RPC_SYSTEM=aO.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE=aO.SEMATTRS_MESSAGING_KAFKA_PARTITION=aO.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID=aO.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP=aO.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY=aO.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY=aO.SEMATTRS_MESSAGING_CONSUMER_ID=aO.SEMATTRS_MESSAGING_OPERATION=aO.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES=aO.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES=aO.SEMATTRS_MESSAGING_CONVERSATION_ID=aO.SEMATTRS_MESSAGING_MESSAGE_ID=aO.SEMATTRS_MESSAGING_URL=aO.SEMATTRS_MESSAGING_PROTOCOL_VERSION=aO.SEMATTRS_MESSAGING_PROTOCOL=aO.SEMATTRS_MESSAGING_TEMP_DESTINATION=void 0;aO.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD=aO.FaasDocumentOperationValues=aO.FAASDOCUMENTOPERATIONVALUES_DELETE=aO.FAASDOCUMENTOPERATIONVALUES_EDIT=aO.FAASDOCUMENTOPERATIONVALUES_INSERT=aO.FaasTriggerValues=aO.FAASTRIGGERVALUES_OTHER=aO.FAASTRIGGERVALUES_TIMER=aO.FAASTRIGGERVALUES_PUBSUB=aO.FAASTRIGGERVALUES_HTTP=aO.FAASTRIGGERVALUES_DATASOURCE=aO.DbCassandraConsistencyLevelValues=aO.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL=aO.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL=aO.DBCASSANDRACONSISTENCYLEVELVALUES_ANY=aO.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE=aO.DBCASSANDRACONSISTENCYLEVELVALUES_THREE=aO.DBCASSANDRACONSISTENCYLEVELVALUES_TWO=aO.DBCASSANDRACONSISTENCYLEVELVALUES_ONE=aO.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM=aO.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM=aO.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM=aO.DBCASSANDRACONSISTENCYLEVELVALUES_ALL=aO.DbSystemValues=aO.DBSYSTEMVALUES_COCKROACHDB=aO.DBSYSTEMVALUES_MEMCACHED=aO.DBSYSTEMVALUES_ELASTICSEARCH=aO.DBSYSTEMVALUES_GEODE=aO.DBSYSTEMVALUES_NEO4J=aO.DBSYSTEMVALUES_DYNAMODB=aO.DBSYSTEMVALUES_COSMOSDB=aO.DBSYSTEMVALUES_COUCHDB=aO.DBSYSTEMVALUES_COUCHBASE=aO.DBSYSTEMVALUES_REDIS=aO.DBSYSTEMVALUES_MONGODB=aO.DBSYSTEMVALUES_HBASE=aO.DBSYSTEMVALUES_CASSANDRA=aO.DBSYSTEMVALUES_COLDFUSION=aO.DBSYSTEMVALUES_H2=aO.DBSYSTEMVALUES_VERTICA=aO.DBSYSTEMVALUES_TERADATA=aO.DBSYSTEMVALUES_SYBASE=aO.DBSYSTEMVALUES_SQLITE=aO.DBSYSTEMVALUES_POINTBASE=aO.DBSYSTEMVALUES_PERVASIVE=aO.DBSYSTEMVALUES_NETEZZA=aO.DBSYSTEMVALUES_MARIADB=aO.DBSYSTEMVALUES_INTERBASE=aO.DBSYSTEMVALUES_INSTANTDB=aO.DBSYSTEMVALUES_INFORMIX=void 0;aO.MESSAGINGOPERATIONVALUES_RECEIVE=aO.MessagingDestinationKindValues=aO.MESSAGINGDESTINATIONKINDVALUES_TOPIC=aO.MESSAGINGDESTINATIONKINDVALUES_QUEUE=aO.HttpFlavorValues=aO.HTTPFLAVORVALUES_QUIC=aO.HTTPFLAVORVALUES_SPDY=aO.HTTPFLAVORVALUES_HTTP_2_0=aO.HTTPFLAVORVALUES_HTTP_1_1=aO.HTTPFLAVORVALUES_HTTP_1_0=aO.NetHostConnectionSubtypeValues=aO.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA=aO.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA=aO.NETHOSTCONNECTIONSUBTYPEVALUES_NR=aO.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN=aO.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA=aO.NETHOSTCONNECTIONSUBTYPEVALUES_GSM=aO.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP=aO.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD=aO.NETHOSTCONNECTIONSUBTYPEVALUES_LTE=aO.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B=aO.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN=aO.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA=aO.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA=aO.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA=aO.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT=aO.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A=aO.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0=aO.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA=aO.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS=aO.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE=aO.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS=aO.NetHostConnectionTypeValues=aO.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN=aO.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE=aO.NETHOSTCONNECTIONTYPEVALUES_CELL=aO.NETHOSTCONNECTIONTYPEVALUES_WIRED=aO.NETHOSTCONNECTIONTYPEVALUES_WIFI=aO.NetTransportValues=aO.NETTRANSPORTVALUES_OTHER=aO.NETTRANSPORTVALUES_INPROC=aO.NETTRANSPORTVALUES_PIPE=aO.NETTRANSPORTVALUES_UNIX=aO.NETTRANSPORTVALUES_IP=aO.NETTRANSPORTVALUES_IP_UDP=aO.NETTRANSPORTVALUES_IP_TCP=aO.FaasInvokedProviderValues=aO.FAASINVOKEDPROVIDERVALUES_GCP=aO.FAASINVOKEDPROVIDERVALUES_AZURE=aO.FAASINVOKEDPROVIDERVALUES_AWS=void 0;aO.MessageTypeValues=aO.MESSAGETYPEVALUES_RECEIVED=aO.MESSAGETYPEVALUES_SENT=aO.RpcGrpcStatusCodeValues=aO.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED=aO.RPCGRPCSTATUSCODEVALUES_DATA_LOSS=aO.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE=aO.RPCGRPCSTATUSCODEVALUES_INTERNAL=aO.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED=aO.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE=aO.RPCGRPCSTATUSCODEVALUES_ABORTED=aO.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION=aO.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED=aO.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED=aO.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS=aO.RPCGRPCSTATUSCODEVALUES_NOT_FOUND=aO.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED=aO.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT=aO.RPCGRPCSTATUSCODEVALUES_UNKNOWN=aO.RPCGRPCSTATUSCODEVALUES_CANCELLED=aO.RPCGRPCSTATUSCODEVALUES_OK=aO.MessagingOperationValues=aO.MESSAGINGOPERATIONVALUES_PROCESS=void 0;var m6=$Y(),WU="aws.lambda.invoked_arn",KU="db.system",zU="db.connection_string",GU="db.user",BU="db.jdbc.driver_classname",HU="db.name",VU="db.statement",FU="db.operation",wU="db.mssql.instance_name",DU="db.cassandra.keyspace",UU="db.cassandra.page_size",jU="db.cassandra.consistency_level",qU="db.cassandra.table",LU="db.cassandra.idempotence",OU="db.cassandra.speculative_execution_count",CU="db.cassandra.coordinator.id",PU="db.cassandra.coordinator.dc",kU="db.hbase.namespace",MU="db.redis.database_index",RU="db.mongodb.collection",AU="db.sql.table",IU="exception.type",NU="exception.message",TU="exception.stacktrace",fU="exception.escaped",EU="faas.trigger",yU="faas.execution",hU="faas.document.collection",SU="faas.document.operation",_U="faas.document.time",vU="faas.document.name",bU="faas.time",xU="faas.cron",gU="faas.coldstart",dU="faas.invoked_name",cU="faas.invoked_provider",mU="faas.invoked_region",uU="net.transport",lU="net.peer.ip",pU="net.peer.port",iU="net.peer.name",oU="net.host.ip",nU="net.host.port",aU="net.host.name",sU="net.host.connection.type",rU="net.host.connection.subtype",tU="net.host.carrier.name",eU="net.host.carrier.mcc",Zj="net.host.carrier.mnc",Jj="net.host.carrier.icc",Qj="peer.service",$j="enduser.id",Xj="enduser.role",Yj="enduser.scope",Wj="thread.id",Kj="thread.name",zj="code.function",Gj="code.namespace",Bj="code.filepath",Hj="code.lineno",Vj="http.method",Fj="http.url",wj="http.target",Dj="http.host",Uj="http.scheme",jj="http.status_code",qj="http.flavor",Lj="http.user_agent",Oj="http.request_content_length",Cj="http.request_content_length_uncompressed",Pj="http.response_content_length",kj="http.response_content_length_uncompressed",Mj="http.server_name",Rj="http.route",Aj="http.client_ip",Ij="aws.dynamodb.table_names",Nj="aws.dynamodb.consumed_capacity",Tj="aws.dynamodb.item_collection_metrics",fj="aws.dynamodb.provisioned_read_capacity",Ej="aws.dynamodb.provisioned_write_capacity",yj="aws.dynamodb.consistent_read",hj="aws.dynamodb.projection",Sj="aws.dynamodb.limit",_j="aws.dynamodb.attributes_to_get",vj="aws.dynamodb.index_name",bj="aws.dynamodb.select",xj="aws.dynamodb.global_secondary_indexes",gj="aws.dynamodb.local_secondary_indexes",dj="aws.dynamodb.exclusive_start_table",cj="aws.dynamodb.table_count",mj="aws.dynamodb.scan_forward",uj="aws.dynamodb.segment",lj="aws.dynamodb.total_segments",pj="aws.dynamodb.count",ij="aws.dynamodb.scanned_count",oj="aws.dynamodb.attribute_definitions",nj="aws.dynamodb.global_secondary_index_updates",aj="messaging.system",sj="messaging.destination",rj="messaging.destination_kind",tj="messaging.temp_destination",ej="messaging.protocol",Zq="messaging.protocol_version",Jq="messaging.url",Qq="messaging.message_id",$q="messaging.conversation_id",Xq="messaging.message_payload_size_bytes",Yq="messaging.message_payload_compressed_size_bytes",Wq="messaging.operation",Kq="messaging.consumer_id",zq="messaging.rabbitmq.routing_key",Gq="messaging.kafka.message_key",Bq="messaging.kafka.consumer_group",Hq="messaging.kafka.client_id",Vq="messaging.kafka.partition",Fq="messaging.kafka.tombstone",wq="rpc.system",Dq="rpc.service",Uq="rpc.method",jq="rpc.grpc.status_code",qq="rpc.jsonrpc.version",Lq="rpc.jsonrpc.request_id",Oq="rpc.jsonrpc.error_code",Cq="rpc.jsonrpc.error_message",Pq="message.type",kq="message.id",Mq="message.compressed_size",Rq="message.uncompressed_size";aO.SEMATTRS_AWS_LAMBDA_INVOKED_ARN=WU;aO.SEMATTRS_DB_SYSTEM=KU;aO.SEMATTRS_DB_CONNECTION_STRING=zU;aO.SEMATTRS_DB_USER=GU;aO.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME=BU;aO.SEMATTRS_DB_NAME=HU;aO.SEMATTRS_DB_STATEMENT=VU;aO.SEMATTRS_DB_OPERATION=FU;aO.SEMATTRS_DB_MSSQL_INSTANCE_NAME=wU;aO.SEMATTRS_DB_CASSANDRA_KEYSPACE=DU;aO.SEMATTRS_DB_CASSANDRA_PAGE_SIZE=UU;aO.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL=jU;aO.SEMATTRS_DB_CASSANDRA_TABLE=qU;aO.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE=LU;aO.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT=OU;aO.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID=CU;aO.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC=PU;aO.SEMATTRS_DB_HBASE_NAMESPACE=kU;aO.SEMATTRS_DB_REDIS_DATABASE_INDEX=MU;aO.SEMATTRS_DB_MONGODB_COLLECTION=RU;aO.SEMATTRS_DB_SQL_TABLE=AU;aO.SEMATTRS_EXCEPTION_TYPE=IU;aO.SEMATTRS_EXCEPTION_MESSAGE=NU;aO.SEMATTRS_EXCEPTION_STACKTRACE=TU;aO.SEMATTRS_EXCEPTION_ESCAPED=fU;aO.SEMATTRS_FAAS_TRIGGER=EU;aO.SEMATTRS_FAAS_EXECUTION=yU;aO.SEMATTRS_FAAS_DOCUMENT_COLLECTION=hU;aO.SEMATTRS_FAAS_DOCUMENT_OPERATION=SU;aO.SEMATTRS_FAAS_DOCUMENT_TIME=_U;aO.SEMATTRS_FAAS_DOCUMENT_NAME=vU;aO.SEMATTRS_FAAS_TIME=bU;aO.SEMATTRS_FAAS_CRON=xU;aO.SEMATTRS_FAAS_COLDSTART=gU;aO.SEMATTRS_FAAS_INVOKED_NAME=dU;aO.SEMATTRS_FAAS_INVOKED_PROVIDER=cU;aO.SEMATTRS_FAAS_INVOKED_REGION=mU;aO.SEMATTRS_NET_TRANSPORT=uU;aO.SEMATTRS_NET_PEER_IP=lU;aO.SEMATTRS_NET_PEER_PORT=pU;aO.SEMATTRS_NET_PEER_NAME=iU;aO.SEMATTRS_NET_HOST_IP=oU;aO.SEMATTRS_NET_HOST_PORT=nU;aO.SEMATTRS_NET_HOST_NAME=aU;aO.SEMATTRS_NET_HOST_CONNECTION_TYPE=sU;aO.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE=rU;aO.SEMATTRS_NET_HOST_CARRIER_NAME=tU;aO.SEMATTRS_NET_HOST_CARRIER_MCC=eU;aO.SEMATTRS_NET_HOST_CARRIER_MNC=Zj;aO.SEMATTRS_NET_HOST_CARRIER_ICC=Jj;aO.SEMATTRS_PEER_SERVICE=Qj;aO.SEMATTRS_ENDUSER_ID=$j;aO.SEMATTRS_ENDUSER_ROLE=Xj;aO.SEMATTRS_ENDUSER_SCOPE=Yj;aO.SEMATTRS_THREAD_ID=Wj;aO.SEMATTRS_THREAD_NAME=Kj;aO.SEMATTRS_CODE_FUNCTION=zj;aO.SEMATTRS_CODE_NAMESPACE=Gj;aO.SEMATTRS_CODE_FILEPATH=Bj;aO.SEMATTRS_CODE_LINENO=Hj;aO.SEMATTRS_HTTP_METHOD=Vj;aO.SEMATTRS_HTTP_URL=Fj;aO.SEMATTRS_HTTP_TARGET=wj;aO.SEMATTRS_HTTP_HOST=Dj;aO.SEMATTRS_HTTP_SCHEME=Uj;aO.SEMATTRS_HTTP_STATUS_CODE=jj;aO.SEMATTRS_HTTP_FLAVOR=qj;aO.SEMATTRS_HTTP_USER_AGENT=Lj;aO.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH=Oj;aO.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED=Cj;aO.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH=Pj;aO.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED=kj;aO.SEMATTRS_HTTP_SERVER_NAME=Mj;aO.SEMATTRS_HTTP_ROUTE=Rj;aO.SEMATTRS_HTTP_CLIENT_IP=Aj;aO.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES=Ij;aO.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY=Nj;aO.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS=Tj;aO.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY=fj;aO.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY=Ej;aO.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ=yj;aO.SEMATTRS_AWS_DYNAMODB_PROJECTION=hj;aO.SEMATTRS_AWS_DYNAMODB_LIMIT=Sj;aO.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET=_j;aO.SEMATTRS_AWS_DYNAMODB_INDEX_NAME=vj;aO.SEMATTRS_AWS_DYNAMODB_SELECT=bj;aO.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES=xj;aO.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES=gj;aO.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE=dj;aO.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT=cj;aO.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD=mj;aO.SEMATTRS_AWS_DYNAMODB_SEGMENT=uj;aO.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS=lj;aO.SEMATTRS_AWS_DYNAMODB_COUNT=pj;aO.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT=ij;aO.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS=oj;aO.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES=nj;aO.SEMATTRS_MESSAGING_SYSTEM=aj;aO.SEMATTRS_MESSAGING_DESTINATION=sj;aO.SEMATTRS_MESSAGING_DESTINATION_KIND=rj;aO.SEMATTRS_MESSAGING_TEMP_DESTINATION=tj;aO.SEMATTRS_MESSAGING_PROTOCOL=ej;aO.SEMATTRS_MESSAGING_PROTOCOL_VERSION=Zq;aO.SEMATTRS_MESSAGING_URL=Jq;aO.SEMATTRS_MESSAGING_MESSAGE_ID=Qq;aO.SEMATTRS_MESSAGING_CONVERSATION_ID=$q;aO.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES=Xq;aO.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES=Yq;aO.SEMATTRS_MESSAGING_OPERATION=Wq;aO.SEMATTRS_MESSAGING_CONSUMER_ID=Kq;aO.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY=zq;aO.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY=Gq;aO.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP=Bq;aO.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID=Hq;aO.SEMATTRS_MESSAGING_KAFKA_PARTITION=Vq;aO.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE=Fq;aO.SEMATTRS_RPC_SYSTEM=wq;aO.SEMATTRS_RPC_SERVICE=Dq;aO.SEMATTRS_RPC_METHOD=Uq;aO.SEMATTRS_RPC_GRPC_STATUS_CODE=jq;aO.SEMATTRS_RPC_JSONRPC_VERSION=qq;aO.SEMATTRS_RPC_JSONRPC_REQUEST_ID=Lq;aO.SEMATTRS_RPC_JSONRPC_ERROR_CODE=Oq;aO.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE=Cq;aO.SEMATTRS_MESSAGE_TYPE=Pq;aO.SEMATTRS_MESSAGE_ID=kq;aO.SEMATTRS_MESSAGE_COMPRESSED_SIZE=Mq;aO.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE=Rq;aO.SemanticAttributes=(0,m6.createConstMap)([WU,KU,zU,GU,BU,HU,VU,FU,wU,DU,UU,jU,qU,LU,OU,CU,PU,kU,MU,RU,AU,IU,NU,TU,fU,EU,yU,hU,SU,_U,vU,bU,xU,gU,dU,cU,mU,uU,lU,pU,iU,oU,nU,aU,sU,rU,tU,eU,Zj,Jj,Qj,$j,Xj,Yj,Wj,Kj,zj,Gj,Bj,Hj,Vj,Fj,wj,Dj,Uj,jj,qj,Lj,Oj,Cj,Pj,kj,Mj,Rj,Aj,Ij,Nj,Tj,fj,Ej,yj,hj,Sj,_j,vj,bj,xj,gj,dj,cj,mj,uj,lj,pj,ij,oj,nj,aj,sj,rj,tj,ej,Zq,Jq,Qq,$q,Xq,Yq,Wq,Kq,zq,Gq,Bq,Hq,Vq,Fq,wq,Dq,Uq,jq,qq,Lq,Oq,Cq,Pq,kq,Mq,Rq]);var Aq="other_sql",Iq="mssql",Nq="mysql",Tq="oracle",fq="db2",Eq="postgresql",yq="redshift",hq="hive",Sq="cloudscape",_q="hsqldb",vq="progress",bq="maxdb",xq="hanadb",gq="ingres",dq="firstsql",cq="edb",mq="cache",uq="adabas",lq="firebird",pq="derby",iq="filemaker",oq="informix",nq="instantdb",aq="interbase",sq="mariadb",rq="netezza",tq="pervasive",eq="pointbase",ZL="sqlite",JL="sybase",QL="teradata",$L="vertica",XL="h2",YL="coldfusion",WL="cassandra",KL="hbase",zL="mongodb",GL="redis",BL="couchbase",HL="couchdb",VL="cosmosdb",FL="dynamodb",wL="neo4j",DL="geode",UL="elasticsearch",jL="memcached",qL="cockroachdb";aO.DBSYSTEMVALUES_OTHER_SQL=Aq;aO.DBSYSTEMVALUES_MSSQL=Iq;aO.DBSYSTEMVALUES_MYSQL=Nq;aO.DBSYSTEMVALUES_ORACLE=Tq;aO.DBSYSTEMVALUES_DB2=fq;aO.DBSYSTEMVALUES_POSTGRESQL=Eq;aO.DBSYSTEMVALUES_REDSHIFT=yq;aO.DBSYSTEMVALUES_HIVE=hq;aO.DBSYSTEMVALUES_CLOUDSCAPE=Sq;aO.DBSYSTEMVALUES_HSQLDB=_q;aO.DBSYSTEMVALUES_PROGRESS=vq;aO.DBSYSTEMVALUES_MAXDB=bq;aO.DBSYSTEMVALUES_HANADB=xq;aO.DBSYSTEMVALUES_INGRES=gq;aO.DBSYSTEMVALUES_FIRSTSQL=dq;aO.DBSYSTEMVALUES_EDB=cq;aO.DBSYSTEMVALUES_CACHE=mq;aO.DBSYSTEMVALUES_ADABAS=uq;aO.DBSYSTEMVALUES_FIREBIRD=lq;aO.DBSYSTEMVALUES_DERBY=pq;aO.DBSYSTEMVALUES_FILEMAKER=iq;aO.DBSYSTEMVALUES_INFORMIX=oq;aO.DBSYSTEMVALUES_INSTANTDB=nq;aO.DBSYSTEMVALUES_INTERBASE=aq;aO.DBSYSTEMVALUES_MARIADB=sq;aO.DBSYSTEMVALUES_NETEZZA=rq;aO.DBSYSTEMVALUES_PERVASIVE=tq;aO.DBSYSTEMVALUES_POINTBASE=eq;aO.DBSYSTEMVALUES_SQLITE=ZL;aO.DBSYSTEMVALUES_SYBASE=JL;aO.DBSYSTEMVALUES_TERADATA=QL;aO.DBSYSTEMVALUES_VERTICA=$L;aO.DBSYSTEMVALUES_H2=XL;aO.DBSYSTEMVALUES_COLDFUSION=YL;aO.DBSYSTEMVALUES_CASSANDRA=WL;aO.DBSYSTEMVALUES_HBASE=KL;aO.DBSYSTEMVALUES_MONGODB=zL;aO.DBSYSTEMVALUES_REDIS=GL;aO.DBSYSTEMVALUES_COUCHBASE=BL;aO.DBSYSTEMVALUES_COUCHDB=HL;aO.DBSYSTEMVALUES_COSMOSDB=VL;aO.DBSYSTEMVALUES_DYNAMODB=FL;aO.DBSYSTEMVALUES_NEO4J=wL;aO.DBSYSTEMVALUES_GEODE=DL;aO.DBSYSTEMVALUES_ELASTICSEARCH=UL;aO.DBSYSTEMVALUES_MEMCACHED=jL;aO.DBSYSTEMVALUES_COCKROACHDB=qL;aO.DbSystemValues=(0,m6.createConstMap)([Aq,Iq,Nq,Tq,fq,Eq,yq,hq,Sq,_q,vq,bq,xq,gq,dq,cq,mq,uq,lq,pq,iq,oq,nq,aq,sq,rq,tq,eq,ZL,JL,QL,$L,XL,YL,WL,KL,zL,GL,BL,HL,VL,FL,wL,DL,UL,jL,qL]);var LL="all",OL="each_quorum",CL="quorum",PL="local_quorum",kL="one",ML="two",RL="three",AL="local_one",IL="any",NL="serial",TL="local_serial";aO.DBCASSANDRACONSISTENCYLEVELVALUES_ALL=LL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM=OL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM=CL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM=PL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_ONE=kL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_TWO=ML;aO.DBCASSANDRACONSISTENCYLEVELVALUES_THREE=RL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE=AL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_ANY=IL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL=NL;aO.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL=TL;aO.DbCassandraConsistencyLevelValues=(0,m6.createConstMap)([LL,OL,CL,PL,kL,ML,RL,AL,IL,NL,TL]);var fL="datasource",EL="http",yL="pubsub",hL="timer",SL="other";aO.FAASTRIGGERVALUES_DATASOURCE=fL;aO.FAASTRIGGERVALUES_HTTP=EL;aO.FAASTRIGGERVALUES_PUBSUB=yL;aO.FAASTRIGGERVALUES_TIMER=hL;aO.FAASTRIGGERVALUES_OTHER=SL;aO.FaasTriggerValues=(0,m6.createConstMap)([fL,EL,yL,hL,SL]);var _L="insert",vL="edit",bL="delete";aO.FAASDOCUMENTOPERATIONVALUES_INSERT=_L;aO.FAASDOCUMENTOPERATIONVALUES_EDIT=vL;aO.FAASDOCUMENTOPERATIONVALUES_DELETE=bL;aO.FaasDocumentOperationValues=(0,m6.createConstMap)([_L,vL,bL]);var xL="alibaba_cloud",gL="aws",dL="azure",cL="gcp";aO.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD=xL;aO.FAASINVOKEDPROVIDERVALUES_AWS=gL;aO.FAASINVOKEDPROVIDERVALUES_AZURE=dL;aO.FAASINVOKEDPROVIDERVALUES_GCP=cL;aO.FaasInvokedProviderValues=(0,m6.createConstMap)([xL,gL,dL,cL]);var mL="ip_tcp",uL="ip_udp",lL="ip",pL="unix",iL="pipe",oL="inproc",nL="other";aO.NETTRANSPORTVALUES_IP_TCP=mL;aO.NETTRANSPORTVALUES_IP_UDP=uL;aO.NETTRANSPORTVALUES_IP=lL;aO.NETTRANSPORTVALUES_UNIX=pL;aO.NETTRANSPORTVALUES_PIPE=iL;aO.NETTRANSPORTVALUES_INPROC=oL;aO.NETTRANSPORTVALUES_OTHER=nL;aO.NetTransportValues=(0,m6.createConstMap)([mL,uL,lL,pL,iL,oL,nL]);var aL="wifi",sL="wired",rL="cell",tL="unavailable",eL="unknown";aO.NETHOSTCONNECTIONTYPEVALUES_WIFI=aL;aO.NETHOSTCONNECTIONTYPEVALUES_WIRED=sL;aO.NETHOSTCONNECTIONTYPEVALUES_CELL=rL;aO.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE=tL;aO.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN=eL;aO.NetHostConnectionTypeValues=(0,m6.createConstMap)([aL,sL,rL,tL,eL]);var ZO="gprs",JO="edge",QO="umts",$O="cdma",XO="evdo_0",YO="evdo_a",WO="cdma2000_1xrtt",KO="hsdpa",zO="hsupa",GO="hspa",BO="iden",HO="evdo_b",VO="lte",FO="ehrpd",wO="hspap",DO="gsm",UO="td_scdma",jO="iwlan",qO="nr",LO="nrnsa",OO="lte_ca";aO.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS=ZO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE=JO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS=QO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA=$O;aO.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0=XO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A=YO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT=WO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA=KO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA=zO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA=GO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN=BO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B=HO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_LTE=VO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD=FO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP=wO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_GSM=DO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA=UO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN=jO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_NR=qO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA=LO;aO.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA=OO;aO.NetHostConnectionSubtypeValues=(0,m6.createConstMap)([ZO,JO,QO,$O,XO,YO,WO,KO,zO,GO,BO,HO,VO,FO,wO,DO,UO,jO,qO,LO,OO]);var CO="1.0",PO="1.1",kO="2.0",MO="SPDY",RO="QUIC";aO.HTTPFLAVORVALUES_HTTP_1_0=CO;aO.HTTPFLAVORVALUES_HTTP_1_1=PO;aO.HTTPFLAVORVALUES_HTTP_2_0=kO;aO.HTTPFLAVORVALUES_SPDY=MO;aO.HTTPFLAVORVALUES_QUIC=RO;aO.HttpFlavorValues={HTTP_1_0:CO,HTTP_1_1:PO,HTTP_2_0:kO,SPDY:MO,QUIC:RO};var AO="queue",IO="topic";aO.MESSAGINGDESTINATIONKINDVALUES_QUEUE=AO;aO.MESSAGINGDESTINATIONKINDVALUES_TOPIC=IO;aO.MessagingDestinationKindValues=(0,m6.createConstMap)([AO,IO]);var NO="receive",TO="process";aO.MESSAGINGOPERATIONVALUES_RECEIVE=NO;aO.MESSAGINGOPERATIONVALUES_PROCESS=TO;aO.MessagingOperationValues=(0,m6.createConstMap)([NO,TO]);var fO=0,EO=1,yO=2,hO=3,SO=4,_O=5,vO=6,bO=7,xO=8,gO=9,dO=10,cO=11,mO=12,uO=13,lO=14,pO=15,iO=16;aO.RPCGRPCSTATUSCODEVALUES_OK=fO;aO.RPCGRPCSTATUSCODEVALUES_CANCELLED=EO;aO.RPCGRPCSTATUSCODEVALUES_UNKNOWN=yO;aO.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT=hO;aO.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED=SO;aO.RPCGRPCSTATUSCODEVALUES_NOT_FOUND=_O;aO.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS=vO;aO.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED=bO;aO.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED=xO;aO.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION=gO;aO.RPCGRPCSTATUSCODEVALUES_ABORTED=dO;aO.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE=cO;aO.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED=mO;aO.RPCGRPCSTATUSCODEVALUES_INTERNAL=uO;aO.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE=lO;aO.RPCGRPCSTATUSCODEVALUES_DATA_LOSS=pO;aO.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED=iO;aO.RpcGrpcStatusCodeValues={OK:fO,CANCELLED:EO,UNKNOWN:yO,INVALID_ARGUMENT:hO,DEADLINE_EXCEEDED:SO,NOT_FOUND:_O,ALREADY_EXISTS:vO,PERMISSION_DENIED:bO,RESOURCE_EXHAUSTED:xO,FAILED_PRECONDITION:gO,ABORTED:dO,OUT_OF_RANGE:cO,UNIMPLEMENTED:mO,INTERNAL:uO,UNAVAILABLE:lO,DATA_LOSS:pO,UNAUTHENTICATED:iO};var oO="SENT",nO="RECEIVED";aO.MESSAGETYPEVALUES_SENT=oO;aO.MESSAGETYPEVALUES_RECEIVED=nO;aO.MessageTypeValues=(0,m6.createConstMap)([oO,nO])});var $C=w((L7)=>{var s10=L7&&L7.__createBinding||(Object.create?function(Z,J,Q,$){if($===void 0)$=Q;var X=Object.getOwnPropertyDescriptor(J,Q);if(!X||("get"in X?!J.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return J[Q]}};Object.defineProperty(Z,$,X)}:function(Z,J,Q,$){if($===void 0)$=Q;Z[$]=J[Q]}),r10=L7&&L7.__exportStar||function(Z,J){for(var Q in Z)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(J,Q))s10(J,Z,Q)};Object.defineProperty(L7,"__esModule",{value:!0});r10(QC(),L7)});var y2=w((N2)=>{Object.defineProperty(N2,"__esModule",{value:!0});N2.SEMRESATTRS_K8S_STATEFULSET_NAME=N2.SEMRESATTRS_K8S_STATEFULSET_UID=N2.SEMRESATTRS_K8S_DEPLOYMENT_NAME=N2.SEMRESATTRS_K8S_DEPLOYMENT_UID=N2.SEMRESATTRS_K8S_REPLICASET_NAME=N2.SEMRESATTRS_K8S_REPLICASET_UID=N2.SEMRESATTRS_K8S_CONTAINER_NAME=N2.SEMRESATTRS_K8S_POD_NAME=N2.SEMRESATTRS_K8S_POD_UID=N2.SEMRESATTRS_K8S_NAMESPACE_NAME=N2.SEMRESATTRS_K8S_NODE_UID=N2.SEMRESATTRS_K8S_NODE_NAME=N2.SEMRESATTRS_K8S_CLUSTER_NAME=N2.SEMRESATTRS_HOST_IMAGE_VERSION=N2.SEMRESATTRS_HOST_IMAGE_ID=N2.SEMRESATTRS_HOST_IMAGE_NAME=N2.SEMRESATTRS_HOST_ARCH=N2.SEMRESATTRS_HOST_TYPE=N2.SEMRESATTRS_HOST_NAME=N2.SEMRESATTRS_HOST_ID=N2.SEMRESATTRS_FAAS_MAX_MEMORY=N2.SEMRESATTRS_FAAS_INSTANCE=N2.SEMRESATTRS_FAAS_VERSION=N2.SEMRESATTRS_FAAS_ID=N2.SEMRESATTRS_FAAS_NAME=N2.SEMRESATTRS_DEVICE_MODEL_NAME=N2.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER=N2.SEMRESATTRS_DEVICE_ID=N2.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT=N2.SEMRESATTRS_CONTAINER_IMAGE_TAG=N2.SEMRESATTRS_CONTAINER_IMAGE_NAME=N2.SEMRESATTRS_CONTAINER_RUNTIME=N2.SEMRESATTRS_CONTAINER_ID=N2.SEMRESATTRS_CONTAINER_NAME=N2.SEMRESATTRS_AWS_LOG_STREAM_ARNS=N2.SEMRESATTRS_AWS_LOG_STREAM_NAMES=N2.SEMRESATTRS_AWS_LOG_GROUP_ARNS=N2.SEMRESATTRS_AWS_LOG_GROUP_NAMES=N2.SEMRESATTRS_AWS_EKS_CLUSTER_ARN=N2.SEMRESATTRS_AWS_ECS_TASK_REVISION=N2.SEMRESATTRS_AWS_ECS_TASK_FAMILY=N2.SEMRESATTRS_AWS_ECS_TASK_ARN=N2.SEMRESATTRS_AWS_ECS_LAUNCHTYPE=N2.SEMRESATTRS_AWS_ECS_CLUSTER_ARN=N2.SEMRESATTRS_AWS_ECS_CONTAINER_ARN=N2.SEMRESATTRS_CLOUD_PLATFORM=N2.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE=N2.SEMRESATTRS_CLOUD_REGION=N2.SEMRESATTRS_CLOUD_ACCOUNT_ID=N2.SEMRESATTRS_CLOUD_PROVIDER=void 0;N2.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE=N2.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE=N2.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS=N2.CLOUDPLATFORMVALUES_AZURE_AKS=N2.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES=N2.CLOUDPLATFORMVALUES_AZURE_VM=N2.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK=N2.CLOUDPLATFORMVALUES_AWS_LAMBDA=N2.CLOUDPLATFORMVALUES_AWS_EKS=N2.CLOUDPLATFORMVALUES_AWS_ECS=N2.CLOUDPLATFORMVALUES_AWS_EC2=N2.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC=N2.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS=N2.CloudProviderValues=N2.CLOUDPROVIDERVALUES_GCP=N2.CLOUDPROVIDERVALUES_AZURE=N2.CLOUDPROVIDERVALUES_AWS=N2.CLOUDPROVIDERVALUES_ALIBABA_CLOUD=N2.SemanticResourceAttributes=N2.SEMRESATTRS_WEBENGINE_DESCRIPTION=N2.SEMRESATTRS_WEBENGINE_VERSION=N2.SEMRESATTRS_WEBENGINE_NAME=N2.SEMRESATTRS_TELEMETRY_AUTO_VERSION=N2.SEMRESATTRS_TELEMETRY_SDK_VERSION=N2.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE=N2.SEMRESATTRS_TELEMETRY_SDK_NAME=N2.SEMRESATTRS_SERVICE_VERSION=N2.SEMRESATTRS_SERVICE_INSTANCE_ID=N2.SEMRESATTRS_SERVICE_NAMESPACE=N2.SEMRESATTRS_SERVICE_NAME=N2.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION=N2.SEMRESATTRS_PROCESS_RUNTIME_VERSION=N2.SEMRESATTRS_PROCESS_RUNTIME_NAME=N2.SEMRESATTRS_PROCESS_OWNER=N2.SEMRESATTRS_PROCESS_COMMAND_ARGS=N2.SEMRESATTRS_PROCESS_COMMAND_LINE=N2.SEMRESATTRS_PROCESS_COMMAND=N2.SEMRESATTRS_PROCESS_EXECUTABLE_PATH=N2.SEMRESATTRS_PROCESS_EXECUTABLE_NAME=N2.SEMRESATTRS_PROCESS_PID=N2.SEMRESATTRS_OS_VERSION=N2.SEMRESATTRS_OS_NAME=N2.SEMRESATTRS_OS_DESCRIPTION=N2.SEMRESATTRS_OS_TYPE=N2.SEMRESATTRS_K8S_CRONJOB_NAME=N2.SEMRESATTRS_K8S_CRONJOB_UID=N2.SEMRESATTRS_K8S_JOB_NAME=N2.SEMRESATTRS_K8S_JOB_UID=N2.SEMRESATTRS_K8S_DAEMONSET_NAME=N2.SEMRESATTRS_K8S_DAEMONSET_UID=void 0;N2.TelemetrySdkLanguageValues=N2.TELEMETRYSDKLANGUAGEVALUES_WEBJS=N2.TELEMETRYSDKLANGUAGEVALUES_RUBY=N2.TELEMETRYSDKLANGUAGEVALUES_PYTHON=N2.TELEMETRYSDKLANGUAGEVALUES_PHP=N2.TELEMETRYSDKLANGUAGEVALUES_NODEJS=N2.TELEMETRYSDKLANGUAGEVALUES_JAVA=N2.TELEMETRYSDKLANGUAGEVALUES_GO=N2.TELEMETRYSDKLANGUAGEVALUES_ERLANG=N2.TELEMETRYSDKLANGUAGEVALUES_DOTNET=N2.TELEMETRYSDKLANGUAGEVALUES_CPP=N2.OsTypeValues=N2.OSTYPEVALUES_Z_OS=N2.OSTYPEVALUES_SOLARIS=N2.OSTYPEVALUES_AIX=N2.OSTYPEVALUES_HPUX=N2.OSTYPEVALUES_DRAGONFLYBSD=N2.OSTYPEVALUES_OPENBSD=N2.OSTYPEVALUES_NETBSD=N2.OSTYPEVALUES_FREEBSD=N2.OSTYPEVALUES_DARWIN=N2.OSTYPEVALUES_LINUX=N2.OSTYPEVALUES_WINDOWS=N2.HostArchValues=N2.HOSTARCHVALUES_X86=N2.HOSTARCHVALUES_PPC64=N2.HOSTARCHVALUES_PPC32=N2.HOSTARCHVALUES_IA64=N2.HOSTARCHVALUES_ARM64=N2.HOSTARCHVALUES_ARM32=N2.HOSTARCHVALUES_AMD64=N2.AwsEcsLaunchtypeValues=N2.AWSECSLAUNCHTYPEVALUES_FARGATE=N2.AWSECSLAUNCHTYPEVALUES_EC2=N2.CloudPlatformValues=N2.CLOUDPLATFORMVALUES_GCP_APP_ENGINE=N2.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS=N2.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE=N2.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN=void 0;var O7=$Y(),XC="cloud.provider",YC="cloud.account.id",WC="cloud.region",KC="cloud.availability_zone",zC="cloud.platform",GC="aws.ecs.container.arn",BC="aws.ecs.cluster.arn",HC="aws.ecs.launchtype",VC="aws.ecs.task.arn",FC="aws.ecs.task.family",wC="aws.ecs.task.revision",DC="aws.eks.cluster.arn",UC="aws.log.group.names",jC="aws.log.group.arns",qC="aws.log.stream.names",LC="aws.log.stream.arns",OC="container.name",CC="container.id",PC="container.runtime",kC="container.image.name",MC="container.image.tag",RC="deployment.environment",AC="device.id",IC="device.model.identifier",NC="device.model.name",TC="faas.name",fC="faas.id",EC="faas.version",yC="faas.instance",hC="faas.max_memory",SC="host.id",_C="host.name",vC="host.type",bC="host.arch",xC="host.image.name",gC="host.image.id",dC="host.image.version",cC="k8s.cluster.name",mC="k8s.node.name",uC="k8s.node.uid",lC="k8s.namespace.name",pC="k8s.pod.uid",iC="k8s.pod.name",oC="k8s.container.name",nC="k8s.replicaset.uid",aC="k8s.replicaset.name",sC="k8s.deployment.uid",rC="k8s.deployment.name",tC="k8s.statefulset.uid",eC="k8s.statefulset.name",ZP="k8s.daemonset.uid",JP="k8s.daemonset.name",QP="k8s.job.uid",$P="k8s.job.name",XP="k8s.cronjob.uid",YP="k8s.cronjob.name",WP="os.type",KP="os.description",zP="os.name",GP="os.version",BP="process.pid",HP="process.executable.name",VP="process.executable.path",FP="process.command",wP="process.command_line",DP="process.command_args",UP="process.owner",jP="process.runtime.name",qP="process.runtime.version",LP="process.runtime.description",OP="service.name",CP="service.namespace",PP="service.instance.id",kP="service.version",MP="telemetry.sdk.name",RP="telemetry.sdk.language",AP="telemetry.sdk.version",IP="telemetry.auto.version",NP="webengine.name",TP="webengine.version",fP="webengine.description";N2.SEMRESATTRS_CLOUD_PROVIDER=XC;N2.SEMRESATTRS_CLOUD_ACCOUNT_ID=YC;N2.SEMRESATTRS_CLOUD_REGION=WC;N2.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE=KC;N2.SEMRESATTRS_CLOUD_PLATFORM=zC;N2.SEMRESATTRS_AWS_ECS_CONTAINER_ARN=GC;N2.SEMRESATTRS_AWS_ECS_CLUSTER_ARN=BC;N2.SEMRESATTRS_AWS_ECS_LAUNCHTYPE=HC;N2.SEMRESATTRS_AWS_ECS_TASK_ARN=VC;N2.SEMRESATTRS_AWS_ECS_TASK_FAMILY=FC;N2.SEMRESATTRS_AWS_ECS_TASK_REVISION=wC;N2.SEMRESATTRS_AWS_EKS_CLUSTER_ARN=DC;N2.SEMRESATTRS_AWS_LOG_GROUP_NAMES=UC;N2.SEMRESATTRS_AWS_LOG_GROUP_ARNS=jC;N2.SEMRESATTRS_AWS_LOG_STREAM_NAMES=qC;N2.SEMRESATTRS_AWS_LOG_STREAM_ARNS=LC;N2.SEMRESATTRS_CONTAINER_NAME=OC;N2.SEMRESATTRS_CONTAINER_ID=CC;N2.SEMRESATTRS_CONTAINER_RUNTIME=PC;N2.SEMRESATTRS_CONTAINER_IMAGE_NAME=kC;N2.SEMRESATTRS_CONTAINER_IMAGE_TAG=MC;N2.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT=RC;N2.SEMRESATTRS_DEVICE_ID=AC;N2.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER=IC;N2.SEMRESATTRS_DEVICE_MODEL_NAME=NC;N2.SEMRESATTRS_FAAS_NAME=TC;N2.SEMRESATTRS_FAAS_ID=fC;N2.SEMRESATTRS_FAAS_VERSION=EC;N2.SEMRESATTRS_FAAS_INSTANCE=yC;N2.SEMRESATTRS_FAAS_MAX_MEMORY=hC;N2.SEMRESATTRS_HOST_ID=SC;N2.SEMRESATTRS_HOST_NAME=_C;N2.SEMRESATTRS_HOST_TYPE=vC;N2.SEMRESATTRS_HOST_ARCH=bC;N2.SEMRESATTRS_HOST_IMAGE_NAME=xC;N2.SEMRESATTRS_HOST_IMAGE_ID=gC;N2.SEMRESATTRS_HOST_IMAGE_VERSION=dC;N2.SEMRESATTRS_K8S_CLUSTER_NAME=cC;N2.SEMRESATTRS_K8S_NODE_NAME=mC;N2.SEMRESATTRS_K8S_NODE_UID=uC;N2.SEMRESATTRS_K8S_NAMESPACE_NAME=lC;N2.SEMRESATTRS_K8S_POD_UID=pC;N2.SEMRESATTRS_K8S_POD_NAME=iC;N2.SEMRESATTRS_K8S_CONTAINER_NAME=oC;N2.SEMRESATTRS_K8S_REPLICASET_UID=nC;N2.SEMRESATTRS_K8S_REPLICASET_NAME=aC;N2.SEMRESATTRS_K8S_DEPLOYMENT_UID=sC;N2.SEMRESATTRS_K8S_DEPLOYMENT_NAME=rC;N2.SEMRESATTRS_K8S_STATEFULSET_UID=tC;N2.SEMRESATTRS_K8S_STATEFULSET_NAME=eC;N2.SEMRESATTRS_K8S_DAEMONSET_UID=ZP;N2.SEMRESATTRS_K8S_DAEMONSET_NAME=JP;N2.SEMRESATTRS_K8S_JOB_UID=QP;N2.SEMRESATTRS_K8S_JOB_NAME=$P;N2.SEMRESATTRS_K8S_CRONJOB_UID=XP;N2.SEMRESATTRS_K8S_CRONJOB_NAME=YP;N2.SEMRESATTRS_OS_TYPE=WP;N2.SEMRESATTRS_OS_DESCRIPTION=KP;N2.SEMRESATTRS_OS_NAME=zP;N2.SEMRESATTRS_OS_VERSION=GP;N2.SEMRESATTRS_PROCESS_PID=BP;N2.SEMRESATTRS_PROCESS_EXECUTABLE_NAME=HP;N2.SEMRESATTRS_PROCESS_EXECUTABLE_PATH=VP;N2.SEMRESATTRS_PROCESS_COMMAND=FP;N2.SEMRESATTRS_PROCESS_COMMAND_LINE=wP;N2.SEMRESATTRS_PROCESS_COMMAND_ARGS=DP;N2.SEMRESATTRS_PROCESS_OWNER=UP;N2.SEMRESATTRS_PROCESS_RUNTIME_NAME=jP;N2.SEMRESATTRS_PROCESS_RUNTIME_VERSION=qP;N2.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION=LP;N2.SEMRESATTRS_SERVICE_NAME=OP;N2.SEMRESATTRS_SERVICE_NAMESPACE=CP;N2.SEMRESATTRS_SERVICE_INSTANCE_ID=PP;N2.SEMRESATTRS_SERVICE_VERSION=kP;N2.SEMRESATTRS_TELEMETRY_SDK_NAME=MP;N2.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE=RP;N2.SEMRESATTRS_TELEMETRY_SDK_VERSION=AP;N2.SEMRESATTRS_TELEMETRY_AUTO_VERSION=IP;N2.SEMRESATTRS_WEBENGINE_NAME=NP;N2.SEMRESATTRS_WEBENGINE_VERSION=TP;N2.SEMRESATTRS_WEBENGINE_DESCRIPTION=fP;N2.SemanticResourceAttributes=(0,O7.createConstMap)([XC,YC,WC,KC,zC,GC,BC,HC,VC,FC,wC,DC,UC,jC,qC,LC,OC,CC,PC,kC,MC,RC,AC,IC,NC,TC,fC,EC,yC,hC,SC,_C,vC,bC,xC,gC,dC,cC,mC,uC,lC,pC,iC,oC,nC,aC,sC,rC,tC,eC,ZP,JP,QP,$P,XP,YP,WP,KP,zP,GP,BP,HP,VP,FP,wP,DP,UP,jP,qP,LP,OP,CP,PP,kP,MP,RP,AP,IP,NP,TP,fP]);var EP="alibaba_cloud",yP="aws",hP="azure",SP="gcp";N2.CLOUDPROVIDERVALUES_ALIBABA_CLOUD=EP;N2.CLOUDPROVIDERVALUES_AWS=yP;N2.CLOUDPROVIDERVALUES_AZURE=hP;N2.CLOUDPROVIDERVALUES_GCP=SP;N2.CloudProviderValues=(0,O7.createConstMap)([EP,yP,hP,SP]);var _P="alibaba_cloud_ecs",vP="alibaba_cloud_fc",bP="aws_ec2",xP="aws_ecs",gP="aws_eks",dP="aws_lambda",cP="aws_elastic_beanstalk",mP="azure_vm",uP="azure_container_instances",lP="azure_aks",pP="azure_functions",iP="azure_app_service",oP="gcp_compute_engine",nP="gcp_cloud_run",aP="gcp_kubernetes_engine",sP="gcp_cloud_functions",rP="gcp_app_engine";N2.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS=_P;N2.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC=vP;N2.CLOUDPLATFORMVALUES_AWS_EC2=bP;N2.CLOUDPLATFORMVALUES_AWS_ECS=xP;N2.CLOUDPLATFORMVALUES_AWS_EKS=gP;N2.CLOUDPLATFORMVALUES_AWS_LAMBDA=dP;N2.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK=cP;N2.CLOUDPLATFORMVALUES_AZURE_VM=mP;N2.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES=uP;N2.CLOUDPLATFORMVALUES_AZURE_AKS=lP;N2.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS=pP;N2.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE=iP;N2.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE=oP;N2.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN=nP;N2.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE=aP;N2.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS=sP;N2.CLOUDPLATFORMVALUES_GCP_APP_ENGINE=rP;N2.CloudPlatformValues=(0,O7.createConstMap)([_P,vP,bP,xP,gP,dP,cP,mP,uP,lP,pP,iP,oP,nP,aP,sP,rP]);var tP="ec2",eP="fargate";N2.AWSECSLAUNCHTYPEVALUES_EC2=tP;N2.AWSECSLAUNCHTYPEVALUES_FARGATE=eP;N2.AwsEcsLaunchtypeValues=(0,O7.createConstMap)([tP,eP]);var Z2="amd64",J2="arm32",Q2="arm64",$2="ia64",X2="ppc32",Y2="ppc64",W2="x86";N2.HOSTARCHVALUES_AMD64=Z2;N2.HOSTARCHVALUES_ARM32=J2;N2.HOSTARCHVALUES_ARM64=Q2;N2.HOSTARCHVALUES_IA64=$2;N2.HOSTARCHVALUES_PPC32=X2;N2.HOSTARCHVALUES_PPC64=Y2;N2.HOSTARCHVALUES_X86=W2;N2.HostArchValues=(0,O7.createConstMap)([Z2,J2,Q2,$2,X2,Y2,W2]);var K2="windows",z2="linux",G2="darwin",B2="freebsd",H2="netbsd",V2="openbsd",F2="dragonflybsd",w2="hpux",D2="aix",U2="solaris",j2="z_os";N2.OSTYPEVALUES_WINDOWS=K2;N2.OSTYPEVALUES_LINUX=z2;N2.OSTYPEVALUES_DARWIN=G2;N2.OSTYPEVALUES_FREEBSD=B2;N2.OSTYPEVALUES_NETBSD=H2;N2.OSTYPEVALUES_OPENBSD=V2;N2.OSTYPEVALUES_DRAGONFLYBSD=F2;N2.OSTYPEVALUES_HPUX=w2;N2.OSTYPEVALUES_AIX=D2;N2.OSTYPEVALUES_SOLARIS=U2;N2.OSTYPEVALUES_Z_OS=j2;N2.OsTypeValues=(0,O7.createConstMap)([K2,z2,G2,B2,H2,V2,F2,w2,D2,U2,j2]);var q2="cpp",L2="dotnet",O2="erlang",C2="go",P2="java",k2="nodejs",M2="php",R2="python",A2="ruby",I2="webjs";N2.TELEMETRYSDKLANGUAGEVALUES_CPP=q2;N2.TELEMETRYSDKLANGUAGEVALUES_DOTNET=L2;N2.TELEMETRYSDKLANGUAGEVALUES_ERLANG=O2;N2.TELEMETRYSDKLANGUAGEVALUES_GO=C2;N2.TELEMETRYSDKLANGUAGEVALUES_JAVA=P2;N2.TELEMETRYSDKLANGUAGEVALUES_NODEJS=k2;N2.TELEMETRYSDKLANGUAGEVALUES_PHP=M2;N2.TELEMETRYSDKLANGUAGEVALUES_PYTHON=R2;N2.TELEMETRYSDKLANGUAGEVALUES_RUBY=A2;N2.TELEMETRYSDKLANGUAGEVALUES_WEBJS=I2;N2.TelemetrySdkLanguageValues=(0,O7.createConstMap)([q2,L2,O2,C2,P2,k2,M2,R2,A2,I2])});var h2=w((C7)=>{var A40=C7&&C7.__createBinding||(Object.create?function(Z,J,Q,$){if($===void 0)$=Q;var X=Object.getOwnPropertyDescriptor(J,Q);if(!X||("get"in X?!J.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return J[Q]}};Object.defineProperty(Z,$,X)}:function(Z,J,Q,$){if($===void 0)$=Q;Z[$]=J[Q]}),I40=C7&&C7.__exportStar||function(Z,J){for(var Q in Z)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(J,Q))A40(J,Z,Q)};Object.defineProperty(C7,"__esModule",{value:!0});I40(y2(),C7)});var x2=w((S2)=>{Object.defineProperty(S2,"__esModule",{value:!0});S2.ATTR_EXCEPTION_TYPE=S2.ATTR_EXCEPTION_STACKTRACE=S2.ATTR_EXCEPTION_MESSAGE=S2.ATTR_EXCEPTION_ESCAPED=S2.ERROR_TYPE_VALUE_OTHER=S2.ATTR_ERROR_TYPE=S2.DOTNET_GC_HEAP_GENERATION_VALUE_POH=S2.DOTNET_GC_HEAP_GENERATION_VALUE_LOH=S2.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2=S2.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1=S2.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0=S2.ATTR_DOTNET_GC_HEAP_GENERATION=S2.DB_SYSTEM_NAME_VALUE_POSTGRESQL=S2.DB_SYSTEM_NAME_VALUE_MYSQL=S2.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER=S2.DB_SYSTEM_NAME_VALUE_MARIADB=S2.ATTR_DB_SYSTEM_NAME=S2.ATTR_DB_STORED_PROCEDURE_NAME=S2.ATTR_DB_RESPONSE_STATUS_CODE=S2.ATTR_DB_QUERY_TEXT=S2.ATTR_DB_QUERY_SUMMARY=S2.ATTR_DB_OPERATION_NAME=S2.ATTR_DB_OPERATION_BATCH_SIZE=S2.ATTR_DB_NAMESPACE=S2.ATTR_DB_COLLECTION_NAME=S2.ATTR_CODE_STACKTRACE=S2.ATTR_CODE_LINE_NUMBER=S2.ATTR_CODE_FUNCTION_NAME=S2.ATTR_CODE_FILE_PATH=S2.ATTR_CODE_COLUMN_NUMBER=S2.ATTR_CLIENT_PORT=S2.ATTR_CLIENT_ADDRESS=S2.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED=S2.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS=S2.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE=S2.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS=S2.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK=S2.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED=S2.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED=S2.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER=S2.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER=S2.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED=S2.ATTR_ASPNETCORE_RATE_LIMITING_RESULT=S2.ATTR_ASPNETCORE_RATE_LIMITING_POLICY=S2.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE=S2.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED=S2.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED=S2.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED=S2.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED=S2.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT=void 0;S2.OTEL_STATUS_CODE_VALUE_ERROR=S2.ATTR_OTEL_STATUS_CODE=S2.ATTR_OTEL_SCOPE_VERSION=S2.ATTR_OTEL_SCOPE_NAME=S2.NETWORK_TYPE_VALUE_IPV6=S2.NETWORK_TYPE_VALUE_IPV4=S2.ATTR_NETWORK_TYPE=S2.NETWORK_TRANSPORT_VALUE_UNIX=S2.NETWORK_TRANSPORT_VALUE_UDP=S2.NETWORK_TRANSPORT_VALUE_TCP=S2.NETWORK_TRANSPORT_VALUE_QUIC=S2.NETWORK_TRANSPORT_VALUE_PIPE=S2.ATTR_NETWORK_TRANSPORT=S2.ATTR_NETWORK_PROTOCOL_VERSION=S2.ATTR_NETWORK_PROTOCOL_NAME=S2.ATTR_NETWORK_PEER_PORT=S2.ATTR_NETWORK_PEER_ADDRESS=S2.ATTR_NETWORK_LOCAL_PORT=S2.ATTR_NETWORK_LOCAL_ADDRESS=S2.JVM_THREAD_STATE_VALUE_WAITING=S2.JVM_THREAD_STATE_VALUE_TIMED_WAITING=S2.JVM_THREAD_STATE_VALUE_TERMINATED=S2.JVM_THREAD_STATE_VALUE_RUNNABLE=S2.JVM_THREAD_STATE_VALUE_NEW=S2.JVM_THREAD_STATE_VALUE_BLOCKED=S2.ATTR_JVM_THREAD_STATE=S2.ATTR_JVM_THREAD_DAEMON=S2.JVM_MEMORY_TYPE_VALUE_NON_HEAP=S2.JVM_MEMORY_TYPE_VALUE_HEAP=S2.ATTR_JVM_MEMORY_TYPE=S2.ATTR_JVM_MEMORY_POOL_NAME=S2.ATTR_JVM_GC_NAME=S2.ATTR_JVM_GC_ACTION=S2.ATTR_HTTP_ROUTE=S2.ATTR_HTTP_RESPONSE_STATUS_CODE=S2.ATTR_HTTP_RESPONSE_HEADER=S2.ATTR_HTTP_REQUEST_RESEND_COUNT=S2.ATTR_HTTP_REQUEST_METHOD_ORIGINAL=S2.HTTP_REQUEST_METHOD_VALUE_TRACE=S2.HTTP_REQUEST_METHOD_VALUE_PUT=S2.HTTP_REQUEST_METHOD_VALUE_POST=S2.HTTP_REQUEST_METHOD_VALUE_PATCH=S2.HTTP_REQUEST_METHOD_VALUE_OPTIONS=S2.HTTP_REQUEST_METHOD_VALUE_HEAD=S2.HTTP_REQUEST_METHOD_VALUE_GET=S2.HTTP_REQUEST_METHOD_VALUE_DELETE=S2.HTTP_REQUEST_METHOD_VALUE_CONNECT=S2.HTTP_REQUEST_METHOD_VALUE_OTHER=S2.ATTR_HTTP_REQUEST_METHOD=S2.ATTR_HTTP_REQUEST_HEADER=void 0;S2.ATTR_USER_AGENT_ORIGINAL=S2.ATTR_URL_SCHEME=S2.ATTR_URL_QUERY=S2.ATTR_URL_PATH=S2.ATTR_URL_FULL=S2.ATTR_URL_FRAGMENT=S2.ATTR_TELEMETRY_SDK_VERSION=S2.ATTR_TELEMETRY_SDK_NAME=S2.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS=S2.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT=S2.TELEMETRY_SDK_LANGUAGE_VALUE_RUST=S2.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY=S2.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON=S2.TELEMETRY_SDK_LANGUAGE_VALUE_PHP=S2.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS=S2.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA=S2.TELEMETRY_SDK_LANGUAGE_VALUE_GO=S2.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG=S2.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET=S2.TELEMETRY_SDK_LANGUAGE_VALUE_CPP=S2.ATTR_TELEMETRY_SDK_LANGUAGE=S2.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS=S2.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS=S2.SIGNALR_TRANSPORT_VALUE_LONG_POLLING=S2.ATTR_SIGNALR_TRANSPORT=S2.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT=S2.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE=S2.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN=S2.ATTR_SIGNALR_CONNECTION_STATUS=S2.ATTR_SERVICE_VERSION=S2.ATTR_SERVICE_NAMESPACE=S2.ATTR_SERVICE_NAME=S2.ATTR_SERVICE_INSTANCE_ID=S2.ATTR_SERVER_PORT=S2.ATTR_SERVER_ADDRESS=S2.ATTR_OTEL_STATUS_DESCRIPTION=S2.OTEL_STATUS_CODE_VALUE_OK=void 0;S2.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT="aspnetcore.diagnostics.exception.result";S2.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED="aborted";S2.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED="handled";S2.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED="skipped";S2.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED="unhandled";S2.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE="aspnetcore.diagnostics.handler.type";S2.ATTR_ASPNETCORE_RATE_LIMITING_POLICY="aspnetcore.rate_limiting.policy";S2.ATTR_ASPNETCORE_RATE_LIMITING_RESULT="aspnetcore.rate_limiting.result";S2.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED="acquired";S2.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER="endpoint_limiter";S2.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER="global_limiter";S2.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED="request_canceled";S2.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED="aspnetcore.request.is_unhandled";S2.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK="aspnetcore.routing.is_fallback";S2.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS="aspnetcore.routing.match_status";S2.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE="failure";S2.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS="success";S2.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED="aspnetcore.user.is_authenticated";S2.ATTR_CLIENT_ADDRESS="client.address";S2.ATTR_CLIENT_PORT="client.port";S2.ATTR_CODE_COLUMN_NUMBER="code.column.number";S2.ATTR_CODE_FILE_PATH="code.file.path";S2.ATTR_CODE_FUNCTION_NAME="code.function.name";S2.ATTR_CODE_LINE_NUMBER="code.line.number";S2.ATTR_CODE_STACKTRACE="code.stacktrace";S2.ATTR_DB_COLLECTION_NAME="db.collection.name";S2.ATTR_DB_NAMESPACE="db.namespace";S2.ATTR_DB_OPERATION_BATCH_SIZE="db.operation.batch.size";S2.ATTR_DB_OPERATION_NAME="db.operation.name";S2.ATTR_DB_QUERY_SUMMARY="db.query.summary";S2.ATTR_DB_QUERY_TEXT="db.query.text";S2.ATTR_DB_RESPONSE_STATUS_CODE="db.response.status_code";S2.ATTR_DB_STORED_PROCEDURE_NAME="db.stored_procedure.name";S2.ATTR_DB_SYSTEM_NAME="db.system.name";S2.DB_SYSTEM_NAME_VALUE_MARIADB="mariadb";S2.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER="microsoft.sql_server";S2.DB_SYSTEM_NAME_VALUE_MYSQL="mysql";S2.DB_SYSTEM_NAME_VALUE_POSTGRESQL="postgresql";S2.ATTR_DOTNET_GC_HEAP_GENERATION="dotnet.gc.heap.generation";S2.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0="gen0";S2.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1="gen1";S2.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2="gen2";S2.DOTNET_GC_HEAP_GENERATION_VALUE_LOH="loh";S2.DOTNET_GC_HEAP_GENERATION_VALUE_POH="poh";S2.ATTR_ERROR_TYPE="error.type";S2.ERROR_TYPE_VALUE_OTHER="_OTHER";S2.ATTR_EXCEPTION_ESCAPED="exception.escaped";S2.ATTR_EXCEPTION_MESSAGE="exception.message";S2.ATTR_EXCEPTION_STACKTRACE="exception.stacktrace";S2.ATTR_EXCEPTION_TYPE="exception.type";var N40=(Z)=>`http.request.header.${Z}`;S2.ATTR_HTTP_REQUEST_HEADER=N40;S2.ATTR_HTTP_REQUEST_METHOD="http.request.method";S2.HTTP_REQUEST_METHOD_VALUE_OTHER="_OTHER";S2.HTTP_REQUEST_METHOD_VALUE_CONNECT="CONNECT";S2.HTTP_REQUEST_METHOD_VALUE_DELETE="DELETE";S2.HTTP_REQUEST_METHOD_VALUE_GET="GET";S2.HTTP_REQUEST_METHOD_VALUE_HEAD="HEAD";S2.HTTP_REQUEST_METHOD_VALUE_OPTIONS="OPTIONS";S2.HTTP_REQUEST_METHOD_VALUE_PATCH="PATCH";S2.HTTP_REQUEST_METHOD_VALUE_POST="POST";S2.HTTP_REQUEST_METHOD_VALUE_PUT="PUT";S2.HTTP_REQUEST_METHOD_VALUE_TRACE="TRACE";S2.ATTR_HTTP_REQUEST_METHOD_ORIGINAL="http.request.method_original";S2.ATTR_HTTP_REQUEST_RESEND_COUNT="http.request.resend_count";var T40=(Z)=>`http.response.header.${Z}`;S2.ATTR_HTTP_RESPONSE_HEADER=T40;S2.ATTR_HTTP_RESPONSE_STATUS_CODE="http.response.status_code";S2.ATTR_HTTP_ROUTE="http.route";S2.ATTR_JVM_GC_ACTION="jvm.gc.action";S2.ATTR_JVM_GC_NAME="jvm.gc.name";S2.ATTR_JVM_MEMORY_POOL_NAME="jvm.memory.pool.name";S2.ATTR_JVM_MEMORY_TYPE="jvm.memory.type";S2.JVM_MEMORY_TYPE_VALUE_HEAP="heap";S2.JVM_MEMORY_TYPE_VALUE_NON_HEAP="non_heap";S2.ATTR_JVM_THREAD_DAEMON="jvm.thread.daemon";S2.ATTR_JVM_THREAD_STATE="jvm.thread.state";S2.JVM_THREAD_STATE_VALUE_BLOCKED="blocked";S2.JVM_THREAD_STATE_VALUE_NEW="new";S2.JVM_THREAD_STATE_VALUE_RUNNABLE="runnable";S2.JVM_THREAD_STATE_VALUE_TERMINATED="terminated";S2.JVM_THREAD_STATE_VALUE_TIMED_WAITING="timed_waiting";S2.JVM_THREAD_STATE_VALUE_WAITING="waiting";S2.ATTR_NETWORK_LOCAL_ADDRESS="network.local.address";S2.ATTR_NETWORK_LOCAL_PORT="network.local.port";S2.ATTR_NETWORK_PEER_ADDRESS="network.peer.address";S2.ATTR_NETWORK_PEER_PORT="network.peer.port";S2.ATTR_NETWORK_PROTOCOL_NAME="network.protocol.name";S2.ATTR_NETWORK_PROTOCOL_VERSION="network.protocol.version";S2.ATTR_NETWORK_TRANSPORT="network.transport";S2.NETWORK_TRANSPORT_VALUE_PIPE="pipe";S2.NETWORK_TRANSPORT_VALUE_QUIC="quic";S2.NETWORK_TRANSPORT_VALUE_TCP="tcp";S2.NETWORK_TRANSPORT_VALUE_UDP="udp";S2.NETWORK_TRANSPORT_VALUE_UNIX="unix";S2.ATTR_NETWORK_TYPE="network.type";S2.NETWORK_TYPE_VALUE_IPV4="ipv4";S2.NETWORK_TYPE_VALUE_IPV6="ipv6";S2.ATTR_OTEL_SCOPE_NAME="otel.scope.name";S2.ATTR_OTEL_SCOPE_VERSION="otel.scope.version";S2.ATTR_OTEL_STATUS_CODE="otel.status_code";S2.OTEL_STATUS_CODE_VALUE_ERROR="ERROR";S2.OTEL_STATUS_CODE_VALUE_OK="OK";S2.ATTR_OTEL_STATUS_DESCRIPTION="otel.status_description";S2.ATTR_SERVER_ADDRESS="server.address";S2.ATTR_SERVER_PORT="server.port";S2.ATTR_SERVICE_INSTANCE_ID="service.instance.id";S2.ATTR_SERVICE_NAME="service.name";S2.ATTR_SERVICE_NAMESPACE="service.namespace";S2.ATTR_SERVICE_VERSION="service.version";S2.ATTR_SIGNALR_CONNECTION_STATUS="signalr.connection.status";S2.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN="app_shutdown";S2.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE="normal_closure";S2.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT="timeout";S2.ATTR_SIGNALR_TRANSPORT="signalr.transport";S2.SIGNALR_TRANSPORT_VALUE_LONG_POLLING="long_polling";S2.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS="server_sent_events";S2.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS="web_sockets";S2.ATTR_TELEMETRY_SDK_LANGUAGE="telemetry.sdk.language";S2.TELEMETRY_SDK_LANGUAGE_VALUE_CPP="cpp";S2.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET="dotnet";S2.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG="erlang";S2.TELEMETRY_SDK_LANGUAGE_VALUE_GO="go";S2.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA="java";S2.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS="nodejs";S2.TELEMETRY_SDK_LANGUAGE_VALUE_PHP="php";S2.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON="python";S2.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY="ruby";S2.TELEMETRY_SDK_LANGUAGE_VALUE_RUST="rust";S2.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT="swift";S2.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS="webjs";S2.ATTR_TELEMETRY_SDK_NAME="telemetry.sdk.name";S2.ATTR_TELEMETRY_SDK_VERSION="telemetry.sdk.version";S2.ATTR_URL_FRAGMENT="url.fragment";S2.ATTR_URL_FULL="url.full";S2.ATTR_URL_PATH="url.path";S2.ATTR_URL_QUERY="url.query";S2.ATTR_URL_SCHEME="url.scheme";S2.ATTR_USER_AGENT_ORIGINAL="user_agent.original"});var m2=w((g2)=>{Object.defineProperty(g2,"__esModule",{value:!0});g2.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS=g2.METRIC_KESTREL_UPGRADED_CONNECTIONS=g2.METRIC_KESTREL_TLS_HANDSHAKE_DURATION=g2.METRIC_KESTREL_REJECTED_CONNECTIONS=g2.METRIC_KESTREL_QUEUED_REQUESTS=g2.METRIC_KESTREL_QUEUED_CONNECTIONS=g2.METRIC_KESTREL_CONNECTION_DURATION=g2.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES=g2.METRIC_KESTREL_ACTIVE_CONNECTIONS=g2.METRIC_JVM_THREAD_COUNT=g2.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC=g2.METRIC_JVM_MEMORY_USED=g2.METRIC_JVM_MEMORY_LIMIT=g2.METRIC_JVM_MEMORY_COMMITTED=g2.METRIC_JVM_GC_DURATION=g2.METRIC_JVM_CPU_TIME=g2.METRIC_JVM_CPU_RECENT_UTILIZATION=g2.METRIC_JVM_CPU_COUNT=g2.METRIC_JVM_CLASS_UNLOADED=g2.METRIC_JVM_CLASS_LOADED=g2.METRIC_JVM_CLASS_COUNT=g2.METRIC_HTTP_SERVER_REQUEST_DURATION=g2.METRIC_HTTP_CLIENT_REQUEST_DURATION=g2.METRIC_DOTNET_TIMER_COUNT=g2.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT=g2.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT=g2.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH=g2.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET=g2.METRIC_DOTNET_PROCESS_CPU_TIME=g2.METRIC_DOTNET_PROCESS_CPU_COUNT=g2.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS=g2.METRIC_DOTNET_JIT_COMPILED_METHODS=g2.METRIC_DOTNET_JIT_COMPILED_IL_SIZE=g2.METRIC_DOTNET_JIT_COMPILATION_TIME=g2.METRIC_DOTNET_GC_PAUSE_TIME=g2.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE=g2.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE=g2.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE=g2.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED=g2.METRIC_DOTNET_GC_COLLECTIONS=g2.METRIC_DOTNET_EXCEPTIONS=g2.METRIC_DOTNET_ASSEMBLY_COUNT=g2.METRIC_DB_CLIENT_OPERATION_DURATION=g2.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS=g2.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS=g2.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION=g2.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE=g2.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS=g2.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES=g2.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS=void 0;g2.METRIC_SIGNALR_SERVER_CONNECTION_DURATION=void 0;g2.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS="aspnetcore.diagnostics.exceptions";g2.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES="aspnetcore.rate_limiting.active_request_leases";g2.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS="aspnetcore.rate_limiting.queued_requests";g2.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE="aspnetcore.rate_limiting.request.time_in_queue";g2.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION="aspnetcore.rate_limiting.request_lease.duration";g2.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS="aspnetcore.rate_limiting.requests";g2.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS="aspnetcore.routing.match_attempts";g2.METRIC_DB_CLIENT_OPERATION_DURATION="db.client.operation.duration";g2.METRIC_DOTNET_ASSEMBLY_COUNT="dotnet.assembly.count";g2.METRIC_DOTNET_EXCEPTIONS="dotnet.exceptions";g2.METRIC_DOTNET_GC_COLLECTIONS="dotnet.gc.collections";g2.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED="dotnet.gc.heap.total_allocated";g2.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE="dotnet.gc.last_collection.heap.fragmentation.size";g2.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE="dotnet.gc.last_collection.heap.size";g2.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE="dotnet.gc.last_collection.memory.committed_size";g2.METRIC_DOTNET_GC_PAUSE_TIME="dotnet.gc.pause.time";g2.METRIC_DOTNET_JIT_COMPILATION_TIME="dotnet.jit.compilation.time";g2.METRIC_DOTNET_JIT_COMPILED_IL_SIZE="dotnet.jit.compiled_il.size";g2.METRIC_DOTNET_JIT_COMPILED_METHODS="dotnet.jit.compiled_methods";g2.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS="dotnet.monitor.lock_contentions";g2.METRIC_DOTNET_PROCESS_CPU_COUNT="dotnet.process.cpu.count";g2.METRIC_DOTNET_PROCESS_CPU_TIME="dotnet.process.cpu.time";g2.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET="dotnet.process.memory.working_set";g2.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH="dotnet.thread_pool.queue.length";g2.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT="dotnet.thread_pool.thread.count";g2.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT="dotnet.thread_pool.work_item.count";g2.METRIC_DOTNET_TIMER_COUNT="dotnet.timer.count";g2.METRIC_HTTP_CLIENT_REQUEST_DURATION="http.client.request.duration";g2.METRIC_HTTP_SERVER_REQUEST_DURATION="http.server.request.duration";g2.METRIC_JVM_CLASS_COUNT="jvm.class.count";g2.METRIC_JVM_CLASS_LOADED="jvm.class.loaded";g2.METRIC_JVM_CLASS_UNLOADED="jvm.class.unloaded";g2.METRIC_JVM_CPU_COUNT="jvm.cpu.count";g2.METRIC_JVM_CPU_RECENT_UTILIZATION="jvm.cpu.recent_utilization";g2.METRIC_JVM_CPU_TIME="jvm.cpu.time";g2.METRIC_JVM_GC_DURATION="jvm.gc.duration";g2.METRIC_JVM_MEMORY_COMMITTED="jvm.memory.committed";g2.METRIC_JVM_MEMORY_LIMIT="jvm.memory.limit";g2.METRIC_JVM_MEMORY_USED="jvm.memory.used";g2.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC="jvm.memory.used_after_last_gc";g2.METRIC_JVM_THREAD_COUNT="jvm.thread.count";g2.METRIC_KESTREL_ACTIVE_CONNECTIONS="kestrel.active_connections";g2.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES="kestrel.active_tls_handshakes";g2.METRIC_KESTREL_CONNECTION_DURATION="kestrel.connection.duration";g2.METRIC_KESTREL_QUEUED_CONNECTIONS="kestrel.queued_connections";g2.METRIC_KESTREL_QUEUED_REQUESTS="kestrel.queued_requests";g2.METRIC_KESTREL_REJECTED_CONNECTIONS="kestrel.rejected_connections";g2.METRIC_KESTREL_TLS_HANDSHAKE_DURATION="kestrel.tls_handshake.duration";g2.METRIC_KESTREL_UPGRADED_CONNECTIONS="kestrel.upgraded_connections";g2.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS="signalr.server.active_connections";g2.METRIC_SIGNALR_SERVER_CONNECTION_DURATION="signalr.server.connection.duration"});var p2=w((u2)=>{Object.defineProperty(u2,"__esModule",{value:!0});u2.EVENT_EXCEPTION=void 0;u2.EVENT_EXCEPTION="exception"});var s=w((B9)=>{var r$0=B9&&B9.__createBinding||(Object.create?function(Z,J,Q,$){if($===void 0)$=Q;var X=Object.getOwnPropertyDescriptor(J,Q);if(!X||("get"in X?!J.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return J[Q]}};Object.defineProperty(Z,$,X)}:function(Z,J,Q,$){if($===void 0)$=Q;Z[$]=J[Q]}),Q5=B9&&B9.__exportStar||function(Z,J){for(var Q in Z)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(J,Q))r$0(J,Z,Q)};Object.defineProperty(B9,"__esModule",{value:!0});Q5($C(),B9);Q5(h2(),B9);Q5(x2(),B9);Q5(m2(),B9);Q5(p2(),B9)});var n2=w((i2)=>{Object.defineProperty(i2,"__esModule",{value:!0});i2.ATTR_PROCESS_RUNTIME_NAME=void 0;i2.ATTR_PROCESS_RUNTIME_NAME="process.runtime.name"});var r2=w((a2)=>{Object.defineProperty(a2,"__esModule",{value:!0});a2.SDK_INFO=void 0;var t$0=$U(),dJ=s(),e$0=n2();a2.SDK_INFO={[dJ.ATTR_TELEMETRY_SDK_NAME]:"opentelemetry",[e$0.ATTR_PROCESS_RUNTIME_NAME]:"node",[dJ.ATTR_TELEMETRY_SDK_LANGUAGE]:dJ.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,[dJ.ATTR_TELEMETRY_SDK_VERSION]:t$0.VERSION}});var e2=w((OZ)=>{Object.defineProperty(OZ,"__esModule",{value:!0});OZ.otperformance=OZ.SDK_INFO=OZ._globalThis=OZ.getStringListFromEnv=OZ.getNumberFromEnv=OZ.getBooleanFromEnv=OZ.getStringFromEnv=void 0;var cJ=rD();Object.defineProperty(OZ,"getStringFromEnv",{enumerable:!0,get:function(){return cJ.getStringFromEnv}});Object.defineProperty(OZ,"getBooleanFromEnv",{enumerable:!0,get:function(){return cJ.getBooleanFromEnv}});Object.defineProperty(OZ,"getNumberFromEnv",{enumerable:!0,get:function(){return cJ.getNumberFromEnv}});Object.defineProperty(OZ,"getStringListFromEnv",{enumerable:!0,get:function(){return cJ.getStringListFromEnv}});var Z30=ZU();Object.defineProperty(OZ,"_globalThis",{enumerable:!0,get:function(){return Z30._globalThis}});var J30=r2();Object.defineProperty(OZ,"SDK_INFO",{enumerable:!0,get:function(){return J30.SDK_INFO}});OZ.otperformance=performance});var XY=w((p9)=>{Object.defineProperty(p9,"__esModule",{value:!0});p9.getStringListFromEnv=p9.getNumberFromEnv=p9.getStringFromEnv=p9.getBooleanFromEnv=p9.otperformance=p9._globalThis=p9.SDK_INFO=void 0;var P7=e2();Object.defineProperty(p9,"SDK_INFO",{enumerable:!0,get:function(){return P7.SDK_INFO}});Object.defineProperty(p9,"_globalThis",{enumerable:!0,get:function(){return P7._globalThis}});Object.defineProperty(p9,"otperformance",{enumerable:!0,get:function(){return P7.otperformance}});Object.defineProperty(p9,"getBooleanFromEnv",{enumerable:!0,get:function(){return P7.getBooleanFromEnv}});Object.defineProperty(p9,"getStringFromEnv",{enumerable:!0,get:function(){return P7.getStringFromEnv}});Object.defineProperty(p9,"getNumberFromEnv",{enumerable:!0,get:function(){return P7.getNumberFromEnv}});Object.defineProperty(p9,"getStringListFromEnv",{enumerable:!0,get:function(){return P7.getStringListFromEnv}})});var Yk=w(($k)=>{Object.defineProperty($k,"__esModule",{value:!0});$k.addHrTimes=$k.isTimeInput=$k.isTimeInputHrTime=$k.hrTimeToMicroseconds=$k.hrTimeToMilliseconds=$k.hrTimeToNanoseconds=$k.hrTimeToTimeStamp=$k.hrTimeDuration=$k.timeInputToHrTime=$k.hrTime=$k.getTimeOrigin=$k.millisToHrTime=void 0;var mJ=XY(),Zk=9,$30=6,X30=Math.pow(10,$30),uJ=Math.pow(10,Zk);function $5(Z){let J=Z/1000,Q=Math.trunc(J),$=Math.round(Z%1000*X30);return[Q,$]}$k.millisToHrTime=$5;function Y30(){return mJ.otperformance.timeOrigin}$k.getTimeOrigin=Y30;function Jk(Z){let J=$5(mJ.otperformance.timeOrigin),Q=$5(typeof Z==="number"?Z:mJ.otperformance.now());return Qk(J,Q)}$k.hrTime=Jk;function W30(Z){if(YY(Z))return Z;else if(typeof Z==="number")if(Z=uJ)Q[1]-=uJ,Q[0]+=1;return Q}$k.addHrTimes=Qk});var zk=w((Wk)=>{Object.defineProperty(Wk,"__esModule",{value:!0});Wk.unrefTimer=void 0;function M30(Z){if(typeof Z!=="number")Z.unref()}Wk.unrefTimer=M30});var Bk=w((Gk)=>{Object.defineProperty(Gk,"__esModule",{value:!0});Gk.ExportResultCode=void 0;var R30;(function(Z){Z[Z.SUCCESS=0]="SUCCESS",Z[Z.FAILED=1]="FAILED"})(R30=Gk.ExportResultCode||(Gk.ExportResultCode={}))});var Dk=w((Fk)=>{Object.defineProperty(Fk,"__esModule",{value:!0});Fk.CompositePropagator=void 0;var Hk=C();class Vk{_propagators;_fields;constructor(Z={}){this._propagators=Z.propagators??[],this._fields=Array.from(new Set(this._propagators.map((J)=>typeof J.fields==="function"?J.fields():[]).reduce((J,Q)=>J.concat(Q),[])))}inject(Z,J,Q){for(let $ of this._propagators)try{$.inject(Z,J,Q)}catch(X){Hk.diag.warn(`Failed to inject with ${$.constructor.name}. Err: ${X.message}`)}}extract(Z,J,Q){return this._propagators.reduce(($,X)=>{try{return X.extract($,J,Q)}catch(Y){Hk.diag.warn(`Failed to extract with ${X.constructor.name}. Err: ${Y.message}`)}return $},Z)}fields(){return this._fields.slice()}}Fk.CompositePropagator=Vk});var qk=w((Uk)=>{Object.defineProperty(Uk,"__esModule",{value:!0});Uk.validateValue=Uk.validateKey=void 0;var KY="[_0-9a-z-*/]",A30=`[a-z]${KY}{0,255}`,I30=`[a-z0-9]${KY}{0,240}@[a-z]${KY}{0,13}`,N30=new RegExp(`^(?:${A30}|${I30})$`),T30=/^[ -~]{0,255}[!-~]$/,f30=/,|=/;function E30(Z){return N30.test(Z)}Uk.validateKey=E30;function y30(Z){return T30.test(Z)&&!f30.test(Z)}Uk.validateValue=y30});var GY=w((kk)=>{Object.defineProperty(kk,"__esModule",{value:!0});kk.TraceState=void 0;var Lk=qk(),Ok=32,S30=512,Ck=",",Pk="=";class zY{_internalState=new Map;constructor(Z){if(Z)this._parse(Z)}set(Z,J){let Q=this._clone();if(Q._internalState.has(Z))Q._internalState.delete(Z);return Q._internalState.set(Z,J),Q}unset(Z){let J=this._clone();return J._internalState.delete(Z),J}get(Z){return this._internalState.get(Z)}serialize(){return this._keys().reduce((Z,J)=>{return Z.push(J+Pk+this.get(J)),Z},[]).join(Ck)}_parse(Z){if(Z.length>S30)return;if(this._internalState=Z.split(Ck).reverse().reduce((J,Q)=>{let $=Q.trim(),X=$.indexOf(Pk);if(X!==-1){let Y=$.slice(0,X),W=$.slice(X+1,Q.length);if((0,Lk.validateKey)(Y)&&(0,Lk.validateValue)(W))J.set(Y,W)}return J},new Map),this._internalState.size>Ok)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,Ok))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let Z=new zY;return Z._internalState=new Map(this._internalState),Z}}kk.TraceState=zY});var Tk=w((Ik)=>{Object.defineProperty(Ik,"__esModule",{value:!0});Ik.W3CTraceContextPropagator=Ik.parseTraceParent=Ik.TRACE_STATE_HEADER=Ik.TRACE_PARENT_HEADER=void 0;var lJ=C(),_30=J5(),v30=GY();Ik.TRACE_PARENT_HEADER="traceparent";Ik.TRACE_STATE_HEADER="tracestate";var b30="00",x30="(?!ff)[\\da-f]{2}",g30="(?![0]{32})[\\da-f]{32}",d30="(?![0]{16})[\\da-f]{16}",c30="[\\da-f]{2}",m30=new RegExp(`^\\s?(${x30})-(${g30})-(${d30})-(${c30})(-.*)?\\s?$`);function Rk(Z){let J=m30.exec(Z);if(!J)return null;if(J[1]==="00"&&J[5])return null;return{traceId:J[2],spanId:J[3],traceFlags:parseInt(J[4],16)}}Ik.parseTraceParent=Rk;class Ak{inject(Z,J,Q){let $=lJ.trace.getSpanContext(Z);if(!$||(0,_30.isTracingSuppressed)(Z)||!(0,lJ.isSpanContextValid)($))return;let X=`${b30}-${$.traceId}-${$.spanId}-0${Number($.traceFlags||lJ.TraceFlags.NONE).toString(16)}`;if(Q.set(J,Ik.TRACE_PARENT_HEADER,X),$.traceState)Q.set(J,Ik.TRACE_STATE_HEADER,$.traceState.serialize())}extract(Z,J,Q){let $=Q.get(J,Ik.TRACE_PARENT_HEADER);if(!$)return Z;let X=Array.isArray($)?$[0]:$;if(typeof X!=="string")return Z;let Y=Rk(X);if(!Y)return Z;Y.isRemote=!0;let W=Q.get(J,Ik.TRACE_STATE_HEADER);if(W){let K=Array.isArray(W)?W.join(","):W;Y.traceState=new v30.TraceState(typeof K==="string"?K:void 0)}return lJ.trace.setSpanContext(Z,Y)}fields(){return[Ik.TRACE_PARENT_HEADER,Ik.TRACE_STATE_HEADER]}}Ik.W3CTraceContextPropagator=Ak});var hk=w((Ek)=>{Object.defineProperty(Ek,"__esModule",{value:!0});Ek.getRPCMetadata=Ek.deleteRPCMetadata=Ek.setRPCMetadata=Ek.RPCType=void 0;var l30=C(),BY=(0,l30.createContextKey)("OpenTelemetry SDK Context Key RPC_METADATA"),p30;(function(Z){Z.HTTP="http"})(p30=Ek.RPCType||(Ek.RPCType={}));function i30(Z,J){return Z.setValue(BY,J)}Ek.setRPCMetadata=i30;function o30(Z){return Z.deleteValue(BY)}Ek.deleteRPCMetadata=o30;function n30(Z){return Z.getValue(BY)}Ek.getRPCMetadata=n30});var dk=w((xk)=>{Object.defineProperty(xk,"__esModule",{value:!0});xk.isPlainObject=void 0;var r30="[object Object]",t30="[object Null]",e30="[object Undefined]",ZX0=Function.prototype,Sk=ZX0.toString,JX0=Sk.call(Object),QX0=Object.getPrototypeOf,_k=Object.prototype,vk=_k.hasOwnProperty,k7=Symbol?Symbol.toStringTag:void 0,bk=_k.toString;function $X0(Z){if(!XX0(Z)||YX0(Z)!==r30)return!1;let J=QX0(Z);if(J===null)return!0;let Q=vk.call(J,"constructor")&&J.constructor;return typeof Q=="function"&&Q instanceof Q&&Sk.call(Q)===JX0}xk.isPlainObject=$X0;function XX0(Z){return Z!=null&&typeof Z=="object"}function YX0(Z){if(Z==null)return Z===void 0?e30:t30;return k7&&k7 in Object(Z)?WX0(Z):KX0(Z)}function WX0(Z){let J=vk.call(Z,k7),Q=Z[k7],$=!1;try{Z[k7]=void 0,$=!0}catch{}let X=bk.call(Z);if($)if(J)Z[k7]=Q;else delete Z[k7];return X}function KX0(Z){return bk.call(Z)}});var ok=w((pk)=>{Object.defineProperty(pk,"__esModule",{value:!0});pk.merge=void 0;var ck=dk(),zX0=20;function GX0(...Z){let J=Z.shift(),Q=new WeakMap;while(Z.length>0)J=uk(J,Z.shift(),0,Q);return J}pk.merge=GX0;function HY(Z){if(nJ(Z))return Z.slice();return Z}function uk(Z,J,Q=0,$){let X;if(Q>zX0)return;if(Q++,oJ(Z)||oJ(J)||lk(J))X=HY(J);else if(nJ(Z)){if(X=Z.slice(),nJ(J))for(let Y=0,W=J.length;Y"u")delete X[z];else X[z]=G;else{let H=X[z],B=G;if(mk(Z,z,$)||mk(J,z,$))delete X[z];else{if(X5(H)&&X5(B)){let V=$.get(H)||[],F=$.get(B)||[];V.push({obj:Z,key:z}),F.push({obj:J,key:z}),$.set(H,V),$.set(B,F)}X[z]=uk(X[z],G,Q,$)}}}}else X=J;return X}function mk(Z,J,Q){let $=Q.get(Z[J])||[];for(let X=0,Y=$.length;X"u"||Z instanceof Date||Z instanceof RegExp||Z===null}function BX0(Z,J){if(!(0,ck.isPlainObject)(Z)||!(0,ck.isPlainObject)(J))return!1;return!0}});var sk=w((nk)=>{Object.defineProperty(nk,"__esModule",{value:!0});nk.callWithTimeout=nk.TimeoutError=void 0;class aJ extends Error{constructor(Z){super(Z);Object.setPrototypeOf(this,aJ.prototype)}}nk.TimeoutError=aJ;function HX0(Z,J){let Q,$=new Promise(function(Y,W){Q=setTimeout(function(){W(new aJ("Operation timed out."))},J)});return Promise.race([Z,$]).then((X)=>{return clearTimeout(Q),X},(X)=>{throw clearTimeout(Q),X})}nk.callWithTimeout=HX0});var ZM=w((tk)=>{Object.defineProperty(tk,"__esModule",{value:!0});tk.isUrlIgnored=tk.urlMatches=void 0;function rk(Z,J){if(typeof J==="string")return Z===J;else return!!Z.match(J)}tk.urlMatches=rk;function FX0(Z,J){if(!J)return!1;for(let Q of J)if(rk(Z,Q))return!0;return!1}tk.isUrlIgnored=FX0});var XM=w((QM)=>{Object.defineProperty(QM,"__esModule",{value:!0});QM.Deferred=void 0;class JM{_promise;_resolve;_reject;constructor(){this._promise=new Promise((Z,J)=>{this._resolve=Z,this._reject=J})}get promise(){return this._promise}resolve(Z){this._resolve(Z)}reject(Z){this._reject(Z)}}QM.Deferred=JM});var zM=w((WM)=>{Object.defineProperty(WM,"__esModule",{value:!0});WM.BindOnceFuture=void 0;var DX0=XM();class YM{_isCalled=!1;_deferred=new DX0.Deferred;_callback;_that;constructor(Z,J){this._callback=Z,this._that=J}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...Z){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...Z)).then((J)=>this._deferred.resolve(J),(J)=>this._deferred.reject(J))}catch(J){this._deferred.reject(J)}}return this._deferred.promise}}WM.BindOnceFuture=YM});var VM=w((BM)=>{Object.defineProperty(BM,"__esModule",{value:!0});BM.diagLogLevelFromString=void 0;var i9=C(),GM={ALL:i9.DiagLogLevel.ALL,VERBOSE:i9.DiagLogLevel.VERBOSE,DEBUG:i9.DiagLogLevel.DEBUG,INFO:i9.DiagLogLevel.INFO,WARN:i9.DiagLogLevel.WARN,ERROR:i9.DiagLogLevel.ERROR,NONE:i9.DiagLogLevel.NONE};function UX0(Z){if(Z==null)return;let J=GM[Z.toUpperCase()];if(J==null)return i9.diag.warn(`Unknown log level "${Z}", expected one of ${Object.keys(GM)}, using default`),i9.DiagLogLevel.INFO;return J}BM.diagLogLevelFromString=UX0});var UM=w((wM)=>{Object.defineProperty(wM,"__esModule",{value:!0});wM._export=void 0;var FM=C(),jX0=J5();function qX0(Z,J){return new Promise((Q)=>{FM.context.with((0,jX0.suppressTracing)(FM.context.active()),()=>{Z.export(J,Q)})})}wM._export=qX0});var FY=w((v)=>{Object.defineProperty(v,"__esModule",{value:!0});v.internal=v.diagLogLevelFromString=v.BindOnceFuture=v.urlMatches=v.isUrlIgnored=v.callWithTimeout=v.TimeoutError=v.merge=v.TraceState=v.unsuppressTracing=v.suppressTracing=v.isTracingSuppressed=v.setRPCMetadata=v.getRPCMetadata=v.deleteRPCMetadata=v.RPCType=v.parseTraceParent=v.W3CTraceContextPropagator=v.TRACE_STATE_HEADER=v.TRACE_PARENT_HEADER=v.CompositePropagator=v.otperformance=v.getStringListFromEnv=v.getNumberFromEnv=v.getBooleanFromEnv=v.getStringFromEnv=v._globalThis=v.SDK_INFO=v.parseKeyPairsIntoRecord=v.ExportResultCode=v.unrefTimer=v.timeInputToHrTime=v.millisToHrTime=v.isTimeInputHrTime=v.isTimeInput=v.hrTimeToTimeStamp=v.hrTimeToNanoseconds=v.hrTimeToMilliseconds=v.hrTimeToMicroseconds=v.hrTimeDuration=v.hrTime=v.getTimeOrigin=v.addHrTimes=v.loggingErrorHandler=v.setGlobalErrorHandler=v.globalErrorHandler=v.sanitizeAttributes=v.isAttributeValue=v.AnchoredClock=v.W3CBaggagePropagator=void 0;var LX0=ND();Object.defineProperty(v,"W3CBaggagePropagator",{enumerable:!0,get:function(){return LX0.W3CBaggagePropagator}});var OX0=yD();Object.defineProperty(v,"AnchoredClock",{enumerable:!0,get:function(){return OX0.AnchoredClock}});var jM=gD();Object.defineProperty(v,"isAttributeValue",{enumerable:!0,get:function(){return jM.isAttributeValue}});Object.defineProperty(v,"sanitizeAttributes",{enumerable:!0,get:function(){return jM.sanitizeAttributes}});var qM=pD();Object.defineProperty(v,"globalErrorHandler",{enumerable:!0,get:function(){return qM.globalErrorHandler}});Object.defineProperty(v,"setGlobalErrorHandler",{enumerable:!0,get:function(){return qM.setGlobalErrorHandler}});var CX0=QY();Object.defineProperty(v,"loggingErrorHandler",{enumerable:!0,get:function(){return CX0.loggingErrorHandler}});var u6=Yk();Object.defineProperty(v,"addHrTimes",{enumerable:!0,get:function(){return u6.addHrTimes}});Object.defineProperty(v,"getTimeOrigin",{enumerable:!0,get:function(){return u6.getTimeOrigin}});Object.defineProperty(v,"hrTime",{enumerable:!0,get:function(){return u6.hrTime}});Object.defineProperty(v,"hrTimeDuration",{enumerable:!0,get:function(){return u6.hrTimeDuration}});Object.defineProperty(v,"hrTimeToMicroseconds",{enumerable:!0,get:function(){return u6.hrTimeToMicroseconds}});Object.defineProperty(v,"hrTimeToMilliseconds",{enumerable:!0,get:function(){return u6.hrTimeToMilliseconds}});Object.defineProperty(v,"hrTimeToNanoseconds",{enumerable:!0,get:function(){return u6.hrTimeToNanoseconds}});Object.defineProperty(v,"hrTimeToTimeStamp",{enumerable:!0,get:function(){return u6.hrTimeToTimeStamp}});Object.defineProperty(v,"isTimeInput",{enumerable:!0,get:function(){return u6.isTimeInput}});Object.defineProperty(v,"isTimeInputHrTime",{enumerable:!0,get:function(){return u6.isTimeInputHrTime}});Object.defineProperty(v,"millisToHrTime",{enumerable:!0,get:function(){return u6.millisToHrTime}});Object.defineProperty(v,"timeInputToHrTime",{enumerable:!0,get:function(){return u6.timeInputToHrTime}});var PX0=zk();Object.defineProperty(v,"unrefTimer",{enumerable:!0,get:function(){return PX0.unrefTimer}});var kX0=Bk();Object.defineProperty(v,"ExportResultCode",{enumerable:!0,get:function(){return kX0.ExportResultCode}});var MX0=eX();Object.defineProperty(v,"parseKeyPairsIntoRecord",{enumerable:!0,get:function(){return MX0.parseKeyPairsIntoRecord}});var M7=XY();Object.defineProperty(v,"SDK_INFO",{enumerable:!0,get:function(){return M7.SDK_INFO}});Object.defineProperty(v,"_globalThis",{enumerable:!0,get:function(){return M7._globalThis}});Object.defineProperty(v,"getStringFromEnv",{enumerable:!0,get:function(){return M7.getStringFromEnv}});Object.defineProperty(v,"getBooleanFromEnv",{enumerable:!0,get:function(){return M7.getBooleanFromEnv}});Object.defineProperty(v,"getNumberFromEnv",{enumerable:!0,get:function(){return M7.getNumberFromEnv}});Object.defineProperty(v,"getStringListFromEnv",{enumerable:!0,get:function(){return M7.getStringListFromEnv}});Object.defineProperty(v,"otperformance",{enumerable:!0,get:function(){return M7.otperformance}});var RX0=Dk();Object.defineProperty(v,"CompositePropagator",{enumerable:!0,get:function(){return RX0.CompositePropagator}});var sJ=Tk();Object.defineProperty(v,"TRACE_PARENT_HEADER",{enumerable:!0,get:function(){return sJ.TRACE_PARENT_HEADER}});Object.defineProperty(v,"TRACE_STATE_HEADER",{enumerable:!0,get:function(){return sJ.TRACE_STATE_HEADER}});Object.defineProperty(v,"W3CTraceContextPropagator",{enumerable:!0,get:function(){return sJ.W3CTraceContextPropagator}});Object.defineProperty(v,"parseTraceParent",{enumerable:!0,get:function(){return sJ.parseTraceParent}});var rJ=hk();Object.defineProperty(v,"RPCType",{enumerable:!0,get:function(){return rJ.RPCType}});Object.defineProperty(v,"deleteRPCMetadata",{enumerable:!0,get:function(){return rJ.deleteRPCMetadata}});Object.defineProperty(v,"getRPCMetadata",{enumerable:!0,get:function(){return rJ.getRPCMetadata}});Object.defineProperty(v,"setRPCMetadata",{enumerable:!0,get:function(){return rJ.setRPCMetadata}});var VY=J5();Object.defineProperty(v,"isTracingSuppressed",{enumerable:!0,get:function(){return VY.isTracingSuppressed}});Object.defineProperty(v,"suppressTracing",{enumerable:!0,get:function(){return VY.suppressTracing}});Object.defineProperty(v,"unsuppressTracing",{enumerable:!0,get:function(){return VY.unsuppressTracing}});var AX0=GY();Object.defineProperty(v,"TraceState",{enumerable:!0,get:function(){return AX0.TraceState}});var IX0=ok();Object.defineProperty(v,"merge",{enumerable:!0,get:function(){return IX0.merge}});var LM=sk();Object.defineProperty(v,"TimeoutError",{enumerable:!0,get:function(){return LM.TimeoutError}});Object.defineProperty(v,"callWithTimeout",{enumerable:!0,get:function(){return LM.callWithTimeout}});var OM=ZM();Object.defineProperty(v,"isUrlIgnored",{enumerable:!0,get:function(){return OM.isUrlIgnored}});Object.defineProperty(v,"urlMatches",{enumerable:!0,get:function(){return OM.urlMatches}});var NX0=zM();Object.defineProperty(v,"BindOnceFuture",{enumerable:!0,get:function(){return NX0.BindOnceFuture}});var TX0=VM();Object.defineProperty(v,"diagLogLevelFromString",{enumerable:!0,get:function(){return TX0.diagLogLevelFromString}});var fX0=UM();v.internal={_export:fX0._export}});var MM=w((PM)=>{Object.defineProperty(PM,"__esModule",{value:!0});PM.VERSION=void 0;PM.VERSION="0.213.0"});var AM=w((RM)=>{Object.defineProperty(RM,"__esModule",{value:!0});RM.SeverityNumber=void 0;var EX0;(function(Z){Z[Z.UNSPECIFIED=0]="UNSPECIFIED",Z[Z.TRACE=1]="TRACE",Z[Z.TRACE2=2]="TRACE2",Z[Z.TRACE3=3]="TRACE3",Z[Z.TRACE4=4]="TRACE4",Z[Z.DEBUG=5]="DEBUG",Z[Z.DEBUG2=6]="DEBUG2",Z[Z.DEBUG3=7]="DEBUG3",Z[Z.DEBUG4=8]="DEBUG4",Z[Z.INFO=9]="INFO",Z[Z.INFO2=10]="INFO2",Z[Z.INFO3=11]="INFO3",Z[Z.INFO4=12]="INFO4",Z[Z.WARN=13]="WARN",Z[Z.WARN2=14]="WARN2",Z[Z.WARN3=15]="WARN3",Z[Z.WARN4=16]="WARN4",Z[Z.ERROR=17]="ERROR",Z[Z.ERROR2=18]="ERROR2",Z[Z.ERROR3=19]="ERROR3",Z[Z.ERROR4=20]="ERROR4",Z[Z.FATAL=21]="FATAL",Z[Z.FATAL2=22]="FATAL2",Z[Z.FATAL3=23]="FATAL3",Z[Z.FATAL4=24]="FATAL4"})(EX0=RM.SeverityNumber||(RM.SeverityNumber={}))});var tJ=w((IM)=>{Object.defineProperty(IM,"__esModule",{value:!0});IM.NOOP_LOGGER=IM.NoopLogger=void 0;class DY{emit(Z){}}IM.NoopLogger=DY;IM.NOOP_LOGGER=new DY});var EM=w((TM)=>{Object.defineProperty(TM,"__esModule",{value:!0});TM.API_BACKWARDS_COMPATIBILITY_VERSION=TM.makeGetter=TM._global=TM.GLOBAL_LOGS_API_KEY=void 0;TM.GLOBAL_LOGS_API_KEY=Symbol.for("io.opentelemetry.js.api.logs");TM._global=globalThis;function hX0(Z,J,Q){return($)=>$===Z?J:Q}TM.makeGetter=hX0;TM.API_BACKWARDS_COMPATIBILITY_VERSION=1});var jY=w((yM)=>{Object.defineProperty(yM,"__esModule",{value:!0});yM.NOOP_LOGGER_PROVIDER=yM.NoopLoggerProvider=void 0;var bX0=tJ();class UY{getLogger(Z,J,Q){return new bX0.NoopLogger}}yM.NoopLoggerProvider=UY;yM.NOOP_LOGGER_PROVIDER=new UY});var bM=w((_M)=>{Object.defineProperty(_M,"__esModule",{value:!0});_M.ProxyLogger=void 0;var gX0=tJ();class SM{constructor(Z,J,Q,$){this._provider=Z,this.name=J,this.version=Q,this.options=$}emit(Z){this._getLogger().emit(Z)}_getLogger(){if(this._delegate)return this._delegate;let Z=this._provider._getDelegateLogger(this.name,this.version,this.options);if(!Z)return gX0.NOOP_LOGGER;return this._delegate=Z,this._delegate}}_M.ProxyLogger=SM});var cM=w((gM)=>{Object.defineProperty(gM,"__esModule",{value:!0});gM.ProxyLoggerProvider=void 0;var dX0=jY(),cX0=bM();class xM{getLogger(Z,J,Q){var $;return($=this._getDelegateLogger(Z,J,Q))!==null&&$!==void 0?$:new cX0.ProxyLogger(this,Z,J,Q)}_getDelegate(){var Z;return(Z=this._delegate)!==null&&Z!==void 0?Z:dX0.NOOP_LOGGER_PROVIDER}_setDelegate(Z){this._delegate=Z}_getDelegateLogger(Z,J,Q){var $;return($=this._delegate)===null||$===void 0?void 0:$.getLogger(Z,J,Q)}}gM.ProxyLoggerProvider=xM});var pM=w((uM)=>{Object.defineProperty(uM,"__esModule",{value:!0});uM.LogsAPI=void 0;var l6=EM(),mX0=jY(),mM=cM();class qY{constructor(){this._proxyLoggerProvider=new mM.ProxyLoggerProvider}static getInstance(){if(!this._instance)this._instance=new qY;return this._instance}setGlobalLoggerProvider(Z){if(l6._global[l6.GLOBAL_LOGS_API_KEY])return this.getLoggerProvider();return l6._global[l6.GLOBAL_LOGS_API_KEY]=(0,l6.makeGetter)(l6.API_BACKWARDS_COMPATIBILITY_VERSION,Z,mX0.NOOP_LOGGER_PROVIDER),this._proxyLoggerProvider._setDelegate(Z),Z}getLoggerProvider(){var Z,J;return(J=(Z=l6._global[l6.GLOBAL_LOGS_API_KEY])===null||Z===void 0?void 0:Z.call(l6._global,l6.API_BACKWARDS_COMPATIBILITY_VERSION))!==null&&J!==void 0?J:this._proxyLoggerProvider}getLogger(Z,J,Q){return this.getLoggerProvider().getLogger(Z,J,Q)}disable(){delete l6._global[l6.GLOBAL_LOGS_API_KEY],this._proxyLoggerProvider=new mM.ProxyLoggerProvider}}uM.LogsAPI=qY});var LY=w((Y5)=>{Object.defineProperty(Y5,"__esModule",{value:!0});Y5.logs=Y5.NoopLogger=Y5.NOOP_LOGGER=Y5.SeverityNumber=void 0;var uX0=AM();Object.defineProperty(Y5,"SeverityNumber",{enumerable:!0,get:function(){return uX0.SeverityNumber}});var iM=tJ();Object.defineProperty(Y5,"NOOP_LOGGER",{enumerable:!0,get:function(){return iM.NOOP_LOGGER}});Object.defineProperty(Y5,"NoopLogger",{enumerable:!0,get:function(){return iM.NoopLogger}});var lX0=pM();Y5.logs=lX0.LogsAPI.getInstance()});var sM=w((nM)=>{Object.defineProperty(nM,"__esModule",{value:!0});nM.disableInstrumentations=nM.enableInstrumentations=void 0;function pX0(Z,J,Q,$){for(let X=0,Y=Z.length;XJ.disable())}nM.disableInstrumentations=iX0});var JR=w((eM)=>{Object.defineProperty(eM,"__esModule",{value:!0});eM.registerInstrumentations=void 0;var rM=C(),nX0=LY(),tM=sM();function aX0(Z){let J=Z.tracerProvider||rM.trace.getTracerProvider(),Q=Z.meterProvider||rM.metrics.getMeterProvider(),$=Z.loggerProvider||nX0.logs.getLoggerProvider(),X=Z.instrumentations?.flat()??[];return(0,tM.enableInstrumentations)(X,J,Q,$),()=>{(0,tM.disableInstrumentations)(X)}}eM.registerInstrumentations=aX0});var VR=w((BR)=>{Object.defineProperty(BR,"__esModule",{value:!0});BR.satisfies=void 0;var kY=C(),WR=/^(?:v)?(?(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*))(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,sX0=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|0|[1-9]\d*))?)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,rX0={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function tX0(Z,J,Q){if(!eX0(Z))return kY.diag.error(`Invalid version: ${Z}`),!1;if(!J)return!0;J=J.replace(/([<>=~^]+)\s+/g,"$1");let $=$Y0(Z);if(!$)return!1;let X=[],Y=KR($,J,X,Q);if(Y&&!Q?.includePrerelease)return JY0($,X);return Y}BR.satisfies=tX0;function eX0(Z){return typeof Z==="string"&&WR.test(Z)}function KR(Z,J,Q,$){if(J.includes("||")){let X=J.trim().split("||");for(let Y of X)if(OY(Z,Y,Q,$))return!0;return!1}else if(J.includes(" - "))J=MY0(J,$);else if(J.includes(" ")){let X=J.trim().replace(/\s{2,}/g," ").split(" ");for(let Y of X)if(!OY(Z,Y,Q,$))return!1;return!0}return OY(Z,J,Q,$)}function OY(Z,J,Q,$){if(J=QY0(J,$),J.includes(" "))return KR(Z,J,Q,$);else{let X=XY0(J);return Q.push(X),ZY0(Z,X)}}function ZY0(Z,J){if(J.invalid)return!1;if(!J.version||PY(J.version))return!0;let Q=$R(Z.versionSegments||[],J.versionSegments||[]);if(Q===0){let $=Z.prereleaseSegments||[],X=J.prereleaseSegments||[];if(!$.length&&!X.length)Q=0;else if(!$.length&&X.length)Q=1;else if($.length&&!X.length)Q=-1;else Q=$R($,X)}return rX0[J.op]?.includes(Q)}function JY0(Z,J){if(Z.prerelease)return J.some((Q)=>Q.prerelease&&Q.version===Z.version);return!0}function QY0(Z,J){return Z=Z.trim(),Z=PY0(Z,J),Z=CY0(Z),Z=kY0(Z,J),Z=Z.trim(),Z}function e0(Z){return!Z||Z.toLowerCase()==="x"||Z==="*"}function $Y0(Z){let J=Z.match(WR);if(!J){kY.diag.error(`Invalid version: ${Z}`);return}let Q=J.groups.version,$=J.groups.prerelease,X=J.groups.build,Y=Q.split("."),W=$?.split(".");return{op:void 0,version:Q,versionSegments:Y,versionSegmentCount:Y.length,prerelease:$,prereleaseSegments:W,prereleaseSegmentCount:W?W.length:0,build:X}}function XY0(Z){if(!Z)return{};let J=Z.match(sX0);if(!J)return kY.diag.error(`Invalid range: ${Z}`),{invalid:!0};let Q=J.groups.op,$=J.groups.version,X=J.groups.prerelease,Y=J.groups.build,W=$.split("."),K=X?.split(".");if(Q==="==")Q="=";return{op:Q||"=",version:$,versionSegments:W,versionSegmentCount:W.length,prerelease:X,prereleaseSegments:K,prereleaseSegmentCount:K?K.length:0,build:Y}}function PY(Z){return Z==="*"||Z==="x"||Z==="X"}function QR(Z){let J=parseInt(Z,10);return isNaN(J)?Z:J}function YY0(Z,J){if(typeof Z===typeof J)if(typeof Z==="number")return[Z,J];else if(typeof Z==="string")return[Z,J];else throw Error("Version segments can only be strings or numbers");else return[String(Z),String(J)]}function WY0(Z,J){if(PY(Z)||PY(J))return 0;let[Q,$]=YY0(QR(Z),QR(J));if(Q>$)return 1;else if(Q<$)return-1;return 0}function $R(Z,J){for(let Q=0;Q)?=?)",XR=`(?:${GR}|${KY0})`,GY0=`(?:-(${XR}(?:\\.${XR})*))`,YR=`${zR}+`,BY0=`(?:\\+(${YR}(?:\\.${YR})*))`,CY=`${GR}|x|X|\\*`,W5=`[v=\\s]*(${CY})(?:\\.(${CY})(?:\\.(${CY})(?:${GY0})?${BY0}?)?)?`,HY0=`^${zY0}\\s*${W5}$`,VY0=new RegExp(HY0),FY0=`^\\s*(${W5})\\s+-\\s+(${W5})\\s*$`,wY0=new RegExp(FY0),DY0="(?:~>?)",UY0=`^${DY0}${W5}$`,jY0=new RegExp(UY0),qY0="(?:\\^)",LY0=`^${qY0}${W5}$`,OY0=new RegExp(LY0);function CY0(Z){let J=jY0;return Z.replace(J,(Q,$,X,Y,W)=>{let K;if(e0($))K="";else if(e0(X))K=`>=${$}.0.0 <${+$+1}.0.0-0`;else if(e0(Y))K=`>=${$}.${X}.0 <${$}.${+X+1}.0-0`;else if(W)K=`>=${$}.${X}.${Y}-${W} <${$}.${+X+1}.0-0`;else K=`>=${$}.${X}.${Y} <${$}.${+X+1}.0-0`;return K})}function PY0(Z,J){let Q=OY0,$=J?.includePrerelease?"-0":"";return Z.replace(Q,(X,Y,W,K,z)=>{let G;if(e0(Y))G="";else if(e0(W))G=`>=${Y}.0.0${$} <${+Y+1}.0.0-0`;else if(e0(K))if(Y==="0")G=`>=${Y}.${W}.0${$} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.0${$} <${+Y+1}.0.0-0`;else if(z)if(Y==="0")if(W==="0")G=`>=${Y}.${W}.${K}-${z} <${Y}.${W}.${+K+1}-0`;else G=`>=${Y}.${W}.${K}-${z} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.${K}-${z} <${+Y+1}.0.0-0`;else if(Y==="0")if(W==="0")G=`>=${Y}.${W}.${K}${$} <${Y}.${W}.${+K+1}-0`;else G=`>=${Y}.${W}.${K}${$} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.${K} <${+Y+1}.0.0-0`;return G})}function kY0(Z,J){let Q=VY0;return Z.replace(Q,($,X,Y,W,K,z)=>{let G=e0(Y),H=G||e0(W),B=H||e0(K),V=B;if(X==="="&&V)X="";if(z=J?.includePrerelease?"-0":"",G)if(X===">"||X==="<")$="<0.0.0-0";else $="*";else if(X&&V){if(H)W=0;if(K=0,X===">")if(X=">=",H)Y=+Y+1,W=0,K=0;else W=+W+1,K=0;else if(X==="<=")if(X="<",H)Y=+Y+1;else W=+W+1;if(X==="<")z="-0";$=`${X+Y}.${W}.${K}${z}`}else if(H)$=`>=${Y}.0.0${z} <${+Y+1}.0.0-0`;else if(B)$=`>=${Y}.${W}.0${z} <${Y}.${+W+1}.0-0`;return $})}function MY0(Z,J){let Q=wY0;return Z.replace(Q,($,X,Y,W,K,z,G,H,B,V,F,D)=>{if(e0(Y))X="";else if(e0(W))X=`>=${Y}.0.0${J?.includePrerelease?"-0":""}`;else if(e0(K))X=`>=${Y}.${W}.0${J?.includePrerelease?"-0":""}`;else if(z)X=`>=${X}`;else X=`>=${X}${J?.includePrerelease?"-0":""}`;if(e0(B))H="";else if(e0(V))H=`<${+B+1}.0.0-0`;else if(e0(F))H=`<${B}.${+V+1}.0-0`;else if(D)H=`<=${B}.${V}.${F}-${D}`;else if(J?.includePrerelease)H=`<${B}.${V}.${+F+1}-0`;else H=`<=${H}`;return`${X} ${H}`.trim()})}});var IY=w((FR)=>{Object.defineProperty(FR,"__esModule",{value:!0});FR.massUnwrap=FR.unwrap=FR.massWrap=FR.wrap=void 0;var Z6=console.error.bind(console);function K5(Z,J,Q){let $=!!Z[J]&&Object.prototype.propertyIsEnumerable.call(Z,J);Object.defineProperty(Z,J,{configurable:!0,enumerable:$,writable:!0,value:Q})}var RY0=(Z,J,Q)=>{if(!Z||!Z[J]){Z6("no original function "+String(J)+" to wrap");return}if(!Q){Z6("no wrapper function"),Z6(Error().stack);return}let $=Z[J];if(typeof $!=="function"||typeof Q!=="function"){Z6("original object and wrapper must be functions");return}let X=Q($,J);return K5(X,"__original",$),K5(X,"__unwrap",()=>{if(Z[J]===X)K5(Z,J,$)}),K5(X,"__wrapped",!0),K5(Z,J,X),X};FR.wrap=RY0;var AY0=(Z,J,Q)=>{if(!Z){Z6("must provide one or more modules to patch"),Z6(Error().stack);return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){Z6("must provide one or more functions to wrap on modules");return}Z.forEach(($)=>{J.forEach((X)=>{FR.wrap($,X,Q)})})};FR.massWrap=AY0;var IY0=(Z,J)=>{if(!Z||!Z[J]){Z6("no function to unwrap."),Z6(Error().stack);return}let Q=Z[J];if(!Q.__unwrap)Z6("no original to unwrap to -- has "+String(J)+" already been unwrapped?");else{Q.__unwrap();return}};FR.unwrap=IY0;var NY0=(Z,J)=>{if(!Z){Z6("must provide one or more modules to patch"),Z6(Error().stack);return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){Z6("must provide one or more functions to unwrap on modules");return}Z.forEach((Q)=>{J.forEach(($)=>{FR.unwrap(Q,$)})})};FR.massUnwrap=NY0;function z5(Z){if(Z&&Z.logger)if(typeof Z.logger!=="function")Z6("new logger isn't a function, not replacing");else Z6=Z.logger}FR.default=z5;z5.wrap=FR.wrap;z5.massWrap=FR.massWrap;z5.unwrap=FR.unwrap;z5.massUnwrap=FR.massUnwrap});var qR=w((UR)=>{Object.defineProperty(UR,"__esModule",{value:!0});UR.InstrumentationAbstract=void 0;var NY=C(),fY0=LY(),eJ=IY();class DR{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(Z,J,Q){this.instrumentationName=Z,this.instrumentationVersion=J,this.setConfig(Q),this._diag=NY.diag.createComponentLogger({namespace:Z}),this._tracer=NY.trace.getTracer(Z,J),this._meter=NY.metrics.getMeter(Z,J),this._logger=fY0.logs.getLogger(Z,J),this._updateMetricInstruments()}_wrap=eJ.wrap;_unwrap=eJ.unwrap;_massWrap=eJ.massWrap;_massUnwrap=eJ.massUnwrap;get meter(){return this._meter}setMeterProvider(Z){this._meter=Z.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(Z){this._logger=Z.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let Z=this.init()??[];if(!Array.isArray(Z))return[Z];return Z}_updateMetricInstruments(){return}getConfig(){return this._config}setConfig(Z){this._config={enabled:!0,...Z}}setTracerProvider(Z){this._tracer=Z.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(Z,J,Q,$){if(!Z)return;try{Z(Q,$)}catch(X){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:J},X)}}}UR.InstrumentationAbstract=DR});var OR=w((cv0,LR)=>{var M1=1000,R1=M1*60,A1=R1*60,R7=A1*24,EY0=R7*7,yY0=R7*365.25;LR.exports=function(Z,J){J=J||{};var Q=typeof Z;if(Q==="string"&&Z.length>0)return hY0(Z);else if(Q==="number"&&isFinite(Z))return J.long?_Y0(Z):SY0(Z);throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(Z))};function hY0(Z){if(Z=String(Z),Z.length>100)return;var J=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(Z);if(!J)return;var Q=parseFloat(J[1]),$=(J[2]||"ms").toLowerCase();switch($){case"years":case"year":case"yrs":case"yr":case"y":return Q*yY0;case"weeks":case"week":case"w":return Q*EY0;case"days":case"day":case"d":return Q*R7;case"hours":case"hour":case"hrs":case"hr":case"h":return Q*A1;case"minutes":case"minute":case"mins":case"min":case"m":return Q*R1;case"seconds":case"second":case"secs":case"sec":case"s":return Q*M1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return Q;default:return}}function SY0(Z){var J=Math.abs(Z);if(J>=R7)return Math.round(Z/R7)+"d";if(J>=A1)return Math.round(Z/A1)+"h";if(J>=R1)return Math.round(Z/R1)+"m";if(J>=M1)return Math.round(Z/M1)+"s";return Z+"ms"}function _Y0(Z){var J=Math.abs(Z);if(J>=R7)return ZQ(Z,J,R7,"day");if(J>=A1)return ZQ(Z,J,A1,"hour");if(J>=R1)return ZQ(Z,J,R1,"minute");if(J>=M1)return ZQ(Z,J,M1,"second");return Z+" ms"}function ZQ(Z,J,Q,$){var X=J>=Q*1.5;return Math.round(Z/Q)+" "+$+(X?"s":"")}});var TY=w((mv0,CR)=>{function vY0(Z){Q.debug=Q,Q.default=Q,Q.coerce=z,Q.disable=W,Q.enable=X,Q.enabled=K,Q.humanize=OR(),Q.destroy=G,Object.keys(Z).forEach((H)=>{Q[H]=Z[H]}),Q.names=[],Q.skips=[],Q.formatters={};function J(H){let B=0;for(let V=0;V{if(n==="%%")return"%";S++;let t0=Q.formatters[r];if(typeof t0==="function"){let I9=j[S];n=t0.call(L,I9),j.splice(S,1),S--}return n}),Q.formatArgs.call(L,j),(L.log||Q.log).apply(L,j)}if(U.namespace=H,U.useColors=Q.useColors(),U.color=Q.selectColor(H),U.extend=$,U.destroy=Q.destroy,Object.defineProperty(U,"enabled",{enumerable:!0,configurable:!1,get:()=>{if(V!==null)return V;if(F!==Q.namespaces)F=Q.namespaces,D=Q.enabled(H);return D},set:(j)=>{V=j}}),typeof Q.init==="function")Q.init(U);return U}function $(H,B){let V=Q(this.namespace+(typeof B>"u"?":":B)+H);return V.log=this.log,V}function X(H){Q.save(H),Q.namespaces=H,Q.names=[],Q.skips=[];let B=(typeof H==="string"?H:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let V of B)if(V[0]==="-")Q.skips.push(V.slice(1));else Q.names.push(V)}function Y(H,B){let V=0,F=0,D=-1,U=0;while(V"-"+B)].join(",");return Q.enable(""),H}function K(H){for(let B of Q.skips)if(Y(H,B))return!1;for(let B of Q.names)if(Y(H,B))return!0;return!1}function z(H){if(H instanceof Error)return H.stack||H.message;return H}function G(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return Q.enable(Q.load()),Q}CR.exports=vY0});var kR=w((PR,JQ)=>{PR.formatArgs=xY0;PR.save=gY0;PR.load=dY0;PR.useColors=bY0;PR.storage=cY0();PR.destroy=(()=>{let Z=!1;return()=>{if(!Z)Z=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}})();PR.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function bY0(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let Z;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(Z=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(Z[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function xY0(Z){if(Z[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+Z[0]+(this.useColors?"%c ":" ")+"+"+JQ.exports.humanize(this.diff),!this.useColors)return;let J="color: "+this.color;Z.splice(1,0,J,"color: inherit");let Q=0,$=0;Z[0].replace(/%[a-zA-Z%]/g,(X)=>{if(X==="%%")return;if(Q++,X==="%c")$=Q}),Z.splice($,0,J)}PR.log=console.debug||console.log||(()=>{});function gY0(Z){try{if(Z)PR.storage.setItem("debug",Z);else PR.storage.removeItem("debug")}catch(J){}}function dY0(){let Z;try{Z=PR.storage.getItem("debug")||PR.storage.getItem("DEBUG")}catch(J){}if(!Z&&typeof process<"u"&&"env"in process)Z=process.env.DEBUG;return Z}function cY0(){try{return localStorage}catch(Z){}}JQ.exports=TY()(PR);var{formatters:mY0}=JQ.exports;mY0.j=function(Z){try{return JSON.stringify(Z)}catch(J){return"[UnexpectedJSONParseError]: "+J.message}}});var RR=w((lv0,MR)=>{MR.exports=(Z,J=process.argv)=>{let Q=Z.startsWith("-")?"":Z.length===1?"-":"--",$=J.indexOf(Q+Z),X=J.indexOf("--");return $!==-1&&(X===-1||${var sY0=A("os"),AR=A("tty"),p6=RR(),{env:y0}=process,CZ;if(p6("no-color")||p6("no-colors")||p6("color=false")||p6("color=never"))CZ=0;else if(p6("color")||p6("colors")||p6("color=true")||p6("color=always"))CZ=1;if("FORCE_COLOR"in y0)if(y0.FORCE_COLOR==="true")CZ=1;else if(y0.FORCE_COLOR==="false")CZ=0;else CZ=y0.FORCE_COLOR.length===0?1:Math.min(parseInt(y0.FORCE_COLOR,10),3);function fY(Z){if(Z===0)return!1;return{level:Z,hasBasic:!0,has256:Z>=2,has16m:Z>=3}}function EY(Z,J){if(CZ===0)return 0;if(p6("color=16m")||p6("color=full")||p6("color=truecolor"))return 3;if(p6("color=256"))return 2;if(Z&&!J&&CZ===void 0)return 0;let Q=CZ||0;if(y0.TERM==="dumb")return Q;if(process.platform==="win32"){let $=sY0.release().split(".");if(Number($[0])>=10&&Number($[2])>=10586)return Number($[2])>=14931?3:2;return 1}if("CI"in y0){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(($)=>($ in y0))||y0.CI_NAME==="codeship")return 1;return Q}if("TEAMCITY_VERSION"in y0)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(y0.TEAMCITY_VERSION)?1:0;if(y0.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in y0){let $=parseInt((y0.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(y0.TERM_PROGRAM){case"iTerm.app":return $>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(y0.TERM))return 2;if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(y0.TERM))return 1;if("COLORTERM"in y0)return 1;return Q}function rY0(Z){let J=EY(Z,Z&&Z.isTTY);return fY(J)}IR.exports={supportsColor:rY0,stdout:fY(EY(!0,AR.isatty(1))),stderr:fY(EY(!0,AR.isatty(2)))}});var yR=w((fR,$Q)=>{var tY0=A("tty"),QQ=A("util");fR.init=YW0;fR.log=QW0;fR.formatArgs=ZW0;fR.save=$W0;fR.load=XW0;fR.useColors=eY0;fR.destroy=QQ.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");fR.colors=[6,2,3,4,5,1];try{let Z=NR();if(Z&&(Z.stderr||Z).level>=2)fR.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}catch(Z){}fR.inspectOpts=Object.keys(process.env).filter((Z)=>{return/^debug_/i.test(Z)}).reduce((Z,J)=>{let Q=J.substring(6).toLowerCase().replace(/_([a-z])/g,(X,Y)=>{return Y.toUpperCase()}),$=process.env[J];if(/^(yes|on|true|enabled)$/i.test($))$=!0;else if(/^(no|off|false|disabled)$/i.test($))$=!1;else if($==="null")$=null;else $=Number($);return Z[Q]=$,Z},{});function eY0(){return"colors"in fR.inspectOpts?Boolean(fR.inspectOpts.colors):tY0.isatty(process.stderr.fd)}function ZW0(Z){let{namespace:J,useColors:Q}=this;if(Q){let $=this.color,X="\x1B[3"+($<8?$:"8;5;"+$),Y=` ${X};1m${J} \x1B[0m`;Z[0]=Y+Z[0].split(` +`).join(` +`+Y),Z.push(X+"m+"+$Q.exports.humanize(this.diff)+"\x1B[0m")}else Z[0]=JW0()+J+" "+Z[0]}function JW0(){if(fR.inspectOpts.hideDate)return"";return new Date().toISOString()+" "}function QW0(...Z){return process.stderr.write(QQ.formatWithOptions(fR.inspectOpts,...Z)+` +`)}function $W0(Z){if(Z)process.env.DEBUG=Z;else delete process.env.DEBUG}function XW0(){return process.env.DEBUG}function YW0(Z){Z.inspectOpts={};let J=Object.keys(fR.inspectOpts);for(let Q=0;QJ.trim()).join(" ")};TR.O=function(Z){return this.inspectOpts.colors=this.useColors,QQ.inspect(Z,this.inspectOpts)}});var hR=w((ov0,yY)=>{if(typeof process>"u"||process.type==="renderer"||!1||process.__nwjs)yY.exports=kR();else yY.exports=yR()});var B5=w((nv0,SR)=>{var hY=A("path").sep;SR.exports=function(Z){var J=Z.split(hY),Q=J.lastIndexOf("node_modules");if(Q===-1)return;if(!J[Q+1])return;var $=J[Q+1][0]==="@",X=$?J[Q+1]+"/"+J[Q+2]:J[Q+1],Y=$?3:2,W="",K=Q+Y-1;for(var z=0;z<=K;z++)if(z===K)W+=J[z];else W+=J[z]+hY;var G="",H=J.length-1;for(var B=Q+Y;B<=H;B++)if(B===H)G+=J[B];else G+=J[B]+hY;return{name:X,basedir:W,path:G}}});var I7=w((av0,_Y)=>{var I1=A("path"),H9=A("module"),q0=hR()("require-in-the-middle"),FW0=B5();_Y.exports=H5;_Y.exports.Hook=H5;var SY,XQ;if(H9.isBuiltin)XQ=H9.isBuiltin;else if(H9.builtinModules)XQ=(Z)=>{if(Z.startsWith("node:"))return!0;if(SY===void 0)SY=new Set(H9.builtinModules);return SY.has(Z)};else throw Error("'require-in-the-middle' requires Node.js >=v9.3.0 or >=v8.10.0");var wW0=/([/\\]index)?(\.js)?$/;class _R{constructor(){this._localCache=new Map,this._kRitmExports=Symbol("RitmExports")}has(Z,J){if(this._localCache.has(Z))return!0;else if(!J){let Q=A.cache[Z];return!!(Q&&(this._kRitmExports in Q))}else return!1}get(Z,J){let Q=this._localCache.get(Z);if(Q!==void 0)return Q;else if(!J){let $=A.cache[Z];return $&&$[this._kRitmExports]}}set(Z,J,Q){if(Q)this._localCache.set(Z,J);else if(Z in A.cache)A.cache[Z][this._kRitmExports]=J;else q0('non-core module is unexpectedly not in require.cache: "%s"',Z),this._localCache.set(Z,J)}}function H5(Z,J,Q){if(this instanceof H5===!1)return new H5(Z,J,Q);if(typeof Z==="function")Q=Z,Z=null,J=null;else if(typeof J==="function")Q=J,J=null;if(typeof H9._resolveFilename!=="function"){console.error("Error: Expected Module._resolveFilename to be a function (was: %s) - aborting!",typeof H9._resolveFilename),console.error("Please report this error as an issue related to Node.js %s at https://github.com/nodejs/require-in-the-middle/issues",process.version);return}this._cache=new _R,this._unhooked=!1,this._origRequire=H9.prototype.require;let $=this,X=new Set,Y=J?J.internals===!0:!1,W=Array.isArray(Z);if(q0("registering require hook"),this._require=H9.prototype.require=function(z){if($._unhooked===!0)return q0("ignoring require call - module is soft-unhooked"),$._origRequire.apply(this,arguments);return K.call(this,arguments,!1)},typeof process.getBuiltinModule==="function")this._origGetBuiltinModule=process.getBuiltinModule,this._getBuiltinModule=process.getBuiltinModule=function(z){if($._unhooked===!0)return q0("ignoring process.getBuiltinModule call - module is soft-unhooked"),$._origGetBuiltinModule.apply(this,arguments);return K.call(this,arguments,!0)};function K(z,G){let H=z[0],B=XQ(H),V;if(B){if(V=H,H.startsWith("node:")){let O=H.slice(5);if(XQ(O))V=O}}else if(G)return q0("call to process.getBuiltinModule with unknown built-in id"),$._origGetBuiltinModule.apply(this,z);else try{V=H9._resolveFilename(H,this)}catch(O){return q0('Module._resolveFilename("%s") threw %j, calling original Module.require',H,O.message),$._origRequire.apply(this,z)}let F,D;if(q0("processing %s module require('%s'): %s",B===!0?"core":"non-core",H,V),$._cache.has(V,B)===!0)return q0("returning already patched cached module: %s",V),$._cache.get(V,B);let U=X.has(V);if(U===!1)X.add(V);let j=G?$._origGetBuiltinModule.apply(this,z):$._origRequire.apply(this,z);if(U===!0)return q0("module is in the process of being patched already - ignoring: %s",V),j;if(X.delete(V),B===!0){if(W===!0&&Z.includes(V)===!1)return q0("ignoring core module not on whitelist: %s",V),j;F=V}else if(W===!0&&Z.includes(V)){let O=I1.parse(V);F=O.name,D=O.dir}else{let O=FW0(V);if(O===void 0)return q0("could not parse filename: %s",V),j;F=O.name,D=O.basedir;let M=DW0(O);q0("resolved filename to module: %s (id: %s, resolved: %s, basedir: %s)",F,H,M,D);let S=!1;if(W){if(!H.startsWith(".")&&Z.includes(H))F=H,S=!0;if(!Z.includes(F)&&!Z.includes(M))return j;if(Z.includes(M)&&M!==F)F=M,S=!0}if(!S){let T;try{T=A.resolve(F,{paths:[D]})}catch(n){return q0("could not resolve module: %s",F),$._cache.set(V,j,B),j}if(T!==V)if(Y===!0)F=F+I1.sep+I1.relative(D,V),q0("preparing to process require of internal file: %s",F);else return q0("ignoring require of non-main module file: %s",T),$._cache.set(V,j,B),j}}$._cache.set(V,j,B),q0("calling require hook: %s",F);let L=Q(j,F,D);return $._cache.set(V,L,B),q0("returning module: %s",F),L}}H5.prototype.unhook=function(){if(this._unhooked=!0,this._require===H9.prototype.require)H9.prototype.require=this._origRequire,q0("require unhook successful");else q0("require unhook unsuccessful");if(process.getBuiltinModule!==void 0)if(this._getBuiltinModule===process.getBuiltinModule)process.getBuiltinModule=this._origGetBuiltinModule,q0("process.getBuiltinModule unhook successful");else q0("process.getBuiltinModule unhook unsuccessful")};function DW0(Z){let J=I1.sep!=="/"?Z.path.split(I1.sep).join("/"):Z.path;return I1.posix.join(Z.name,J).replace(wW0,"")}});var gR=w((bR)=>{Object.defineProperty(bR,"__esModule",{value:!0});bR.ModuleNameTrie=bR.ModuleNameSeparator=void 0;bR.ModuleNameSeparator="/";class vY{hooks=[];children=new Map}class vR{_trie=new vY;_counter=0;insert(Z){let J=this._trie;for(let Q of Z.moduleName.split(bR.ModuleNameSeparator)){let $=J.children.get(Q);if(!$)$=new vY,J.children.set(Q,$);J=$}J.hooks.push({hook:Z,insertedId:this._counter++})}search(Z,{maintainInsertionOrder:J,fullOnly:Q}={}){let $=this._trie,X=[],Y=!0;for(let W of Z.split(bR.ModuleNameSeparator)){let K=$.children.get(W);if(!K){Y=!1;break}if(!Q)X.push(...K.hooks);$=K}if(Q&&Y)X.push(...$.hooks);if(X.length===0)return[];if(X.length===1)return[X[0].hook];if(J)X.sort((W,K)=>W.insertedId-K.insertedId);return X.map(({hook:W})=>W)}}bR.ModuleNameTrie=vR});var uR=w((cR)=>{Object.defineProperty(cR,"__esModule",{value:!0});cR.RequireInTheMiddleSingleton=void 0;var UW0=I7(),dR=A("path"),xY=gR(),jW0=["afterEach","after","beforeEach","before","describe","it"].every((Z)=>{return typeof global[Z]==="function"});class YQ{_moduleNameTrie=new xY.ModuleNameTrie;static _instance;constructor(){this._initialize()}_initialize(){new UW0.Hook(null,{internals:!0},(Z,J,Q)=>{let $=qW0(J),X=this._moduleNameTrie.search($,{maintainInsertionOrder:!0,fullOnly:Q===void 0});for(let{onRequire:Y}of X)Z=Y(Z,J,Q);return Z})}register(Z,J){let Q={moduleName:Z,onRequire:J};return this._moduleNameTrie.insert(Q),Q}static getInstance(){if(jW0)return new YQ;return this._instance=this._instance??new YQ}}cR.RequireInTheMiddleSingleton=YQ;function qW0(Z){return dR.sep!==xY.ModuleNameSeparator?Z.split(dR.sep).join(xY.ModuleNameSeparator):Z}});var nR=w((CW0)=>{var lR=[],gY=new WeakMap,pR=new WeakMap,iR=new Map,oR=[],LW0={set(Z,J,Q){let $=gY.get(Z),X=$&&$[J];if(typeof X==="function")return X(Q);return!0},get(Z,J){if(J===Symbol.toStringTag)return"Module";let Q=pR.get(Z)[J];if(typeof Q==="function")return Q()},defineProperty(Z,J,Q){if(!("value"in Q))throw Error("Getters/setters are not supported for exports property descriptors.");let $=gY.get(Z),X=$&&$[J];if(typeof X==="function")return X(Q.value);return!0}};function OW0(Z,J,Q,$,X){iR.set(Z,X),gY.set(J,Q),pR.set(J,$);let Y=new Proxy(J,LW0);lR.forEach((W)=>W(Z,Y,X)),oR.push([Z,Y,X])}CW0.register=OW0;CW0.importHooks=lR;CW0.specifiers=iR;CW0.toHook=oR});var uY=w((Zb0,T1)=>{var aR=A("path"),AW0=B5(),{fileURLToPath:IW0}=A("url"),{MessageChannel:NW0}=A("worker_threads"),{isBuiltin:dY}=A("module");if(!dY)dY=()=>!0;var{importHooks:cY,specifiers:TW0,toHook:fW0}=nR();function sR(Z){cY.push(Z),fW0.forEach(([J,Q,$])=>Z(J,Q,$))}function rR(Z){let J=cY.indexOf(Z);if(J>-1)cY.splice(J,1)}function N1(Z,J,Q,$){let X=Z(J,Q,$);if(X&&X!==J){if("default"in J)J.default=X}}var mY;function EW0(){let{port1:Z,port2:J}=new NW0,Q=0,$;mY=(K)=>{Q++,Z.postMessage(K)},Z.on("message",()=>{if(Q--,$&&Q<=0)$()}).unref();function X(){let K=setInterval(()=>{},1000),z=new Promise((G)=>{$=G}).then(()=>{clearInterval(K)});if(Q===0)$();return z}let Y=J;return{registerOptions:{data:{addHookMessagePort:Y,include:[]},transferList:[Y]},addHookMessagePort:Y,waitForAllMessagesAcknowledged:X}}function V5(Z,J,Q){if(this instanceof V5===!1)return new V5(Z,J,Q);if(typeof Z==="function")Q=Z,Z=null,J=null;else if(typeof J==="function")Q=J,J=null;let $=J?J.internals===!0:!1;if(mY&&Array.isArray(Z))mY(Z);this._iitmHook=(X,Y,W)=>{let K=X,z=K.startsWith("node:"),G,H;if(z){let B=X.slice(5);if(dY(B))X=B}else if(K.startsWith("file://")){let B=Error.stackTraceLimit;Error.stackTraceLimit=0;try{G=IW0(X),X=G}catch(V){}if(Error.stackTraceLimit=B,G){let V=AW0(G);if(V)X=V.name,H=V.basedir}}if(Z){for(let B of Z)if(G&&B===G)N1(Q,Y,G,void 0);else if(B===X){if(!H)N1(Q,Y,X,H);else if(H.endsWith(TW0.get(K)))N1(Q,Y,X,H);else if($){let V=X+aR.sep+aR.relative(H,G);N1(Q,Y,V,H)}}else if(B===W)N1(Q,Y,W,H)}else N1(Q,Y,X,H)},sR(this._iitmHook)}V5.prototype.unhook=function(){rR(this._iitmHook)};T1.exports=V5;T1.exports.Hook=V5;T1.exports.addHook=sR;T1.exports.removeHook=rR;T1.exports.createAddHookMessageChannel=EW0});var lY=w((tR)=>{Object.defineProperty(tR,"__esModule",{value:!0});tR.isWrapped=tR.safeExecuteInTheMiddleAsync=tR.safeExecuteInTheMiddle=void 0;function yW0(Z,J,Q){let $,X;try{X=Z()}catch(Y){$=Y}finally{if(J($,X),$&&!Q)throw $;return X}}tR.safeExecuteInTheMiddle=yW0;async function hW0(Z,J,Q){let $,X;try{X=await Z()}catch(Y){$=Y}finally{if(await J($,X),$&&!Q)throw $;return X}}tR.safeExecuteInTheMiddleAsync=hW0;function SW0(Z){return typeof Z==="function"&&typeof Z.__original==="function"&&typeof Z.__unwrap==="function"&&Z.__wrapped===!0}tR.isWrapped=SW0});var YA=w(($A)=>{Object.defineProperty($A,"__esModule",{value:!0});$A.InstrumentationBase=void 0;var F5=A("path"),ZA=A("util"),bW0=VR(),pY=IY(),xW0=qR(),gW0=uR(),dW0=uY(),w5=C(),cW0=I7(),mW0=A("fs"),uW0=lY();class QA extends xW0.InstrumentationAbstract{_modules;_hooks=[];_requireInTheMiddleSingleton=gW0.RequireInTheMiddleSingleton.getInstance();_enabled=!1;constructor(Z,J,Q){super(Z,J,Q);let $=this.init();if($&&!Array.isArray($))$=[$];if(this._modules=$||[],this._config.enabled)this.enable()}_wrap=(Z,J,Q)=>{if((0,uW0.isWrapped)(Z[J]))this._unwrap(Z,J);if(!ZA.types.isProxy(Z))return(0,pY.wrap)(Z,J,Q);else{let $=(0,pY.wrap)(Object.assign({},Z),J,Q);return Object.defineProperty(Z,J,{value:$}),$}};_unwrap=(Z,J)=>{if(!ZA.types.isProxy(Z))return(0,pY.unwrap)(Z,J);else return Object.defineProperty(Z,J,{value:Z[J]})};_massWrap=(Z,J,Q)=>{if(!Z){w5.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){w5.diag.error("must provide one or more functions to wrap on modules");return}Z.forEach(($)=>{J.forEach((X)=>{this._wrap($,X,Q)})})};_massUnwrap=(Z,J)=>{if(!Z){w5.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){w5.diag.error("must provide one or more functions to wrap on modules");return}Z.forEach((Q)=>{J.forEach(($)=>{this._unwrap(Q,$)})})};_warnOnPreloadedModules(){this._modules.forEach((Z)=>{let{name:J}=Z;try{let Q=A.resolve(J);if(A.cache[Q])this._diag.warn(`Module ${J} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${J}`)}catch{}})}_extractPackageVersion(Z){try{let J=(0,mW0.readFileSync)(F5.join(Z,"package.json"),{encoding:"utf8"}),Q=JSON.parse(J).version;return typeof Q==="string"?Q:void 0}catch{w5.diag.warn("Failed extracting version",Z)}return}_onRequire(Z,J,Q,$){if(!$){if(typeof Z.patch==="function"){if(Z.moduleExports=J,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:Z.name}),Z.patch(J)}return J}let X=this._extractPackageVersion($);if(Z.moduleVersion=X,Z.name===Q){if(JA(Z.supportedVersions,X,Z.includePrerelease)){if(typeof Z.patch==="function"){if(Z.moduleExports=J,this._enabled)return this._diag.debug("Applying instrumentation patch for module on require hook",{module:Z.name,version:Z.moduleVersion,baseDir:$}),Z.patch(J,Z.moduleVersion)}}return J}let Y=Z.files??[],W=F5.normalize(Q);return Y.filter((z)=>z.name===W&&JA(z.supportedVersions,X,Z.includePrerelease)).reduce((z,G)=>{if(G.moduleExports=z,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:Z.name,version:Z.moduleVersion,fileName:G.name,baseDir:$}),G.patch(z,Z.moduleVersion);return z},J)}enable(){if(this._enabled)return;if(this._enabled=!0,this._hooks.length>0){for(let Z of this._modules){if(typeof Z.patch==="function"&&Z.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:Z.name,version:Z.moduleVersion}),Z.patch(Z.moduleExports,Z.moduleVersion);for(let J of Z.files)if(J.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:Z.name,version:Z.moduleVersion,fileName:J.name}),J.patch(J.moduleExports,Z.moduleVersion)}return}this._warnOnPreloadedModules();for(let Z of this._modules){let J=(Y,W,K)=>{if(!K&&F5.isAbsolute(W)){let z=F5.parse(W);W=z.name,K=z.dir}return this._onRequire(Z,Y,W,K)},Q=(Y,W,K)=>{return this._onRequire(Z,Y,W,K)},$=F5.isAbsolute(Z.name)?new cW0.Hook([Z.name],{internals:!0},Q):this._requireInTheMiddleSingleton.register(Z.name,Q);this._hooks.push($);let X=new dW0.Hook([Z.name],{internals:!0},J);this._hooks.push(X)}}disable(){if(!this._enabled)return;this._enabled=!1;for(let Z of this._modules){if(typeof Z.unpatch==="function"&&Z.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:Z.name,version:Z.moduleVersion}),Z.unpatch(Z.moduleExports,Z.moduleVersion);for(let J of Z.files)if(J.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:Z.name,version:Z.moduleVersion,fileName:J.name}),J.unpatch(J.moduleExports,Z.moduleVersion)}}isEnabled(){return this._enabled}}$A.InstrumentationBase=QA;function JA(Z,J,Q){if(typeof J>"u")return Z.includes("*");return Z.some(($)=>{return(0,bW0.satisfies)(J,$,{includePrerelease:Q})})}});var WA=w((iY)=>{Object.defineProperty(iY,"__esModule",{value:!0});iY.normalize=void 0;var lW0=A("path");Object.defineProperty(iY,"normalize",{enumerable:!0,get:function(){return lW0.normalize}})});var KA=w((WQ)=>{Object.defineProperty(WQ,"__esModule",{value:!0});WQ.normalize=WQ.InstrumentationBase=void 0;var iW0=YA();Object.defineProperty(WQ,"InstrumentationBase",{enumerable:!0,get:function(){return iW0.InstrumentationBase}});var oW0=WA();Object.defineProperty(WQ,"normalize",{enumerable:!0,get:function(){return oW0.normalize}})});var oY=w((KQ)=>{Object.defineProperty(KQ,"__esModule",{value:!0});KQ.normalize=KQ.InstrumentationBase=void 0;var zA=KA();Object.defineProperty(KQ,"InstrumentationBase",{enumerable:!0,get:function(){return zA.InstrumentationBase}});Object.defineProperty(KQ,"normalize",{enumerable:!0,get:function(){return zA.normalize}})});var VA=w((BA)=>{Object.defineProperty(BA,"__esModule",{value:!0});BA.InstrumentationNodeModuleDefinition=void 0;class GA{files;name;supportedVersions;patch;unpatch;constructor(Z,J,Q,$,X){this.files=X||[],this.name=Z,this.supportedVersions=J,this.patch=Q,this.unpatch=$}}BA.InstrumentationNodeModuleDefinition=GA});var UA=w((wA)=>{Object.defineProperty(wA,"__esModule",{value:!0});wA.InstrumentationNodeModuleFile=void 0;var sW0=oY();class FA{name;supportedVersions;patch;unpatch;constructor(Z,J,Q,$){this.name=(0,sW0.normalize)(Z),this.supportedVersions=J,this.patch=Q,this.unpatch=$}}wA.InstrumentationNodeModuleFile=FA});var OA=w((qA)=>{Object.defineProperty(qA,"__esModule",{value:!0});qA.semconvStabilityFromStr=qA.SemconvStability=void 0;var zQ;(function(Z){Z[Z.STABLE=1]="STABLE",Z[Z.OLD=2]="OLD",Z[Z.DUPLICATE=3]="DUPLICATE"})(zQ=qA.SemconvStability||(qA.SemconvStability={}));function rW0(Z,J){let Q=zQ.OLD,$=J?.split(",").map((X)=>X.trim()).filter((X)=>X!=="");for(let X of $??[])if(X.toLowerCase()===Z+"/dup"){Q=zQ.DUPLICATE;break}else if(X.toLowerCase()===Z)Q=zQ.STABLE;return Q}qA.semconvStabilityFromStr=rW0});var c=w((V9)=>{Object.defineProperty(V9,"__esModule",{value:!0});V9.semconvStabilityFromStr=V9.SemconvStability=V9.safeExecuteInTheMiddleAsync=V9.safeExecuteInTheMiddle=V9.isWrapped=V9.InstrumentationNodeModuleFile=V9.InstrumentationNodeModuleDefinition=V9.InstrumentationBase=V9.registerInstrumentations=void 0;var tW0=JR();Object.defineProperty(V9,"registerInstrumentations",{enumerable:!0,get:function(){return tW0.registerInstrumentations}});var eW0=oY();Object.defineProperty(V9,"InstrumentationBase",{enumerable:!0,get:function(){return eW0.InstrumentationBase}});var ZK0=VA();Object.defineProperty(V9,"InstrumentationNodeModuleDefinition",{enumerable:!0,get:function(){return ZK0.InstrumentationNodeModuleDefinition}});var JK0=UA();Object.defineProperty(V9,"InstrumentationNodeModuleFile",{enumerable:!0,get:function(){return JK0.InstrumentationNodeModuleFile}});var nY=lY();Object.defineProperty(V9,"isWrapped",{enumerable:!0,get:function(){return nY.isWrapped}});Object.defineProperty(V9,"safeExecuteInTheMiddle",{enumerable:!0,get:function(){return nY.safeExecuteInTheMiddle}});Object.defineProperty(V9,"safeExecuteInTheMiddleAsync",{enumerable:!0,get:function(){return nY.safeExecuteInTheMiddleAsync}});var CA=OA();Object.defineProperty(V9,"SemconvStability",{enumerable:!0,get:function(){return CA.SemconvStability}});Object.defineProperty(V9,"semconvStabilityFromStr",{enumerable:!0,get:function(){return CA.semconvStabilityFromStr}})});var MA=w((PA)=>{Object.defineProperty(PA,"__esModule",{value:!0});PA.HTTP_FLAVOR_VALUE_HTTP_1_1=PA.NET_TRANSPORT_VALUE_IP_UDP=PA.NET_TRANSPORT_VALUE_IP_TCP=PA.ATTR_NET_TRANSPORT=PA.ATTR_NET_PEER_PORT=PA.ATTR_NET_PEER_NAME=PA.ATTR_NET_PEER_IP=PA.ATTR_NET_HOST_PORT=PA.ATTR_NET_HOST_NAME=PA.ATTR_NET_HOST_IP=PA.ATTR_HTTP_USER_AGENT=PA.ATTR_HTTP_URL=PA.ATTR_HTTP_TARGET=PA.ATTR_HTTP_STATUS_CODE=PA.ATTR_HTTP_SERVER_NAME=PA.ATTR_HTTP_SCHEME=PA.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED=PA.ATTR_HTTP_RESPONSE_CONTENT_LENGTH=PA.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED=PA.ATTR_HTTP_REQUEST_CONTENT_LENGTH=PA.ATTR_HTTP_METHOD=PA.ATTR_HTTP_HOST=PA.ATTR_HTTP_FLAVOR=PA.ATTR_HTTP_CLIENT_IP=PA.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST=PA.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT=PA.ATTR_USER_AGENT_SYNTHETIC_TYPE=void 0;PA.ATTR_USER_AGENT_SYNTHETIC_TYPE="user_agent.synthetic.type";PA.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT="bot";PA.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST="test";PA.ATTR_HTTP_CLIENT_IP="http.client_ip";PA.ATTR_HTTP_FLAVOR="http.flavor";PA.ATTR_HTTP_HOST="http.host";PA.ATTR_HTTP_METHOD="http.method";PA.ATTR_HTTP_REQUEST_CONTENT_LENGTH="http.request_content_length";PA.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED="http.request_content_length_uncompressed";PA.ATTR_HTTP_RESPONSE_CONTENT_LENGTH="http.response_content_length";PA.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED="http.response_content_length_uncompressed";PA.ATTR_HTTP_SCHEME="http.scheme";PA.ATTR_HTTP_SERVER_NAME="http.server_name";PA.ATTR_HTTP_STATUS_CODE="http.status_code";PA.ATTR_HTTP_TARGET="http.target";PA.ATTR_HTTP_URL="http.url";PA.ATTR_HTTP_USER_AGENT="http.user_agent";PA.ATTR_NET_HOST_IP="net.host.ip";PA.ATTR_NET_HOST_NAME="net.host.name";PA.ATTR_NET_HOST_PORT="net.host.port";PA.ATTR_NET_PEER_IP="net.peer.ip";PA.ATTR_NET_PEER_NAME="net.peer.name";PA.ATTR_NET_PEER_PORT="net.peer.port";PA.ATTR_NET_TRANSPORT="net.transport";PA.NET_TRANSPORT_VALUE_IP_TCP="ip_tcp";PA.NET_TRANSPORT_VALUE_IP_UDP="ip_udp";PA.HTTP_FLAVOR_VALUE_HTTP_1_1="1.1"});var AA=w((RA)=>{Object.defineProperty(RA,"__esModule",{value:!0});RA.AttributeNames=void 0;var TK0;(function(Z){Z.HTTP_ERROR_NAME="http.error_name",Z.HTTP_ERROR_MESSAGE="http.error_message",Z.HTTP_STATUS_TEXT="http.status_text"})(TK0=RA.AttributeNames||(RA.AttributeNames={}))});var sY=w((IA)=>{Object.defineProperty(IA,"__esModule",{value:!0});IA.DEFAULT_QUERY_STRINGS_TO_REDACT=IA.STR_REDACTED=IA.SYNTHETIC_BOT_NAMES=IA.SYNTHETIC_TEST_NAMES=void 0;IA.SYNTHETIC_TEST_NAMES=["alwayson"];IA.SYNTHETIC_BOT_NAMES=["googlebot","bingbot"];IA.STR_REDACTED="REDACTED";IA.DEFAULT_QUERY_STRINGS_TO_REDACT=["sig","Signature","AWSAccessKeyId","X-Goog-Signature"]});var fA=w((Mb0,TA)=>{var hK0=A("util");function rY(Z,J){Error.captureStackTrace(this,rY),this.name=this.constructor.name,this.message=Z,this.input=J}hK0.inherits(rY,Error);TA.exports=rY});var yA=w((Rb0,EA)=>{function SK0(Z){return Z===34||Z===40||Z===41||Z===44||Z===47||Z>=58&&Z<=64||Z>=91&&Z<=93||Z===123||Z===125}function _K0(Z){return Z===33||Z>=35&&Z<=39||Z===42||Z===43||Z===45||Z===46||Z>=48&&Z<=57||Z>=65&&Z<=90||Z>=94&&Z<=122||Z===124||Z===126}function vK0(Z){return Z>=32&&Z<=126}function bK0(Z){return Z>=128&&Z<=255}EA.exports={isDelimiter:SK0,isTokenChar:_K0,isExtended:bK0,isPrint:vK0}});var bA=w((Ab0,vA)=>{var xK0=A("util"),f1=fA(),GQ=yA(),gK0=GQ.isDelimiter,hA=GQ.isTokenChar,SA=GQ.isExtended,dK0=GQ.isPrint;function _A(Z){return Z.replace(/\\(.)/g,"$1")}function D5(Z,J){return xK0.format("Unexpected character '%s' at index %d",Z.charAt(J),J)}function cK0(Z){var J=!1,Q=!1,$=!1,X={},Y=[],W=-1,K=-1,z,G;for(var H=0;H{Object.defineProperty(iA,"__esModule",{value:!0});iA.headerCapture=iA.getIncomingStableRequestMetricAttributesOnResponse=iA.getIncomingRequestMetricAttributesOnResponse=iA.getIncomingRequestAttributesOnResponse=iA.getIncomingRequestMetricAttributes=iA.getIncomingRequestAttributes=iA.getRemoteClientAddress=iA.getOutgoingStableRequestMetricAttributesOnResponse=iA.getOutgoingRequestMetricAttributesOnResponse=iA.getOutgoingRequestAttributesOnResponse=iA.setAttributesFromHttpKind=iA.getOutgoingRequestMetricAttributes=iA.getOutgoingRequestAttributes=iA.extractHostnameAndPort=iA.isValidOptionsType=iA.getRequestInfo=iA.isCompressed=iA.setResponseContentLengthAttribute=iA.setRequestContentLengthAttribute=iA.setSpanWithError=iA.satisfiesPattern=iA.parseResponseStatus=iA.getAbsoluteUrl=void 0;var U5=C(),o=s(),y=MA(),xA=FY(),R6=c(),mK0=A("url"),HQ=AA(),gA=sY(),BQ=sY(),uK0=bA(),lK0=(Z,J,Q="http:",$=Array.from(BQ.DEFAULT_QUERY_STRINGS_TO_REDACT))=>{let X=Z||{},Y=X.protocol||Q,W=(X.port||"").toString(),K=X.path||"/",z=X.host||X.hostname||J.host||"localhost";if(z.indexOf(":")===-1&&W&&W!=="80"&&W!=="443")z+=`:${W}`;if(K.includes("?"))try{let H=new URL(K,"http://localhost"),B=$||[];for(let V of B)if(H.searchParams.get(V))H.searchParams.set(V,BQ.STR_REDACTED);K=`${H.pathname}${H.search}`}catch{}let G=X.auth?`${BQ.STR_REDACTED}:${BQ.STR_REDACTED}@`:"";return`${Y}//${G}${z}${K}`};iA.getAbsoluteUrl=lK0;var pK0=(Z,J)=>{let Q=Z===U5.SpanKind.CLIENT?400:500;if(J&&J>=100&&J{if(typeof J==="string")return J===Z;else if(J instanceof RegExp)return J.test(Z);else if(typeof J==="function")return J(Z);else throw TypeError("Pattern is in unsupported datatype")};iA.satisfiesPattern=iK0;var oK0=(Z,J,Q)=>{let $=J.message;if(Q&R6.SemconvStability.OLD)Z.setAttribute(HQ.AttributeNames.HTTP_ERROR_NAME,J.name),Z.setAttribute(HQ.AttributeNames.HTTP_ERROR_MESSAGE,$);if(Q&R6.SemconvStability.STABLE)Z.setAttribute(o.ATTR_ERROR_TYPE,J.name);Z.setStatus({code:U5.SpanStatusCode.ERROR,message:$}),Z.recordException(J)};iA.setSpanWithError=oK0;var nK0=(Z,J)=>{let Q=cA(Z.headers);if(Q===null)return;if(iA.isCompressed(Z.headers))J[y.ATTR_HTTP_REQUEST_CONTENT_LENGTH]=Q;else J[y.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED]=Q};iA.setRequestContentLengthAttribute=nK0;var aK0=(Z,J)=>{let Q=cA(Z.headers);if(Q===null)return;if(iA.isCompressed(Z.headers))J[y.ATTR_HTTP_RESPONSE_CONTENT_LENGTH]=Q;else J[y.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]=Q};iA.setResponseContentLengthAttribute=aK0;function cA(Z){let J=Z["content-length"];if(J===void 0)return null;let Q=parseInt(J,10);if(isNaN(Q))return null;return Q}var sK0=(Z)=>{let J=Z["content-encoding"];return!!J&&J!=="identity"};iA.isCompressed=sK0;function rK0(Z){let{hostname:J,pathname:Q,port:$,username:X,password:Y,search:W,protocol:K,hash:z,href:G,origin:H,host:B}=new URL(Z),V={protocol:K,hostname:J&&J[0]==="["?J.slice(1,-1):J,hash:z,search:W,pathname:Q,path:`${Q||""}${W||""}`,href:G,origin:H,host:B};if($!=="")V.port=Number($);if(X||Y)V.auth=`${decodeURIComponent(X)}:${decodeURIComponent(Y)}`;return V}var tK0=(Z,J,Q)=>{let $,X,Y,W=!1;if(typeof J==="string"){try{let z=rK0(J);Y=z,$=z.pathname||"/"}catch(z){W=!0,Z.verbose("Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:",z),Y={path:J},$=Y.path||"/"}if(X=`${Y.protocol||"http:"}//${Y.host}`,Q!==void 0)Object.assign(Y,Q)}else if(J instanceof mK0.URL){if(Y={protocol:J.protocol,hostname:typeof J.hostname==="string"&&J.hostname.startsWith("[")?J.hostname.slice(1,-1):J.hostname,path:`${J.pathname||""}${J.search||""}`},J.port!=="")Y.port=Number(J.port);if(J.username||J.password)Y.auth=`${J.username}:${J.password}`;if($=J.pathname,X=J.origin,Q!==void 0)Object.assign(Y,Q)}else{Y=Object.assign({protocol:J.host?"http:":void 0},J);let z=Y.host||(Y.port!=null?`${Y.hostname}${Y.port}`:Y.hostname);if(X=`${Y.protocol||"http:"}//${z}`,$=J.pathname,!$&&Y.path)try{$=new URL(Y.path,X).pathname||"/"}catch{$="/"}}let K=Y.method?Y.method.toUpperCase():"GET";return{origin:X,pathname:$,method:K,optionsParsed:Y,invalidUrl:W}};iA.getRequestInfo=tK0;var eK0=(Z)=>{if(!Z)return!1;let J=typeof Z;return J==="string"||J==="object"&&!Array.isArray(Z)};iA.isValidOptionsType=eK0;var Zz0=(Z)=>{if(Z.hostname&&Z.port)return{hostname:Z.hostname,port:Z.port};let J=Z.host?.match(/^([^:/ ]+)(:\d{1,5})?/)||null,Q=Z.hostname||(J===null?"localhost":J[1]),$=Z.port;if(!$)if(J&&J[2])$=J[2].substring(1);else $=Z.protocol==="https:"?"443":"80";return{hostname:Q,port:$}};iA.extractHostnameAndPort=Zz0;var Jz0=(Z,J,Q,$)=>{let{hostname:X,port:Y}=J,W=Z.method??"GET",K=lA(W),z=Z.headers||{},G=z["user-agent"],H=iA.getAbsoluteUrl(Z,z,`${J.component}:`,J.redactedQueryParams),B={[y.ATTR_HTTP_URL]:H,[y.ATTR_HTTP_METHOD]:W,[y.ATTR_HTTP_TARGET]:Z.path||"/",[y.ATTR_NET_PEER_NAME]:X,[y.ATTR_HTTP_HOST]:z.host??`${X}:${Y}`},V={[o.ATTR_HTTP_REQUEST_METHOD]:K,[o.ATTR_SERVER_ADDRESS]:X,[o.ATTR_SERVER_PORT]:Number(Y),[o.ATTR_URL_FULL]:H,[o.ATTR_USER_AGENT_ORIGINAL]:G};if(W!==K)V[o.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]=W;if($&&G)V[y.ATTR_USER_AGENT_SYNTHETIC_TYPE]=mA(G);if(G!==void 0)B[y.ATTR_HTTP_USER_AGENT]=G;switch(Q){case R6.SemconvStability.STABLE:return Object.assign(V,J.hookAttributes);case R6.SemconvStability.OLD:return Object.assign(B,J.hookAttributes)}return Object.assign(B,V,J.hookAttributes)};iA.getOutgoingRequestAttributes=Jz0;var Qz0=(Z)=>{let J={};return J[y.ATTR_HTTP_METHOD]=Z[y.ATTR_HTTP_METHOD],J[y.ATTR_NET_PEER_NAME]=Z[y.ATTR_NET_PEER_NAME],J};iA.getOutgoingRequestMetricAttributes=Qz0;var $z0=(Z,J)=>{if(Z)if(J[y.ATTR_HTTP_FLAVOR]=Z,Z.toUpperCase()!=="QUIC")J[y.ATTR_NET_TRANSPORT]=y.NET_TRANSPORT_VALUE_IP_TCP;else J[y.ATTR_NET_TRANSPORT]=y.NET_TRANSPORT_VALUE_IP_UDP};iA.setAttributesFromHttpKind=$z0;var mA=(Z)=>{let J=String(Z).toLowerCase();for(let Q of gA.SYNTHETIC_TEST_NAMES)if(J.includes(Q))return y.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST;for(let Q of gA.SYNTHETIC_BOT_NAMES)if(J.includes(Q))return y.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT;return},Xz0=(Z,J)=>{let{statusCode:Q,statusMessage:$,httpVersion:X,socket:Y}=Z,W={},K={};if(Q!=null)K[o.ATTR_HTTP_RESPONSE_STATUS_CODE]=Q;if(Y){let{remoteAddress:z,remotePort:G}=Y;W[y.ATTR_NET_PEER_IP]=z,W[y.ATTR_NET_PEER_PORT]=G,K[o.ATTR_NETWORK_PEER_ADDRESS]=z,K[o.ATTR_NETWORK_PEER_PORT]=G,K[o.ATTR_NETWORK_PROTOCOL_VERSION]=Z.httpVersion}if(iA.setResponseContentLengthAttribute(Z,W),Q)W[y.ATTR_HTTP_STATUS_CODE]=Q,W[HQ.AttributeNames.HTTP_STATUS_TEXT]=($||"").toUpperCase();switch(iA.setAttributesFromHttpKind(X,W),J){case R6.SemconvStability.STABLE:return K;case R6.SemconvStability.OLD:return W}return Object.assign(W,K)};iA.getOutgoingRequestAttributesOnResponse=Xz0;var Yz0=(Z)=>{let J={};return J[y.ATTR_NET_PEER_PORT]=Z[y.ATTR_NET_PEER_PORT],J[y.ATTR_HTTP_STATUS_CODE]=Z[y.ATTR_HTTP_STATUS_CODE],J[y.ATTR_HTTP_FLAVOR]=Z[y.ATTR_HTTP_FLAVOR],J};iA.getOutgoingRequestMetricAttributesOnResponse=Yz0;var Wz0=(Z)=>{let J={};if(Z[o.ATTR_NETWORK_PROTOCOL_VERSION])J[o.ATTR_NETWORK_PROTOCOL_VERSION]=Z[o.ATTR_NETWORK_PROTOCOL_VERSION];if(Z[o.ATTR_HTTP_RESPONSE_STATUS_CODE])J[o.ATTR_HTTP_RESPONSE_STATUS_CODE]=Z[o.ATTR_HTTP_RESPONSE_STATUS_CODE];return J};iA.getOutgoingStableRequestMetricAttributesOnResponse=Wz0;function PZ(Z,J){let Q=Z.split(":");if(Q.length===1){if(J==="http")return{host:Q[0],port:"80"};if(J==="https")return{host:Q[0],port:"443"};return{host:Q[0]}}if(Q.length===2)return{host:Q[0],port:Q[1]};if(Q[0].startsWith("[")){if(Q[Q.length-1].endsWith("]")){if(J==="http")return{host:Z,port:"80"};if(J==="https")return{host:Z,port:"443"}}else if(Q[Q.length-2].endsWith("]"))return{host:Q.slice(0,-1).join(":"),port:Q[Q.length-1]}}return{host:Z}}function Kz0(Z,J){let Q=Z.headers.forwarded;if(Q){for(let Y of pA(Q))if(Y.host)return PZ(Y.host,Y.proto)}let $=Z.headers["x-forwarded-host"];if(typeof $==="string"){if(typeof Z.headers["x-forwarded-proto"]==="string")return PZ($,Z.headers["x-forwarded-proto"]);if(Array.isArray(Z.headers["x-forwarded-proto"]))return PZ($,Z.headers["x-forwarded-proto"][0]);return PZ($)}else if(Array.isArray($)&&typeof $[0]==="string"&&$[0].length>0){if(typeof Z.headers["x-forwarded-proto"]==="string")return PZ($[0],Z.headers["x-forwarded-proto"]);if(Array.isArray(Z.headers["x-forwarded-proto"]))return PZ($[0],Z.headers["x-forwarded-proto"][0]);return PZ($[0])}let X=Z.headers.host;if(typeof X==="string"&&X.length>0)return PZ(X,J);return null}function uA(Z){let J=Z.headers.forwarded;if(J){for(let X of pA(J))if(X.for)return dA(X.for)}let Q=Z.headers["x-forwarded-for"];if(Q){let X;if(typeof Q==="string")X=Q;else if(Array.isArray(Q))X=Q[0];if(typeof X==="string")return X=X.split(",")[0].trim(),dA(X)}let $=Z.socket.remoteAddress;if($)return $;return null}iA.getRemoteClientAddress=uA;function dA(Z){try{let{hostname:J}=new URL(`http://${Z}`);if(J.startsWith("[")&&J.endsWith("]"))return J.slice(1,-1);return J}catch{return Z}}function zz0(Z,J,Q){try{if(J.headers.host)return new URL(J.url??"/",`${Z}://${J.headers.host}`);else{let $=new URL(J.url??"/",`${Z}://localhost`);return{pathname:$.pathname,search:$.search,toString:function(){return $.pathname+$.search}}}}catch($){return Q.verbose("Unable to get URL from request",$),{}}}var Gz0=(Z,J,Q)=>{let{component:$,enableSyntheticSourceDetection:X,hookAttributes:Y,semconvStability:W,serverName:K}=J,{headers:z,httpVersion:G,method:H}=Z,{host:B,"user-agent":V,"x-forwarded-for":F}=z,D=zz0($,Z,Q),U,j;if(W!==R6.SemconvStability.OLD){let L=lA(H),O=Kz0(Z,$),M=uA(Z);if(U={[o.ATTR_HTTP_REQUEST_METHOD]:L,[o.ATTR_URL_SCHEME]:$,[o.ATTR_SERVER_ADDRESS]:O?.host,[o.ATTR_NETWORK_PEER_ADDRESS]:Z.socket.remoteAddress,[o.ATTR_NETWORK_PEER_PORT]:Z.socket.remotePort,[o.ATTR_NETWORK_PROTOCOL_VERSION]:Z.httpVersion,[o.ATTR_USER_AGENT_ORIGINAL]:V},D.pathname!=null)U[o.ATTR_URL_PATH]=D.pathname;if(D.search)U[o.ATTR_URL_QUERY]=D.search.slice(1);if(M!=null)U[o.ATTR_CLIENT_ADDRESS]=M;if(O?.port!=null)U[o.ATTR_SERVER_PORT]=Number(O.port);if(H!==L)U[o.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]=H;if(X&&V)U[y.ATTR_USER_AGENT_SYNTHETIC_TYPE]=mA(V)}if(W!==R6.SemconvStability.STABLE){let L=B?.replace(/^(.*)(:[0-9]{1,5})/,"$1")||"localhost";if(j={[y.ATTR_HTTP_URL]:D.toString(),[y.ATTR_HTTP_HOST]:B,[y.ATTR_NET_HOST_NAME]:L,[y.ATTR_HTTP_METHOD]:H,[y.ATTR_HTTP_SCHEME]:$},typeof F==="string")j[y.ATTR_HTTP_CLIENT_IP]=F.split(",")[0];if(typeof K==="string")j[y.ATTR_HTTP_SERVER_NAME]=K;if(D.pathname)j[y.ATTR_HTTP_TARGET]=D.pathname+D.search||"/";if(V!==void 0)j[y.ATTR_HTTP_USER_AGENT]=V;iA.setRequestContentLengthAttribute(Z,j),iA.setAttributesFromHttpKind(G,j)}switch(W){case R6.SemconvStability.STABLE:return Object.assign(U,Y);case R6.SemconvStability.OLD:return Object.assign(j,Y);default:return Object.assign(j,U,Y)}};iA.getIncomingRequestAttributes=Gz0;var Bz0=(Z)=>{let J={};return J[y.ATTR_HTTP_SCHEME]=Z[y.ATTR_HTTP_SCHEME],J[y.ATTR_HTTP_METHOD]=Z[y.ATTR_HTTP_METHOD],J[y.ATTR_NET_HOST_NAME]=Z[y.ATTR_NET_HOST_NAME],J[y.ATTR_HTTP_FLAVOR]=Z[y.ATTR_HTTP_FLAVOR],J};iA.getIncomingRequestMetricAttributes=Bz0;var Hz0=(Z,J,Q)=>{let{socket:$}=Z,{statusCode:X,statusMessage:Y}=J,W={[o.ATTR_HTTP_RESPONSE_STATUS_CODE]:X},K=(0,xA.getRPCMetadata)(U5.context.active()),z={};if($){let{localAddress:G,localPort:H,remoteAddress:B,remotePort:V}=$;z[y.ATTR_NET_HOST_IP]=G,z[y.ATTR_NET_HOST_PORT]=H,z[y.ATTR_NET_PEER_IP]=B,z[y.ATTR_NET_PEER_PORT]=V}if(z[y.ATTR_HTTP_STATUS_CODE]=X,z[HQ.AttributeNames.HTTP_STATUS_TEXT]=(Y||"").toUpperCase(),K?.type===xA.RPCType.HTTP&&K.route!==void 0)z[o.ATTR_HTTP_ROUTE]=K.route,W[o.ATTR_HTTP_ROUTE]=K.route;switch(Q){case R6.SemconvStability.STABLE:return W;case R6.SemconvStability.OLD:return z}return Object.assign(z,W)};iA.getIncomingRequestAttributesOnResponse=Hz0;var Vz0=(Z)=>{let J={};if(J[y.ATTR_HTTP_STATUS_CODE]=Z[y.ATTR_HTTP_STATUS_CODE],J[y.ATTR_NET_HOST_PORT]=Z[y.ATTR_NET_HOST_PORT],Z[o.ATTR_HTTP_ROUTE]!==void 0)J[o.ATTR_HTTP_ROUTE]=Z[o.ATTR_HTTP_ROUTE];return J};iA.getIncomingRequestMetricAttributesOnResponse=Vz0;var Fz0=(Z)=>{let J={};if(Z[o.ATTR_HTTP_ROUTE]!==void 0)J[o.ATTR_HTTP_ROUTE]=Z[o.ATTR_HTTP_ROUTE];if(Z[o.ATTR_HTTP_RESPONSE_STATUS_CODE])J[o.ATTR_HTTP_RESPONSE_STATUS_CODE]=Z[o.ATTR_HTTP_RESPONSE_STATUS_CODE];return J};iA.getIncomingStableRequestMetricAttributesOnResponse=Fz0;function wz0(Z,J,Q){let $=new Map;for(let X=0,Y=J.length;X{let Y={};for(let W of $.keys()){let K=X(W);if(K===void 0)continue;let z=$.get(W),G=`http.${Z}.header.${z}`;if(typeof K==="string")Y[G]=[K];else if(Array.isArray(K))Y[G]=K;else Y[G]=[K]}return Y}}iA.headerCapture=wz0;var Dz0=new Set(["GET","HEAD","POST","PUT","DELETE","CONNECT","OPTIONS","TRACE","PATCH","QUERY"]);function lA(Z){if(Z==null)return"GET";let J=Z.toUpperCase();if(Dz0.has(J))return J;return"_OTHER"}function pA(Z){try{return uK0(Z)}catch{return[]}}});var JI=w((eA)=>{Object.defineProperty(eA,"__esModule",{value:!0});eA.HttpInstrumentation=void 0;var u=C(),kZ=FY(),hz0=A("url"),Sz0=MM(),h0=c(),ZW=A("events"),G0=s(),L0=rA();class tA extends h0.InstrumentationBase{_spanNotEnded=new WeakSet;_headerCapture;_httpPatched=!1;_httpsPatched=!1;_semconvStability=h0.SemconvStability.OLD;constructor(Z={}){super("@opentelemetry/instrumentation-http",Sz0.VERSION,Z);this._semconvStability=(0,h0.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._headerCapture=this._createHeaderCapture(this._semconvStability)}_updateMetricInstruments(){this._oldHttpServerDurationHistogram=this.meter.createHistogram("http.server.duration",{description:"Measures the duration of inbound HTTP requests.",unit:"ms",valueType:u.ValueType.DOUBLE}),this._oldHttpClientDurationHistogram=this.meter.createHistogram("http.client.duration",{description:"Measures the duration of outbound HTTP requests.",unit:"ms",valueType:u.ValueType.DOUBLE}),this._stableHttpServerDurationHistogram=this.meter.createHistogram(G0.METRIC_HTTP_SERVER_REQUEST_DURATION,{description:"Duration of HTTP server requests.",unit:"s",valueType:u.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}}),this._stableHttpClientDurationHistogram=this.meter.createHistogram(G0.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Duration of HTTP client requests.",unit:"s",valueType:u.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}})}_recordServerDuration(Z,J,Q){if(this._semconvStability&h0.SemconvStability.OLD)this._oldHttpServerDurationHistogram.record(Z,J);if(this._semconvStability&h0.SemconvStability.STABLE)this._stableHttpServerDurationHistogram.record(Z/1000,Q)}_recordClientDuration(Z,J,Q){if(this._semconvStability&h0.SemconvStability.OLD)this._oldHttpClientDurationHistogram.record(Z,J);if(this._semconvStability&h0.SemconvStability.STABLE)this._stableHttpClientDurationHistogram.record(Z/1000,Q)}setConfig(Z={}){super.setConfig(Z),this._headerCapture=this._createHeaderCapture(this._semconvStability)}init(){return[this._getHttpsInstrumentation(),this._getHttpInstrumentation()]}_getHttpInstrumentation(){return new h0.InstrumentationNodeModuleDefinition("http",["*"],(Z)=>{if(this._httpPatched)return Z;this._httpPatched=!0;let J=Z[Symbol.toStringTag]==="Module";if(!this.getConfig().disableOutgoingRequestInstrumentation){let Q=this._wrap(Z,"request",this._getPatchOutgoingRequestFunction("http")),$=this._wrap(Z,"get",this._getPatchOutgoingGetFunction(Q));if(J)Z.default.request=Q,Z.default.get=$}if(!this.getConfig().disableIncomingRequestInstrumentation)this._wrap(Z.Server.prototype,"emit",this._getPatchIncomingRequestFunction("http"));return Z},(Z)=>{if(this._httpPatched=!1,Z===void 0)return;if(!this.getConfig().disableOutgoingRequestInstrumentation)this._unwrap(Z,"request"),this._unwrap(Z,"get");if(!this.getConfig().disableIncomingRequestInstrumentation)this._unwrap(Z.Server.prototype,"emit")})}_getHttpsInstrumentation(){return new h0.InstrumentationNodeModuleDefinition("https",["*"],(Z)=>{if(this._httpsPatched)return Z;this._httpsPatched=!0;let J=Z[Symbol.toStringTag]==="Module";if(!this.getConfig().disableOutgoingRequestInstrumentation){let Q=this._wrap(Z,"request",this._getPatchHttpsOutgoingRequestFunction("https")),$=this._wrap(Z,"get",this._getPatchHttpsOutgoingGetFunction(Q));if(J)Z.default.request=Q,Z.default.get=$}if(!this.getConfig().disableIncomingRequestInstrumentation)this._wrap(Z.Server.prototype,"emit",this._getPatchIncomingRequestFunction("https"));return Z},(Z)=>{if(this._httpsPatched=!1,Z===void 0)return;if(!this.getConfig().disableOutgoingRequestInstrumentation)this._unwrap(Z,"request"),this._unwrap(Z,"get");if(!this.getConfig().disableIncomingRequestInstrumentation)this._unwrap(Z.Server.prototype,"emit")})}_getPatchIncomingRequestFunction(Z){return(J)=>{return this._incomingRequestFunction(Z,J)}}_getPatchOutgoingRequestFunction(Z){return(J)=>{return this._outgoingRequestFunction(Z,J)}}_getPatchOutgoingGetFunction(Z){return(J)=>{return function($,...X){let Y=Z($,...X);return Y.end(),Y}}}_getPatchHttpsOutgoingRequestFunction(Z){return(J)=>{let Q=this;return function(X,...Y){if(Z==="https"&&typeof X==="object"&&X?.constructor?.name!=="URL")X=Object.assign({},X),Q._setDefaultOptions(X);return Q._getPatchOutgoingRequestFunction(Z)(J)(X,...Y)}}}_setDefaultOptions(Z){Z.protocol=Z.protocol||"https:",Z.port=Z.port||443}_getPatchHttpsOutgoingGetFunction(Z){return(J)=>{let Q=this;return function(X,...Y){return Q._getPatchOutgoingGetFunction(Z)(J)(X,...Y)}}}_traceClientRequest(Z,J,Q,$,X){if(this.getConfig().requestHook)this._callRequestHook(J,Z);let Y=!1;return Z.prependListener("response",(W)=>{if(this._diag.debug("outgoingRequest on response()"),Z.listenerCount("response")<=1)W.resume();let K=(0,L0.getOutgoingRequestAttributesOnResponse)(W,this._semconvStability);if(J.setAttributes(K),$=Object.assign($,(0,L0.getOutgoingRequestMetricAttributesOnResponse)(K)),X=Object.assign(X,(0,L0.getOutgoingStableRequestMetricAttributesOnResponse)(K)),this.getConfig().responseHook)this._callResponseHook(J,W);J.setAttributes(this._headerCapture.client.captureRequestHeaders((G)=>Z.getHeader(G))),J.setAttributes(this._headerCapture.client.captureResponseHeaders((G)=>W.headers[G])),u.context.bind(u.context.active(),W);let z=()=>{if(this._diag.debug("outgoingRequest on end()"),Y)return;Y=!0;let G;if(W.aborted&&!W.complete)G={code:u.SpanStatusCode.ERROR};else G={code:(0,L0.parseResponseStatus)(u.SpanKind.CLIENT,W.statusCode)};if(J.setStatus(G),this.getConfig().applyCustomAttributesOnSpan)(0,h0.safeExecuteInTheMiddle)(()=>this.getConfig().applyCustomAttributesOnSpan(J,Z,W),()=>{},!0);this._closeHttpSpan(J,u.SpanKind.CLIENT,Q,$,X)};W.on("end",z),W.on(ZW.errorMonitor,(G)=>{if(this._diag.debug("outgoingRequest on error()",G),Y)return;Y=!0,this._onOutgoingRequestError(J,$,X,Q,G)})}),Z.on("close",()=>{if(this._diag.debug("outgoingRequest on request close()"),Z.aborted||Y)return;Y=!0,this._closeHttpSpan(J,u.SpanKind.CLIENT,Q,$,X)}),Z.on(ZW.errorMonitor,(W)=>{if(this._diag.debug("outgoingRequest on request error()",W),Y)return;Y=!0,this._onOutgoingRequestError(J,$,X,Q,W)}),this._diag.debug("http.ClientRequest return request"),Z}_incomingRequestFunction(Z,J){let Q=this;return function(X,...Y){if(X!=="request")return J.apply(this,[X,...Y]);let W=Y[0],K=Y[1],z=W.method||"GET";if(Q._diag.debug(`${Z} instrumentation incomingRequest`),(0,h0.safeExecuteInTheMiddle)(()=>Q.getConfig().ignoreIncomingRequestHook?.(W),(O)=>{if(O!=null)Q._diag.error("caught ignoreIncomingRequestHook error: ",O)},!0))return u.context.with((0,kZ.suppressTracing)(u.context.active()),()=>{return u.context.bind(u.context.active(),W),u.context.bind(u.context.active(),K),J.apply(this,[X,...Y])});let G=W.headers,H=(0,L0.getIncomingRequestAttributes)(W,{component:Z,serverName:Q.getConfig().serverName,hookAttributes:Q._callStartSpanHook(W,Q.getConfig().startIncomingSpanHook),semconvStability:Q._semconvStability,enableSyntheticSourceDetection:Q.getConfig().enableSyntheticSourceDetection||!1},Q._diag);Object.assign(H,Q._headerCapture.server.captureRequestHeaders((O)=>W.headers[O]));let B={kind:u.SpanKind.SERVER,attributes:H},V=(0,kZ.hrTime)(),F=(0,L0.getIncomingRequestMetricAttributes)(H),D={[G0.ATTR_HTTP_REQUEST_METHOD]:H[G0.ATTR_HTTP_REQUEST_METHOD],[G0.ATTR_URL_SCHEME]:H[G0.ATTR_URL_SCHEME]};if(H[G0.ATTR_NETWORK_PROTOCOL_VERSION])D[G0.ATTR_NETWORK_PROTOCOL_VERSION]=H[G0.ATTR_NETWORK_PROTOCOL_VERSION];let U=u.propagation.extract(u.ROOT_CONTEXT,G),j=Q._startHttpSpan(z,B,U),L={type:kZ.RPCType.HTTP,span:j};return u.context.with((0,kZ.setRPCMetadata)(u.trace.setSpan(U,j),L),()=>{if(u.context.bind(u.context.active(),W),u.context.bind(u.context.active(),K),Q.getConfig().requestHook)Q._callRequestHook(j,W);if(Q.getConfig().responseHook)Q._callResponseHook(j,K);let O=!1;return K.on("close",()=>{if(O)return;Q._onServerResponseFinish(W,K,j,F,D,V)}),K.on(ZW.errorMonitor,(M)=>{O=!0,Q._onServerResponseError(j,F,D,V,M)}),(0,h0.safeExecuteInTheMiddle)(()=>J.apply(this,[X,...Y]),(M)=>{if(M)throw Q._onServerResponseError(j,F,D,V,M),M})})}}_outgoingRequestFunction(Z,J){let Q=this;return function(X,...Y){if(!(0,L0.isValidOptionsType)(X))return J.apply(this,[X,...Y]);let W=typeof Y[0]==="object"&&(typeof X==="string"||X instanceof hz0.URL)?Y.shift():void 0,{method:K,invalidUrl:z,optionsParsed:G}=(0,L0.getRequestInfo)(Q._diag,X,W);if((0,h0.safeExecuteInTheMiddle)(()=>Q.getConfig().ignoreOutgoingRequestHook?.(G),(S)=>{if(S!=null)Q._diag.error("caught ignoreOutgoingRequestHook error: ",S)},!0))return J.apply(this,[G,...Y]);let{hostname:H,port:B}=(0,L0.extractHostnameAndPort)(G),V=(0,L0.getOutgoingRequestAttributes)(G,{component:Z,port:B,hostname:H,hookAttributes:Q._callStartSpanHook(G,Q.getConfig().startOutgoingSpanHook),redactedQueryParams:Q.getConfig().redactedQueryParams},Q._semconvStability,Q.getConfig().enableSyntheticSourceDetection||!1),F=(0,kZ.hrTime)(),D=(0,L0.getOutgoingRequestMetricAttributes)(V),U={[G0.ATTR_HTTP_REQUEST_METHOD]:V[G0.ATTR_HTTP_REQUEST_METHOD],[G0.ATTR_SERVER_ADDRESS]:V[G0.ATTR_SERVER_ADDRESS],[G0.ATTR_SERVER_PORT]:V[G0.ATTR_SERVER_PORT]};if(V[G0.ATTR_HTTP_RESPONSE_STATUS_CODE])U[G0.ATTR_HTTP_RESPONSE_STATUS_CODE]=V[G0.ATTR_HTTP_RESPONSE_STATUS_CODE];if(V[G0.ATTR_NETWORK_PROTOCOL_VERSION])U[G0.ATTR_NETWORK_PROTOCOL_VERSION]=V[G0.ATTR_NETWORK_PROTOCOL_VERSION];let j={kind:u.SpanKind.CLIENT,attributes:V},L=Q._startHttpSpan(K,j),O=u.context.active(),M=u.trace.setSpan(O,L);if(!G.headers)G.headers={};else G.headers=Object.assign({},G.headers);return u.propagation.inject(M,G.headers),u.context.with(M,()=>{let S=Y[Y.length-1];if(typeof S==="function")Y[Y.length-1]=u.context.bind(O,S);let T=(0,h0.safeExecuteInTheMiddle)(()=>{if(z)return J.apply(this,[X,...Y]);else return J.apply(this,[G,...Y])},(n)=>{if(n)throw Q._onOutgoingRequestError(L,D,U,F,n),n});return Q._diag.debug(`${Z} instrumentation outgoingRequest`),u.context.bind(O,T),Q._traceClientRequest(T,L,F,D,U)})}}_onServerResponseFinish(Z,J,Q,$,X,Y){let W=(0,L0.getIncomingRequestAttributesOnResponse)(Z,J,this._semconvStability);$=Object.assign($,(0,L0.getIncomingRequestMetricAttributesOnResponse)(W)),X=Object.assign(X,(0,L0.getIncomingStableRequestMetricAttributesOnResponse)(W)),Q.setAttributes(this._headerCapture.server.captureResponseHeaders((z)=>J.getHeader(z))),Q.setAttributes(W).setStatus({code:(0,L0.parseResponseStatus)(u.SpanKind.SERVER,J.statusCode)});let K=W[G0.ATTR_HTTP_ROUTE];if(K)Q.updateName(`${Z.method||"GET"} ${K}`);if(this.getConfig().applyCustomAttributesOnSpan)(0,h0.safeExecuteInTheMiddle)(()=>this.getConfig().applyCustomAttributesOnSpan(Q,Z,J),()=>{},!0);this._closeHttpSpan(Q,u.SpanKind.SERVER,Y,$,X)}_onOutgoingRequestError(Z,J,Q,$,X){(0,L0.setSpanWithError)(Z,X,this._semconvStability),Q[G0.ATTR_ERROR_TYPE]=X.name,this._closeHttpSpan(Z,u.SpanKind.CLIENT,$,J,Q)}_onServerResponseError(Z,J,Q,$,X){(0,L0.setSpanWithError)(Z,X,this._semconvStability),Q[G0.ATTR_ERROR_TYPE]=X.name,this._closeHttpSpan(Z,u.SpanKind.SERVER,$,J,Q)}_startHttpSpan(Z,J,Q=u.context.active()){let $=J.kind===u.SpanKind.CLIENT?this.getConfig().requireParentforOutgoingSpans:this.getConfig().requireParentforIncomingSpans,X,Y=u.trace.getSpan(Q);if($===!0&&(!Y||!u.trace.isSpanContextValid(Y.spanContext())))X=u.trace.wrapSpanContext(u.INVALID_SPAN_CONTEXT);else if($===!0&&Y?.spanContext().isRemote)X=Y;else X=this.tracer.startSpan(Z,J,Q);return this._spanNotEnded.add(X),X}_closeHttpSpan(Z,J,Q,$,X){if(!this._spanNotEnded.has(Z))return;Z.end(),this._spanNotEnded.delete(Z);let Y=(0,kZ.hrTimeToMilliseconds)((0,kZ.hrTimeDuration)(Q,(0,kZ.hrTime)()));if(J===u.SpanKind.SERVER)this._recordServerDuration(Y,$,X);else if(J===u.SpanKind.CLIENT)this._recordClientDuration(Y,$,X)}_callResponseHook(Z,J){(0,h0.safeExecuteInTheMiddle)(()=>this.getConfig().responseHook(Z,J),()=>{},!0)}_callRequestHook(Z,J){(0,h0.safeExecuteInTheMiddle)(()=>this.getConfig().requestHook(Z,J),()=>{},!0)}_callStartSpanHook(Z,J){if(typeof J==="function")return(0,h0.safeExecuteInTheMiddle)(()=>J(Z),()=>{},!0)}_createHeaderCapture(Z){let J=this.getConfig();return{client:{captureRequestHeaders:(0,L0.headerCapture)("request",J.headersToSpanAttributes?.client?.requestHeaders??[],Z),captureResponseHeaders:(0,L0.headerCapture)("response",J.headersToSpanAttributes?.client?.responseHeaders??[],Z)},server:{captureRequestHeaders:(0,L0.headerCapture)("request",J.headersToSpanAttributes?.server?.requestHeaders??[],Z),captureResponseHeaders:(0,L0.headerCapture)("response",J.headersToSpanAttributes?.server?.responseHeaders??[],Z)}}}}eA.HttpInstrumentation=tA});var QI=w((JW)=>{Object.defineProperty(JW,"__esModule",{value:!0});JW.HttpInstrumentation=void 0;var _z0=JI();Object.defineProperty(JW,"HttpInstrumentation",{enumerable:!0,get:function(){return _z0.HttpInstrumentation}})});var B4=w((FE)=>{Object.defineProperty(FE,"__esModule",{value:!0});FE.isTracingSuppressed=FE.unsuppressTracing=FE.suppressTracing=void 0;var TV0=C(),tK=(0,TV0.createContextKey)("OpenTelemetry SDK Context Key SUPPRESS_TRACING");function fV0(Z){return Z.setValue(tK,!0)}FE.suppressTracing=fV0;function EV0(Z){return Z.deleteValue(tK)}FE.unsuppressTracing=EV0;function yV0(Z){return Z.getValue(tK)===!0}FE.isTracingSuppressed=yV0});var eK=w((DE)=>{Object.defineProperty(DE,"__esModule",{value:!0});DE.BAGGAGE_MAX_TOTAL_LENGTH=DE.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=DE.BAGGAGE_MAX_NAME_VALUE_PAIRS=DE.BAGGAGE_HEADER=DE.BAGGAGE_ITEMS_SEPARATOR=DE.BAGGAGE_PROPERTIES_SEPARATOR=DE.BAGGAGE_KEY_PAIR_SEPARATOR=void 0;DE.BAGGAGE_KEY_PAIR_SEPARATOR="=";DE.BAGGAGE_PROPERTIES_SEPARATOR=";";DE.BAGGAGE_ITEMS_SEPARATOR=",";DE.BAGGAGE_HEADER="baggage";DE.BAGGAGE_MAX_NAME_VALUE_PAIRS=180;DE.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=4096;DE.BAGGAGE_MAX_TOTAL_LENGTH=8192});var Zz=w((qE)=>{Object.defineProperty(qE,"__esModule",{value:!0});qE.parseKeyPairsIntoRecord=qE.parsePairKeyValue=qE.getKeyPairs=qE.serializeKeyPairs=void 0;var cV0=C(),B8=eK();function mV0(Z){return Z.reduce((J,Q)=>{let $=`${J}${J!==""?B8.BAGGAGE_ITEMS_SEPARATOR:""}${Q}`;return $.length>B8.BAGGAGE_MAX_TOTAL_LENGTH?J:$},"")}qE.serializeKeyPairs=mV0;function uV0(Z){return Z.getAllEntries().map(([J,Q])=>{let $=`${encodeURIComponent(J)}=${encodeURIComponent(Q.value)}`;if(Q.metadata!==void 0)$+=B8.BAGGAGE_PROPERTIES_SEPARATOR+Q.metadata.toString();return $})}qE.getKeyPairs=uV0;function jE(Z){if(!Z)return;let J=Z.indexOf(B8.BAGGAGE_PROPERTIES_SEPARATOR),Q=J===-1?Z:Z.substring(0,J),$=Q.indexOf(B8.BAGGAGE_KEY_PAIR_SEPARATOR);if($<=0)return;let X=Q.substring(0,$).trim(),Y=Q.substring($+1).trim();if(!X||!Y)return;let W,K;try{W=decodeURIComponent(X),K=decodeURIComponent(Y)}catch{return}let z;if(J!==-1&&J0)Z.split(B8.BAGGAGE_ITEMS_SEPARATOR).forEach((Q)=>{let $=jE(Q);if($!==void 0&&$.value.length>0)J[$.key]=$.value});return J}qE.parseKeyPairsIntoRecord=lV0});var kE=w((CE)=>{Object.defineProperty(CE,"__esModule",{value:!0});CE.W3CBaggagePropagator=void 0;var Jz=C(),nV0=B4(),Z1=eK(),Qz=Zz();class OE{inject(Z,J,Q){let $=Jz.propagation.getBaggage(Z);if(!$||(0,nV0.isTracingSuppressed)(Z))return;let X=(0,Qz.getKeyPairs)($).filter((W)=>{return W.length<=Z1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS}).slice(0,Z1.BAGGAGE_MAX_NAME_VALUE_PAIRS),Y=(0,Qz.serializeKeyPairs)(X);if(Y.length>0)Q.set(J,Z1.BAGGAGE_HEADER,Y)}extract(Z,J,Q){let $=Q.get(J,Z1.BAGGAGE_HEADER),X=Array.isArray($)?$.join(Z1.BAGGAGE_ITEMS_SEPARATOR):$;if(!X)return Z;let Y={};if(X.length===0)return Z;if(X.split(Z1.BAGGAGE_ITEMS_SEPARATOR).forEach((K)=>{let z=(0,Qz.parsePairKeyValue)(K);if(z){let G={value:z.value};if(z.metadata)G.metadata=z.metadata;Y[z.key]=G}}),Object.entries(Y).length===0)return Z;return Jz.propagation.setBaggage(Z,Jz.propagation.createBaggage(Y))}fields(){return[Z1.BAGGAGE_HEADER]}}CE.W3CBaggagePropagator=OE});var IE=w((RE)=>{Object.defineProperty(RE,"__esModule",{value:!0});RE.AnchoredClock=void 0;class ME{_monotonicClock;_epochMillis;_performanceMillis;constructor(Z,J){this._monotonicClock=J,this._epochMillis=Z.now(),this._performanceMillis=J.now()}now(){let Z=this._monotonicClock.now()-this._performanceMillis;return this._epochMillis+Z}}RE.AnchoredClock=ME});var SE=w((yE)=>{Object.defineProperty(yE,"__esModule",{value:!0});yE.isAttributeValue=yE.isAttributeKey=yE.sanitizeAttributes=void 0;var NE=C();function aV0(Z){let J={};if(typeof Z!=="object"||Z==null)return J;for(let Q in Z){if(!Object.prototype.hasOwnProperty.call(Z,Q))continue;if(!TE(Q)){NE.diag.warn(`Invalid attribute key: ${Q}`);continue}let $=Z[Q];if(!fE($)){NE.diag.warn(`Invalid attribute value set for key: ${Q}`);continue}if(Array.isArray($))J[Q]=$.slice();else J[Q]=$}return J}yE.sanitizeAttributes=aV0;function TE(Z){return typeof Z==="string"&&Z!==""}yE.isAttributeKey=TE;function fE(Z){if(Z==null)return!0;if(Array.isArray(Z))return sV0(Z);return EE(typeof Z)}yE.isAttributeValue=fE;function sV0(Z){let J;for(let Q of Z){if(Q==null)continue;let $=typeof Q;if($===J)continue;if(!J){if(EE($)){J=$;continue}return!1}return!1}return!0}function EE(Z){switch(Z){case"number":case"boolean":case"string":return!0}return!1}});var $z=w((_E)=>{Object.defineProperty(_E,"__esModule",{value:!0});_E.loggingErrorHandler=void 0;var eV0=C();function ZF0(){return(Z)=>{eV0.diag.error(JF0(Z))}}_E.loggingErrorHandler=ZF0;function JF0(Z){if(typeof Z==="string")return Z;else return JSON.stringify(QF0(Z))}function QF0(Z){let J={},Q=Z;while(Q!==null)Object.getOwnPropertyNames(Q).forEach(($)=>{if(J[$])return;let X=Q[$];if(X)J[$]=String(X)}),Q=Object.getPrototypeOf(Q);return J}});var dE=w((xE)=>{Object.defineProperty(xE,"__esModule",{value:!0});xE.globalErrorHandler=xE.setGlobalErrorHandler=void 0;var $F0=$z(),bE=(0,$F0.loggingErrorHandler)();function XF0(Z){bE=Z}xE.setGlobalErrorHandler=XF0;function YF0(Z){try{bE(Z)}catch{}}xE.globalErrorHandler=YF0});var iE=w((lE)=>{Object.defineProperty(lE,"__esModule",{value:!0});lE.getStringListFromEnv=lE.getBooleanFromEnv=lE.getStringFromEnv=lE.getNumberFromEnv=void 0;var cE=C(),mE=A("util");function KF0(Z){let J=process.env[Z];if(J==null||J.trim()==="")return;let Q=Number(J);if(isNaN(Q)){cE.diag.warn(`Unknown value ${(0,mE.inspect)(J)} for ${Z}, expected a number, using defaults`);return}return Q}lE.getNumberFromEnv=KF0;function uE(Z){let J=process.env[Z];if(J==null||J.trim()==="")return;return J}lE.getStringFromEnv=uE;function zF0(Z){let J=process.env[Z]?.trim().toLowerCase();if(J==null||J==="")return!1;if(J==="true")return!0;else if(J==="false")return!1;else return cE.diag.warn(`Unknown value ${(0,mE.inspect)(J)} for ${Z}, expected 'true' or 'false', falling back to 'false' (default)`),!1}lE.getBooleanFromEnv=zF0;function GF0(Z){return uE(Z)?.split(",").map((J)=>J.trim()).filter((J)=>J!=="")}lE.getStringListFromEnv=GF0});var aE=w((oE)=>{Object.defineProperty(oE,"__esModule",{value:!0});oE._globalThis=void 0;oE._globalThis=globalThis});var tE=w((sE)=>{Object.defineProperty(sE,"__esModule",{value:!0});sE.VERSION=void 0;sE.VERSION="2.6.1"});var Jy=w((eE)=>{Object.defineProperty(eE,"__esModule",{value:!0});eE.ATTR_PROCESS_RUNTIME_NAME=void 0;eE.ATTR_PROCESS_RUNTIME_NAME="process.runtime.name"});var Xy=w((Qy)=>{Object.defineProperty(Qy,"__esModule",{value:!0});Qy.SDK_INFO=void 0;var FF0=tE(),Q$=s(),wF0=Jy();Qy.SDK_INFO={[Q$.ATTR_TELEMETRY_SDK_NAME]:"opentelemetry",[wF0.ATTR_PROCESS_RUNTIME_NAME]:"node",[Q$.ATTR_TELEMETRY_SDK_LANGUAGE]:Q$.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,[Q$.ATTR_TELEMETRY_SDK_VERSION]:FF0.VERSION}});var Wy=w((oZ)=>{Object.defineProperty(oZ,"__esModule",{value:!0});oZ.otperformance=oZ.SDK_INFO=oZ._globalThis=oZ.getStringListFromEnv=oZ.getNumberFromEnv=oZ.getBooleanFromEnv=oZ.getStringFromEnv=void 0;var $$=iE();Object.defineProperty(oZ,"getStringFromEnv",{enumerable:!0,get:function(){return $$.getStringFromEnv}});Object.defineProperty(oZ,"getBooleanFromEnv",{enumerable:!0,get:function(){return $$.getBooleanFromEnv}});Object.defineProperty(oZ,"getNumberFromEnv",{enumerable:!0,get:function(){return $$.getNumberFromEnv}});Object.defineProperty(oZ,"getStringListFromEnv",{enumerable:!0,get:function(){return $$.getStringListFromEnv}});var DF0=aE();Object.defineProperty(oZ,"_globalThis",{enumerable:!0,get:function(){return DF0._globalThis}});var UF0=Xy();Object.defineProperty(oZ,"SDK_INFO",{enumerable:!0,get:function(){return UF0.SDK_INFO}});oZ.otperformance=performance});var Xz=w(($Z)=>{Object.defineProperty($Z,"__esModule",{value:!0});$Z.getStringListFromEnv=$Z.getNumberFromEnv=$Z.getStringFromEnv=$Z.getBooleanFromEnv=$Z.otperformance=$Z._globalThis=$Z.SDK_INFO=void 0;var J1=Wy();Object.defineProperty($Z,"SDK_INFO",{enumerable:!0,get:function(){return J1.SDK_INFO}});Object.defineProperty($Z,"_globalThis",{enumerable:!0,get:function(){return J1._globalThis}});Object.defineProperty($Z,"otperformance",{enumerable:!0,get:function(){return J1.otperformance}});Object.defineProperty($Z,"getBooleanFromEnv",{enumerable:!0,get:function(){return J1.getBooleanFromEnv}});Object.defineProperty($Z,"getStringFromEnv",{enumerable:!0,get:function(){return J1.getStringFromEnv}});Object.defineProperty($Z,"getNumberFromEnv",{enumerable:!0,get:function(){return J1.getNumberFromEnv}});Object.defineProperty($Z,"getStringListFromEnv",{enumerable:!0,get:function(){return J1.getStringListFromEnv}})});var Vy=w((By)=>{Object.defineProperty(By,"__esModule",{value:!0});By.addHrTimes=By.isTimeInput=By.isTimeInputHrTime=By.hrTimeToMicroseconds=By.hrTimeToMilliseconds=By.hrTimeToNanoseconds=By.hrTimeToTimeStamp=By.hrTimeDuration=By.timeInputToHrTime=By.hrTime=By.getTimeOrigin=By.millisToHrTime=void 0;var X$=Xz(),Ky=9,qF0=6,LF0=Math.pow(10,qF0),Y$=Math.pow(10,Ky);function H4(Z){let J=Z/1000,Q=Math.trunc(J),$=Math.round(Z%1000*LF0);return[Q,$]}By.millisToHrTime=H4;function OF0(){return X$.otperformance.timeOrigin}By.getTimeOrigin=OF0;function zy(Z){let J=H4(X$.otperformance.timeOrigin),Q=H4(typeof Z==="number"?Z:X$.otperformance.now());return Gy(J,Q)}By.hrTime=zy;function CF0(Z){if(Yz(Z))return Z;else if(typeof Z==="number")if(Z=Y$)Q[1]-=Y$,Q[0]+=1;return Q}By.addHrTimes=Gy});var Dy=w((Fy)=>{Object.defineProperty(Fy,"__esModule",{value:!0});Fy.unrefTimer=void 0;function gF0(Z){if(typeof Z!=="number")Z.unref()}Fy.unrefTimer=gF0});var jy=w((Uy)=>{Object.defineProperty(Uy,"__esModule",{value:!0});Uy.ExportResultCode=void 0;var dF0;(function(Z){Z[Z.SUCCESS=0]="SUCCESS",Z[Z.FAILED=1]="FAILED"})(dF0=Uy.ExportResultCode||(Uy.ExportResultCode={}))});var Py=w((Oy)=>{Object.defineProperty(Oy,"__esModule",{value:!0});Oy.CompositePropagator=void 0;var qy=C();class Ly{_propagators;_fields;constructor(Z={}){this._propagators=Z.propagators??[],this._fields=Array.from(new Set(this._propagators.map((J)=>typeof J.fields==="function"?J.fields():[]).reduce((J,Q)=>J.concat(Q),[])))}inject(Z,J,Q){for(let $ of this._propagators)try{$.inject(Z,J,Q)}catch(X){qy.diag.warn(`Failed to inject with ${$.constructor.name}. Err: ${X.message}`)}}extract(Z,J,Q){return this._propagators.reduce(($,X)=>{try{return X.extract($,J,Q)}catch(Y){qy.diag.warn(`Failed to extract with ${X.constructor.name}. Err: ${Y.message}`)}return $},Z)}fields(){return this._fields.slice()}}Oy.CompositePropagator=Ly});var Ry=w((ky)=>{Object.defineProperty(ky,"__esModule",{value:!0});ky.validateValue=ky.validateKey=void 0;var Kz="[_0-9a-z-*/]",cF0=`[a-z]${Kz}{0,255}`,mF0=`[a-z0-9]${Kz}{0,240}@[a-z]${Kz}{0,13}`,uF0=new RegExp(`^(?:${cF0}|${mF0})$`),lF0=/^[ -~]{0,255}[!-~]$/,pF0=/,|=/;function iF0(Z){return uF0.test(Z)}ky.validateKey=iF0;function oF0(Z){return lF0.test(Z)&&!pF0.test(Z)}ky.validateValue=oF0});var Gz=w((fy)=>{Object.defineProperty(fy,"__esModule",{value:!0});fy.TraceState=void 0;var Ay=Ry(),Iy=32,aF0=512,Ny=",",Ty="=";class zz{_internalState=new Map;constructor(Z){if(Z)this._parse(Z)}set(Z,J){let Q=this._clone();if(Q._internalState.has(Z))Q._internalState.delete(Z);return Q._internalState.set(Z,J),Q}unset(Z){let J=this._clone();return J._internalState.delete(Z),J}get(Z){return this._internalState.get(Z)}serialize(){return this._keys().reduce((Z,J)=>{return Z.push(J+Ty+this.get(J)),Z},[]).join(Ny)}_parse(Z){if(Z.length>aF0)return;if(this._internalState=Z.split(Ny).reverse().reduce((J,Q)=>{let $=Q.trim(),X=$.indexOf(Ty);if(X!==-1){let Y=$.slice(0,X),W=$.slice(X+1,Q.length);if((0,Ay.validateKey)(Y)&&(0,Ay.validateValue)(W))J.set(Y,W)}return J},new Map),this._internalState.size>Iy)this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,Iy))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let Z=new zz;return Z._internalState=new Map(this._internalState),Z}}fy.TraceState=zz});var vy=w((Sy)=>{Object.defineProperty(Sy,"__esModule",{value:!0});Sy.W3CTraceContextPropagator=Sy.parseTraceParent=Sy.TRACE_STATE_HEADER=Sy.TRACE_PARENT_HEADER=void 0;var W$=C(),sF0=B4(),rF0=Gz();Sy.TRACE_PARENT_HEADER="traceparent";Sy.TRACE_STATE_HEADER="tracestate";var tF0="00",eF0="(?!ff)[\\da-f]{2}",Zw0="(?![0]{32})[\\da-f]{32}",Jw0="(?![0]{16})[\\da-f]{16}",Qw0="[\\da-f]{2}",$w0=new RegExp(`^\\s?(${eF0})-(${Zw0})-(${Jw0})-(${Qw0})(-.*)?\\s?$`);function yy(Z){let J=$w0.exec(Z);if(!J)return null;if(J[1]==="00"&&J[5])return null;return{traceId:J[2],spanId:J[3],traceFlags:parseInt(J[4],16)}}Sy.parseTraceParent=yy;class hy{inject(Z,J,Q){let $=W$.trace.getSpanContext(Z);if(!$||(0,sF0.isTracingSuppressed)(Z)||!(0,W$.isSpanContextValid)($))return;let X=`${tF0}-${$.traceId}-${$.spanId}-0${Number($.traceFlags||W$.TraceFlags.NONE).toString(16)}`;if(Q.set(J,Sy.TRACE_PARENT_HEADER,X),$.traceState)Q.set(J,Sy.TRACE_STATE_HEADER,$.traceState.serialize())}extract(Z,J,Q){let $=Q.get(J,Sy.TRACE_PARENT_HEADER);if(!$)return Z;let X=Array.isArray($)?$[0]:$;if(typeof X!=="string")return Z;let Y=yy(X);if(!Y)return Z;Y.isRemote=!0;let W=Q.get(J,Sy.TRACE_STATE_HEADER);if(W){let K=Array.isArray(W)?W.join(","):W;Y.traceState=new rF0.TraceState(typeof K==="string"?K:void 0)}return W$.trace.setSpanContext(Z,Y)}fields(){return[Sy.TRACE_PARENT_HEADER,Sy.TRACE_STATE_HEADER]}}Sy.W3CTraceContextPropagator=hy});var dy=w((xy)=>{Object.defineProperty(xy,"__esModule",{value:!0});xy.getRPCMetadata=xy.deleteRPCMetadata=xy.setRPCMetadata=xy.RPCType=void 0;var Yw0=C(),Bz=(0,Yw0.createContextKey)("OpenTelemetry SDK Context Key RPC_METADATA"),Ww0;(function(Z){Z.HTTP="http"})(Ww0=xy.RPCType||(xy.RPCType={}));function Kw0(Z,J){return Z.setValue(Bz,J)}xy.setRPCMetadata=Kw0;function zw0(Z){return Z.deleteValue(Bz)}xy.deleteRPCMetadata=zw0;function Gw0(Z){return Z.getValue(Bz)}xy.getRPCMetadata=Gw0});var oy=w((py)=>{Object.defineProperty(py,"__esModule",{value:!0});py.isPlainObject=void 0;var Vw0="[object Object]",Fw0="[object Null]",ww0="[object Undefined]",Dw0=Function.prototype,cy=Dw0.toString,Uw0=cy.call(Object),jw0=Object.getPrototypeOf,my=Object.prototype,uy=my.hasOwnProperty,Q1=Symbol?Symbol.toStringTag:void 0,ly=my.toString;function qw0(Z){if(!Lw0(Z)||Ow0(Z)!==Vw0)return!1;let J=jw0(Z);if(J===null)return!0;let Q=uy.call(J,"constructor")&&J.constructor;return typeof Q=="function"&&Q instanceof Q&&cy.call(Q)===Uw0}py.isPlainObject=qw0;function Lw0(Z){return Z!=null&&typeof Z=="object"}function Ow0(Z){if(Z==null)return Z===void 0?ww0:Fw0;return Q1&&Q1 in Object(Z)?Cw0(Z):Pw0(Z)}function Cw0(Z){let J=uy.call(Z,Q1),Q=Z[Q1],$=!1;try{Z[Q1]=void 0,$=!0}catch{}let X=ly.call(Z);if($)if(J)Z[Q1]=Q;else delete Z[Q1];return X}function Pw0(Z){return ly.call(Z)}});var Zh=w((ty)=>{Object.defineProperty(ty,"__esModule",{value:!0});ty.merge=void 0;var ny=oy(),kw0=20;function Mw0(...Z){let J=Z.shift(),Q=new WeakMap;while(Z.length>0)J=sy(J,Z.shift(),0,Q);return J}ty.merge=Mw0;function Hz(Z){if(B$(Z))return Z.slice();return Z}function sy(Z,J,Q=0,$){let X;if(Q>kw0)return;if(Q++,G$(Z)||G$(J)||ry(J))X=Hz(J);else if(B$(Z)){if(X=Z.slice(),B$(J))for(let Y=0,W=J.length;Y"u")delete X[z];else X[z]=G;else{let H=X[z],B=G;if(ay(Z,z,$)||ay(J,z,$))delete X[z];else{if(V4(H)&&V4(B)){let V=$.get(H)||[],F=$.get(B)||[];V.push({obj:Z,key:z}),F.push({obj:J,key:z}),$.set(H,V),$.set(B,F)}X[z]=sy(X[z],G,Q,$)}}}}else X=J;return X}function ay(Z,J,Q){let $=Q.get(Z[J])||[];for(let X=0,Y=$.length;X"u"||Z instanceof Date||Z instanceof RegExp||Z===null}function Rw0(Z,J){if(!(0,ny.isPlainObject)(Z)||!(0,ny.isPlainObject)(J))return!1;return!0}});var $h=w((Jh)=>{Object.defineProperty(Jh,"__esModule",{value:!0});Jh.callWithTimeout=Jh.TimeoutError=void 0;class H$ extends Error{constructor(Z){super(Z);Object.setPrototypeOf(this,H$.prototype)}}Jh.TimeoutError=H$;function Aw0(Z,J){let Q,$=new Promise(function(Y,W){Q=setTimeout(function(){W(new H$("Operation timed out."))},J)});return Promise.race([Z,$]).then((X)=>{return clearTimeout(Q),X},(X)=>{throw clearTimeout(Q),X})}Jh.callWithTimeout=Aw0});var Kh=w((Yh)=>{Object.defineProperty(Yh,"__esModule",{value:!0});Yh.isUrlIgnored=Yh.urlMatches=void 0;function Xh(Z,J){if(typeof J==="string")return Z===J;else return!!Z.match(J)}Yh.urlMatches=Xh;function Nw0(Z,J){if(!J)return!1;for(let Q of J)if(Xh(Z,Q))return!0;return!1}Yh.isUrlIgnored=Nw0});var Hh=w((Gh)=>{Object.defineProperty(Gh,"__esModule",{value:!0});Gh.Deferred=void 0;class zh{_promise;_resolve;_reject;constructor(){this._promise=new Promise((Z,J)=>{this._resolve=Z,this._reject=J})}get promise(){return this._promise}resolve(Z){this._resolve(Z)}reject(Z){this._reject(Z)}}Gh.Deferred=zh});var Dh=w((Fh)=>{Object.defineProperty(Fh,"__esModule",{value:!0});Fh.BindOnceFuture=void 0;var fw0=Hh();class Vh{_isCalled=!1;_deferred=new fw0.Deferred;_callback;_that;constructor(Z,J){this._callback=Z,this._that=J}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...Z){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...Z)).then((J)=>this._deferred.resolve(J),(J)=>this._deferred.reject(J))}catch(J){this._deferred.reject(J)}}return this._deferred.promise}}Fh.BindOnceFuture=Vh});var Lh=w((jh)=>{Object.defineProperty(jh,"__esModule",{value:!0});jh.diagLogLevelFromString=void 0;var XZ=C(),Uh={ALL:XZ.DiagLogLevel.ALL,VERBOSE:XZ.DiagLogLevel.VERBOSE,DEBUG:XZ.DiagLogLevel.DEBUG,INFO:XZ.DiagLogLevel.INFO,WARN:XZ.DiagLogLevel.WARN,ERROR:XZ.DiagLogLevel.ERROR,NONE:XZ.DiagLogLevel.NONE};function Ew0(Z){if(Z==null)return;let J=Uh[Z.toUpperCase()];if(J==null)return XZ.diag.warn(`Unknown log level "${Z}", expected one of ${Object.keys(Uh)}, using default`),XZ.DiagLogLevel.INFO;return J}jh.diagLogLevelFromString=Ew0});var kh=w((Ch)=>{Object.defineProperty(Ch,"__esModule",{value:!0});Ch._export=void 0;var Oh=C(),yw0=B4();function hw0(Z,J){return new Promise((Q)=>{Oh.context.with((0,yw0.suppressTracing)(Oh.context.active()),()=>{Z.export(J,Q)})})}Ch._export=hw0});var Q0=w((x)=>{Object.defineProperty(x,"__esModule",{value:!0});x.internal=x.diagLogLevelFromString=x.BindOnceFuture=x.urlMatches=x.isUrlIgnored=x.callWithTimeout=x.TimeoutError=x.merge=x.TraceState=x.unsuppressTracing=x.suppressTracing=x.isTracingSuppressed=x.setRPCMetadata=x.getRPCMetadata=x.deleteRPCMetadata=x.RPCType=x.parseTraceParent=x.W3CTraceContextPropagator=x.TRACE_STATE_HEADER=x.TRACE_PARENT_HEADER=x.CompositePropagator=x.otperformance=x.getStringListFromEnv=x.getNumberFromEnv=x.getBooleanFromEnv=x.getStringFromEnv=x._globalThis=x.SDK_INFO=x.parseKeyPairsIntoRecord=x.ExportResultCode=x.unrefTimer=x.timeInputToHrTime=x.millisToHrTime=x.isTimeInputHrTime=x.isTimeInput=x.hrTimeToTimeStamp=x.hrTimeToNanoseconds=x.hrTimeToMilliseconds=x.hrTimeToMicroseconds=x.hrTimeDuration=x.hrTime=x.getTimeOrigin=x.addHrTimes=x.loggingErrorHandler=x.setGlobalErrorHandler=x.globalErrorHandler=x.sanitizeAttributes=x.isAttributeValue=x.AnchoredClock=x.W3CBaggagePropagator=void 0;var Sw0=kE();Object.defineProperty(x,"W3CBaggagePropagator",{enumerable:!0,get:function(){return Sw0.W3CBaggagePropagator}});var _w0=IE();Object.defineProperty(x,"AnchoredClock",{enumerable:!0,get:function(){return _w0.AnchoredClock}});var Mh=SE();Object.defineProperty(x,"isAttributeValue",{enumerable:!0,get:function(){return Mh.isAttributeValue}});Object.defineProperty(x,"sanitizeAttributes",{enumerable:!0,get:function(){return Mh.sanitizeAttributes}});var Rh=dE();Object.defineProperty(x,"globalErrorHandler",{enumerable:!0,get:function(){return Rh.globalErrorHandler}});Object.defineProperty(x,"setGlobalErrorHandler",{enumerable:!0,get:function(){return Rh.setGlobalErrorHandler}});var vw0=$z();Object.defineProperty(x,"loggingErrorHandler",{enumerable:!0,get:function(){return vw0.loggingErrorHandler}});var r6=Vy();Object.defineProperty(x,"addHrTimes",{enumerable:!0,get:function(){return r6.addHrTimes}});Object.defineProperty(x,"getTimeOrigin",{enumerable:!0,get:function(){return r6.getTimeOrigin}});Object.defineProperty(x,"hrTime",{enumerable:!0,get:function(){return r6.hrTime}});Object.defineProperty(x,"hrTimeDuration",{enumerable:!0,get:function(){return r6.hrTimeDuration}});Object.defineProperty(x,"hrTimeToMicroseconds",{enumerable:!0,get:function(){return r6.hrTimeToMicroseconds}});Object.defineProperty(x,"hrTimeToMilliseconds",{enumerable:!0,get:function(){return r6.hrTimeToMilliseconds}});Object.defineProperty(x,"hrTimeToNanoseconds",{enumerable:!0,get:function(){return r6.hrTimeToNanoseconds}});Object.defineProperty(x,"hrTimeToTimeStamp",{enumerable:!0,get:function(){return r6.hrTimeToTimeStamp}});Object.defineProperty(x,"isTimeInput",{enumerable:!0,get:function(){return r6.isTimeInput}});Object.defineProperty(x,"isTimeInputHrTime",{enumerable:!0,get:function(){return r6.isTimeInputHrTime}});Object.defineProperty(x,"millisToHrTime",{enumerable:!0,get:function(){return r6.millisToHrTime}});Object.defineProperty(x,"timeInputToHrTime",{enumerable:!0,get:function(){return r6.timeInputToHrTime}});var bw0=Dy();Object.defineProperty(x,"unrefTimer",{enumerable:!0,get:function(){return bw0.unrefTimer}});var xw0=jy();Object.defineProperty(x,"ExportResultCode",{enumerable:!0,get:function(){return xw0.ExportResultCode}});var gw0=Zz();Object.defineProperty(x,"parseKeyPairsIntoRecord",{enumerable:!0,get:function(){return gw0.parseKeyPairsIntoRecord}});var $1=Xz();Object.defineProperty(x,"SDK_INFO",{enumerable:!0,get:function(){return $1.SDK_INFO}});Object.defineProperty(x,"_globalThis",{enumerable:!0,get:function(){return $1._globalThis}});Object.defineProperty(x,"getStringFromEnv",{enumerable:!0,get:function(){return $1.getStringFromEnv}});Object.defineProperty(x,"getBooleanFromEnv",{enumerable:!0,get:function(){return $1.getBooleanFromEnv}});Object.defineProperty(x,"getNumberFromEnv",{enumerable:!0,get:function(){return $1.getNumberFromEnv}});Object.defineProperty(x,"getStringListFromEnv",{enumerable:!0,get:function(){return $1.getStringListFromEnv}});Object.defineProperty(x,"otperformance",{enumerable:!0,get:function(){return $1.otperformance}});var dw0=Py();Object.defineProperty(x,"CompositePropagator",{enumerable:!0,get:function(){return dw0.CompositePropagator}});var V$=vy();Object.defineProperty(x,"TRACE_PARENT_HEADER",{enumerable:!0,get:function(){return V$.TRACE_PARENT_HEADER}});Object.defineProperty(x,"TRACE_STATE_HEADER",{enumerable:!0,get:function(){return V$.TRACE_STATE_HEADER}});Object.defineProperty(x,"W3CTraceContextPropagator",{enumerable:!0,get:function(){return V$.W3CTraceContextPropagator}});Object.defineProperty(x,"parseTraceParent",{enumerable:!0,get:function(){return V$.parseTraceParent}});var F$=dy();Object.defineProperty(x,"RPCType",{enumerable:!0,get:function(){return F$.RPCType}});Object.defineProperty(x,"deleteRPCMetadata",{enumerable:!0,get:function(){return F$.deleteRPCMetadata}});Object.defineProperty(x,"getRPCMetadata",{enumerable:!0,get:function(){return F$.getRPCMetadata}});Object.defineProperty(x,"setRPCMetadata",{enumerable:!0,get:function(){return F$.setRPCMetadata}});var Vz=B4();Object.defineProperty(x,"isTracingSuppressed",{enumerable:!0,get:function(){return Vz.isTracingSuppressed}});Object.defineProperty(x,"suppressTracing",{enumerable:!0,get:function(){return Vz.suppressTracing}});Object.defineProperty(x,"unsuppressTracing",{enumerable:!0,get:function(){return Vz.unsuppressTracing}});var cw0=Gz();Object.defineProperty(x,"TraceState",{enumerable:!0,get:function(){return cw0.TraceState}});var mw0=Zh();Object.defineProperty(x,"merge",{enumerable:!0,get:function(){return mw0.merge}});var Ah=$h();Object.defineProperty(x,"TimeoutError",{enumerable:!0,get:function(){return Ah.TimeoutError}});Object.defineProperty(x,"callWithTimeout",{enumerable:!0,get:function(){return Ah.callWithTimeout}});var Ih=Kh();Object.defineProperty(x,"isUrlIgnored",{enumerable:!0,get:function(){return Ih.isUrlIgnored}});Object.defineProperty(x,"urlMatches",{enumerable:!0,get:function(){return Ih.urlMatches}});var uw0=Dh();Object.defineProperty(x,"BindOnceFuture",{enumerable:!0,get:function(){return uw0.BindOnceFuture}});var lw0=Lh();Object.defineProperty(x,"diagLogLevelFromString",{enumerable:!0,get:function(){return lw0.diagLogLevelFromString}});var pw0=kh();x.internal={_export:pw0._export}});var qz=w((ih)=>{Object.defineProperty(ih,"__esModule",{value:!0});ih.AbstractAsyncHooksContextManager=void 0;var FD0=A("events"),wD0=["addListener","on","once","prependListener","prependOnceListener"];class ph{bind(Z,J){if(J instanceof FD0.EventEmitter)return this._bindEventEmitter(Z,J);if(typeof J==="function")return this._bindFunction(Z,J);return J}_bindFunction(Z,J){let Q=this,$=function(...X){return Q.with(Z,()=>J.apply(this,X))};return Object.defineProperty($,"length",{enumerable:!1,configurable:!0,writable:!1,value:J.length}),$}_bindEventEmitter(Z,J){if(this._getPatchMap(J)!==void 0)return J;if(this._createPatchMap(J),wD0.forEach(($)=>{if(J[$]===void 0)return;J[$]=this._patchAddListener(J,J[$],Z)}),typeof J.removeListener==="function")J.removeListener=this._patchRemoveListener(J,J.removeListener);if(typeof J.off==="function")J.off=this._patchRemoveListener(J,J.off);if(typeof J.removeAllListeners==="function")J.removeAllListeners=this._patchRemoveAllListeners(J,J.removeAllListeners);return J}_patchRemoveListener(Z,J){let Q=this;return function($,X){let Y=Q._getPatchMap(Z)?.[$];if(Y===void 0)return J.call(this,$,X);let W=Y.get(X);return J.call(this,$,W||X)}}_patchRemoveAllListeners(Z,J){let Q=this;return function($){let X=Q._getPatchMap(Z);if(X!==void 0){if(arguments.length===0)Q._createPatchMap(Z);else if(X[$]!==void 0)delete X[$]}return J.apply(this,arguments)}}_patchAddListener(Z,J,Q){let $=this;return function(X,Y){if($._wrapped)return J.call(this,X,Y);let W=$._getPatchMap(Z);if(W===void 0)W=$._createPatchMap(Z);let K=W[X];if(K===void 0)K=new WeakMap,W[X]=K;let z=$.bind(Q,Y);K.set(Y,z),$._wrapped=!0;try{return J.call(this,X,z)}finally{$._wrapped=!1}}}_createPatchMap(Z){let J=Object.create(null);return Z[this._kOtListeners]=J,J}_getPatchMap(Z){return Z[this._kOtListeners]}_kOtListeners=Symbol("OtListeners");_wrapped=!1}ih.AbstractAsyncHooksContextManager=ph});var rh=w((ah)=>{Object.defineProperty(ah,"__esModule",{value:!0});ah.AsyncHooksContextManager=void 0;var DD0=C(),UD0=A("async_hooks"),jD0=qz();class nh extends jD0.AbstractAsyncHooksContextManager{_asyncHook;_contexts=new Map;_stack=[];constructor(){super();this._asyncHook=UD0.createHook({init:this._init.bind(this),before:this._before.bind(this),after:this._after.bind(this),destroy:this._destroy.bind(this),promiseResolve:this._destroy.bind(this)})}active(){return this._stack[this._stack.length-1]??DD0.ROOT_CONTEXT}with(Z,J,Q,...$){this._enterContext(Z);try{return J.call(Q,...$)}finally{this._exitContext()}}enable(){return this._asyncHook.enable(),this}disable(){return this._asyncHook.disable(),this._contexts.clear(),this._stack=[],this}_init(Z,J){if(J==="TIMERWRAP")return;let Q=this._stack[this._stack.length-1];if(Q!==void 0)this._contexts.set(Z,Q)}_destroy(Z){this._contexts.delete(Z)}_before(Z){let J=this._contexts.get(Z);if(J!==void 0)this._enterContext(J)}_after(){this._exitContext()}_enterContext(Z){this._stack.push(Z)}_exitContext(){this._stack.pop()}}ah.AsyncHooksContextManager=nh});var JS=w((eh)=>{Object.defineProperty(eh,"__esModule",{value:!0});eh.AsyncLocalStorageContextManager=void 0;var qD0=C(),LD0=A("async_hooks"),OD0=qz();class th extends OD0.AbstractAsyncHooksContextManager{_asyncLocalStorage;constructor(){super();this._asyncLocalStorage=new LD0.AsyncLocalStorage}active(){return this._asyncLocalStorage.getStore()??qD0.ROOT_CONTEXT}with(Z,J,Q,...$){let X=Q==null?J:J.bind(Q);return this._asyncLocalStorage.run(Z,X,...$)}enable(){return this}disable(){return this._asyncLocalStorage.disable(),this}}eh.AsyncLocalStorageContextManager=th});var QS=w((L$)=>{Object.defineProperty(L$,"__esModule",{value:!0});L$.AsyncLocalStorageContextManager=L$.AsyncHooksContextManager=void 0;var CD0=rh();Object.defineProperty(L$,"AsyncHooksContextManager",{enumerable:!0,get:function(){return CD0.AsyncHooksContextManager}});var PD0=JS();Object.defineProperty(L$,"AsyncLocalStorageContextManager",{enumerable:!0,get:function(){return PD0.AsyncLocalStorageContextManager}})});var Lz=w(($S)=>{Object.defineProperty($S,"__esModule",{value:!0});$S._clearDefaultServiceNameCache=$S.defaultServiceName=void 0;var U4;function MD0(){if(U4===void 0)try{let Z=globalThis.process.argv0;U4=Z?`unknown_service:${Z}`:"unknown_service"}catch{U4="unknown_service"}return U4}$S.defaultServiceName=MD0;function RD0(){U4=void 0}$S._clearDefaultServiceNameCache=RD0});var KS=w((YS)=>{Object.defineProperty(YS,"__esModule",{value:!0});YS.isPromiseLike=void 0;var ID0=(Z)=>{return Z!==null&&typeof Z==="object"&&typeof Z.then==="function"};YS.isPromiseLike=ID0});var Pz=w((GS)=>{Object.defineProperty(GS,"__esModule",{value:!0});GS.defaultResource=GS.emptyResource=GS.resourceFromDetectedResource=GS.resourceFromAttributes=void 0;var q4=C(),Oz=Q0(),X1=s(),ND0=Lz(),j4=KS();class L4{_rawAttributes;_asyncAttributesPending=!1;_schemaUrl;_memoizedAttributes;static FromAttributeList(Z,J){let Q=new L4({},J);return Q._rawAttributes=zS(Z),Q._asyncAttributesPending=Z.filter(([$,X])=>(0,j4.isPromiseLike)(X)).length>0,Q}constructor(Z,J){let Q=Z.attributes??{};this._rawAttributes=Object.entries(Q).map(([$,X])=>{if((0,j4.isPromiseLike)(X))this._asyncAttributesPending=!0;return[$,X]}),this._rawAttributes=zS(this._rawAttributes),this._schemaUrl=yD0(J?.schemaUrl)}get asyncAttributesPending(){return this._asyncAttributesPending}async waitForAsyncAttributes(){if(!this.asyncAttributesPending)return;for(let Z=0;Z{if((0,j4.isPromiseLike)(Q))return[J,Q.catch(($)=>{q4.diag.debug("promise rejection for resource attribute: %s - %s",J,$);return})];return[J,Q]})}function yD0(Z){if(typeof Z==="string"||Z===void 0)return Z;q4.diag.warn("Schema URL must be string or undefined, got %s. Schema URL will be ignored.",Z);return}function hD0(Z,J){let Q=Z?.schemaUrl,$=J?.schemaUrl,X=Q===void 0||Q==="",Y=$===void 0||$==="";if(X)return $;if(Y)return Q;if(Q===$)return Q;q4.diag.warn('Schema URL merge conflict: old resource has "%s", updating resource has "%s". Resulting resource will have undefined Schema URL.',Q,$);return}});var wS=w((VS)=>{Object.defineProperty(VS,"__esModule",{value:!0});VS.detectResources=void 0;var HS=C(),kz=Pz(),bD0=(Z={})=>{return(Z.detectors||[]).map((Q)=>{try{let $=(0,kz.resourceFromDetectedResource)(Q.detect(Z));return HS.diag.debug(`${Q.constructor.name} found resource.`,$),$}catch($){return HS.diag.debug(`${Q.constructor.name} failed: ${$.message}`),(0,kz.emptyResource)()}}).reduce((Q,$)=>Q.merge($),(0,kz.emptyResource)())};VS.detectResources=bD0});var LS=w((jS)=>{Object.defineProperty(jS,"__esModule",{value:!0});jS.envDetector=void 0;var xD0=C(),gD0=s(),DS=Q0();class US{_MAX_LENGTH=255;_COMMA_SEPARATOR=",";_LABEL_KEY_VALUE_SPLITTER="=";detect(Z){let J={},Q=(0,DS.getStringFromEnv)("OTEL_RESOURCE_ATTRIBUTES"),$=(0,DS.getStringFromEnv)("OTEL_SERVICE_NAME");if(Q)try{let X=this._parseResourceAttributes(Q);Object.assign(J,X)}catch(X){xD0.diag.debug(`EnvDetector failed: ${X instanceof Error?X.message:X}`)}if($)J[gD0.ATTR_SERVICE_NAME]=$;return{attributes:J}}_parseResourceAttributes(Z){if(!Z)return{};let J={},Q=Z.split(this._COMMA_SEPARATOR);for(let $ of Q){let X=$.split(this._LABEL_KEY_VALUE_SPLITTER);if(X.length!==2)throw Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: "${$}". Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);let[Y,W]=X,K=Y.trim(),z=W.trim();if(K.length===0)throw Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in "${$}".`);let G,H;try{G=decodeURIComponent(K),H=decodeURIComponent(z)}catch(B){throw Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry "${$}": ${B instanceof Error?B.message:B}`)}if(G.length>this._MAX_LENGTH)throw Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: "${G}".`);if(H.length>this._MAX_LENGTH)throw Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key "${G}".`);J[G]=H}return J}}jS.envDetector=new US});var O4=w((OS)=>{Object.defineProperty(OS,"__esModule",{value:!0});OS.ATTR_WEBENGINE_VERSION=OS.ATTR_WEBENGINE_NAME=OS.ATTR_WEBENGINE_DESCRIPTION=OS.ATTR_SERVICE_NAMESPACE=OS.ATTR_SERVICE_INSTANCE_ID=OS.ATTR_PROCESS_RUNTIME_VERSION=OS.ATTR_PROCESS_RUNTIME_NAME=OS.ATTR_PROCESS_RUNTIME_DESCRIPTION=OS.ATTR_PROCESS_PID=OS.ATTR_PROCESS_OWNER=OS.ATTR_PROCESS_EXECUTABLE_PATH=OS.ATTR_PROCESS_EXECUTABLE_NAME=OS.ATTR_PROCESS_COMMAND_ARGS=OS.ATTR_PROCESS_COMMAND=OS.ATTR_OS_VERSION=OS.ATTR_OS_TYPE=OS.ATTR_K8S_POD_NAME=OS.ATTR_K8S_NAMESPACE_NAME=OS.ATTR_K8S_DEPLOYMENT_NAME=OS.ATTR_K8S_CLUSTER_NAME=OS.ATTR_HOST_TYPE=OS.ATTR_HOST_NAME=OS.ATTR_HOST_IMAGE_VERSION=OS.ATTR_HOST_IMAGE_NAME=OS.ATTR_HOST_IMAGE_ID=OS.ATTR_HOST_ID=OS.ATTR_HOST_ARCH=OS.ATTR_CONTAINER_NAME=OS.ATTR_CONTAINER_IMAGE_TAGS=OS.ATTR_CONTAINER_IMAGE_NAME=OS.ATTR_CONTAINER_ID=OS.ATTR_CLOUD_REGION=OS.ATTR_CLOUD_PROVIDER=OS.ATTR_CLOUD_AVAILABILITY_ZONE=OS.ATTR_CLOUD_ACCOUNT_ID=void 0;OS.ATTR_CLOUD_ACCOUNT_ID="cloud.account.id";OS.ATTR_CLOUD_AVAILABILITY_ZONE="cloud.availability_zone";OS.ATTR_CLOUD_PROVIDER="cloud.provider";OS.ATTR_CLOUD_REGION="cloud.region";OS.ATTR_CONTAINER_ID="container.id";OS.ATTR_CONTAINER_IMAGE_NAME="container.image.name";OS.ATTR_CONTAINER_IMAGE_TAGS="container.image.tags";OS.ATTR_CONTAINER_NAME="container.name";OS.ATTR_HOST_ARCH="host.arch";OS.ATTR_HOST_ID="host.id";OS.ATTR_HOST_IMAGE_ID="host.image.id";OS.ATTR_HOST_IMAGE_NAME="host.image.name";OS.ATTR_HOST_IMAGE_VERSION="host.image.version";OS.ATTR_HOST_NAME="host.name";OS.ATTR_HOST_TYPE="host.type";OS.ATTR_K8S_CLUSTER_NAME="k8s.cluster.name";OS.ATTR_K8S_DEPLOYMENT_NAME="k8s.deployment.name";OS.ATTR_K8S_NAMESPACE_NAME="k8s.namespace.name";OS.ATTR_K8S_POD_NAME="k8s.pod.name";OS.ATTR_OS_TYPE="os.type";OS.ATTR_OS_VERSION="os.version";OS.ATTR_PROCESS_COMMAND="process.command";OS.ATTR_PROCESS_COMMAND_ARGS="process.command_args";OS.ATTR_PROCESS_EXECUTABLE_NAME="process.executable.name";OS.ATTR_PROCESS_EXECUTABLE_PATH="process.executable.path";OS.ATTR_PROCESS_OWNER="process.owner";OS.ATTR_PROCESS_PID="process.pid";OS.ATTR_PROCESS_RUNTIME_DESCRIPTION="process.runtime.description";OS.ATTR_PROCESS_RUNTIME_NAME="process.runtime.name";OS.ATTR_PROCESS_RUNTIME_VERSION="process.runtime.version";OS.ATTR_SERVICE_INSTANCE_ID="service.instance.id";OS.ATTR_SERVICE_NAMESPACE="service.namespace";OS.ATTR_WEBENGINE_DESCRIPTION="webengine.description";OS.ATTR_WEBENGINE_NAME="webengine.name";OS.ATTR_WEBENGINE_VERSION="webengine.version"});var O$=w((PS)=>{Object.defineProperty(PS,"__esModule",{value:!0});PS.execAsync=void 0;var OU0=A("child_process"),CU0=A("util");PS.execAsync=CU0.promisify(OU0.exec)});var AS=w((MS)=>{Object.defineProperty(MS,"__esModule",{value:!0});MS.getMachineId=void 0;var PU0=O$(),kU0=C();async function MU0(){try{let J=(await(0,PU0.execAsync)('ioreg -rd1 -c "IOPlatformExpertDevice"')).stdout.split(` +`).find(($)=>$.includes("IOPlatformUUID"));if(!J)return;let Q=J.split('" = "');if(Q.length===2)return Q[1].slice(0,-1)}catch(Z){kU0.diag.debug(`error reading machine id: ${Z}`)}return}MS.getMachineId=MU0});var TS=w((IS)=>{Object.defineProperty(IS,"__esModule",{value:!0});IS.getMachineId=void 0;var RU0=A("fs"),AU0=C();async function IU0(){let Z=["/etc/machine-id","/var/lib/dbus/machine-id"];for(let J of Z)try{return(await RU0.promises.readFile(J,{encoding:"utf8"})).trim()}catch(Q){AU0.diag.debug(`error reading machine id: ${Q}`)}return}IS.getMachineId=IU0});var hS=w((ES)=>{Object.defineProperty(ES,"__esModule",{value:!0});ES.getMachineId=void 0;var NU0=A("fs"),TU0=O$(),fS=C();async function fU0(){try{return(await NU0.promises.readFile("/etc/hostid",{encoding:"utf8"})).trim()}catch(Z){fS.diag.debug(`error reading machine id: ${Z}`)}try{return(await(0,TU0.execAsync)("kenv -q smbios.system.uuid")).stdout.trim()}catch(Z){fS.diag.debug(`error reading machine id: ${Z}`)}return}ES.getMachineId=fU0});var bS=w((_S)=>{Object.defineProperty(_S,"__esModule",{value:!0});_S.getMachineId=void 0;var SS=A("process"),EU0=O$(),yU0=C();async function hU0(){let J="%windir%\\System32\\REG.exe";if(SS.arch==="ia32"&&"PROCESSOR_ARCHITEW6432"in SS.env)J="%windir%\\sysnative\\cmd.exe /c "+J;try{let $=(await(0,EU0.execAsync)(`${J} QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`)).stdout.split("REG_SZ");if($.length===2)return $[1].trim()}catch(Q){yU0.diag.debug(`error reading machine id: ${Q}`)}return}_S.getMachineId=hU0});var dS=w((xS)=>{Object.defineProperty(xS,"__esModule",{value:!0});xS.getMachineId=void 0;var SU0=C();async function _U0(){SU0.diag.debug("could not read machine-id: unsupported platform");return}xS.getMachineId=_U0});var uS=w((cS)=>{Object.defineProperty(cS,"__esModule",{value:!0});cS.getMachineId=void 0;var vU0=A("process"),Y1;async function bU0(){if(!Y1)switch(vU0.platform){case"darwin":Y1=(await Promise.resolve().then(() => R(AS()))).getMachineId;break;case"linux":Y1=(await Promise.resolve().then(() => R(TS()))).getMachineId;break;case"freebsd":Y1=(await Promise.resolve().then(() => R(hS()))).getMachineId;break;case"win32":Y1=(await Promise.resolve().then(() => R(bS()))).getMachineId;break;default:Y1=(await Promise.resolve().then(() => R(dS()))).getMachineId;break}return Y1()}cS.getMachineId=bU0});var Mz=w((lS)=>{Object.defineProperty(lS,"__esModule",{value:!0});lS.normalizeType=lS.normalizeArch=void 0;var xU0=(Z)=>{switch(Z){case"arm":return"arm32";case"ppc":return"ppc32";case"x64":return"amd64";default:return Z}};lS.normalizeArch=xU0;var gU0=(Z)=>{switch(Z){case"sunos":return"solaris";case"win32":return"windows";default:return Z}};lS.normalizeType=gU0});var sS=w((nS)=>{Object.defineProperty(nS,"__esModule",{value:!0});nS.hostDetector=void 0;var Rz=O4(),iS=A("os"),cU0=uS(),mU0=Mz();class oS{detect(Z){return{attributes:{[Rz.ATTR_HOST_NAME]:(0,iS.hostname)(),[Rz.ATTR_HOST_ARCH]:(0,mU0.normalizeArch)((0,iS.arch)()),[Rz.ATTR_HOST_ID]:(0,cU0.getMachineId)()}}}}nS.hostDetector=new oS});var Q_=w((Z_)=>{Object.defineProperty(Z_,"__esModule",{value:!0});Z_.osDetector=void 0;var rS=O4(),tS=A("os"),uU0=Mz();class eS{detect(Z){return{attributes:{[rS.ATTR_OS_TYPE]:(0,uU0.normalizeType)((0,tS.platform)()),[rS.ATTR_OS_VERSION]:(0,tS.release)()}}}}Z_.osDetector=new eS});var W_=w((X_)=>{Object.defineProperty(X_,"__esModule",{value:!0});X_.processDetector=void 0;var lU0=C(),KZ=O4(),pU0=A("os");class $_{detect(Z){let J={[KZ.ATTR_PROCESS_PID]:process.pid,[KZ.ATTR_PROCESS_EXECUTABLE_NAME]:process.title,[KZ.ATTR_PROCESS_EXECUTABLE_PATH]:process.execPath,[KZ.ATTR_PROCESS_COMMAND_ARGS]:[process.argv[0],...process.execArgv,...process.argv.slice(1)],[KZ.ATTR_PROCESS_RUNTIME_VERSION]:process.versions.node,[KZ.ATTR_PROCESS_RUNTIME_NAME]:"nodejs",[KZ.ATTR_PROCESS_RUNTIME_DESCRIPTION]:"Node.js"};if(process.argv.length>1)J[KZ.ATTR_PROCESS_COMMAND]=process.argv[1];try{let Q=pU0.userInfo();J[KZ.ATTR_PROCESS_OWNER]=Q.username}catch(Q){lU0.diag.debug(`error obtaining process owner: ${Q}`)}return{attributes:J}}}X_.processDetector=new $_});var B_=w((z_)=>{Object.defineProperty(z_,"__esModule",{value:!0});z_.serviceInstanceIdDetector=void 0;var iU0=O4(),oU0=A("crypto");class K_{detect(Z){return{attributes:{[iU0.ATTR_SERVICE_INSTANCE_ID]:(0,oU0.randomUUID)()}}}}z_.serviceInstanceIdDetector=new K_});var H_=w((j8)=>{Object.defineProperty(j8,"__esModule",{value:!0});j8.serviceInstanceIdDetector=j8.processDetector=j8.osDetector=j8.hostDetector=void 0;var nU0=sS();Object.defineProperty(j8,"hostDetector",{enumerable:!0,get:function(){return nU0.hostDetector}});var aU0=Q_();Object.defineProperty(j8,"osDetector",{enumerable:!0,get:function(){return aU0.osDetector}});var sU0=W_();Object.defineProperty(j8,"processDetector",{enumerable:!0,get:function(){return sU0.processDetector}});var rU0=B_();Object.defineProperty(j8,"serviceInstanceIdDetector",{enumerable:!0,get:function(){return rU0.serviceInstanceIdDetector}})});var V_=w((q8)=>{Object.defineProperty(q8,"__esModule",{value:!0});q8.serviceInstanceIdDetector=q8.processDetector=q8.osDetector=q8.hostDetector=void 0;var C$=H_();Object.defineProperty(q8,"hostDetector",{enumerable:!0,get:function(){return C$.hostDetector}});Object.defineProperty(q8,"osDetector",{enumerable:!0,get:function(){return C$.osDetector}});Object.defineProperty(q8,"processDetector",{enumerable:!0,get:function(){return C$.processDetector}});Object.defineProperty(q8,"serviceInstanceIdDetector",{enumerable:!0,get:function(){return C$.serviceInstanceIdDetector}})});var D_=w((F_)=>{Object.defineProperty(F_,"__esModule",{value:!0});F_.noopDetector=F_.NoopDetector=void 0;class Az{detect(){return{attributes:{}}}}F_.NoopDetector=Az;F_.noopDetector=new Az});var U_=w((aZ)=>{Object.defineProperty(aZ,"__esModule",{value:!0});aZ.noopDetector=aZ.serviceInstanceIdDetector=aZ.processDetector=aZ.osDetector=aZ.hostDetector=aZ.envDetector=void 0;var Jj0=LS();Object.defineProperty(aZ,"envDetector",{enumerable:!0,get:function(){return Jj0.envDetector}});var P$=V_();Object.defineProperty(aZ,"hostDetector",{enumerable:!0,get:function(){return P$.hostDetector}});Object.defineProperty(aZ,"osDetector",{enumerable:!0,get:function(){return P$.osDetector}});Object.defineProperty(aZ,"processDetector",{enumerable:!0,get:function(){return P$.processDetector}});Object.defineProperty(aZ,"serviceInstanceIdDetector",{enumerable:!0,get:function(){return P$.serviceInstanceIdDetector}});var Qj0=D_();Object.defineProperty(aZ,"noopDetector",{enumerable:!0,get:function(){return Qj0.noopDetector}})});var Nz=w((e6)=>{Object.defineProperty(e6,"__esModule",{value:!0});e6.defaultServiceName=e6.emptyResource=e6.defaultResource=e6.resourceFromAttributes=e6.serviceInstanceIdDetector=e6.processDetector=e6.osDetector=e6.hostDetector=e6.envDetector=e6.detectResources=void 0;var Xj0=wS();Object.defineProperty(e6,"detectResources",{enumerable:!0,get:function(){return Xj0.detectResources}});var C4=U_();Object.defineProperty(e6,"envDetector",{enumerable:!0,get:function(){return C4.envDetector}});Object.defineProperty(e6,"hostDetector",{enumerable:!0,get:function(){return C4.hostDetector}});Object.defineProperty(e6,"osDetector",{enumerable:!0,get:function(){return C4.osDetector}});Object.defineProperty(e6,"processDetector",{enumerable:!0,get:function(){return C4.processDetector}});Object.defineProperty(e6,"serviceInstanceIdDetector",{enumerable:!0,get:function(){return C4.serviceInstanceIdDetector}});var Iz=Pz();Object.defineProperty(e6,"resourceFromAttributes",{enumerable:!0,get:function(){return Iz.resourceFromAttributes}});Object.defineProperty(e6,"defaultResource",{enumerable:!0,get:function(){return Iz.defaultResource}});Object.defineProperty(e6,"emptyResource",{enumerable:!0,get:function(){return Iz.emptyResource}});var Yj0=Lz();Object.defineProperty(e6,"defaultServiceName",{enumerable:!0,get:function(){return Yj0.defaultServiceName}})});var L_=w((j_)=>{Object.defineProperty(j_,"__esModule",{value:!0});j_.ExceptionEventName=void 0;j_.ExceptionEventName="exception"});var k_=w((C_)=>{Object.defineProperty(C_,"__esModule",{value:!0});C_.SpanImpl=void 0;var u0=C(),l0=Q0(),W1=s(),Kj0=L_();class O_{_spanContext;kind;parentSpanContext;attributes={};links=[];events=[];startTime;resource;instrumentationScope;_droppedAttributesCount=0;_droppedEventsCount=0;_droppedLinksCount=0;_attributesCount=0;name;status={code:u0.SpanStatusCode.UNSET};endTime=[0,0];_ended=!1;_duration=[-1,-1];_spanProcessor;_spanLimits;_attributeValueLengthLimit;_recordEndMetrics;_performanceStartTime;_performanceOffset;_startTimeProvided;constructor(Z){let J=Date.now();if(this._spanContext=Z.spanContext,this._performanceStartTime=l0.otperformance.now(),this._performanceOffset=J-(this._performanceStartTime+l0.otperformance.timeOrigin),this._startTimeProvided=Z.startTime!=null,this._spanLimits=Z.spanLimits,this._attributeValueLengthLimit=this._spanLimits.attributeValueLengthLimit??0,this._spanProcessor=Z.spanProcessor,this.name=Z.name,this.parentSpanContext=Z.parentSpanContext,this.kind=Z.kind,Z.links)for(let Q of Z.links)this.addLink(Q);if(this.startTime=this._getTime(Z.startTime??J),this.resource=Z.resource,this.instrumentationScope=Z.scope,this._recordEndMetrics=Z.recordEndMetrics,Z.attributes!=null)this.setAttributes(Z.attributes);this._spanProcessor.onStart(this,Z.context)}spanContext(){return this._spanContext}setAttribute(Z,J){if(J==null||this._isSpanEnded())return this;if(Z.length===0)return u0.diag.warn(`Invalid attribute key: ${Z}`),this;if(!(0,l0.isAttributeValue)(J))return u0.diag.warn(`Invalid attribute value set for key: ${Z}`),this;let{attributeCountLimit:Q}=this._spanLimits,$=!Object.prototype.hasOwnProperty.call(this.attributes,Z);if(Q!==void 0&&this._attributesCount>=Q&&$)return this._droppedAttributesCount++,this;if(this.attributes[Z]=this._truncateToSize(J),$)this._attributesCount++;return this}setAttributes(Z){for(let J in Z)if(Object.prototype.hasOwnProperty.call(Z,J))this.setAttribute(J,Z[J]);return this}addEvent(Z,J,Q){if(this._isSpanEnded())return this;let{eventCountLimit:$}=this._spanLimits;if($===0)return u0.diag.warn("No events allowed."),this._droppedEventsCount++,this;if($!==void 0&&this.events.length>=$){if(this._droppedEventsCount===0)u0.diag.debug("Dropping extra events.");this.events.shift(),this._droppedEventsCount++}if((0,l0.isTimeInput)(J)){if(!(0,l0.isTimeInput)(Q))Q=J;J=void 0}let X=(0,l0.sanitizeAttributes)(J),{attributePerEventCountLimit:Y}=this._spanLimits,W={},K=0,z=0;for(let G in X){if(!Object.prototype.hasOwnProperty.call(X,G))continue;let H=X[G];if(Y!==void 0&&z>=Y){K++;continue}W[G]=this._truncateToSize(H),z++}return this.events.push({name:Z,attributes:W,time:this._getTime(Q),droppedAttributesCount:K}),this}addLink(Z){if(this._isSpanEnded())return this;let{linkCountLimit:J}=this._spanLimits;if(J===0)return this._droppedLinksCount++,this;if(J!==void 0&&this.links.length>=J){if(this._droppedLinksCount===0)u0.diag.debug("Dropping extra links.");this.links.shift(),this._droppedLinksCount++}let{attributePerLinkCountLimit:Q}=this._spanLimits,$=(0,l0.sanitizeAttributes)(Z.attributes),X={},Y=0,W=0;for(let z in $){if(!Object.prototype.hasOwnProperty.call($,z))continue;let G=$[z];if(Q!==void 0&&W>=Q){Y++;continue}X[z]=this._truncateToSize(G),W++}let K={context:Z.context};if(W>0)K.attributes=X;if(Y>0)K.droppedAttributesCount=Y;return this.links.push(K),this}addLinks(Z){for(let J of Z)this.addLink(J);return this}setStatus(Z){if(this._isSpanEnded())return this;if(Z.code===u0.SpanStatusCode.UNSET)return this;if(this.status.code===u0.SpanStatusCode.OK)return this;let J={code:Z.code};if(Z.code===u0.SpanStatusCode.ERROR){if(typeof Z.message==="string")J.message=Z.message;else if(Z.message!=null)u0.diag.warn(`Dropping invalid status.message of type '${typeof Z.message}', expected 'string'`)}return this.status=J,this}updateName(Z){if(this._isSpanEnded())return this;return this.name=Z,this}end(Z){if(this._isSpanEnded()){u0.diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`);return}if(this.endTime=this._getTime(Z),this._duration=(0,l0.hrTimeDuration)(this.startTime,this.endTime),this._duration[0]<0)u0.diag.warn("Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.",this.startTime,this.endTime),this.endTime=this.startTime.slice(),this._duration=[0,0];if(this._droppedEventsCount>0)u0.diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`);if(this._droppedLinksCount>0)u0.diag.warn(`Dropped ${this._droppedLinksCount} links because linkCountLimit reached`);if(this._spanProcessor.onEnding)this._spanProcessor.onEnding(this);this._recordEndMetrics?.(),this._ended=!0,this._spanProcessor.onEnd(this)}_getTime(Z){if(typeof Z==="number"&&Z<=l0.otperformance.now())return(0,l0.hrTime)(Z+this._performanceOffset);if(typeof Z==="number")return(0,l0.millisToHrTime)(Z);if(Z instanceof Date)return(0,l0.millisToHrTime)(Z.getTime());if((0,l0.isTimeInputHrTime)(Z))return Z;if(this._startTimeProvided)return(0,l0.millisToHrTime)(Date.now());let J=l0.otperformance.now()-this._performanceStartTime;return(0,l0.addHrTimes)(this.startTime,(0,l0.millisToHrTime)(J))}isRecording(){return this._ended===!1}recordException(Z,J){let Q={};if(typeof Z==="string")Q[W1.ATTR_EXCEPTION_MESSAGE]=Z;else if(Z){if(Z.code)Q[W1.ATTR_EXCEPTION_TYPE]=Z.code.toString();else if(Z.name)Q[W1.ATTR_EXCEPTION_TYPE]=Z.name;if(Z.message)Q[W1.ATTR_EXCEPTION_MESSAGE]=Z.message;if(Z.stack)Q[W1.ATTR_EXCEPTION_STACKTRACE]=Z.stack}if(Q[W1.ATTR_EXCEPTION_TYPE]||Q[W1.ATTR_EXCEPTION_MESSAGE])this.addEvent(Kj0.ExceptionEventName,Q,J);else u0.diag.warn(`Failed to record an exception ${Z}`)}get duration(){return this._duration}get ended(){return this._ended}get droppedAttributesCount(){return this._droppedAttributesCount}get droppedEventsCount(){return this._droppedEventsCount}get droppedLinksCount(){return this._droppedLinksCount}_isSpanEnded(){if(this._ended){let Z=Error(`Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`);u0.diag.warn(`Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,Z)}return this._ended}_truncateToLimitUtil(Z,J){if(Z.length<=J)return Z;return Z.substring(0,J)}_truncateToSize(Z){let J=this._attributeValueLengthLimit;if(J<=0)return u0.diag.warn(`Attribute value limit must be positive, got ${J}`),Z;if(typeof Z==="string")return this._truncateToLimitUtil(Z,J);if(Array.isArray(Z))return Z.map((Q)=>typeof Q==="string"?this._truncateToLimitUtil(Q,J):Q);return Z}}C_.SpanImpl=O_});var L8=w((M_)=>{Object.defineProperty(M_,"__esModule",{value:!0});M_.SamplingDecision=void 0;var zj0;(function(Z){Z[Z.NOT_RECORD=0]="NOT_RECORD",Z[Z.RECORD=1]="RECORD",Z[Z.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"})(zj0=M_.SamplingDecision||(M_.SamplingDecision={}))});var k$=w((A_)=>{Object.defineProperty(A_,"__esModule",{value:!0});A_.AlwaysOffSampler=void 0;var Gj0=L8();class R_{shouldSample(){return{decision:Gj0.SamplingDecision.NOT_RECORD}}toString(){return"AlwaysOffSampler"}}A_.AlwaysOffSampler=R_});var M$=w((T_)=>{Object.defineProperty(T_,"__esModule",{value:!0});T_.AlwaysOnSampler=void 0;var Bj0=L8();class N_{shouldSample(){return{decision:Bj0.SamplingDecision.RECORD_AND_SAMPLED}}toString(){return"AlwaysOnSampler"}}T_.AlwaysOnSampler=N_});var Ez=w((h_)=>{Object.defineProperty(h_,"__esModule",{value:!0});h_.ParentBasedSampler=void 0;var R$=C(),Hj0=Q0(),E_=k$(),fz=M$();class y_{_root;_remoteParentSampled;_remoteParentNotSampled;_localParentSampled;_localParentNotSampled;constructor(Z){if(this._root=Z.root,!this._root)(0,Hj0.globalErrorHandler)(Error("ParentBasedSampler must have a root sampler configured")),this._root=new fz.AlwaysOnSampler;this._remoteParentSampled=Z.remoteParentSampled??new fz.AlwaysOnSampler,this._remoteParentNotSampled=Z.remoteParentNotSampled??new E_.AlwaysOffSampler,this._localParentSampled=Z.localParentSampled??new fz.AlwaysOnSampler,this._localParentNotSampled=Z.localParentNotSampled??new E_.AlwaysOffSampler}shouldSample(Z,J,Q,$,X,Y){let W=R$.trace.getSpanContext(Z);if(!W||!(0,R$.isSpanContextValid)(W))return this._root.shouldSample(Z,J,Q,$,X,Y);if(W.isRemote){if(W.traceFlags&R$.TraceFlags.SAMPLED)return this._remoteParentSampled.shouldSample(Z,J,Q,$,X,Y);return this._remoteParentNotSampled.shouldSample(Z,J,Q,$,X,Y)}if(W.traceFlags&R$.TraceFlags.SAMPLED)return this._localParentSampled.shouldSample(Z,J,Q,$,X,Y);return this._localParentNotSampled.shouldSample(Z,J,Q,$,X,Y)}toString(){return`ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`}}h_.ParentBasedSampler=y_});var yz=w((b_)=>{Object.defineProperty(b_,"__esModule",{value:!0});b_.TraceIdRatioBasedSampler=void 0;var Vj0=C(),__=L8();class v_{_ratio;_upperBound;constructor(Z=0){this._ratio=this._normalize(Z),this._upperBound=Math.floor(this._ratio*4294967295)}shouldSample(Z,J){return{decision:(0,Vj0.isValidTraceId)(J)&&this._accumulate(J)=1?1:Z<=0?0:Z}_accumulate(Z){let J=0;for(let Q=0;Q>>0}return J}}b_.TraceIdRatioBasedSampler=v_});var _z=w((u_)=>{Object.defineProperty(u_,"__esModule",{value:!0});u_.buildSamplerFromEnv=u_.loadDefaultConfig=void 0;var Sz=C(),_9=Q0(),g_=k$(),hz=M$(),A$=Ez(),d_=yz(),v9;(function(Z){Z.AlwaysOff="always_off",Z.AlwaysOn="always_on",Z.ParentBasedAlwaysOff="parentbased_always_off",Z.ParentBasedAlwaysOn="parentbased_always_on",Z.ParentBasedTraceIdRatio="parentbased_traceidratio",Z.TraceIdRatio="traceidratio"})(v9||(v9={}));var I$=1;function Fj0(){return{sampler:m_(),forceFlushTimeoutMillis:30000,generalLimits:{attributeValueLengthLimit:(0,_9.getNumberFromEnv)("OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT")??1/0,attributeCountLimit:(0,_9.getNumberFromEnv)("OTEL_ATTRIBUTE_COUNT_LIMIT")??128},spanLimits:{attributeValueLengthLimit:(0,_9.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT")??1/0,attributeCountLimit:(0,_9.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT")??128,linkCountLimit:(0,_9.getNumberFromEnv)("OTEL_SPAN_LINK_COUNT_LIMIT")??128,eventCountLimit:(0,_9.getNumberFromEnv)("OTEL_SPAN_EVENT_COUNT_LIMIT")??128,attributePerEventCountLimit:(0,_9.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT")??128,attributePerLinkCountLimit:(0,_9.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT")??128}}}u_.loadDefaultConfig=Fj0;function m_(){let Z=(0,_9.getStringFromEnv)("OTEL_TRACES_SAMPLER")??v9.ParentBasedAlwaysOn;switch(Z){case v9.AlwaysOn:return new hz.AlwaysOnSampler;case v9.AlwaysOff:return new g_.AlwaysOffSampler;case v9.ParentBasedAlwaysOn:return new A$.ParentBasedSampler({root:new hz.AlwaysOnSampler});case v9.ParentBasedAlwaysOff:return new A$.ParentBasedSampler({root:new g_.AlwaysOffSampler});case v9.TraceIdRatio:return new d_.TraceIdRatioBasedSampler(c_());case v9.ParentBasedTraceIdRatio:return new A$.ParentBasedSampler({root:new d_.TraceIdRatioBasedSampler(c_())});default:return Sz.diag.error(`OTEL_TRACES_SAMPLER value "${Z}" invalid, defaulting to "${v9.ParentBasedAlwaysOn}".`),new A$.ParentBasedSampler({root:new hz.AlwaysOnSampler})}}u_.buildSamplerFromEnv=m_;function c_(){let Z=(0,_9.getNumberFromEnv)("OTEL_TRACES_SAMPLER_ARG");if(Z==null)return Sz.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${I$}.`),I$;if(Z<0||Z>1)return Sz.diag.error(`OTEL_TRACES_SAMPLER_ARG=${Z} was given, but it is out of range ([0..1]), defaulting to ${I$}.`),I$;return Z}});var vz=w((i_)=>{Object.defineProperty(i_,"__esModule",{value:!0});i_.reconfigureLimits=i_.mergeConfig=i_.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT=i_.DEFAULT_ATTRIBUTE_COUNT_LIMIT=void 0;var p_=_z(),N$=Q0();i_.DEFAULT_ATTRIBUTE_COUNT_LIMIT=128;i_.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT=1/0;function Dj0(Z){let J={sampler:(0,p_.buildSamplerFromEnv)()},Q=(0,p_.loadDefaultConfig)(),$=Object.assign({},Q,J,Z);return $.generalLimits=Object.assign({},Q.generalLimits,Z.generalLimits||{}),$.spanLimits=Object.assign({},Q.spanLimits,Z.spanLimits||{}),$}i_.mergeConfig=Dj0;function Uj0(Z){let J=Object.assign({},Z.spanLimits);return J.attributeCountLimit=Z.spanLimits?.attributeCountLimit??Z.generalLimits?.attributeCountLimit??(0,N$.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT")??(0,N$.getNumberFromEnv)("OTEL_ATTRIBUTE_COUNT_LIMIT")??i_.DEFAULT_ATTRIBUTE_COUNT_LIMIT,J.attributeValueLengthLimit=Z.spanLimits?.attributeValueLengthLimit??Z.generalLimits?.attributeValueLengthLimit??(0,N$.getNumberFromEnv)("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT")??(0,N$.getNumberFromEnv)("OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT")??i_.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,Object.assign({},Z,{spanLimits:J})}i_.reconfigureLimits=Uj0});var e_=w((r_)=>{Object.defineProperty(r_,"__esModule",{value:!0});r_.BatchSpanProcessorBase=void 0;var O8=C(),zZ=Q0();class s_{_maxExportBatchSize;_maxQueueSize;_scheduledDelayMillis;_exportTimeoutMillis;_exporter;_isExporting=!1;_finishedSpans=[];_timer;_shutdownOnce;_droppedSpansCount=0;constructor(Z,J){if(this._exporter=Z,this._maxExportBatchSize=typeof J?.maxExportBatchSize==="number"?J.maxExportBatchSize:(0,zZ.getNumberFromEnv)("OTEL_BSP_MAX_EXPORT_BATCH_SIZE")??512,this._maxQueueSize=typeof J?.maxQueueSize==="number"?J.maxQueueSize:(0,zZ.getNumberFromEnv)("OTEL_BSP_MAX_QUEUE_SIZE")??2048,this._scheduledDelayMillis=typeof J?.scheduledDelayMillis==="number"?J.scheduledDelayMillis:(0,zZ.getNumberFromEnv)("OTEL_BSP_SCHEDULE_DELAY")??5000,this._exportTimeoutMillis=typeof J?.exportTimeoutMillis==="number"?J.exportTimeoutMillis:(0,zZ.getNumberFromEnv)("OTEL_BSP_EXPORT_TIMEOUT")??30000,this._shutdownOnce=new zZ.BindOnceFuture(this._shutdown,this),this._maxExportBatchSize>this._maxQueueSize)O8.diag.warn("BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize"),this._maxExportBatchSize=this._maxQueueSize}forceFlush(){if(this._shutdownOnce.isCalled)return this._shutdownOnce.promise;return this._flushAll()}onStart(Z,J){}onEnd(Z){if(this._shutdownOnce.isCalled)return;if((Z.spanContext().traceFlags&O8.TraceFlags.SAMPLED)===0)return;this._addToBuffer(Z)}shutdown(){return this._shutdownOnce.call()}_shutdown(){return Promise.resolve().then(()=>{return this.onShutdown()}).then(()=>{return this._flushAll()}).then(()=>{return this._exporter.shutdown()})}_addToBuffer(Z){if(this._finishedSpans.length>=this._maxQueueSize){if(this._droppedSpansCount===0)O8.diag.debug("maxQueueSize reached, dropping spans");this._droppedSpansCount++;return}if(this._droppedSpansCount>0)O8.diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`),this._droppedSpansCount=0;this._finishedSpans.push(Z),this._maybeStartTimer()}_flushAll(){return new Promise((Z,J)=>{let Q=[],$=Math.ceil(this._finishedSpans.length/this._maxExportBatchSize);for(let X=0,Y=$;X{Z()}).catch(J)})}_flushOneBatch(){if(this._clearTimer(),this._finishedSpans.length===0)return Promise.resolve();return new Promise((Z,J)=>{let Q=setTimeout(()=>{J(Error("Timeout"))},this._exportTimeoutMillis);O8.context.with((0,zZ.suppressTracing)(O8.context.active()),()=>{let $;if(this._finishedSpans.length<=this._maxExportBatchSize)$=this._finishedSpans,this._finishedSpans=[];else $=this._finishedSpans.splice(0,this._maxExportBatchSize);let X=()=>this._exporter.export($,(W)=>{if(clearTimeout(Q),W.code===zZ.ExportResultCode.SUCCESS)Z();else J(W.error??Error("BatchSpanProcessor: span export failed"))}),Y=null;for(let W=0,K=$.length;W{(0,zZ.globalErrorHandler)(W),J(W)})})})}_maybeStartTimer(){if(this._isExporting)return;let Z=()=>{this._isExporting=!0,this._flushOneBatch().finally(()=>{if(this._isExporting=!1,this._finishedSpans.length>0)this._clearTimer(),this._maybeStartTimer()}).catch((J)=>{this._isExporting=!1,(0,zZ.globalErrorHandler)(J)})};if(this._finishedSpans.length>=this._maxExportBatchSize)return Z();if(this._timer!==void 0)return;if(this._timer=setTimeout(()=>Z(),this._scheduledDelayMillis),typeof this._timer!=="number")this._timer.unref()}_clearTimer(){if(this._timer!==void 0)clearTimeout(this._timer),this._timer=void 0}}r_.BatchSpanProcessorBase=s_});var $v=w((Jv)=>{Object.defineProperty(Jv,"__esModule",{value:!0});Jv.BatchSpanProcessor=void 0;var qj0=e_();class Zv extends qj0.BatchSpanProcessorBase{onShutdown(){}}Jv.BatchSpanProcessor=Zv});var Gv=w((Kv)=>{Object.defineProperty(Kv,"__esModule",{value:!0});Kv.RandomIdGenerator=void 0;var Lj0=8,Yv=16;class Wv{generateTraceId=Xv(Yv);generateSpanId=Xv(Lj0)}Kv.RandomIdGenerator=Wv;var T$=Buffer.allocUnsafe(Yv);function Xv(Z){return function(){for(let Q=0;Q>>0,Q*4);for(let Q=0;Q0)break;else if(Q===Z-1)T$[Z-1]=1;return T$.toString("hex",0,Z)}}});var Bv=w((f$)=>{Object.defineProperty(f$,"__esModule",{value:!0});f$.RandomIdGenerator=f$.BatchSpanProcessor=void 0;var Oj0=$v();Object.defineProperty(f$,"BatchSpanProcessor",{enumerable:!0,get:function(){return Oj0.BatchSpanProcessor}});var Cj0=Gv();Object.defineProperty(f$,"RandomIdGenerator",{enumerable:!0,get:function(){return Cj0.RandomIdGenerator}})});var bz=w((E$)=>{Object.defineProperty(E$,"__esModule",{value:!0});E$.RandomIdGenerator=E$.BatchSpanProcessor=void 0;var Hv=Bv();Object.defineProperty(E$,"BatchSpanProcessor",{enumerable:!0,get:function(){return Hv.BatchSpanProcessor}});Object.defineProperty(E$,"RandomIdGenerator",{enumerable:!0,get:function(){return Hv.RandomIdGenerator}})});var wv=w((Vv)=>{Object.defineProperty(Vv,"__esModule",{value:!0});Vv.METRIC_OTEL_SDK_SPAN_STARTED=Vv.METRIC_OTEL_SDK_SPAN_LIVE=Vv.ATTR_OTEL_SPAN_SAMPLING_RESULT=Vv.ATTR_OTEL_SPAN_PARENT_ORIGIN=void 0;Vv.ATTR_OTEL_SPAN_PARENT_ORIGIN="otel.span.parent.origin";Vv.ATTR_OTEL_SPAN_SAMPLING_RESULT="otel.span.sampling_result";Vv.METRIC_OTEL_SDK_SPAN_LIVE="otel.sdk.span.live";Vv.METRIC_OTEL_SDK_SPAN_STARTED="otel.sdk.span.started"});var qv=w((Uv)=>{Object.defineProperty(Uv,"__esModule",{value:!0});Uv.TracerMetrics=void 0;var y$=L8(),P4=wv();class Dv{startedSpans;liveSpans;constructor(Z){this.startedSpans=Z.createCounter(P4.METRIC_OTEL_SDK_SPAN_STARTED,{unit:"{span}",description:"The number of created spans."}),this.liveSpans=Z.createUpDownCounter(P4.METRIC_OTEL_SDK_SPAN_LIVE,{unit:"{span}",description:"The number of currently live spans."})}startSpan(Z,J){let Q=Nj0(J);if(this.startedSpans.add(1,{[P4.ATTR_OTEL_SPAN_PARENT_ORIGIN]:Ij0(Z),[P4.ATTR_OTEL_SPAN_SAMPLING_RESULT]:Q}),J===y$.SamplingDecision.NOT_RECORD)return()=>{};let $={[P4.ATTR_OTEL_SPAN_SAMPLING_RESULT]:Q};return this.liveSpans.add(1,$),()=>{this.liveSpans.add(-1,$)}}}Uv.TracerMetrics=Dv;function Ij0(Z){if(!Z)return"none";if(Z.isRemote)return"remote";return"local"}function Nj0(Z){switch(Z){case y$.SamplingDecision.RECORD_AND_SAMPLED:return"RECORD_AND_SAMPLE";case y$.SamplingDecision.RECORD:return"RECORD_ONLY";case y$.SamplingDecision.NOT_RECORD:return"DROP"}}});var Cv=w((Lv)=>{Object.defineProperty(Lv,"__esModule",{value:!0});Lv.VERSION=void 0;Lv.VERSION="2.6.1"});var Rv=w((kv)=>{Object.defineProperty(kv,"__esModule",{value:!0});kv.Tracer=void 0;var v0=C(),h$=Q0(),Tj0=k_(),fj0=vz(),Ej0=bz(),yj0=qv(),hj0=Cv();class Pv{_sampler;_generalLimits;_spanLimits;_idGenerator;instrumentationScope;_resource;_spanProcessor;_tracerMetrics;constructor(Z,J,Q,$){let X=(0,fj0.mergeConfig)(J);this._sampler=X.sampler,this._generalLimits=X.generalLimits,this._spanLimits=X.spanLimits,this._idGenerator=J.idGenerator||new Ej0.RandomIdGenerator,this._resource=Q,this._spanProcessor=$,this.instrumentationScope=Z;let Y=X.meterProvider?X.meterProvider.getMeter("@opentelemetry/sdk-trace",hj0.VERSION):v0.createNoopMeter();this._tracerMetrics=new yj0.TracerMetrics(Y)}startSpan(Z,J={},Q=v0.context.active()){if(J.root)Q=v0.trace.deleteSpan(Q);let $=v0.trace.getSpan(Q);if((0,h$.isTracingSuppressed)(Q))return v0.diag.debug("Instrumentation suppressed, returning Noop Span"),v0.trace.wrapSpanContext(v0.INVALID_SPAN_CONTEXT);let X=$?.spanContext(),Y=this._idGenerator.generateSpanId(),W,K,z;if(!X||!v0.trace.isSpanContextValid(X))K=this._idGenerator.generateTraceId();else K=X.traceId,z=X.traceState,W=X;let G=J.kind??v0.SpanKind.INTERNAL,H=(J.links??[]).map((O)=>{return{context:O.context,attributes:(0,h$.sanitizeAttributes)(O.attributes)}}),B=(0,h$.sanitizeAttributes)(J.attributes),V=this._sampler.shouldSample(Q,K,Z,G,B,H),F=this._tracerMetrics.startSpan(X,V.decision);z=V.traceState??z;let D=V.decision===v0.SamplingDecision.RECORD_AND_SAMPLED?v0.TraceFlags.SAMPLED:v0.TraceFlags.NONE,U={traceId:K,spanId:Y,traceFlags:D,traceState:z};if(V.decision===v0.SamplingDecision.NOT_RECORD)return v0.diag.debug("Recording is off, propagating context in a non-recording span"),v0.trace.wrapSpanContext(U);let j=(0,h$.sanitizeAttributes)(Object.assign(B,V.attributes));return new Tj0.SpanImpl({resource:this._resource,scope:this.instrumentationScope,context:Q,spanContext:U,name:Z,kind:G,links:H,parentSpanContext:W,attributes:j,startTime:J.startTime,spanProcessor:this._spanProcessor,spanLimits:this._spanLimits,recordEndMetrics:F})}startActiveSpan(Z,J,Q,$){let X,Y,W;if(arguments.length<2)return;else if(arguments.length===2)W=J;else if(arguments.length===3)X=J,W=Q;else X=J,Y=Q,W=$;let K=Y??v0.context.active(),z=this.startSpan(Z,X,K),G=v0.trace.setSpan(K,z);return v0.context.with(G,W,void 0,z)}getGeneralLimits(){return this._generalLimits}getSpanLimits(){return this._spanLimits}}kv.Tracer=Pv});var Tv=w((Iv)=>{Object.defineProperty(Iv,"__esModule",{value:!0});Iv.MultiSpanProcessor=void 0;var Sj0=Q0();class Av{_spanProcessors;constructor(Z){this._spanProcessors=Z}forceFlush(){let Z=[];for(let J of this._spanProcessors)Z.push(J.forceFlush());return new Promise((J)=>{Promise.all(Z).then(()=>{J()}).catch((Q)=>{(0,Sj0.globalErrorHandler)(Q||Error("MultiSpanProcessor: forceFlush failed")),J()})})}onStart(Z,J){for(let Q of this._spanProcessors)Q.onStart(Z,J)}onEnding(Z){for(let J of this._spanProcessors)if(J.onEnding)J.onEnding(Z)}onEnd(Z){for(let J of this._spanProcessors)J.onEnd(Z)}shutdown(){let Z=[];for(let J of this._spanProcessors)Z.push(J.shutdown());return new Promise((J,Q)=>{Promise.all(Z).then(()=>{J()},Q)})}}Iv.MultiSpanProcessor=Av});var Sv=w((yv)=>{Object.defineProperty(yv,"__esModule",{value:!0});yv.BasicTracerProvider=yv.ForceFlushState=void 0;var _j0=Q0(),vj0=Nz(),bj0=Rv(),xj0=_z(),gj0=Tv(),dj0=vz(),C8;(function(Z){Z[Z.resolved=0]="resolved",Z[Z.timeout=1]="timeout",Z[Z.error=2]="error",Z[Z.unresolved=3]="unresolved"})(C8=yv.ForceFlushState||(yv.ForceFlushState={}));class Ev{_config;_tracers=new Map;_resource;_activeSpanProcessor;constructor(Z={}){let J=(0,_j0.merge)({},(0,xj0.loadDefaultConfig)(),(0,dj0.reconfigureLimits)(Z));this._resource=J.resource??(0,vj0.defaultResource)(),this._config=Object.assign({},J,{resource:this._resource});let Q=[];if(Z.spanProcessors?.length)Q.push(...Z.spanProcessors);this._activeSpanProcessor=new gj0.MultiSpanProcessor(Q)}getTracer(Z,J,Q){let $=`${Z}@${J||""}:${Q?.schemaUrl||""}`;if(!this._tracers.has($))this._tracers.set($,new bj0.Tracer({name:Z,version:J,schemaUrl:Q?.schemaUrl},this._config,this._resource,this._activeSpanProcessor));return this._tracers.get($)}forceFlush(){let Z=this._config.forceFlushTimeoutMillis,J=this._activeSpanProcessor._spanProcessors.map((Q)=>{return new Promise(($)=>{let X,Y=setTimeout(()=>{$(Error(`Span processor did not completed within timeout period of ${Z} ms`)),X=C8.timeout},Z);Q.forceFlush().then(()=>{if(clearTimeout(Y),X!==C8.timeout)X=C8.resolved,$(X)}).catch((W)=>{clearTimeout(Y),X=C8.error,$(W)})})});return new Promise((Q,$)=>{Promise.all(J).then((X)=>{let Y=X.filter((W)=>W!==C8.resolved);if(Y.length>0)$(Y);else Q()}).catch((X)=>$([X]))})}shutdown(){return this._activeSpanProcessor.shutdown()}}yv.BasicTracerProvider=Ev});var xv=w((vv)=>{Object.defineProperty(vv,"__esModule",{value:!0});vv.ConsoleSpanExporter=void 0;var xz=Q0();class _v{export(Z,J){return this._sendSpans(Z,J)}shutdown(){return this._sendSpans([]),this.forceFlush()}forceFlush(){return Promise.resolve()}_exportInfo(Z){return{resource:{attributes:Z.resource.attributes},instrumentationScope:Z.instrumentationScope,traceId:Z.spanContext().traceId,parentSpanContext:Z.parentSpanContext,traceState:Z.spanContext().traceState?.serialize(),name:Z.name,id:Z.spanContext().spanId,kind:Z.kind,timestamp:(0,xz.hrTimeToMicroseconds)(Z.startTime),duration:(0,xz.hrTimeToMicroseconds)(Z.duration),attributes:Z.attributes,status:Z.status,events:Z.events,links:Z.links}}_sendSpans(Z,J){for(let Q of Z)console.dir(this._exportInfo(Q),{depth:3});if(J)return J({code:xz.ExportResultCode.SUCCESS})}}vv.ConsoleSpanExporter=_v});var uv=w((cv)=>{Object.defineProperty(cv,"__esModule",{value:!0});cv.InMemorySpanExporter=void 0;var gv=Q0();class dv{_finishedSpans=[];_stopped=!1;export(Z,J){if(this._stopped)return J({code:gv.ExportResultCode.FAILED,error:Error("Exporter has been stopped")});this._finishedSpans.push(...Z),setTimeout(()=>J({code:gv.ExportResultCode.SUCCESS}),0)}shutdown(){return this._stopped=!0,this._finishedSpans=[],this.forceFlush()}forceFlush(){return Promise.resolve()}reset(){this._finishedSpans=[]}getFinishedSpans(){return this._finishedSpans}}cv.InMemorySpanExporter=dv});var ov=w((pv)=>{Object.defineProperty(pv,"__esModule",{value:!0});pv.SimpleSpanProcessor=void 0;var cj0=C(),S$=Q0();class lv{_exporter;_shutdownOnce;_pendingExports;constructor(Z){this._exporter=Z,this._shutdownOnce=new S$.BindOnceFuture(this._shutdown,this),this._pendingExports=new Set}async forceFlush(){if(await Promise.all(Array.from(this._pendingExports)),this._exporter.forceFlush)await this._exporter.forceFlush()}onStart(Z,J){}onEnd(Z){if(this._shutdownOnce.isCalled)return;if((Z.spanContext().traceFlags&cj0.TraceFlags.SAMPLED)===0)return;let J=this._doExport(Z).catch((Q)=>(0,S$.globalErrorHandler)(Q));this._pendingExports.add(J),J.finally(()=>this._pendingExports.delete(J))}async _doExport(Z){if(Z.resource.asyncAttributesPending)await Z.resource.waitForAsyncAttributes?.();let J=await S$.internal._export(this._exporter,[Z]);if(J.code!==S$.ExportResultCode.SUCCESS)throw J.error??Error(`SimpleSpanProcessor: span export failed (status ${J})`)}shutdown(){return this._shutdownOnce.call()}_shutdown(){return this._exporter.shutdown()}}pv.SimpleSpanProcessor=lv});var rv=w((av)=>{Object.defineProperty(av,"__esModule",{value:!0});av.NoopSpanProcessor=void 0;class nv{onStart(Z,J){}onEnd(Z){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}av.NoopSpanProcessor=nv});var gz=w((L6)=>{Object.defineProperty(L6,"__esModule",{value:!0});L6.SamplingDecision=L6.TraceIdRatioBasedSampler=L6.ParentBasedSampler=L6.AlwaysOnSampler=L6.AlwaysOffSampler=L6.NoopSpanProcessor=L6.SimpleSpanProcessor=L6.InMemorySpanExporter=L6.ConsoleSpanExporter=L6.RandomIdGenerator=L6.BatchSpanProcessor=L6.BasicTracerProvider=void 0;var mj0=Sv();Object.defineProperty(L6,"BasicTracerProvider",{enumerable:!0,get:function(){return mj0.BasicTracerProvider}});var tv=bz();Object.defineProperty(L6,"BatchSpanProcessor",{enumerable:!0,get:function(){return tv.BatchSpanProcessor}});Object.defineProperty(L6,"RandomIdGenerator",{enumerable:!0,get:function(){return tv.RandomIdGenerator}});var uj0=xv();Object.defineProperty(L6,"ConsoleSpanExporter",{enumerable:!0,get:function(){return uj0.ConsoleSpanExporter}});var lj0=uv();Object.defineProperty(L6,"InMemorySpanExporter",{enumerable:!0,get:function(){return lj0.InMemorySpanExporter}});var pj0=ov();Object.defineProperty(L6,"SimpleSpanProcessor",{enumerable:!0,get:function(){return pj0.SimpleSpanProcessor}});var ij0=rv();Object.defineProperty(L6,"NoopSpanProcessor",{enumerable:!0,get:function(){return ij0.NoopSpanProcessor}});var oj0=k$();Object.defineProperty(L6,"AlwaysOffSampler",{enumerable:!0,get:function(){return oj0.AlwaysOffSampler}});var nj0=M$();Object.defineProperty(L6,"AlwaysOnSampler",{enumerable:!0,get:function(){return nj0.AlwaysOnSampler}});var aj0=Ez();Object.defineProperty(L6,"ParentBasedSampler",{enumerable:!0,get:function(){return aj0.ParentBasedSampler}});var sj0=yz();Object.defineProperty(L6,"TraceIdRatioBasedSampler",{enumerable:!0,get:function(){return sj0.TraceIdRatioBasedSampler}});var rj0=L8();Object.defineProperty(L6,"SamplingDecision",{enumerable:!0,get:function(){return rj0.SamplingDecision}})});var Lx=w((jx)=>{Object.defineProperty(jx,"__esModule",{value:!0});jx.PACKAGE_NAME=jx.PACKAGE_VERSION=void 0;jx.PACKAGE_VERSION="0.23.0";jx.PACKAGE_NAME="@opentelemetry/instrumentation-undici"});var Mx=w((Px)=>{Object.defineProperty(Px,"__esModule",{value:!0});Px.UndiciInstrumentation=void 0;var TG=A("diagnostics_channel"),pO0=A("url"),h4=c(),b6=C(),i$=Q0(),A0=s(),Ox=Lx();class Cx extends h4.InstrumentationBase{_recordFromReq=new WeakMap;constructor(Z={}){super(Ox.PACKAGE_NAME,Ox.PACKAGE_VERSION,Z)}init(){return}disable(){super.disable(),this._channelSubs.forEach((Z)=>Z.unsubscribe()),this._channelSubs.length=0}enable(){if(super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0)return;this.subscribeToChannel("undici:request:create",this.onRequestCreated.bind(this)),this.subscribeToChannel("undici:client:sendHeaders",this.onRequestHeaders.bind(this)),this.subscribeToChannel("undici:request:headers",this.onResponseHeaders.bind(this)),this.subscribeToChannel("undici:request:trailers",this.onDone.bind(this)),this.subscribeToChannel("undici:request:error",this.onError.bind(this))}_updateMetricInstruments(){this._httpClientDurationHistogram=this.meter.createHistogram(A0.METRIC_HTTP_CLIENT_REQUEST_DURATION,{description:"Measures the duration of outbound HTTP requests.",unit:"s",valueType:b6.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}})}subscribeToChannel(Z,J){let[Q,$]=process.version.replace("v","").split(".").map((W)=>Number(W)),X=Q>18||Q===18&&$>=19,Y;if(X)TG.subscribe?.(Z,J),Y=()=>TG.unsubscribe?.(Z,J);else{let W=TG.channel(Z);W.subscribe(J),Y=()=>W.unsubscribe(J)}this._channelSubs.push({name:Z,unsubscribe:Y})}parseRequestHeaders(Z){let J=new Map;if(Array.isArray(Z.headers))for(let Q=0;Q!Q||Z.method==="CONNECT"||J.ignoreRequestHook?.(Z),(T)=>T&&this._diag.error("caught ignoreRequestHook error: ",T),!0))return;let X=(0,i$.hrTime)(),Y;try{Y=new pO0.URL(Z.path,Z.origin)}catch(T){this._diag.warn("could not determine url.full:",T);return}let W=Y.protocol.replace(":",""),K=this.getRequestMethod(Z.method),z={[A0.ATTR_HTTP_REQUEST_METHOD]:K,[A0.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]:Z.method,[A0.ATTR_URL_FULL]:Y.toString(),[A0.ATTR_URL_PATH]:Y.pathname,[A0.ATTR_URL_QUERY]:Y.search,[A0.ATTR_URL_SCHEME]:W},G={https:"443",http:"80"},H=Y.hostname,B=Y.port||G[W];if(z[A0.ATTR_SERVER_ADDRESS]=H,B&&!isNaN(Number(B)))z[A0.ATTR_SERVER_PORT]=Number(B);let F=this.parseRequestHeaders(Z).get("user-agent");if(F){let T=Array.isArray(F)?F[F.length-1]:F;z[A0.ATTR_USER_AGENT_ORIGINAL]=T}let D=(0,h4.safeExecuteInTheMiddle)(()=>J.startSpanHook?.(Z),(T)=>T&&this._diag.error("caught startSpanHook error: ",T),!0);if(D)Object.entries(D).forEach(([T,n])=>{z[T]=n});let U=b6.context.active(),j=b6.trace.getSpan(U),L;if(J.requireParentforSpans&&(!j||!b6.trace.isSpanContextValid(j.spanContext())))L=b6.trace.wrapSpanContext(b6.INVALID_SPAN_CONTEXT);else L=this.tracer.startSpan(K==="_OTHER"?"HTTP":K,{kind:b6.SpanKind.CLIENT,attributes:z},U);(0,h4.safeExecuteInTheMiddle)(()=>J.requestHook?.(L,Z),(T)=>T&&this._diag.error("caught requestHook error: ",T),!0);let O=b6.trace.setSpan(b6.context.active(),L),M={};b6.propagation.inject(O,M);let S=Object.entries(M);for(let T=0;TH.toLowerCase())),G=this.parseRequestHeaders(Z);for(let[H,B]of G.entries())if(z.has(H)){let V=Array.isArray(B)?B:[B];K[`http.request.header.${H}`]=V}}X.setAttributes(K)}onResponseHeaders({request:Z,response:J}){let Q=this._recordFromReq.get(Z);if(!Q)return;let{span:$,attributes:X}=Q,Y={[A0.ATTR_HTTP_RESPONSE_STATUS_CODE]:J.statusCode},W=this.getConfig();if((0,h4.safeExecuteInTheMiddle)(()=>W.responseHook?.($,{request:Z,response:J}),(K)=>K&&this._diag.error("caught responseHook error: ",K),!0),W.headersToSpanAttributes?.responseHeaders){let K=new Set;W.headersToSpanAttributes?.responseHeaders.forEach((z)=>K.add(z.toLowerCase()));for(let z=0;z=400?b6.SpanStatusCode.ERROR:b6.SpanStatusCode.UNSET}),Q.attributes=Object.assign(X,Y)}onDone({request:Z}){let J=this._recordFromReq.get(Z);if(!J)return;let{span:Q,attributes:$,startTime:X}=J;Q.end(),this._recordFromReq.delete(Z),this.recordRequestDuration($,X)}onError({request:Z,error:J}){let Q=this._recordFromReq.get(Z);if(!Q)return;let{span:$,attributes:X,startTime:Y}=Q;$.recordException(J),$.setStatus({code:b6.SpanStatusCode.ERROR,message:J.message}),$.end(),this._recordFromReq.delete(Z),X[A0.ATTR_ERROR_TYPE]=J.message,this.recordRequestDuration(X,Y)}recordRequestDuration(Z,J){let Q={};[A0.ATTR_HTTP_RESPONSE_STATUS_CODE,A0.ATTR_HTTP_REQUEST_METHOD,A0.ATTR_SERVER_ADDRESS,A0.ATTR_SERVER_PORT,A0.ATTR_URL_SCHEME,A0.ATTR_ERROR_TYPE].forEach((Y)=>{if(Y in Z)Q[Y]=Z[Y]});let X=(0,i$.hrTimeToMilliseconds)((0,i$.hrTimeDuration)(J,(0,i$.hrTime)()))/1000;this._httpClientDurationHistogram.record(X,Q)}getRequestMethod(Z){let J={CONNECT:!0,OPTIONS:!0,HEAD:!0,GET:!0,POST:!0,PUT:!0,PATCH:!0,DELETE:!0,TRACE:!0,QUERY:!0};if(Z.toUpperCase()in J)return Z.toUpperCase();return"_OTHER"}}Px.UndiciInstrumentation=Cx});var Rx=w((fG)=>{Object.defineProperty(fG,"__esModule",{value:!0});fG.UndiciInstrumentation=void 0;var iO0=Mx();Object.defineProperty(fG,"UndiciInstrumentation",{enumerable:!0,get:function(){return iO0.UndiciInstrumentation}})});var o$=w((fx)=>{Object.defineProperty(fx,"__esModule",{value:!0});fx.ExpressLayerType=void 0;var eO0;(function(Z){Z.ROUTER="router",Z.MIDDLEWARE="middleware",Z.REQUEST_HANDLER="request_handler"})(eO0=fx.ExpressLayerType||(fx.ExpressLayerType={}))});var n$=w((Ex)=>{Object.defineProperty(Ex,"__esModule",{value:!0});Ex.AttributeNames=void 0;var ZC0;(function(Z){Z.EXPRESS_TYPE="express.type",Z.EXPRESS_NAME="express.name"})(ZC0=Ex.AttributeNames||(Ex.AttributeNames={}))});var hG=w((yx)=>{Object.defineProperty(yx,"__esModule",{value:!0});yx._LAYERS_STORE_PROPERTY=yx.kLayerPatched=void 0;yx.kLayerPatched=Symbol("express-layer-patched");yx._LAYERS_STORE_PROPERTY="__ot_middlewares"});var xx=w((vx)=>{Object.defineProperty(vx,"__esModule",{value:!0});vx.getActualMatchedRoute=vx.getConstructedRoute=vx.getLayerPath=vx.asErrorAndMessage=vx.isLayerIgnored=vx.getLayerMetadata=vx.getRouterPath=vx.storeLayerPath=void 0;var SG=o$(),A8=n$(),K1=hG(),QC0=(Z,J)=>{if(Array.isArray(Z[K1._LAYERS_STORE_PROPERTY])===!1)Object.defineProperty(Z,K1._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]});if(J===void 0)return{isLayerPathStored:!1};return Z[K1._LAYERS_STORE_PROPERTY].push(J),{isLayerPathStored:!0}};vx.storeLayerPath=QC0;var $C0=(Z,J)=>{let Q=J.handle?.stack?.[0];if(Q?.route?.path)return`${Z}${Q.route.path}`;if(Q?.handle?.stack)return vx.getRouterPath(Z,Q);return Z};vx.getRouterPath=$C0;var XC0=(Z,J,Q)=>{if(J.name==="router"){let $=vx.getRouterPath("",J),X=$?$:Q||Z||"/";return{attributes:{[A8.AttributeNames.EXPRESS_NAME]:X,[A8.AttributeNames.EXPRESS_TYPE]:SG.ExpressLayerType.ROUTER},name:`router - ${X}`}}else if(J.name==="bound dispatch"||J.name==="handle")return{attributes:{[A8.AttributeNames.EXPRESS_NAME]:(Z||Q)??"request handler",[A8.AttributeNames.EXPRESS_TYPE]:SG.ExpressLayerType.REQUEST_HANDLER},name:`request handler${J.path?` - ${Z||Q}`:""}`};else return{attributes:{[A8.AttributeNames.EXPRESS_NAME]:J.name,[A8.AttributeNames.EXPRESS_TYPE]:SG.ExpressLayerType.MIDDLEWARE},name:`middleware - ${J.name}`}};vx.getLayerMetadata=XC0;var YC0=(Z,J)=>{if(typeof J==="string")return J===Z;else if(J instanceof RegExp)return J.test(Z);else if(typeof J==="function")return J(Z);else throw TypeError("Pattern is in unsupported datatype")},WC0=(Z,J,Q)=>{if(Array.isArray(Q?.ignoreLayersType)&&Q?.ignoreLayersType?.includes(J))return!0;if(Array.isArray(Q?.ignoreLayers)===!1)return!1;try{for(let $ of Q.ignoreLayers)if(YC0(Z,$))return!0}catch($){}return!1};vx.isLayerIgnored=WC0;var KC0=(Z)=>Z instanceof Error?[Z,Z.message]:[String(Z),String(Z)];vx.asErrorAndMessage=KC0;var zC0=(Z)=>{let J=Z[0];if(Array.isArray(J))return J.map((Q)=>Sx(Q)||"").join(",");return Sx(J)};vx.getLayerPath=zC0;var Sx=(Z)=>{if(typeof Z==="string")return Z;if(Z instanceof RegExp||typeof Z==="number")return Z.toString();return};function _x(Z){let Q=(Array.isArray(Z[K1._LAYERS_STORE_PROPERTY])?Z[K1._LAYERS_STORE_PROPERTY]:[]).filter(($)=>$!=="/"&&$!=="/*");if(Q.length===1&&Q[0]==="*")return"*";return Q.join("").replace(/\/{2,}/g,"/")}vx.getConstructedRoute=_x;function GC0(Z){let J=Array.isArray(Z[K1._LAYERS_STORE_PROPERTY])?Z[K1._LAYERS_STORE_PROPERTY]:[];if(J.length===0)return;if(J.every((Y)=>Y==="/"))return Z.originalUrl==="/"?"/":void 0;let Q=_x(Z);if(Q==="*")return Q;if(Q.includes("/")&&(Q.includes(",")||Q.includes("\\")||Q.includes("*")||Q.includes("[")))return Q;let $=Q.startsWith("/")?Q:`/${Q}`;return $.length>0&&(Z.originalUrl===$||Z.originalUrl.startsWith($)||BC0($))?$:void 0}vx.getActualMatchedRoute=GC0;function BC0(Z){return Z.includes(":")||Z.includes("*")}});var cx=w((gx)=>{Object.defineProperty(gx,"__esModule",{value:!0});gx.PACKAGE_NAME=gx.PACKAGE_VERSION=void 0;gx.PACKAGE_VERSION="0.61.0";gx.PACKAGE_NAME="@opentelemetry/instrumentation-express"});var ax=w((ox)=>{Object.defineProperty(ox,"__esModule",{value:!0});ox.ExpressInstrumentation=void 0;var mx=Q0(),O9=C(),ux=o$(),lx=n$(),g9=xx(),px=cx(),I8=c(),qC0=s(),a$=hG();class ix extends I8.InstrumentationBase{constructor(Z={}){super(px.PACKAGE_NAME,px.PACKAGE_VERSION,Z)}init(){return[new I8.InstrumentationNodeModuleDefinition("express",[">=4.0.0 <6"],(Z)=>{let J=typeof Z?.Router?.prototype?.route==="function",Q=J?Z.Router.prototype:Z.Router;if((0,I8.isWrapped)(Q.route))this._unwrap(Q,"route");if(this._wrap(Q,"route",this._getRoutePatch()),(0,I8.isWrapped)(Q.use))this._unwrap(Q,"use");if(this._wrap(Q,"use",this._getRouterUsePatch()),(0,I8.isWrapped)(Z.application.use))this._unwrap(Z.application,"use");return this._wrap(Z.application,"use",this._getAppUsePatch(J)),Z},(Z)=>{if(Z===void 0)return;let Q=typeof Z?.Router?.prototype?.route==="function"?Z.Router.prototype:Z.Router;this._unwrap(Q,"route"),this._unwrap(Q,"use"),this._unwrap(Z.application,"use")})]}_getRoutePatch(){let Z=this;return function(J){return function(...$){let X=J.apply(this,$),Y=this.stack[this.stack.length-1];return Z._applyPatch(Y,(0,g9.getLayerPath)($)),X}}}_getRouterUsePatch(){let Z=this;return function(J){return function(...$){let X=J.apply(this,$),Y=this.stack[this.stack.length-1];return Z._applyPatch(Y,(0,g9.getLayerPath)($)),X}}}_getAppUsePatch(Z){let J=this;return function(Q){return function(...X){let Y=Z?this.router:this._router,W=Q.apply(this,X);if(Y){let K=Y.stack[Y.stack.length-1];J._applyPatch(K,(0,g9.getLayerPath)(X))}return W}}}_applyPatch(Z,J){let Q=this;if(Z[a$.kLayerPatched]===!0)return;Z[a$.kLayerPatched]=!0,this._wrap(Z,"handle",($)=>{if($.length===4)return $;let X=function(Y,W){let{isLayerPathStored:K}=(0,g9.storeLayerPath)(Y,J),z=(0,g9.getConstructedRoute)(Y),G=(0,g9.getActualMatchedRoute)(Y),H={[qC0.ATTR_HTTP_ROUTE]:G},B=(0,g9.getLayerMetadata)(z,Z,J),V=B.attributes[lx.AttributeNames.EXPRESS_TYPE],F=(0,mx.getRPCMetadata)(O9.context.active());if(F?.type===mx.RPCType.HTTP)F.route=G;if((0,g9.isLayerIgnored)(B.name,V,Q.getConfig())){if(V===ux.ExpressLayerType.MIDDLEWARE)Y[a$._LAYERS_STORE_PROPERTY].pop();return $.apply(this,arguments)}if(O9.trace.getSpan(O9.context.active())===void 0)return $.apply(this,arguments);let D=Q._getSpanName({request:Y,layerType:V,route:z},B.name),U=Q.tracer.startSpan(D,{attributes:Object.assign(H,B.attributes)}),j=O9.context.active(),L=O9.trace.setSpan(j,U),{requestHook:O}=Q.getConfig();if(O)(0,I8.safeExecuteInTheMiddle)(()=>O(U,{request:Y,layerType:V,route:z}),(r)=>{if(r)O9.diag.error("express instrumentation: request hook failed",r)},!0);let M=!1;if(B.attributes[lx.AttributeNames.EXPRESS_TYPE]===ux.ExpressLayerType.ROUTER)U.end(),M=!0,L=j;let S=()=>{if(M===!1)M=!0,U.end()},T=Array.from(arguments),n=T.findIndex((r)=>typeof r==="function");if(n>=0)arguments[n]=function(){let r=arguments[0],t0=![void 0,null,"route","router"].includes(r);if(!M&&t0){let[w7,D7]=(0,g9.asErrorAndMessage)(r);U.recordException(w7),U.setStatus({code:O9.SpanStatusCode.ERROR,message:D7})}if(M===!1)M=!0,Y.res?.removeListener("finish",S),U.end();if(!(Y.route&&t0)&&K)Y[a$._LAYERS_STORE_PROPERTY].pop();let I9=T[n];return O9.context.bind(j,I9).apply(this,arguments)};try{return O9.context.bind(L,$).apply(this,arguments)}catch(r){let[t0,I9]=(0,g9.asErrorAndMessage)(r);throw U.recordException(t0),U.setStatus({code:O9.SpanStatusCode.ERROR,message:I9}),r}finally{if(!M)W.once("finish",S)}};for(let Y in $)Object.defineProperty(X,Y,{get(){return $[Y]},set(W){$[Y]=W}});return X})}_getSpanName(Z,J){let{spanNameHook:Q}=this.getConfig();if(!(Q instanceof Function))return J;try{return Q(Z,J)??J}catch($){return O9.diag.error("express instrumentation: error calling span name rewrite hook",$),J}}}ox.ExpressInstrumentation=ix});var sx=w((S4)=>{Object.defineProperty(S4,"__esModule",{value:!0});S4.AttributeNames=S4.ExpressLayerType=S4.ExpressInstrumentation=void 0;var LC0=ax();Object.defineProperty(S4,"ExpressInstrumentation",{enumerable:!0,get:function(){return LC0.ExpressInstrumentation}});var OC0=o$();Object.defineProperty(S4,"ExpressLayerType",{enumerable:!0,get:function(){return OC0.ExpressLayerType}});var CC0=n$();Object.defineProperty(S4,"AttributeNames",{enumerable:!0,get:function(){return CC0.AttributeNames}})});var Qg=w((Jg)=>{Object.defineProperty(Jg,"__esModule",{value:!0});Jg.SeverityNumber=void 0;var AC0;(function(Z){Z[Z.UNSPECIFIED=0]="UNSPECIFIED",Z[Z.TRACE=1]="TRACE",Z[Z.TRACE2=2]="TRACE2",Z[Z.TRACE3=3]="TRACE3",Z[Z.TRACE4=4]="TRACE4",Z[Z.DEBUG=5]="DEBUG",Z[Z.DEBUG2=6]="DEBUG2",Z[Z.DEBUG3=7]="DEBUG3",Z[Z.DEBUG4=8]="DEBUG4",Z[Z.INFO=9]="INFO",Z[Z.INFO2=10]="INFO2",Z[Z.INFO3=11]="INFO3",Z[Z.INFO4=12]="INFO4",Z[Z.WARN=13]="WARN",Z[Z.WARN2=14]="WARN2",Z[Z.WARN3=15]="WARN3",Z[Z.WARN4=16]="WARN4",Z[Z.ERROR=17]="ERROR",Z[Z.ERROR2=18]="ERROR2",Z[Z.ERROR3=19]="ERROR3",Z[Z.ERROR4=20]="ERROR4",Z[Z.FATAL=21]="FATAL",Z[Z.FATAL2=22]="FATAL2",Z[Z.FATAL3=23]="FATAL3",Z[Z.FATAL4=24]="FATAL4"})(AC0=Jg.SeverityNumber||(Jg.SeverityNumber={}))});var r$=w(($g)=>{Object.defineProperty($g,"__esModule",{value:!0});$g.NOOP_LOGGER=$g.NoopLogger=void 0;class bG{emit(Z){}}$g.NoopLogger=bG;$g.NOOP_LOGGER=new bG});var Kg=w((Yg)=>{Object.defineProperty(Yg,"__esModule",{value:!0});Yg.API_BACKWARDS_COMPATIBILITY_VERSION=Yg.makeGetter=Yg._global=Yg.GLOBAL_LOGS_API_KEY=void 0;Yg.GLOBAL_LOGS_API_KEY=Symbol.for("io.opentelemetry.js.api.logs");Yg._global=globalThis;function NC0(Z,J,Q){return($)=>$===Z?J:Q}Yg.makeGetter=NC0;Yg.API_BACKWARDS_COMPATIBILITY_VERSION=1});var gG=w((zg)=>{Object.defineProperty(zg,"__esModule",{value:!0});zg.NOOP_LOGGER_PROVIDER=zg.NoopLoggerProvider=void 0;var yC0=r$();class xG{getLogger(Z,J,Q){return new yC0.NoopLogger}}zg.NoopLoggerProvider=xG;zg.NOOP_LOGGER_PROVIDER=new xG});var Fg=w((Hg)=>{Object.defineProperty(Hg,"__esModule",{value:!0});Hg.ProxyLogger=void 0;var SC0=r$();class Bg{constructor(Z,J,Q,$){this._provider=Z,this.name=J,this.version=Q,this.options=$}emit(Z){this._getLogger().emit(Z)}_getLogger(){if(this._delegate)return this._delegate;let Z=this._provider._getDelegateLogger(this.name,this.version,this.options);if(!Z)return SC0.NOOP_LOGGER;return this._delegate=Z,this._delegate}}Hg.ProxyLogger=Bg});var jg=w((Dg)=>{Object.defineProperty(Dg,"__esModule",{value:!0});Dg.ProxyLoggerProvider=void 0;var _C0=gG(),vC0=Fg();class wg{getLogger(Z,J,Q){var $;return($=this._getDelegateLogger(Z,J,Q))!==null&&$!==void 0?$:new vC0.ProxyLogger(this,Z,J,Q)}_getDelegate(){var Z;return(Z=this._delegate)!==null&&Z!==void 0?Z:_C0.NOOP_LOGGER_PROVIDER}_setDelegate(Z){this._delegate=Z}_getDelegateLogger(Z,J,Q){var $;return($=this._delegate)===null||$===void 0?void 0:$.getLogger(Z,J,Q)}}Dg.ProxyLoggerProvider=wg});var Cg=w((Lg)=>{Object.defineProperty(Lg,"__esModule",{value:!0});Lg.LogsAPI=void 0;var Z9=Kg(),bC0=gG(),qg=jg();class dG{constructor(){this._proxyLoggerProvider=new qg.ProxyLoggerProvider}static getInstance(){if(!this._instance)this._instance=new dG;return this._instance}setGlobalLoggerProvider(Z){if(Z9._global[Z9.GLOBAL_LOGS_API_KEY])return this.getLoggerProvider();return Z9._global[Z9.GLOBAL_LOGS_API_KEY]=(0,Z9.makeGetter)(Z9.API_BACKWARDS_COMPATIBILITY_VERSION,Z,bC0.NOOP_LOGGER_PROVIDER),this._proxyLoggerProvider._setDelegate(Z),Z}getLoggerProvider(){var Z,J;return(J=(Z=Z9._global[Z9.GLOBAL_LOGS_API_KEY])===null||Z===void 0?void 0:Z.call(Z9._global,Z9.API_BACKWARDS_COMPATIBILITY_VERSION))!==null&&J!==void 0?J:this._proxyLoggerProvider}getLogger(Z,J,Q){return this.getLoggerProvider().getLogger(Z,J,Q)}disable(){delete Z9._global[Z9.GLOBAL_LOGS_API_KEY],this._proxyLoggerProvider=new qg.ProxyLoggerProvider}}Lg.LogsAPI=dG});var cG=w((_4)=>{Object.defineProperty(_4,"__esModule",{value:!0});_4.logs=_4.NoopLogger=_4.NOOP_LOGGER=_4.SeverityNumber=void 0;var xC0=Qg();Object.defineProperty(_4,"SeverityNumber",{enumerable:!0,get:function(){return xC0.SeverityNumber}});var Pg=r$();Object.defineProperty(_4,"NOOP_LOGGER",{enumerable:!0,get:function(){return Pg.NOOP_LOGGER}});Object.defineProperty(_4,"NoopLogger",{enumerable:!0,get:function(){return Pg.NoopLogger}});var gC0=Cg();_4.logs=gC0.LogsAPI.getInstance()});var Ag=w((Mg)=>{Object.defineProperty(Mg,"__esModule",{value:!0});Mg.disableInstrumentations=Mg.enableInstrumentations=void 0;function dC0(Z,J,Q,$){for(let X=0,Y=Z.length;XJ.disable())}Mg.disableInstrumentations=cC0});var Eg=w((Tg)=>{Object.defineProperty(Tg,"__esModule",{value:!0});Tg.registerInstrumentations=void 0;var Ig=C(),uC0=cG(),Ng=Ag();function lC0(Z){let J=Z.tracerProvider||Ig.trace.getTracerProvider(),Q=Z.meterProvider||Ig.metrics.getMeterProvider(),$=Z.loggerProvider||uC0.logs.getLoggerProvider(),X=Z.instrumentations?.flat()??[];return(0,Ng.enableInstrumentations)(X,J,Q,$),()=>{(0,Ng.disableInstrumentations)(X)}}Tg.registerInstrumentations=lC0});var mg=w((dg)=>{Object.defineProperty(dg,"__esModule",{value:!0});dg.satisfies=void 0;var pG=C(),vg=/^(?:v)?(?(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*))(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,pC0=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|0|[1-9]\d*))?)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,iC0={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function oC0(Z,J,Q){if(!nC0(Z))return pG.diag.error(`Invalid version: ${Z}`),!1;if(!J)return!0;J=J.replace(/([<>=~^]+)\s+/g,"$1");let $=tC0(Z);if(!$)return!1;let X=[],Y=bg($,J,X,Q);if(Y&&!Q?.includePrerelease)return sC0($,X);return Y}dg.satisfies=oC0;function nC0(Z){return typeof Z==="string"&&vg.test(Z)}function bg(Z,J,Q,$){if(J.includes("||")){let X=J.trim().split("||");for(let Y of X)if(mG(Z,Y,Q,$))return!0;return!1}else if(J.includes(" - "))J=LP0(J,$);else if(J.includes(" ")){let X=J.trim().replace(/\s{2,}/g," ").split(" ");for(let Y of X)if(!mG(Z,Y,Q,$))return!1;return!0}return mG(Z,J,Q,$)}function mG(Z,J,Q,$){if(J=rC0(J,$),J.includes(" "))return bg(Z,J,Q,$);else{let X=eC0(J);return Q.push(X),aC0(Z,X)}}function aC0(Z,J){if(J.invalid)return!1;if(!J.version||lG(J.version))return!0;let Q=hg(Z.versionSegments||[],J.versionSegments||[]);if(Q===0){let $=Z.prereleaseSegments||[],X=J.prereleaseSegments||[];if(!$.length&&!X.length)Q=0;else if(!$.length&&X.length)Q=1;else if($.length&&!X.length)Q=-1;else Q=hg($,X)}return iC0[J.op]?.includes(Q)}function sC0(Z,J){if(Z.prerelease)return J.some((Q)=>Q.prerelease&&Q.version===Z.version);return!0}function rC0(Z,J){return Z=Z.trim(),Z=jP0(Z,J),Z=UP0(Z),Z=qP0(Z,J),Z=Z.trim(),Z}function K6(Z){return!Z||Z.toLowerCase()==="x"||Z==="*"}function tC0(Z){let J=Z.match(vg);if(!J){pG.diag.error(`Invalid version: ${Z}`);return}let Q=J.groups.version,$=J.groups.prerelease,X=J.groups.build,Y=Q.split("."),W=$?.split(".");return{op:void 0,version:Q,versionSegments:Y,versionSegmentCount:Y.length,prerelease:$,prereleaseSegments:W,prereleaseSegmentCount:W?W.length:0,build:X}}function eC0(Z){if(!Z)return{};let J=Z.match(pC0);if(!J)return pG.diag.error(`Invalid range: ${Z}`),{invalid:!0};let Q=J.groups.op,$=J.groups.version,X=J.groups.prerelease,Y=J.groups.build,W=$.split("."),K=X?.split(".");if(Q==="==")Q="=";return{op:Q||"=",version:$,versionSegments:W,versionSegmentCount:W.length,prerelease:X,prereleaseSegments:K,prereleaseSegmentCount:K?K.length:0,build:Y}}function lG(Z){return Z==="*"||Z==="x"||Z==="X"}function yg(Z){let J=parseInt(Z,10);return isNaN(J)?Z:J}function ZP0(Z,J){if(typeof Z===typeof J)if(typeof Z==="number")return[Z,J];else if(typeof Z==="string")return[Z,J];else throw Error("Version segments can only be strings or numbers");else return[String(Z),String(J)]}function JP0(Z,J){if(lG(Z)||lG(J))return 0;let[Q,$]=ZP0(yg(Z),yg(J));if(Q>$)return 1;else if(Q<$)return-1;return 0}function hg(Z,J){for(let Q=0;Q)?=?)",Sg=`(?:${gg}|${QP0})`,XP0=`(?:-(${Sg}(?:\\.${Sg})*))`,_g=`${xg}+`,YP0=`(?:\\+(${_g}(?:\\.${_g})*))`,uG=`${gg}|x|X|\\*`,v4=`[v=\\s]*(${uG})(?:\\.(${uG})(?:\\.(${uG})(?:${XP0})?${YP0}?)?)?`,WP0=`^${$P0}\\s*${v4}$`,KP0=new RegExp(WP0),zP0=`^\\s*(${v4})\\s+-\\s+(${v4})\\s*$`,GP0=new RegExp(zP0),BP0="(?:~>?)",HP0=`^${BP0}${v4}$`,VP0=new RegExp(HP0),FP0="(?:\\^)",wP0=`^${FP0}${v4}$`,DP0=new RegExp(wP0);function UP0(Z){let J=VP0;return Z.replace(J,(Q,$,X,Y,W)=>{let K;if(K6($))K="";else if(K6(X))K=`>=${$}.0.0 <${+$+1}.0.0-0`;else if(K6(Y))K=`>=${$}.${X}.0 <${$}.${+X+1}.0-0`;else if(W)K=`>=${$}.${X}.${Y}-${W} <${$}.${+X+1}.0-0`;else K=`>=${$}.${X}.${Y} <${$}.${+X+1}.0-0`;return K})}function jP0(Z,J){let Q=DP0,$=J?.includePrerelease?"-0":"";return Z.replace(Q,(X,Y,W,K,z)=>{let G;if(K6(Y))G="";else if(K6(W))G=`>=${Y}.0.0${$} <${+Y+1}.0.0-0`;else if(K6(K))if(Y==="0")G=`>=${Y}.${W}.0${$} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.0${$} <${+Y+1}.0.0-0`;else if(z)if(Y==="0")if(W==="0")G=`>=${Y}.${W}.${K}-${z} <${Y}.${W}.${+K+1}-0`;else G=`>=${Y}.${W}.${K}-${z} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.${K}-${z} <${+Y+1}.0.0-0`;else if(Y==="0")if(W==="0")G=`>=${Y}.${W}.${K}${$} <${Y}.${W}.${+K+1}-0`;else G=`>=${Y}.${W}.${K}${$} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.${K} <${+Y+1}.0.0-0`;return G})}function qP0(Z,J){let Q=KP0;return Z.replace(Q,($,X,Y,W,K,z)=>{let G=K6(Y),H=G||K6(W),B=H||K6(K),V=B;if(X==="="&&V)X="";if(z=J?.includePrerelease?"-0":"",G)if(X===">"||X==="<")$="<0.0.0-0";else $="*";else if(X&&V){if(H)W=0;if(K=0,X===">")if(X=">=",H)Y=+Y+1,W=0,K=0;else W=+W+1,K=0;else if(X==="<=")if(X="<",H)Y=+Y+1;else W=+W+1;if(X==="<")z="-0";$=`${X+Y}.${W}.${K}${z}`}else if(H)$=`>=${Y}.0.0${z} <${+Y+1}.0.0-0`;else if(B)$=`>=${Y}.${W}.0${z} <${Y}.${+W+1}.0-0`;return $})}function LP0(Z,J){let Q=GP0;return Z.replace(Q,($,X,Y,W,K,z,G,H,B,V,F,D)=>{if(K6(Y))X="";else if(K6(W))X=`>=${Y}.0.0${J?.includePrerelease?"-0":""}`;else if(K6(K))X=`>=${Y}.${W}.0${J?.includePrerelease?"-0":""}`;else if(z)X=`>=${X}`;else X=`>=${X}${J?.includePrerelease?"-0":""}`;if(K6(B))H="";else if(K6(V))H=`<${+B+1}.0.0-0`;else if(K6(F))H=`<${B}.${+V+1}.0-0`;else if(D)H=`<=${B}.${V}.${F}-${D}`;else if(J?.includePrerelease)H=`<${B}.${V}.${+F+1}-0`;else H=`<=${H}`;return`${X} ${H}`.trim()})}});var aG=w((ug)=>{Object.defineProperty(ug,"__esModule",{value:!0});ug.massUnwrap=ug.unwrap=ug.massWrap=ug.wrap=void 0;var z6=console.error.bind(console);function b4(Z,J,Q){let $=!!Z[J]&&Object.prototype.propertyIsEnumerable.call(Z,J);Object.defineProperty(Z,J,{configurable:!0,enumerable:$,writable:!0,value:Q})}var OP0=(Z,J,Q)=>{if(!Z||!Z[J]){z6("no original function "+String(J)+" to wrap");return}if(!Q){z6("no wrapper function"),z6(Error().stack);return}let $=Z[J];if(typeof $!=="function"||typeof Q!=="function"){z6("original object and wrapper must be functions");return}let X=Q($,J);return b4(X,"__original",$),b4(X,"__unwrap",()=>{if(Z[J]===X)b4(Z,J,$)}),b4(X,"__wrapped",!0),b4(Z,J,X),X};ug.wrap=OP0;var CP0=(Z,J,Q)=>{if(!Z){z6("must provide one or more modules to patch"),z6(Error().stack);return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){z6("must provide one or more functions to wrap on modules");return}Z.forEach(($)=>{J.forEach((X)=>{ug.wrap($,X,Q)})})};ug.massWrap=CP0;var PP0=(Z,J)=>{if(!Z||!Z[J]){z6("no function to unwrap."),z6(Error().stack);return}let Q=Z[J];if(!Q.__unwrap)z6("no original to unwrap to -- has "+String(J)+" already been unwrapped?");else{Q.__unwrap();return}};ug.unwrap=PP0;var kP0=(Z,J)=>{if(!Z){z6("must provide one or more modules to patch"),z6(Error().stack);return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){z6("must provide one or more functions to unwrap on modules");return}Z.forEach((Q)=>{J.forEach(($)=>{ug.unwrap(Q,$)})})};ug.massUnwrap=kP0;function x4(Z){if(Z&&Z.logger)if(typeof Z.logger!=="function")z6("new logger isn't a function, not replacing");else z6=Z.logger}ug.default=x4;x4.wrap=ug.wrap;x4.massWrap=ug.massWrap;x4.unwrap=ug.unwrap;x4.massUnwrap=ug.massUnwrap});var ng=w((ig)=>{Object.defineProperty(ig,"__esModule",{value:!0});ig.InstrumentationAbstract=void 0;var sG=C(),RP0=cG(),t$=aG();class pg{_config={};_tracer;_meter;_logger;_diag;instrumentationName;instrumentationVersion;constructor(Z,J,Q){this.instrumentationName=Z,this.instrumentationVersion=J,this.setConfig(Q),this._diag=sG.diag.createComponentLogger({namespace:Z}),this._tracer=sG.trace.getTracer(Z,J),this._meter=sG.metrics.getMeter(Z,J),this._logger=RP0.logs.getLogger(Z,J),this._updateMetricInstruments()}_wrap=t$.wrap;_unwrap=t$.unwrap;_massWrap=t$.massWrap;_massUnwrap=t$.massUnwrap;get meter(){return this._meter}setMeterProvider(Z){this._meter=Z.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(Z){this._logger=Z.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let Z=this.init()??[];if(!Array.isArray(Z))return[Z];return Z}_updateMetricInstruments(){return}getConfig(){return this._config}setConfig(Z){this._config={enabled:!0,...Z}}setTracerProvider(Z){this._tracer=Z.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(Z,J,Q,$){if(!Z)return;try{Z(Q,$)}catch(X){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:J},X)}}}ig.InstrumentationAbstract=pg});var tg=w((sg)=>{Object.defineProperty(sg,"__esModule",{value:!0});sg.ModuleNameTrie=sg.ModuleNameSeparator=void 0;sg.ModuleNameSeparator="/";class rG{hooks=[];children=new Map}class ag{_trie=new rG;_counter=0;insert(Z){let J=this._trie;for(let Q of Z.moduleName.split(sg.ModuleNameSeparator)){let $=J.children.get(Q);if(!$)$=new rG,J.children.set(Q,$);J=$}J.hooks.push({hook:Z,insertedId:this._counter++})}search(Z,{maintainInsertionOrder:J,fullOnly:Q}={}){let $=this._trie,X=[],Y=!0;for(let W of Z.split(sg.ModuleNameSeparator)){let K=$.children.get(W);if(!K){Y=!1;break}if(!Q)X.push(...K.hooks);$=K}if(Q&&Y)X.push(...$.hooks);if(X.length===0)return[];if(X.length===1)return[X[0].hook];if(J)X.sort((W,K)=>W.insertedId-K.insertedId);return X.map(({hook:W})=>W)}}sg.ModuleNameTrie=ag});var Qd=w((Zd)=>{Object.defineProperty(Zd,"__esModule",{value:!0});Zd.RequireInTheMiddleSingleton=void 0;var AP0=I7(),eg=A("path"),eG=tg(),IP0=["afterEach","after","beforeEach","before","describe","it"].every((Z)=>{return typeof global[Z]==="function"});class e${_moduleNameTrie=new eG.ModuleNameTrie;static _instance;constructor(){this._initialize()}_initialize(){new AP0.Hook(null,{internals:!0},(Z,J,Q)=>{let $=NP0(J),X=this._moduleNameTrie.search($,{maintainInsertionOrder:!0,fullOnly:Q===void 0});for(let{onRequire:Y}of X)Z=Y(Z,J,Q);return Z})}register(Z,J){let Q={moduleName:Z,onRequire:J};return this._moduleNameTrie.insert(Q),Q}static getInstance(){if(IP0)return new e$;return this._instance=this._instance??new e$}}Zd.RequireInTheMiddleSingleton=e$;function NP0(Z){return eg.sep!==eG.ModuleNameSeparator?Z.split(eg.sep).join(eG.ModuleNameSeparator):Z}});var Kd=w((EP0)=>{var $d=[],ZB=new WeakMap,Xd=new WeakMap,Yd=new Map,Wd=[],TP0={set(Z,J,Q){let $=ZB.get(Z),X=$&&$[J];if(typeof X==="function")return X(Q);return!0},get(Z,J){if(J===Symbol.toStringTag)return"Module";let Q=Xd.get(Z)[J];if(typeof Q==="function")return Q()},defineProperty(Z,J,Q){if(!("value"in Q))throw Error("Getters/setters are not supported for exports property descriptors.");let $=ZB.get(Z),X=$&&$[J];if(typeof X==="function")return X(Q.value);return!0}};function fP0(Z,J,Q,$,X){Yd.set(Z,X),ZB.set(J,Q),Xd.set(J,$);let Y=new Proxy(J,TP0);$d.forEach((W)=>W(Z,Y,X)),Wd.push([Z,Y,X])}EP0.register=fP0;EP0.importHooks=$d;EP0.specifiers=Yd;EP0.toHook=Wd});var Hd=w((P16,T8)=>{var zd=A("path"),vP0=B5(),{fileURLToPath:bP0}=A("url"),{MessageChannel:xP0}=A("worker_threads"),{isBuiltin:JB}=A("module");if(!JB)JB=()=>!0;var{importHooks:QB,specifiers:gP0,toHook:dP0}=Kd();function Gd(Z){QB.push(Z),dP0.forEach(([J,Q,$])=>Z(J,Q,$))}function Bd(Z){let J=QB.indexOf(Z);if(J>-1)QB.splice(J,1)}function N8(Z,J,Q,$){let X=Z(J,Q,$);if(X&&X!==J){if("default"in J)J.default=X}}var $B;function cP0(){let{port1:Z,port2:J}=new xP0,Q=0,$;$B=(K)=>{Q++,Z.postMessage(K)},Z.on("message",()=>{if(Q--,$&&Q<=0)$()}).unref();function X(){let K=setInterval(()=>{},1000),z=new Promise((G)=>{$=G}).then(()=>{clearInterval(K)});if(Q===0)$();return z}let Y=J;return{registerOptions:{data:{addHookMessagePort:Y,include:[]},transferList:[Y]},addHookMessagePort:Y,waitForAllMessagesAcknowledged:X}}function g4(Z,J,Q){if(this instanceof g4===!1)return new g4(Z,J,Q);if(typeof Z==="function")Q=Z,Z=null,J=null;else if(typeof J==="function")Q=J,J=null;let $=J?J.internals===!0:!1;if($B&&Array.isArray(Z))$B(Z);this._iitmHook=(X,Y,W)=>{let K=X,z=K.startsWith("node:"),G,H;if(z){let B=X.slice(5);if(JB(B))X=B}else if(K.startsWith("file://")){let B=Error.stackTraceLimit;Error.stackTraceLimit=0;try{G=bP0(X),X=G}catch(V){}if(Error.stackTraceLimit=B,G){let V=vP0(G);if(V)X=V.name,H=V.basedir}}if(Z){for(let B of Z)if(G&&B===G)N8(Q,Y,G,void 0);else if(B===X){if(!H)N8(Q,Y,X,H);else if(H.endsWith(gP0.get(K)))N8(Q,Y,X,H);else if($){let V=X+zd.sep+zd.relative(H,G);N8(Q,Y,V,H)}}else if(B===W)N8(Q,Y,W,H)}else N8(Q,Y,X,H)},Gd(this._iitmHook)}g4.prototype.unhook=function(){Bd(this._iitmHook)};T8.exports=g4;T8.exports.Hook=g4;T8.exports.addHook=Gd;T8.exports.removeHook=Bd;T8.exports.createAddHookMessageChannel=cP0});var XB=w((Vd)=>{Object.defineProperty(Vd,"__esModule",{value:!0});Vd.isWrapped=Vd.safeExecuteInTheMiddleAsync=Vd.safeExecuteInTheMiddle=void 0;function mP0(Z,J,Q){let $,X;try{X=Z()}catch(Y){$=Y}finally{if(J($,X),$&&!Q)throw $;return X}}Vd.safeExecuteInTheMiddle=mP0;async function uP0(Z,J,Q){let $,X;try{X=await Z()}catch(Y){$=Y}finally{if(await J($,X),$&&!Q)throw $;return X}}Vd.safeExecuteInTheMiddleAsync=uP0;function lP0(Z){return typeof Z==="function"&&typeof Z.__original==="function"&&typeof Z.__unwrap==="function"&&Z.__wrapped===!0}Vd.isWrapped=lP0});var Ld=w((jd)=>{Object.defineProperty(jd,"__esModule",{value:!0});jd.InstrumentationBase=void 0;var d4=A("path"),wd=A("util"),oP0=mg(),YB=aG(),nP0=ng(),aP0=Qd(),sP0=Hd(),c4=C(),rP0=I7(),tP0=A("fs"),eP0=XB();class Ud extends nP0.InstrumentationAbstract{_modules;_hooks=[];_requireInTheMiddleSingleton=aP0.RequireInTheMiddleSingleton.getInstance();_enabled=!1;constructor(Z,J,Q){super(Z,J,Q);let $=this.init();if($&&!Array.isArray($))$=[$];if(this._modules=$||[],this._config.enabled)this.enable()}_wrap=(Z,J,Q)=>{if((0,eP0.isWrapped)(Z[J]))this._unwrap(Z,J);if(!wd.types.isProxy(Z))return(0,YB.wrap)(Z,J,Q);else{let $=(0,YB.wrap)(Object.assign({},Z),J,Q);return Object.defineProperty(Z,J,{value:$}),$}};_unwrap=(Z,J)=>{if(!wd.types.isProxy(Z))return(0,YB.unwrap)(Z,J);else return Object.defineProperty(Z,J,{value:Z[J]})};_massWrap=(Z,J,Q)=>{if(!Z){c4.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){c4.diag.error("must provide one or more functions to wrap on modules");return}Z.forEach(($)=>{J.forEach((X)=>{this._wrap($,X,Q)})})};_massUnwrap=(Z,J)=>{if(!Z){c4.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){c4.diag.error("must provide one or more functions to wrap on modules");return}Z.forEach((Q)=>{J.forEach(($)=>{this._unwrap(Q,$)})})};_warnOnPreloadedModules(){this._modules.forEach((Z)=>{let{name:J}=Z;try{let Q=A.resolve(J);if(A.cache[Q])this._diag.warn(`Module ${J} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${J}`)}catch{}})}_extractPackageVersion(Z){try{let J=(0,tP0.readFileSync)(d4.join(Z,"package.json"),{encoding:"utf8"}),Q=JSON.parse(J).version;return typeof Q==="string"?Q:void 0}catch{c4.diag.warn("Failed extracting version",Z)}return}_onRequire(Z,J,Q,$){if(!$){if(typeof Z.patch==="function"){if(Z.moduleExports=J,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:Z.name}),Z.patch(J)}return J}let X=this._extractPackageVersion($);if(Z.moduleVersion=X,Z.name===Q){if(Dd(Z.supportedVersions,X,Z.includePrerelease)){if(typeof Z.patch==="function"){if(Z.moduleExports=J,this._enabled)return this._diag.debug("Applying instrumentation patch for module on require hook",{module:Z.name,version:Z.moduleVersion,baseDir:$}),Z.patch(J,Z.moduleVersion)}}return J}let Y=Z.files??[],W=d4.normalize(Q);return Y.filter((z)=>z.name===W&&Dd(z.supportedVersions,X,Z.includePrerelease)).reduce((z,G)=>{if(G.moduleExports=z,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:Z.name,version:Z.moduleVersion,fileName:G.name,baseDir:$}),G.patch(z,Z.moduleVersion);return z},J)}enable(){if(this._enabled)return;if(this._enabled=!0,this._hooks.length>0){for(let Z of this._modules){if(typeof Z.patch==="function"&&Z.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:Z.name,version:Z.moduleVersion}),Z.patch(Z.moduleExports,Z.moduleVersion);for(let J of Z.files)if(J.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:Z.name,version:Z.moduleVersion,fileName:J.name}),J.patch(J.moduleExports,Z.moduleVersion)}return}this._warnOnPreloadedModules();for(let Z of this._modules){let J=(Y,W,K)=>{if(!K&&d4.isAbsolute(W)){let z=d4.parse(W);W=z.name,K=z.dir}return this._onRequire(Z,Y,W,K)},Q=(Y,W,K)=>{return this._onRequire(Z,Y,W,K)},$=d4.isAbsolute(Z.name)?new rP0.Hook([Z.name],{internals:!0},Q):this._requireInTheMiddleSingleton.register(Z.name,Q);this._hooks.push($);let X=new sP0.Hook([Z.name],{internals:!0},J);this._hooks.push(X)}}disable(){if(!this._enabled)return;this._enabled=!1;for(let Z of this._modules){if(typeof Z.unpatch==="function"&&Z.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:Z.name,version:Z.moduleVersion}),Z.unpatch(Z.moduleExports,Z.moduleVersion);for(let J of Z.files)if(J.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:Z.name,version:Z.moduleVersion,fileName:J.name}),J.unpatch(J.moduleExports,Z.moduleVersion)}}isEnabled(){return this._enabled}}jd.InstrumentationBase=Ud;function Dd(Z,J,Q){if(typeof J>"u")return Z.includes("*");return Z.some(($)=>{return(0,oP0.satisfies)(J,$,{includePrerelease:Q})})}});var Od=w((WB)=>{Object.defineProperty(WB,"__esModule",{value:!0});WB.normalize=void 0;var Z20=A("path");Object.defineProperty(WB,"normalize",{enumerable:!0,get:function(){return Z20.normalize}})});var Cd=w((Z3)=>{Object.defineProperty(Z3,"__esModule",{value:!0});Z3.normalize=Z3.InstrumentationBase=void 0;var Q20=Ld();Object.defineProperty(Z3,"InstrumentationBase",{enumerable:!0,get:function(){return Q20.InstrumentationBase}});var $20=Od();Object.defineProperty(Z3,"normalize",{enumerable:!0,get:function(){return $20.normalize}})});var KB=w((J3)=>{Object.defineProperty(J3,"__esModule",{value:!0});J3.normalize=J3.InstrumentationBase=void 0;var Pd=Cd();Object.defineProperty(J3,"InstrumentationBase",{enumerable:!0,get:function(){return Pd.InstrumentationBase}});Object.defineProperty(J3,"normalize",{enumerable:!0,get:function(){return Pd.normalize}})});var Ad=w((Md)=>{Object.defineProperty(Md,"__esModule",{value:!0});Md.InstrumentationNodeModuleDefinition=void 0;class kd{files;name;supportedVersions;patch;unpatch;constructor(Z,J,Q,$,X){this.files=X||[],this.name=Z,this.supportedVersions=J,this.patch=Q,this.unpatch=$}}Md.InstrumentationNodeModuleDefinition=kd});var fd=w((Nd)=>{Object.defineProperty(Nd,"__esModule",{value:!0});Nd.InstrumentationNodeModuleFile=void 0;var W20=KB();class Id{name;supportedVersions;patch;unpatch;constructor(Z,J,Q,$){this.name=(0,W20.normalize)(Z),this.supportedVersions=J,this.patch=Q,this.unpatch=$}}Nd.InstrumentationNodeModuleFile=Id});var Sd=w((yd)=>{Object.defineProperty(yd,"__esModule",{value:!0});yd.semconvStabilityFromStr=yd.SemconvStability=void 0;var Q3;(function(Z){Z[Z.STABLE=1]="STABLE",Z[Z.OLD=2]="OLD",Z[Z.DUPLICATE=3]="DUPLICATE"})(Q3=yd.SemconvStability||(yd.SemconvStability={}));function K20(Z,J){let Q=Q3.OLD,$=J?.split(",").map((X)=>X.trim()).filter((X)=>X!=="");for(let X of $??[])if(X.toLowerCase()===Z+"/dup"){Q=Q3.DUPLICATE;break}else if(X.toLowerCase()===Z)Q=Q3.STABLE;return Q}yd.semconvStabilityFromStr=K20});var vd=w((C9)=>{Object.defineProperty(C9,"__esModule",{value:!0});C9.semconvStabilityFromStr=C9.SemconvStability=C9.safeExecuteInTheMiddleAsync=C9.safeExecuteInTheMiddle=C9.isWrapped=C9.InstrumentationNodeModuleFile=C9.InstrumentationNodeModuleDefinition=C9.InstrumentationBase=C9.registerInstrumentations=void 0;var z20=Eg();Object.defineProperty(C9,"registerInstrumentations",{enumerable:!0,get:function(){return z20.registerInstrumentations}});var G20=KB();Object.defineProperty(C9,"InstrumentationBase",{enumerable:!0,get:function(){return G20.InstrumentationBase}});var B20=Ad();Object.defineProperty(C9,"InstrumentationNodeModuleDefinition",{enumerable:!0,get:function(){return B20.InstrumentationNodeModuleDefinition}});var H20=fd();Object.defineProperty(C9,"InstrumentationNodeModuleFile",{enumerable:!0,get:function(){return H20.InstrumentationNodeModuleFile}});var zB=XB();Object.defineProperty(C9,"isWrapped",{enumerable:!0,get:function(){return zB.isWrapped}});Object.defineProperty(C9,"safeExecuteInTheMiddle",{enumerable:!0,get:function(){return zB.safeExecuteInTheMiddle}});Object.defineProperty(C9,"safeExecuteInTheMiddleAsync",{enumerable:!0,get:function(){return zB.safeExecuteInTheMiddleAsync}});var _d=Sd();Object.defineProperty(C9,"SemconvStability",{enumerable:!0,get:function(){return _d.SemconvStability}});Object.defineProperty(C9,"semconvStabilityFromStr",{enumerable:!0,get:function(){return _d.semconvStabilityFromStr}})});var bd=w((u16,F20)=>{F20.exports={name:"@fastify/otel",version:"0.17.1",description:"Official Fastify OpenTelemetry Instrumentation",main:"index.js",type:"commonjs",types:"types/index.d.ts",scripts:{lint:"eslint","lint:fix":"eslint --fix",test:"npm run test:all && npm run test:typescript","test:unit":"c8 --100 node --test","test:all":"npm run test:v4 && npm run test:v5","test:v4":"cross-env FASTIFY_VERSION=fastifyv4 npm run test:unit","test:v5":"cross-env FASTIFY_VERSION=fastify npm run test:unit","test:coverage":"c8 node --test && c8 report --reporter=html","test:typescript":"tsd"},repository:{type:"git",url:"git+https://github.com/fastify/otel.git"},keywords:["plugin","helper","fastify","instrumentation","otel","opentelemetry"],author:"Carlos Fuentes - @metcoder95 (https://metcoder.dev)",license:"MIT",bugs:{url:"https://github.com/fastify/otel/issues"},homepage:"https://github.com/fastify/otel#readme",funding:[{type:"github",url:"https://github.com/sponsors/fastify"},{type:"opencollective",url:"https://opencollective.com/fastify"}],devDependencies:{"@fastify/type-provider-typebox":"^6.1.0","@opentelemetry/context-async-hooks":"^2.0.0","@opentelemetry/contrib-test-utils":"^0.59.0","@opentelemetry/instrumentation-http":"^0.212.0","@opentelemetry/propagator-jaeger":"^2.0.0","@opentelemetry/sdk-trace-base":"^2.0.0","@opentelemetry/sdk-trace-node":"^2.2.0","@types/node":"^25.0.3",c8:"^11.0.0","cross-env":"^10.0.0",eslint:"^9.16.0",fastify:"^5.1.0","fastify-plugin":"^5.1.0",fastifyv4:"npm:fastify@^4.0.0",neostandard:"^0.12.0",tsd:"^0.33.0"},dependencies:{"@opentelemetry/core":"^2.0.0","@opentelemetry/instrumentation":"^0.212.0","@opentelemetry/semantic-conventions":"^1.28.0",minimatch:"^10.2.4"},peerDependencies:{"@opentelemetry/api":"^1.9.0"},tsd:{directory:"types"}}});var dd=w((gd)=>{Object.defineProperty(gd,"__esModule",{value:!0});gd.range=gd.balanced=void 0;var w20=(Z,J,Q)=>{let $=Z instanceof RegExp?xd(Z,Q):Z,X=J instanceof RegExp?xd(J,Q):J,Y=$!==null&&X!=null&&gd.range($,X,Q);return Y&&{start:Y[0],end:Y[1],pre:Q.slice(0,Y[0]),body:Q.slice(Y[0]+$.length,Y[1]),post:Q.slice(Y[1]+X.length)}};gd.balanced=w20;var xd=(Z,J)=>{let Q=J.match(Z);return Q?Q[0]:null},D20=(Z,J,Q)=>{let $,X,Y,W=void 0,K,z=Q.indexOf(Z),G=Q.indexOf(J,z+1),H=z;if(z>=0&&G>0){if(Z===J)return[z,G];$=[],Y=Q.length;while(H>=0&&!K){if(H===z)$.push(H),z=Q.indexOf(Z,H+1);else if($.length===1){let B=$.pop();if(B!==void 0)K=[B,G]}else{if(X=$.pop(),X!==void 0&&X=0?z:G}if($.length&&W!==void 0)K=[Y,W]}return K};gd.range=D20});var nd=w((od)=>{Object.defineProperty(od,"__esModule",{value:!0});od.EXPANSION_MAX=void 0;od.expand=T20;var cd=dd(),md="\x00SLASH"+Math.random()+"\x00",ud="\x00OPEN"+Math.random()+"\x00",HB="\x00CLOSE"+Math.random()+"\x00",ld="\x00COMMA"+Math.random()+"\x00",pd="\x00PERIOD"+Math.random()+"\x00",j20=new RegExp(md,"g"),q20=new RegExp(ud,"g"),L20=new RegExp(HB,"g"),O20=new RegExp(ld,"g"),C20=new RegExp(pd,"g"),P20=/\\\\/g,k20=/\\{/g,M20=/\\}/g,R20=/\\,/g,A20=/\\\./g;od.EXPANSION_MAX=1e5;function BB(Z){return!isNaN(Z)?parseInt(Z,10):Z.charCodeAt(0)}function I20(Z){return Z.replace(P20,md).replace(k20,ud).replace(M20,HB).replace(R20,ld).replace(A20,pd)}function N20(Z){return Z.replace(j20,"\\").replace(q20,"{").replace(L20,"}").replace(O20,",").replace(C20,".")}function id(Z){if(!Z)return[""];let J=[],Q=(0,cd.balanced)("{","}",Z);if(!Q)return Z.split(",");let{pre:$,body:X,post:Y}=Q,W=$.split(",");W[W.length-1]+="{"+X+"}";let K=id(Y);if(Y.length)W[W.length-1]+=K.shift(),W.push.apply(W,K);return J.push.apply(J,W),J}function T20(Z,J={}){if(!Z)return[];let{max:Q=od.EXPANSION_MAX}=J;if(Z.slice(0,2)==="{}")Z="\\{\\}"+Z.slice(2);return m4(I20(Z),Q,!0).map(N20)}function f20(Z){return"{"+Z+"}"}function E20(Z){return/^-?0\d/.test(Z)}function y20(Z,J){return Z<=J}function h20(Z,J){return Z>=J}function m4(Z,J,Q){let $=[],X=(0,cd.balanced)("{","}",Z);if(!X)return[Z];let Y=X.pre,W=X.post.length?m4(X.post,J,!1):[""];if(/\$$/.test(X.pre))for(let K=0;K=0;if(!G&&!H){if(X.post.match(/,(?!,).*\}/))return Z=X.pre+"{"+X.body+HB+X.post,m4(Z,J,!0);return[Z]}let B;if(G)B=X.body.split(/\.\./);else if(B=id(X.body),B.length===1&&B[0]!==void 0){if(B=m4(B[0],J,!1).map(f20),B.length===1)return W.map((F)=>X.pre+B[0]+F)}let V;if(G&&B[0]!==void 0&&B[1]!==void 0){let F=BB(B[0]),D=BB(B[1]),U=Math.max(B[0].length,B[1].length),j=B.length===3&&B[2]!==void 0?Math.max(Math.abs(BB(B[2])),1):1,L=y20;if(D0){let r=Array(n+1).join("0");if(S<0)T="-"+r+T.slice(1);else T=r+T}}V.push(T)}}else{V=[];for(let F=0;F{Object.defineProperty(ad,"__esModule",{value:!0});ad.assertValidPattern=void 0;var _20=65536,v20=(Z)=>{if(typeof Z!=="string")throw TypeError("invalid pattern");if(Z.length>_20)throw TypeError("pattern is too long")};ad.assertValidPattern=v20});var Jc=w((ed)=>{Object.defineProperty(ed,"__esModule",{value:!0});ed.parseClass=void 0;var b20={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},u4=(Z)=>Z.replace(/[[\]\\-]/g,"\\$&"),x20=(Z)=>Z.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),td=(Z)=>Z.join(""),g20=(Z,J)=>{let Q=J;if(Z.charAt(Q)!=="[")throw Error("not in a brace expression");let $=[],X=[],Y=Q+1,W=!1,K=!1,z=!1,G=!1,H=Q,B="";Z:while(YB)$.push(u4(B)+"-"+u4(U));else if(U===B)$.push(u4(U));B="",Y++;continue}if(Z.startsWith("-]",Y+1)){$.push(u4(U+"-")),Y+=2;continue}if(Z.startsWith("-",Y+1)){B=U,Y+=2;continue}$.push(u4(U)),Y++}if(H{Object.defineProperty(Qc,"__esModule",{value:!0});Qc.unescape=void 0;var d20=(Z,{windowsPathsNoEscape:J=!1,magicalBraces:Q=!0}={})=>{if(Q)return J?Z.replace(/\[([^\/\\])\]/g,"$1"):Z.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");return J?Z.replace(/\[([^\/\\{}])\]/g,"$1"):Z.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,"$1$2").replace(/\\([^\/{}])/g,"$1")};Qc.unescape=d20});var UB=w((zc)=>{var C6;Object.defineProperty(zc,"__esModule",{value:!0});zc.AST=void 0;var c20=Jc(),X3=$3(),m20=new Set(["!","?","+","*","@"]),FB=(Z)=>m20.has(Z),Xc=(Z)=>FB(Z.type),u20=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),l20=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),p20=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),Yc=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),i20="(?!(?:^|/)\\.\\.?(?:$|/))",Y3="(?!\\.)",o20=new Set(["[","."]),n20=new Set(["..","."]),a20=new Set("().*{}+?[]^$\\!"),s20=(Z)=>Z.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),wB="[^/]",Wc=wB+"*?",Kc=wB+"+?",r20=0;class DB{type;#Q;#$;#X=!1;#Z=[];#J;#K;#G;#z=!1;#Y;#W;#B=!1;id=++r20;get depth(){return(this.#J?.depth??-1)+1}[Symbol.for("nodejs.util.inspect.custom")](){return{"@@type":"AST",id:this.id,type:this.type,root:this.#Q.id,parent:this.#J?.id,depth:this.depth,partsLength:this.#Z.length,parts:this.#Z}}constructor(Z,J,Q={}){if(this.type=Z,Z)this.#$=!0;if(this.#J=J,this.#Q=this.#J?this.#J.#Q:this,this.#Y=this.#Q===this?Q:this.#Q.#Y,this.#G=this.#Q===this?[]:this.#Q.#G,Z==="!"&&!this.#Q.#z)this.#G.push(this);this.#K=this.#J?this.#J.#Z.length:0}get hasMagic(){if(this.#$!==void 0)return this.#$;for(let Z of this.#Z){if(typeof Z==="string")continue;if(Z.type||Z.hasMagic)return this.#$=!0}return this.#$}toString(){if(this.#W!==void 0)return this.#W;if(!this.type)return this.#W=this.#Z.map((Z)=>String(Z)).join("");else return this.#W=this.type+"("+this.#Z.map((Z)=>String(Z)).join("|")+")"}#j(){if(this!==this.#Q)throw Error("should only call on root");if(this.#z)return this;this.toString(),this.#z=!0;let Z;while(Z=this.#G.pop()){if(Z.type!=="!")continue;let J=Z,Q=J.#J;while(Q){for(let $=J.#K+1;!Q.type&&$typeof J==="string"?J:J.toJSON()):[this.type,...this.#Z.map((J)=>J.toJSON())];if(this.isStart()&&!this.type)Z.unshift([]);if(this.isEnd()&&(this===this.#Q||this.#Q.#z&&this.#J?.type==="!"))Z.push({});return Z}isStart(){if(this.#Q===this)return!0;if(!this.#J?.isStart())return!1;if(this.#K===0)return!0;let Z=this.#J;for(let J=0;Jtypeof V!=="string"),z=this.#Z.map((V)=>{let[F,D,U,j]=typeof V==="string"?C6.#k(V,this.#$,K):V.toRegExpSource(Z);return this.#$=this.#$||U,this.#X=this.#X||j,F}).join(""),G="";if(this.isStart()){if(typeof this.#Z[0]==="string"){if(!(this.#Z.length===1&&n20.has(this.#Z[0]))){let F=o20,D=J&&F.has(z.charAt(0))||z.startsWith("\\.")&&F.has(z.charAt(2))||z.startsWith("\\.\\.")&&F.has(z.charAt(4)),U=!J&&!Z&&F.has(z.charAt(0));G=D?i20:U?Y3:""}}}let H="";if(this.isEnd()&&this.#Q.#z&&this.#J?.type==="!")H="(?:$|\\/)";return[G+z+H,(0,X3.unescape)(z),this.#$=!!this.#$,this.#X]}let Q=this.type==="*"||this.type==="+",$=this.type==="!"?"(?:(?!(?:":"(?:",X=this.#U(J);if(this.isStart()&&this.isEnd()&&!X&&this.type!=="!"){let K=this.toString(),z=this;return z.#Z=[K],z.type=null,z.#$=void 0,[K,(0,X3.unescape)(this.toString()),!1,!1]}let Y=!Q||Z||J||!Y3?"":this.#U(!0);if(Y===X)Y="";if(Y)X=`(?:${X})(?:${Y})*?`;let W="";if(this.type==="!"&&this.#B)W=(this.isStart()&&!J?Y3:"")+Kc;else{let K=this.type==="!"?"))"+(this.isStart()&&!J&&!Z?Y3:"")+Wc+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&Y?")":this.type==="*"&&Y?")?":`)${this.type}`;W=$+X+K}return[W,(0,X3.unescape)(X),this.#$=!!this.#$,this.#X]}#F(){if(!Xc(this)){for(let Z of this.#Z)if(typeof Z==="object")Z.#F()}else{let Z=0,J=!1;do{J=!0;for(let Q=0;Q{if(typeof J==="string")throw Error("string type in extglob ast??");let[Q,$,X,Y]=J.toRegExpSource(Z);return this.#X=this.#X||Y,Q}).filter((J)=>!(this.isStart()&&this.isEnd())||!!J).join("|")}static#k(Z,J,Q=!1){let $=!1,X="",Y=!1,W=!1;for(let K=0;K{Object.defineProperty(Bc,"__esModule",{value:!0});Bc.escape=void 0;var t20=(Z,{windowsPathsNoEscape:J=!1,magicalBraces:Q=!1}={})=>{if(Q)return J?Z.replace(/[?*()[\]{}]/g,"[$&]"):Z.replace(/[?*()[\]\\{}]/g,"\\$&");return J?Z.replace(/[?*()[\]]/g,"[$&]"):Z.replace(/[?*()[\]\\]/g,"\\$&")};Bc.escape=t20});var kc=w((l4)=>{Object.defineProperty(l4,"__esModule",{value:!0});l4.unescape=l4.escape=l4.AST=l4.Minimatch=l4.match=l4.makeRe=l4.braceExpand=l4.defaults=l4.filter=l4.GLOBSTAR=l4.sep=l4.minimatch=void 0;var e20=nd(),W3=rd(),wc=UB(),Zk0=jB(),Jk0=$3(),Qk0=(Z,J,Q={})=>{if((0,W3.assertValidPattern)(J),!Q.nocomment&&J.charAt(0)==="#")return!1;return new f8(J,Q).match(Z)};l4.minimatch=Qk0;var $k0=/^\*+([^+@!?\*\[\(]*)$/,Xk0=(Z)=>(J)=>!J.startsWith(".")&&J.endsWith(Z),Yk0=(Z)=>(J)=>J.endsWith(Z),Wk0=(Z)=>{return Z=Z.toLowerCase(),(J)=>!J.startsWith(".")&&J.toLowerCase().endsWith(Z)},Kk0=(Z)=>{return Z=Z.toLowerCase(),(J)=>J.toLowerCase().endsWith(Z)},zk0=/^\*+\.\*+$/,Gk0=(Z)=>!Z.startsWith(".")&&Z.includes("."),Bk0=(Z)=>Z!=="."&&Z!==".."&&Z.includes("."),Hk0=/^\.\*+$/,Vk0=(Z)=>Z!=="."&&Z!==".."&&Z.startsWith("."),Fk0=/^\*+$/,wk0=(Z)=>Z.length!==0&&!Z.startsWith("."),Dk0=(Z)=>Z.length!==0&&Z!=="."&&Z!=="..",Uk0=/^\?+([^+@!?\*\[\(]*)?$/,jk0=([Z,J=""])=>{let Q=Dc([Z]);if(!J)return Q;return J=J.toLowerCase(),($)=>Q($)&&$.toLowerCase().endsWith(J)},qk0=([Z,J=""])=>{let Q=Uc([Z]);if(!J)return Q;return J=J.toLowerCase(),($)=>Q($)&&$.toLowerCase().endsWith(J)},Lk0=([Z,J=""])=>{let Q=Uc([Z]);return!J?Q:($)=>Q($)&&$.endsWith(J)},Ok0=([Z,J=""])=>{let Q=Dc([Z]);return!J?Q:($)=>Q($)&&$.endsWith(J)},Dc=([Z])=>{let J=Z.length;return(Q)=>Q.length===J&&!Q.startsWith(".")},Uc=([Z])=>{let J=Z.length;return(Q)=>Q.length===J&&Q!=="."&&Q!==".."},jc=typeof process==="object"&&process?typeof process.env==="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",Vc={win32:{sep:"\\"},posix:{sep:"/"}};l4.sep=jc==="win32"?Vc.win32.sep:Vc.posix.sep;l4.minimatch.sep=l4.sep;l4.GLOBSTAR=Symbol("globstar **");l4.minimatch.GLOBSTAR=l4.GLOBSTAR;var Ck0="[^/]",Pk0=Ck0+"*?",kk0="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Mk0="(?:(?!(?:\\/|^)\\.).)*?",Rk0=(Z,J={})=>(Q)=>l4.minimatch(Q,Z,J);l4.filter=Rk0;l4.minimatch.filter=l4.filter;var J9=(Z,J={})=>Object.assign({},Z,J),Ak0=(Z)=>{if(!Z||typeof Z!=="object"||!Object.keys(Z).length)return l4.minimatch;let J=l4.minimatch;return Object.assign(($,X,Y={})=>J($,X,J9(Z,Y)),{Minimatch:class extends J.Minimatch{constructor(X,Y={}){super(X,J9(Z,Y))}static defaults(X){return J.defaults(J9(Z,X)).Minimatch}},AST:class extends J.AST{constructor(X,Y,W={}){super(X,Y,J9(Z,W))}static fromGlob(X,Y={}){return J.AST.fromGlob(X,J9(Z,Y))}},unescape:($,X={})=>J.unescape($,J9(Z,X)),escape:($,X={})=>J.escape($,J9(Z,X)),filter:($,X={})=>J.filter($,J9(Z,X)),defaults:($)=>J.defaults(J9(Z,$)),makeRe:($,X={})=>J.makeRe($,J9(Z,X)),braceExpand:($,X={})=>J.braceExpand($,J9(Z,X)),match:($,X,Y={})=>J.match($,X,J9(Z,Y)),sep:J.sep,GLOBSTAR:l4.GLOBSTAR})};l4.defaults=Ak0;l4.minimatch.defaults=l4.defaults;var Ik0=(Z,J={})=>{if((0,W3.assertValidPattern)(Z),J.nobrace||!/\{(?:(?!\{).)*\}/.test(Z))return[Z];return(0,e20.expand)(Z,{max:J.braceExpandMax})};l4.braceExpand=Ik0;l4.minimatch.braceExpand=l4.braceExpand;var Nk0=(Z,J={})=>new f8(Z,J).makeRe();l4.makeRe=Nk0;l4.minimatch.makeRe=l4.makeRe;var Tk0=(Z,J,Q={})=>{let $=new f8(J,Q);if(Z=Z.filter((X)=>$.match(X)),$.options.nonull&&!Z.length)Z.push(J);return Z};l4.match=Tk0;l4.minimatch.match=l4.match;var Fc=/[?*]|[+@!]\(.*?\)|\[|\]/,fk0=(Z)=>Z.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class f8{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(Z,J={}){(0,W3.assertValidPattern)(Z),J=J||{},this.options=J,this.maxGlobstarRecursion=J.maxGlobstarRecursion??200,this.pattern=Z,this.platform=J.platform||jc,this.isWindows=this.platform==="win32";let Q="allowWindowsEscape";if(this.windowsPathsNoEscape=!!J.windowsPathsNoEscape||J[Q]===!1,this.windowsPathsNoEscape)this.pattern=this.pattern.replace(/\\/g,"/");this.preserveMultipleSlashes=!!J.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!J.nonegate,this.comment=!1,this.empty=!1,this.partial=!!J.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=J.windowsNoMagicRoot!==void 0?J.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let Z of this.set)for(let J of Z)if(typeof J!=="string")return!0;return!1}debug(...Z){}make(){let Z=this.pattern,J=this.options;if(!J.nocomment&&Z.charAt(0)==="#"){this.comment=!0;return}if(!Z){this.empty=!0;return}if(this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],J.debug)this.debug=(...X)=>console.error(...X);this.debug(this.pattern,this.globSet);let Q=this.globSet.map((X)=>this.slashSplit(X));this.globParts=this.preprocess(Q),this.debug(this.pattern,this.globParts);let $=this.globParts.map((X,Y,W)=>{if(this.isWindows&&this.windowsNoMagicRoot){let K=X[0]===""&&X[1]===""&&(X[2]==="?"||!Fc.test(X[2]))&&!Fc.test(X[3]),z=/^[a-z]:/i.test(X[0]);if(K)return[...X.slice(0,4),...X.slice(4).map((G)=>this.parse(G))];else if(z)return[X[0],...X.slice(1).map((G)=>this.parse(G))]}return X.map((K)=>this.parse(K))});if(this.debug(this.pattern,$),this.set=$.filter((X)=>X.indexOf(!1)===-1),this.isWindows)for(let X=0;X=2)Z=this.firstPhasePreProcess(Z),Z=this.secondPhasePreProcess(Z);else if(J>=1)Z=this.levelOneOptimize(Z);else Z=this.adjascentGlobstarOptimize(Z);return Z}adjascentGlobstarOptimize(Z){return Z.map((J)=>{let Q=-1;while((Q=J.indexOf("**",Q+1))!==-1){let $=Q;while(J[$+1]==="**")$++;if($!==Q)J.splice(Q,$-Q)}return J})}levelOneOptimize(Z){return Z.map((J)=>{return J=J.reduce((Q,$)=>{let X=Q[Q.length-1];if($==="**"&&X==="**")return Q;if($===".."){if(X&&X!==".."&&X!=="."&&X!=="**")return Q.pop(),Q}return Q.push($),Q},[]),J.length===0?[""]:J})}levelTwoFileOptimize(Z){if(!Array.isArray(Z))Z=this.slashSplit(Z);let J=!1;do{if(J=!1,!this.preserveMultipleSlashes){for(let $=1;$$)Q.splice($+1,Y-$);let W=Q[$+1],K=Q[$+2],z=Q[$+3];if(W!=="..")continue;if(!K||K==="."||K===".."||!z||z==="."||z==="..")continue;J=!0,Q.splice($,1);let G=Q.slice(0);G[$]="**",Z.push(G),$--}if(!this.preserveMultipleSlashes){for(let Y=1;YJ.length)}partsMatch(Z,J,Q=!1){let $=0,X=0,Y=[],W="";while($=2)Z=this.levelTwoFileOptimize(Z);if(J.includes(l4.GLOBSTAR))return this.#Q(Z,J,Q,$,X);return this.#X(Z,J,Q,$,X)}#Q(Z,J,Q,$,X){let Y=J.indexOf(l4.GLOBSTAR,X),W=J.lastIndexOf(l4.GLOBSTAR),[K,z,G]=Q?[J.slice(X,Y),J.slice(Y+1),[]]:[J.slice(X,Y),J.slice(Y+1,W),J.slice(W+1)];if(K.length){let L=Z.slice($,$+K.length);if(!this.#X(L,K,Q,0,0))return!1;$+=K.length,X+=K.length}let H=0;if(G.length){if(G.length+$>Z.length)return!1;let L=Z.length-G.length;if(this.#X(Z,G,Q,L,0))H=G.length;else{if(Z[Z.length-1]!==""||$+G.length===Z.length)return!1;if(L--,!this.#X(Z,G,Q,L,0))return!1;H=G.length+1}}if(!z.length){let L=!!H;for(let O=$;O{let z=K.map((H)=>{if(H instanceof RegExp)for(let B of H.flags.split(""))$.add(B);return typeof H==="string"?fk0(H):H===l4.GLOBSTAR?l4.GLOBSTAR:H._src});z.forEach((H,B)=>{let V=z[B+1],F=z[B-1];if(H!==l4.GLOBSTAR||F===l4.GLOBSTAR)return;if(F===void 0)if(V!==void 0&&V!==l4.GLOBSTAR)z[B+1]="(?:\\/|"+Q+"\\/)?"+V;else z[B]=Q;else if(V===void 0)z[B-1]=F+"(?:\\/|\\/"+Q+")?";else if(V!==l4.GLOBSTAR)z[B-1]=F+"(?:\\/|\\/"+Q+"\\/)"+V,z[B+1]=l4.GLOBSTAR});let G=z.filter((H)=>H!==l4.GLOBSTAR);if(this.partial&&G.length>=1){let H=[];for(let B=1;B<=G.length;B++)H.push(G.slice(0,B).join("/"));return"(?:"+H.join("|")+")"}return G.join("/")}).join("|"),[Y,W]=Z.length>1?["(?:",")"]:["",""];if(X="^"+Y+X+W+"$",this.partial)X="^(?:\\/|"+Y+X.slice(1,-1)+W+")$";if(this.negate)X="^(?!"+X+").+$";try{this.regexp=new RegExp(X,[...$].join(""))}catch(K){this.regexp=!1}return this.regexp}slashSplit(Z){if(this.preserveMultipleSlashes)return Z.split("/");else if(this.isWindows&&/^\/\/[^\/]+/.test(Z))return["",...Z.split(/\/+/)];else return Z.split(/\/+/)}match(Z,J=this.partial){if(this.debug("match",Z,this.pattern),this.comment)return!1;if(this.empty)return Z==="";if(Z==="/"&&J)return!0;let Q=this.options;if(this.isWindows)Z=Z.split("\\").join("/");let $=this.slashSplit(Z);this.debug(this.pattern,"split",$);let X=this.set;this.debug(this.pattern,"set",X);let Y=$[$.length-1];if(!Y)for(let W=$.length-2;!Y&&W>=0;W--)Y=$[W];for(let W=0;W{var Mc=A("node:diagnostics_channel"),{context:K3,trace:LB,SpanStatusCode:p4,propagation:OB,diag:vk0}=C(),{getRPCMetadata:bk0,RPCType:xk0}=Q0(),{ATTR_HTTP_ROUTE:z3,ATTR_HTTP_RESPONSE_STATUS_CODE:Rc,ATTR_HTTP_REQUEST_METHOD:gk0,ATTR_URL_PATH:dk0}=s(),{InstrumentationBase:ck0}=vd(),{version:mk0,name:Ac}=bd(),Ic=["onRequest","preParsing","preValidation","preHandler","preSerialization","onSend","onResponse","onError"],K0={HOOK_NAME:"hook.name",FASTIFY_TYPE:"fastify.type",HOOK_CALLBACK_NAME:"hook.callback.name",ROOT:"fastify.root"},tZ={ROUTE:"route-hook",INSTANCE:"hook",HANDLER:"request-handler"},eZ=Symbol("fastify otel instance"),Z7=Symbol("fastify otel request spans"),i4=Symbol("fastify otel request context"),Nc=Symbol("fastify otel addhook original"),Tc=Symbol("fastify otel setnotfound original"),o4=Symbol("fastify otel ignore path"),n4=Symbol("fastify otel record exceptions");class CB extends ck0{logger=null;_requestHook=null;_lifecycleHook=null;constructor(Z){super(Ac,mk0,Z);if(this.logger=vk0.createComponentLogger({namespace:Ac}),this[o4]=null,this[n4]=!0,Z?.recordExceptions!=null){if(typeof Z.recordExceptions!=="boolean")throw TypeError("recordExceptions must be a boolean");this[n4]=Z.recordExceptions}if(typeof Z?.requestHook==="function")this._requestHook=Z.requestHook;if(typeof Z?.lifecycleHook==="function")this._lifecycleHook=Z.lifecycleHook;if(Z?.ignorePaths!=null||process.env.OTEL_FASTIFY_IGNORE_PATHS!=null){let J=Z?.ignorePaths??process.env.OTEL_FASTIFY_IGNORE_PATHS;if((typeof J!=="string"||J.length===0)&&typeof J!=="function")throw TypeError("ignorePaths must be a string or a function");let Q=null;this[o4]=($)=>{if(typeof J==="function")return J($);else{if(Q==null)Q=kc().minimatch;return Q($.url,J)}}}}enable(){if(this._handleInitialization===void 0&&this.getConfig().registerOnInitialization)this._handleInitialization=(Z)=>{this.plugin()(Z.fastify,void 0,()=>{});let J=(Q,$,X)=>{X()};J[Symbol.for("skip-override")]=!0,J[Symbol.for("fastify.display-name")]="@fastify/otel",Z.fastify.register(J)},Mc.subscribe("fastify.initialization",this._handleInitialization);return super.enable()}disable(){if(this._handleInitialization)Mc.unsubscribe("fastify.initialization",this._handleInitialization),this._handleInitialization=void 0;return super.disable()}init(){return[]}plugin(){let Z=this;return J[Symbol.for("skip-override")]=!0,J[Symbol.for("fastify.display-name")]="@fastify/otel",J[Symbol.for("plugin-meta")]={fastify:">=4.0.0 <6",name:"@fastify/otel"},J;function J(Q,$,X){Q.decorate(eZ,Z),Q.decorate(Nc,Q.addHook),Q.decorate(Tc,Q.setNotFoundHandler),Q.decorateRequest("opentelemetry",function(){let B=this[i4],V=this[Z7];return{enabled:this.routeOptions.config?.otel!==!1,span:V,tracer:Z.tracer,context:B,inject:(F,D)=>{return OB.inject(B,F,D)},extract:(F,D)=>{return OB.extract(B,F,D)}}}),Q.decorateRequest(Z7,null),Q.decorateRequest(i4,null),Q.addHook("onRoute",function(B){if(Z[o4]?.(B)===!0){Z.logger.debug(`Ignoring route instrumentation ${B.method} ${B.url} because it matches the ignore path`);return}if(B.config?.otel===!1){Z.logger.debug(`Ignoring route instrumentation ${B.method} ${B.url} because it is disabled`);return}for(let V of Ic)if(B[V]!=null){let F=B[V];if(typeof F==="function")B[V]=G(F,V,{[K0.HOOK_NAME]:`${this.pluginName} - route -> ${V}`,[K0.FASTIFY_TYPE]:tZ.ROUTE,[z3]:B.url,[K0.HOOK_CALLBACK_NAME]:F.name?.length>0?F.name:"anonymous"});else if(Array.isArray(F)){let D=[];for(let U of F)D.push(G(U,V,{[K0.HOOK_NAME]:`${this.pluginName} - route -> ${V}`,[K0.FASTIFY_TYPE]:tZ.ROUTE,[z3]:B.url,[K0.HOOK_CALLBACK_NAME]:U.name?.length>0?U.name:"anonymous"}));B[V]=D}}if(B.onSend!=null)B.onSend=Array.isArray(B.onSend)?[...B.onSend,Y]:[B.onSend,Y];else B.onSend=Y;if(B.onError!=null)B.onError=Array.isArray(B.onError)?[...B.onError,W]:[B.onError,W];else B.onError=W;B.handler=G(B.handler,"handler",{[K0.HOOK_NAME]:`${this.pluginName} - route-handler`,[K0.FASTIFY_TYPE]:tZ.HANDLER,[z3]:B.url,[K0.HOOK_CALLBACK_NAME]:B.handler.name.length>0?B.handler.name:"anonymous"})}),Q.addHook("onRequest",function(B,V,F){if(this[eZ].isEnabled()===!1||B.routeOptions.config?.otel===!1)return F();if(this[eZ][o4]?.({url:B.url,method:B.method})===!0)return this[eZ].logger.debug(`Ignoring request ${B.method} ${B.url} because it matches the ignore path`),F();let D=K3.active();if(LB.getSpan(D)==null)D=OB.extract(D,B.headers);let U=bk0(D);if(B.routeOptions.url!=null&&U?.type===xk0.HTTP)U.route=B.routeOptions.url;let j={[K0.ROOT]:"@fastify/otel",[gk0]:B.method,[dk0]:B.url};if(B.routeOptions.url!=null)j[z3]=B.routeOptions.url;let L=this[eZ].tracer.startSpan("request",{attributes:j},D);try{this[eZ]._requestHook?.(L,B)}catch(O){this[eZ].logger.error({err:O},"requestHook threw")}B[i4]=LB.setSpan(D,L),B[Z7]=L,K3.with(B[i4],()=>{F()})}),Q.addHook("onResponse",function(B,V,F){let D=B[Z7];if(D!=null)D.setStatus({code:p4.OK,message:"OK"}),D.setAttributes({[Rc]:404}),D.end();B[Z7]=null,F()}),Q.addHook=K,Q.setNotFoundHandler=z,X();function Y(H,B,V,F){let D=H[Z7];if(D!=null){if(B.statusCode<500)D.setStatus({code:p4.OK,message:"OK"});D.setAttributes({[Rc]:B.statusCode}),D.end()}H[Z7]=null,F(null,V)}function W(H,B,V,F){let D=H[Z7];if(D!=null){if(D.setStatus({code:p4.ERROR,message:V.message}),Z[n4]!==!1)D.recordException(V)}F()}function K(H,B){let V=this[Nc];if(Ic.includes(H))return V.call(this,H,G(B,H,{[K0.HOOK_NAME]:`${this.pluginName} - ${H}`,[K0.FASTIFY_TYPE]:tZ.INSTANCE,[K0.HOOK_CALLBACK_NAME]:B.name?.length>0?B.name:"anonymous"}));else return V.call(this,H,B)}function z(H,B){let V=this[Tc];if(typeof H==="function")B=G(H,"notFoundHandler",{[K0.HOOK_NAME]:`${this.pluginName} - not-found-handler`,[K0.FASTIFY_TYPE]:tZ.INSTANCE,[K0.HOOK_CALLBACK_NAME]:H.name?.length>0?H.name:"anonymous"}),V.call(this,B);else{if(H.preValidation!=null)H.preValidation=G(H.preValidation,"notFoundHandler - preValidation",{[K0.HOOK_NAME]:`${this.pluginName} - not-found-handler - preValidation`,[K0.FASTIFY_TYPE]:tZ.INSTANCE,[K0.HOOK_CALLBACK_NAME]:H.preValidation.name?.length>0?H.preValidation.name:"anonymous"});if(H.preHandler!=null)H.preHandler=G(H.preHandler,"notFoundHandler - preHandler",{[K0.HOOK_NAME]:`${this.pluginName} - not-found-handler - preHandler`,[K0.FASTIFY_TYPE]:tZ.INSTANCE,[K0.HOOK_CALLBACK_NAME]:H.preHandler.name?.length>0?H.preHandler.name:"anonymous"});B=G(B,"notFoundHandler",{[K0.HOOK_NAME]:`${this.pluginName} - not-found-handler`,[K0.FASTIFY_TYPE]:tZ.INSTANCE,[K0.HOOK_CALLBACK_NAME]:B.name?.length>0?B.name:"anonymous"}),V.call(this,H,B)}}function G(H,B,V={}){return function(...D){let U=this[eZ],[j]=D;if(U.isEnabled()===!1||j.routeOptions.config?.otel===!1)return U.logger.debug(`Ignoring route instrumentation ${j.routeOptions.method} ${j.routeOptions.url} because it is disabled`),H.call(this,...D);if(U[o4]?.({url:j.url,method:j.method})===!0)return U.logger.debug(`Ignoring route instrumentation ${j.routeOptions.method} ${j.routeOptions.url} because it matches the ignore path`),H.call(this,...D);let L=j[i4]??K3.active(),O=H.name?.length>0?H.name:this.pluginName??"anonymous",M=U.tracer.startSpan(`${B} - ${O}`,{attributes:V},L);if(U._lifecycleHook!=null)try{U._lifecycleHook(M,{hookName:B,request:j,handler:O})}catch(S){U.logger.error({err:S},"Execution of lifecycleHook failed")}return K3.with(LB.setSpan(L,M),function(){try{let S=H.call(this,...D);if(typeof S?.then==="function")return S.then((T)=>{return M.end(),T},(T)=>{if(M.setStatus({code:p4.ERROR,message:T.message}),U[n4]!==!1)M.recordException(T);return M.end(),Promise.reject(T)});return M.end(),S}catch(S){if(M.setStatus({code:p4.ERROR,message:S.message}),U[n4]!==!1)M.recordException(S);throw M.end(),S}},this)}}}}}PB.exports=CB;PB.exports.FastifyOtelInstrumentation=CB});var IB=w((ic)=>{Object.defineProperty(ic,"__esModule",{value:!0});ic.SpanNames=ic.TokenKind=ic.AllowedOperationTypes=void 0;var rk0;(function(Z){Z.QUERY="query",Z.MUTATION="mutation",Z.SUBSCRIPTION="subscription"})(rk0=ic.AllowedOperationTypes||(ic.AllowedOperationTypes={}));var tk0;(function(Z){Z.SOF="",Z.EOF="",Z.BANG="!",Z.DOLLAR="$",Z.AMP="&",Z.PAREN_L="(",Z.PAREN_R=")",Z.SPREAD="...",Z.COLON=":",Z.EQUALS="=",Z.AT="@",Z.BRACKET_L="[",Z.BRACKET_R="]",Z.BRACE_L="{",Z.PIPE="|",Z.BRACE_R="}",Z.NAME="Name",Z.INT="Int",Z.FLOAT="Float",Z.STRING="String",Z.BLOCK_STRING="BlockString",Z.COMMENT="Comment"})(tk0=ic.TokenKind||(ic.TokenKind={}));var ek0;(function(Z){Z.EXECUTE="graphql.execute",Z.PARSE="graphql.parse",Z.RESOLVE="graphql.resolve",Z.VALIDATE="graphql.validate",Z.SCHEMA_VALIDATE="graphql.validateSchema",Z.SCHEMA_PARSE="graphql.parseSchema"})(ek0=ic.SpanNames||(ic.SpanNames={}))});var TB=w((oc)=>{Object.defineProperty(oc,"__esModule",{value:!0});oc.AttributeNames=void 0;var ZM0;(function(Z){Z.SOURCE="graphql.source",Z.FIELD_NAME="graphql.field.name",Z.FIELD_PATH="graphql.field.path",Z.FIELD_TYPE="graphql.field.type",Z.PARENT_NAME="graphql.parent.name",Z.OPERATION_TYPE="graphql.operation.type",Z.OPERATION_NAME="graphql.operation.name",Z.VARIABLES="graphql.variables.",Z.ERROR_VALIDATION_NAME="graphql.validation.error"})(ZM0=oc.AttributeNames||(oc.AttributeNames={}))});var V3=w((nc)=>{Object.defineProperty(nc,"__esModule",{value:!0});nc.OTEL_GRAPHQL_DATA_SYMBOL=nc.OTEL_PATCHED_SYMBOL=void 0;nc.OTEL_PATCHED_SYMBOL=Symbol.for("opentelemetry.patched");nc.OTEL_GRAPHQL_DATA_SYMBOL=Symbol.for("opentelemetry.graphql_data")});var tc=w((sc)=>{Object.defineProperty(sc,"__esModule",{value:!0});sc.OPERATION_NOT_SUPPORTED=void 0;var j86=V3();sc.OPERATION_NOT_SUPPORTED="Operation$operationName$not supported"});var Dm=w((Vm)=>{Object.defineProperty(Vm,"__esModule",{value:!0});Vm.wrapFieldResolver=Vm.wrapFields=Vm.getSourceFromLocation=Vm.getOperation=Vm.endSpan=Vm.addSpanSource=Vm.addInputVariableAttributes=Vm.isPromise=void 0;var E8=C(),J7=IB(),G1=TB(),HZ=V3(),ec=Object.values(J7.AllowedOperationTypes),QM0=(Z)=>{return typeof Z?.then==="function"};Vm.isPromise=QM0;var $M0=(Z)=>{return typeof Z=="object"&&Z!==null};function fB(Z,J,Q){if(Array.isArray(Q))Q.forEach(($,X)=>{fB(Z,`${J}.${X}`,$)});else if(Q instanceof Object)Object.entries(Q).forEach(([$,X])=>{fB(Z,`${J}.${$}`,X)});else Z.setAttribute(`${G1.AttributeNames.VARIABLES}${String(J)}`,Q)}function XM0(Z,J){Object.entries(J).forEach(([Q,$])=>{fB(Z,Q,$)})}Vm.addInputVariableAttributes=XM0;function $m(Z,J,Q,$,X){let Y=zm(J,Q,$,X);Z.setAttribute(G1.AttributeNames.SOURCE,Y)}Vm.addSpanSource=$m;function YM0(Z,J,Q,$,X){let Y=Xm(Q,X);if(Y)return{field:Y,spanAdded:!1};let K=J().flatResolveSpans?Wm(Q):Ym(Q,X);return Y={span:WM0(Z,J,Q,$,X,K)},GM0(Q,X,Y),{field:Y,spanAdded:!0}}function WM0(Z,J,Q,$,X,Y){let W={[G1.AttributeNames.FIELD_NAME]:$.fieldName,[G1.AttributeNames.FIELD_PATH]:X.join("."),[G1.AttributeNames.FIELD_TYPE]:$.returnType.toString(),[G1.AttributeNames.PARENT_NAME]:$.parentType.name},K=Z.startSpan(`${J7.SpanNames.RESOLVE} ${W[G1.AttributeNames.FIELD_PATH]}`,{attributes:W},Y?E8.trace.setSpan(E8.context.active(),Y):void 0),z=Q[HZ.OTEL_GRAPHQL_DATA_SYMBOL].source,G=$.fieldNodes.find((H)=>H.kind==="Field");if(G)$m(K,z.loc,J().allowValues,G.loc?.start,G.loc?.end);return K}function KM0(Z,J){if(J)Z.recordException(J);Z.end()}Vm.endSpan=KM0;function zM0(Z,J){if(!Z||!Array.isArray(Z.definitions))return;if(J)return Z.definitions.filter((Q)=>ec.indexOf(Q?.operation)!==-1).find((Q)=>J===Q?.name?.value);else return Z.definitions.find((Q)=>ec.indexOf(Q?.operation)!==-1)}Vm.getOperation=zM0;function GM0(Z,J,Q){return Z[HZ.OTEL_GRAPHQL_DATA_SYMBOL].fields[J.join(".")]=Q}function Xm(Z,J){return Z[HZ.OTEL_GRAPHQL_DATA_SYMBOL].fields[J.join(".")]}function Ym(Z,J){for(let Q=J.length-1;Q>0;Q--){let $=Xm(Z,J.slice(0,Q));if($)return $.span}return Wm(Z)}function Wm(Z){return Z[HZ.OTEL_GRAPHQL_DATA_SYMBOL].span}function BM0(Z,J){let Q=[],$=J;while($){let X=$.key;if(Z&&typeof X==="number")X="*";Q.push(String(X)),$=$.prev}return Q.reverse()}function HM0(Z){return Km(` +`,Z)}function Zm(Z){return Km(" ",Z)}function Km(Z,J){let Q="";for(let $=0;$W){K=K.next,z=K?.line;continue}let G=K.value||K.kind,H="";if(!J&&VM0.indexOf(K.kind)>=0)G="*";if(K.kind===J7.TokenKind.STRING)G=`"${G}"`;if(K.kind===J7.TokenKind.EOF)G="";if(K.line>z)X+=HM0(K.line-z),z=K.line,H=Zm(K.column-1);else if(K.line===K.prev?.line)H=Zm(K.start-(K.prev?.end||0));if(X+=H+G,K)K=K.next}}return X}Vm.getSourceFromLocation=zm;function Gm(Z,J,Q){if(!Z||Z[HZ.OTEL_PATCHED_SYMBOL])return;let $=Z.getFields();Z[HZ.OTEL_PATCHED_SYMBOL]=!0,Object.keys($).forEach((X)=>{let Y=$[X];if(!Y)return;if(Y.resolve)Y.resolve=Hm(J,Q,Y.resolve);if(Y.type){let W=Bm(Y.type);for(let K of W)Gm(K,J,Q)}})}Vm.wrapFields=Gm;function Bm(Z){if("ofType"in Z)return Bm(Z.ofType);if(FM0(Z))return Z.getTypes();if(wM0(Z))return[Z];return[]}function FM0(Z){return"getTypes"in Z&&typeof Z.getTypes==="function"}function wM0(Z){return"getFields"in Z&&typeof Z.getFields==="function"}var Jm=(Z,J,Q)=>{if(!Q)return;Z.recordException(J),Z.setStatus({code:E8.SpanStatusCode.ERROR,message:J.message}),Z.end()},Qm=(Z,J)=>{if(!J)return;Z.end()};function Hm(Z,J,Q,$=!1){if(X[HZ.OTEL_PATCHED_SYMBOL]||typeof Q!=="function")return Q;function X(Y,W,K,z){if(!Q)return;let G=J();if(G.ignoreTrivialResolveSpans&&$&&($M0(Y)||typeof Y==="function")){if(typeof Y[z.fieldName]!=="function")return Q.call(this,Y,W,K,z)}if(!K[HZ.OTEL_GRAPHQL_DATA_SYMBOL])return Q.call(this,Y,W,K,z);let H=BM0(G.mergeItems,z&&z.path),B=H.filter((D)=>typeof D==="string").length,V,F=!1;if(G.depth>=0&&G.depth{try{let D=Q.call(this,Y,W,K,z);if(Vm.isPromise(D))return D.then((U)=>{return Qm(V,F),U},(U)=>{throw Jm(V,U,F),U});else return Qm(V,F),D}catch(D){throw Jm(V,D,F),D}})}return X[HZ.OTEL_PATCHED_SYMBOL]=!0,X}Vm.wrapFieldResolver=Hm});var qm=w((Um)=>{Object.defineProperty(Um,"__esModule",{value:!0});Um.PACKAGE_NAME=Um.PACKAGE_VERSION=void 0;Um.PACKAGE_VERSION="0.61.0";Um.PACKAGE_NAME="@opentelemetry/instrumentation-graphql"});var Mm=w((Pm)=>{Object.defineProperty(Pm,"__esModule",{value:!0});Pm.GraphQLInstrumentation=void 0;var VZ=C(),Q9=c(),t4=IB(),F3=TB(),EB=V3(),PM0=tc(),r0=Dm(),Lm=qm(),Om={mergeItems:!1,depth:-1,allowValues:!1,ignoreResolveSpans:!1},w3=[">=14.0.0 <17"];class Cm extends Q9.InstrumentationBase{constructor(Z={}){super(Lm.PACKAGE_NAME,Lm.PACKAGE_VERSION,{...Om,...Z})}setConfig(Z={}){super.setConfig({...Om,...Z})}init(){let Z=new Q9.InstrumentationNodeModuleDefinition("graphql",w3);return Z.files.push(this._addPatchingExecute()),Z.files.push(this._addPatchingParser()),Z.files.push(this._addPatchingValidate()),Z}_addPatchingExecute(){return new Q9.InstrumentationNodeModuleFile("graphql/execution/execute.js",w3,(Z)=>{if((0,Q9.isWrapped)(Z.execute))this._unwrap(Z,"execute");return this._wrap(Z,"execute",this._patchExecute(Z.defaultFieldResolver)),Z},(Z)=>{if(Z)this._unwrap(Z,"execute")})}_addPatchingParser(){return new Q9.InstrumentationNodeModuleFile("graphql/language/parser.js",w3,(Z)=>{if((0,Q9.isWrapped)(Z.parse))this._unwrap(Z,"parse");return this._wrap(Z,"parse",this._patchParse()),Z},(Z)=>{if(Z)this._unwrap(Z,"parse")})}_addPatchingValidate(){return new Q9.InstrumentationNodeModuleFile("graphql/validation/validate.js",w3,(Z)=>{if((0,Q9.isWrapped)(Z.validate))this._unwrap(Z,"validate");return this._wrap(Z,"validate",this._patchValidate()),Z},(Z)=>{if(Z)this._unwrap(Z,"validate")})}_patchExecute(Z){let J=this;return function($){return function(){let Y;if(arguments.length>=2){let z=arguments;Y=J._wrapExecuteArgs(z[0],z[1],z[2],z[3],z[4],z[5],z[6],z[7],Z)}else{let z=arguments[0];Y=J._wrapExecuteArgs(z.schema,z.document,z.rootValue,z.contextValue,z.variableValues,z.operationName,z.fieldResolver,z.typeResolver,Z)}let W=(0,r0.getOperation)(Y.document,Y.operationName),K=J._createExecuteSpan(W,Y);return Y.contextValue[EB.OTEL_GRAPHQL_DATA_SYMBOL]={source:Y.document?Y.document||Y.document[EB.OTEL_GRAPHQL_DATA_SYMBOL]:void 0,span:K,fields:{}},VZ.context.with(VZ.trace.setSpan(VZ.context.active(),K),()=>{return(0,Q9.safeExecuteInTheMiddle)(()=>{return $.apply(this,[Y])},(z,G)=>{J._handleExecutionResult(K,z,G)})})}}}_handleExecutionResult(Z,J,Q){let $=this.getConfig();if(Q===void 0||J){(0,r0.endSpan)(Z,J);return}if((0,r0.isPromise)(Q))Q.then((X)=>{if(typeof $.responseHook!=="function"){(0,r0.endSpan)(Z);return}this._executeResponseHook(Z,X)},(X)=>{(0,r0.endSpan)(Z,X)});else{if(typeof $.responseHook!=="function"){(0,r0.endSpan)(Z);return}this._executeResponseHook(Z,Q)}}_executeResponseHook(Z,J){let{responseHook:Q}=this.getConfig();if(!Q)return;(0,Q9.safeExecuteInTheMiddle)(()=>{Q(Z,J)},($)=>{if($)this._diag.error("Error running response hook",$);(0,r0.endSpan)(Z,void 0)},!0)}_patchParse(){let Z=this;return function(Q){return function(X,Y){return Z._parse(this,Q,X,Y)}}}_patchValidate(){let Z=this;return function(Q){return function(X,Y,W,K,z){return Z._validate(this,Q,X,Y,W,z,K)}}}_parse(Z,J,Q,$){let X=this.getConfig(),Y=this.tracer.startSpan(t4.SpanNames.PARSE);return VZ.context.with(VZ.trace.setSpan(VZ.context.active(),Y),()=>{return(0,Q9.safeExecuteInTheMiddle)(()=>{return J.call(Z,Q,$)},(W,K)=>{if(K){if(!(0,r0.getOperation)(K))Y.updateName(t4.SpanNames.SCHEMA_PARSE);else if(K.loc)(0,r0.addSpanSource)(Y,K.loc,X.allowValues)}(0,r0.endSpan)(Y,W)})})}_validate(Z,J,Q,$,X,Y,W){let K=this.tracer.startSpan(t4.SpanNames.VALIDATE,{});return VZ.context.with(VZ.trace.setSpan(VZ.context.active(),K),()=>{return(0,Q9.safeExecuteInTheMiddle)(()=>{return J.call(Z,Q,$,X,W,Y)},(z,G)=>{if(!$.loc)K.updateName(t4.SpanNames.SCHEMA_VALIDATE);if(G&&G.length)K.recordException({name:F3.AttributeNames.ERROR_VALIDATION_NAME,message:JSON.stringify(G)});(0,r0.endSpan)(K,z)})})}_createExecuteSpan(Z,J){let Q=this.getConfig(),$=this.tracer.startSpan(t4.SpanNames.EXECUTE,{});if(Z){let{operation:X,name:Y}=Z;$.setAttribute(F3.AttributeNames.OPERATION_TYPE,X);let W=Y?.value;if(W)$.setAttribute(F3.AttributeNames.OPERATION_NAME,W),$.updateName(`${X} ${W}`);else $.updateName(X)}else{let X=" ";if(J.operationName)X=` "${J.operationName}" `;X=PM0.OPERATION_NOT_SUPPORTED.replace("$operationName$",X),$.setAttribute(F3.AttributeNames.OPERATION_NAME,X)}if(J.document?.loc)(0,r0.addSpanSource)($,J.document.loc,Q.allowValues);if(J.variableValues&&Q.allowValues)(0,r0.addInputVariableAttributes)($,J.variableValues);return $}_wrapExecuteArgs(Z,J,Q,$,X,Y,W,K,z){if(!$)$={};if($[EB.OTEL_GRAPHQL_DATA_SYMBOL]||this.getConfig().ignoreResolveSpans)return{schema:Z,document:J,rootValue:Q,contextValue:$,variableValues:X,operationName:Y,fieldResolver:W,typeResolver:K};let G=W==null,H=W??z;if(W=(0,r0.wrapFieldResolver)(this.tracer,()=>this.getConfig(),H,G),Z)(0,r0.wrapFields)(Z.getQueryType(),this.tracer,()=>this.getConfig()),(0,r0.wrapFields)(Z.getMutationType(),this.tracer,()=>this.getConfig());return{schema:Z,document:J,rootValue:Q,contextValue:$,variableValues:X,operationName:Y,fieldResolver:W,typeResolver:K}}}Pm.GraphQLInstrumentation=Cm});var Rm=w((yB)=>{Object.defineProperty(yB,"__esModule",{value:!0});yB.GraphQLInstrumentation=void 0;var kM0=Mm();Object.defineProperty(yB,"GraphQLInstrumentation",{enumerable:!0,get:function(){return kM0.GraphQLInstrumentation}})});var Sm=w((ym)=>{Object.defineProperty(ym,"__esModule",{value:!0});ym.EVENT_LISTENERS_SET=void 0;ym.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.kafkajs.eventListenersSet")});var bm=w((_m)=>{Object.defineProperty(_m,"__esModule",{value:!0});_m.bufferTextMapGetter=void 0;_m.bufferTextMapGetter={get(Z,J){if(!Z)return;let Q=Object.keys(Z);for(let $ of Q)if($===J||$.toLowerCase()===J)return Z[$]?.toString();return},keys(Z){return Z?Object.keys(Z):[]}}});var dm=w((xm)=>{Object.defineProperty(xm,"__esModule",{value:!0});xm.METRIC_MESSAGING_PROCESS_DURATION=xm.METRIC_MESSAGING_CLIENT_SENT_MESSAGES=xm.METRIC_MESSAGING_CLIENT_OPERATION_DURATION=xm.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES=xm.MESSAGING_SYSTEM_VALUE_KAFKA=xm.MESSAGING_OPERATION_TYPE_VALUE_SEND=xm.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE=xm.MESSAGING_OPERATION_TYPE_VALUE_PROCESS=xm.ATTR_MESSAGING_SYSTEM=xm.ATTR_MESSAGING_OPERATION_TYPE=xm.ATTR_MESSAGING_OPERATION_NAME=xm.ATTR_MESSAGING_KAFKA_OFFSET=xm.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE=xm.ATTR_MESSAGING_KAFKA_MESSAGE_KEY=xm.ATTR_MESSAGING_DESTINATION_PARTITION_ID=xm.ATTR_MESSAGING_DESTINATION_NAME=xm.ATTR_MESSAGING_BATCH_MESSAGE_COUNT=void 0;xm.ATTR_MESSAGING_BATCH_MESSAGE_COUNT="messaging.batch.message_count";xm.ATTR_MESSAGING_DESTINATION_NAME="messaging.destination.name";xm.ATTR_MESSAGING_DESTINATION_PARTITION_ID="messaging.destination.partition.id";xm.ATTR_MESSAGING_KAFKA_MESSAGE_KEY="messaging.kafka.message.key";xm.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE="messaging.kafka.message.tombstone";xm.ATTR_MESSAGING_KAFKA_OFFSET="messaging.kafka.offset";xm.ATTR_MESSAGING_OPERATION_NAME="messaging.operation.name";xm.ATTR_MESSAGING_OPERATION_TYPE="messaging.operation.type";xm.ATTR_MESSAGING_SYSTEM="messaging.system";xm.MESSAGING_OPERATION_TYPE_VALUE_PROCESS="process";xm.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE="receive";xm.MESSAGING_OPERATION_TYPE_VALUE_SEND="send";xm.MESSAGING_SYSTEM_VALUE_KAFKA="kafka";xm.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES="messaging.client.consumed.messages";xm.METRIC_MESSAGING_CLIENT_OPERATION_DURATION="messaging.client.operation.duration";xm.METRIC_MESSAGING_CLIENT_SENT_MESSAGES="messaging.client.sent.messages";xm.METRIC_MESSAGING_PROCESS_DURATION="messaging.process.duration"});var um=w((cm)=>{Object.defineProperty(cm,"__esModule",{value:!0});cm.PACKAGE_NAME=cm.PACKAGE_VERSION=void 0;cm.PACKAGE_VERSION="0.22.0";cm.PACKAGE_NAME="@opentelemetry/instrumentation-kafkajs"});var tm=w((sm)=>{Object.defineProperty(sm,"__esModule",{value:!0});sm.KafkaJsInstrumentation=void 0;var X0=C(),$9=c(),y8=s(),lm=Sm(),pm=bm(),E=dm(),im=um();function D3(Z,J,Q){return($)=>{Z.add(J,{...Q,...$?{[y8.ATTR_ERROR_TYPE]:$}:{}})}}function om(Z,J,Q){return($)=>{Z.record((Date.now()-J)/1000,{...Q,...$?{[y8.ATTR_ERROR_TYPE]:$}:{}})}}var nm=[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10];class am extends $9.InstrumentationBase{constructor(Z={}){super(im.PACKAGE_NAME,im.PACKAGE_VERSION,Z)}_updateMetricInstruments(){this._clientDuration=this.meter.createHistogram(E.METRIC_MESSAGING_CLIENT_OPERATION_DURATION,{advice:{explicitBucketBoundaries:nm}}),this._sentMessages=this.meter.createCounter(E.METRIC_MESSAGING_CLIENT_SENT_MESSAGES),this._consumedMessages=this.meter.createCounter(E.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES),this._processDuration=this.meter.createHistogram(E.METRIC_MESSAGING_PROCESS_DURATION,{advice:{explicitBucketBoundaries:nm}})}init(){let Z=(Q)=>{if((0,$9.isWrapped)(Q?.Kafka?.prototype.producer))this._unwrap(Q.Kafka.prototype,"producer");if((0,$9.isWrapped)(Q?.Kafka?.prototype.consumer))this._unwrap(Q.Kafka.prototype,"consumer")};return new $9.InstrumentationNodeModuleDefinition("kafkajs",[">=0.3.0 <3"],(Q)=>{return Z(Q),this._wrap(Q?.Kafka?.prototype,"producer",this._getProducerPatch()),this._wrap(Q?.Kafka?.prototype,"consumer",this._getConsumerPatch()),Q},Z)}_getConsumerPatch(){let Z=this;return(J)=>{return function(...$){let X=J.apply(this,$);if((0,$9.isWrapped)(X.run))Z._unwrap(X,"run");return Z._wrap(X,"run",Z._getConsumerRunPatch()),Z._setKafkaEventListeners(X),X}}}_setKafkaEventListeners(Z){if(Z[lm.EVENT_LISTENERS_SET])return;if(Z.events?.REQUEST)Z.on(Z.events.REQUEST,this._recordClientDurationMetric.bind(this));Z[lm.EVENT_LISTENERS_SET]=!0}_recordClientDurationMetric(Z){let[J,Q]=Z.payload.broker.split(":");this._clientDuration.record(Z.payload.duration/1000,{[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_OPERATION_NAME]:`${Z.payload.apiName}`,[y8.ATTR_SERVER_ADDRESS]:J,[y8.ATTR_SERVER_PORT]:Number.parseInt(Q,10)})}_getProducerPatch(){let Z=this;return(J)=>{return function(...$){let X=J.apply(this,$);if((0,$9.isWrapped)(X.sendBatch))Z._unwrap(X,"sendBatch");if(Z._wrap(X,"sendBatch",Z._getSendBatchPatch()),(0,$9.isWrapped)(X.send))Z._unwrap(X,"send");if(Z._wrap(X,"send",Z._getSendPatch()),(0,$9.isWrapped)(X.transaction))Z._unwrap(X,"transaction");return Z._wrap(X,"transaction",Z._getProducerTransactionPatch()),Z._setKafkaEventListeners(X),X}}}_getConsumerRunPatch(){let Z=this;return(J)=>{return function(...$){let X=$[0];if(X?.eachMessage){if((0,$9.isWrapped)(X.eachMessage))Z._unwrap(X,"eachMessage");Z._wrap(X,"eachMessage",Z._getConsumerEachMessagePatch())}if(X?.eachBatch){if((0,$9.isWrapped)(X.eachBatch))Z._unwrap(X,"eachBatch");Z._wrap(X,"eachBatch",Z._getConsumerEachBatchPatch())}return J.call(this,X)}}}_getConsumerEachMessagePatch(){let Z=this;return(J)=>{return function(...$){let X=$[0],Y=X0.propagation.extract(X0.ROOT_CONTEXT,X.message.headers,pm.bufferTextMapGetter),W=Z._startConsumerSpan({topic:X.topic,message:X.message,operationType:E.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,ctx:Y,attributes:{[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(X.partition)}}),K=[om(Z._processDuration,Date.now(),{[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_OPERATION_NAME]:"process",[E.ATTR_MESSAGING_DESTINATION_NAME]:X.topic,[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(X.partition)}),D3(Z._consumedMessages,1,{[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_OPERATION_NAME]:"process",[E.ATTR_MESSAGING_DESTINATION_NAME]:X.topic,[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(X.partition)})],z=X0.context.with(X0.trace.setSpan(Y,W),()=>{return J.apply(this,$)});return Z._endSpansOnPromise([W],K,z)}}}_getConsumerEachBatchPatch(){return(Z)=>{let J=this;return function(...$){let X=$[0],Y=J._startConsumerSpan({topic:X.batch.topic,message:void 0,operationType:E.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,ctx:X0.ROOT_CONTEXT,attributes:{[E.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]:X.batch.messages.length,[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(X.batch.partition)}});return X0.context.with(X0.trace.setSpan(X0.context.active(),Y),()=>{let W=Date.now(),K=[],z=[D3(J._consumedMessages,X.batch.messages.length,{[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_OPERATION_NAME]:"process",[E.ATTR_MESSAGING_DESTINATION_NAME]:X.batch.topic,[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(X.batch.partition)})];X.batch.messages.forEach((H)=>{let B=X0.propagation.extract(X0.ROOT_CONTEXT,H.headers,pm.bufferTextMapGetter),V=X0.trace.getSpan(B)?.spanContext(),F;if(V)F={context:V};K.push(J._startConsumerSpan({topic:X.batch.topic,message:H,operationType:E.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,link:F,attributes:{[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(X.batch.partition)}})),z.push(om(J._processDuration,W,{[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_OPERATION_NAME]:"process",[E.ATTR_MESSAGING_DESTINATION_NAME]:X.batch.topic,[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(X.batch.partition)}))});let G=Z.apply(this,$);return K.unshift(Y),J._endSpansOnPromise(K,z,G)})}}}_getProducerTransactionPatch(){let Z=this;return(J)=>{return function(...$){let X=Z.tracer.startSpan("transaction"),Y=J.apply(this,$);return Y.then((W)=>{let K=W.send;W.send=function(...V){return X0.context.with(X0.trace.setSpan(X0.context.active(),X),()=>{return Z._getSendPatch()(K).apply(this,V).catch((D)=>{throw X.setStatus({code:X0.SpanStatusCode.ERROR,message:D?.message}),X.recordException(D),D})})};let z=W.sendBatch;W.sendBatch=function(...V){return X0.context.with(X0.trace.setSpan(X0.context.active(),X),()=>{return Z._getSendBatchPatch()(z).apply(this,V).catch((D)=>{throw X.setStatus({code:X0.SpanStatusCode.ERROR,message:D?.message}),X.recordException(D),D})})};let G=W.commit;W.commit=function(...V){let F=G.apply(this,V).then(()=>{X.setStatus({code:X0.SpanStatusCode.OK})});return Z._endSpansOnPromise([X],[],F)};let H=W.abort;W.abort=function(...V){let F=H.apply(this,V);return Z._endSpansOnPromise([X],[],F)}}).catch((W)=>{X.setStatus({code:X0.SpanStatusCode.ERROR,message:W?.message}),X.recordException(W),X.end()}),Y}}}_getSendBatchPatch(){let Z=this;return(J)=>{return function(...$){let Y=$[0].topicMessages||[],W=[],K=[];Y.forEach((G)=>{G.messages.forEach((H)=>{W.push(Z._startProducerSpan(G.topic,H)),K.push(D3(Z._sentMessages,1,{[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_OPERATION_NAME]:"send",[E.ATTR_MESSAGING_DESTINATION_NAME]:G.topic,...H.partition!==void 0?{[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(H.partition)}:{}}))})});let z=J.apply(this,$);return Z._endSpansOnPromise(W,K,z)}}}_getSendPatch(){let Z=this;return(J)=>{return function(...$){let X=$[0],Y=X.messages.map((z)=>{return Z._startProducerSpan(X.topic,z)}),W=X.messages.map((z)=>D3(Z._sentMessages,1,{[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_OPERATION_NAME]:"send",[E.ATTR_MESSAGING_DESTINATION_NAME]:X.topic,...z.partition!==void 0?{[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:String(z.partition)}:{}})),K=J.apply(this,$);return Z._endSpansOnPromise(Y,W,K)}}}_endSpansOnPromise(Z,J,Q){return Promise.resolve(Q).then(($)=>{return J.forEach((X)=>X()),$}).catch(($)=>{let X,Y=y8.ERROR_TYPE_VALUE_OTHER;if(typeof $==="string"||$===void 0)X=$;else if(typeof $==="object"&&Object.prototype.hasOwnProperty.call($,"message"))X=$.message,Y=$.constructor.name;throw J.forEach((W)=>W(Y)),Z.forEach((W)=>{W.setAttribute(y8.ATTR_ERROR_TYPE,Y),W.setStatus({code:X0.SpanStatusCode.ERROR,message:X})}),$}).finally(()=>{Z.forEach(($)=>$.end())})}_startConsumerSpan({topic:Z,message:J,operationType:Q,ctx:$,link:X,attributes:Y}){let W=Q===E.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?"poll":Q,K=this.tracer.startSpan(`${W} ${Z}`,{kind:Q===E.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE?X0.SpanKind.CLIENT:X0.SpanKind.CONSUMER,attributes:{...Y,[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_DESTINATION_NAME]:Z,[E.ATTR_MESSAGING_OPERATION_TYPE]:Q,[E.ATTR_MESSAGING_OPERATION_NAME]:W,[E.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:J?.key?String(J.key):void 0,[E.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:J?.key&&J.value===null?!0:void 0,[E.ATTR_MESSAGING_KAFKA_OFFSET]:J?.offset},links:X?[X]:[]},$),{consumerHook:z}=this.getConfig();if(z&&J)(0,$9.safeExecuteInTheMiddle)(()=>z(K,{topic:Z,message:J}),(G)=>{if(G)this._diag.error("consumerHook error",G)},!0);return K}_startProducerSpan(Z,J){let Q=this.tracer.startSpan(`send ${Z}`,{kind:X0.SpanKind.PRODUCER,attributes:{[E.ATTR_MESSAGING_SYSTEM]:E.MESSAGING_SYSTEM_VALUE_KAFKA,[E.ATTR_MESSAGING_DESTINATION_NAME]:Z,[E.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]:J.key?String(J.key):void 0,[E.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]:J.key&&J.value===null?!0:void 0,[E.ATTR_MESSAGING_DESTINATION_PARTITION_ID]:J.partition!==void 0?String(J.partition):void 0,[E.ATTR_MESSAGING_OPERATION_NAME]:"send",[E.ATTR_MESSAGING_OPERATION_TYPE]:E.MESSAGING_OPERATION_TYPE_VALUE_SEND}});J.headers=J.headers??{},X0.propagation.inject(X0.trace.setSpan(X0.context.active(),Q),J.headers);let{producerHook:$}=this.getConfig();if($)(0,$9.safeExecuteInTheMiddle)(()=>$(Q,{topic:Z,message:J}),(X)=>{if(X)this._diag.error("producerHook error",X)},!0);return Q}}sm.KafkaJsInstrumentation=am});var em=w((hB)=>{Object.defineProperty(hB,"__esModule",{value:!0});hB.KafkaJsInstrumentation=void 0;var lM0=tm();Object.defineProperty(hB,"KafkaJsInstrumentation",{enumerable:!0,get:function(){return lM0.KafkaJsInstrumentation}})});var Wu=w((Xu)=>{Object.defineProperty(Xu,"__esModule",{value:!0});Xu.PACKAGE_NAME=Xu.PACKAGE_VERSION=void 0;Xu.PACKAGE_VERSION="0.57.0";Xu.PACKAGE_NAME="@opentelemetry/instrumentation-lru-memoizer"});var Fu=w((Hu)=>{Object.defineProperty(Hu,"__esModule",{value:!0});Hu.LruMemoizerInstrumentation=void 0;var Ku=C(),zu=c(),Gu=Wu();class Bu extends zu.InstrumentationBase{constructor(Z={}){super(Gu.PACKAGE_NAME,Gu.PACKAGE_VERSION,Z)}init(){return[new zu.InstrumentationNodeModuleDefinition("lru-memoizer",[">=1.3 <3"],(Z)=>{let J=function(){let Q=Z.apply(this,arguments);return function(){let $=[...arguments],X=$.pop(),Y=typeof X==="function"?Ku.context.bind(Ku.context.active(),X):X;return $.push(Y),Q.apply(this,$)}};return J.sync=Z.sync,J},void 0)]}}Hu.LruMemoizerInstrumentation=Bu});var wu=w((SB)=>{Object.defineProperty(SB,"__esModule",{value:!0});SB.LruMemoizerInstrumentation=void 0;var nM0=Fu();Object.defineProperty(SB,"LruMemoizerInstrumentation",{enumerable:!0,get:function(){return nM0.LruMemoizerInstrumentation}})});var Cu=w((Lu)=>{Object.defineProperty(Lu,"__esModule",{value:!0});Lu.METRIC_DB_CLIENT_CONNECTIONS_USAGE=Lu.DB_SYSTEM_VALUE_MONGODB=Lu.DB_SYSTEM_NAME_VALUE_MONGODB=Lu.ATTR_NET_PEER_PORT=Lu.ATTR_NET_PEER_NAME=Lu.ATTR_DB_SYSTEM=Lu.ATTR_DB_STATEMENT=Lu.ATTR_DB_OPERATION=Lu.ATTR_DB_NAME=Lu.ATTR_DB_MONGODB_COLLECTION=Lu.ATTR_DB_CONNECTION_STRING=void 0;Lu.ATTR_DB_CONNECTION_STRING="db.connection_string";Lu.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection";Lu.ATTR_DB_NAME="db.name";Lu.ATTR_DB_OPERATION="db.operation";Lu.ATTR_DB_STATEMENT="db.statement";Lu.ATTR_DB_SYSTEM="db.system";Lu.ATTR_NET_PEER_NAME="net.peer.name";Lu.ATTR_NET_PEER_PORT="net.peer.port";Lu.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb";Lu.DB_SYSTEM_VALUE_MONGODB="mongodb";Lu.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"});var ku=w((Pu)=>{Object.defineProperty(Pu,"__esModule",{value:!0});Pu.MongodbCommandType=void 0;var KR0;(function(Z){Z.CREATE_INDEXES="createIndexes",Z.FIND_AND_MODIFY="findAndModify",Z.IS_MASTER="isMaster",Z.COUNT="count",Z.AGGREGATE="aggregate",Z.UNKNOWN="unknown"})(KR0=Pu.MongodbCommandType||(Pu.MongodbCommandType={}))});var Au=w((Mu)=>{Object.defineProperty(Mu,"__esModule",{value:!0});Mu.PACKAGE_NAME=Mu.PACKAGE_VERSION=void 0;Mu.PACKAGE_VERSION="0.66.0";Mu.PACKAGE_NAME="@opentelemetry/instrumentation-mongodb"});var Eu=w((Tu)=>{Object.defineProperty(Tu,"__esModule",{value:!0});Tu.MongoDBInstrumentation=void 0;var V0=C(),e=c(),FZ=s(),x6=Cu(),B1=ku(),Iu=Au(),Nu={requireParentSpan:!0};class vB extends e.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(Z={}){super(Iu.PACKAGE_NAME,Iu.PACKAGE_VERSION,{...Nu,...Z});this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,e.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,e.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(Z={}){super.setConfig({...Nu,...Z})}_updateMetricInstruments(){this._connectionsUsage=this.meter.createUpDownCounter(x6.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(Z,J,Q){this._connectionsUsage?.add(Z,{"pool.name":J,state:Q})}init(){let{v3PatchConnection:Z,v3UnpatchConnection:J}=this._getV3ConnectionPatches(),{v4PatchConnect:Q,v4UnpatchConnect:$}=this._getV4ConnectPatches(),{v4PatchConnectionCallback:X,v4PatchConnectionPromise:Y,v4UnpatchConnection:W}=this._getV4ConnectionPatches(),{v4PatchConnectionPool:K,v4UnpatchConnectionPool:z}=this._getV4ConnectionPoolPatches(),{v4PatchSessions:G,v4UnpatchSessions:H}=this._getV4SessionsPatches();return[new e.InstrumentationNodeModuleDefinition("mongodb",[">=3.3.0 <4"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/core/wireprotocol/index.js",[">=3.3.0 <4"],Z,J)]),new e.InstrumentationNodeModuleDefinition("mongodb",[">=4.0.0 <8"],void 0,void 0,[new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=4.0.0 <6.4"],X,W),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection.js",[">=6.4.0 <8"],Y,W),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connection_pool.js",[">=4.0.0 <6.4"],K,z),new e.InstrumentationNodeModuleFile("mongodb/lib/cmap/connect.js",[">=4.0.0 <8"],Q,$),new e.InstrumentationNodeModuleFile("mongodb/lib/sessions.js",[">=4.0.0 <8"],G,H)])]}_getV3ConnectionPatches(){return{v3PatchConnection:(Z)=>{if((0,e.isWrapped)(Z.insert))this._unwrap(Z,"insert");if(this._wrap(Z,"insert",this._getV3PatchOperation("insert")),(0,e.isWrapped)(Z.remove))this._unwrap(Z,"remove");if(this._wrap(Z,"remove",this._getV3PatchOperation("remove")),(0,e.isWrapped)(Z.update))this._unwrap(Z,"update");if(this._wrap(Z,"update",this._getV3PatchOperation("update")),(0,e.isWrapped)(Z.command))this._unwrap(Z,"command");if(this._wrap(Z,"command",this._getV3PatchCommand()),(0,e.isWrapped)(Z.query))this._unwrap(Z,"query");if(this._wrap(Z,"query",this._getV3PatchFind()),(0,e.isWrapped)(Z.getMore))this._unwrap(Z,"getMore");return this._wrap(Z,"getMore",this._getV3PatchCursor()),Z},v3UnpatchConnection:(Z)=>{if(Z===void 0)return;this._unwrap(Z,"insert"),this._unwrap(Z,"remove"),this._unwrap(Z,"update"),this._unwrap(Z,"command"),this._unwrap(Z,"query"),this._unwrap(Z,"getMore")}}}_getV4SessionsPatches(){return{v4PatchSessions:(Z)=>{if((0,e.isWrapped)(Z.acquire))this._unwrap(Z,"acquire");if(this._wrap(Z.ServerSessionPool.prototype,"acquire",this._getV4AcquireCommand()),(0,e.isWrapped)(Z.release))this._unwrap(Z,"release");return this._wrap(Z.ServerSessionPool.prototype,"release",this._getV4ReleaseCommand()),Z},v4UnpatchSessions:(Z)=>{if(Z===void 0)return;if((0,e.isWrapped)(Z.acquire))this._unwrap(Z,"acquire");if((0,e.isWrapped)(Z.release))this._unwrap(Z,"release")}}}_getV4AcquireCommand(){let Z=this;return(J)=>{return function(){let $=this.sessions.length,X=J.call(this),Y=this.sessions.length;if($===Y)Z._connCountAdd(1,Z._poolName,"used");else if($-1===Y)Z._connCountAdd(-1,Z._poolName,"idle"),Z._connCountAdd(1,Z._poolName,"used");return X}}}_getV4ReleaseCommand(){let Z=this;return(J)=>{return function($){let X=J.call(this,$);return Z._connCountAdd(-1,Z._poolName,"used"),Z._connCountAdd(1,Z._poolName,"idle"),X}}}_getV4ConnectionPoolPatches(){return{v4PatchConnectionPool:(Z)=>{let J=Z.ConnectionPool.prototype;if((0,e.isWrapped)(J.checkOut))this._unwrap(J,"checkOut");return this._wrap(J,"checkOut",this._getV4ConnectionPoolCheckOut()),Z},v4UnpatchConnectionPool:(Z)=>{if(Z===void 0)return;this._unwrap(Z.ConnectionPool.prototype,"checkOut")}}}_getV4ConnectPatches(){return{v4PatchConnect:(Z)=>{if((0,e.isWrapped)(Z.connect))this._unwrap(Z,"connect");return this._wrap(Z,"connect",this._getV4ConnectCommand()),Z},v4UnpatchConnect:(Z)=>{if(Z===void 0)return;this._unwrap(Z,"connect")}}}_getV4ConnectionPoolCheckOut(){return(Z)=>{return function(Q){let $=V0.context.bind(V0.context.active(),Q);return Z.call(this,$)}}}_getV4ConnectCommand(){let Z=this;return(J)=>{return function($,X){if(J.length===1){let W=J.call(this,$);if(W&&typeof W.then==="function")W.then(()=>Z.setPoolName($),()=>{return});return W}let Y=function(W,K){if(W||!K){X(W,K);return}Z.setPoolName($),X(W,K)};return J.call(this,$,Y)}}}_getV4ConnectionPatches(){return{v4PatchConnectionCallback:(Z)=>{if((0,e.isWrapped)(Z.Connection.prototype.command))this._unwrap(Z.Connection.prototype,"command");return this._wrap(Z.Connection.prototype,"command",this._getV4PatchCommandCallback()),Z},v4PatchConnectionPromise:(Z)=>{if((0,e.isWrapped)(Z.Connection.prototype.command))this._unwrap(Z.Connection.prototype,"command");return this._wrap(Z.Connection.prototype,"command",this._getV4PatchCommandPromise()),Z},v4UnpatchConnection:(Z)=>{if(Z===void 0)return;this._unwrap(Z.Connection.prototype,"command")}}}_getV3PatchOperation(Z){let J=this;return(Q)=>{return function(X,Y,W,K,z){let G=V0.trace.getSpan(V0.context.active()),H=J._checkSkipInstrumentation(G),B=typeof K==="function"?K:z;if(H||typeof B!=="function"||typeof W!=="object")if(typeof K==="function")return Q.call(this,X,Y,W,K);else return Q.call(this,X,Y,W,K,z);let V=J._getV3SpanAttributes(Y,X,W[0],Z),F=J._spanNameFromAttrs(V),D=J.tracer.startSpan(F,{kind:V0.SpanKind.CLIENT,attributes:V}),U=J._patchEnd(D,B);if(typeof K==="function")return Q.call(this,X,Y,W,U);else return Q.call(this,X,Y,W,K,U)}}}_getV3PatchCommand(){let Z=this;return(J)=>{return function($,X,Y,W,K){let z=V0.trace.getSpan(V0.context.active()),G=Z._checkSkipInstrumentation(z),H=typeof W==="function"?W:K;if(G||typeof H!=="function"||typeof Y!=="object")if(typeof W==="function")return J.call(this,$,X,Y,W);else return J.call(this,$,X,Y,W,K);let B=vB._getCommandType(Y),V=B===B1.MongodbCommandType.UNKNOWN?void 0:B,F=Z._getV3SpanAttributes(X,$,Y,V),D=Z._spanNameFromAttrs(F),U=Z.tracer.startSpan(D,{kind:V0.SpanKind.CLIENT,attributes:F}),j=Z._patchEnd(U,H);if(typeof W==="function")return J.call(this,$,X,Y,j);else return J.call(this,$,X,Y,W,j)}}}_getV4PatchCommandCallback(){let Z=this;return(J)=>{return function($,X,Y,W){let K=V0.trace.getSpan(V0.context.active()),z=Z._checkSkipInstrumentation(K),G=W,H=Object.keys(X)[0];if(typeof X!=="object"||X.ismaster||X.hello)return J.call(this,$,X,Y,W);let B=void 0;if(!z){let F=Z._getV4SpanAttributes(this,$,X,H),D=Z._spanNameFromAttrs(F);B=Z.tracer.startSpan(D,{kind:V0.SpanKind.CLIENT,attributes:F})}let V=Z._patchEnd(B,G,this.id,H);return J.call(this,$,X,Y,V)}}}_getV4PatchCommandPromise(){let Z=this;return(J)=>{return function(...$){let[X,Y]=$,W=V0.trace.getSpan(V0.context.active()),K=Z._checkSkipInstrumentation(W),z=Object.keys(Y)[0],G=()=>{return};if(typeof Y!=="object"||Y.ismaster||Y.hello)return J.apply(this,$);let H=void 0;if(!K){let F=Z._getV4SpanAttributes(this,X,Y,z),D=Z._spanNameFromAttrs(F);H=Z.tracer.startSpan(D,{kind:V0.SpanKind.CLIENT,attributes:F})}let B=Z._patchEnd(H,G,this.id,z),V=J.apply(this,$);return V.then((F)=>B(null,F),(F)=>B(F)),V}}}_getV3PatchFind(){let Z=this;return(J)=>{return function($,X,Y,W,K,z){let G=V0.trace.getSpan(V0.context.active()),H=Z._checkSkipInstrumentation(G),B=typeof K==="function"?K:z;if(H||typeof B!=="function"||typeof Y!=="object")if(typeof K==="function")return J.call(this,$,X,Y,W,K);else return J.call(this,$,X,Y,W,K,z);let V=Z._getV3SpanAttributes(X,$,Y,"find"),F=Z._spanNameFromAttrs(V),D=Z.tracer.startSpan(F,{kind:V0.SpanKind.CLIENT,attributes:V}),U=Z._patchEnd(D,B);if(typeof K==="function")return J.call(this,$,X,Y,W,U);else return J.call(this,$,X,Y,W,K,U)}}}_getV3PatchCursor(){let Z=this;return(J)=>{return function($,X,Y,W,K,z){let G=V0.trace.getSpan(V0.context.active()),H=Z._checkSkipInstrumentation(G),B=typeof K==="function"?K:z;if(H||typeof B!=="function")if(typeof K==="function")return J.call(this,$,X,Y,W,K);else return J.call(this,$,X,Y,W,K,z);let V=Z._getV3SpanAttributes(X,$,Y.cmd,"getMore"),F=Z._spanNameFromAttrs(V),D=Z.tracer.startSpan(F,{kind:V0.SpanKind.CLIENT,attributes:V}),U=Z._patchEnd(D,B);if(typeof K==="function")return J.call(this,$,X,Y,W,U);else return J.call(this,$,X,Y,W,K,U)}}}static _getCommandType(Z){if(Z.createIndexes!==void 0)return B1.MongodbCommandType.CREATE_INDEXES;else if(Z.findandmodify!==void 0)return B1.MongodbCommandType.FIND_AND_MODIFY;else if(Z.ismaster!==void 0)return B1.MongodbCommandType.IS_MASTER;else if(Z.count!==void 0)return B1.MongodbCommandType.COUNT;else if(Z.aggregate!==void 0)return B1.MongodbCommandType.AGGREGATE;else return B1.MongodbCommandType.UNKNOWN}_getV4SpanAttributes(Z,J,Q,$){let X,Y;if(Z){let K=typeof Z.address==="string"?Z.address.split(":"):"";if(K.length===2)X=K[0],Y=K[1]}let W;if(Q?.documents&&Q.documents[0])W=Q.documents[0];else if(Q?.cursors)W=Q.cursors;else W=Q;return this._getSpanAttributes(J.db,J.collection,X,Y,W,$)}_getV3SpanAttributes(Z,J,Q,$){let X,Y;if(J&&J.s){if(X=J.s.options?.host??J.s.host,Y=(J.s.options?.port??J.s.port)?.toString(),X==null||Y==null){let G=J.description?.address;if(G){let H=G.split(":");X=H[0],Y=H[1]}}}let[W,K]=Z.toString().split("."),z=Q?.query??Q?.q??Q;return this._getSpanAttributes(W,K,X,Y,z,$)}_getSpanAttributes(Z,J,Q,$,X,Y){let W={};if(this._dbSemconvStability&e.SemconvStability.OLD)W[x6.ATTR_DB_SYSTEM]=x6.DB_SYSTEM_VALUE_MONGODB,W[x6.ATTR_DB_NAME]=Z,W[x6.ATTR_DB_MONGODB_COLLECTION]=J,W[x6.ATTR_DB_OPERATION]=Y,W[x6.ATTR_DB_CONNECTION_STRING]=`mongodb://${Q}:${$}/${Z}`;if(this._dbSemconvStability&e.SemconvStability.STABLE)W[FZ.ATTR_DB_SYSTEM_NAME]=x6.DB_SYSTEM_NAME_VALUE_MONGODB,W[FZ.ATTR_DB_NAMESPACE]=Z,W[FZ.ATTR_DB_OPERATION_NAME]=Y,W[FZ.ATTR_DB_COLLECTION_NAME]=J;if(Q&&$){if(this._netSemconvStability&e.SemconvStability.OLD)W[x6.ATTR_NET_PEER_NAME]=Q;if(this._netSemconvStability&e.SemconvStability.STABLE)W[FZ.ATTR_SERVER_ADDRESS]=Q;let K=parseInt($,10);if(!isNaN(K)){if(this._netSemconvStability&e.SemconvStability.OLD)W[x6.ATTR_NET_PEER_PORT]=K;if(this._netSemconvStability&e.SemconvStability.STABLE)W[FZ.ATTR_SERVER_PORT]=K}}if(X){let{dbStatementSerializer:K}=this.getConfig(),z=typeof K==="function"?K:this._defaultDbStatementSerializer.bind(this);(0,e.safeExecuteInTheMiddle)(()=>{let G=z(X);if(this._dbSemconvStability&e.SemconvStability.OLD)W[x6.ATTR_DB_STATEMENT]=G;if(this._dbSemconvStability&e.SemconvStability.STABLE)W[FZ.ATTR_DB_QUERY_TEXT]=G},(G)=>{if(G)this._diag.error("Error running dbStatementSerializer hook",G)},!0)}return W}_spanNameFromAttrs(Z){let J;if(this._dbSemconvStability&e.SemconvStability.STABLE)J=[Z[FZ.ATTR_DB_OPERATION_NAME],Z[FZ.ATTR_DB_COLLECTION_NAME]].filter((Q)=>Q).join(" ")||x6.DB_SYSTEM_NAME_VALUE_MONGODB;else J=`mongodb.${Z[x6.ATTR_DB_OPERATION]||"command"}`;return J}_getDefaultDbStatementReplacer(){let Z=new WeakSet;return(J,Q)=>{if(typeof Q!=="object"||!Q)return"?";if(Z.has(Q))return"[Circular]";return Z.add(Q),Q}}_defaultDbStatementSerializer(Z){let{enhancedDatabaseReporting:J}=this.getConfig();if(J)return JSON.stringify(Z);return JSON.stringify(Z,this._getDefaultDbStatementReplacer())}_handleExecutionResult(Z,J){let{responseHook:Q}=this.getConfig();if(typeof Q==="function")(0,e.safeExecuteInTheMiddle)(()=>{Q(Z,{data:J})},($)=>{if($)this._diag.error("Error running response hook",$)},!0)}_patchEnd(Z,J,Q,$){let X=V0.context.active(),Y=this,W=!1;return function(...z){if(!W){W=!0;let G=z[0];if(Z){if(G instanceof Error)Z.setStatus({code:V0.SpanStatusCode.ERROR,message:G.message});else{let H=z[1];Y._handleExecutionResult(Z,H)}Z.end()}if($==="endSessions")Y._connCountAdd(-1,Y._poolName,"idle")}return V0.context.with(X,()=>{return J.apply(this,z)})}}setPoolName(Z){let J=Z.hostAddress?.host,Q=Z.hostAddress?.port,$=Z.dbName,X=`mongodb://${J}:${Q}/${$}`;this._poolName=X}_checkSkipInstrumentation(Z){return this.getConfig().requireParentSpan===!0&&Z===void 0}}Tu.MongoDBInstrumentation=vB});var hu=w((yu)=>{Object.defineProperty(yu,"__esModule",{value:!0});yu.MongodbCommandType=void 0;var GR0;(function(Z){Z.CREATE_INDEXES="createIndexes",Z.FIND_AND_MODIFY="findAndModify",Z.IS_MASTER="isMaster",Z.COUNT="count",Z.UNKNOWN="unknown"})(GR0=yu.MongodbCommandType||(yu.MongodbCommandType={}))});var Su=w((U3)=>{Object.defineProperty(U3,"__esModule",{value:!0});U3.MongodbCommandType=U3.MongoDBInstrumentation=void 0;var BR0=Eu();Object.defineProperty(U3,"MongoDBInstrumentation",{enumerable:!0,get:function(){return BR0.MongoDBInstrumentation}});var HR0=hu();Object.defineProperty(U3,"MongodbCommandType",{enumerable:!0,get:function(){return HR0.MongodbCommandType}})});var gB=w((gu)=>{Object.defineProperty(gu,"__esModule",{value:!0});gu.DB_SYSTEM_NAME_VALUE_MONGODB=gu.ATTR_NET_PEER_PORT=gu.ATTR_NET_PEER_NAME=gu.ATTR_DB_USER=gu.ATTR_DB_SYSTEM=gu.ATTR_DB_STATEMENT=gu.ATTR_DB_OPERATION=gu.ATTR_DB_NAME=gu.ATTR_DB_MONGODB_COLLECTION=void 0;gu.ATTR_DB_MONGODB_COLLECTION="db.mongodb.collection";gu.ATTR_DB_NAME="db.name";gu.ATTR_DB_OPERATION="db.operation";gu.ATTR_DB_STATEMENT="db.statement";gu.ATTR_DB_SYSTEM="db.system";gu.ATTR_DB_USER="db.user";gu.ATTR_NET_PEER_NAME="net.peer.name";gu.ATTR_NET_PEER_PORT="net.peer.port";gu.DB_SYSTEM_NAME_VALUE_MONGODB="mongodb"});var pu=w((uu)=>{Object.defineProperty(uu,"__esModule",{value:!0});uu.handleCallbackResponse=uu.handlePromiseResponse=uu.getAttributesFromCollection=void 0;var cu=C(),ZJ=c(),e4=gB(),j3=s();function AR0(Z,J,Q){let $={};if(J&ZJ.SemconvStability.OLD)$[e4.ATTR_DB_MONGODB_COLLECTION]=Z.name,$[e4.ATTR_DB_NAME]=Z.conn.name,$[e4.ATTR_DB_USER]=Z.conn.user;if(J&ZJ.SemconvStability.STABLE)$[j3.ATTR_DB_COLLECTION_NAME]=Z.name,$[j3.ATTR_DB_NAMESPACE]=Z.conn.name;if(Q&ZJ.SemconvStability.OLD)$[e4.ATTR_NET_PEER_NAME]=Z.conn.host,$[e4.ATTR_NET_PEER_PORT]=Z.conn.port;if(Q&ZJ.SemconvStability.STABLE)$[j3.ATTR_SERVER_ADDRESS]=Z.conn.host,$[j3.ATTR_SERVER_PORT]=Z.conn.port;return $}uu.getAttributesFromCollection=AR0;function mu(Z,J={}){Z.recordException(J),Z.setStatus({code:cu.SpanStatusCode.ERROR,message:`${J.message} ${J.code?` +Mongoose Error Code: ${J.code}`:""}`})}function dB(Z,J,Q,$=void 0){if(!Q)return;(0,ZJ.safeExecuteInTheMiddle)(()=>Q(Z,{moduleVersion:$,response:J}),(X)=>{if(X)cu.diag.error("mongoose instrumentation: responseHook error",X)},!0)}function IR0(Z,J,Q,$=void 0){if(!(Z instanceof Promise))return dB(J,Z,Q,$),J.end(),Z;return Z.then((X)=>{return dB(J,X,Q,$),X}).catch((X)=>{throw mu(J,X),X}).finally(()=>J.end())}uu.handlePromiseResponse=IR0;function NR0(Z,J,Q,$,X,Y,W=void 0){let K=0;if(X.length===2)K=1;else if(X.length===3)K=2;return X[K]=(z,G)=>{if(z)mu($,z);else dB($,G,Y,W);return $.end(),Z(z,G)},J.apply(Q,X)}uu.handleCallbackResponse=NR0});var nu=w((iu)=>{Object.defineProperty(iu,"__esModule",{value:!0});iu.PACKAGE_NAME=iu.PACKAGE_VERSION=void 0;iu.PACKAGE_VERSION="0.59.0";iu.PACKAGE_NAME="@opentelemetry/instrumentation-mongoose"});var Ql=w((Zl)=>{Object.defineProperty(Zl,"__esModule",{value:!0});Zl.MongooseInstrumentation=Zl._ALREADY_INSTRUMENTED=Zl._STORED_PARENT_SPAN=void 0;var E0=C(),yR0=Q0(),cB=pu(),i0=c(),au=nu(),Q7=gB(),H1=s(),q3=["deleteOne","deleteMany","find","findOne","estimatedDocumentCount","countDocuments","distinct","where","$where","findOneAndUpdate","findOneAndDelete","findOneAndReplace"],hR0=["remove","count","findOneAndRemove",...q3],SR0=["count","findOneAndRemove",...q3],_R0=[...q3];function su(Z){if(!Z)return q3;else if(Z.startsWith("6.")||Z.startsWith("5."))return hR0;else if(Z.startsWith("7."))return SR0;else return _R0}function ru(Z){return Z&&(Z.startsWith("5.")||Z.startsWith("6."))||!1}function tu(Z){if(!Z||!Z.startsWith("8."))return!1;return parseInt(Z.split(".")[1],10)>=21}Zl._STORED_PARENT_SPAN=Symbol("stored-parent-span");Zl._ALREADY_INSTRUMENTED=Symbol("already-instrumented");class eu extends i0.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(Z={}){super(au.PACKAGE_NAME,au.PACKAGE_VERSION,Z);this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,i0.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,i0.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new i0.InstrumentationNodeModuleDefinition("mongoose",[">=5.9.7 <10"],this.patch.bind(this),this.unpatch.bind(this))}patch(Z,J){let Q=Z[Symbol.toStringTag]==="Module"?Z.default:Z;if(this._wrap(Q.Model.prototype,"save",this.patchOnModelMethods("save",J)),Q.Model.prototype.$save=Q.Model.prototype.save,ru(J))this._wrap(Q.Model.prototype,"remove",this.patchOnModelMethods("remove",J));if(tu(J))this._wrap(Q.Model.prototype,"updateOne",this._patchDocumentUpdateMethods("updateOne",J)),this._wrap(Q.Model.prototype,"deleteOne",this._patchDocumentUpdateMethods("deleteOne",J));return this._wrap(Q.Query.prototype,"exec",this.patchQueryExec(J)),this._wrap(Q.Aggregate.prototype,"exec",this.patchAggregateExec(J)),su(J).forEach((X)=>{this._wrap(Q.Query.prototype,X,this.patchAndCaptureSpanContext(X))}),this._wrap(Q.Model,"aggregate",this.patchModelAggregate()),this._wrap(Q.Model,"insertMany",this.patchModelStatic("insertMany",J)),this._wrap(Q.Model,"bulkWrite",this.patchModelStatic("bulkWrite",J)),Q}unpatch(Z,J){let Q=Z[Symbol.toStringTag]==="Module"?Z.default:Z,$=su(J);if(this._unwrap(Q.Model.prototype,"save"),Q.Model.prototype.$save=Q.Model.prototype.save,ru(J))this._unwrap(Q.Model.prototype,"remove");if(tu(J))this._unwrap(Q.Model.prototype,"updateOne"),this._unwrap(Q.Model.prototype,"deleteOne");this._unwrap(Q.Query.prototype,"exec"),this._unwrap(Q.Aggregate.prototype,"exec"),$.forEach((X)=>{this._unwrap(Q.Query.prototype,X)}),this._unwrap(Q.Model,"aggregate"),this._unwrap(Q.Model,"insertMany"),this._unwrap(Q.Model,"bulkWrite")}patchAggregateExec(Z){let J=this;return(Q)=>{return function(X){if(J.getConfig().requireParentSpan&&E0.trace.getSpan(E0.context.active())===void 0)return Q.apply(this,arguments);let Y=this[Zl._STORED_PARENT_SPAN],W={},{dbStatementSerializer:K}=J.getConfig();if(K){let G=K("aggregate",{options:this.options,aggregatePipeline:this._pipeline});if(J._dbSemconvStability&i0.SemconvStability.OLD)W[Q7.ATTR_DB_STATEMENT]=G;if(J._dbSemconvStability&i0.SemconvStability.STABLE)W[H1.ATTR_DB_QUERY_TEXT]=G}let z=J._startSpan(this._model.collection,this._model?.modelName,"aggregate",W,Y);return J._handleResponse(z,Q,this,arguments,X,Z)}}}patchQueryExec(Z){let J=this;return(Q)=>{return function(X){if(this[Zl._ALREADY_INSTRUMENTED])return Q.apply(this,arguments);if(J.getConfig().requireParentSpan&&E0.trace.getSpan(E0.context.active())===void 0)return Q.apply(this,arguments);let Y=this[Zl._STORED_PARENT_SPAN],W={},{dbStatementSerializer:K}=J.getConfig();if(K){let G=K(this.op,{condition:this.getFilter?.()??this._conditions,updates:this._update,options:this.getOptions?.()??this.options,fields:this._fields});if(J._dbSemconvStability&i0.SemconvStability.OLD)W[Q7.ATTR_DB_STATEMENT]=G;if(J._dbSemconvStability&i0.SemconvStability.STABLE)W[H1.ATTR_DB_QUERY_TEXT]=G}let z=J._startSpan(this.mongooseCollection,this.model.modelName,this.op,W,Y);return J._handleResponse(z,Q,this,arguments,X,Z)}}}patchOnModelMethods(Z,J){let Q=this;return($)=>{return function(Y,W){if(Q.getConfig().requireParentSpan&&E0.trace.getSpan(E0.context.active())===void 0)return $.apply(this,arguments);let K={document:this};if(Y&&!(Y instanceof Function))K.options=Y;let z={},{dbStatementSerializer:G}=Q.getConfig();if(G){let B=G(Z,K);if(Q._dbSemconvStability&i0.SemconvStability.OLD)z[Q7.ATTR_DB_STATEMENT]=B;if(Q._dbSemconvStability&i0.SemconvStability.STABLE)z[H1.ATTR_DB_QUERY_TEXT]=B}let H=Q._startSpan(this.constructor.collection,this.constructor.modelName,Z,z);if(Y instanceof Function)W=Y,Y=void 0;return Q._handleResponse(H,$,this,arguments,W,J)}}}_patchDocumentUpdateMethods(Z,J){let Q=this;return($)=>{return function(Y,W,K){if(Q.getConfig().requireParentSpan&&E0.trace.getSpan(E0.context.active())===void 0)return $.apply(this,arguments);let z=K,G=Y,H=W;if(typeof Y==="function")z=Y,G=void 0,H=void 0;else if(typeof W==="function")z=W,H=void 0;let B={},V=Q.getConfig().dbStatementSerializer;if(V){let U=V(Z,{condition:{_id:this._id},updates:G,options:H});if(Q._dbSemconvStability&i0.SemconvStability.OLD)B[Q7.ATTR_DB_STATEMENT]=U;if(Q._dbSemconvStability&i0.SemconvStability.STABLE)B[H1.ATTR_DB_QUERY_TEXT]=U}let F=Q._startSpan(this.constructor.collection,this.constructor.modelName,Z,B),D=Q._handleResponse(F,$,this,arguments,z,J);if(D&&typeof D==="object")D[Zl._ALREADY_INSTRUMENTED]=!0;return D}}}patchModelStatic(Z,J){let Q=this;return($)=>{return function(Y,W,K){if(Q.getConfig().requireParentSpan&&E0.trace.getSpan(E0.context.active())===void 0)return $.apply(this,arguments);if(typeof W==="function")K=W,W=void 0;let z={};switch(Z){case"insertMany":z.documents=Y;break;case"bulkWrite":z.operations=Y;break;default:z.document=Y;break}if(W!==void 0)z.options=W;let G={},{dbStatementSerializer:H}=Q.getConfig();if(H){let V=H(Z,z);if(Q._dbSemconvStability&i0.SemconvStability.OLD)G[Q7.ATTR_DB_STATEMENT]=V;if(Q._dbSemconvStability&i0.SemconvStability.STABLE)G[H1.ATTR_DB_QUERY_TEXT]=V}let B=Q._startSpan(this.collection,this.modelName,Z,G);return Q._handleResponse(B,$,this,arguments,K,J)}}}patchModelAggregate(){let Z=this;return(J)=>{return function(){let $=E0.trace.getSpan(E0.context.active()),X=Z._callOriginalFunction(()=>J.apply(this,arguments));if(X)X[Zl._STORED_PARENT_SPAN]=$;return X}}}patchAndCaptureSpanContext(Z){let J=this;return(Q)=>{return function(){return this[Zl._STORED_PARENT_SPAN]=E0.trace.getSpan(E0.context.active()),J._callOriginalFunction(()=>Q.apply(this,arguments))}}}_startSpan(Z,J,Q,$,X){let Y={...$,...(0,cB.getAttributesFromCollection)(Z,this._dbSemconvStability,this._netSemconvStability)};if(this._dbSemconvStability&i0.SemconvStability.OLD)Y[Q7.ATTR_DB_OPERATION]=Q,Y[Q7.ATTR_DB_SYSTEM]="mongoose";if(this._dbSemconvStability&i0.SemconvStability.STABLE)Y[H1.ATTR_DB_OPERATION_NAME]=Q,Y[H1.ATTR_DB_SYSTEM_NAME]=Q7.DB_SYSTEM_NAME_VALUE_MONGODB;let W=this._dbSemconvStability&i0.SemconvStability.STABLE?`${Q} ${Z.name}`:`mongoose.${J}.${Q}`;return this.tracer.startSpan(W,{kind:E0.SpanKind.CLIENT,attributes:Y},X?E0.trace.setSpan(E0.context.active(),X):void 0)}_handleResponse(Z,J,Q,$,X,Y=void 0){let W=this;if(X instanceof Function)return W._callOriginalFunction(()=>(0,cB.handleCallbackResponse)(X,J,Q,Z,$,W.getConfig().responseHook,Y));else{let K=W._callOriginalFunction(()=>J.apply(Q,$));return(0,cB.handlePromiseResponse)(K,Z,W.getConfig().responseHook,Y)}}_callOriginalFunction(Z){if(this.getConfig().suppressInternalInstrumentation)return E0.context.with((0,yR0.suppressTracing)(E0.context.active()),Z);else return Z()}}Zl.MongooseInstrumentation=eu});var $l=w((uB)=>{Object.defineProperty(uB,"__esModule",{value:!0});uB.MongooseInstrumentation=void 0;var vR0=Ql();Object.defineProperty(uB,"MongooseInstrumentation",{enumerable:!0,get:function(){return vR0.MongooseInstrumentation}})});var Bl=w((zl)=>{Object.defineProperty(zl,"__esModule",{value:!0});zl.METRIC_DB_CLIENT_CONNECTIONS_USAGE=zl.DB_SYSTEM_VALUE_MYSQL=zl.ATTR_NET_PEER_PORT=zl.ATTR_NET_PEER_NAME=zl.ATTR_DB_USER=zl.ATTR_DB_SYSTEM=zl.ATTR_DB_STATEMENT=zl.ATTR_DB_NAME=zl.ATTR_DB_CONNECTION_STRING=void 0;zl.ATTR_DB_CONNECTION_STRING="db.connection_string";zl.ATTR_DB_NAME="db.name";zl.ATTR_DB_STATEMENT="db.statement";zl.ATTR_DB_SYSTEM="db.system";zl.ATTR_DB_USER="db.user";zl.ATTR_NET_PEER_NAME="net.peer.name";zl.ATTR_NET_PEER_PORT="net.peer.port";zl.DB_SYSTEM_VALUE_MYSQL="mysql";zl.METRIC_DB_CLIENT_CONNECTIONS_USAGE="db.client.connections.usage"});var Vl=w((Hl)=>{Object.defineProperty(Hl,"__esModule",{value:!0});Hl.AttributeNames=void 0;var oR0;(function(Z){Z.MYSQL_VALUES="db.mysql.values"})(oR0=Hl.AttributeNames||(Hl.AttributeNames={}))});var Dl=w((Fl)=>{Object.defineProperty(Fl,"__esModule",{value:!0});Fl.getPoolNameOld=Fl.arrayStringifyHelper=Fl.getSpanName=Fl.getDbValues=Fl.getDbQueryText=Fl.getJDBCString=Fl.getConfig=void 0;function nR0(Z){let{host:J,port:Q,database:$,user:X}=Z&&Z.connectionConfig||Z||{};return{host:J,port:Q,database:$,user:X}}Fl.getConfig=nR0;function aR0(Z,J,Q){let $=`jdbc:mysql://${Z||"localhost"}`;if(typeof J==="number")$+=`:${J}`;if(typeof Q==="string")$+=`/${Q}`;return $}Fl.getJDBCString=aR0;function sR0(Z){if(typeof Z==="string")return Z;else return Z.sql}Fl.getDbQueryText=sR0;function rR0(Z,J){if(typeof Z==="string")return pB(J);else return pB(J||Z.values)}Fl.getDbValues=rR0;function tR0(Z){let J=typeof Z==="object"?Z.sql:Z,Q=J?.indexOf(" ");if(typeof Q==="number"&&Q!==-1)return J?.substring(0,Q);return J}Fl.getSpanName=tR0;function pB(Z){if(Z)return`[${Z.toString()}]`;return""}Fl.arrayStringifyHelper=pB;function eR0(Z){let J=Z.config.connectionConfig,Q="";if(Q+=J.host?`host: '${J.host}', `:"",Q+=J.port?`port: ${J.port}, `:"",Q+=J.database?`database: '${J.database}', `:"",Q+=J.user?`user: '${J.user}'`:"",!J.user)Q=Q.substring(0,Q.length-2);return Q.trim()}Fl.getPoolNameOld=eR0});var ql=w((Ul)=>{Object.defineProperty(Ul,"__esModule",{value:!0});Ul.PACKAGE_NAME=Ul.PACKAGE_VERSION=void 0;Ul.PACKAGE_VERSION="0.59.0";Ul.PACKAGE_NAME="@opentelemetry/instrumentation-mysql"});var kl=w((Cl)=>{Object.defineProperty(Cl,"__esModule",{value:!0});Cl.MySQLInstrumentation=void 0;var P6=C(),X9=c(),h8=s(),wZ=Bl(),KA0=Vl(),V1=Dl(),Ll=ql();class Ol extends X9.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(Z={}){super(Ll.PACKAGE_NAME,Ll.PACKAGE_VERSION,Z);this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,X9.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,X9.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._connectionsUsageOld=this.meter.createUpDownCounter(wZ.METRIC_DB_CLIENT_CONNECTIONS_USAGE,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"})}_connCountAdd(Z,J,Q){this._connectionsUsageOld?.add(Z,{state:Q,name:J})}init(){return[new X9.InstrumentationNodeModuleDefinition("mysql",[">=2.0.0 <3"],(Z)=>{if((0,X9.isWrapped)(Z.createConnection))this._unwrap(Z,"createConnection");if(this._wrap(Z,"createConnection",this._patchCreateConnection()),(0,X9.isWrapped)(Z.createPool))this._unwrap(Z,"createPool");if(this._wrap(Z,"createPool",this._patchCreatePool()),(0,X9.isWrapped)(Z.createPoolCluster))this._unwrap(Z,"createPoolCluster");return this._wrap(Z,"createPoolCluster",this._patchCreatePoolCluster()),Z},(Z)=>{if(Z===void 0)return;this._unwrap(Z,"createConnection"),this._unwrap(Z,"createPool"),this._unwrap(Z,"createPoolCluster")})]}_patchCreateConnection(){return(Z)=>{let J=this;return function($){let X=Z(...arguments);return J._wrap(X,"query",J._patchQuery(X)),X}}}_patchCreatePool(){return(Z)=>{let J=this;return function($){let X=Z(...arguments);return J._wrap(X,"query",J._patchQuery(X)),J._wrap(X,"getConnection",J._patchGetConnection(X)),J._wrap(X,"end",J._patchPoolEnd(X)),J._setPoolCallbacks(X,""),X}}}_patchPoolEnd(Z){return(J)=>{let Q=this;return function(X){let Y=Z._allConnections.length,W=Z._freeConnections.length,K=Y-W,z=(0,V1.getPoolNameOld)(Z);Q._connCountAdd(-K,z,"used"),Q._connCountAdd(-W,z,"idle"),J.apply(Z,arguments)}}}_patchCreatePoolCluster(){return(Z)=>{let J=this;return function($){let X=Z(...arguments);return J._wrap(X,"getConnection",J._patchGetConnection(X)),J._wrap(X,"add",J._patchAdd(X)),X}}}_patchAdd(Z){return(J)=>{let Q=this;return function(X,Y){if(!Q._enabled)return Q._unwrap(Z,"add"),J.apply(Z,arguments);J.apply(Z,arguments);let W=Z._nodes;if(W){let K=typeof X==="object"?"CLUSTER::"+Z._lastId:String(X),z=W[K].pool;Q._setPoolCallbacks(z,X)}}}}_patchGetConnection(Z){return(J)=>{let Q=this;return function(X,Y,W){if(!Q._enabled)return Q._unwrap(Z,"getConnection"),J.apply(Z,arguments);if(arguments.length===1&&typeof X==="function"){let K=Q._getConnectionCallbackPatchFn(X);return J.call(Z,K)}if(arguments.length===2&&typeof Y==="function"){let K=Q._getConnectionCallbackPatchFn(Y);return J.call(Z,X,K)}if(arguments.length===3&&typeof W==="function"){let K=Q._getConnectionCallbackPatchFn(W);return J.call(Z,X,Y,K)}return J.apply(Z,arguments)}}}_getConnectionCallbackPatchFn(Z){let J=this,Q=P6.context.active();return function($,X){if(X){if(!(0,X9.isWrapped)(X.query))J._wrap(X,"query",J._patchQuery(X))}if(typeof Z==="function")P6.context.with(Q,Z,this,$,X)}}_patchQuery(Z){return(J)=>{let Q=this;return function($,X,Y){if(!Q._enabled)return Q._unwrap(Z,"query"),J.apply(Z,arguments);let W={},{host:K,port:z,database:G,user:H}=(0,V1.getConfig)(Z.config),B=parseInt(z,10),V=(0,V1.getDbQueryText)($);if(Q._dbSemconvStability&X9.SemconvStability.OLD)W[wZ.ATTR_DB_SYSTEM]=wZ.DB_SYSTEM_VALUE_MYSQL,W[wZ.ATTR_DB_CONNECTION_STRING]=(0,V1.getJDBCString)(K,z,G),W[wZ.ATTR_DB_NAME]=G,W[wZ.ATTR_DB_USER]=H,W[wZ.ATTR_DB_STATEMENT]=V;if(Q._dbSemconvStability&X9.SemconvStability.STABLE)W[h8.ATTR_DB_SYSTEM_NAME]=h8.DB_SYSTEM_NAME_VALUE_MYSQL,W[h8.ATTR_DB_NAMESPACE]=G,W[h8.ATTR_DB_QUERY_TEXT]=V;if(Q._netSemconvStability&X9.SemconvStability.OLD){if(W[wZ.ATTR_NET_PEER_NAME]=K,!isNaN(B))W[wZ.ATTR_NET_PEER_PORT]=B}if(Q._netSemconvStability&X9.SemconvStability.STABLE){if(W[h8.ATTR_SERVER_ADDRESS]=K,!isNaN(B))W[h8.ATTR_SERVER_PORT]=B}let F=Q.tracer.startSpan((0,V1.getSpanName)($),{kind:P6.SpanKind.CLIENT,attributes:W});if(Q.getConfig().enhancedDatabaseReporting){let j;if(Array.isArray(X))j=X;else if(arguments[2])j=[X];F.setAttribute(KA0.AttributeNames.MYSQL_VALUES,(0,V1.getDbValues)($,j))}let D=Array.from(arguments).findIndex((j)=>typeof j==="function"),U=P6.context.active();if(D===-1){let j=P6.context.with(P6.trace.setSpan(P6.context.active(),F),()=>{return J.apply(Z,arguments)});return P6.context.bind(U,j),j.on("error",(L)=>F.setStatus({code:P6.SpanStatusCode.ERROR,message:L.message})).on("end",()=>{F.end()})}else return Q._wrap(arguments,D,Q._patchCallbackQuery(F,U)),P6.context.with(P6.trace.setSpan(P6.context.active(),F),()=>{return J.apply(Z,arguments)})}}}_patchCallbackQuery(Z,J){return(Q)=>{return function($,X,Y){if($)Z.setStatus({code:P6.SpanStatusCode.ERROR,message:$.message});return Z.end(),P6.context.with(J,()=>Q(...arguments))}}}_setPoolCallbacks(Z,J){let Q=J||(0,V1.getPoolNameOld)(Z);Z.on("connection",($)=>{this._connCountAdd(1,Q,"idle")}),Z.on("acquire",($)=>{this._connCountAdd(-1,Q,"idle"),this._connCountAdd(1,Q,"used")}),Z.on("release",($)=>{this._connCountAdd(1,Q,"idle"),this._connCountAdd(-1,Q,"used")})}}Cl.MySQLInstrumentation=Ol});var Ml=w((iB)=>{Object.defineProperty(iB,"__esModule",{value:!0});iB.MySQLInstrumentation=void 0;var zA0=kl();Object.defineProperty(iB,"MySQLInstrumentation",{enumerable:!0,get:function(){return zA0.MySQLInstrumentation}})});var oB=w((Tl)=>{Object.defineProperty(Tl,"__esModule",{value:!0});Tl.DB_SYSTEM_VALUE_MYSQL=Tl.ATTR_NET_PEER_PORT=Tl.ATTR_NET_PEER_NAME=Tl.ATTR_DB_USER=Tl.ATTR_DB_SYSTEM=Tl.ATTR_DB_STATEMENT=Tl.ATTR_DB_NAME=Tl.ATTR_DB_CONNECTION_STRING=void 0;Tl.ATTR_DB_CONNECTION_STRING="db.connection_string";Tl.ATTR_DB_NAME="db.name";Tl.ATTR_DB_STATEMENT="db.statement";Tl.ATTR_DB_SYSTEM="db.system";Tl.ATTR_DB_USER="db.user";Tl.ATTR_NET_PEER_NAME="net.peer.name";Tl.ATTR_NET_PEER_PORT="net.peer.port";Tl.DB_SYSTEM_VALUE_MYSQL="mysql"});var aB=w((El)=>{Object.defineProperty(El,"__esModule",{value:!0});El.addSqlCommenterComment=void 0;var nB=C(),qA0=Q0();function LA0(Z){let J=Z.indexOf("--");if(J>=0)return!0;if(Z.indexOf("/*")<0)return!1;let $=Z.indexOf("*/");return J<$}function OA0(Z){return encodeURIComponent(Z).replace(/[!'()*]/g,(J)=>`%${J.charCodeAt(0).toString(16).toUpperCase()}`)}function CA0(Z,J){if(typeof J!=="string"||J.length===0)return J;if(LA0(J))return J;let Q=new qA0.W3CTraceContextPropagator,$={};Q.inject(nB.trace.setSpan(nB.ROOT_CONTEXT,Z),$,nB.defaultTextMapSetter);let X=Object.keys($).sort();if(X.length===0)return J;let Y=X.map((W)=>{let K=OA0($[W]);return`${W}='${K}'`}).join(",");return`${J} /*${Y}*/`}El.addSqlCommenterComment=CA0});var _l=w((hl)=>{Object.defineProperty(hl,"__esModule",{value:!0});hl.getConnectionPrototypeToInstrument=hl.once=hl.getSpanName=hl.getQueryText=hl.getConnectionAttributes=void 0;var QJ=oB(),L3=c(),sB=s();function PA0(Z,J,Q){let{host:$,port:X,database:Y,user:W}=kA0(Z),K={};if(J&L3.SemconvStability.OLD)K[QJ.ATTR_DB_CONNECTION_STRING]=MA0($,X,Y),K[QJ.ATTR_DB_NAME]=Y,K[QJ.ATTR_DB_USER]=W;if(J&L3.SemconvStability.STABLE)K[sB.ATTR_DB_NAMESPACE]=Y;let z=parseInt(X,10);if(Q&L3.SemconvStability.OLD){if(K[QJ.ATTR_NET_PEER_NAME]=$,!isNaN(z))K[QJ.ATTR_NET_PEER_PORT]=z}if(Q&L3.SemconvStability.STABLE){if(K[sB.ATTR_SERVER_ADDRESS]=$,!isNaN(z))K[sB.ATTR_SERVER_PORT]=z}return K}hl.getConnectionAttributes=PA0;function kA0(Z){let{host:J,port:Q,database:$,user:X}=Z&&Z.connectionConfig||Z||{};return{host:J,port:Q,database:$,user:X}}function MA0(Z,J,Q){let $=`jdbc:mysql://${Z||"localhost"}`;if(typeof J==="number")$+=`:${J}`;if(typeof Q==="string")$+=`/${Q}`;return $}function RA0(Z,J,Q,$=!1,X=AA0){let[Y,W]=typeof Z==="string"?[Z,Q]:[Z.sql,IA0(Z)?Q||Z.values:Q];try{if($)return X(Y);else if(J&&W)return J(Y,W);else return Y}catch(K){return"Could not determine the query due to an error in masking or formatting"}}hl.getQueryText=RA0;function AA0(Z){return Z.replace(/\b\d+\b/g,"?").replace(/(["'])(?:(?=(\\?))\2.)*?\1/g,"?")}function IA0(Z){return"values"in Z}function NA0(Z){let J=typeof Z==="object"?Z.sql:Z,Q=J?.indexOf(" ");if(typeof Q==="number"&&Q!==-1)return J?.substring(0,Q);return J}hl.getSpanName=NA0;var TA0=(Z)=>{let J=!1;return(...Q)=>{if(J)return;return J=!0,Z(...Q)}};hl.once=TA0;function fA0(Z){let J=Z.prototype,Q=Object.getPrototypeOf(J);if(typeof Q?.query==="function"&&typeof Q?.execute==="function")return Q;return J}hl.getConnectionPrototypeToInstrument=fA0});var xl=w((vl)=>{Object.defineProperty(vl,"__esModule",{value:!0});vl.PACKAGE_NAME=vl.PACKAGE_VERSION=void 0;vl.PACKAGE_VERSION="0.59.0";vl.PACKAGE_NAME="@opentelemetry/instrumentation-mysql2"});var pl=w((ul)=>{Object.defineProperty(ul,"__esModule",{value:!0});ul.MySQL2Instrumentation=void 0;var gl=C(),k9=c(),rB=oB(),dl=aB(),S8=_l(),cl=xl(),tB=s(),eB=[">=1.4.2 <4"];class ml extends k9.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(Z={}){super(cl.PACKAGE_NAME,cl.PACKAGE_VERSION,Z);this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,k9.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,k9.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){let Z;function J(X){if(!Z&&X.format)Z=X.format}let Q=(X)=>{if((0,k9.isWrapped)(X.query))this._unwrap(X,"query");if(this._wrap(X,"query",this._patchQuery(Z,!1)),(0,k9.isWrapped)(X.execute))this._unwrap(X,"execute");this._wrap(X,"execute",this._patchQuery(Z,!0))},$=(X)=>{this._unwrap(X,"query"),this._unwrap(X,"execute")};return[new k9.InstrumentationNodeModuleDefinition("mysql2",eB,(X)=>{return J(X),X},()=>{},[new k9.InstrumentationNodeModuleFile("mysql2/promise.js",eB,(X)=>{return J(X),X},()=>{}),new k9.InstrumentationNodeModuleFile("mysql2/lib/connection.js",eB,(X)=>{let Y=(0,S8.getConnectionPrototypeToInstrument)(X);return Q(Y),X},(X)=>{if(X===void 0)return;let Y=(0,S8.getConnectionPrototypeToInstrument)(X);$(Y)})])]}_patchQuery(Z,J){return(Q)=>{let $=this;return function(X,Y,W){let K;if(Array.isArray(Y))K=Y;else if(arguments[2])K=[Y];let{maskStatement:z,maskStatementHook:G,responseHook:H}=$.getConfig(),B=(0,S8.getConnectionAttributes)(this.config,$._dbSemconvStability,$._netSemconvStability),V=(0,S8.getQueryText)(X,Z,K,z,G);if($._dbSemconvStability&k9.SemconvStability.OLD)B[rB.ATTR_DB_SYSTEM]=rB.DB_SYSTEM_VALUE_MYSQL,B[rB.ATTR_DB_STATEMENT]=V;if($._dbSemconvStability&k9.SemconvStability.STABLE)B[tB.ATTR_DB_SYSTEM_NAME]=tB.DB_SYSTEM_NAME_VALUE_MYSQL,B[tB.ATTR_DB_QUERY_TEXT]=V;let F=$.tracer.startSpan((0,S8.getSpanName)(X),{kind:gl.SpanKind.CLIENT,attributes:B});if(!J&&$.getConfig().addSqlCommenterCommentToQueries)arguments[0]=X=typeof X==="string"?(0,dl.addSqlCommenterComment)(F,X):Object.assign(X,{sql:(0,dl.addSqlCommenterComment)(F,X.sql)});let D=(0,S8.once)((U,j)=>{if(U)F.setStatus({code:gl.SpanStatusCode.ERROR,message:U.message});else if(typeof H==="function")(0,k9.safeExecuteInTheMiddle)(()=>{H(F,{queryResults:j})},(L)=>{if(L)$._diag.warn("Failed executing responseHook",L)},!0);F.end()});if(arguments.length===1){if(typeof X.onResult==="function")$._wrap(X,"onResult",$._patchCallbackQuery(D));let U=Q.apply(this,arguments);return U.once("error",(j)=>{D(j)}).once("result",(j)=>{D(void 0,j)}),U}if(typeof arguments[1]==="function")$._wrap(arguments,1,$._patchCallbackQuery(D));else if(typeof arguments[2]==="function")$._wrap(arguments,2,$._patchCallbackQuery(D));return Q.apply(this,arguments)}}}_patchCallbackQuery(Z){return(J)=>{return function(Q,$,X){return Z(Q,$),J(...arguments)}}}}ul.MySQL2Instrumentation=ml});var il=w((ZH)=>{Object.defineProperty(ZH,"__esModule",{value:!0});ZH.MySQL2Instrumentation=void 0;var vA0=pl();Object.defineProperty(ZH,"MySQL2Instrumentation",{enumerable:!0,get:function(){return vA0.MySQL2Instrumentation}})});var el=w((rl)=>{Object.defineProperty(rl,"__esModule",{value:!0});rl.DB_SYSTEM_VALUE_REDIS=rl.DB_SYSTEM_NAME_VALUE_REDIS=rl.ATTR_NET_PEER_PORT=rl.ATTR_NET_PEER_NAME=rl.ATTR_DB_SYSTEM=rl.ATTR_DB_STATEMENT=rl.ATTR_DB_CONNECTION_STRING=void 0;rl.ATTR_DB_CONNECTION_STRING="db.connection_string";rl.ATTR_DB_STATEMENT="db.statement";rl.ATTR_DB_SYSTEM="db.system";rl.ATTR_NET_PEER_NAME="net.peer.name";rl.ATTR_NET_PEER_PORT="net.peer.port";rl.DB_SYSTEM_NAME_VALUE_REDIS="redis";rl.DB_SYSTEM_VALUE_REDIS="redis"});var Qp=w((Zp)=>{Object.defineProperty(Zp,"__esModule",{value:!0});Zp.endSpan=void 0;var pA0=C(),iA0=(Z,J)=>{if(J)Z.recordException(J),Z.setStatus({code:pA0.SpanStatusCode.ERROR,message:J.message});Z.end()};Zp.endSpan=iA0});var O3=w(($p)=>{Object.defineProperty($p,"__esModule",{value:!0});$p.defaultDbStatementSerializer=void 0;var oA0=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}],nA0=(Z,J)=>{if(Array.isArray(J)&&J.length){let Q=oA0.find(({regex:X})=>{return X.test(Z)})?.args??0,$=Q>=0?J.slice(0,Q):J;if(J.length>$.length)$.push(`[${J.length-Q} other arguments]`);return`${Z} ${$.join(" ")}`}return Z};$p.defaultDbStatementSerializer=nA0});var Kp=w((Yp)=>{Object.defineProperty(Yp,"__esModule",{value:!0});Yp.PACKAGE_NAME=Yp.PACKAGE_VERSION=void 0;Yp.PACKAGE_VERSION="0.61.0";Yp.PACKAGE_NAME="@opentelemetry/instrumentation-ioredis"});var wp=w((Vp)=>{Object.defineProperty(Vp,"__esModule",{value:!0});Vp.IORedisInstrumentation=void 0;var $7=C(),k6=c(),X7=s(),M6=el(),zp=c(),$J=Qp(),sA0=O3(),Gp=Kp(),Bp={requireParentSpan:!0};class Hp extends k6.InstrumentationBase{_netSemconvStability;_dbSemconvStability;constructor(Z={}){super(Gp.PACKAGE_NAME,Gp.PACKAGE_VERSION,{...Bp,...Z});this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,k6.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,k6.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(Z={}){super.setConfig({...Bp,...Z})}init(){return[new k6.InstrumentationNodeModuleDefinition("ioredis",[">=2.0.0 <6"],(Z,J)=>{let Q=Z[Symbol.toStringTag]==="Module"?Z.default:Z;if((0,k6.isWrapped)(Q.prototype.sendCommand))this._unwrap(Q.prototype,"sendCommand");if(this._wrap(Q.prototype,"sendCommand",this._patchSendCommand(J)),(0,k6.isWrapped)(Q.prototype.connect))this._unwrap(Q.prototype,"connect");return this._wrap(Q.prototype,"connect",this._patchConnection()),Z},(Z)=>{if(Z===void 0)return;let J=Z[Symbol.toStringTag]==="Module"?Z.default:Z;this._unwrap(J.prototype,"sendCommand"),this._unwrap(J.prototype,"connect")})]}_patchSendCommand(Z){return(J)=>{return this._traceSendCommand(J,Z)}}_patchConnection(){return(Z)=>{return this._traceConnection(Z)}}_traceSendCommand(Z,J){let Q=this;return function($){if(arguments.length<1||typeof $!=="object")return Z.apply(this,arguments);let X=Q.getConfig(),Y=X.dbStatementSerializer||sA0.defaultDbStatementSerializer,W=$7.trace.getSpan($7.context.active())===void 0;if(X.requireParentSpan===!0&&W)return Z.apply(this,arguments);let K={},{host:z,port:G}=this.options,H=Y($.name,$.args);if(Q._dbSemconvStability&k6.SemconvStability.OLD)K[M6.ATTR_DB_SYSTEM]=M6.DB_SYSTEM_VALUE_REDIS,K[M6.ATTR_DB_STATEMENT]=H,K[M6.ATTR_DB_CONNECTION_STRING]=`redis://${z}:${G}`;if(Q._dbSemconvStability&k6.SemconvStability.STABLE)K[X7.ATTR_DB_SYSTEM_NAME]=M6.DB_SYSTEM_NAME_VALUE_REDIS,K[X7.ATTR_DB_QUERY_TEXT]=H;if(Q._netSemconvStability&k6.SemconvStability.OLD)K[M6.ATTR_NET_PEER_NAME]=z,K[M6.ATTR_NET_PEER_PORT]=G;if(Q._netSemconvStability&k6.SemconvStability.STABLE)K[X7.ATTR_SERVER_ADDRESS]=z,K[X7.ATTR_SERVER_PORT]=G;let B=Q.tracer.startSpan($.name,{kind:$7.SpanKind.CLIENT,attributes:K}),{requestHook:V}=X;if(V)(0,zp.safeExecuteInTheMiddle)(()=>V(B,{moduleVersion:J,cmdName:$.name,cmdArgs:$.args}),(F)=>{if(F)$7.diag.error("ioredis instrumentation: request hook failed",F)},!0);try{let F=Z.apply(this,arguments),D=$.resolve;$.resolve=function(j){(0,zp.safeExecuteInTheMiddle)(()=>X.responseHook?.(B,$.name,$.args,j),(L)=>{if(L)$7.diag.error("ioredis instrumentation: response hook failed",L)},!0),(0,$J.endSpan)(B,null),D(j)};let U=$.reject;return $.reject=function(j){(0,$J.endSpan)(B,j),U(j)},F}catch(F){throw(0,$J.endSpan)(B,F),F}}}_traceConnection(Z){let J=this;return function(){let Q=$7.trace.getSpan($7.context.active())===void 0;if(J.getConfig().requireParentSpan===!0&&Q)return Z.apply(this,arguments);let $={},{host:X,port:Y}=this.options;if(J._dbSemconvStability&k6.SemconvStability.OLD)$[M6.ATTR_DB_SYSTEM]=M6.DB_SYSTEM_VALUE_REDIS,$[M6.ATTR_DB_STATEMENT]="connect",$[M6.ATTR_DB_CONNECTION_STRING]=`redis://${X}:${Y}`;if(J._dbSemconvStability&k6.SemconvStability.STABLE)$[X7.ATTR_DB_SYSTEM_NAME]=M6.DB_SYSTEM_NAME_VALUE_REDIS,$[X7.ATTR_DB_QUERY_TEXT]="connect";if(J._netSemconvStability&k6.SemconvStability.OLD)$[M6.ATTR_NET_PEER_NAME]=X,$[M6.ATTR_NET_PEER_PORT]=Y;if(J._netSemconvStability&k6.SemconvStability.STABLE)$[X7.ATTR_SERVER_ADDRESS]=X,$[X7.ATTR_SERVER_PORT]=Y;let W=J.tracer.startSpan("connect",{kind:$7.SpanKind.CLIENT,attributes:$});try{let K=Z.apply(this,arguments);return(0,$J.endSpan)(W,null),K}catch(K){throw(0,$J.endSpan)(W,K),K}}}}Vp.IORedisInstrumentation=Hp});var Dp=w((JH)=>{Object.defineProperty(JH,"__esModule",{value:!0});JH.IORedisInstrumentation=void 0;var rA0=wp();Object.defineProperty(JH,"IORedisInstrumentation",{enumerable:!0,get:function(){return rA0.IORedisInstrumentation}})});var C3=w((Up)=>{Object.defineProperty(Up,"__esModule",{value:!0});Up.PACKAGE_NAME=Up.PACKAGE_VERSION=void 0;Up.PACKAGE_VERSION="0.61.0";Up.PACKAGE_NAME="@opentelemetry/instrumentation-redis"});var Op=w((qp)=>{Object.defineProperty(qp,"__esModule",{value:!0});qp.getTracedCreateStreamTrace=qp.getTracedCreateClient=qp.endSpan=void 0;var XJ=C(),ZI0=(Z,J)=>{if(J)Z.setStatus({code:XJ.SpanStatusCode.ERROR,message:J.message});Z.end()};qp.endSpan=ZI0;var JI0=(Z)=>{return function(){let Q=Z.apply(this,arguments);return XJ.context.bind(XJ.context.active(),Q)}};qp.getTracedCreateClient=JI0;var QI0=(Z)=>{return function(){if(!Object.prototype.hasOwnProperty.call(this,"stream"))Object.defineProperty(this,"stream",{get(){return this._patched_redis_stream},set(Q){XJ.context.bind(XJ.context.active(),Q),this._patched_redis_stream=Q}});return Z.apply(this,arguments)}};qp.getTracedCreateStreamTrace=QI0});var P3=w((Cp)=>{Object.defineProperty(Cp,"__esModule",{value:!0});Cp.DB_SYSTEM_VALUE_REDIS=Cp.DB_SYSTEM_NAME_VALUE_REDIS=Cp.ATTR_NET_PEER_PORT=Cp.ATTR_NET_PEER_NAME=Cp.ATTR_DB_SYSTEM=Cp.ATTR_DB_STATEMENT=Cp.ATTR_DB_CONNECTION_STRING=void 0;Cp.ATTR_DB_CONNECTION_STRING="db.connection_string";Cp.ATTR_DB_STATEMENT="db.statement";Cp.ATTR_DB_SYSTEM="db.system";Cp.ATTR_NET_PEER_NAME="net.peer.name";Cp.ATTR_NET_PEER_PORT="net.peer.port";Cp.DB_SYSTEM_NAME_VALUE_REDIS="redis";Cp.DB_SYSTEM_VALUE_REDIS="redis"});var Ap=w((Mp)=>{Object.defineProperty(Mp,"__esModule",{value:!0});Mp.RedisInstrumentationV2_V3=void 0;var g6=c(),k3=Op(),kp=C3(),YJ=C(),WJ=s(),F1=P3(),HI0=O3();class QH extends g6.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(Z={}){super(kp.PACKAGE_NAME,kp.PACKAGE_VERSION,Z);this._semconvStability=Z.semconvStability?Z.semconvStability:(0,g6.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(Z={}){super.setConfig(Z),this._semconvStability=Z.semconvStability?Z.semconvStability:(0,g6.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new g6.InstrumentationNodeModuleDefinition("redis",[">=2.6.0 <4"],(Z)=>{if((0,g6.isWrapped)(Z.RedisClient.prototype.internal_send_command))this._unwrap(Z.RedisClient.prototype,"internal_send_command");if(this._wrap(Z.RedisClient.prototype,"internal_send_command",this._getPatchInternalSendCommand()),(0,g6.isWrapped)(Z.RedisClient.prototype.create_stream))this._unwrap(Z.RedisClient.prototype,"create_stream");if(this._wrap(Z.RedisClient.prototype,"create_stream",this._getPatchCreateStream()),(0,g6.isWrapped)(Z.createClient))this._unwrap(Z,"createClient");return this._wrap(Z,"createClient",this._getPatchCreateClient()),Z},(Z)=>{if(Z===void 0)return;this._unwrap(Z.RedisClient.prototype,"internal_send_command"),this._unwrap(Z.RedisClient.prototype,"create_stream"),this._unwrap(Z,"createClient")})]}_getPatchInternalSendCommand(){let Z=this;return function(Q){return function(X){if(arguments.length!==1||typeof X!=="object")return Q.apply(this,arguments);let Y=Z.getConfig(),W=YJ.trace.getSpan(YJ.context.active())===void 0;if(Y.requireParentSpan===!0&&W)return Q.apply(this,arguments);let K=Y?.dbStatementSerializer||HI0.defaultDbStatementSerializer,z={};if(Z._semconvStability&g6.SemconvStability.OLD)Object.assign(z,{[F1.ATTR_DB_SYSTEM]:F1.DB_SYSTEM_VALUE_REDIS,[F1.ATTR_DB_STATEMENT]:K(X.command,X.args)});if(Z._semconvStability&g6.SemconvStability.STABLE)Object.assign(z,{[WJ.ATTR_DB_SYSTEM_NAME]:F1.DB_SYSTEM_NAME_VALUE_REDIS,[WJ.ATTR_DB_OPERATION_NAME]:X.command,[WJ.ATTR_DB_QUERY_TEXT]:K(X.command,X.args)});let G=Z.tracer.startSpan(`${QH.COMPONENT}-${X.command}`,{kind:YJ.SpanKind.CLIENT,attributes:z});if(this.connection_options){let B={};if(Z._semconvStability&g6.SemconvStability.OLD)Object.assign(B,{[F1.ATTR_NET_PEER_NAME]:this.connection_options.host,[F1.ATTR_NET_PEER_PORT]:this.connection_options.port});if(Z._semconvStability&g6.SemconvStability.STABLE)Object.assign(B,{[WJ.ATTR_SERVER_ADDRESS]:this.connection_options.host,[WJ.ATTR_SERVER_PORT]:this.connection_options.port});G.setAttributes(B)}if(this.address&&Z._semconvStability&g6.SemconvStability.OLD)G.setAttribute(F1.ATTR_DB_CONNECTION_STRING,`redis://${this.address}`);let H=arguments[0].callback;if(H){let B=YJ.context.active();arguments[0].callback=function(F,D){if(Y?.responseHook){let U=Y.responseHook;(0,g6.safeExecuteInTheMiddle)(()=>{U(G,X.command,X.args,D)},(j)=>{if(j)Z._diag.error("Error executing responseHook",j)},!0)}return(0,k3.endSpan)(G,F),YJ.context.with(B,H,this,...arguments)}}try{return Q.apply(this,arguments)}catch(B){throw(0,k3.endSpan)(G,B),B}}}}_getPatchCreateClient(){return function(J){return(0,k3.getTracedCreateClient)(J)}}_getPatchCreateStream(){return function(J){return(0,k3.getTracedCreateStreamTrace)(J)}}}Mp.RedisInstrumentationV2_V3=QH});var fp=w((Np)=>{Object.defineProperty(Np,"__esModule",{value:!0});Np.getClientAttributes=void 0;var $H=s(),_8=P3(),Ip=c();function VI0(Z,J,Q){let $={};if(Q&Ip.SemconvStability.OLD)Object.assign($,{[_8.ATTR_DB_SYSTEM]:_8.DB_SYSTEM_VALUE_REDIS,[_8.ATTR_NET_PEER_NAME]:J?.socket?.host,[_8.ATTR_NET_PEER_PORT]:J?.socket?.port,[_8.ATTR_DB_CONNECTION_STRING]:FI0(Z,J?.url)});if(Q&Ip.SemconvStability.STABLE)Object.assign($,{[$H.ATTR_DB_SYSTEM_NAME]:_8.DB_SYSTEM_NAME_VALUE_REDIS,[$H.ATTR_SERVER_ADDRESS]:J?.socket?.host,[$H.ATTR_SERVER_PORT]:J?.socket?.port});return $}Np.getClientAttributes=VI0;function FI0(Z,J){if(typeof J!=="string"||!J)return;try{let Q=new URL(J);return Q.searchParams.delete("user_pwd"),Q.username="",Q.password="",Q.href}catch(Q){Z.error("failed to sanitize redis connection url",Q)}return}});var vp=w((Sp)=>{Object.defineProperty(Sp,"__esModule",{value:!0});Sp.RedisInstrumentationV4_V5=void 0;var Y9=C(),z0=c(),Ep=fp(),wI0=O3(),yp=C3(),XH=s(),DI0=P3(),KJ=Symbol("opentelemetry.instrumentation.redis.open_spans"),hp=Symbol("opentelemetry.instrumentation.redis.multi_command_options");class M3 extends z0.InstrumentationBase{static COMPONENT="redis";_semconvStability;constructor(Z={}){super(yp.PACKAGE_NAME,yp.PACKAGE_VERSION,Z);this._semconvStability=Z.semconvStability?Z.semconvStability:(0,z0.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(Z={}){super.setConfig(Z),this._semconvStability=Z.semconvStability?Z.semconvStability:(0,z0.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[this._getInstrumentationNodeModuleDefinition("@redis/client"),this._getInstrumentationNodeModuleDefinition("@node-redis/client")]}_getInstrumentationNodeModuleDefinition(Z){let J=new z0.InstrumentationNodeModuleFile(`${Z}/dist/lib/commander.js`,["^1.0.0"],(X,Y)=>{let W=X.transformCommandArguments;if(!W)return this._diag.error("internal instrumentation error, missing transformCommandArguments function"),X;let K=Y?.startsWith("1.0.")?"extendWithCommands":"attachCommands";if((0,z0.isWrapped)(X?.[K]))this._unwrap(X,K);return this._wrap(X,K,this._getPatchExtendWithCommands(W)),X},(X)=>{if((0,z0.isWrapped)(X?.extendWithCommands))this._unwrap(X,"extendWithCommands");if((0,z0.isWrapped)(X?.attachCommands))this._unwrap(X,"attachCommands")}),Q=new z0.InstrumentationNodeModuleFile(`${Z}/dist/lib/client/multi-command.js`,["^1.0.0","^5.0.0"],(X)=>{let Y=X?.default?.prototype;if((0,z0.isWrapped)(Y?.exec))this._unwrap(Y,"exec");if(this._wrap(Y,"exec",this._getPatchMultiCommandsExec(!1)),(0,z0.isWrapped)(Y?.execAsPipeline))this._unwrap(Y,"execAsPipeline");if(this._wrap(Y,"execAsPipeline",this._getPatchMultiCommandsExec(!0)),(0,z0.isWrapped)(Y?.addCommand))this._unwrap(Y,"addCommand");return this._wrap(Y,"addCommand",this._getPatchMultiCommandsAddCommand()),X},(X)=>{let Y=X?.default?.prototype;if((0,z0.isWrapped)(Y?.exec))this._unwrap(Y,"exec");if((0,z0.isWrapped)(Y?.addCommand))this._unwrap(Y,"addCommand")}),$=new z0.InstrumentationNodeModuleFile(`${Z}/dist/lib/client/index.js`,["^1.0.0","^5.0.0"],(X)=>{let Y=X?.default?.prototype;if(Y?.multi){if((0,z0.isWrapped)(Y?.multi))this._unwrap(Y,"multi");this._wrap(Y,"multi",this._getPatchRedisClientMulti())}if(Y?.MULTI){if((0,z0.isWrapped)(Y?.MULTI))this._unwrap(Y,"MULTI");this._wrap(Y,"MULTI",this._getPatchRedisClientMulti())}if((0,z0.isWrapped)(Y?.sendCommand))this._unwrap(Y,"sendCommand");return this._wrap(Y,"sendCommand",this._getPatchRedisClientSendCommand()),this._wrap(Y,"connect",this._getPatchedClientConnect()),X},(X)=>{let Y=X?.default?.prototype;if((0,z0.isWrapped)(Y?.multi))this._unwrap(Y,"multi");if((0,z0.isWrapped)(Y?.MULTI))this._unwrap(Y,"MULTI");if((0,z0.isWrapped)(Y?.sendCommand))this._unwrap(Y,"sendCommand")});return new z0.InstrumentationNodeModuleDefinition(Z,["^1.0.0","^5.0.0"],(X)=>{return X},()=>{},[J,Q,$])}_getPatchExtendWithCommands(Z){let J=this;return function($){return function(Y){if(Y?.BaseClass?.name!=="RedisClient")return $.apply(this,arguments);let W=Y.executor;return Y.executor=function(K,z){let G=Z(K,z).args;return J._traceClientCommand(W,this,arguments,G)},$.apply(this,arguments)}}}_getPatchMultiCommandsExec(Z){let J=this;return function($){return function(){let Y=$.apply(this,arguments);if(typeof Y?.then!=="function")return J._diag.error("non-promise result when patching exec/execAsPipeline"),Y;return Y.then((W)=>{let K=this[KJ];return J._endSpansWithRedisReplies(K,W,Z),W}).catch((W)=>{let K=this[KJ];if(!K)J._diag.error("cannot find open spans to end for multi/pipeline");else{let z=W.constructor.name==="MultiErrorReply"?W.replies:Array(K.length).fill(W);J._endSpansWithRedisReplies(K,z,Z)}return Promise.reject(W)})}}}_getPatchMultiCommandsAddCommand(){let Z=this;return function(Q){return function(X){return Z._traceClientCommand(Q,this,arguments,X)}}}_getPatchRedisClientMulti(){return function(J){return function(){let $=J.apply(this,arguments);return $[hp]=this.options,$}}}_getPatchRedisClientSendCommand(){let Z=this;return function(Q){return function(X){return Z._traceClientCommand(Q,this,arguments,X)}}}_getPatchedClientConnect(){let Z=this;return function(Q){return function(){let X=this.options,Y=(0,Ep.getClientAttributes)(Z._diag,X,Z._semconvStability),W=Z.tracer.startSpan(`${M3.COMPONENT}-connect`,{kind:Y9.SpanKind.CLIENT,attributes:Y});return Y9.context.with(Y9.trace.setSpan(Y9.context.active(),W),()=>{return Q.apply(this)}).then((z)=>{return W.end(),z}).catch((z)=>{return W.recordException(z),W.setStatus({code:Y9.SpanStatusCode.ERROR,message:z.message}),W.end(),Promise.reject(z)})}}}_traceClientCommand(Z,J,Q,$){if(Y9.trace.getSpan(Y9.context.active())===void 0&&this.getConfig().requireParentSpan)return Z.apply(J,Q);let Y=J.options||J[hp],W=$[0],K=$.slice(1),z=this.getConfig().dbStatementSerializer||wI0.defaultDbStatementSerializer,G=(0,Ep.getClientAttributes)(this._diag,Y,this._semconvStability);if(this._semconvStability&z0.SemconvStability.STABLE)G[XH.ATTR_DB_OPERATION_NAME]=W;try{let V=z(W,K);if(V!=null){if(this._semconvStability&z0.SemconvStability.OLD)G[DI0.ATTR_DB_STATEMENT]=V;if(this._semconvStability&z0.SemconvStability.STABLE)G[XH.ATTR_DB_QUERY_TEXT]=V}}catch(V){this._diag.error("dbStatementSerializer throw an exception",V,{commandName:W})}let H=this.tracer.startSpan(`${M3.COMPONENT}-${W}`,{kind:Y9.SpanKind.CLIENT,attributes:G}),B=Y9.context.with(Y9.trace.setSpan(Y9.context.active(),H),()=>{return Z.apply(J,Q)});if(typeof B?.then==="function")B.then((V)=>{this._endSpanWithResponse(H,W,K,V,void 0)},(V)=>{this._endSpanWithResponse(H,W,K,null,V)});else{let V=B;V[KJ]=V[KJ]||[],V[KJ].push({span:H,commandName:W,commandArgs:K})}return B}_endSpansWithRedisReplies(Z,J,Q=!1){if(!Z)return this._diag.error("cannot find open spans to end for redis multi/pipeline");if(J.length!==Z.length)return this._diag.error("number of multi command spans does not match response from redis");let $=Z.map((W)=>W.commandName),Y=$.every((W)=>W===$[0])?(Q?"PIPELINE ":"MULTI ")+$[0]:Q?"PIPELINE":"MULTI";for(let W=0;W{Object.defineProperty(dp,"__esModule",{value:!0});dp.RedisInstrumentation=void 0;var UI0=c(),bp=C3(),jI0=Ap(),qI0=vp(),xp={requireParentSpan:!1};class gp extends UI0.InstrumentationBase{instrumentationV2_V3;instrumentationV4_V5;initialized=!1;constructor(Z={}){let J={...xp,...Z};super(bp.PACKAGE_NAME,bp.PACKAGE_VERSION,J);this.instrumentationV2_V3=new jI0.RedisInstrumentationV2_V3(this.getConfig()),this.instrumentationV4_V5=new qI0.RedisInstrumentationV4_V5(this.getConfig()),this.initialized=!0}setConfig(Z={}){let J={...xp,...Z};if(super.setConfig(J),!this.initialized)return;this.instrumentationV2_V3.setConfig(J),this.instrumentationV4_V5.setConfig(J)}init(){}getModuleDefinitions(){return[...this.instrumentationV2_V3.getModuleDefinitions(),...this.instrumentationV4_V5.getModuleDefinitions()]}setTracerProvider(Z){if(super.setTracerProvider(Z),!this.initialized)return;this.instrumentationV2_V3.setTracerProvider(Z),this.instrumentationV4_V5.setTracerProvider(Z)}enable(){if(super.enable(),!this.initialized)return;this.instrumentationV2_V3.enable(),this.instrumentationV4_V5.enable()}disable(){if(super.disable(),!this.initialized)return;this.instrumentationV2_V3.disable(),this.instrumentationV4_V5.disable()}}dp.RedisInstrumentation=gp});var up=w((YH)=>{Object.defineProperty(YH,"__esModule",{value:!0});YH.RedisInstrumentation=void 0;var LI0=mp();Object.defineProperty(YH,"RedisInstrumentation",{enumerable:!0,get:function(){return LI0.RedisInstrumentation}})});var Ji=w((ep)=>{Object.defineProperty(ep,"__esModule",{value:!0});ep.EVENT_LISTENERS_SET=void 0;ep.EVENT_LISTENERS_SET=Symbol("opentelemetry.instrumentation.pg.eventListenersSet")});var GH=w((Qi)=>{Object.defineProperty(Qi,"__esModule",{value:!0});Qi.AttributeNames=void 0;var II0;(function(Z){Z.PG_VALUES="db.postgresql.values",Z.PG_PLAN="db.postgresql.plan",Z.IDLE_TIMEOUT_MILLIS="db.postgresql.idle.timeout.millis",Z.MAX_CLIENT="db.postgresql.max.client"})(II0=Qi.AttributeNames||(Qi.AttributeNames={}))});var BH=w(($i)=>{Object.defineProperty($i,"__esModule",{value:!0});$i.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS=$i.METRIC_DB_CLIENT_CONNECTION_COUNT=$i.DB_SYSTEM_VALUE_POSTGRESQL=$i.DB_CLIENT_CONNECTION_STATE_VALUE_USED=$i.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE=$i.ATTR_NET_PEER_PORT=$i.ATTR_NET_PEER_NAME=$i.ATTR_DB_USER=$i.ATTR_DB_SYSTEM=$i.ATTR_DB_STATEMENT=$i.ATTR_DB_NAME=$i.ATTR_DB_CONNECTION_STRING=$i.ATTR_DB_CLIENT_CONNECTION_STATE=$i.ATTR_DB_CLIENT_CONNECTION_POOL_NAME=void 0;$i.ATTR_DB_CLIENT_CONNECTION_POOL_NAME="db.client.connection.pool.name";$i.ATTR_DB_CLIENT_CONNECTION_STATE="db.client.connection.state";$i.ATTR_DB_CONNECTION_STRING="db.connection_string";$i.ATTR_DB_NAME="db.name";$i.ATTR_DB_STATEMENT="db.statement";$i.ATTR_DB_SYSTEM="db.system";$i.ATTR_DB_USER="db.user";$i.ATTR_NET_PEER_NAME="net.peer.name";$i.ATTR_NET_PEER_PORT="net.peer.port";$i.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE="idle";$i.DB_CLIENT_CONNECTION_STATE_VALUE_USED="used";$i.DB_SYSTEM_VALUE_POSTGRESQL="postgresql";$i.METRIC_DB_CLIENT_CONNECTION_COUNT="db.client.connection.count";$i.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS="db.client.connection.pending_requests"});var VH=w((Yi)=>{Object.defineProperty(Yi,"__esModule",{value:!0});Yi.SpanNames=void 0;var cI0;(function(Z){Z.QUERY_PREFIX="pg.query",Z.CONNECT="pg.connect",Z.POOL_CONNECT="pg-pool.connect"})(cI0=Yi.SpanNames||(Yi.SpanNames={}))});var wi=w((Vi)=>{Object.defineProperty(Vi,"__esModule",{value:!0});Vi.sanitizedErrorMessage=Vi.isObjectWithTextString=Vi.getErrorMessage=Vi.patchClientConnectCallback=Vi.patchCallbackPGPool=Vi.updateCounter=Vi.getPoolName=Vi.patchCallback=Vi.handleExecutionResult=Vi.handleConfigQuery=Vi.shouldSkipInstrumentation=Vi.getSemanticAttributesFromPoolConnection=Vi.getSemanticAttributesFromConnection=Vi.getConnectionString=Vi.parseAndMaskConnectionString=Vi.parseNormalizedOperationName=Vi.getQuerySpanName=void 0;var Y7=C(),A3=GH(),W9=s(),U0=BH(),w1=c(),Wi=VH();function Ki(Z,J){if(!J)return Wi.SpanNames.QUERY_PREFIX;let Q=typeof J.name==="string"&&J.name?J.name:zi(J.text);return`${Wi.SpanNames.QUERY_PREFIX}:${Q}${Z?` ${Z}`:""}`}Vi.getQuerySpanName=Ki;function zi(Z){let J=Z.trim(),Q=J.indexOf(" "),$=Q===-1?J:J.slice(0,Q);return $=$.toUpperCase(),$.endsWith(";")?$.slice(0,-1):$}Vi.parseNormalizedOperationName=zi;function Gi(Z){try{let J=new URL(Z);return J.username="",J.password="",J.toString()}catch(J){return"postgresql://localhost:5432/"}}Vi.parseAndMaskConnectionString=Gi;function FH(Z){if("connectionString"in Z&&Z.connectionString)return Gi(Z.connectionString);let J=Z.host||"localhost",Q=Z.port||5432,$=Z.database||"";return`postgresql://${J}:${Q}/${$}`}Vi.getConnectionString=FH;function I3(Z){if(Number.isInteger(Z))return Z;return}function Bi(Z,J){let Q={};if(J&w1.SemconvStability.OLD)Q={...Q,[U0.ATTR_DB_SYSTEM]:U0.DB_SYSTEM_VALUE_POSTGRESQL,[U0.ATTR_DB_NAME]:Z.database,[U0.ATTR_DB_CONNECTION_STRING]:FH(Z),[U0.ATTR_DB_USER]:Z.user,[U0.ATTR_NET_PEER_NAME]:Z.host,[U0.ATTR_NET_PEER_PORT]:I3(Z.port)};if(J&w1.SemconvStability.STABLE)Q={...Q,[W9.ATTR_DB_SYSTEM_NAME]:W9.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[W9.ATTR_DB_NAMESPACE]:Z.namespace,[W9.ATTR_SERVER_ADDRESS]:Z.host,[W9.ATTR_SERVER_PORT]:I3(Z.port)};return Q}Vi.getSemanticAttributesFromConnection=Bi;function mI0(Z,J){let Q;try{Q=Z.connectionString?new URL(Z.connectionString):void 0}catch(X){Q=void 0}let $={[A3.AttributeNames.IDLE_TIMEOUT_MILLIS]:Z.idleTimeoutMillis,[A3.AttributeNames.MAX_CLIENT]:Z.maxClient};if(J&w1.SemconvStability.OLD)$={...$,[U0.ATTR_DB_SYSTEM]:U0.DB_SYSTEM_VALUE_POSTGRESQL,[U0.ATTR_DB_NAME]:Q?.pathname.slice(1)??Z.database,[U0.ATTR_DB_CONNECTION_STRING]:FH(Z),[U0.ATTR_NET_PEER_NAME]:Q?.hostname??Z.host,[U0.ATTR_NET_PEER_PORT]:Number(Q?.port)||I3(Z.port),[U0.ATTR_DB_USER]:Q?.username??Z.user};if(J&w1.SemconvStability.STABLE)$={...$,[W9.ATTR_DB_SYSTEM_NAME]:W9.DB_SYSTEM_NAME_VALUE_POSTGRESQL,[W9.ATTR_DB_NAMESPACE]:Z.namespace,[W9.ATTR_SERVER_ADDRESS]:Q?.hostname??Z.host,[W9.ATTR_SERVER_PORT]:Number(Q?.port)||I3(Z.port)};return $}Vi.getSemanticAttributesFromPoolConnection=mI0;function uI0(Z){return Z.requireParentSpan===!0&&Y7.trace.getSpan(Y7.context.active())===void 0}Vi.shouldSkipInstrumentation=uI0;function lI0(Z,J,Q,$){let{connectionParameters:X}=this,Y=X.database,W=Ki(Y,$),K=Z.startSpan(W,{kind:Y7.SpanKind.CLIENT,attributes:Bi(X,Q)});if(!$)return K;if($.text){if(Q&w1.SemconvStability.OLD)K.setAttribute(U0.ATTR_DB_STATEMENT,$.text);if(Q&w1.SemconvStability.STABLE)K.setAttribute(W9.ATTR_DB_QUERY_TEXT,$.text)}if(J.enhancedDatabaseReporting&&Array.isArray($.values))try{let z=$.values.map((G)=>{if(G==null)return"null";else if(G instanceof Buffer)return G.toString();else if(typeof G==="object"){if(typeof G.toPostgres==="function")return G.toPostgres();return JSON.stringify(G)}else return G.toString()});K.setAttribute(A3.AttributeNames.PG_VALUES,z)}catch(z){Y7.diag.error("failed to stringify ",$.values,z)}if(typeof $.name==="string")K.setAttribute(A3.AttributeNames.PG_PLAN,$.name);return K}Vi.handleConfigQuery=lI0;function Hi(Z,J,Q){if(typeof Z.responseHook==="function")(0,w1.safeExecuteInTheMiddle)(()=>{Z.responseHook(J,{data:Q})},($)=>{if($)Y7.diag.error("Error running response hook",$)},!0)}Vi.handleExecutionResult=Hi;function pI0(Z,J,Q,$,X){return function(W,K){if(W){if(Object.prototype.hasOwnProperty.call(W,"code"))$[W9.ATTR_ERROR_TYPE]=W.code;if(W instanceof Error)J.recordException(N3(W));J.setStatus({code:Y7.SpanStatusCode.ERROR,message:W.message})}else Hi(Z,J,K);X(),J.end(),Q.call(this,W,K)}}Vi.patchCallback=pI0;function iI0(Z){let J="";return J+=(Z?.host?`${Z.host}`:"unknown_host")+":",J+=(Z?.port?`${Z.port}`:"unknown_port")+"/",J+=Z?.database?`${Z.database}`:"unknown_database",J.trim()}Vi.getPoolName=iI0;function oI0(Z,J,Q,$,X){let{totalCount:Y,waitingCount:W,idleCount:K}=J,z=Y-K;return Q.add(z-X.used,{[U0.ATTR_DB_CLIENT_CONNECTION_STATE]:U0.DB_CLIENT_CONNECTION_STATE_VALUE_USED,[U0.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:Z}),Q.add(K-X.idle,{[U0.ATTR_DB_CLIENT_CONNECTION_STATE]:U0.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,[U0.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:Z}),$.add(W-X.pending,{[U0.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]:Z}),{used:z,idle:K,pending:W}}Vi.updateCounter=oI0;function nI0(Z,J){return function($,X,Y){if($){if($ instanceof Error)Z.recordException(N3($));Z.setStatus({code:Y7.SpanStatusCode.ERROR,message:$.message})}Z.end(),J.call(this,$,X,Y)}}Vi.patchCallbackPGPool=nI0;function aI0(Z,J){return function($){if($){if($ instanceof Error)Z.recordException(N3($));Z.setStatus({code:Y7.SpanStatusCode.ERROR,message:$.message})}Z.end(),J.apply(this,arguments)}}Vi.patchClientConnectCallback=aI0;function sI0(Z){return typeof Z==="object"&&Z!==null&&"message"in Z?String(Z.message):void 0}Vi.getErrorMessage=sI0;function rI0(Z){return typeof Z==="object"&&typeof Z?.text==="string"}Vi.isObjectWithTextString=rI0;function N3(Z){let J=Z?.name??"PostgreSQLError",Q=Z?.code??"UNKNOWN";return`PostgreSQL error of type '${J}' occurred (code: ${Q})`}Vi.sanitizedErrorMessage=N3});var ji=w((Di)=>{Object.defineProperty(Di,"__esModule",{value:!0});Di.PACKAGE_NAME=Di.PACKAGE_VERSION=void 0;Di.PACKAGE_VERSION="0.65.0";Di.PACKAGE_NAME="@opentelemetry/instrumentation-pg"});var Ai=w((Mi)=>{Object.defineProperty(Mi,"__esModule",{value:!0});Mi.PgInstrumentation=void 0;var G6=c(),Y0=C(),qi=Ji(),F0=wi(),Li=aB(),Oi=ji(),Ci=VH(),T3=Q0(),M9=s(),BJ=BH();function v8(Z){return Z[Symbol.toStringTag]==="Module"?Z.default:Z}class ki extends G6.InstrumentationBase{_connectionsCounter={used:0,idle:0,pending:0};_semconvStability;constructor(Z={}){super(Oi.PACKAGE_NAME,Oi.PACKAGE_VERSION,Z);this._semconvStability=(0,G6.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}_updateMetricInstruments(){this._operationDuration=this.meter.createHistogram(M9.METRIC_DB_CLIENT_OPERATION_DURATION,{description:"Duration of database client operations.",unit:"s",valueType:Y0.ValueType.DOUBLE,advice:{explicitBucketBoundaries:[0.001,0.005,0.01,0.05,0.1,0.5,1,5,10]}}),this._connectionsCounter={idle:0,pending:0,used:0},this._connectionsCount=this.meter.createUpDownCounter(BJ.METRIC_DB_CLIENT_CONNECTION_COUNT,{description:"The number of connections that are currently in state described by the state attribute.",unit:"{connection}"}),this._connectionPendingRequests=this.meter.createUpDownCounter(BJ.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS,{description:"The number of current pending requests for an open connection.",unit:"{connection}"})}init(){let Z=[">=8.0.3 <9"],J=[">=2.0.0 <4"],Q=new G6.InstrumentationNodeModuleFile("pg/lib/native/client.js",Z,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),$=new G6.InstrumentationNodeModuleFile("pg/lib/client.js",Z,this._patchPgClient.bind(this),this._unpatchPgClient.bind(this)),X=new G6.InstrumentationNodeModuleDefinition("pg",Z,(W)=>{let K=v8(W);return this._patchPgClient(K.Client),W},(W)=>{let K=v8(W);return this._unpatchPgClient(K.Client),W},[$,Q]),Y=new G6.InstrumentationNodeModuleDefinition("pg-pool",J,(W)=>{let K=v8(W);if((0,G6.isWrapped)(K.prototype.connect))this._unwrap(K.prototype,"connect");return this._wrap(K.prototype,"connect",this._getPoolConnectPatch()),K},(W)=>{let K=v8(W);if((0,G6.isWrapped)(K.prototype.connect))this._unwrap(K.prototype,"connect")});return[X,Y]}_patchPgClient(Z){if(!Z)return;let J=v8(Z);if((0,G6.isWrapped)(J.prototype.query))this._unwrap(J.prototype,"query");if((0,G6.isWrapped)(J.prototype.connect))this._unwrap(J.prototype,"connect");return this._wrap(J.prototype,"query",this._getClientQueryPatch()),this._wrap(J.prototype,"connect",this._getClientConnectPatch()),Z}_unpatchPgClient(Z){let J=v8(Z);if((0,G6.isWrapped)(J.prototype.query))this._unwrap(J.prototype,"query");if((0,G6.isWrapped)(J.prototype.connect))this._unwrap(J.prototype,"connect");return Z}_getClientConnectPatch(){let Z=this;return(J)=>{return function($){let X=Z.getConfig();if(F0.shouldSkipInstrumentation(X)||X.ignoreConnectSpans)return J.call(this,$);let Y=Z.tracer.startSpan(Ci.SpanNames.CONNECT,{kind:Y0.SpanKind.CLIENT,attributes:F0.getSemanticAttributesFromConnection(this,Z._semconvStability)});if($){let K=Y0.trace.getSpan(Y0.context.active());if($=F0.patchClientConnectCallback(Y,$),K)$=Y0.context.bind(Y0.context.active(),$)}let W=Y0.context.with(Y0.trace.setSpan(Y0.context.active(),Y),()=>{return J.call(this,$)});return Pi(Y,W)}}}recordOperationDuration(Z,J){let Q={},$=[M9.ATTR_DB_NAMESPACE,M9.ATTR_ERROR_TYPE,M9.ATTR_SERVER_PORT,M9.ATTR_SERVER_ADDRESS,M9.ATTR_DB_OPERATION_NAME];if(this._semconvStability&G6.SemconvStability.OLD)$.push(BJ.ATTR_DB_SYSTEM);if(this._semconvStability&G6.SemconvStability.STABLE)$.push(M9.ATTR_DB_SYSTEM_NAME);$.forEach((Y)=>{if(Y in Z)Q[Y]=Z[Y]});let X=(0,T3.hrTimeToMilliseconds)((0,T3.hrTimeDuration)(J,(0,T3.hrTime)()))/1000;this._operationDuration.record(X,Q)}_getClientQueryPatch(){let Z=this;return(J)=>{return this._diag.debug("Patching pg.Client.prototype.query"),function(...$){if(F0.shouldSkipInstrumentation(Z.getConfig()))return J.apply(this,$);let X=(0,T3.hrTime)(),Y=$[0],W=typeof Y==="string",K=F0.isObjectWithTextString(Y),z=W?{text:Y,values:Array.isArray($[1])?$[1]:void 0}:K?{...Y,name:Y.name,text:Y.text,values:Y.values??(Array.isArray($[1])?$[1]:void 0)}:void 0,G={[BJ.ATTR_DB_SYSTEM]:BJ.DB_SYSTEM_VALUE_POSTGRESQL,[M9.ATTR_DB_NAMESPACE]:this.database,[M9.ATTR_SERVER_PORT]:this.connectionParameters.port,[M9.ATTR_SERVER_ADDRESS]:this.connectionParameters.host};if(z?.text)G[M9.ATTR_DB_OPERATION_NAME]=F0.parseNormalizedOperationName(z?.text);let H=()=>{Z.recordOperationDuration(G,X)},B=Z.getConfig(),V=F0.handleConfigQuery.call(this,Z.tracer,B,Z._semconvStability,z);if(B.addSqlCommenterCommentToQueries){if(W)$[0]=(0,Li.addSqlCommenterComment)(V,Y);else if(K&&!("name"in Y))$[0]={...Y,text:(0,Li.addSqlCommenterComment)(V,Y.text)}}if($.length>0){let U=Y0.trace.getSpan(Y0.context.active());if(typeof $[$.length-1]==="function"){if($[$.length-1]=F0.patchCallback(B,V,$[$.length-1],G,H),U)$[$.length-1]=Y0.context.bind(Y0.context.active(),$[$.length-1])}else if(typeof z?.callback==="function"){let j=F0.patchCallback(Z.getConfig(),V,z.callback,G,H);if(U)j=Y0.context.bind(Y0.context.active(),j);$[0].callback=j}}let{requestHook:F}=B;if(typeof F==="function"&&z)(0,G6.safeExecuteInTheMiddle)(()=>{let{database:U,host:j,port:L,user:O}=this.connectionParameters;F(V,{connection:{database:U,host:j,port:L,user:O},query:{text:z.text,values:z.values,name:z.name}})},(U)=>{if(U)Z._diag.error("Error running query hook",U)},!0);let D;try{D=J.apply(this,$)}catch(U){if(U instanceof Error)V.recordException(F0.sanitizedErrorMessage(U));throw V.setStatus({code:Y0.SpanStatusCode.ERROR,message:F0.getErrorMessage(U)}),V.end(),U}if(D instanceof Promise)return D.then((U)=>{return new Promise((j)=>{F0.handleExecutionResult(Z.getConfig(),V,U),H(),V.end(),j(U)})}).catch((U)=>{return new Promise((j,L)=>{if(U instanceof Error)V.recordException(F0.sanitizedErrorMessage(U));V.setStatus({code:Y0.SpanStatusCode.ERROR,message:U.message}),H(),V.end(),L(U)})});return D}}}_setPoolConnectEventListeners(Z){if(Z[qi.EVENT_LISTENERS_SET])return;let J=F0.getPoolName(Z.options);Z.on("connect",()=>{this._connectionsCounter=F0.updateCounter(J,Z,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),Z.on("acquire",()=>{this._connectionsCounter=F0.updateCounter(J,Z,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),Z.on("remove",()=>{this._connectionsCounter=F0.updateCounter(J,Z,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),Z.on("release",()=>{this._connectionsCounter=F0.updateCounter(J,Z,this._connectionsCount,this._connectionPendingRequests,this._connectionsCounter)}),Z[qi.EVENT_LISTENERS_SET]=!0}_getPoolConnectPatch(){let Z=this;return(J)=>{return function($){let X=Z.getConfig();if(F0.shouldSkipInstrumentation(X))return J.call(this,$);if(Z._setPoolConnectEventListeners(this),X.ignoreConnectSpans)return J.call(this,$);let Y=Z.tracer.startSpan(Ci.SpanNames.POOL_CONNECT,{kind:Y0.SpanKind.CLIENT,attributes:F0.getSemanticAttributesFromPoolConnection(this.options,Z._semconvStability)});if($){let K=Y0.trace.getSpan(Y0.context.active());if($=F0.patchCallbackPGPool(Y,$),K)$=Y0.context.bind(Y0.context.active(),$)}let W=Y0.context.with(Y0.trace.setSpan(Y0.context.active(),Y),()=>{return J.call(this,$)});return Pi(Y,W)}}}}Mi.PgInstrumentation=ki;function Pi(Z,J){if(!(J instanceof Promise))return J;let Q=J;return Y0.context.bind(Y0.context.active(),Q.then(($)=>{return Z.end(),$}).catch(($)=>{if($ instanceof Error)Z.recordException(F0.sanitizedErrorMessage($));return Z.setStatus({code:Y0.SpanStatusCode.ERROR,message:F0.getErrorMessage($)}),Z.end(),Promise.reject($)}))}});var Ii=w((f3)=>{Object.defineProperty(f3,"__esModule",{value:!0});f3.AttributeNames=f3.PgInstrumentation=void 0;var DN0=Ai();Object.defineProperty(f3,"PgInstrumentation",{enumerable:!0,get:function(){return DN0.PgInstrumentation}});var UN0=GH();Object.defineProperty(f3,"AttributeNames",{enumerable:!0,get:function(){return UN0.AttributeNames}})});var bi=w((vi)=>{Object.defineProperty(vi,"__esModule",{value:!0});vi.SeverityNumber=void 0;var PN0;(function(Z){Z[Z.UNSPECIFIED=0]="UNSPECIFIED",Z[Z.TRACE=1]="TRACE",Z[Z.TRACE2=2]="TRACE2",Z[Z.TRACE3=3]="TRACE3",Z[Z.TRACE4=4]="TRACE4",Z[Z.DEBUG=5]="DEBUG",Z[Z.DEBUG2=6]="DEBUG2",Z[Z.DEBUG3=7]="DEBUG3",Z[Z.DEBUG4=8]="DEBUG4",Z[Z.INFO=9]="INFO",Z[Z.INFO2=10]="INFO2",Z[Z.INFO3=11]="INFO3",Z[Z.INFO4=12]="INFO4",Z[Z.WARN=13]="WARN",Z[Z.WARN2=14]="WARN2",Z[Z.WARN3=15]="WARN3",Z[Z.WARN4=16]="WARN4",Z[Z.ERROR=17]="ERROR",Z[Z.ERROR2=18]="ERROR2",Z[Z.ERROR3=19]="ERROR3",Z[Z.ERROR4=20]="ERROR4",Z[Z.FATAL=21]="FATAL",Z[Z.FATAL2=22]="FATAL2",Z[Z.FATAL3=23]="FATAL3",Z[Z.FATAL4=24]="FATAL4"})(PN0=vi.SeverityNumber||(vi.SeverityNumber={}))});var E3=w((xi)=>{Object.defineProperty(xi,"__esModule",{value:!0});xi.NOOP_LOGGER=xi.NoopLogger=void 0;class UH{emit(Z){}}xi.NoopLogger=UH;xi.NOOP_LOGGER=new UH});var y3=w((di)=>{Object.defineProperty(di,"__esModule",{value:!0});di.NOOP_LOGGER_PROVIDER=di.NoopLoggerProvider=void 0;var MN0=E3();class jH{getLogger(Z,J,Q){return new MN0.NoopLogger}}di.NoopLoggerProvider=jH;di.NOOP_LOGGER_PROVIDER=new jH});var qH=w((ui)=>{Object.defineProperty(ui,"__esModule",{value:!0});ui.ProxyLogger=void 0;var AN0=E3();class mi{constructor(Z,J,Q,$){this._provider=Z,this.name=J,this.version=Q,this.options=$}emit(Z){this._getLogger().emit(Z)}_getLogger(){if(this._delegate)return this._delegate;let Z=this._provider._getDelegateLogger(this.name,this.version,this.options);if(!Z)return AN0.NOOP_LOGGER;return this._delegate=Z,this._delegate}}ui.ProxyLogger=mi});var LH=w((ii)=>{Object.defineProperty(ii,"__esModule",{value:!0});ii.ProxyLoggerProvider=void 0;var IN0=y3(),NN0=qH();class pi{getLogger(Z,J,Q){var $;return($=this._getDelegateLogger(Z,J,Q))!==null&&$!==void 0?$:new NN0.ProxyLogger(this,Z,J,Q)}_getDelegate(){var Z;return(Z=this._delegate)!==null&&Z!==void 0?Z:IN0.NOOP_LOGGER_PROVIDER}_setDelegate(Z){this._delegate=Z}_getDelegateLogger(Z,J,Q){var $;return($=this._delegate)===null||$===void 0?void 0:$.getLogger(Z,J,Q)}}ii.ProxyLoggerProvider=pi});var si=w((ni)=>{Object.defineProperty(ni,"__esModule",{value:!0});ni._globalThis=void 0;ni._globalThis=typeof globalThis==="object"?globalThis:global});var ri=w((OH)=>{Object.defineProperty(OH,"__esModule",{value:!0});OH._globalThis=void 0;var TN0=si();Object.defineProperty(OH,"_globalThis",{enumerable:!0,get:function(){return TN0._globalThis}})});var ti=w((CH)=>{Object.defineProperty(CH,"__esModule",{value:!0});CH._globalThis=void 0;var EN0=ri();Object.defineProperty(CH,"_globalThis",{enumerable:!0,get:function(){return EN0._globalThis}})});var Jo=w((ei)=>{Object.defineProperty(ei,"__esModule",{value:!0});ei.API_BACKWARDS_COMPATIBILITY_VERSION=ei.makeGetter=ei._global=ei.GLOBAL_LOGS_API_KEY=void 0;var hN0=ti();ei.GLOBAL_LOGS_API_KEY=Symbol.for("io.opentelemetry.js.api.logs");ei._global=hN0._globalThis;function SN0(Z,J,Q){return($)=>$===Z?J:Q}ei.makeGetter=SN0;ei.API_BACKWARDS_COMPATIBILITY_VERSION=1});var Yo=w(($o)=>{Object.defineProperty($o,"__esModule",{value:!0});$o.LogsAPI=void 0;var K9=Jo(),xN0=y3(),Qo=LH();class PH{constructor(){this._proxyLoggerProvider=new Qo.ProxyLoggerProvider}static getInstance(){if(!this._instance)this._instance=new PH;return this._instance}setGlobalLoggerProvider(Z){if(K9._global[K9.GLOBAL_LOGS_API_KEY])return this.getLoggerProvider();return K9._global[K9.GLOBAL_LOGS_API_KEY]=(0,K9.makeGetter)(K9.API_BACKWARDS_COMPATIBILITY_VERSION,Z,xN0.NOOP_LOGGER_PROVIDER),this._proxyLoggerProvider._setDelegate(Z),Z}getLoggerProvider(){var Z,J;return(J=(Z=K9._global[K9.GLOBAL_LOGS_API_KEY])===null||Z===void 0?void 0:Z.call(K9._global,K9.API_BACKWARDS_COMPATIBILITY_VERSION))!==null&&J!==void 0?J:this._proxyLoggerProvider}getLogger(Z,J,Q){return this.getLoggerProvider().getLogger(Z,J,Q)}disable(){delete K9._global[K9.GLOBAL_LOGS_API_KEY],this._proxyLoggerProvider=new Qo.ProxyLoggerProvider}}$o.LogsAPI=PH});var kH=w((DZ)=>{Object.defineProperty(DZ,"__esModule",{value:!0});DZ.logs=DZ.ProxyLoggerProvider=DZ.ProxyLogger=DZ.NoopLoggerProvider=DZ.NOOP_LOGGER_PROVIDER=DZ.NoopLogger=DZ.NOOP_LOGGER=DZ.SeverityNumber=void 0;var gN0=bi();Object.defineProperty(DZ,"SeverityNumber",{enumerable:!0,get:function(){return gN0.SeverityNumber}});var Wo=E3();Object.defineProperty(DZ,"NOOP_LOGGER",{enumerable:!0,get:function(){return Wo.NOOP_LOGGER}});Object.defineProperty(DZ,"NoopLogger",{enumerable:!0,get:function(){return Wo.NoopLogger}});var Ko=y3();Object.defineProperty(DZ,"NOOP_LOGGER_PROVIDER",{enumerable:!0,get:function(){return Ko.NOOP_LOGGER_PROVIDER}});Object.defineProperty(DZ,"NoopLoggerProvider",{enumerable:!0,get:function(){return Ko.NoopLoggerProvider}});var dN0=qH();Object.defineProperty(DZ,"ProxyLogger",{enumerable:!0,get:function(){return dN0.ProxyLogger}});var cN0=LH();Object.defineProperty(DZ,"ProxyLoggerProvider",{enumerable:!0,get:function(){return cN0.ProxyLoggerProvider}});var mN0=Yo();DZ.logs=mN0.LogsAPI.getInstance()});var Ho=w((Go)=>{Object.defineProperty(Go,"__esModule",{value:!0});Go.disableInstrumentations=Go.enableInstrumentations=void 0;function uN0(Z,J,Q,$){for(let X=0,Y=Z.length;XJ.disable())}Go.disableInstrumentations=lN0});var Uo=w((wo)=>{Object.defineProperty(wo,"__esModule",{value:!0});wo.registerInstrumentations=void 0;var Vo=C(),iN0=kH(),Fo=Ho();function oN0(Z){let J=Z.tracerProvider||Vo.trace.getTracerProvider(),Q=Z.meterProvider||Vo.metrics.getMeterProvider(),$=Z.loggerProvider||iN0.logs.getLoggerProvider(),X=Z.instrumentations?.flat()??[];return(0,Fo.enableInstrumentations)(X,J,Q,$),()=>{(0,Fo.disableInstrumentations)(X)}}wo.registerInstrumentations=oN0});var Io=w((Ro)=>{Object.defineProperty(Ro,"__esModule",{value:!0});Ro.satisfies=void 0;var IH=C(),Co=/^(?:v)?(?(?0|[1-9]\d*)\.(?0|[1-9]\d*)\.(?0|[1-9]\d*))(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,nN0=/^(?<|>|=|==|<=|>=|~|\^|~>)?\s*(?:v)?(?(?x|X|\*|0|[1-9]\d*)(?:\.(?x|X|\*|0|[1-9]\d*))?(?:\.(?x|X|\*|0|[1-9]\d*))?)(?:-(?(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,aN0={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};function sN0(Z,J,Q){if(!rN0(Z))return IH.diag.error(`Invalid version: ${Z}`),!1;if(!J)return!0;J=J.replace(/([<>=~^]+)\s+/g,"$1");let $=JT0(Z);if(!$)return!1;let X=[],Y=Po($,J,X,Q);if(Y&&!Q?.includePrerelease)return eN0($,X);return Y}Ro.satisfies=sN0;function rN0(Z){return typeof Z==="string"&&Co.test(Z)}function Po(Z,J,Q,$){if(J.includes("||")){let X=J.trim().split("||");for(let Y of X)if(MH(Z,Y,Q,$))return!0;return!1}else if(J.includes(" - "))J=PT0(J,$);else if(J.includes(" ")){let X=J.trim().replace(/\s{2,}/g," ").split(" ");for(let Y of X)if(!MH(Z,Y,Q,$))return!1;return!0}return MH(Z,J,Q,$)}function MH(Z,J,Q,$){if(J=ZT0(J,$),J.includes(" "))return Po(Z,J,Q,$);else{let X=QT0(J);return Q.push(X),tN0(Z,X)}}function tN0(Z,J){if(J.invalid)return!1;if(!J.version||AH(J.version))return!0;let Q=qo(Z.versionSegments||[],J.versionSegments||[]);if(Q===0){let $=Z.prereleaseSegments||[],X=J.prereleaseSegments||[];if(!$.length&&!X.length)Q=0;else if(!$.length&&X.length)Q=1;else if($.length&&!X.length)Q=-1;else Q=qo($,X)}return aN0[J.op]?.includes(Q)}function eN0(Z,J){if(Z.prerelease)return J.some((Q)=>Q.prerelease&&Q.version===Z.version);return!0}function ZT0(Z,J){return Z=Z.trim(),Z=OT0(Z,J),Z=LT0(Z),Z=CT0(Z,J),Z=Z.trim(),Z}function B6(Z){return!Z||Z.toLowerCase()==="x"||Z==="*"}function JT0(Z){let J=Z.match(Co);if(!J){IH.diag.error(`Invalid version: ${Z}`);return}let Q=J.groups.version,$=J.groups.prerelease,X=J.groups.build,Y=Q.split("."),W=$?.split(".");return{op:void 0,version:Q,versionSegments:Y,versionSegmentCount:Y.length,prerelease:$,prereleaseSegments:W,prereleaseSegmentCount:W?W.length:0,build:X}}function QT0(Z){if(!Z)return{};let J=Z.match(nN0);if(!J)return IH.diag.error(`Invalid range: ${Z}`),{invalid:!0};let Q=J.groups.op,$=J.groups.version,X=J.groups.prerelease,Y=J.groups.build,W=$.split("."),K=X?.split(".");if(Q==="==")Q="=";return{op:Q||"=",version:$,versionSegments:W,versionSegmentCount:W.length,prerelease:X,prereleaseSegments:K,prereleaseSegmentCount:K?K.length:0,build:Y}}function AH(Z){return Z==="*"||Z==="x"||Z==="X"}function jo(Z){let J=parseInt(Z,10);return isNaN(J)?Z:J}function $T0(Z,J){if(typeof Z===typeof J)if(typeof Z==="number")return[Z,J];else if(typeof Z==="string")return[Z,J];else throw Error("Version segments can only be strings or numbers");else return[String(Z),String(J)]}function XT0(Z,J){if(AH(Z)||AH(J))return 0;let[Q,$]=$T0(jo(Z),jo(J));if(Q>$)return 1;else if(Q<$)return-1;return 0}function qo(Z,J){for(let Q=0;Q)?=?)",Lo=`(?:${Mo}|${YT0})`,KT0=`(?:-(${Lo}(?:\\.${Lo})*))`,Oo=`${ko}+`,zT0=`(?:\\+(${Oo}(?:\\.${Oo})*))`,RH=`${Mo}|x|X|\\*`,HJ=`[v=\\s]*(${RH})(?:\\.(${RH})(?:\\.(${RH})(?:${KT0})?${zT0}?)?)?`,GT0=`^${WT0}\\s*${HJ}$`,BT0=new RegExp(GT0),HT0=`^\\s*(${HJ})\\s+-\\s+(${HJ})\\s*$`,VT0=new RegExp(HT0),FT0="(?:~>?)",wT0=`^${FT0}${HJ}$`,DT0=new RegExp(wT0),UT0="(?:\\^)",jT0=`^${UT0}${HJ}$`,qT0=new RegExp(jT0);function LT0(Z){let J=DT0;return Z.replace(J,(Q,$,X,Y,W)=>{let K;if(B6($))K="";else if(B6(X))K=`>=${$}.0.0 <${+$+1}.0.0-0`;else if(B6(Y))K=`>=${$}.${X}.0 <${$}.${+X+1}.0-0`;else if(W)K=`>=${$}.${X}.${Y}-${W} <${$}.${+X+1}.0-0`;else K=`>=${$}.${X}.${Y} <${$}.${+X+1}.0-0`;return K})}function OT0(Z,J){let Q=qT0,$=J?.includePrerelease?"-0":"";return Z.replace(Q,(X,Y,W,K,z)=>{let G;if(B6(Y))G="";else if(B6(W))G=`>=${Y}.0.0${$} <${+Y+1}.0.0-0`;else if(B6(K))if(Y==="0")G=`>=${Y}.${W}.0${$} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.0${$} <${+Y+1}.0.0-0`;else if(z)if(Y==="0")if(W==="0")G=`>=${Y}.${W}.${K}-${z} <${Y}.${W}.${+K+1}-0`;else G=`>=${Y}.${W}.${K}-${z} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.${K}-${z} <${+Y+1}.0.0-0`;else if(Y==="0")if(W==="0")G=`>=${Y}.${W}.${K}${$} <${Y}.${W}.${+K+1}-0`;else G=`>=${Y}.${W}.${K}${$} <${Y}.${+W+1}.0-0`;else G=`>=${Y}.${W}.${K} <${+Y+1}.0.0-0`;return G})}function CT0(Z,J){let Q=BT0;return Z.replace(Q,($,X,Y,W,K,z)=>{let G=B6(Y),H=G||B6(W),B=H||B6(K),V=B;if(X==="="&&V)X="";if(z=J?.includePrerelease?"-0":"",G)if(X===">"||X==="<")$="<0.0.0-0";else $="*";else if(X&&V){if(H)W=0;if(K=0,X===">")if(X=">=",H)Y=+Y+1,W=0,K=0;else W=+W+1,K=0;else if(X==="<=")if(X="<",H)Y=+Y+1;else W=+W+1;if(X==="<")z="-0";$=`${X+Y}.${W}.${K}${z}`}else if(H)$=`>=${Y}.0.0${z} <${+Y+1}.0.0-0`;else if(B)$=`>=${Y}.${W}.0${z} <${Y}.${+W+1}.0-0`;return $})}function PT0(Z,J){let Q=VT0;return Z.replace(Q,($,X,Y,W,K,z,G,H,B,V,F,D)=>{if(B6(Y))X="";else if(B6(W))X=`>=${Y}.0.0${J?.includePrerelease?"-0":""}`;else if(B6(K))X=`>=${Y}.${W}.0${J?.includePrerelease?"-0":""}`;else if(z)X=`>=${X}`;else X=`>=${X}${J?.includePrerelease?"-0":""}`;if(B6(B))H="";else if(B6(V))H=`<${+B+1}.0.0-0`;else if(B6(F))H=`<${B}.${+V+1}.0-0`;else if(D)H=`<=${B}.${V}.${F}-${D}`;else if(J?.includePrerelease)H=`<${B}.${V}.${+F+1}-0`;else H=`<=${H}`;return`${X} ${H}`.trim()})}});var EH=w((No)=>{Object.defineProperty(No,"__esModule",{value:!0});No.massUnwrap=No.unwrap=No.massWrap=No.wrap=void 0;var H6=console.error.bind(console);function VJ(Z,J,Q){let $=!!Z[J]&&Object.prototype.propertyIsEnumerable.call(Z,J);Object.defineProperty(Z,J,{configurable:!0,enumerable:$,writable:!0,value:Q})}var kT0=(Z,J,Q)=>{if(!Z||!Z[J]){H6("no original function "+String(J)+" to wrap");return}if(!Q){H6("no wrapper function"),H6(Error().stack);return}let $=Z[J];if(typeof $!=="function"||typeof Q!=="function"){H6("original object and wrapper must be functions");return}let X=Q($,J);return VJ(X,"__original",$),VJ(X,"__unwrap",()=>{if(Z[J]===X)VJ(Z,J,$)}),VJ(X,"__wrapped",!0),VJ(Z,J,X),X};No.wrap=kT0;var MT0=(Z,J,Q)=>{if(!Z){H6("must provide one or more modules to patch"),H6(Error().stack);return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){H6("must provide one or more functions to wrap on modules");return}Z.forEach(($)=>{J.forEach((X)=>{No.wrap($,X,Q)})})};No.massWrap=MT0;var RT0=(Z,J)=>{if(!Z||!Z[J]){H6("no function to unwrap."),H6(Error().stack);return}let Q=Z[J];if(!Q.__unwrap)H6("no original to unwrap to -- has "+String(J)+" already been unwrapped?");else{Q.__unwrap();return}};No.unwrap=RT0;var AT0=(Z,J)=>{if(!Z){H6("must provide one or more modules to patch"),H6(Error().stack);return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){H6("must provide one or more functions to unwrap on modules");return}Z.forEach((Q)=>{J.forEach(($)=>{No.unwrap(Q,$)})})};No.massUnwrap=AT0;function FJ(Z){if(Z&&Z.logger)if(typeof Z.logger!=="function")H6("new logger isn't a function, not replacing");else H6=Z.logger}No.default=FJ;FJ.wrap=No.wrap;FJ.massWrap=No.massWrap;FJ.unwrap=No.unwrap;FJ.massUnwrap=No.massUnwrap});var ho=w((Eo)=>{Object.defineProperty(Eo,"__esModule",{value:!0});Eo.InstrumentationAbstract=void 0;var yH=C(),NT0=kH(),h3=EH();class fo{instrumentationName;instrumentationVersion;_config={};_tracer;_meter;_logger;_diag;constructor(Z,J,Q){this.instrumentationName=Z,this.instrumentationVersion=J,this.setConfig(Q),this._diag=yH.diag.createComponentLogger({namespace:Z}),this._tracer=yH.trace.getTracer(Z,J),this._meter=yH.metrics.getMeter(Z,J),this._logger=NT0.logs.getLogger(Z,J),this._updateMetricInstruments()}_wrap=h3.wrap;_unwrap=h3.unwrap;_massWrap=h3.massWrap;_massUnwrap=h3.massUnwrap;get meter(){return this._meter}setMeterProvider(Z){this._meter=Z.getMeter(this.instrumentationName,this.instrumentationVersion),this._updateMetricInstruments()}get logger(){return this._logger}setLoggerProvider(Z){this._logger=Z.getLogger(this.instrumentationName,this.instrumentationVersion)}getModuleDefinitions(){let Z=this.init()??[];if(!Array.isArray(Z))return[Z];return Z}_updateMetricInstruments(){return}getConfig(){return this._config}setConfig(Z){this._config={enabled:!0,...Z}}setTracerProvider(Z){this._tracer=Z.getTracer(this.instrumentationName,this.instrumentationVersion)}get tracer(){return this._tracer}_runSpanCustomizationHook(Z,J,Q,$){if(!Z)return;try{Z(Q,$)}catch(X){this._diag.error("Error running span customization hook due to exception in handler",{triggerName:J},X)}}}Eo.InstrumentationAbstract=fo});var bo=w((_o)=>{Object.defineProperty(_o,"__esModule",{value:!0});_o.ModuleNameTrie=_o.ModuleNameSeparator=void 0;_o.ModuleNameSeparator="/";class hH{hooks=[];children=new Map}class So{_trie=new hH;_counter=0;insert(Z){let J=this._trie;for(let Q of Z.moduleName.split(_o.ModuleNameSeparator)){let $=J.children.get(Q);if(!$)$=new hH,J.children.set(Q,$);J=$}J.hooks.push({hook:Z,insertedId:this._counter++})}search(Z,{maintainInsertionOrder:J,fullOnly:Q}={}){let $=this._trie,X=[],Y=!0;for(let W of Z.split(_o.ModuleNameSeparator)){let K=$.children.get(W);if(!K){Y=!1;break}if(!Q)X.push(...K.hooks);$=K}if(Q&&Y)X.push(...$.hooks);if(X.length===0)return[];if(X.length===1)return[X[0].hook];if(J)X.sort((W,K)=>W.insertedId-K.insertedId);return X.map(({hook:W})=>W)}}_o.ModuleNameTrie=So});var mo=w((go)=>{Object.defineProperty(go,"__esModule",{value:!0});go.RequireInTheMiddleSingleton=void 0;var TT0=I7(),xo=A("path"),_H=bo(),fT0=["afterEach","after","beforeEach","before","describe","it"].every((Z)=>{return typeof global[Z]==="function"});class S3{_moduleNameTrie=new _H.ModuleNameTrie;static _instance;constructor(){this._initialize()}_initialize(){new TT0.Hook(null,{internals:!0},(Z,J,Q)=>{let $=ET0(J),X=this._moduleNameTrie.search($,{maintainInsertionOrder:!0,fullOnly:Q===void 0});for(let{onRequire:Y}of X)Z=Y(Z,J,Q);return Z})}register(Z,J){let Q={moduleName:Z,onRequire:J};return this._moduleNameTrie.insert(Q),Q}static getInstance(){if(fT0)return new S3;return this._instance=this._instance??new S3}}go.RequireInTheMiddleSingleton=S3;function ET0(Z){return xo.sep!==_H.ModuleNameSeparator?Z.split(xo.sep).join(_H.ModuleNameSeparator):Z}});var oo=w((ST0)=>{var uo=[],vH=new WeakMap,lo=new WeakMap,po=new Map,io=[],yT0={set(Z,J,Q){let $=vH.get(Z),X=$&&$[J];if(typeof X==="function")return X(Q);return!0},get(Z,J){if(J===Symbol.toStringTag)return"Module";let Q=lo.get(Z)[J];if(typeof Q==="function")return Q()},defineProperty(Z,J,Q){if(!("value"in Q))throw Error("Getters/setters are not supported for exports property descriptors.");let $=vH.get(Z),X=$&&$[J];if(typeof X==="function")return X(Q.value);return!0}};function hT0(Z,J,Q,$,X){po.set(Z,X),vH.set(J,Q),lo.set(J,$);let Y=new Proxy(J,yT0);uo.forEach((W)=>W(Z,Y,X)),io.push([Z,Y,X])}ST0.register=hT0;ST0.importHooks=uo;ST0.specifiers=po;ST0.toHook=io});var ro=w((E46,g8)=>{var no=A("path"),gT0=B5(),{fileURLToPath:dT0}=A("url"),{MessageChannel:cT0}=A("worker_threads"),{isBuiltin:bH}=A("module");if(!bH)bH=()=>!0;var{importHooks:xH,specifiers:mT0,toHook:uT0}=oo();function ao(Z){xH.push(Z),uT0.forEach(([J,Q,$])=>Z(J,Q,$))}function so(Z){let J=xH.indexOf(Z);if(J>-1)xH.splice(J,1)}function x8(Z,J,Q,$){let X=Z(J,Q,$);if(X&&X!==J){if("default"in J)J.default=X}}var gH;function lT0(){let{port1:Z,port2:J}=new cT0,Q=0,$;gH=(K)=>{Q++,Z.postMessage(K)},Z.on("message",()=>{if(Q--,$&&Q<=0)$()}).unref();function X(){let K=setInterval(()=>{},1000),z=new Promise((G)=>{$=G}).then(()=>{clearInterval(K)});if(Q===0)$();return z}let Y=J;return{registerOptions:{data:{addHookMessagePort:Y,include:[]},transferList:[Y]},addHookMessagePort:Y,waitForAllMessagesAcknowledged:X}}function wJ(Z,J,Q){if(this instanceof wJ===!1)return new wJ(Z,J,Q);if(typeof Z==="function")Q=Z,Z=null,J=null;else if(typeof J==="function")Q=J,J=null;let $=J?J.internals===!0:!1;if(gH&&Array.isArray(Z))gH(Z);this._iitmHook=(X,Y,W)=>{let K=X,z=K.startsWith("node:"),G,H;if(z){let B=X.slice(5);if(bH(B))X=B}else if(K.startsWith("file://")){let B=Error.stackTraceLimit;Error.stackTraceLimit=0;try{G=dT0(X),X=G}catch(V){}if(Error.stackTraceLimit=B,G){let V=gT0(G);if(V)X=V.name,H=V.basedir}}if(Z){for(let B of Z)if(G&&B===G)x8(Q,Y,G,void 0);else if(B===X){if(!H)x8(Q,Y,X,H);else if(H.endsWith(mT0.get(K)))x8(Q,Y,X,H);else if($){let V=X+no.sep+no.relative(H,G);x8(Q,Y,V,H)}}else if(B===W)x8(Q,Y,W,H)}else x8(Q,Y,X,H)},ao(this._iitmHook)}wJ.prototype.unhook=function(){so(this._iitmHook)};g8.exports=wJ;g8.exports.Hook=wJ;g8.exports.addHook=ao;g8.exports.removeHook=so;g8.exports.createAddHookMessageChannel=lT0});var dH=w((to)=>{Object.defineProperty(to,"__esModule",{value:!0});to.isWrapped=to.safeExecuteInTheMiddleAsync=to.safeExecuteInTheMiddle=void 0;function pT0(Z,J,Q){let $,X;try{X=Z()}catch(Y){$=Y}finally{if(J($,X),$&&!Q)throw $;return X}}to.safeExecuteInTheMiddle=pT0;async function iT0(Z,J,Q){let $,X;try{X=await Z()}catch(Y){$=Y}finally{if(J($,X),$&&!Q)throw $;return X}}to.safeExecuteInTheMiddleAsync=iT0;function oT0(Z){return typeof Z==="function"&&typeof Z.__original==="function"&&typeof Z.__unwrap==="function"&&Z.__wrapped===!0}to.isWrapped=oT0});var Yn=w(($n)=>{Object.defineProperty($n,"__esModule",{value:!0});$n.InstrumentationBase=void 0;var DJ=A("path"),Zn=A("util"),sT0=Io(),cH=EH(),rT0=ho(),tT0=mo(),eT0=ro(),UJ=C(),Zf0=I7(),Jf0=A("fs"),Qf0=dH();class Qn extends rT0.InstrumentationAbstract{_modules;_hooks=[];_requireInTheMiddleSingleton=tT0.RequireInTheMiddleSingleton.getInstance();_enabled=!1;constructor(Z,J,Q){super(Z,J,Q);let $=this.init();if($&&!Array.isArray($))$=[$];if(this._modules=$||[],this._config.enabled)this.enable()}_wrap=(Z,J,Q)=>{if((0,Qf0.isWrapped)(Z[J]))this._unwrap(Z,J);if(!Zn.types.isProxy(Z))return(0,cH.wrap)(Z,J,Q);else{let $=(0,cH.wrap)(Object.assign({},Z),J,Q);return Object.defineProperty(Z,J,{value:$}),$}};_unwrap=(Z,J)=>{if(!Zn.types.isProxy(Z))return(0,cH.unwrap)(Z,J);else return Object.defineProperty(Z,J,{value:Z[J]})};_massWrap=(Z,J,Q)=>{if(!Z){UJ.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){UJ.diag.error("must provide one or more functions to wrap on modules");return}Z.forEach(($)=>{J.forEach((X)=>{this._wrap($,X,Q)})})};_massUnwrap=(Z,J)=>{if(!Z){UJ.diag.error("must provide one or more modules to patch");return}else if(!Array.isArray(Z))Z=[Z];if(!(J&&Array.isArray(J))){UJ.diag.error("must provide one or more functions to wrap on modules");return}Z.forEach((Q)=>{J.forEach(($)=>{this._unwrap(Q,$)})})};_warnOnPreloadedModules(){this._modules.forEach((Z)=>{let{name:J}=Z;try{let Q=A.resolve(J);if(A.cache[Q])this._diag.warn(`Module ${J} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${J}`)}catch{}})}_extractPackageVersion(Z){try{let J=(0,Jf0.readFileSync)(DJ.join(Z,"package.json"),{encoding:"utf8"}),Q=JSON.parse(J).version;return typeof Q==="string"?Q:void 0}catch{UJ.diag.warn("Failed extracting version",Z)}return}_onRequire(Z,J,Q,$){if(!$){if(typeof Z.patch==="function"){if(Z.moduleExports=J,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs core module on require hook",{module:Z.name}),Z.patch(J)}return J}let X=this._extractPackageVersion($);if(Z.moduleVersion=X,Z.name===Q){if(Jn(Z.supportedVersions,X,Z.includePrerelease)){if(typeof Z.patch==="function"){if(Z.moduleExports=J,this._enabled)return this._diag.debug("Applying instrumentation patch for module on require hook",{module:Z.name,version:Z.moduleVersion,baseDir:$}),Z.patch(J,Z.moduleVersion)}}return J}let Y=Z.files??[],W=DJ.normalize(Q);return Y.filter((z)=>z.name===W).filter((z)=>Jn(z.supportedVersions,X,Z.includePrerelease)).reduce((z,G)=>{if(G.moduleExports=z,this._enabled)return this._diag.debug("Applying instrumentation patch for nodejs module file on require hook",{module:Z.name,version:Z.moduleVersion,fileName:G.name,baseDir:$}),G.patch(z,Z.moduleVersion);return z},J)}enable(){if(this._enabled)return;if(this._enabled=!0,this._hooks.length>0){for(let Z of this._modules){if(typeof Z.patch==="function"&&Z.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module on instrumentation enabled",{module:Z.name,version:Z.moduleVersion}),Z.patch(Z.moduleExports,Z.moduleVersion);for(let J of Z.files)if(J.moduleExports)this._diag.debug("Applying instrumentation patch for nodejs module file on instrumentation enabled",{module:Z.name,version:Z.moduleVersion,fileName:J.name}),J.patch(J.moduleExports,Z.moduleVersion)}return}this._warnOnPreloadedModules();for(let Z of this._modules){let J=(Y,W,K)=>{if(!K&&DJ.isAbsolute(W)){let z=DJ.parse(W);W=z.name,K=z.dir}return this._onRequire(Z,Y,W,K)},Q=(Y,W,K)=>{return this._onRequire(Z,Y,W,K)},$=DJ.isAbsolute(Z.name)?new Zf0.Hook([Z.name],{internals:!0},Q):this._requireInTheMiddleSingleton.register(Z.name,Q);this._hooks.push($);let X=new eT0.Hook([Z.name],{internals:!1},J);this._hooks.push(X)}}disable(){if(!this._enabled)return;this._enabled=!1;for(let Z of this._modules){if(typeof Z.unpatch==="function"&&Z.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module on instrumentation disabled",{module:Z.name,version:Z.moduleVersion}),Z.unpatch(Z.moduleExports,Z.moduleVersion);for(let J of Z.files)if(J.moduleExports)this._diag.debug("Removing instrumentation patch for nodejs module file on instrumentation disabled",{module:Z.name,version:Z.moduleVersion,fileName:J.name}),J.unpatch(J.moduleExports,Z.moduleVersion)}}isEnabled(){return this._enabled}}$n.InstrumentationBase=Qn;function Jn(Z,J,Q){if(typeof J>"u")return Z.includes("*");return Z.some(($)=>{return(0,sT0.satisfies)(J,$,{includePrerelease:Q})})}});var Wn=w((mH)=>{Object.defineProperty(mH,"__esModule",{value:!0});mH.normalize=void 0;var $f0=A("path");Object.defineProperty(mH,"normalize",{enumerable:!0,get:function(){return $f0.normalize}})});var Kn=w((_3)=>{Object.defineProperty(_3,"__esModule",{value:!0});_3.normalize=_3.InstrumentationBase=void 0;var Yf0=Yn();Object.defineProperty(_3,"InstrumentationBase",{enumerable:!0,get:function(){return Yf0.InstrumentationBase}});var Wf0=Wn();Object.defineProperty(_3,"normalize",{enumerable:!0,get:function(){return Wf0.normalize}})});var uH=w((v3)=>{Object.defineProperty(v3,"__esModule",{value:!0});v3.normalize=v3.InstrumentationBase=void 0;var zn=Kn();Object.defineProperty(v3,"InstrumentationBase",{enumerable:!0,get:function(){return zn.InstrumentationBase}});Object.defineProperty(v3,"normalize",{enumerable:!0,get:function(){return zn.normalize}})});var Vn=w((Bn)=>{Object.defineProperty(Bn,"__esModule",{value:!0});Bn.InstrumentationNodeModuleDefinition=void 0;class Gn{name;supportedVersions;patch;unpatch;files;constructor(Z,J,Q,$,X){this.name=Z,this.supportedVersions=J,this.patch=Q,this.unpatch=$,this.files=X||[]}}Bn.InstrumentationNodeModuleDefinition=Gn});var Un=w((wn)=>{Object.defineProperty(wn,"__esModule",{value:!0});wn.InstrumentationNodeModuleFile=void 0;var Gf0=uH();class Fn{supportedVersions;patch;unpatch;name;constructor(Z,J,Q,$){this.supportedVersions=J,this.patch=Q,this.unpatch=$,this.name=(0,Gf0.normalize)(Z)}}wn.InstrumentationNodeModuleFile=Fn});var On=w((qn)=>{Object.defineProperty(qn,"__esModule",{value:!0});qn.semconvStabilityFromStr=qn.SemconvStability=void 0;var b3;(function(Z){Z[Z.STABLE=1]="STABLE",Z[Z.OLD=2]="OLD",Z[Z.DUPLICATE=3]="DUPLICATE"})(b3=qn.SemconvStability||(qn.SemconvStability={}));function Bf0(Z,J){let Q=b3.OLD,$=J?.split(",").map((X)=>X.trim()).filter((X)=>X!=="");for(let X of $??[])if(X.toLowerCase()===Z+"/dup"){Q=b3.DUPLICATE;break}else if(X.toLowerCase()===Z)Q=b3.STABLE;return Q}qn.semconvStabilityFromStr=Bf0});var Pn=w((A9)=>{Object.defineProperty(A9,"__esModule",{value:!0});A9.semconvStabilityFromStr=A9.SemconvStability=A9.safeExecuteInTheMiddleAsync=A9.safeExecuteInTheMiddle=A9.isWrapped=A9.InstrumentationNodeModuleFile=A9.InstrumentationNodeModuleDefinition=A9.InstrumentationBase=A9.registerInstrumentations=void 0;var Hf0=Uo();Object.defineProperty(A9,"registerInstrumentations",{enumerable:!0,get:function(){return Hf0.registerInstrumentations}});var Vf0=uH();Object.defineProperty(A9,"InstrumentationBase",{enumerable:!0,get:function(){return Vf0.InstrumentationBase}});var Ff0=Vn();Object.defineProperty(A9,"InstrumentationNodeModuleDefinition",{enumerable:!0,get:function(){return Ff0.InstrumentationNodeModuleDefinition}});var wf0=Un();Object.defineProperty(A9,"InstrumentationNodeModuleFile",{enumerable:!0,get:function(){return wf0.InstrumentationNodeModuleFile}});var lH=dH();Object.defineProperty(A9,"isWrapped",{enumerable:!0,get:function(){return lH.isWrapped}});Object.defineProperty(A9,"safeExecuteInTheMiddle",{enumerable:!0,get:function(){return lH.safeExecuteInTheMiddle}});Object.defineProperty(A9,"safeExecuteInTheMiddleAsync",{enumerable:!0,get:function(){return lH.safeExecuteInTheMiddleAsync}});var Cn=On();Object.defineProperty(A9,"SemconvStability",{enumerable:!0,get:function(){return Cn.SemconvStability}});Object.defineProperty(A9,"semconvStabilityFromStr",{enumerable:!0,get:function(){return Cn.semconvStabilityFromStr}})});var vn=w((Sn)=>{Object.defineProperty(Sn,"__esModule",{value:!0});Sn.PACKAGE_NAME=Sn.PACKAGE_VERSION=void 0;Sn.PACKAGE_VERSION="0.59.0";Sn.PACKAGE_NAME="@opentelemetry/instrumentation-hapi"});var oH=w((bn)=>{Object.defineProperty(bn,"__esModule",{value:!0});bn.HapiLifecycleMethodNames=bn.HapiLayerType=bn.handlerPatched=bn.HapiComponentName=void 0;bn.HapiComponentName="@hapi/hapi";bn.handlerPatched=Symbol("hapi-handler-patched");bn.HapiLayerType={ROUTER:"router",PLUGIN:"plugin",EXT:"server.ext"};bn.HapiLifecycleMethodNames=new Set(["onPreAuth","onCredentials","onPostAuth","onPreHandler","onPostHandler","onPreResponse","onRequest"])});var cn=w((gn)=>{Object.defineProperty(gn,"__esModule",{value:!0});gn.ATTR_HTTP_METHOD=void 0;gn.ATTR_HTTP_METHOD="http.method"});var aH=w((mn)=>{Object.defineProperty(mn,"__esModule",{value:!0});mn.AttributeNames=void 0;var _f0;(function(Z){Z.HAPI_TYPE="hapi.type",Z.PLUGIN_NAME="hapi.plugin.name",Z.EXT_TYPE="server.ext.type"})(_f0=mn.AttributeNames||(mn.AttributeNames={}))});var nn=w((pn)=>{Object.defineProperty(pn,"__esModule",{value:!0});pn.getPluginFromInput=pn.getExtMetadata=pn.getRouteMetadata=pn.isPatchableExtMethod=pn.isDirectExtInput=pn.isLifecycleExtEventObj=pn.isLifecycleExtType=pn.getPluginName=void 0;var un=s(),vf0=cn(),jJ=oH(),z7=aH(),ln=c();function bf0(Z){if(Z.name)return Z.name;else return Z.pkg.name}pn.getPluginName=bf0;var xf0=(Z)=>{return typeof Z==="string"&&jJ.HapiLifecycleMethodNames.has(Z)};pn.isLifecycleExtType=xf0;var gf0=(Z)=>{let J=Z?.type;return J!==void 0&&pn.isLifecycleExtType(J)};pn.isLifecycleExtEventObj=gf0;var df0=(Z)=>{return Array.isArray(Z)&&Z.length<=3&&pn.isLifecycleExtType(Z[0])&&typeof Z[1]==="function"};pn.isDirectExtInput=df0;var cf0=(Z)=>{return!Array.isArray(Z)};pn.isPatchableExtMethod=cf0;var mf0=(Z,J,Q)=>{let $={[un.ATTR_HTTP_ROUTE]:Z.path};if(J&ln.SemconvStability.OLD)$[vf0.ATTR_HTTP_METHOD]=Z.method;if(J&ln.SemconvStability.STABLE)$[un.ATTR_HTTP_REQUEST_METHOD]=Z.method;let X;if(Q)$[z7.AttributeNames.HAPI_TYPE]=jJ.HapiLayerType.PLUGIN,$[z7.AttributeNames.PLUGIN_NAME]=Q,X=`${Q}: route - ${Z.path}`;else $[z7.AttributeNames.HAPI_TYPE]=jJ.HapiLayerType.ROUTER,X=`route - ${Z.path}`;return{attributes:$,name:X}};pn.getRouteMetadata=mf0;var uf0=(Z,J)=>{if(J)return{attributes:{[z7.AttributeNames.EXT_TYPE]:Z,[z7.AttributeNames.HAPI_TYPE]:jJ.HapiLayerType.EXT,[z7.AttributeNames.PLUGIN_NAME]:J},name:`${J}: ext - ${Z}`};return{attributes:{[z7.AttributeNames.EXT_TYPE]:Z,[z7.AttributeNames.HAPI_TYPE]:jJ.HapiLayerType.EXT},name:`ext - ${Z}`}};pn.getExtMetadata=uf0;var lf0=(Z)=>{if("plugin"in Z){if("plugin"in Z.plugin)return Z.plugin.plugin;return Z.plugin}return Z};pn.getPluginFromInput=lf0});var Za=w((tn)=>{Object.defineProperty(tn,"__esModule",{value:!0});tn.HapiInstrumentation=void 0;var d6=C(),an=Q0(),qJ=c(),sn=vn(),LJ=oH(),UZ=nn();class rn extends qJ.InstrumentationBase{_semconvStability;constructor(Z={}){super(sn.PACKAGE_NAME,sn.PACKAGE_VERSION,Z);this._semconvStability=(0,qJ.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return new qJ.InstrumentationNodeModuleDefinition(LJ.HapiComponentName,[">=17.0.0 <22"],(Z)=>{let J=Z[Symbol.toStringTag]==="Module"?Z.default:Z;if(!(0,qJ.isWrapped)(J.server))this._wrap(J,"server",this._getServerPatch.bind(this));if(!(0,qJ.isWrapped)(J.Server))this._wrap(J,"Server",this._getServerPatch.bind(this));return J},(Z)=>{let J=Z[Symbol.toStringTag]==="Module"?Z.default:Z;this._massUnwrap([J],["server","Server"])})}_getServerPatch(Z){let J=this,Q=this;return function(X){let Y=Z.apply(this,[X]);return Q._wrap(Y,"route",(W)=>{return J._getServerRoutePatch.bind(J)(W)}),Q._wrap(Y,"ext",(W)=>{return J._getServerExtPatch.bind(J)(W)}),Q._wrap(Y,"register",J._getServerRegisterPatch.bind(J)),Y}}_getServerRegisterPatch(Z){let J=this;return function($,X){if(Array.isArray($))for(let Y of $){let W=(0,UZ.getPluginFromInput)(Y);J._wrapRegisterHandler(W)}else{let Y=(0,UZ.getPluginFromInput)($);J._wrapRegisterHandler(Y)}return Z.apply(this,[$,X])}}_getServerExtPatch(Z,J){let Q=this;return function(...X){if(Array.isArray(X[0])){let Y=X[0];for(let W=0;W{return J._getServerRoutePatch.bind(J)(z,Q)}),X._wrap(W,"ext",(z)=>{return J._getServerExtPatch.bind(J)(z,Q)}),$.call(this,W,K)};Z.register=Y}_wrapExtMethods(Z,J,Q){let $=this;if(Z instanceof Array){for(let X=0;X{return async function(...Y){if(d6.trace.getSpan(d6.context.active())===void 0)return await X.call(this,...Y);let W=(0,an.getRPCMetadata)(d6.context.active());if(W?.type===an.RPCType.HTTP)W.route=Z.path;let K=(0,UZ.getRouteMetadata)(Z,Q._semconvStability,J),z=Q.tracer.startSpan(K.name,{attributes:K.attributes});try{return await d6.context.with(d6.trace.setSpan(d6.context.active(),z),()=>X.call(this,...Y))}catch(G){throw z.recordException(G),z.setStatus({code:d6.SpanStatusCode.ERROR,message:G.message}),G}finally{z.end()}}};if(typeof Z.handler==="function")Z.handler=$(Z.handler);else if(typeof Z.options==="function"){let X=Z.options;Z.options=function(Y){let W=X(Y);if(typeof W.handler==="function")W.handler=$(W.handler);return W}}else if(typeof Z.options?.handler==="function")Z.options.handler=$(Z.options.handler);return Z}}tn.HapiInstrumentation=rn});var Ja=w((g3)=>{Object.defineProperty(g3,"__esModule",{value:!0});g3.AttributeNames=g3.HapiInstrumentation=void 0;var rf0=Za();Object.defineProperty(g3,"HapiInstrumentation",{enumerable:!0,get:function(){return rf0.HapiInstrumentation}});var tf0=aH();Object.defineProperty(g3,"AttributeNames",{enumerable:!0,get:function(){return tf0.AttributeNames}})});var m3=w((Ga)=>{Object.defineProperty(Ga,"__esModule",{value:!0});Ga.KoaLayerType=void 0;var YE0;(function(Z){Z.ROUTER="router",Z.MIDDLEWARE="middleware"})(YE0=Ga.KoaLayerType||(Ga.KoaLayerType={}))});var Va=w((Ba)=>{Object.defineProperty(Ba,"__esModule",{value:!0});Ba.PACKAGE_NAME=Ba.PACKAGE_VERSION=void 0;Ba.PACKAGE_VERSION="0.61.0";Ba.PACKAGE_NAME="@opentelemetry/instrumentation-koa"});var ZV=w((Fa)=>{Object.defineProperty(Fa,"__esModule",{value:!0});Fa.AttributeNames=void 0;var KE0;(function(Z){Z.KOA_TYPE="koa.type",Z.KOA_NAME="koa.name"})(KE0=Fa.AttributeNames||(Fa.AttributeNames={}))});var ja=w((Da)=>{Object.defineProperty(Da,"__esModule",{value:!0});Da.isLayerIgnored=Da.getMiddlewareMetadata=void 0;var wa=m3(),u3=ZV(),zE0=s(),GE0=(Z,J,Q,$)=>{if(Q)return{attributes:{[u3.AttributeNames.KOA_NAME]:$?.toString(),[u3.AttributeNames.KOA_TYPE]:wa.KoaLayerType.ROUTER,[zE0.ATTR_HTTP_ROUTE]:$?.toString()},name:Z._matchedRouteName||`router - ${$}`};else return{attributes:{[u3.AttributeNames.KOA_NAME]:J.name??"middleware",[u3.AttributeNames.KOA_TYPE]:wa.KoaLayerType.MIDDLEWARE},name:`middleware - ${J.name}`}};Da.getMiddlewareMetadata=GE0;var BE0=(Z,J)=>{return!!(Array.isArray(J?.ignoreLayersType)&&J?.ignoreLayersType?.includes(Z))};Da.isLayerIgnored=BE0});var Oa=w((qa)=>{Object.defineProperty(qa,"__esModule",{value:!0});qa.kLayerPatched=void 0;qa.kLayerPatched=Symbol("koa-layer-patched")});var Ta=w((Ia)=>{Object.defineProperty(Ia,"__esModule",{value:!0});Ia.KoaInstrumentation=void 0;var d9=C(),CJ=c(),Ca=m3(),Pa=Va(),ka=ja(),Ma=Q0(),Ra=Oa();class Aa extends CJ.InstrumentationBase{constructor(Z={}){super(Pa.PACKAGE_NAME,Pa.PACKAGE_VERSION,Z)}init(){return new CJ.InstrumentationNodeModuleDefinition("koa",[">=2.0.0 <4"],(Z)=>{let J=Z[Symbol.toStringTag]==="Module"?Z.default:Z;if(J==null)return J;if((0,CJ.isWrapped)(J.prototype.use))this._unwrap(J.prototype,"use");return this._wrap(J.prototype,"use",this._getKoaUsePatch.bind(this)),Z},(Z)=>{let J=Z[Symbol.toStringTag]==="Module"?Z.default:Z;if((0,CJ.isWrapped)(J.prototype.use))this._unwrap(J.prototype,"use")})}_getKoaUsePatch(Z){let J=this;return function($){let X;if($.router)X=J._patchRouterDispatch($);else X=J._patchLayer($,!1);return Z.apply(this,[X])}}_patchRouterDispatch(Z){d9.diag.debug("Patching @koa/router dispatch");let Q=Z.router?.stack??[];for(let $ of Q){let{path:X,stack:Y}=$;for(let W=0;W{if(d9.trace.getSpan(d9.context.active())===void 0)return Z(X,Y);let K=(0,ka.getMiddlewareMetadata)(X,Z,J,Q),z=this.tracer.startSpan(K.name,{attributes:K.attributes}),G=(0,Ma.getRPCMetadata)(d9.context.active());if(G?.type===Ma.RPCType.HTTP&&X._matchedRoute)G.route=X._matchedRoute.toString();let{requestHook:H}=this.getConfig();if(H)(0,CJ.safeExecuteInTheMiddle)(()=>H(z,{context:X,middlewareLayer:Z,layerType:$}),(V)=>{if(V)d9.diag.error("koa instrumentation: request hook failed",V)},!0);let B=d9.trace.setSpan(d9.context.active(),z);return d9.context.with(B,async()=>{try{return await Z(X,Y)}catch(V){throw z.recordException(V),V}finally{z.end()}})}}}Ia.KoaInstrumentation=Aa});var fa=w((PJ)=>{Object.defineProperty(PJ,"__esModule",{value:!0});PJ.KoaLayerType=PJ.AttributeNames=PJ.KoaInstrumentation=void 0;var VE0=Ta();Object.defineProperty(PJ,"KoaInstrumentation",{enumerable:!0,get:function(){return VE0.KoaInstrumentation}});var FE0=ZV();Object.defineProperty(PJ,"AttributeNames",{enumerable:!0,get:function(){return FE0.AttributeNames}});var wE0=m3();Object.defineProperty(PJ,"KoaLayerType",{enumerable:!0,get:function(){return wE0.KoaLayerType}})});var QV=w((xa)=>{Object.defineProperty(xa,"__esModule",{value:!0});xa.ConnectNames=xa.ConnectTypes=xa.AttributeNames=void 0;var jE0;(function(Z){Z.CONNECT_TYPE="connect.type",Z.CONNECT_NAME="connect.name"})(jE0=xa.AttributeNames||(xa.AttributeNames={}));var qE0;(function(Z){Z.MIDDLEWARE="middleware",Z.REQUEST_HANDLER="request_handler"})(qE0=xa.ConnectTypes||(xa.ConnectTypes={}));var LE0;(function(Z){Z.MIDDLEWARE="middleware",Z.REQUEST_HANDLER="request handler"})(LE0=xa.ConnectNames||(xa.ConnectNames={}))});var ca=w((ga)=>{Object.defineProperty(ga,"__esModule",{value:!0});ga.PACKAGE_NAME=ga.PACKAGE_VERSION=void 0;ga.PACKAGE_VERSION="0.56.0";ga.PACKAGE_NAME="@opentelemetry/instrumentation-connect"});var la=w((ma)=>{Object.defineProperty(ma,"__esModule",{value:!0});ma._LAYERS_STORE_PROPERTY=void 0;ma._LAYERS_STORE_PROPERTY=Symbol("opentelemetry.instrumentation-connect.request-route-stack")});var oa=w((pa)=>{Object.defineProperty(pa,"__esModule",{value:!0});pa.generateRoute=pa.replaceCurrentStackRoute=pa.addNewStackLayer=void 0;var CE0=C(),B7=la(),PE0=(Z)=>{if(Array.isArray(Z[B7._LAYERS_STORE_PROPERTY])===!1)Object.defineProperty(Z,B7._LAYERS_STORE_PROPERTY,{enumerable:!1,value:[]});Z[B7._LAYERS_STORE_PROPERTY].push("/");let J=Z[B7._LAYERS_STORE_PROPERTY].length;return()=>{if(J===Z[B7._LAYERS_STORE_PROPERTY].length)Z[B7._LAYERS_STORE_PROPERTY].pop();else CE0.diag.warn("Connect: Trying to pop the stack multiple time")}};pa.addNewStackLayer=PE0;var kE0=(Z,J)=>{if(J)Z[B7._LAYERS_STORE_PROPERTY].splice(-1,1,J)};pa.replaceCurrentStackRoute=kE0;var ME0=(Z)=>{return Z[B7._LAYERS_STORE_PROPERTY].reduce((J,Q)=>J.replace(/\/+$/,"")+Q)};pa.generateRoute=ME0});var ea=w((ra)=>{Object.defineProperty(ra,"__esModule",{value:!0});ra.ConnectInstrumentation=ra.ANONYMOUS_NAME=void 0;var IE0=C(),na=Q0(),c8=QV(),aa=ca(),l3=c(),NE0=s(),$V=oa();ra.ANONYMOUS_NAME="anonymous";class sa extends l3.InstrumentationBase{constructor(Z={}){super(aa.PACKAGE_NAME,aa.PACKAGE_VERSION,Z)}init(){return[new l3.InstrumentationNodeModuleDefinition("connect",[">=3.0.0 <4"],(Z)=>{return this._patchConstructor(Z)})]}_patchApp(Z){if(!(0,l3.isWrapped)(Z.use))this._wrap(Z,"use",this._patchUse.bind(this));if(!(0,l3.isWrapped)(Z.handle))this._wrap(Z,"handle",this._patchHandle.bind(this))}_patchConstructor(Z){let J=this;return function(...Q){let $=Z.apply(this,Q);return J._patchApp($),$}}_patchNext(Z,J){return function($){let X=Z.apply(this,[$]);return J(),X}}_startSpan(Z,J){let Q,$,X;if(Z)Q=c8.ConnectTypes.REQUEST_HANDLER,X=c8.ConnectNames.REQUEST_HANDLER,$=Z;else Q=c8.ConnectTypes.MIDDLEWARE,X=c8.ConnectNames.MIDDLEWARE,$=J.name||ra.ANONYMOUS_NAME;let Y=`${X} - ${$}`,W={attributes:{[NE0.ATTR_HTTP_ROUTE]:Z.length>0?Z:"/",[c8.AttributeNames.CONNECT_TYPE]:Q,[c8.AttributeNames.CONNECT_NAME]:$}};return this.tracer.startSpan(Y,W)}_patchMiddleware(Z,J){let Q=this,$=J.length===4;function X(){if(!Q.isEnabled())return J.apply(this,arguments);let[Y,W,K]=$?[1,2,3]:[0,1,2],z=arguments[Y],G=arguments[W],H=arguments[K];(0,$V.replaceCurrentStackRoute)(z,Z);let B=(0,na.getRPCMetadata)(IE0.context.active());if(Z&&B?.type===na.RPCType.HTTP)B.route=(0,$V.generateRoute)(z);let V="";if(Z)V=`request handler - ${Z}`;else V=`middleware - ${J.name||ra.ANONYMOUS_NAME}`;let F=Q._startSpan(Z,J);Q._diag.debug("start span",V);let D=!1;function U(){if(!D)D=!0,Q._diag.debug(`finishing span ${F.name}`),F.end();else Q._diag.debug(`span ${F.name} - already finished`);G.removeListener("close",U)}return G.addListener("close",U),arguments[K]=Q._patchNext(H,U),J.apply(this,arguments)}return Object.defineProperty(X,"length",{value:J.length,writable:!1,configurable:!0}),X}_patchUse(Z){let J=this;return function(...Q){let $=Q[Q.length-1],X=Q[Q.length-2]||"";return Q[Q.length-1]=J._patchMiddleware(X,$),Z.apply(this,Q)}}_patchHandle(Z){let J=this;return function(){let[Q,$]=[0,2],X=arguments[Q],Y=arguments[$],W=(0,$V.addNewStackLayer)(X);if(typeof Y==="function")arguments[$]=J._patchOut(Y,W);return Z.apply(this,arguments)}}_patchOut(Z,J){return function(...$){return J(),Reflect.apply(Z,this,$)}}}ra.ConnectInstrumentation=sa});var Js=w((U1)=>{Object.defineProperty(U1,"__esModule",{value:!0});U1.ConnectTypes=U1.ConnectNames=U1.AttributeNames=U1.ANONYMOUS_NAME=U1.ConnectInstrumentation=void 0;var Zs=ea();Object.defineProperty(U1,"ConnectInstrumentation",{enumerable:!0,get:function(){return Zs.ConnectInstrumentation}});Object.defineProperty(U1,"ANONYMOUS_NAME",{enumerable:!0,get:function(){return Zs.ANONYMOUS_NAME}});var YV=QV();Object.defineProperty(U1,"AttributeNames",{enumerable:!0,get:function(){return YV.AttributeNames}});Object.defineProperty(U1,"ConnectNames",{enumerable:!0,get:function(){return YV.ConnectNames}});Object.defineProperty(U1,"ConnectTypes",{enumerable:!0,get:function(){return YV.ConnectTypes}})});var zs=w((Ws)=>{Object.defineProperty(Ws,"__esModule",{value:!0});Ws.DB_SYSTEM_VALUE_MSSQL=Ws.ATTR_NET_PEER_PORT=Ws.ATTR_NET_PEER_NAME=Ws.ATTR_DB_USER=Ws.ATTR_DB_SYSTEM=Ws.ATTR_DB_STATEMENT=Ws.ATTR_DB_SQL_TABLE=Ws.ATTR_DB_NAME=void 0;Ws.ATTR_DB_NAME="db.name";Ws.ATTR_DB_SQL_TABLE="db.sql.table";Ws.ATTR_DB_STATEMENT="db.statement";Ws.ATTR_DB_SYSTEM="db.system";Ws.ATTR_DB_USER="db.user";Ws.ATTR_NET_PEER_NAME="net.peer.name";Ws.ATTR_NET_PEER_PORT="net.peer.port";Ws.DB_SYSTEM_VALUE_MSSQL="mssql"});var Hs=w((Gs)=>{Object.defineProperty(Gs,"__esModule",{value:!0});Gs.once=Gs.getSpanName=void 0;function xE0(Z,J,Q,$){if(Z==="execBulkLoad"&&$&&J)return`${Z} ${$} ${J}`;if(Z==="callProcedure"){if(J)return`${Z} ${Q} ${J}`;return`${Z} ${Q}`}if(J)return`${Z} ${J}`;return`${Z}`}Gs.getSpanName=xE0;var gE0=(Z)=>{let J=!1;return(...Q)=>{if(J)return;return J=!0,Z(...Q)}};Gs.once=gE0});var ws=w((Vs)=>{Object.defineProperty(Vs,"__esModule",{value:!0});Vs.PACKAGE_NAME=Vs.PACKAGE_VERSION=void 0;Vs.PACKAGE_VERSION="0.32.0";Vs.PACKAGE_NAME="@opentelemetry/instrumentation-tedious"});var Cs=w((Ls)=>{Object.defineProperty(Ls,"__esModule",{value:!0});Ls.TediousInstrumentation=Ls.INJECTED_CTX=void 0;var m8=C(),mE0=A("events"),c9=c(),j1=s(),H7=zs(),Ds=Hs(),Us=ws(),qs=Symbol("opentelemetry.instrumentation-tedious.current-database");Ls.INJECTED_CTX=Symbol("opentelemetry.instrumentation-tedious.context-info-injected");var js=["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"];function p3(Z){Object.defineProperty(this,qs,{value:Z,writable:!0})}class KV extends c9.InstrumentationBase{static COMPONENT="tedious";_netSemconvStability;_dbSemconvStability;constructor(Z={}){super(Us.PACKAGE_NAME,Us.PACKAGE_VERSION,Z);this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,c9.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN),this._dbSemconvStability=(0,c9.semconvStabilityFromStr)("database",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}init(){return[new c9.InstrumentationNodeModuleDefinition(KV.COMPONENT,[">=1.11.0 <20"],(Z)=>{let J=Z.Connection.prototype;for(let Q of js){if((0,c9.isWrapped)(J[Q]))this._unwrap(J,Q);this._wrap(J,Q,this._patchQuery(Q,Z))}if((0,c9.isWrapped)(J.connect))this._unwrap(J,"connect");return this._wrap(J,"connect",this._patchConnect),Z},(Z)=>{if(Z===void 0)return;let J=Z.Connection.prototype;for(let Q of js)this._unwrap(J,Q);this._unwrap(J,"connect")})]}_patchConnect(Z){return function(){return p3.call(this,this.config?.options?.database),this.removeListener("databaseChange",p3),this.on("databaseChange",p3),this.once("end",()=>{this.removeListener("databaseChange",p3)}),Z.apply(this,arguments)}}_buildTraceparent(Z){let J=Z.spanContext();return`00-${J.traceId}-${J.spanId}-0${Number(J.traceFlags||m8.TraceFlags.NONE).toString(16)}`}_injectContextInfo(Z,J,Q){return new Promise(($)=>{try{let Y=new J.Request("set context_info @opentelemetry_traceparent",(K)=>{$()});Object.defineProperty(Y,Ls.INJECTED_CTX,{value:!0});let W=Buffer.from(Q,"utf8");Y.addParameter("opentelemetry_traceparent",J.TYPES.VarBinary,W,{length:W.length}),Z.execSql(Y)}catch{$()}})}_shouldInjectFor(Z){return Z==="execSql"||Z==="execSqlBatch"||Z==="callProcedure"||Z==="execute"}_patchQuery(Z,J){return(Q)=>{let $=this;function X(Y){if(Y?.[Ls.INJECTED_CTX])return Q.apply(this,arguments);if(!(Y instanceof mE0.EventEmitter))return $._diag.warn(`Unexpected invocation of patched ${Z} method. Span not recorded`),Q.apply(this,arguments);let W=0,K=0,z=()=>K++,G=()=>W++,H=this[qs],B=((M)=>{if(M.sqlTextOrProcedure==="sp_prepare"&&M.parametersByName?.stmt?.value)return M.parametersByName.stmt.value;return M.sqlTextOrProcedure})(Y),V={};if($._dbSemconvStability&c9.SemconvStability.OLD)V[H7.ATTR_DB_SYSTEM]=H7.DB_SYSTEM_VALUE_MSSQL,V[H7.ATTR_DB_NAME]=H,V[H7.ATTR_DB_USER]=this.config?.userName??this.config?.authentication?.options?.userName,V[H7.ATTR_DB_STATEMENT]=B,V[H7.ATTR_DB_SQL_TABLE]=Y.table;if($._dbSemconvStability&c9.SemconvStability.STABLE)V[j1.ATTR_DB_NAMESPACE]=H,V[j1.ATTR_DB_SYSTEM_NAME]=j1.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER,V[j1.ATTR_DB_QUERY_TEXT]=B,V[j1.ATTR_DB_COLLECTION_NAME]=Y.table;if($._netSemconvStability&c9.SemconvStability.OLD)V[H7.ATTR_NET_PEER_NAME]=this.config?.server,V[H7.ATTR_NET_PEER_PORT]=this.config?.options?.port;if($._netSemconvStability&c9.SemconvStability.STABLE)V[j1.ATTR_SERVER_ADDRESS]=this.config?.server,V[j1.ATTR_SERVER_PORT]=this.config?.options?.port;let F=$.tracer.startSpan((0,Ds.getSpanName)(Z,H,B,Y.table),{kind:m8.SpanKind.CLIENT,attributes:V}),D=(0,Ds.once)((M)=>{if(Y.removeListener("done",z),Y.removeListener("doneInProc",z),Y.removeListener("doneProc",G),Y.removeListener("error",D),this.removeListener("end",D),F.setAttribute("tedious.procedure_count",W),F.setAttribute("tedious.statement_count",K),M)F.setStatus({code:m8.SpanStatusCode.ERROR,message:M.message});F.end()});if(Y.on("done",z),Y.on("doneInProc",z),Y.on("doneProc",G),Y.once("error",D),this.on("end",D),typeof Y.callback==="function")$._wrap(Y,"callback",$._patchCallbackQuery(D));else $._diag.error("Expected request.callback to be a function");let U=()=>{return m8.context.with(m8.trace.setSpan(m8.context.active(),F),Q,this,...arguments)};if(!($.getConfig().enableTraceContextPropagation&&$._shouldInjectFor(Z)))return U();let O=$._buildTraceparent(F);$._injectContextInfo(this,J,O).finally(U)}return Object.defineProperty(X,"length",{value:Q.length,writable:!1}),X}}_patchCallbackQuery(Z){return(J)=>{return function(Q,$,X){return Z(Q),J.apply(this,arguments)}}}}Ls.TediousInstrumentation=KV});var Ps=w((zV)=>{Object.defineProperty(zV,"__esModule",{value:!0});zV.TediousInstrumentation=void 0;var uE0=Cs();Object.defineProperty(zV,"TediousInstrumentation",{enumerable:!0,get:function(){return uE0.TediousInstrumentation}})});var Ts=w((Is)=>{Object.defineProperty(Is,"__esModule",{value:!0});Is.PACKAGE_NAME=Is.PACKAGE_VERSION=void 0;Is.PACKAGE_VERSION="0.56.0";Is.PACKAGE_NAME="@opentelemetry/instrumentation-generic-pool"});var Ss=w((ys)=>{Object.defineProperty(ys,"__esModule",{value:!0});ys.GenericPoolInstrumentation=void 0;var u8=C(),q1=c(),fs=Ts(),GV="generic-pool";class Es extends q1.InstrumentationBase{_isDisabled=!1;constructor(Z={}){super(fs.PACKAGE_NAME,fs.PACKAGE_VERSION,Z)}init(){return[new q1.InstrumentationNodeModuleDefinition(GV,[">=3.0.0 <4"],(Z)=>{let J=Z.Pool;if((0,q1.isWrapped)(J.prototype.acquire))this._unwrap(J.prototype,"acquire");return this._wrap(J.prototype,"acquire",this._acquirePatcher.bind(this)),Z},(Z)=>{let J=Z.Pool;return this._unwrap(J.prototype,"acquire"),Z}),new q1.InstrumentationNodeModuleDefinition(GV,[">=2.4.0 <3"],(Z)=>{let J=Z.Pool;if((0,q1.isWrapped)(J.prototype.acquire))this._unwrap(J.prototype,"acquire");return this._wrap(J.prototype,"acquire",this._acquireWithCallbacksPatcher.bind(this)),Z},(Z)=>{let J=Z.Pool;return this._unwrap(J.prototype,"acquire"),Z}),new q1.InstrumentationNodeModuleDefinition(GV,[">=2.0.0 <2.4"],(Z)=>{if(this._isDisabled=!1,(0,q1.isWrapped)(Z.Pool))this._unwrap(Z,"Pool");return this._wrap(Z,"Pool",this._poolWrapper.bind(this)),Z},(Z)=>{return this._isDisabled=!0,Z})]}_acquirePatcher(Z){let J=this;return function(...$){let X=u8.context.active(),Y=J.tracer.startSpan("generic-pool.acquire",{},X);return u8.context.with(u8.trace.setSpan(X,Y),()=>{return Z.call(this,...$).then((W)=>{return Y.end(),W},(W)=>{throw Y.recordException(W),Y.end(),W})})}}_poolWrapper(Z){let J=this;return function(){let $=Z.apply(this,arguments);return J._wrap($,"acquire",J._acquireWithCallbacksPatcher.bind(J)),$}}_acquireWithCallbacksPatcher(Z){let J=this;return function($,X){if(J._isDisabled)return Z.call(this,$,X);let Y=u8.context.active(),W=J.tracer.startSpan("generic-pool.acquire",{},Y);return u8.context.with(u8.trace.setSpan(Y,W),()=>{Z.call(this,(K,z)=>{if(W.end(),$)return $(K,z)},X)})}}}ys.GenericPoolInstrumentation=Es});var _s=w((BV)=>{Object.defineProperty(BV,"__esModule",{value:!0});BV.GenericPoolInstrumentation=void 0;var nE0=Ss();Object.defineProperty(BV,"GenericPoolInstrumentation",{enumerable:!0,get:function(){return nE0.GenericPoolInstrumentation}})});var HV=w((ds)=>{Object.defineProperty(ds,"__esModule",{value:!0});ds.ATTR_NET_PEER_PORT=ds.ATTR_NET_PEER_NAME=ds.ATTR_MESSAGING_SYSTEM=ds.ATTR_MESSAGING_OPERATION=void 0;ds.ATTR_MESSAGING_OPERATION="messaging.operation";ds.ATTR_MESSAGING_SYSTEM="messaging.system";ds.ATTR_NET_PEER_NAME="net.peer.name";ds.ATTR_NET_PEER_PORT="net.peer.port"});var VV=w((ms)=>{Object.defineProperty(ms,"__esModule",{value:!0});ms.ATTR_MESSAGING_CONVERSATION_ID=ms.OLD_ATTR_MESSAGING_MESSAGE_ID=ms.MESSAGING_DESTINATION_KIND_VALUE_TOPIC=ms.ATTR_MESSAGING_URL=ms.ATTR_MESSAGING_PROTOCOL_VERSION=ms.ATTR_MESSAGING_PROTOCOL=ms.MESSAGING_OPERATION_VALUE_PROCESS=ms.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY=ms.ATTR_MESSAGING_DESTINATION_KIND=ms.ATTR_MESSAGING_DESTINATION=void 0;ms.ATTR_MESSAGING_DESTINATION="messaging.destination";ms.ATTR_MESSAGING_DESTINATION_KIND="messaging.destination_kind";ms.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY="messaging.rabbitmq.routing_key";ms.MESSAGING_OPERATION_VALUE_PROCESS="process";ms.ATTR_MESSAGING_PROTOCOL="messaging.protocol";ms.ATTR_MESSAGING_PROTOCOL_VERSION="messaging.protocol_version";ms.ATTR_MESSAGING_URL="messaging.url";ms.MESSAGING_DESTINATION_KIND_VALUE_TOPIC="topic";ms.OLD_ATTR_MESSAGING_MESSAGE_ID="messaging.message_id";ms.ATTR_MESSAGING_CONVERSATION_ID="messaging.conversation_id"});var FV=w((ps)=>{Object.defineProperty(ps,"__esModule",{value:!0});ps.DEFAULT_CONFIG=ps.EndOperation=void 0;var Gy0;(function(Z){Z.AutoAck="auto ack",Z.Ack="ack",Z.AckAll="ackAll",Z.Reject="reject",Z.Nack="nack",Z.NackAll="nackAll",Z.ChannelClosed="channel closed",Z.ChannelError="channel error",Z.InstrumentationTimeout="instrumentation timeout"})(Gy0=ps.EndOperation||(ps.EndOperation={}));ps.DEFAULT_CONFIG={consumeTimeoutMs:60000,useLinksForConsume:!1}});var ts=w((ss)=>{Object.defineProperty(ss,"__esModule",{value:!0});ss.isConfirmChannelTracing=ss.unmarkConfirmChannelTracing=ss.markConfirmChannelTracing=ss.getConnectionAttributesFromUrl=ss.getConnectionAttributesFromServer=ss.normalizeExchange=ss.CONNECTION_ATTRIBUTES=ss.CHANNEL_CONSUME_TIMEOUT_TIMER=ss.CHANNEL_SPANS_NOT_ENDED=ss.MESSAGE_STORED_SPAN=void 0;var wV=C(),V7=c(),i3=s(),kJ=HV(),o3=VV();ss.MESSAGE_STORED_SPAN=Symbol("opentelemetry.amqplib.message.stored-span");ss.CHANNEL_SPANS_NOT_ENDED=Symbol("opentelemetry.amqplib.channel.spans-not-ended");ss.CHANNEL_CONSUME_TIMEOUT_TIMER=Symbol("opentelemetry.amqplib.channel.consumer-timeout-timer");ss.CONNECTION_ATTRIBUTES=Symbol("opentelemetry.amqplib.connection.attributes");var DV=(0,wV.createContextKey)("opentelemetry.amqplib.channel.is-confirm-channel"),By0=(Z)=>Z!==""?Z:"";ss.normalizeExchange=By0;var Hy0=(Z)=>{return Z.replace(/:[^:@/]*@/,":***@")},os=(Z,J)=>{return Z||(J==="AMQP"?5672:5671)},ns=(Z)=>{let J=Z||"amqp";return(J.endsWith(":")?J.substring(0,J.length-1):J).toUpperCase()},as=(Z)=>{return Z||"localhost"},m9=(Z,J,Q,$)=>{if(Q)return{[J]:Q};else return wV.diag.error(`amqplib instrumentation: could not extract connection attribute ${$} from user supplied url`,{url:Z}),{}},Vy0=(Z)=>{let J=Z.serverProperties.product?.toLowerCase?.();if(J)return{[kJ.ATTR_MESSAGING_SYSTEM]:J};else return{}};ss.getConnectionAttributesFromServer=Vy0;var Fy0=(Z,J)=>{let Q={[o3.ATTR_MESSAGING_PROTOCOL_VERSION]:"0.9.1"};if(Z=Z||"amqp://localhost",typeof Z==="object"){let $=Z,X=ns($?.protocol);Object.assign(Q,{...m9(Z,o3.ATTR_MESSAGING_PROTOCOL,X,"protocol")});let Y=as($?.hostname);if(J&V7.SemconvStability.OLD)Object.assign(Q,{...m9(Z,kJ.ATTR_NET_PEER_NAME,Y,"hostname")});if(J&V7.SemconvStability.STABLE)Object.assign(Q,{...m9(Z,i3.ATTR_SERVER_ADDRESS,Y,"hostname")});let W=os($.port,X);if(J&V7.SemconvStability.OLD)Object.assign(Q,m9(Z,kJ.ATTR_NET_PEER_PORT,W,"port"));if(J&V7.SemconvStability.STABLE)Object.assign(Q,m9(Z,i3.ATTR_SERVER_PORT,W,"port"))}else{let $=Hy0(Z);Q[o3.ATTR_MESSAGING_URL]=$;try{let X=new URL($),Y=ns(X.protocol);Object.assign(Q,{...m9($,o3.ATTR_MESSAGING_PROTOCOL,Y,"protocol")});let W=as(X.hostname);if(J&V7.SemconvStability.OLD)Object.assign(Q,{...m9($,kJ.ATTR_NET_PEER_NAME,W,"hostname")});if(J&V7.SemconvStability.STABLE)Object.assign(Q,{...m9($,i3.ATTR_SERVER_ADDRESS,W,"hostname")});let K=os(X.port?parseInt(X.port):void 0,Y);if(J&V7.SemconvStability.OLD)Object.assign(Q,m9($,kJ.ATTR_NET_PEER_PORT,K,"port"));if(J&V7.SemconvStability.STABLE)Object.assign(Q,m9($,i3.ATTR_SERVER_PORT,K,"port"))}catch(X){wV.diag.error("amqplib instrumentation: error while extracting connection details from connection url",{censoredUrl:$,err:X})}}return Q};ss.getConnectionAttributesFromUrl=Fy0;var wy0=(Z)=>{return Z.setValue(DV,!0)};ss.markConfirmChannelTracing=wy0;var Dy0=(Z)=>{return Z.deleteValue(DV)};ss.unmarkConfirmChannelTracing=Dy0;var Uy0=(Z)=>{return Z.getValue(DV)===!0};ss.isConfirmChannelTracing=Uy0});var Jr=w((es)=>{Object.defineProperty(es,"__esModule",{value:!0});es.PACKAGE_NAME=es.PACKAGE_VERSION=void 0;es.PACKAGE_VERSION="0.60.0";es.PACKAGE_NAME="@opentelemetry/instrumentation-amqplib"});var Wr=w((Xr)=>{Object.defineProperty(Xr,"__esModule",{value:!0});Xr.AmqplibInstrumentation=void 0;var w0=C(),n3=Q0(),Z0=c(),Iy0=HV(),c6=VV(),V6=FV(),j0=ts(),Qr=Jr(),a3=[">=0.5.5 <1"];class $r extends Z0.InstrumentationBase{_netSemconvStability;constructor(Z={}){super(Qr.PACKAGE_NAME,Qr.PACKAGE_VERSION,{...V6.DEFAULT_CONFIG,...Z});this._setSemconvStabilityFromEnv()}_setSemconvStabilityFromEnv(){this._netSemconvStability=(0,Z0.semconvStabilityFromStr)("http",process.env.OTEL_SEMCONV_STABILITY_OPT_IN)}setConfig(Z={}){super.setConfig({...V6.DEFAULT_CONFIG,...Z})}init(){let Z=new Z0.InstrumentationNodeModuleFile("amqplib/lib/channel_model.js",a3,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),J=new Z0.InstrumentationNodeModuleFile("amqplib/lib/callback_model.js",a3,this.patchChannelModel.bind(this),this.unpatchChannelModel.bind(this)),Q=new Z0.InstrumentationNodeModuleFile("amqplib/lib/connect.js",a3,this.patchConnect.bind(this),this.unpatchConnect.bind(this));return new Z0.InstrumentationNodeModuleDefinition("amqplib",a3,void 0,void 0,[Z,Q,J])}patchConnect(Z){if(Z=this.unpatchConnect(Z),!(0,Z0.isWrapped)(Z.connect))this._wrap(Z,"connect",this.getConnectPatch.bind(this));return Z}unpatchConnect(Z){if((0,Z0.isWrapped)(Z.connect))this._unwrap(Z,"connect");return Z}patchChannelModel(Z,J){if(!(0,Z0.isWrapped)(Z.Channel.prototype.publish))this._wrap(Z.Channel.prototype,"publish",this.getPublishPatch.bind(this,J));if(!(0,Z0.isWrapped)(Z.Channel.prototype.consume))this._wrap(Z.Channel.prototype,"consume",this.getConsumePatch.bind(this,J));if(!(0,Z0.isWrapped)(Z.Channel.prototype.ack))this._wrap(Z.Channel.prototype,"ack",this.getAckPatch.bind(this,!1,V6.EndOperation.Ack));if(!(0,Z0.isWrapped)(Z.Channel.prototype.nack))this._wrap(Z.Channel.prototype,"nack",this.getAckPatch.bind(this,!0,V6.EndOperation.Nack));if(!(0,Z0.isWrapped)(Z.Channel.prototype.reject))this._wrap(Z.Channel.prototype,"reject",this.getAckPatch.bind(this,!0,V6.EndOperation.Reject));if(!(0,Z0.isWrapped)(Z.Channel.prototype.ackAll))this._wrap(Z.Channel.prototype,"ackAll",this.getAckAllPatch.bind(this,!1,V6.EndOperation.AckAll));if(!(0,Z0.isWrapped)(Z.Channel.prototype.nackAll))this._wrap(Z.Channel.prototype,"nackAll",this.getAckAllPatch.bind(this,!0,V6.EndOperation.NackAll));if(!(0,Z0.isWrapped)(Z.Channel.prototype.emit))this._wrap(Z.Channel.prototype,"emit",this.getChannelEmitPatch.bind(this));if(!(0,Z0.isWrapped)(Z.ConfirmChannel.prototype.publish))this._wrap(Z.ConfirmChannel.prototype,"publish",this.getConfirmedPublishPatch.bind(this,J));return Z}unpatchChannelModel(Z){if((0,Z0.isWrapped)(Z.Channel.prototype.publish))this._unwrap(Z.Channel.prototype,"publish");if((0,Z0.isWrapped)(Z.Channel.prototype.consume))this._unwrap(Z.Channel.prototype,"consume");if((0,Z0.isWrapped)(Z.Channel.prototype.ack))this._unwrap(Z.Channel.prototype,"ack");if((0,Z0.isWrapped)(Z.Channel.prototype.nack))this._unwrap(Z.Channel.prototype,"nack");if((0,Z0.isWrapped)(Z.Channel.prototype.reject))this._unwrap(Z.Channel.prototype,"reject");if((0,Z0.isWrapped)(Z.Channel.prototype.ackAll))this._unwrap(Z.Channel.prototype,"ackAll");if((0,Z0.isWrapped)(Z.Channel.prototype.nackAll))this._unwrap(Z.Channel.prototype,"nackAll");if((0,Z0.isWrapped)(Z.Channel.prototype.emit))this._unwrap(Z.Channel.prototype,"emit");if((0,Z0.isWrapped)(Z.ConfirmChannel.prototype.publish))this._unwrap(Z.ConfirmChannel.prototype,"publish");return Z}getConnectPatch(Z){let J=this;return function($,X,Y){return Z.call(this,$,X,function(W,K){if(W==null){let z=(0,j0.getConnectionAttributesFromUrl)($,J._netSemconvStability),G=(0,j0.getConnectionAttributesFromServer)(K);K[j0.CONNECTION_ATTRIBUTES]={...z,...G}}Y.apply(this,arguments)})}}getChannelEmitPatch(Z){let J=this;return function($){if($==="close"){J.endAllSpansOnChannel(this,!0,V6.EndOperation.ChannelClosed,void 0);let X=this[j0.CHANNEL_CONSUME_TIMEOUT_TIMER];if(X)clearInterval(X);this[j0.CHANNEL_CONSUME_TIMEOUT_TIMER]=void 0}else if($==="error")J.endAllSpansOnChannel(this,!0,V6.EndOperation.ChannelError,void 0);return Z.apply(this,arguments)}}getAckAllPatch(Z,J,Q){let $=this;return function(Y){return $.endAllSpansOnChannel(this,Z,J,Y),Q.apply(this,arguments)}}getAckPatch(Z,J,Q){let $=this;return function(Y,W,K){let z=this,G=J===V6.EndOperation.Reject?W:K,H=z[j0.CHANNEL_SPANS_NOT_ENDED]??[],B=H.findIndex((V)=>V.msg===Y);if(B<0)$.endConsumerSpan(Y,Z,J,G);else if(J!==V6.EndOperation.Reject&&W){for(let V=0;V<=B;V++)$.endConsumerSpan(H[V].msg,Z,J,G);H.splice(0,B+1)}else $.endConsumerSpan(Y,Z,J,G),H.splice(B,1);return Q.apply(this,arguments)}}getConsumePatch(Z,J){let Q=this;return function(X,Y,W){let K=this;if(!Object.prototype.hasOwnProperty.call(K,j0.CHANNEL_SPANS_NOT_ENDED)){let{consumeTimeoutMs:G}=Q.getConfig();if(G){let H=setInterval(()=>{Q.checkConsumeTimeoutOnChannel(K)},G);H.unref(),K[j0.CHANNEL_CONSUME_TIMEOUT_TIMER]=H}K[j0.CHANNEL_SPANS_NOT_ENDED]=[]}let z=function(G){if(!G)return Y.call(this,G);let H=G.properties.headers??{},B=w0.propagation.extract(w0.ROOT_CONTEXT,H),V=G.fields?.exchange,F;if(Q._config.useLinksForConsume){let L=B?w0.trace.getSpan(B)?.spanContext():void 0;if(B=void 0,L)F=[{context:L}]}let D=Q.tracer.startSpan(`${X} process`,{kind:w0.SpanKind.CONSUMER,attributes:{...K?.connection?.[j0.CONNECTION_ATTRIBUTES],[c6.ATTR_MESSAGING_DESTINATION]:V,[c6.ATTR_MESSAGING_DESTINATION_KIND]:c6.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[c6.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:G.fields?.routingKey,[Iy0.ATTR_MESSAGING_OPERATION]:c6.MESSAGING_OPERATION_VALUE_PROCESS,[c6.OLD_ATTR_MESSAGING_MESSAGE_ID]:G?.properties.messageId,[c6.ATTR_MESSAGING_CONVERSATION_ID]:G?.properties.correlationId},links:F},B),{consumeHook:U}=Q.getConfig();if(U)(0,Z0.safeExecuteInTheMiddle)(()=>U(D,{moduleVersion:Z,msg:G}),(L)=>{if(L)w0.diag.error("amqplib instrumentation: consumerHook error",L)},!0);if(!W?.noAck)K[j0.CHANNEL_SPANS_NOT_ENDED].push({msg:G,timeOfConsume:(0,n3.hrTime)()}),G[j0.MESSAGE_STORED_SPAN]=D;let j=B?B:w0.ROOT_CONTEXT;if(w0.context.with(w0.trace.setSpan(j,D),()=>{Y.call(this,G)}),W?.noAck)Q.callConsumeEndHook(D,G,!1,V6.EndOperation.AutoAck),D.end()};return arguments[1]=z,J.apply(this,arguments)}}getConfirmedPublishPatch(Z,J){let Q=this;return function(X,Y,W,K,z){let G=this,{span:H,modifiedOptions:B}=Q.createPublishSpan(Q,X,Y,G,K),{publishHook:V}=Q.getConfig();if(V)(0,Z0.safeExecuteInTheMiddle)(()=>V(H,{moduleVersion:Z,exchange:X,routingKey:Y,content:W,options:B,isConfirmChannel:!0}),(j)=>{if(j)w0.diag.error("amqplib instrumentation: publishHook error",j)},!0);let F=function(j,L){try{z?.call(this,j,L)}finally{let{publishConfirmHook:O}=Q.getConfig();if(O)(0,Z0.safeExecuteInTheMiddle)(()=>O(H,{moduleVersion:Z,exchange:X,routingKey:Y,content:W,options:K,isConfirmChannel:!0,confirmError:j}),(M)=>{if(M)w0.diag.error("amqplib instrumentation: publishConfirmHook error",M)},!0);if(j)H.setStatus({code:w0.SpanStatusCode.ERROR,message:"message confirmation has been nack'ed"});H.end()}},D=(0,j0.markConfirmChannelTracing)(w0.context.active()),U=[...arguments];return U[3]=B,U[4]=w0.context.bind((0,j0.unmarkConfirmChannelTracing)(w0.trace.setSpan(D,H)),F),w0.context.with(D,J.bind(this,...U))}}getPublishPatch(Z,J){let Q=this;return function(X,Y,W,K){if((0,j0.isConfirmChannelTracing)(w0.context.active()))return J.apply(this,arguments);else{let z=this,{span:G,modifiedOptions:H}=Q.createPublishSpan(Q,X,Y,z,K),{publishHook:B}=Q.getConfig();if(B)(0,Z0.safeExecuteInTheMiddle)(()=>B(G,{moduleVersion:Z,exchange:X,routingKey:Y,content:W,options:H,isConfirmChannel:!1}),(D)=>{if(D)w0.diag.error("amqplib instrumentation: publishHook error",D)},!0);let V=[...arguments];V[3]=H;let F=J.apply(this,V);return G.end(),F}}}createPublishSpan(Z,J,Q,$,X){let Y=(0,j0.normalizeExchange)(J),W=Z.tracer.startSpan(`publish ${Y}`,{kind:w0.SpanKind.PRODUCER,attributes:{...$.connection[j0.CONNECTION_ATTRIBUTES],[c6.ATTR_MESSAGING_DESTINATION]:J,[c6.ATTR_MESSAGING_DESTINATION_KIND]:c6.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,[c6.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]:Q,[c6.OLD_ATTR_MESSAGING_MESSAGE_ID]:X?.messageId,[c6.ATTR_MESSAGING_CONVERSATION_ID]:X?.correlationId}}),K=X??{};return K.headers=K.headers??{},w0.propagation.inject(w0.trace.setSpan(w0.context.active(),W),K.headers),{span:W,modifiedOptions:K}}endConsumerSpan(Z,J,Q,$){let X=Z[j0.MESSAGE_STORED_SPAN];if(!X)return;if(J!==!1)X.setStatus({code:w0.SpanStatusCode.ERROR,message:Q!==V6.EndOperation.ChannelClosed&&Q!==V6.EndOperation.ChannelError?`${Q} called on message${$===!0?" with requeue":$===!1?" without requeue":""}`:Q});this.callConsumeEndHook(X,Z,J,Q),X.end(),Z[j0.MESSAGE_STORED_SPAN]=void 0}endAllSpansOnChannel(Z,J,Q,$){(Z[j0.CHANNEL_SPANS_NOT_ENDED]??[]).forEach((Y)=>{this.endConsumerSpan(Y.msg,J,Q,$)}),Z[j0.CHANNEL_SPANS_NOT_ENDED]=[]}callConsumeEndHook(Z,J,Q,$){let{consumeEndHook:X}=this.getConfig();if(!X)return;(0,Z0.safeExecuteInTheMiddle)(()=>X(Z,{msg:J,rejected:Q,endOperation:$}),(Y)=>{if(Y)w0.diag.error("amqplib instrumentation: consumerEndHook error",Y)},!0)}checkConsumeTimeoutOnChannel(Z){let J=(0,n3.hrTime)(),Q=Z[j0.CHANNEL_SPANS_NOT_ENDED]??[],$,{consumeTimeoutMs:X}=this.getConfig();for($=0;${Object.defineProperty(MJ,"__esModule",{value:!0});MJ.EndOperation=MJ.DEFAULT_CONFIG=MJ.AmqplibInstrumentation=void 0;var Ny0=Wr();Object.defineProperty(MJ,"AmqplibInstrumentation",{enumerable:!0,get:function(){return Ny0.AmqplibInstrumentation}});var Kr=FV();Object.defineProperty(MJ,"DEFAULT_CONFIG",{enumerable:!0,get:function(){return Kr.DEFAULT_CONFIG}});Object.defineProperty(MJ,"EndOperation",{enumerable:!0,get:function(){return Kr.EndOperation}})});var wx=R(C(),1),Dx=R(QI(),1);var k=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;var $I=Object.prototype.toString;function N9(Z){switch($I.call(Z)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object WebAssembly.Exception]":return!0;default:return T9(Z,Error)}}function VQ(Z,J){return $I.call(Z)===`[object ${J}]`}function QW(Z){return VQ(Z,"ErrorEvent")}function MZ(Z){return VQ(Z,"String")}function E1(Z){return typeof Z==="object"&&Z!==null&&"__sentry_template_string__"in Z&&"__sentry_template_values__"in Z}function j5(Z){return Z===null||E1(Z)||typeof Z!=="object"&&typeof Z!=="function"}function o9(Z){return VQ(Z,"Object")}function $W(Z){return typeof Event<"u"&&T9(Z,Event)}function XW(Z){return typeof Element<"u"&&T9(Z,Element)}function YW(Z){return VQ(Z,"RegExp")}function x0(Z){return Boolean(Z?.then&&typeof Z.then==="function")}function WW(Z){return o9(Z)&&"nativeEvent"in Z&&"preventDefault"in Z&&"stopPropagation"in Z}function T9(Z,J){try{return Z instanceof J}catch{return!1}}function q5(Z){return!!(typeof Z==="object"&&Z!==null&&(Z.__isVue||Z._isVue||Z.__v_isVNode))}var d=globalThis;var bz0=d,xz0=80;function XI(Z,J={}){if(!Z)return"";try{let Q=Z,$=5,X=[],Y=0,W=0,K=" > ",z=K.length,G,H=Array.isArray(J)?J:J.keyAttrs,B=!Array.isArray(J)&&J.maxStringLength||xz0;while(Q&&Y++<$){if(G=gz0(Q,H),G==="html"||Y>1&&W+X.length*z+G.length>=B)break;X.push(G),W+=G.length,Q=Q.parentNode}return X.reverse().join(K)}catch{return""}}function gz0(Z,J){let Q=Z,$=[];if(!Q?.tagName)return"";if(bz0.HTMLElement){if(Q instanceof HTMLElement&&Q.dataset){if(Q.dataset.sentryComponent)return Q.dataset.sentryComponent;if(Q.dataset.sentryElement)return Q.dataset.sentryElement}}$.push(Q.tagName.toLowerCase());let X=J?.length?J.filter((Y)=>Q.getAttribute(Y)).map((Y)=>[Y,Q.getAttribute(Y)]):null;if(X?.length)X.forEach((Y)=>{$.push(`[${Y[0]}="${Y[1]}"]`)});else{if(Q.id)$.push(`#${Q.id}`);let Y=Q.className;if(Y&&MZ(Y)){let W=Y.split(/\s+/);for(let K of W)$.push(`.${K}`)}}for(let Y of["aria-label","type","name","title","alt"]){let W=Q.getAttribute(Y);if(W)$.push(`[${Y}="${W}"]`)}return $.join("")}var a="10.46.0";function J6(){return RZ(d),d}function RZ(Z){let J=Z.__SENTRY__=Z.__SENTRY__||{};return J.version=J.version||a,J[a]=J[a]||{}}function F9(Z,J,Q=d){let $=Q.__SENTRY__=Q.__SENTRY__||{},X=$[a]=$[a]||{};return X[Z]||(X[Z]=J())}var L5=["debug","info","warn","error","log","assert","trace"],dz0="Sentry Logger ",y1={};function O0(Z){if(!("console"in d))return Z();let J=d.console,Q={},$=Object.keys(y1);$.forEach((X)=>{let Y=y1[X];Q[X]=J[X],J[X]=Y});try{return Z()}finally{$.forEach((X)=>{J[X]=Q[X]})}}function cz0(){zW().enabled=!0}function mz0(){zW().enabled=!1}function YI(){return zW().enabled}function uz0(...Z){KW("log",...Z)}function lz0(...Z){KW("warn",...Z)}function pz0(...Z){KW("error",...Z)}function KW(Z,...J){if(!k)return;if(YI())O0(()=>{d.console[Z](`${dz0}[${Z}]:`,...J)})}function zW(){if(!k)return{enabled:!1};return F9("loggerSettings",()=>({enabled:!1}))}var q={enable:cz0,disable:mz0,isEnabled:YI,log:uz0,warn:lz0,error:pz0};function GW(Z,J,Q){if(!(J in Z))return;let $=Z[J];if(typeof $!=="function")return;let X=Q($);if(typeof X==="function")zI(X,$);try{Z[J]=X}catch{k&&q.log(`Failed to replace method "${J}" in object`,Z)}}function M0(Z,J,Q){try{Object.defineProperty(Z,J,{value:Q,writable:!0,configurable:!0})}catch{k&&q.log(`Failed to add non-enumerable property "${J}" to object`,Z)}}function zI(Z,J){try{let Q=J.prototype||{};Z.prototype=J.prototype=Q,M0(Z,"__sentry_original__",J)}catch{}}function BW(Z){return Z.__sentry_original__}function FQ(Z){if(N9(Z))return{message:Z.message,name:Z.name,stack:Z.stack,...KI(Z)};else if($W(Z)){let J={type:Z.type,target:WI(Z.target),currentTarget:WI(Z.currentTarget),...KI(Z)};if(typeof CustomEvent<"u"&&T9(Z,CustomEvent))J.detail=Z.detail;return J}else return Z}function WI(Z){try{return XW(Z)?XI(Z):Object.prototype.toString.call(Z)}catch{return""}}function KI(Z){if(typeof Z==="object"&&Z!==null)return Object.fromEntries(Object.entries(Z));return{}}function HW(Z){let J=Object.keys(FQ(Z));return J.sort(),!J[0]?"[object has no keys]":J.join(", ")}var GI="_sentryScope",BI="_sentryIsolationScope";function iz0(Z){try{let J=d.WeakRef;if(typeof J==="function")return new J(Z)}catch{}return Z}function oz0(Z){if(!Z)return;if(typeof Z==="object"&&"deref"in Z&&typeof Z.deref==="function")try{return Z.deref()}catch{return}return Z}function O5(Z,J,Q){if(Z)M0(Z,BI,iz0(Q)),M0(Z,GI,J)}function w9(Z){let J=Z;return{scope:J[GI],isolationScope:oz0(J[BI])}}var VW=0,h1=1,i=2;function f9(Z){if(Z<400&&Z>=100)return{code:1};if(Z>=400&&Z<500)switch(Z){case 401:return{code:2,message:"unauthenticated"};case 403:return{code:2,message:"permission_denied"};case 404:return{code:2,message:"not_found"};case 409:return{code:2,message:"already_exists"};case 413:return{code:2,message:"failed_precondition"};case 429:return{code:2,message:"resource_exhausted"};case 499:return{code:2,message:"cancelled"};default:return{code:2,message:"invalid_argument"}}if(Z>=500&&Z<600)switch(Z){case 501:return{code:2,message:"unimplemented"};case 503:return{code:2,message:"unavailable"};case 504:return{code:2,message:"deadline_exceeded"};default:return{code:2,message:"internal_error"}}return{code:2,message:"internal_error"}}var S1;function N7(Z){if(S1!==void 0)return S1?S1(Z):Z();let J=Symbol.for("__SENTRY_SAFE_RANDOM_ID_WRAPPER__"),Q=d;if(J in Q&&typeof Q[J]==="function")return S1=Q[J],S1(Z);return S1=null,Z()}function g0(){return N7(()=>Math.random())}function i6(){return N7(()=>Date.now())}var wW="?",HI=/\(error: (.*)\)/,VI=/captureMessage|captureException/;function DQ(...Z){let J=Z.sort((Q,$)=>Q[0]-$[0]).map((Q)=>Q[1]);return(Q,$=0,X=0)=>{let Y=[],W=Q.split(` +`);for(let K=$;K1024)z=z.slice(0,1024);let G=HI.test(z)?z.replace(HI,"$1"):z;if(G.match(/\S*Error: /))continue;for(let H of J){let B=H(G);if(B){Y.push(B);break}}if(Y.length>=50+X)break}return FI(Y.slice(X))}}function DW(Z){if(Array.isArray(Z))return DQ(...Z);return Z}function FI(Z){if(!Z.length)return[];let J=Array.from(Z);if(/sentryWrapped/.test(wQ(J).function||""))J.pop();if(J.reverse(),VI.test(wQ(J).function||"")){if(J.pop(),VI.test(wQ(J).function||""))J.pop()}return J.slice(0,50).map((Q)=>({...Q,filename:Q.filename||wQ(J).filename,function:Q.function||"?"}))}function wQ(Z){return Z[Z.length-1]||{}}var FW="";function C5(Z){try{if(!Z||typeof Z!=="function")return FW;return Z.name||FW}catch{return FW}}function UQ(Z){return"__v_isVNode"in Z&&Z.__v_isVNode?"[VueVNode]":"[VueViewModel]"}function wI(Z){let J=Z?.startsWith("file://")?Z.slice(7):Z;if(J?.match(/\/[A-Z]:/))J=J.slice(1);return J}function AZ(Z,J=0){if(typeof Z!=="string"||J===0)return Z;return Z.length<=J?Z:`${Z.slice(0,J)}...`}function UW(Z,J){let Q=Z,$=Q.length;if($<=150)return Q;if(J>$)J=$;let X=Math.max(J-60,0);if(X<5)X=0;let Y=Math.min(X+140,$);if(Y>$-5)Y=$;if(Y===$)X=Math.max(Y-140,0);if(Q=Q.slice(X,Y),X>0)Q=`'{snip} ${Q}`;if(Y<$)Q+=" {snip}";return Q}function jW(Z,J){if(!Array.isArray(Z))return"";let Q=[];for(let $=0;$n9(Z,$,Q))}function nz0(){let Z=d;return Z.crypto||Z.msCrypto}var qW;function az0(){return g0()*16}function I0(Z=nz0()){try{if(Z?.randomUUID)return N7(()=>Z.randomUUID()).replace(/-/g,"")}catch{}if(!qW)qW=[1e7]+1000+4000+8000+100000000000;return qW.replace(/[018]/g,(J)=>(J^(az0()&15)>>J/4).toString(16))}function DI(Z){return Z.exception?.values?.[0]}function NZ(Z){let{message:J,event_id:Q}=Z;if(J)return J;let $=DI(Z);if($){if($.type&&$.value)return`${$.type}: ${$.value}`;return $.type||$.value||Q||""}return Q||""}function OW(Z,J,Q){let $=Z.exception=Z.exception||{},X=$.values=$.values||[],Y=X[0]=X[0]||{};if(!Y.value)Y.value=J||"";if(!Y.type)Y.type=Q||"Error"}function _1(Z,J){let Q=DI(Z);if(!Q)return;let $={type:"generic",handled:!0},X=Q.mechanism;if(Q.mechanism={...$,...X,...J},J&&"data"in J){let Y={...X?.data,...J.data};Q.mechanism.data=Y}}var sz0=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;function LW(Z){return parseInt(Z||"",10)}function CW(Z){let J=Z.match(sz0)||[],Q=LW(J[1]),$=LW(J[2]),X=LW(J[3]);return{buildmetadata:J[5],major:isNaN(Q)?void 0:Q,minor:isNaN($)?void 0:$,patch:isNaN(X)?void 0:X,prerelease:J[4]}}function jQ(Z){if(UI(Z))return!0;try{M0(Z,"__sentry_captured__",!0)}catch{}return!1}function UI(Z){try{return Z.__sentry_captured__}catch{}}var qI=1000;function a9(){return i6()/qI}function rz0(){let{performance:Z}=d;if(!Z?.now||!Z.timeOrigin)return a9;let J=Z.timeOrigin;return()=>{return(J+N7(()=>Z.now()))/qI}}var jI;function E9(){return(jI??(jI=rz0()))()}function LI(Z){let J=E9(),Q={sid:I0(),init:!0,timestamp:J,started:J,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>tz0(Q)};if(Z)s9(Q,Z);return Q}function s9(Z,J={}){if(J.user){if(!Z.ipAddress&&J.user.ip_address)Z.ipAddress=J.user.ip_address;if(!Z.did&&!J.did)Z.did=J.user.id||J.user.email||J.user.username}if(Z.timestamp=J.timestamp||E9(),J.abnormal_mechanism)Z.abnormal_mechanism=J.abnormal_mechanism;if(J.ignoreDuration)Z.ignoreDuration=J.ignoreDuration;if(J.sid)Z.sid=J.sid.length===32?J.sid:I0();if(J.init!==void 0)Z.init=J.init;if(!Z.did&&J.did)Z.did=`${J.did}`;if(typeof J.started==="number")Z.started=J.started;if(Z.ignoreDuration)Z.duration=void 0;else if(typeof J.duration==="number")Z.duration=J.duration;else{let Q=Z.timestamp-Z.started;Z.duration=Q>=0?Q:0}if(J.release)Z.release=J.release;if(J.environment)Z.environment=J.environment;if(!Z.ipAddress&&J.ipAddress)Z.ipAddress=J.ipAddress;if(!Z.userAgent&&J.userAgent)Z.userAgent=J.userAgent;if(typeof J.errors==="number")Z.errors=J.errors;if(J.status)Z.status=J.status}function OI(Z,J){let Q={};if(J)Q={status:J};else if(Z.status==="ok")Q={status:"exited"};s9(Z,Q)}function tz0(Z){return{sid:`${Z.sid}`,init:Z.init,started:new Date(Z.started*1000).toISOString(),timestamp:new Date(Z.timestamp*1000).toISOString(),status:Z.status,errors:Z.errors,did:typeof Z.did==="number"||typeof Z.did==="string"?`${Z.did}`:void 0,duration:Z.duration,abnormal_mechanism:Z.abnormal_mechanism,attrs:{release:Z.release,environment:Z.environment,ip_address:Z.ipAddress,user_agent:Z.userAgent}}}function TZ(Z,J,Q=2){if(!J||typeof J!=="object"||Q<=0)return J;if(Z&&Object.keys(J).length===0)return Z;let $={...Z};for(let X in J)if(Object.prototype.hasOwnProperty.call(J,X))$[X]=TZ($[X],J[X],Q-1);return $}function w6(){return I0()}function D6(){return I0().substring(16)}var PW="_sentrySpan";function T7(Z,J){if(J)M0(Z,PW,J);else delete Z[PW]}function r9(Z){return Z[PW]}var ez0=100;class n0{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._attributes={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext={traceId:w6(),sampleRand:g0()}}clone(){let Z=new n0;if(Z._breadcrumbs=[...this._breadcrumbs],Z._tags={...this._tags},Z._attributes={...this._attributes},Z._extra={...this._extra},Z._contexts={...this._contexts},this._contexts.flags)Z._contexts.flags={values:[...this._contexts.flags.values]};return Z._user=this._user,Z._level=this._level,Z._session=this._session,Z._transactionName=this._transactionName,Z._fingerprint=this._fingerprint,Z._eventProcessors=[...this._eventProcessors],Z._attachments=[...this._attachments],Z._sdkProcessingMetadata={...this._sdkProcessingMetadata},Z._propagationContext={...this._propagationContext},Z._client=this._client,Z._lastEventId=this._lastEventId,Z._conversationId=this._conversationId,T7(Z,r9(this)),Z}setClient(Z){this._client=Z}setLastEventId(Z){this._lastEventId=Z}getClient(){return this._client}lastEventId(){return this._lastEventId}addScopeListener(Z){this._scopeListeners.push(Z)}addEventProcessor(Z){return this._eventProcessors.push(Z),this}setUser(Z){if(this._user=Z||{email:void 0,id:void 0,ip_address:void 0,username:void 0},this._session)s9(this._session,{user:Z});return this._notifyScopeListeners(),this}getUser(){return this._user}setConversationId(Z){return this._conversationId=Z||void 0,this._notifyScopeListeners(),this}setTags(Z){return this._tags={...this._tags,...Z},this._notifyScopeListeners(),this}setTag(Z,J){return this.setTags({[Z]:J})}setAttributes(Z){return this._attributes={...this._attributes,...Z},this._notifyScopeListeners(),this}setAttribute(Z,J){return this.setAttributes({[Z]:J})}removeAttribute(Z){if(Z in this._attributes)delete this._attributes[Z],this._notifyScopeListeners();return this}setExtras(Z){return this._extra={...this._extra,...Z},this._notifyScopeListeners(),this}setExtra(Z,J){return this._extra={...this._extra,[Z]:J},this._notifyScopeListeners(),this}setFingerprint(Z){return this._fingerprint=Z,this._notifyScopeListeners(),this}setLevel(Z){return this._level=Z,this._notifyScopeListeners(),this}setTransactionName(Z){return this._transactionName=Z,this._notifyScopeListeners(),this}setContext(Z,J){if(J===null)delete this._contexts[Z];else this._contexts[Z]=J;return this._notifyScopeListeners(),this}setSession(Z){if(!Z)delete this._session;else this._session=Z;return this._notifyScopeListeners(),this}getSession(){return this._session}update(Z){if(!Z)return this;let J=typeof Z==="function"?Z(this):Z,Q=J instanceof n0?J.getScopeData():o9(J)?Z:void 0,{tags:$,attributes:X,extra:Y,user:W,contexts:K,level:z,fingerprint:G=[],propagationContext:H,conversationId:B}=Q||{};if(this._tags={...this._tags,...$},this._attributes={...this._attributes,...X},this._extra={...this._extra,...Y},this._contexts={...this._contexts,...K},W&&Object.keys(W).length)this._user=W;if(z)this._level=z;if(G.length)this._fingerprint=G;if(H)this._propagationContext=H;if(B)this._conversationId=B;return this}clear(){return this._breadcrumbs=[],this._tags={},this._attributes={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._session=void 0,this._conversationId=void 0,T7(this,void 0),this._attachments=[],this.setPropagationContext({traceId:w6(),sampleRand:g0()}),this._notifyScopeListeners(),this}addBreadcrumb(Z,J){let Q=typeof J==="number"?J:ez0;if(Q<=0)return this;let $={timestamp:a9(),...Z,message:Z.message?AZ(Z.message,2048):Z.message};if(this._breadcrumbs.push($),this._breadcrumbs.length>Q)this._breadcrumbs=this._breadcrumbs.slice(-Q),this._client?.recordDroppedEvent("buffer_overflow","log_item");return this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(Z){return this._attachments.push(Z),this}clearAttachments(){return this._attachments=[],this}getScopeData(){return{breadcrumbs:this._breadcrumbs,attachments:this._attachments,contexts:this._contexts,tags:this._tags,attributes:this._attributes,extra:this._extra,user:this._user,level:this._level,fingerprint:this._fingerprint||[],eventProcessors:this._eventProcessors,propagationContext:this._propagationContext,sdkProcessingMetadata:this._sdkProcessingMetadata,transactionName:this._transactionName,span:r9(this),conversationId:this._conversationId}}setSDKProcessingMetadata(Z){return this._sdkProcessingMetadata=TZ(this._sdkProcessingMetadata,Z,2),this}setPropagationContext(Z){return this._propagationContext=Z,this}getPropagationContext(){return this._propagationContext}captureException(Z,J){let Q=J?.event_id||I0();if(!this._client)return k&&q.warn("No client configured on scope - will not capture exception!"),Q;let $=Error("Sentry syntheticException");return this._client.captureException(Z,{originalException:Z,syntheticException:$,...J,event_id:Q},this),Q}captureMessage(Z,J,Q){let $=Q?.event_id||I0();if(!this._client)return k&&q.warn("No client configured on scope - will not capture message!"),$;let X=Q?.syntheticException??Error(Z);return this._client.captureMessage(Z,J,{originalException:Z,syntheticException:X,...Q,event_id:$},this),$}captureEvent(Z,J){let Q=Z.event_id||J?.event_id||I0();if(!this._client)return k&&q.warn("No client configured on scope - will not capture event!"),Q;return this._client.captureEvent(Z,{...J,event_id:Q},this),Q}_notifyScopeListeners(){if(!this._notifyingListeners)this._notifyingListeners=!0,this._scopeListeners.forEach((Z)=>{Z(this)}),this._notifyingListeners=!1}}function v1(){return F9("defaultCurrentScope",()=>new n0)}function A6(){return F9("defaultIsolationScope",()=>new n0)}var CI=(Z)=>Z instanceof Promise&&!Z[PI],PI=Symbol("chained PromiseLike"),qQ=(Z,J,Q)=>{let $=Z.then((X)=>{return J(X),X},(X)=>{throw Q(X),X});return CI($)&&CI(Z)?$:ZG0(Z,$)},ZG0=(Z,J)=>{let Q=!1;for(let $ in Z){if($ in J)continue;Q=!0;let X=Z[$];if(typeof X==="function")Object.defineProperty(J,$,{value:(...Y)=>X.apply(Z,Y),enumerable:!0,configurable:!0,writable:!0});else J[$]=X}if(Q)Object.assign(J,{[PI]:!0});return J};class MI{constructor(Z,J){let Q;if(!Z)Q=new n0;else Q=Z;let $;if(!J)$=new n0;else $=J;this._stack=[{scope:Q}],this._isolationScope=$}withScope(Z){let J=this._pushScope(),Q;try{Q=Z(J)}catch($){throw this._popScope(),$}if(x0(Q))return qQ(Q,()=>this._popScope(),()=>this._popScope());return this._popScope(),Q}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStackTop(){return this._stack[this._stack.length-1]}_pushScope(){let Z=this.getScope().clone();return this._stack.push({client:this.getClient(),scope:Z}),Z}_popScope(){if(this._stack.length<=1)return!1;return!!this._stack.pop()}}function b1(){let Z=J6(),J=RZ(Z);return J.stack=J.stack||new MI(v1(),A6())}function JG0(Z){return b1().withScope(Z)}function QG0(Z,J){let Q=b1();return Q.withScope(()=>{return Q.getStackTop().scope=Z,J(Z)})}function kI(Z){return b1().withScope(()=>{return Z(b1().getIsolationScope())})}function RI(){return{withIsolationScope:kI,withScope:JG0,withSetScope:QG0,withSetIsolationScope:(Z,J)=>{return kI(J)},getCurrentScope:()=>b1().getScope(),getIsolationScope:()=>b1().getIsolationScope()}}function kW(Z){let J=J6(),Q=RZ(J);Q.acs=Z}function D9(Z){let J=RZ(Z);if(J.acs)return J.acs;return RI()}function t(){let Z=J6();return D9(Z).getCurrentScope()}function l(){let Z=J6();return D9(Z).getIsolationScope()}function P5(){return F9("globalScope",()=>new n0)}function a0(...Z){let J=J6(),Q=D9(J);if(Z.length===2){let[$,X]=Z;if(!$)return Q.withScope(X);return Q.withSetScope($,X)}return Q.withScope(Z[0])}function x1(...Z){let J=J6(),Q=D9(J);if(Z.length===2){let[$,X]=Z;if(!$)return Q.withIsolationScope(X);return Q.withSetIsolationScope($,X)}return Q.withIsolationScope(Z[0])}function f(){return t().getClient()}function f7(Z){let J=Z.getPropagationContext(),{traceId:Q,parentSpanId:$,propagationSpanId:X}=J,Y={trace_id:Q,span_id:X||D6()};if($)Y.parent_span_id=$;return Y}var B0="sentry.source",o6="sentry.sample_rate",MW="sentry.previous_trace_sample_rate",b="sentry.op",_="sentry.origin";var RW="sentry.measurement_unit",AW="sentry.measurement_value",n6="sentry.custom_span_name",g1="sentry.profile_id",d1="sentry.exclusive_time",IW="cache.hit",NW="cache.key",TW="cache.item_size",fW="http.request.method",fZ="url.full";var EW="gen_ai.conversation.id";var c1="sentry-";var II=8192;function t9(Z){let J=y7(Z);if(!J)return;let Q=Object.entries(J).reduce(($,[X,Y])=>{if(X.startsWith(c1)){let W=X.slice(c1.length);$[W]=Y}return $},{});if(Object.keys(Q).length>0)return Q;else return}function E7(Z){if(!Z)return;let J=Object.entries(Z).reduce((Q,[$,X])=>{if(X)Q[`${c1}${$}`]=X;return Q},{});return LQ(J)}function y7(Z){if(!Z||!MZ(Z)&&!Array.isArray(Z))return;if(Array.isArray(Z))return Z.reduce((J,Q)=>{let $=AI(Q);return Object.entries($).forEach(([X,Y])=>{J[X]=Y}),J},{});return AI(Z)}function AI(Z){return Z.split(",").map((J)=>{let Q=J.indexOf("=");if(Q===-1)return[];let $=J.slice(0,Q),X=J.slice(Q+1);return[$,X].map((Y)=>{try{return decodeURIComponent(Y.trim())}catch{return}})}).reduce((J,[Q,$])=>{if(Q&&$)J[Q]=$;return J},{})}function LQ(Z){if(Object.keys(Z).length===0)return;return Object.entries(Z).reduce((J,[Q,$],X)=>{let Y=`${encodeURIComponent(Q)}=${encodeURIComponent($)}`,W=X===0?Y:`${J},${Y}`;if(W.length>II)return k&&q.warn(`Not adding key: ${Q} with val: ${$} to baggage header due to exceeding baggage size limits.`),J;else return W},"")}function U9(Z,J,Q=()=>{},$=()=>{}){let X;try{X=Z()}catch(Y){throw J(Y),Q(),Y}return $G0(X,J,Q,$)}function $G0(Z,J,Q,$){if(x0(Z))return qQ(Z,(X)=>{Q(),$(X)},(X)=>{J(X),Q()});return Q(),$(Z),Z}function C0(Z){if(typeof __SENTRY_TRACING__==="boolean"&&!__SENTRY_TRACING__)return!1;let J=Z||f()?.getOptions();return!!J&&(J.tracesSampleRate!=null||!!J.tracesSampler)}function I6(Z){if(typeof Z==="boolean")return Number(Z);let J=typeof Z==="string"?parseFloat(Z):Z;if(typeof J!=="number"||isNaN(J)||J<0||J>1)return;return J}var XG0=/^o(\d+)\./,YG0=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)((?:\[[:.%\w]+\]|[\w.-]+))(?::(\d+))?\/(.+)/;function WG0(Z){return Z==="http"||Z==="https"}function N6(Z,J=!1){let{host:Q,path:$,pass:X,port:Y,projectId:W,protocol:K,publicKey:z}=Z;return`${K}://${z}${J&&X?`:${X}`:""}@${Q}${Y?`:${Y}`:""}/${$?`${$}/`:$}${W}`}function KG0(Z){let J=YG0.exec(Z);if(!J){O0(()=>{console.error(`Invalid Sentry Dsn: ${Z}`)});return}let[Q,$,X="",Y="",W="",K=""]=J.slice(1),z="",G=K,H=G.split("/");if(H.length>1)z=H.slice(0,-1).join("/"),G=H.pop();if(G){let B=G.match(/^\d+/);if(B)G=B[0]}return NI({host:Y,pass:X,path:z,projectId:G,port:W,protocol:Q,publicKey:$})}function NI(Z){return{protocol:Z.protocol,publicKey:Z.publicKey||"",pass:Z.pass||"",host:Z.host,port:Z.port||"",path:Z.path||"",projectId:Z.projectId}}function zG0(Z){if(!k)return!0;let{port:J,projectId:Q,protocol:$}=Z;if(["protocol","publicKey","host","projectId"].find((W)=>{if(!Z[W])return q.error(`Invalid Sentry Dsn: ${W} missing`),!0;return!1}))return!1;if(!Q.match(/^\d+$/))return q.error(`Invalid Sentry Dsn: Invalid projectId ${Q}`),!1;if(!WG0($))return q.error(`Invalid Sentry Dsn: Invalid protocol ${$}`),!1;if(J&&isNaN(parseInt(J,10)))return q.error(`Invalid Sentry Dsn: Invalid port ${J}`),!1;return!0}function GG0(Z){return Z.match(XG0)?.[1]}function OQ(Z){let J=Z.getOptions(),{host:Q}=Z.getDsn()||{},$;if(J.orgId)$=String(J.orgId);else if(Q)$=GG0(Q);return $}function TI(Z){let J=typeof Z==="string"?KG0(Z):NI(Z);if(!J||!zG0(J))return;return J}var k5=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function fI(Z){if(!Z)return;let J=Z.match(k5);if(!J)return;let Q;if(J[3]==="1")Q=!0;else if(J[3]==="0")Q=!1;return{traceId:J[1],parentSampled:Q,parentSpanId:J[2]}}function M5(Z,J){let Q=fI(Z),$=t9(J);if(!Q?.traceId)return{traceId:w6(),sampleRand:g0()};let X=BG0(Q,$);if($)$.sample_rand=X.toString();let{traceId:Y,parentSpanId:W,parentSampled:K}=Q;return{traceId:Y,parentSpanId:W,sampled:K,dsc:$||{},sampleRand:X}}function EZ(Z=w6(),J=D6(),Q){let $="";if(Q!==void 0)$=Q?"-1":"-0";return`${Z}-${J}${$}`}function yZ(Z=w6(),J=D6(),Q){return`00-${Z}-${J}-${Q?"01":"00"}`}function BG0(Z,J){let Q=I6(J?.sample_rand);if(Q!==void 0)return Q;let $=I6(J?.sample_rate);if($&&Z?.parentSampled!==void 0)return Z.parentSampled?g0()*$:$+g0()*(1-$);else return g0()}function yW(Z,J){let Q=OQ(Z);if(J&&Q&&J!==Q)return q.log(`Won't continue trace because org IDs don't match (incoming baggage: ${J}, SDK options: ${Q})`),!1;if(Z.getOptions().strictTraceContinuation||!1){if(J&&!Q||!J&&Q)return q.log(`Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${J}, Sentry client: ${Q})`),!1}return!0}var CQ=0,PQ=1,EI=!1;function hI(Z){let{spanId:J,traceId:Q}=Z.spanContext(),{data:$,op:X,parent_span_id:Y,status:W,origin:K,links:z}=h(Z);return{parent_span_id:Y,span_id:J,trace_id:Q,data:$,op:X,status:W,origin:K,links:z}}function hZ(Z){let{spanId:J,traceId:Q,isRemote:$}=Z.spanContext(),X=$?J:h(Z).parent_span_id,Y=w9(Z).scope,W=$?Y?.getPropagationContext().propagationSpanId||D6():J;return{parent_span_id:X,span_id:W,trace_id:Q}}function A5(Z){let{traceId:J,spanId:Q}=Z.spanContext(),$=j9(Z);return EZ(J,Q,$)}function SI(Z){let{traceId:J,spanId:Q}=Z.spanContext(),$=j9(Z);return yZ(J,Q,$)}function h7(Z){if(Z&&Z.length>0)return Z.map(({context:{spanId:J,traceId:Q,traceFlags:$,...X},attributes:Y})=>({span_id:J,trace_id:Q,sampled:$===PQ,attributes:Y,...X}));else return}function U6(Z){if(typeof Z==="number")return yI(Z);if(Array.isArray(Z))return Z[0]+Z[1]/1e9;if(Z instanceof Date)return yI(Z.getTime());return E9()}function yI(Z){return Z>9999999999?Z/1000:Z}function h(Z){if(VG0(Z))return Z.getSpanJSON();let{spanId:J,traceId:Q}=Z.spanContext();if(HG0(Z)){let{attributes:$,startTime:X,name:Y,endTime:W,status:K,links:z}=Z,G="parentSpanId"in Z?Z.parentSpanId:("parentSpanContext"in Z)?Z.parentSpanContext?.spanId:void 0;return{span_id:J,trace_id:Q,data:$,description:Y,parent_span_id:G,start_timestamp:U6(X),timestamp:U6(W)||void 0,status:S7(K),op:$[b],origin:$[_],links:h7(z)}}return{span_id:J,trace_id:Q,start_timestamp:0,data:{}}}function HG0(Z){let J=Z;return!!J.attributes&&!!J.startTime&&!!J.name&&!!J.endTime&&!!J.status}function VG0(Z){return typeof Z.getSpanJSON==="function"}function j9(Z){let{traceFlags:J}=Z.spanContext();return J===PQ}function S7(Z){if(!Z||Z.code===VW)return;if(Z.code===h1)return"ok";return Z.message||"internal_error"}var R5="_sentryChildSpans",hW="_sentryRootSpan";function m1(Z,J){let Q=Z[hW]||Z;if(M0(J,hW,Q),Z[R5])Z[R5].add(J);else M0(Z,R5,new Set([J]))}function I5(Z){let J=new Set;function Q($){if(J.has($))return;else if(j9($)){J.add($);let X=$[R5]?Array.from($[R5]):[];for(let Y of X)Q(Y)}}return Q(Z),Array.from(J)}function H0(Z){return Z[hW]||Z}function T6(){let Z=J6(),J=D9(Z);if(J.getActiveSpan)return J.getActiveSpan();return r9(t())}function N5(){if(!EI)O0(()=>{console.warn("[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.")}),EI=!0}var u1="production";var _I="_frozenDsc";function kQ(Z,J){M0(Z,_I,J)}function SW(Z,J){let Q=J.getOptions(),{publicKey:$}=J.getDsn()||{},X={environment:Q.environment||u1,release:Q.release,public_key:$,trace_id:Z,org_id:OQ(J)};return J.emit("createDsc",X),X}function y9(Z,J){let Q=J.getPropagationContext();return Q.dsc||SW(Q.traceId,Z)}function P0(Z){let J=f();if(!J)return{};let Q=H0(Z),$=h(Q),X=$.data,Y=Q.spanContext().traceState,W=Y?.get("sentry.sample_rate")??X[o6]??X[MW];function K(D){if(typeof W==="number"||typeof W==="string")D.sample_rate=`${W}`;return D}let z=Q[_I];if(z)return K(z);let G=Y?.get("sentry.dsc"),H=G&&t9(G);if(H)return K(H);let B=SW(Z.spanContext().traceId,J),V=X[B0],F=$.description;if(V!=="url"&&F)B.transaction=F;if(C0())B.sampled=String(j9(Q)),B.sample_rand=Y?.get("sentry.sample_rand")??w9(Q).scope?.getPropagationContext().sampleRand.toString();return K(B),J.emit("createDsc",B,Q),B}function T5(Z){if(!k)return;let{description:J="< unknown name >",op:Q="< unknown op >",parent_span_id:$}=h(Z),{spanId:X}=Z.spanContext(),Y=j9(Z),W=H0(Z),K=W===Z,z=`[Tracing] Starting ${Y?"sampled":"unsampled"} ${K?"root ":""}span`,G=[`op: ${Q}`,`name: ${J}`,`ID: ${X}`];if($)G.push(`parent ID: ${$}`);if(!K){let{op:H,description:B}=h(W);if(G.push(`root ID: ${W.spanContext().spanId}`),H)G.push(`root op: ${H}`);if(B)G.push(`root description: ${B}`)}q.log(`${z} + ${G.join(` + `)}`)}function f5(Z){if(!k)return;let{description:J="< unknown name >",op:Q="< unknown op >"}=h(Z),{spanId:$}=Z.spanContext(),Y=H0(Z)===Z,W=`[Tracing] Finishing "${Q}" ${Y?"root ":""}span "${J}" with ID ${$}`;q.log(W)}function E5(Z,J,Q){if(!C0(Z))return[!1];let $=void 0,X;if(typeof Z.tracesSampler==="function")X=Z.tracesSampler({...J,inheritOrSampleWith:(K)=>{if(typeof J.parentSampleRate==="number")return J.parentSampleRate;if(typeof J.parentSampled==="boolean")return Number(J.parentSampled);return K}}),$=!0;else if(J.parentSampled!==void 0)X=J.parentSampled;else if(typeof Z.tracesSampleRate<"u")X=Z.tracesSampleRate,$=!0;let Y=I6(X);if(Y===void 0)return k&&q.warn(`[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(X)} of type ${JSON.stringify(typeof X)}.`),[!1];if(!Y)return k&&q.log(`[Tracing] Discarding transaction because ${typeof Z.tracesSampler==="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`),[!1,Y,$];let W=QQ)return vW(Z,J-1,Q);return $}function _W(Z,J,Q=1/0,$=1/0,X=jG0()){let[Y,W]=X;if(J==null||["boolean","string"].includes(typeof J)||typeof J==="number"&&Number.isFinite(J))return J;let K=FG0(Z,J);if(!K.startsWith("[object "))return K;if(J.__sentry_skip_normalization__)return J;let z=typeof J.__sentry_override_normalization_depth__==="number"?J.__sentry_override_normalization_depth__:Q;if(z===0)return K.replace("object ","");if(Y(J))return"[Circular ~]";let G=J;if(G&&typeof G.toJSON==="function")try{let F=G.toJSON();return _W("",F,z-1,$,X)}catch{}let H=Array.isArray(J)?[]:{},B=0,V=FQ(J);for(let F in V){if(!Object.prototype.hasOwnProperty.call(V,F))continue;if(B>=$){H[F]="[MaxProperties ~]";break}let D=V[F];H[F]=_W(F,D,z-1,$,X),B++}return W(J),H}function FG0(Z,J){try{if(Z==="domain"&&J&&typeof J==="object"&&J._events)return"[Domain]";if(Z==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&J===global)return"[Global]";if(typeof window<"u"&&J===window)return"[Window]";if(typeof document<"u"&&J===document)return"[Document]";if(q5(J))return UQ(J);if(WW(J))return"[SyntheticEvent]";if(typeof J==="number"&&!Number.isFinite(J))return`[${J}]`;if(typeof J==="function")return`[Function: ${C5(J)}]`;if(typeof J==="symbol")return`[${String(J)}]`;if(typeof J==="bigint")return`[BigInt: ${String(J)}]`;let Q=wG0(J);if(/^HTML(\w*)Element$/.test(Q))return`[HTMLElement: ${Q}]`;return`[object ${Q}]`}catch(Q){return`**non-serializable** (${Q})`}}function wG0(Z){let J=Object.getPrototypeOf(Z);return J?.constructor?J.constructor.name:"null prototype"}function DG0(Z){return~-encodeURI(Z).split(/%..|./).length}function UG0(Z){return DG0(JSON.stringify(Z))}function jG0(){let Z=new WeakSet;function J($){if(Z.has($))return!0;return Z.add($),!1}function Q($){Z.delete($)}return[J,Q]}function Q6(Z,J=[]){return[Z,J]}function xW(Z,J){let[Q,$]=Z;return[Q,[...$,J]]}function y5(Z,J){let Q=Z[1];for(let $ of Q){let X=$[0].type;if(J($,X))return!0}return!1}function gW(Z,J){return y5(Z,(Q,$)=>J.includes($))}function bW(Z){let J=RZ(d);return J.encodePolyfill?J.encodePolyfill(Z):new TextEncoder().encode(Z)}function h5(Z){let[J,Q]=Z,$=JSON.stringify(J);function X(Y){if(typeof $==="string")$=typeof Y==="string"?$+Y:[bW($),Y];else $.push(typeof Y==="string"?bW(Y):Y)}for(let Y of Q){let[W,K]=Y;if(X(` +${JSON.stringify(W)} +`),typeof K==="string"||K instanceof Uint8Array)X(K);else{let z;try{z=JSON.stringify(K)}catch{z=JSON.stringify(q9(K))}X(z)}}return typeof $==="string"?$:qG0($)}function qG0(Z){let J=Z.reduce((X,Y)=>X+Y.length,0),Q=new Uint8Array(J),$=0;for(let X of Z)Q.set(X,$),$+=X.length;return Q}function dW(Z){return[{type:"span"},Z]}function cW(Z){let J=typeof Z.data==="string"?bW(Z.data):Z.data;return[{type:"attachment",length:J.length,filename:Z.filename,content_type:Z.contentType,attachment_type:Z.attachmentType},J]}var vI={sessions:"session",event:"error",client_report:"internal",user_report:"default",profile_chunk:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",raw_security:"security",log:"log_item",trace_metric:"metric"};function LG0(Z){return Z in vI}function MQ(Z){return LG0(Z)?vI[Z]:Z}function RQ(Z){if(!Z?.sdk)return;let{name:J,version:Q}=Z.sdk;return{name:J,version:Q}}function mW(Z,J,Q,$){let X=Z.sdkProcessingMetadata?.dynamicSamplingContext;return{event_id:Z.event_id,sent_at:new Date().toISOString(),...J&&{sdk:J},...!!Q&&$&&{dsn:N6($)},...X&&{trace:X}}}function bI(Z){q.log(`Ignoring span ${Z.op} - ${Z.description} because it matches \`ignoreSpans\`.`)}function S5(Z,J){if(!J?.length||!Z.description)return!1;for(let Q of J){if(OG0(Q)){if(n9(Z.description,Q))return k&&bI(Z),!0;continue}if(!Q.name&&!Q.op)continue;let $=Q.name?n9(Z.description,Q.name):!0,X=Q.op?Z.op&&n9(Z.op,Q.op):!0;if($&&X)return k&&bI(Z),!0}return!1}function xI(Z,J){let{parent_span_id:Q,span_id:$}=J;if(!Q)return;for(let X of Z)if(X.parent_span_id===$)X.parent_span_id=Q}function OG0(Z){return typeof Z==="string"||Z instanceof RegExp}function CG0(Z,J){if(!J)return Z;let Q=Z.sdk||{};return Z.sdk={...Q,name:Q.name||J.name,version:Q.version||J.version,integrations:[...Z.sdk?.integrations||[],...J.integrations||[]],packages:[...Z.sdk?.packages||[],...J.packages||[]],settings:Z.sdk?.settings||J.settings?{...Z.sdk?.settings,...J.settings}:void 0},Z}function gI(Z,J,Q,$){let X=RQ(Q),Y={sent_at:new Date().toISOString(),...X&&{sdk:X},...!!$&&J&&{dsn:N6(J)}},W="aggregates"in Z?[{type:"sessions"},Z]:[{type:"session"},Z.toJSON()];return Q6(Y,[W])}function dI(Z,J,Q,$){let X=RQ(Q),Y=Z.type&&Z.type!=="replay_event"?Z.type:"event";CG0(Z,Q?.sdk);let W=mW(Z,X,$,J);return delete Z.sdkProcessingMetadata,Q6(W,[[{type:Y},Z]])}function cI(Z,J){function Q(F){return!!F.trace_id&&!!F.public_key}let $=P0(Z[0]),X=J?.getDsn(),Y=J?.getOptions().tunnel,W={sent_at:new Date().toISOString(),...Q($)&&{trace:$},...!!Y&&X&&{dsn:N6(X)}},{beforeSendSpan:K,ignoreSpans:z}=J?.getOptions()||{},G=z?.length?Z.filter((F)=>!S5(h(F),z)):Z,H=Z.length-G.length;if(H)J?.recordDroppedEvent("before_send","span",H);let B=K?(F)=>{let D=h(F),U=K(D);if(!U)return N5(),D;return U}:h,V=[];for(let F of G){let D=B(F);if(D)V.push(dW(D))}return Q6(W,V)}function v7(Z){if(!Z||Z.length===0)return;let J={};return Z.forEach((Q)=>{let $=Q.attributes||{},X=$[RW],Y=$[AW];if(typeof X==="string"&&typeof Y==="number")J[Q.name]={value:Y,unit:X}}),J}var mI=1000;class _5{constructor(Z={}){if(this._traceId=Z.traceId||w6(),this._spanId=Z.spanId||D6(),this._startTime=Z.startTimestamp||E9(),this._links=Z.links,this._attributes={},this.setAttributes({[_]:"manual",[b]:Z.op,...Z.attributes}),this._name=Z.name,Z.parentSpanId)this._parentSpanId=Z.parentSpanId;if("sampled"in Z)this._sampled=Z.sampled;if(Z.endTimestamp)this._endTime=Z.endTimestamp;if(this._events=[],this._isStandaloneSpan=Z.isStandalone,this._endTime)this._onSpanEnded()}addLink(Z){if(this._links)this._links.push(Z);else this._links=[Z];return this}addLinks(Z){if(this._links)this._links.push(...Z);else this._links=Z;return this}recordException(Z,J){}spanContext(){let{_spanId:Z,_traceId:J,_sampled:Q}=this;return{spanId:Z,traceId:J,traceFlags:Q?PQ:CQ}}setAttribute(Z,J){if(J===void 0)delete this._attributes[Z];else this._attributes[Z]=J;return this}setAttributes(Z){return Object.keys(Z).forEach((J)=>this.setAttribute(J,Z[J])),this}updateStartTime(Z){this._startTime=U6(Z)}setStatus(Z){return this._status=Z,this}updateName(Z){return this._name=Z,this.setAttribute(B0,"custom"),this}end(Z){if(this._endTime)return;this._endTime=U6(Z),f5(this),this._onSpanEnded()}getSpanJSON(){return{data:this._attributes,description:this._name,op:this._attributes[b],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:S7(this._status),timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[_],profile_id:this._attributes[g1],exclusive_time:this._attributes[d1],measurements:v7(this._events),is_segment:this._isStandaloneSpan&&H0(this)===this||void 0,segment_id:this._isStandaloneSpan?H0(this).spanContext().spanId:void 0,links:h7(this._links)}}isRecording(){return!this._endTime&&!!this._sampled}addEvent(Z,J,Q){k&&q.log("[Tracing] Adding an event to span:",Z);let $=uI(J)?J:Q||E9(),X=uI(J)?{}:J||{},Y={name:Z,time:U6($),attributes:X};return this._events.push(Y),this}isStandaloneSpan(){return!!this._isStandaloneSpan}_onSpanEnded(){let Z=f();if(Z)Z.emit("spanEnd",this);if(!(this._isStandaloneSpan||this===H0(this)))return;if(this._isStandaloneSpan){if(this._sampled)kG0(cI([this],Z));else if(k&&q.log("[Tracing] Discarding standalone span because its trace was not chosen to be sampled."),Z)Z.recordDroppedEvent("sample_rate","span");return}let Q=this._convertSpanToTransaction();if(Q)(w9(this).scope||t()).captureEvent(Q)}_convertSpanToTransaction(){if(!lI(h(this)))return;if(!this._name)k&&q.warn("Transaction has no name, falling back to ``."),this._name="";let{scope:Z,isolationScope:J}=w9(this),Q=Z?.getScopeData().sdkProcessingMetadata?.normalizedRequest;if(this._sampled!==!0)return;let X=I5(this).filter((G)=>G!==this&&!PG0(G)).map((G)=>h(G)).filter(lI),Y=this._attributes[B0];delete this._attributes[n6],X.forEach((G)=>{delete G.data[n6]});let W={contexts:{trace:hI(this)},spans:X.length>mI?X.sort((G,H)=>G.start_timestamp-H.start_timestamp).slice(0,mI):X,start_timestamp:this._startTime,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:Z,capturedSpanIsolationScope:J,dynamicSamplingContext:P0(this)},request:Q,...Y&&{transaction_info:{source:Y}}},K=v7(this._events);if(K&&Object.keys(K).length)k&&q.log("[Measurements] Adding measurements to transaction event",JSON.stringify(K,void 0,2)),W.measurements=K;return W}}function uI(Z){return Z&&typeof Z==="number"||Z instanceof Date||Array.isArray(Z)}function lI(Z){return!!Z.start_timestamp&&!!Z.timestamp&&!!Z.span_id&&!!Z.trace_id}function PG0(Z){return Z instanceof _5&&Z.isStandaloneSpan()}function kG0(Z){let J=f();if(!J)return;let Q=Z[1];if(!Q||Q.length===0){J.recordDroppedEvent("before_send","span");return}J.sendEnvelope(Z)}var AQ="__SENTRY_SUPPRESS_TRACING__";function j6(Z,J){let Q=b5();if(Q.startSpan)return Q.startSpan(Z,J);let $=lW(Z),{forceTransaction:X,parentSpan:Y,scope:W}=Z,K=W?.clone();return a0(K,()=>{return iI(Y)(()=>{let G=t(),H=pW(G,Y),V=Z.onlyIfParent&&!H?new _7:uW({parentSpan:H,spanArguments:$,forceTransaction:X,scope:G});return T7(G,V),U9(()=>J(V),()=>{let{status:F}=h(V);if(V.isRecording()&&(!F||F==="ok"))V.setStatus({code:i,message:"internal_error"})},()=>{V.end()})})})}function N0(Z,J){let Q=b5();if(Q.startSpanManual)return Q.startSpanManual(Z,J);let $=lW(Z),{forceTransaction:X,parentSpan:Y,scope:W}=Z,K=W?.clone();return a0(K,()=>{return iI(Y)(()=>{let G=t(),H=pW(G,Y),V=Z.onlyIfParent&&!H?new _7:uW({parentSpan:H,spanArguments:$,forceTransaction:X,scope:G});return T7(G,V),U9(()=>J(V,()=>V.end()),()=>{let{status:F}=h(V);if(V.isRecording()&&(!F||F==="ok"))V.setStatus({code:i,message:"internal_error"})})})})}function v5(Z){let J=b5();if(J.startInactiveSpan)return J.startInactiveSpan(Z);let Q=lW(Z),{forceTransaction:$,parentSpan:X}=Z;return(Z.scope?(W)=>a0(Z.scope,W):X!==void 0?(W)=>b7(X,W):(W)=>W())(()=>{let W=t(),K=pW(W,X);if(Z.onlyIfParent&&!K)return new _7;return uW({parentSpan:K,spanArguments:Q,forceTransaction:$,scope:W})})}function b7(Z,J){let Q=b5();if(Q.withActiveSpan)return Q.withActiveSpan(Z,J);return a0(($)=>{return T7($,Z||void 0),J($)})}function x7(Z){let J=b5();if(J.suppressTracing)return J.suppressTracing(Z);return a0((Q)=>{Q.setSDKProcessingMetadata({[AQ]:!0});let $=Z();return Q.setSDKProcessingMetadata({[AQ]:void 0}),$})}function uW({parentSpan:Z,spanArguments:J,forceTransaction:Q,scope:$}){if(!C0()){let W=new _7;if(Q||!Z){let K={sampled:"false",sample_rate:"0",transaction:J.name,...P0(W)};kQ(W,K)}return W}let X=l(),Y;if(Z&&!Q)Y=MG0(Z,$,J),m1(Z,Y);else if(Z){let W=P0(Z),{traceId:K,spanId:z}=Z.spanContext(),G=j9(Z);Y=pI({traceId:K,parentSpanId:z,...J},$,G),kQ(Y,W)}else{let{traceId:W,dsc:K,parentSpanId:z,sampled:G}={...X.getPropagationContext(),...$.getPropagationContext()};if(Y=pI({traceId:W,parentSpanId:z,...J},$,G),K)kQ(Y,K)}return T5(Y),O5(Y,$,X),Y}function lW(Z){let Q={isStandalone:(Z.experimental||{}).standalone,...Z};if(Z.startTime){let $={...Q};return $.startTimestamp=U6(Z.startTime),delete $.startTime,$}return Q}function b5(){let Z=J6();return D9(Z)}function pI(Z,J,Q){let $=f(),X=$?.getOptions()||{},{name:Y=""}=Z,W={spanAttributes:{...Z.attributes},spanName:Y,parentSampled:Q};$?.emit("beforeSampling",W,{decision:!1});let K=W.parentSampled??Q,z=W.spanAttributes,G=J.getPropagationContext(),[H,B,V]=J.getScopeData().sdkProcessingMetadata[AQ]?[!1]:E5(X,{name:Y,parentSampled:K,attributes:z,parentSampleRate:I6(G.dsc?.sample_rate)},G.sampleRand),F=new _5({...Z,attributes:{[B0]:"custom",[o6]:B!==void 0&&V?B:void 0,...z},sampled:H});if(!H&&$)k&&q.log("[Tracing] Discarding root span because its trace was not chosen to be sampled."),$.recordDroppedEvent("sample_rate","transaction");if($)$.emit("spanStart",F);return F}function MG0(Z,J,Q){let{spanId:$,traceId:X}=Z.spanContext(),Y=J.getScopeData().sdkProcessingMetadata[AQ]?!1:j9(Z),W=Y?new _5({...Q,parentSpanId:$,traceId:X,sampled:Y}):new _7({traceId:X});m1(Z,W);let K=f();if(K){if(K.emit("spanStart",W),Q.endTimestamp)K.emit("spanEnd",W)}return W}function pW(Z,J){if(J)return J;if(J===null)return;let Q=r9(Z);if(!Q)return;let $=f();if(($?$.getOptions():{}).parentSpanIsAlwaysRootSpan)return H0(Q);return Q}function iI(Z){return Z!==void 0?(J)=>{return b7(Z,J)}:(J)=>J()}var iW=0,oI=1,nI=2;function e9(Z){return new x5((J)=>{J(Z)})}function l1(Z){return new x5((J,Q)=>{Q(Z)})}class x5{constructor(Z){this._state=iW,this._handlers=[],this._runExecutor(Z)}then(Z,J){return new x5((Q,$)=>{this._handlers.push([!1,(X)=>{if(!Z)Q(X);else try{Q(Z(X))}catch(Y){$(Y)}},(X)=>{if(!J)$(X);else try{Q(J(X))}catch(Y){$(Y)}}]),this._executeHandlers()})}catch(Z){return this.then((J)=>J,Z)}finally(Z){return new x5((J,Q)=>{let $,X;return this.then((Y)=>{if(X=!1,$=Y,Z)Z()},(Y)=>{if(X=!0,$=Y,Z)Z()}).then(()=>{if(X){Q($);return}J($)})})}_executeHandlers(){if(this._state===iW)return;let Z=this._handlers.slice();this._handlers=[],Z.forEach((J)=>{if(J[0])return;if(this._state===oI)J[1](this._value);if(this._state===nI)J[2](this._value);J[0]=!0})}_runExecutor(Z){let J=(X,Y)=>{if(this._state!==iW)return;if(x0(Y)){Y.then(Q,$);return}this._state=X,this._value=Y,this._executeHandlers()},Q=(X)=>{J(oI,X)},$=(X)=>{J(nI,X)};try{Z(Q,$)}catch(X){$(X)}}}function aI(Z,J,Q,$=0){try{let X=oW(J,Q,Z,$);return x0(X)?X:e9(X)}catch(X){return l1(X)}}function oW(Z,J,Q,$){let X=Q[$];if(!Z||!X)return Z;let Y=X({...Z},J);if(k&&Y===null&&q.log(`Event processor "${X.id||"?"}" dropped event`),x0(Y))return Y.then((W)=>oW(W,J,Q,$+1));return oW(Y,J,Q,$+1)}var g7,sI,rI,SZ;function tI(Z){let J=d._sentryDebugIds,Q=d._debugIds;if(!J&&!Q)return{};let $=J?Object.keys(J):[],X=Q?Object.keys(Q):[];if(SZ&&$.length===sI&&X.length===rI)return SZ;if(sI=$.length,rI=X.length,SZ={},!g7)g7={};let Y=(W,K)=>{for(let z of W){let G=K[z],H=g7?.[z];if(H&&SZ&&G){if(SZ[H[0]]=G,g7)g7[z]=[H[0],G]}else if(G){let B=Z(z);for(let V=B.length-1;V>=0;V--){let D=B[V]?.filename;if(D&&SZ&&g7){SZ[D]=G,g7[z]=[D,G];break}}}}};if(J)Y($,J);if(Q)Y(X,Q);return SZ}function ZN(Z,J){let{fingerprint:Q,span:$,breadcrumbs:X,sdkProcessingMetadata:Y}=J;if(RG0(Z,J),$)NG0(Z,$);TG0(Z,Q),AG0(Z,X),IG0(Z,Y)}function eI(Z,J){let{extra:Q,tags:$,attributes:X,user:Y,contexts:W,level:K,sdkProcessingMetadata:z,breadcrumbs:G,fingerprint:H,eventProcessors:B,attachments:V,propagationContext:F,transactionName:D,span:U}=J;if(g5(Z,"extra",Q),g5(Z,"tags",$),g5(Z,"attributes",X),g5(Z,"user",Y),g5(Z,"contexts",W),Z.sdkProcessingMetadata=TZ(Z.sdkProcessingMetadata,z,2),K)Z.level=K;if(D)Z.transactionName=D;if(U)Z.span=U;if(G.length)Z.breadcrumbs=[...Z.breadcrumbs,...G];if(H.length)Z.fingerprint=[...Z.fingerprint,...H];if(B.length)Z.eventProcessors=[...Z.eventProcessors,...B];if(V.length)Z.attachments=[...Z.attachments,...V];Z.propagationContext={...Z.propagationContext,...F}}function g5(Z,J,Q){Z[J]=TZ(Z[J],Q,1)}function p1(Z,J){let Q=P5().getScopeData();return Z&&eI(Q,Z.getScopeData()),J&&eI(Q,J.getScopeData()),Q}function RG0(Z,J){let{extra:Q,tags:$,user:X,contexts:Y,level:W,transactionName:K}=J;if(Object.keys(Q).length)Z.extra={...Q,...Z.extra};if(Object.keys($).length)Z.tags={...$,...Z.tags};if(Object.keys(X).length)Z.user={...X,...Z.user};if(Object.keys(Y).length)Z.contexts={...Y,...Z.contexts};if(W)Z.level=W;if(K&&Z.type!=="transaction")Z.transaction=K}function AG0(Z,J){let Q=[...Z.breadcrumbs||[],...J];Z.breadcrumbs=Q.length?Q:void 0}function IG0(Z,J){Z.sdkProcessingMetadata={...Z.sdkProcessingMetadata,...J}}function NG0(Z,J){Z.contexts={trace:hZ(J),...Z.contexts},Z.sdkProcessingMetadata={dynamicSamplingContext:P0(J),...Z.sdkProcessingMetadata};let Q=H0(J),$=h(Q).description;if($&&!Z.transaction&&Z.type==="transaction")Z.transaction=$}function TG0(Z,J){if(Z.fingerprint=Z.fingerprint?Array.isArray(Z.fingerprint)?Z.fingerprint:[Z.fingerprint]:[],J)Z.fingerprint=Z.fingerprint.concat(J);if(!Z.fingerprint.length)delete Z.fingerprint}function JN(Z,J,Q,$,X,Y){let{normalizeDepth:W=3,normalizeMaxBreadth:K=1000}=Z,z={...J,event_id:J.event_id||Q.event_id||I0(),timestamp:J.timestamp||a9()},G=Q.integrations||Z.integrations.map((L)=>L.name);if(fG0(z,Z),hG0(z,G),X)X.emit("applyFrameMetadata",J);if(J.type===void 0)EG0(z,Z.stackParser);let H=_G0($,Q.captureContext);if(Q.mechanism)_1(z,Q.mechanism);let B=X?X.getEventProcessors():[],V=p1(Y,H),F=[...Q.attachments||[],...V.attachments];if(F.length)Q.attachments=F;ZN(z,V);let D=[...B,...V.eventProcessors];return(Q.data&&Q.data.__sentry__===!0?e9(z):aI(D,z,Q)).then((L)=>{if(L)yG0(L);if(typeof W==="number"&&W>0)return SG0(L,W,K);return L})}function fG0(Z,J){let{environment:Q,release:$,dist:X,maxValueLength:Y}=J;if(Z.environment=Z.environment||Q||u1,!Z.release&&$)Z.release=$;if(!Z.dist&&X)Z.dist=X;let W=Z.request;if(W?.url&&Y)W.url=AZ(W.url,Y);if(Y)Z.exception?.values?.forEach((K)=>{if(K.value)K.value=AZ(K.value,Y)})}function EG0(Z,J){let Q=tI(J);Z.exception?.values?.forEach(($)=>{$.stacktrace?.frames?.forEach((X)=>{if(X.filename)X.debug_id=Q[X.filename]})})}function yG0(Z){let J={};if(Z.exception?.values?.forEach(($)=>{$.stacktrace?.frames?.forEach((X)=>{if(X.debug_id){if(X.abs_path)J[X.abs_path]=X.debug_id;else if(X.filename)J[X.filename]=X.debug_id;delete X.debug_id}})}),Object.keys(J).length===0)return;Z.debug_meta=Z.debug_meta||{},Z.debug_meta.images=Z.debug_meta.images||[];let Q=Z.debug_meta.images;Object.entries(J).forEach(([$,X])=>{Q.push({type:"sourcemap",code_file:$,debug_id:X})})}function hG0(Z,J){if(J.length>0)Z.sdk=Z.sdk||{},Z.sdk.integrations=[...Z.sdk.integrations||[],...J]}function SG0(Z,J,Q){if(!Z)return null;let $={...Z,...Z.breadcrumbs&&{breadcrumbs:Z.breadcrumbs.map((X)=>({...X,...X.data&&{data:q9(X.data,J,Q)}}))},...Z.user&&{user:q9(Z.user,J,Q)},...Z.contexts&&{contexts:q9(Z.contexts,J,Q)},...Z.extra&&{extra:q9(Z.extra,J,Q)}};if(Z.contexts?.trace&&$.contexts){if($.contexts.trace=Z.contexts.trace,Z.contexts.trace.data)$.contexts.trace.data=q9(Z.contexts.trace.data,J,Q)}if(Z.spans)$.spans=Z.spans.map((X)=>{return{...X,...X.data&&{data:q9(X.data,J,Q)}}});if(Z.contexts?.flags&&$.contexts)$.contexts.flags=q9(Z.contexts.flags,3,Q);return $}function _G0(Z,J){if(!J)return Z;let Q=Z?Z.clone():new n0;return Q.update(J),Q}function QN(Z){if(!Z)return;if(vG0(Z))return{captureContext:Z};if(xG0(Z))return{captureContext:Z};return Z}function vG0(Z){return Z instanceof n0||typeof Z==="function"}var bG0=["user","level","extra","contexts","tags","fingerprint","propagationContext"];function xG0(Z){return Object.keys(Z).some((J)=>bG0.includes(J))}function g(Z,J){return t().captureException(Z,QN(J))}function d5(Z,J){let Q=typeof J==="string"?J:void 0,$=typeof J!=="string"?{captureContext:J}:void 0;return t().captureMessage(Z,Q,$)}function c5(Z,J){return t().captureEvent(Z,J)}function m5(Z){l().setTags(Z)}async function d7(Z){let J=f();if(J)return J.flush(Z);return k&&q.warn("Cannot flush events. No client defined."),Promise.resolve(!1)}function u5(){let Z=f();return Z?.getOptions().enabled!==!1&&!!Z?.getTransport()}function l5(Z){let J=l(),{user:Q}=p1(J,t()),{userAgent:$}=d.navigator||{},X=LI({user:Q,...$&&{userAgent:$},...Z}),Y=J.getSession();if(Y?.status==="ok")s9(Y,{status:"exited"});return i1(),J.setSession(X),X}function i1(){let Z=l(),Q=t().getSession()||Z.getSession();if(Q)OI(Q);gG0(),Z.setSession()}function gG0(){let Z=l(),J=f(),Q=Z.getSession();if(Q&&J)J.captureSession(Q)}function $N(Z,J,Q,$,X){let Y={sent_at:new Date().toISOString()};if(Q?.sdk)Y.sdk={name:Q.sdk.name,version:Q.sdk.version};if(!!$&&!!X)Y.dsn=N6(X);if(J)Y.trace=J;let W=dG0(Z);return Q6(Y,[W])}function dG0(Z){return[{type:"check_in"},Z]}var cG0="7";function mG0(Z){let J=Z.protocol?`${Z.protocol}:`:"",Q=Z.port?`:${Z.port}`:"";return`${J}//${Z.host}${Q}${Z.path?`/${Z.path}`:""}/api/`}function uG0(Z){return`${mG0(Z)}${Z.projectId}/envelope/`}function lG0(Z,J){let Q={sentry_version:cG0};if(Z.publicKey)Q.sentry_key=Z.publicKey;if(J)Q.sentry_client=`${J.name}/${J.version}`;return new URLSearchParams(Q).toString()}function XN(Z,J,Q){return J?J:`${uG0(Z)}?${lG0(Z,Q)}`}var nW=[];function pG0(Z){let J={};return Z.forEach((Q)=>{let{name:$}=Q,X=J[$];if(X&&!X.isDefaultInstance&&Q.isDefaultInstance)return;J[$]=Q}),Object.values(J)}function aW(Z){let J=Z.defaultIntegrations||[],Q=Z.integrations;J.forEach((X)=>{X.isDefaultInstance=!0});let $;if(Array.isArray(Q))$=[...J,...Q];else if(typeof Q==="function"){let X=Q(J);$=Array.isArray(X)?X:[X]}else $=J;return pG0($)}function YN(Z,J){let Q={};return J.forEach(($)=>{if($)rW(Z,$,Q)}),Q}function sW(Z,J){for(let Q of J)if(Q?.afterAllSetup)Q.afterAllSetup(Z)}function rW(Z,J,Q){if(Q[J.name]){k&&q.log(`Integration skipped because it was already installed: ${J.name}`);return}if(Q[J.name]=J,!nW.includes(J.name)&&typeof J.setupOnce==="function")J.setupOnce(),nW.push(J.name);if(J.setup&&typeof J.setup==="function")J.setup(Z);if(typeof J.preprocessEvent==="function"){let $=J.preprocessEvent.bind(J);Z.on("preprocessEvent",(X,Y)=>$(X,Y,Z))}if(typeof J.processEvent==="function"){let $=J.processEvent.bind(J),X=Object.assign((Y,W)=>$(Y,W,Z),{id:J.name});Z.addEventProcessor(X)}k&&q.log(`Integration installed: ${J.name}`)}function P(Z){return Z}function iG0(Z){return typeof Z==="object"&&Z!=null&&!Array.isArray(Z)&&Object.keys(Z).includes("value")}function oG0(Z,J){let{value:Q,unit:$}=iG0(Z)?Z:{value:Z,unit:void 0},X=nG0(Q),Y=$&&typeof $==="string"?{unit:$}:{};if(X)return{...X,...Y};if(!J||J==="skip-undefined"&&Q===void 0)return;let W="";try{W=JSON.stringify(Q)??""}catch{}return{value:W,type:"string",...Y}}function tW(Z,J=!1){let Q={};for(let[$,X]of Object.entries(Z??{})){let Y=oG0(X,J);if(Y)Q[$]=Y}return Q}function nG0(Z){let J=typeof Z==="string"?"string":typeof Z==="boolean"?"boolean":typeof Z==="number"&&!Number.isNaN(Z)?Number.isInteger(Z)?"integer":"double":null;if(J)return{value:Z,type:J}}var eW=0,ZK;function WN(Z){let J=Math.floor(Z*1000);if(ZK!==void 0&&J!==ZK)eW=0;let Q=eW;return eW++,ZK=J,{key:"sentry.timestamp.sequence",value:{value:Q,type:"integer"}}}function IQ(Z,J){if(!J)return[void 0,void 0];return a0(J,()=>{let Q=T6(),$=Q?hZ(Q):f7(J);return[Q?P0(Q):y9(Z,J),$]})}function aG0(Z){return[{type:"log",item_count:Z.length,content_type:"application/vnd.sentry.items.log+json"},{items:Z}]}function KN(Z,J,Q,$){let X={};if(J?.sdk)X.sdk={name:J.sdk.name,version:J.sdk.version};if(!!Q&&!!$)X.dsn=N6($);return Q6(X,[aG0(Z)])}function o1(Z,J){let Q=J??sG0(Z)??[];if(Q.length===0)return;let $=Z.getOptions(),X=KN(Q,$._metadata,$.tunnel,Z.getDsn());zN().set(Z,[]),Z.emit("flushLogs"),Z.sendEnvelope(X)}function sG0(Z){return zN().get(Z)}function zN(){return F9("clientToLogBufferMap",()=>new WeakMap)}function rG0(Z){return[{type:"trace_metric",item_count:Z.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:Z}]}function GN(Z,J,Q,$){let X={};if(J?.sdk)X.sdk={name:J.sdk.name,version:J.sdk.version};if(!!Q&&!!$)X.dsn=N6($);return Q6(X,[rG0(Z)])}var tG0=1000;function ZZ(Z,J,Q,$=!0){if(Q&&($||!(J in Z)))Z[J]=Q}function eG0(Z,J){let Q=QK(),$=HN(Z);if($===void 0)Q.set(Z,[J]);else if($.length>=tG0)JK(Z,$),Q.set(Z,[J]);else Q.set(Z,[...$,J])}function ZB0(Z,J,Q){let{release:$,environment:X}=J.getOptions(),Y={...Z.attributes};ZZ(Y,"user.id",Q.id,!1),ZZ(Y,"user.email",Q.email,!1),ZZ(Y,"user.name",Q.username,!1),ZZ(Y,"sentry.release",$),ZZ(Y,"sentry.environment",X);let{name:W,version:K}=J.getSdkMetadata()?.sdk??{};ZZ(Y,"sentry.sdk.name",W),ZZ(Y,"sentry.sdk.version",K);let z=J.getIntegrationByName("Replay"),G=z?.getReplayId(!0);if(ZZ(Y,"sentry.replay_id",G),G&&z?.getRecordingMode()==="buffer")ZZ(Y,"sentry._internal.replay_is_buffering",!0);return{...Z,attributes:Y}}function JB0(Z,J,Q,$){let[,X]=IQ(J,Q),Y=r9(Q),W=Y?Y.spanContext().traceId:X?.trace_id,K=Y?Y.spanContext().spanId:void 0,z=E9(),G=WN(z);return{timestamp:z,trace_id:W??"",span_id:K,name:Z.name,type:Z.type,unit:Z.unit,value:Z.value,attributes:{...tW($),...tW(Z.attributes,"skip-undefined"),[G.key]:G.value}}}function BN(Z,J){let Q=J?.scope??t(),$=J?.captureSerializedMetric??eG0,X=Q?.getClient()??f();if(!X){k&&q.warn("No client available to capture metric.");return}let{_experiments:Y,enableMetrics:W,beforeSendMetric:K}=X.getOptions();if(!(W??Y?.enableMetrics??!0)){k&&q.warn("metrics option not enabled, metric will not be captured.");return}let{user:G,attributes:H}=p1(l(),Q),B=ZB0(Z,X,G);X.emit("processMetric",B);let V=K||Y?.beforeSendMetric,F=V?V(B):B;if(!F){k&&q.log("`beforeSendMetric` returned `null`, will not send metric.");return}let D=JB0(F,X,Q,H);k&&q.log("[Metric]",D),$(X,D),X.emit("afterCaptureMetric",F)}function JK(Z,J){let Q=J??HN(Z)??[];if(Q.length===0)return;let $=Z.getOptions(),X=GN(Q,$._metadata,$.tunnel,Z.getDsn());QK().set(Z,[]),Z.emit("flushMetrics"),Z.sendEnvelope(X)}function HN(Z){return QK().get(Z)}function QK(){return F9("clientToMetricBufferMap",()=>new WeakMap)}function NQ(Z){if(typeof Z==="object"&&typeof Z.unref==="function")Z.unref();return Z}var p5=Symbol.for("SentryBufferFullError");function n1(Z=100){let J=new Set;function Q(){return J.size$(K),()=>$(K)),K}function Y(W){if(!J.size)return e9(!0);let K=Promise.allSettled(Array.from(J)).then(()=>!0);if(!W)return K;let z=[K,new Promise((G)=>NQ(setTimeout(()=>G(!1),W)))];return Promise.race(z)}return{get $(){return Array.from(J)},add:X,drain:Y}}var QB0=60000;function $B0(Z,J=i6()){let Q=parseInt(`${Z}`,10);if(!isNaN(Q))return Q*1000;let $=Date.parse(`${Z}`);if(!isNaN($))return $-J;return QB0}function XB0(Z,J){return Z[J]||Z.all||0}function VN(Z,J,Q=i6()){return XB0(Z,J)>Q}function FN(Z,{statusCode:J,headers:Q},$=i6()){let X={...Z},Y=Q?.["x-sentry-rate-limits"],W=Q?.["retry-after"];if(Y)for(let K of Y.trim().split(",")){let[z,G,,,H]=K.split(":",5),B=parseInt(z,10),V=(!isNaN(B)?B:60)*1000;if(!G)X.all=$+V;else for(let F of G.split(";"))if(F==="metric_bucket"){if(!H||H.split(";").includes("custom"))X[F]=$+V}else X[F]=$+V}else if(W)X.all=$+$B0(W,$);else if(J===429)X.all=$+60000;return X}var i5=64;function a1(Z,J,Q=n1(Z.bufferSize||i5)){let $={},X=(W)=>Q.drain(W);function Y(W){let K=[];if(y5(W,(B,V)=>{let F=MQ(V);if(VN($,F))Z.recordDroppedEvent("ratelimit_backoff",F);else K.push(B)}),K.length===0)return Promise.resolve({});let z=Q6(W[0],K),G=(B)=>{if(gW(z,["client_report"])){k&&q.warn(`Dropping client report. Will not send outcomes (reason: ${B}).`);return}y5(z,(V,F)=>{Z.recordDroppedEvent(B,MQ(F))})},H=()=>J({body:h5(z)}).then((B)=>{if(B.statusCode===413)return k&&q.error("Sentry responded with status code 413. Envelope was discarded due to exceeding size limits."),G("send_error"),B;if(k&&B.statusCode!==void 0&&(B.statusCode<200||B.statusCode>=300))q.warn(`Sentry responded with status code ${B.statusCode} to sent event.`);return $=FN($,B),B},(B)=>{throw G("network_error"),k&&q.error("Encountered error running transport request:",B),B});return Q.add(H).then((B)=>B,(B)=>{if(B===p5)return k&&q.error("Skipped sending event because buffer is full."),G("queue_overflow"),Promise.resolve({});else throw B})}return{send:Y,flush:X}}function wN(Z,J,Q){let $=[{type:"client_report"},{timestamp:Q||a9(),discarded_events:Z}];return Q6(J?{dsn:J}:{},[$])}function TQ(Z){let J=[];if(Z.message)J.push(Z.message);try{let Q=Z.exception.values[Z.exception.values.length-1];if(Q?.value){if(J.push(Q.value),Q.type)J.push(`${Q.type}: ${Q.value}`)}}catch{}return J}function DN(Z){let{trace_id:J,parent_span_id:Q,span_id:$,status:X,origin:Y,data:W,op:K}=Z.contexts?.trace??{};return{data:W??{},description:Z.transaction,op:K,parent_span_id:Q,span_id:$??"",start_timestamp:Z.start_timestamp??0,status:X,timestamp:Z.timestamp,trace_id:J??"",origin:Y,profile_id:W?.[g1],exclusive_time:W?.[d1],measurements:Z.measurements,is_segment:!0}}function UN(Z){return{type:"transaction",timestamp:Z.timestamp,start_timestamp:Z.start_timestamp,transaction:Z.description,contexts:{trace:{trace_id:Z.trace_id,span_id:Z.span_id,parent_span_id:Z.parent_span_id,op:Z.op,status:Z.status,origin:Z.origin,data:{...Z.data,...Z.profile_id&&{[g1]:Z.profile_id},...Z.exclusive_time&&{[d1]:Z.exclusive_time}}}},measurements:Z.measurements}}var jN="Not capturing exception because it's already been captured.",qN="Discarded session because of missing or non-string release",MN=Symbol.for("SentryInternalError"),RN=Symbol.for("SentryDoNotSendEventError"),YB0=5000;function fQ(Z){return{message:Z,[MN]:!0}}function $K(Z){return{message:Z,[RN]:!0}}function LN(Z){return!!Z&&typeof Z==="object"&&MN in Z}function ON(Z){return!!Z&&typeof Z==="object"&&RN in Z}function CN(Z,J,Q,$,X){let Y=0,W,K=!1;Z.on(Q,()=>{Y=0,clearTimeout(W),K=!1}),Z.on(J,(z)=>{if(Y+=$(z),Y>=800000)X(Z);else if(!K)K=!0,W=NQ(setTimeout(()=>{X(Z)},YB0))}),Z.on("flush",()=>{X(Z)})}class YK{constructor(Z){if(this._options=Z,this._integrations={},this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],this._promiseBuffer=n1(Z.transportOptions?.bufferSize??i5),Z.dsn)this._dsn=TI(Z.dsn);else k&&q.warn("No DSN provided, client will not send events.");if(this._dsn){let Q=XN(this._dsn,Z.tunnel,Z._metadata?Z._metadata.sdk:void 0);this._transport=Z.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...Z.transportOptions,url:Q})}if(this._options.enableLogs=this._options.enableLogs??this._options._experiments?.enableLogs,this._options.enableLogs)CN(this,"afterCaptureLog","flushLogs",GB0,o1);if(this._options.enableMetrics??this._options._experiments?.enableMetrics??!0)CN(this,"afterCaptureMetric","flushMetrics",zB0,JK)}captureException(Z,J,Q){let $=I0();if(jQ(Z))return k&&q.log(jN),$;let X={event_id:$,...J};return this._process(()=>this.eventFromException(Z,X).then((Y)=>this._captureEvent(Y,X,Q)).then((Y)=>Y),"error"),X.event_id}captureMessage(Z,J,Q,$){let X={event_id:I0(),...Q},Y=E1(Z)?Z:String(Z),W=j5(Z),K=W?this.eventFromMessage(Y,J,X):this.eventFromException(Z,X);return this._process(()=>K.then((z)=>this._captureEvent(z,X,$)),W?"unknown":"error"),X.event_id}captureEvent(Z,J,Q){let $=I0();if(J?.originalException&&jQ(J.originalException))return k&&q.log(jN),$;let X={event_id:$,...J},Y=Z.sdkProcessingMetadata||{},W=Y.capturedSpanScope,K=Y.capturedSpanIsolationScope,z=PN(Z.type);return this._process(()=>this._captureEvent(Z,X,W||Q,K),z),X.event_id}captureSession(Z){this.sendSession(Z),s9(Z,{init:!1})}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}async flush(Z){let J=this._transport;if(!J)return!0;this.emit("flush");let Q=await this._isClientDoneProcessing(Z),$=await J.flush(Z);return Q&&$}async close(Z){o1(this);let J=await this.flush(Z);return this.getOptions().enabled=!1,this.emit("close"),J}getEventProcessors(){return this._eventProcessors}addEventProcessor(Z){this._eventProcessors.push(Z)}init(){if(this._isEnabled()||this._options.integrations.some(({name:Z})=>Z.startsWith("Spotlight")))this._setupIntegrations()}getIntegrationByName(Z){return this._integrations[Z]}addIntegration(Z){let J=this._integrations[Z.name];if(rW(this,Z,this._integrations),!J)sW(this,[Z])}sendEvent(Z,J={}){this.emit("beforeSendEvent",Z,J);let Q=dI(Z,this._dsn,this._options._metadata,this._options.tunnel);for(let $ of J.attachments||[])Q=xW(Q,cW($));this.sendEnvelope(Q).then(($)=>this.emit("afterSendEvent",Z,$))}sendSession(Z){let{release:J,environment:Q=u1}=this._options;if("aggregates"in Z){let X=Z.attrs||{};if(!X.release&&!J){k&&q.warn(qN);return}X.release=X.release||J,X.environment=X.environment||Q,Z.attrs=X}else{if(!Z.release&&!J){k&&q.warn(qN);return}Z.release=Z.release||J,Z.environment=Z.environment||Q}this.emit("beforeSendSession",Z);let $=gI(Z,this._dsn,this._options._metadata,this._options.tunnel);this.sendEnvelope($)}recordDroppedEvent(Z,J,Q=1){if(this._options.sendClientReports){let $=`${Z}:${J}`;k&&q.log(`Recording outcome: "${$}"${Q>1?` (${Q} times)`:""}`),this._outcomes[$]=(this._outcomes[$]||0)+Q}}on(Z,J){let Q=this._hooks[Z]=this._hooks[Z]||new Set,$=(...X)=>J(...X);return Q.add($),()=>{Q.delete($)}}emit(Z,...J){let Q=this._hooks[Z];if(Q)Q.forEach(($)=>$(...J))}async sendEnvelope(Z){if(this.emit("beforeEnvelope",Z),this._isEnabled()&&this._transport)try{return await this._transport.send(Z)}catch(J){return k&&q.error("Error while sending envelope:",J),{}}return k&&q.error("Transport disabled"),{}}dispose(){}_setupIntegrations(){let{integrations:Z}=this._options;this._integrations=YN(this,Z),sW(this,Z)}_updateSessionFromEvent(Z,J){let Q=J.level==="fatal",$=!1,X=J.exception?.values;if(X){$=!0,Q=!1;for(let K of X)if(K.mechanism?.handled===!1){Q=!0;break}}let Y=Z.status==="ok";if(Y&&Z.errors===0||Y&&Q)s9(Z,{...Q&&{status:"crashed"},errors:Z.errors||Number($||Q)}),this.captureSession(Z)}async _isClientDoneProcessing(Z){let J=0;while(!Z||JsetTimeout(Q,1)),!this._numProcessing)return!0;J++}return!1}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(Z,J,Q,$){let X=this.getOptions(),Y=Object.keys(this._integrations);if(!J.integrations&&Y?.length)J.integrations=Y;if(this.emit("preprocessEvent",Z,J),!Z.type)$.setLastEventId(Z.event_id||J.event_id);return JN(X,Z,J,Q,this,$).then((W)=>{if(W===null)return W;this.emit("postprocessEvent",W,J),W.contexts={trace:{...W.contexts?.trace,...f7(Q)},...W.contexts};let K=y9(this,Q);return W.sdkProcessingMetadata={dynamicSamplingContext:K,...W.sdkProcessingMetadata},W})}_captureEvent(Z,J={},Q=t(),$=l()){if(k&&XK(Z))q.log(`Captured error event \`${TQ(Z)[0]||""}\``);return this._processEvent(Z,J,Q,$).then((X)=>{return X.event_id},(X)=>{if(k)if(ON(X))q.log(X.message);else if(LN(X))q.warn(X.message);else q.warn(X);return})}_processEvent(Z,J,Q,$){let X=this.getOptions(),{sampleRate:Y}=X,W=AN(Z),K=XK(Z),G=`before send for type \`${Z.type||"error"}\``,H=typeof Y>"u"?void 0:I6(Y);if(K&&typeof H==="number"&&g0()>H)return this.recordDroppedEvent("sample_rate","error"),l1($K(`Discarding event because it's not included in the random sample (sampling rate = ${Y})`));let B=PN(Z.type);return this._prepareEvent(Z,J,Q,$).then((V)=>{if(V===null)throw this.recordDroppedEvent("event_processor",B),$K("An event processor returned `null`, will not send event.");if(J.data?.__sentry__===!0)return V;let D=KB0(this,X,V,J);return WB0(D,G)}).then((V)=>{if(V===null){if(this.recordDroppedEvent("before_send",B),W){let j=1+(Z.spans||[]).length;this.recordDroppedEvent("before_send","span",j)}throw $K(`${G} returned \`null\`, will not send event.`)}let F=Q.getSession()||$.getSession();if(K&&F)this._updateSessionFromEvent(F,V);if(W){let U=V.sdkProcessingMetadata?.spanCountBeforeProcessing||0,j=V.spans?V.spans.length:0,L=U-j;if(L>0)this.recordDroppedEvent("before_send","span",L)}let D=V.transaction_info;if(W&&D&&V.transaction!==Z.transaction)V.transaction_info={...D,source:"custom"};return this.sendEvent(V,J),V}).then(null,(V)=>{if(ON(V)||LN(V))throw V;throw this.captureException(V,{mechanism:{handled:!1,type:"internal"},data:{__sentry__:!0},originalException:V}),fQ(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. +Reason: ${V}`)})}_process(Z,J){this._numProcessing++,this._promiseBuffer.add(Z).then((Q)=>{return this._numProcessing--,Q},(Q)=>{if(this._numProcessing--,Q===p5)this.recordDroppedEvent("queue_overflow",J);return Q})}_clearOutcomes(){let Z=this._outcomes;return this._outcomes={},Object.entries(Z).map(([J,Q])=>{let[$,X]=J.split(":");return{reason:$,category:X,quantity:Q}})}_flushOutcomes(){k&&q.log("Flushing outcomes...");let Z=this._clearOutcomes();if(Z.length===0){k&&q.log("No outcomes to send");return}if(!this._dsn){k&&q.log("No dsn provided, will not send outcomes");return}k&&q.log("Sending outcomes:",Z);let J=wN(Z,this._options.tunnel&&N6(this._dsn));this.sendEnvelope(J)}}function PN(Z){return Z==="replay_event"?"replay":Z||"error"}function WB0(Z,J){let Q=`${J} must return \`null\` or a valid event.`;if(x0(Z))return Z.then(($)=>{if(!o9($)&&$!==null)throw fQ(Q);return $},($)=>{throw fQ(`${J} rejected with ${$}`)});else if(!o9(Z)&&Z!==null)throw fQ(Q);return Z}function KB0(Z,J,Q,$){let{beforeSend:X,beforeSendTransaction:Y,beforeSendSpan:W,ignoreSpans:K}=J,z=Q;if(XK(z)&&X)return X(z,$);if(AN(z)){if(W||K){let G=DN(z);if(K?.length&&S5(G,K))return null;if(W){let H=W(G);if(!H)N5();else z=TZ(Q,UN(H))}if(z.spans){let H=[],B=z.spans;for(let F of B){if(K?.length&&S5(F,K)){xI(B,F);continue}if(W){let D=W(F);if(!D)N5(),H.push(F);else H.push(D)}else H.push(F)}let V=z.spans.length-H.length;if(V)Z.recordDroppedEvent("before_send","span",V);z.spans=H}}if(Y){if(z.spans){let G=z.spans.length;z.sdkProcessingMetadata={...Q.sdkProcessingMetadata,spanCountBeforeProcessing:G}}return Y(z,$)}}return z}function XK(Z){return Z.type===void 0}function AN(Z){return Z.type==="transaction"}function zB0(Z){let J=0;if(Z.name)J+=Z.name.length*2;return J+=8,J+IN(Z.attributes)}function GB0(Z){let J=0;if(Z.message)J+=Z.message.length*2;return J+IN(Z.attributes)}function IN(Z){if(!Z)return 0;let J=0;return Object.values(Z).forEach((Q)=>{if(Array.isArray(Q))J+=Q.length*kN(Q[0]);else if(j5(Q))J+=kN(Q);else J+=100}),J}function kN(Z){if(typeof Z==="string")return Z.length*2;else if(typeof Z==="number")return 8;else if(typeof Z==="boolean")return 4;return 0}var EQ={},NN={};function s1(Z,J){EQ[Z]=EQ[Z]||[],EQ[Z].push(J)}function r1(Z,J){if(!NN[Z]){NN[Z]=!0;try{J()}catch(Q){k&&q.error(`Error while instrumenting ${Z}`,Q)}}}function t1(Z,J){let Q=Z&&EQ[Z];if(!Q)return;for(let $ of Q)try{$(J)}catch(X){k&&q.error(`Error while triggering instrumentation handler. +Type: ${Z} +Name: ${C5($)} +Error:`,X)}}var WK=null;function TN(Z){s1("error",Z),r1("error",BB0)}function BB0(){WK=d.onerror,d.onerror=function(Z,J,Q,$,X){if(t1("error",{column:$,error:X,line:Q,msg:Z,url:J}),WK)return WK.apply(this,arguments);return!1},d.onerror.__SENTRY_INSTRUMENTED__=!0}var KK=null;function fN(Z){s1("unhandledrejection",Z),r1("unhandledrejection",HB0)}function HB0(){KK=d.onunhandledrejection,d.onunhandledrejection=function(Z){if(t1("unhandledrejection",Z),KK)return KK.apply(this,arguments);return!0},d.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}var EN=!1;function yN(){if(EN)return;function Z(){let J=T6(),Q=J&&H0(J);if(Q)k&&q.log("[Tracing] Root span: internal_error -> Global error occurred"),Q.setStatus({code:i,message:"internal_error"})}Z.tag="sentry_tracingErrorCallback",EN=!0,TN(Z),fN(Z)}function hN(Z){let J=Z._metadata?.sdk,Q=J?.name&&J?.version?`${J?.name}/${J?.version}`:void 0;Z.transportOptions={...Z.transportOptions,headers:{...Q&&{"user-agent":Q},...Z.transportOptions?.headers}}}function SN(Z,J){return Z(J.stack||"",1)}function VB0(Z){return N9(Z)&&"__sentry_fetch_url_host__"in Z&&typeof Z.__sentry_fetch_url_host__==="string"}function FB0(Z){if(VB0(Z))return`${Z.message} (${Z.__sentry_fetch_url_host__})`;return Z.message}function zK(Z,J){let Q={type:J.name||J.constructor.name,value:FB0(J)},$=SN(Z,J);if($.length)Q.stacktrace={frames:$};return Q}function wB0(Z){for(let J in Z)if(Object.prototype.hasOwnProperty.call(Z,J)){let Q=Z[J];if(Q instanceof Error)return Q}return}function DB0(Z){if("name"in Z&&typeof Z.name==="string"){let $=`'${Z.name}' captured as exception`;if("message"in Z&&typeof Z.message==="string")$+=` with message '${Z.message}'`;return $}else if("message"in Z&&typeof Z.message==="string")return Z.message;let J=HW(Z);if(QW(Z))return`Event \`ErrorEvent\` captured as exception with message \`${Z.message}\``;let Q=UB0(Z);return`${Q&&Q!=="Object"?`'${Q}'`:"Object"} captured as exception with keys: ${J}`}function UB0(Z){try{let J=Object.getPrototypeOf(Z);return J?J.constructor.name:void 0}catch{}}function jB0(Z,J,Q,$){if(N9(Q))return[Q,void 0];if(J.synthetic=!0,o9(Q)){let Y=Z?.getOptions().normalizeDepth,W={["__serialized__"]:vW(Q,Y)},K=wB0(Q);if(K)return[K,W];let z=DB0(Q),G=$?.syntheticException||Error(z);return G.message=z,[G,W]}let X=$?.syntheticException||Error(Q);return X.message=`${Q}`,[X,void 0]}function _N(Z,J,Q,$){let Y=$?.data&&$.data.mechanism||{handled:!0,type:"generic"},[W,K]=jB0(Z,Y,Q,$),z={exception:{values:[zK(J,W)]}};if(K)z.extra=K;return OW(z,void 0,void 0),_1(z,Y),{...z,event_id:$?.event_id}}function vN(Z,J,Q="info",$,X){let Y={event_id:$?.event_id,level:Q};if(X&&$?.syntheticException){let W=SN(Z,$.syntheticException);if(W.length)Y.exception={values:[{value:J,stacktrace:{frames:W}}]},_1(Y,{synthetic:!0})}if(E1(J)){let{__sentry_template_string__:W,__sentry_template_values__:K}=J;return Y.logentry={message:W,params:K},Y}return Y.message=J,Y}class yQ extends YK{constructor(Z){yN(),hN(Z);super(Z);this._setUpMetricsProcessing()}eventFromException(Z,J){let Q=_N(this,this._options.stackParser,Z,J);return Q.level="error",e9(Q)}eventFromMessage(Z,J="info",Q){return e9(vN(this._options.stackParser,Z,J,Q,this._options.attachStacktrace))}captureException(Z,J,Q){return bN(J),super.captureException(Z,J,Q)}captureEvent(Z,J,Q){if(!Z.type&&Z.exception?.values&&Z.exception.values.length>0)bN(J);return super.captureEvent(Z,J,Q)}captureCheckIn(Z,J,Q){let $="checkInId"in Z&&Z.checkInId?Z.checkInId:I0();if(!this._isEnabled())return k&&q.warn("SDK not enabled, will not capture check-in."),$;let X=this.getOptions(),{release:Y,environment:W,tunnel:K}=X,z={check_in_id:$,monitor_slug:Z.monitorSlug,status:Z.status,release:Y,environment:W};if("duration"in Z)z.duration=Z.duration;if(J)z.monitor_config={schedule:J.schedule,checkin_margin:J.checkinMargin,max_runtime:J.maxRuntime,timezone:J.timezone,failure_issue_threshold:J.failureIssueThreshold,recovery_threshold:J.recoveryThreshold};let[G,H]=IQ(this,Q);if(H)z.contexts={trace:H};let B=$N(z,G,this.getSdkMetadata(),K,this.getDsn());return k&&q.log("Sending checkin:",Z.monitorSlug,Z.status),this.sendEnvelope(B),$}dispose(){k&&q.log("Disposing client...");for(let Z of Object.keys(this._hooks))this._hooks[Z]?.clear();this._hooks={},this._eventProcessors.length=0,this._integrations={},this._outcomes={},this._transport=void 0,this._promiseBuffer=n1(i5)}_prepareEvent(Z,J,Q,$){if(this._options.platform)Z.platform=Z.platform||this._options.platform;if(this._options.runtime)Z.contexts={...Z.contexts,runtime:Z.contexts?.runtime||this._options.runtime};if(this._options.serverName)Z.server_name=Z.server_name||this._options.serverName;return super._prepareEvent(Z,J,Q,$)}_setUpMetricsProcessing(){this.on("processMetric",(Z)=>{if(this._options.serverName)Z.attributes={"server.address":this._options.serverName,...Z.attributes}})}}function bN(Z){let J=l().getScopeData().sdkProcessingMetadata.requestSession;if(J){let Q=Z?.mechanism?.handled??!0;if(Q&&J.status!=="crashed")J.status="errored";else if(!Q)J.status="crashed"}}var GK=new Set;function BK(Z){Z.forEach((J)=>{GK.add(J),k&&q.log(`AI provider "${J}" wrapping will be skipped`)})}function c7(Z){return GK.has(Z)}function HK(){GK.clear(),k&&q.log("Cleared AI provider skip registrations")}var qB0=new Set(["false","f","n","no","off","0"]),LB0=new Set(["true","t","y","yes","on","1"]);function m7(Z,J){let Q=String(Z).toLowerCase();if(qB0.has(Q))return!1;if(LB0.has(Q))return!0;return J?.strict?null:Boolean(Z)}var OB0="thismessage:/";function VK(Z){return"isRelative"in Z}function o5(Z,J){let Q=Z.indexOf("://")<=0&&Z.indexOf("//")!==0,$=J??(Q?OB0:void 0);try{if("canParse"in URL&&!URL.canParse(Z,$))return;let X=new URL(Z,$);if(Q)return{isRelative:Q,pathname:X.pathname,search:X.search,hash:X.hash};return X}catch{}return}function xN(Z){if(VK(Z))return Z.pathname;let J=new URL(Z);if(J.search="",J.hash="",["80","443"].includes(J.port))J.port="";if(J.password)J.password="%filtered%";if(J.username)J.username="%filtered%";return J.toString()}function CB0(Z,J,Q,$){let X=Q?.method?.toUpperCase()??"GET",Y=$?$:Z?J==="client"?xN(Z):Z.pathname:"/";return`${X} ${Y}`}function FK(Z,J,Q,$,X){let Y={[_]:Q,[B0]:"url"};if(X)Y[J==="server"?"http.route":"url.template"]=X,Y[B0]="route";if($?.method)Y[fW]=$.method.toUpperCase();if(Z){if(Z.search)Y["url.query"]=Z.search;if(Z.hash)Y["url.fragment"]=Z.hash;if(Z.pathname){if(Y["url.path"]=Z.pathname,Z.pathname==="/")Y[B0]="route"}if(!VK(Z)){if(Y[fZ]=Z.href,Z.port)Y["url.port"]=Z.port;if(Z.protocol)Y["url.scheme"]=Z.protocol;if(Z.hostname)Y[J==="server"?"server.address":"url.domain"]=Z.hostname}}return[CB0(Z,J,$,X),Y]}function _Z(Z){if(!Z)return{};let J=Z.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!J)return{};let Q=J[6]||"",$=J[8]||"";return{host:J[4],path:J[5],protocol:J[2],search:Q,hash:$,relative:J[5]+Q+$}}function JZ(Z){return Z.split(/[?#]/,1)[0]}function vZ(Z){let{protocol:J,host:Q,path:$}=Z,X=Q?.replace(/^.*@/,"[filtered]:[filtered]@").replace(/(:80)$/,"").replace(/(:443)$/,"")||"";return`${J?`${J}://`:""}${X}${$}`}function e1(Z,J=!0){if(Z.startsWith("data:")){let Q=Z.match(/^data:([^;,]+)/),$=Q?Q[1]:"text/plain",X=Z.includes(";base64,"),Y=Z.indexOf(","),W="";if(J&&Y!==-1){let K=Z.slice(Y+1);W=K.length>10?`${K.slice(0,10)}... [truncated]`:K}return`data:${$}${X?",base64":""}${W?`,${W}`:""}`}return Z}function u7(Z,J,Q=[J],$="npm"){let X=(Z._metadata=Z._metadata||{}).sdk=Z._metadata.sdk||{};if(!X.name)X.name=`sentry.javascript.${J}`,X.packages=Q.map((Y)=>({name:`${$}:@sentry/${Y}`,version:a})),X.version=a}function l7(Z={}){let J=Z.client||f();if(!u5()||!J)return{};let Q=J6(),$=D9(Q);if($.getTraceData)return $.getTraceData(Z);let X=Z.scope||t(),Y=Z.span||T6(),W=Y?A5(Y):PB0(X),K=Y?P0(Y):y9(J,X),z=E7(K);if(!k5.test(W))return q.warn("Invalid sentry-trace data. Cannot generate trace data"),{};let H={"sentry-trace":W,baggage:z};if(Z.propagateTraceparent)H.traceparent=Y?SI(Y):kB0(X);return H}function PB0(Z){let{traceId:J,sampled:Q,propagationSpanId:$}=Z.getPropagationContext();return EZ(J,$,Q)}function kB0(Z){let{traceId:J,sampled:Q,propagationSpanId:$}=Z.getPropagationContext();return yZ(J,$,Q)}var gN="[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:";function p7(Z,J,Q){if(typeof Z!=="string"||!J)return!0;let $=Q?.get(Z);if($!==void 0)return k&&!$&&q.log(gN,Z),$;let X=IZ(Z,J);return Q?.set(Z,X),k&&!X&&q.log(gN,Z),X}function wK(Z,J,Q){let $,X,Y,W=Q?.maxWait?Math.max(Q.maxWait,J):0,K=Q?.setTimeoutImpl||setTimeout;function z(){return G(),$=Z(),$}function G(){X!==void 0&&clearTimeout(X),Y!==void 0&&clearTimeout(Y),X=Y=void 0}function H(){if(X!==void 0||Y!==void 0)return z();return $}function B(){if(X)clearTimeout(X);if(X=K(z,J),W&&Y===void 0)Y=K(z,W);return $}return B.cancel=G,B.flush=H,B}function uN(Z){let J=Object.create(null);try{Object.entries(Z).forEach(([Q,$])=>{if(typeof $==="string")J[Q]=$})}catch{}return J}function n5(Z){let J=Z.headers||{},$=(typeof J["x-forwarded-host"]==="string"?J["x-forwarded-host"]:void 0)||(typeof J.host==="string"?J.host:void 0),Y=(typeof J["x-forwarded-proto"]==="string"?J["x-forwarded-proto"]:void 0)||Z.protocol||(Z.socket?.encrypted?"https":"http"),W=Z.url||"",K=MB0({url:W,host:$,protocol:Y}),z=Z.body||void 0,G=Z.cookies;return{url:K,method:Z.method,query_string:lN(W),headers:uN(J),cookies:G,data:z}}function MB0({url:Z,protocol:J,host:Q}){if(Z?.startsWith("http"))return Z;if(Z&&Q)return`${J}://${Q}${Z}`;return}var dN=["auth","token","secret","session","password","passwd","pwd","key","jwt","bearer","sso","saml","csrf","xsrf","credentials","set-cookie","cookie"],RB0=["x-forwarded-","-user"];function hQ(Z,J=!1,Q="request"){let $={};try{Object.entries(Z).forEach(([X,Y])=>{if(Y==null)return;let W=X.toLowerCase();if((W==="cookie"||W==="set-cookie")&&typeof Y==="string"&&Y!==""){let z=W==="set-cookie",G=Y.indexOf(";"),H=z&&G!==-1?Y.substring(0,G):Y,B=z?[H]:H.split("; ");for(let V of B){let F=V.indexOf("="),D=F!==-1?V.substring(0,F):V,U=F!==-1?V.substring(F+1):"",j=D.toLowerCase();mN($,W,j,U,J,Q)}}else mN($,W,"",Y,J,Q)})}catch{}return $}function cN(Z){return Z.replace(/-/g,"_")}function mN(Z,J,Q,$,X,Y){let W=AB0(Q||J,$,X);if(W==null)return;let K=`http.${Y}.header.${cN(J)}${Q?`.${cN(Q)}`:""}`;Z[K]=W}function AB0(Z,J,Q){if(Q?dN.some((X)=>Z.includes(X)):[...RB0,...dN].some((X)=>Z.includes(X)))return"[Filtered]";else if(Array.isArray(J))return J.map((X)=>X!=null?String(X):X).join(";");else if(typeof J==="string")return J;return}function lN(Z){if(!Z)return;try{let J=new URL(Z,"http://s.io").search.slice(1);return J.length?J:void 0}catch{return}}var IB0=100;function f6(Z,J){let Q=f(),$=l();if(!Q)return;let{beforeBreadcrumb:X=null,maxBreadcrumbs:Y=IB0}=Q.getOptions();if(Y<=0)return;let K={timestamp:a9(),...Z},z=X?O0(()=>X(K,J)):K;if(z===null)return;if(Q.emit)Q.emit("beforeAddBreadcrumb",z,J);$.addBreadcrumb(z,Y)}var pN,NB0="FunctionToString",iN=new WeakMap,TB0=()=>{return{name:NB0,setupOnce(){pN=Function.prototype.toString;try{Function.prototype.toString=function(...Z){let J=BW(this),Q=iN.has(f())&&J!==void 0?J:this;return pN.apply(Q,Z)}}catch{}},setup(Z){iN.set(Z,!0)}}},a5=P(TB0);var fB0=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/,/^Can't find variable: gmo$/,/^undefined is not an object \(evaluating 'a\.[A-Z]'\)$/,/can't redefine non-configurable property "solana"/,/vv\(\)\.getRestrictions is not a function/,/Can't find variable: _AutofillCallbackHandler/,/Object Not Found Matching Id:\d+, MethodName:simulateEvent/,/^Java exception was raised during method invocation$/],EB0="EventFilters",_Q=P((Z={})=>{let J;return{name:EB0,setup(Q){let $=Q.getOptions();J=oN(Z,$)},processEvent(Q,$,X){if(!J){let Y=X.getOptions();J=oN(Z,Y)}return yB0(Q,J)?null:Q}}}),s5=P((Z={})=>{return{..._Q(Z),name:"InboundFilters"}});function oN(Z={},J={}){return{allowUrls:[...Z.allowUrls||[],...J.allowUrls||[]],denyUrls:[...Z.denyUrls||[],...J.denyUrls||[]],ignoreErrors:[...Z.ignoreErrors||[],...J.ignoreErrors||[],...Z.disableErrorDefaults?[]:fB0],ignoreTransactions:[...Z.ignoreTransactions||[],...J.ignoreTransactions||[]]}}function yB0(Z,J){if(!Z.type){if(hB0(Z,J.ignoreErrors))return k&&q.warn(`Event dropped due to being matched by \`ignoreErrors\` option. +Event: ${NZ(Z)}`),!0;if(xB0(Z))return k&&q.warn(`Event dropped due to not having an error message, error type or stacktrace. +Event: ${NZ(Z)}`),!0;if(_B0(Z,J.denyUrls))return k&&q.warn(`Event dropped due to being matched by \`denyUrls\` option. +Event: ${NZ(Z)}. +Url: ${SQ(Z)}`),!0;if(!vB0(Z,J.allowUrls))return k&&q.warn(`Event dropped due to not being matched by \`allowUrls\` option. +Event: ${NZ(Z)}. +Url: ${SQ(Z)}`),!0}else if(Z.type==="transaction"){if(SB0(Z,J.ignoreTransactions))return k&&q.warn(`Event dropped due to being matched by \`ignoreTransactions\` option. +Event: ${NZ(Z)}`),!0}return!1}function hB0(Z,J){if(!J?.length)return!1;return TQ(Z).some((Q)=>IZ(Q,J))}function SB0(Z,J){if(!J?.length)return!1;let Q=Z.transaction;return Q?IZ(Q,J):!1}function _B0(Z,J){if(!J?.length)return!1;let Q=SQ(Z);return!Q?!1:IZ(Q,J)}function vB0(Z,J){if(!J?.length)return!0;let Q=SQ(Z);return!Q?!0:IZ(Q,J)}function bB0(Z=[]){for(let J=Z.length-1;J>=0;J--){let Q=Z[J];if(Q&&Q.filename!==""&&Q.filename!=="[native code]")return Q.filename||null}return null}function SQ(Z){try{let Q=[...Z.exception?.values??[]].reverse().find(($)=>$.mechanism?.parent_id===void 0&&$.stacktrace?.frames?.length)?.stacktrace?.frames;return Q?bB0(Q):null}catch{return k&&q.error(`Cannot extract url for event ${NZ(Z)}`),null}}function xB0(Z){if(!Z.exception?.values?.length)return!1;return!Z.message&&!Z.exception.values.some((J)=>J.stacktrace||J.type&&J.type!=="Error"||J.value)}function sN(Z,J,Q,$,X,Y){if(!X.exception?.values||!Y||!T9(Y.originalException,Error))return;let W=X.exception.values.length>0?X.exception.values[X.exception.values.length-1]:void 0;if(W)X.exception.values=DK(Z,J,$,Y.originalException,Q,X.exception.values,W,0)}function DK(Z,J,Q,$,X,Y,W,K){if(Y.length>=Q+1)return Y;let z=[...Y];if(T9($[X],Error)){nN(W,K,$);let G=Z(J,$[X]),H=z.length;aN(G,X,H,K),z=DK(Z,J,Q,$[X],X,[G,...z],G,H)}if(rN($))$.errors.forEach((G,H)=>{if(T9(G,Error)){nN(W,K,$);let B=Z(J,G),V=z.length;aN(B,`errors[${H}]`,V,K),z=DK(Z,J,Q,G,X,[B,...z],B,V)}});return z}function rN(Z){return Array.isArray(Z.errors)}function nN(Z,J,Q){Z.mechanism={handled:!0,type:"auto.core.linked_errors",...rN(Q)&&{is_exception_group:!0},...Z.mechanism,exception_id:J}}function aN(Z,J,Q,$){Z.mechanism={handled:!0,...Z.mechanism,type:"chained",source:J,exception_id:Q,parent_id:$}}var gB0="cause",dB0=5,cB0="LinkedErrors",mB0=(Z={})=>{let J=Z.limit||dB0,Q=Z.key||gB0;return{name:cB0,preprocessEvent($,X,Y){let W=Y.getOptions();sN(zK,W.stackParser,Q,J,$,X)}}},r5=P(mB0);function tN(Z){let J={},Q=0;while(Q{let W=J[Y.toLowerCase()],K=Array.isArray(W)?W.join(";"):W;if(Y==="Forwarded")return uB0(K);return K?.split(",").map((z)=>z.trim())}).reduce((Y,W)=>{if(!W)return Y;return Y.concat(W)},[]).find((Y)=>Y!==null&&lB0(Y))||null}function uB0(Z){if(!Z)return null;for(let J of Z.split(";"))if(J.startsWith("for="))return J.slice(4);return null}function lB0(Z){return/(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/.test(Z)}var pB0={cookies:!0,data:!0,headers:!0,query_string:!0,url:!0},iB0="RequestData",oB0=(Z={})=>{let J={...pB0,...Z.include};return{name:iB0,processEvent(Q,$,X){let{sdkProcessingMetadata:Y={}}=Q,{normalizedRequest:W,ipAddress:K}=Y,z={...J,ip:J.ip??X.getOptions().sendDefaultPii};if(W)nB0(Q,W,{ipAddress:K},z);return Q}}},t5=P(oB0);function nB0(Z,J,Q,$){if(Z.request={...Z.request,...aB0(J,$)},$.ip){let X=J.headers&&eN(J.headers)||Q.ipAddress;if(X)Z.user={...Z.user,ip_address:X}}}function aB0(Z,J){let Q={},$={...Z.headers};if(J.headers){if(Q.headers=$,!J.cookies)delete $.cookie;if(!J.ip)UK.forEach((X)=>{delete $[X]})}if(Q.method=Z.method,J.url)Q.url=Z.url;if(J.cookies){let X=Z.cookies||($?.cookie?tN($.cookie):void 0);Q.cookies=X||{}}if(J.query_string)Q.query_string=Z.query_string;if(J.data)Q.data=Z.data;return Q}function ZT(Z){s1("console",Z),r1("console",sB0)}function sB0(){if(!("console"in d))return;L5.forEach(function(Z){if(!(Z in d.console))return;GW(d.console,Z,function(J){return y1[Z]=J,function(...Q){t1("console",{args:Q,level:Z}),y1[Z]?.apply(d.console,Q)}})})}function JT(Z){return Z==="warn"?"warning":["fatal","error","warning","log","info","debug"].includes(Z)?Z:"log"}var rB0=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function tB0(Z){let J=Z.length>1024?`${Z.slice(-1024)}`:Z,Q=rB0.exec(J);return Q?Q.slice(1):[]}function jK(Z){let J=tB0(Z),Q=J[0]||"",$=J[1];if(!Q&&!$)return".";if($)$=$.slice(0,$.length-1);return Q+$}var eB0=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,vQ=Symbol("sentryPostgresConnectionContext"),qK=Symbol.for("sentry.instrumented.postgresjs"),ZH0=Symbol.for("sentry.query.from.instrumented.sql");function OK(Z,J){if(!Z||typeof Z!=="function")return k&&q.warn("instrumentPostgresJsSql: provided value is not a valid postgres.js sql instance"),Z;return LK(Z,{requireParentSpan:!0,...J})}function LK(Z,J,Q){if(Z[qK])return Z;let $=new Proxy(Z,{apply(X,Y,W){let K=Reflect.apply(X,Y,W);if(K&&typeof K==="object"&&"handle"in K)$T(K,$,J);return K},get(X,Y){let W=X[Y];if(typeof Y!=="string"||typeof W!=="function")return W;if(Y==="unsafe"||Y==="file")return JH0(W,X,$,J);if(Y==="begin"||Y==="reserve")return QH0(W,X,$,J);return W}});if(Q)$[vQ]=Q;else KH0(Z,$);return Z[qK]=!0,$[qK]=!0,$}function JH0(Z,J,Q,$){return function(...X){let Y=Reflect.apply(Z,J,X);if(Y&&typeof Y==="object"&&"handle"in Y)$T(Y,Q,$);return Y}}function QH0(Z,J,Q,$){return function(...X){let Y=Q[vQ];if(typeof X[X.length-1]!=="function"){let H=Reflect.apply(Z,J,X);if(H&&typeof H.then==="function")return H.then((B)=>{return LK(B,$,Y)});return H}let K=X.length===1?X[0]:X[1],z=function(H){let B=LK(H,$,Y);return K(B)},G=X.length===1?[z]:[X[0],z];return Reflect.apply(Z,J,G)}}function $T(Z,J,Q){if(Z.handle?.__sentryWrapped)return;Z[ZH0]=!0;let $=Z.handle,X=async function(...Y){if(!$H0(Q))return $.apply(this,Y);let W=XH0(Z.strings),K=YH0(W);return N0({name:K||"postgresjs.query",op:"db"},(z)=>{z.setAttribute(_,"auto.db.postgresjs"),z.setAttributes({"db.system.name":"postgres","db.query.text":K});let G=J?J[vQ]:void 0;if(WH0(z,G),Q.requestHook)try{Q.requestHook(z,K,G)}catch(B){z.setAttribute("sentry.hook.error","requestHook failed"),k&&q.error("Error in requestHook for PostgresJs instrumentation:",B)}let H=this;H.resolve=new Proxy(H.resolve,{apply:(B,V,F)=>{try{QT(z,K,F?.[0]?.command),z.end()}catch(D){k&&q.error("Error ending span in resolve callback:",D)}return Reflect.apply(B,V,F)}}),H.reject=new Proxy(H.reject,{apply:(B,V,F)=>{try{z.setStatus({code:i,message:F?.[0]?.message||"unknown_error"}),z.setAttribute("db.response.status_code",F?.[0]?.code||"unknown"),z.setAttribute("error.type",F?.[0]?.name||"unknown"),QT(z,K),z.end()}catch(D){k&&q.error("Error ending span in reject callback:",D)}return Reflect.apply(B,V,F)}});try{return $.apply(this,Y)}catch(B){throw z.setStatus({code:i,message:B instanceof Error?B.message:"unknown_error"}),z.end(),B}})};X.__sentryWrapped=!0,Z.handle=X}function $H0(Z){return T6()!==void 0||!Z.requireParentSpan}function XH0(Z){if(!Z?.length)return;if(Z.length===1)return Z[0]||void 0;return Z.reduce((J,Q,$)=>$===0?Q:`${J}$${$}${Q}`,"")}function YH0(Z){if(!Z)return"Unknown SQL Query";return Z.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{let J=new Set(Z.levels||L5);return{name:zH0,setup(Q){ZT(({args:$,level:X})=>{if(f()!==Q||!J.has(X))return;GH0(X,$)})}}});function GH0(Z,J){let Q={category:"console",data:{arguments:J,logger:"console"},level:JT(Z),message:XT(J)};if(Z==="assert")if(J[0]===!1){let $=J.slice(1);Q.message=$.length>0?`Assertion failed: ${XT($)}`:"Assertion failed",Q.data.arguments=$}else return;f6(Q,{input:J,level:Z})}function XT(Z){return"util"in d&&typeof d.util.format==="function"?d.util.format(...Z):jW(Z," ")}var BH0="ConversationId",HH0=()=>{return{name:BH0,setup(Z){Z.on("spanStart",(J)=>{let Q=t().getScopeData(),$=l().getScopeData(),X=Q.conversationId||$.conversationId;if(X)J.setAttribute(EW,X)})}}},CK=P(HH0);var Z8={};$t(Z8,{gauge:()=>FH0,distribution:()=>wH0,count:()=>VH0});function PK(Z,J,Q,$){BN({type:Z,name:J,value:Q,unit:$?.unit,attributes:$?.attributes},{scope:$?.scope})}function VH0(Z,J=1,Q){PK("counter",Z,J,Q)}function FH0(Z,J,Q){PK("gauge",Z,J,Q)}function wH0(Z,J,Q){PK("distribution",Z,J,Q)}var YT="gen_ai.prompt",bZ="gen_ai.system",D0="gen_ai.request.model",J8="gen_ai.request.stream",xZ="gen_ai.request.temperature",Q8="gen_ai.request.max_tokens",gZ="gen_ai.request.frequency_penalty",$8="gen_ai.request.presence_penalty",dZ="gen_ai.request.top_p",bQ="gen_ai.request.top_k",WT="gen_ai.request.encoding_format",KT="gen_ai.request.dimensions",q6="gen_ai.response.finish_reasons",T0="gen_ai.response.model",a6="gen_ai.response.id",zT="gen_ai.response.stop_reason",W0="gen_ai.usage.input_tokens",k0="gen_ai.usage.output_tokens",$6="gen_ai.usage.total_tokens",d0="gen_ai.operation.name",X6="sentry.sdk_meta.gen_ai.input.messages.original_length",c0="gen_ai.input.messages",GT="gen_ai.output.messages",E6="gen_ai.system_instructions",R0="gen_ai.response.text",h9="gen_ai.request.available_tools",i7="gen_ai.response.streaming",S0="gen_ai.response.tool_calls",kK="gen_ai.agent.name",BT="gen_ai.pipeline.name",Z4="gen_ai.conversation.id",HT="gen_ai.usage.cache_creation_input_tokens",VT="gen_ai.usage.cache_read_input_tokens",MK="gen_ai.usage.input_tokens.cache_write",cZ="gen_ai.usage.input_tokens.cached",xQ="gen_ai.invoke_agent",FT="gen_ai.generate_text",wT="gen_ai.stream_text",DT="gen_ai.generate_object",UT="gen_ai.stream_object",gQ="gen_ai.embeddings.input",jT="gen_ai.embeddings",qT="gen_ai.embeddings",LT="gen_ai.rerank",OT="gen_ai.execute_tool",o7="gen_ai.tool.name",RK="gen_ai.tool.call.id",AK="gen_ai.tool.type",dQ="gen_ai.tool.input",cQ="gen_ai.tool.output",CT="gen_ai.tool.description",IK="openai.response.id",NK="openai.response.model",TK="openai.response.timestamp",PT="openai.usage.completion_tokens",kT="openai.usage.prompt_tokens",n7={CHAT:"chat",EMBEDDINGS:"embeddings"},fK="anthropic.response.timestamp";var J4=new Map,EK=new Set(["ai.generateText","ai.streamText","ai.generateObject","ai.streamObject"]),yK=new Set(["ai.generateText.doGenerate","ai.streamText.doStream","ai.generateObject.doGenerate","ai.streamObject.doStream"]),MT=new Set(["ai.embed.doEmbed","ai.embedMany.doEmbed"]),RT=new Set(["ai.rerank.doRerank"]),AT={"ai.embed.doEmbed":"embeddings","ai.embedMany.doEmbed":"embeddings","ai.rerank.doRerank":"rerank"};function mZ(Z){if(!Z||typeof Z!=="object")return!1;return UH0(Z)||NT(Z)||DH0(Z)||TT(Z)||fT(Z)||jH0(Z)||qH0(Z)||LH0(Z)||OH0(Z)||CH0(Z)||PH0(Z)||kH0(Z)}function DH0(Z){if(!("image_url"in Z))return!1;if(typeof Z.image_url==="string")return Z.image_url.startsWith("data:");return IT(Z)}function IT(Z){return"image_url"in Z&&!!Z.image_url&&typeof Z.image_url==="object"&&"url"in Z.image_url&&typeof Z.image_url.url==="string"&&Z.image_url.url.startsWith("data:")}function UH0(Z){return"type"in Z&&typeof Z.type==="string"&&"source"in Z&&mZ(Z.source)}function NT(Z){return"inlineData"in Z&&!!Z.inlineData&&typeof Z.inlineData==="object"&&"data"in Z.inlineData&&typeof Z.inlineData.data==="string"}function TT(Z){return"type"in Z&&Z.type==="input_audio"&&"input_audio"in Z&&!!Z.input_audio&&typeof Z.input_audio==="object"&&"data"in Z.input_audio&&typeof Z.input_audio.data==="string"}function fT(Z){return"type"in Z&&Z.type==="file"&&"file"in Z&&!!Z.file&&typeof Z.file==="object"&&"file_data"in Z.file&&typeof Z.file.file_data==="string"}function jH0(Z){return"media_type"in Z&&typeof Z.media_type==="string"&&"data"in Z}function qH0(Z){return"type"in Z&&Z.type==="file"&&"mediaType"in Z&&typeof Z.mediaType==="string"&&"data"in Z&&typeof Z.data==="string"&&!Z.data.startsWith("http://")&&!Z.data.startsWith("https://")}function LH0(Z){return"type"in Z&&Z.type==="image"&&"image"in Z&&typeof Z.image==="string"&&!Z.image.startsWith("http://")&&!Z.image.startsWith("https://")}function OH0(Z){return"type"in Z&&(Z.type==="blob"||Z.type==="base64")}function CH0(Z){return"b64_json"in Z}function PH0(Z){return"type"in Z&&"result"in Z&&Z.type==="image_generation"}function kH0(Z){return"uri"in Z&&typeof Z.uri==="string"&&Z.uri.startsWith("data:")}var Q4="[Blob substitute]",MH0=["image_url","data","content","b64_json","result","uri","image"];function a7(Z){let J={...Z};if(mZ(J.source))J.source=a7(J.source);if(NT(Z))J.inlineData={...Z.inlineData,data:Q4};if(IT(Z))J.image_url={...Z.image_url,url:Q4};if(TT(Z))J.input_audio={...Z.input_audio,data:Q4};if(fT(Z))J.file={...Z.file,file_data:Q4};for(let Q of MH0)if(typeof J[Q]==="string")J[Q]=Q4;return J}var yT=20000,mQ=(Z)=>{return new TextEncoder().encode(Z).length},SK=(Z)=>{return mQ(JSON.stringify(Z))};function uQ(Z,J){if(mQ(Z)<=J)return Z;let Q=0,$=Z.length,X="";while(Q<=$){let Y=Math.floor((Q+$)/2),W=Z.slice(0,Y);if(mQ(W)<=J)X=W,Q=Y+1;else $=Y-1}return X}function RH0(Z){if(typeof Z==="string")return Z;if("text"in Z&&typeof Z.text==="string")return Z.text;return""}function ET(Z,J){if(typeof Z==="string")return J;return{...Z,text:J}}function AH0(Z){return Z!==null&&typeof Z==="object"&&"content"in Z&&typeof Z.content==="string"}function hT(Z){return Z!==null&&typeof Z==="object"&&"content"in Z&&Array.isArray(Z.content)}function ST(Z){return Z!==null&&typeof Z==="object"&&"parts"in Z&&Array.isArray(Z.parts)&&Z.parts.length>0}function IH0(Z,J){let Q={...Z,content:""},$=SK(Q),X=J-$;if(X<=0)return[];let Y=uQ(Z.content,X);return[{...Z,content:Y}]}function NH0(Z){if("parts"in Z&&Array.isArray(Z.parts))return{key:"parts",items:Z.parts};if("content"in Z&&Array.isArray(Z.content))return{key:"content",items:Z.content};return{key:null,items:[]}}function TH0(Z,J){let{key:Q,items:$}=NH0(Z);if(Q===null||$.length===0)return[];let X=$.map((z)=>ET(z,"")),Y=SK({...Z,[Q]:X}),W=J-Y;if(W<=0)return[];let K=[];for(let z of $){let G=RH0(z),H=mQ(G);if(H<=W)K.push(z),W-=H;else if(K.length===0){let B=uQ(G,W);if(B)K.push(ET(z,B));break}else break}if(K.length<=0)return[];else return[{...Z,[Q]:K}]}function fH0(Z,J){if(!Z)return[];if(typeof Z==="string"){let Q=uQ(Z,J);return Q?[Q]:[]}if(typeof Z!=="object")return[];if(AH0(Z))return IH0(Z,J);if(hT(Z)||ST(Z))return TH0(Z,J);return[]}function hK(Z){return Z.map((Q)=>{let $=void 0;if(!!Q&&typeof Q==="object"){if(hT(Q))$={...Q,content:hK(Q.content)};else if("content"in Q&&mZ(Q.content))$={...Q,content:a7(Q.content)};if(ST(Q))$={...$??Q,parts:hK(Q.parts)};if(mZ($))$=a7($);else if(mZ(Q))$=a7(Q)}return $??Q})}function EH0(Z,J){if(!Array.isArray(Z)||Z.length===0)return Z;let Q=J-2,$=Z[Z.length-1],X=hK([$]),Y=X[0];if(SK(Y)<=Q)return X;return fH0(Y,Q)}function uZ(Z){return EH0(Z,yT)}function _T(Z){return uQ(Z,yT)}function S9(Z){let J=Boolean(f()?.getOptions().sendDefaultPii);return{...Z,recordInputs:Z?.recordInputs??J,recordOutputs:Z?.recordOutputs??J}}function s7(Z){if(Z.includes("messages"))return"chat";if(Z.includes("completions"))return"text_completion";if(Z.includes("generateContent"))return"generate_content";if(Z.includes("models"))return"models";if(Z.includes("chat"))return"chat";return Z.split(".").pop()||"unknown"}function X8(Z){return`gen_ai.${s7(Z)}`}function Y8(Z,J){return Z?`${Z}.${J}`:J}function $4(Z,J,Q,$,X){if(J!==void 0)Z.setAttributes({[W0]:J});if(Q!==void 0)Z.setAttributes({[k0]:Q});if(J!==void 0||Q!==void 0||$!==void 0||X!==void 0){let Y=(J??0)+(Q??0)+($??0)+(X??0);Z.setAttributes({[$6]:Y})}}function r7(Z){if(typeof Z==="string")return _T(Z);if(Array.isArray(Z)){let J=uZ(Z);return JSON.stringify(J)}return JSON.stringify(Z)}function y6(Z){if(!Array.isArray(Z))return{systemInstructions:void 0,filteredMessages:Z};let J=Z.findIndex((W)=>W&&typeof W==="object"&&("role"in W)&&W.role==="system");if(J===-1)return{systemInstructions:void 0,filteredMessages:Z};let Q=Z[J],$=typeof Q.content==="string"?Q.content:Q.content!==void 0?JSON.stringify(Q.content):void 0;if(!$)return{systemInstructions:void 0,filteredMessages:Z};let X=JSON.stringify([{type:"text",content:$}]),Y=[...Z.slice(0,J),...Z.slice(J+1)];return{systemInstructions:X,filteredMessages:Y}}async function yH0(Z,J,Q){let $=Z.catch((W)=>{throw g(W,{mechanism:{handled:!1,type:Q}}),W}),X=await J,Y=await $;if(Y&&typeof Y==="object"&&"data"in Y)return{...Y,data:X};return X}function W8(Z,J,Q){if(!x0(Z))return J;return new Proxy(Z,{get($,X){let W=X in Promise.prototype||X===Symbol.toStringTag?J:$,K=Reflect.get(W,X);if(X==="withResponse"&&typeof K==="function")return function(){let G=K.call($);return yH0(G,J,Q)};return typeof K==="function"?K.bind(W):K}})}var lQ="operation.name",vT="ai.operationId",pQ="ai.prompt",bT="ai.schema",xT="ai.response.object",_K="ai.values",vK="ai.response.text",bK="ai.response.toolCalls",gT="ai.response.finishReason",t7="ai.prompt.messages",K8="ai.prompt.tools",X4="ai.model.id",dT="ai.response.providerMetadata",cT="ai.usage.cachedInputTokens",mT="ai.telemetry.functionId",uT="ai.usage.completionTokens",lT="ai.usage.promptTokens",pT="ai.usage.tokens",xK="ai.toolCall.name",gK="ai.toolCall.id",iT="ai.toolCall.args",oT="ai.toolCall.result";function aT(Z,J){let Q=Z.parent_span_id;if(!Q)return;let $=Z.data[W0],X=Z.data[k0];if(typeof $==="number"||typeof X==="number"){let Y=J.get(Q)||{inputTokens:0,outputTokens:0};if(typeof $==="number")Y.inputTokens+=$;if(typeof X==="number")Y.outputTokens+=X;J.set(Q,Y)}}function dK(Z,J){let Q=J.get(Z.span_id);if(!Q||!Z.data)return;if(Q.inputTokens>0)Z.data[W0]=Q.inputTokens;if(Q.outputTokens>0)Z.data[k0]=Q.outputTokens;if(Q.inputTokens>0||Q.outputTokens>0)Z.data["gen_ai.usage.total_tokens"]=Q.inputTokens+Q.outputTokens}function hH0(Z){let J=new Map;for(let Q of Z){let $=Q.data[h9];if(typeof $!=="string")continue;try{let X=JSON.parse($);for(let Y of X)if(Y.name&&Y.description&&!J.has(Y.name))J.set(Y.name,Y.description)}catch{}}return J}function sT(Z,J){let Q=hH0(Z);for(let $ of Z){if($.op==="gen_ai.execute_tool"){let X=$.data[o7];if(typeof X==="string"){let Y=Q.get(X);if(Y)$.data[CT]=Y}}if($.op==="gen_ai.invoke_agent")dK($,J)}}function cK(Z){return J4.get(Z)}function mK(Z){J4.delete(Z)}function rT(Z){let J=Z.map((Q)=>{if(typeof Q==="string")try{return JSON.parse(Q)}catch{return Q}return Q});return JSON.stringify(J)}function nT(Z){return Z.filter((J)=>!!J&&typeof J==="object"&&("role"in J)&&("content"in J))}function SH0(Z){try{let J=JSON.parse(Z);if(!!J&&typeof J==="object"){let{messages:Q}=J,{prompt:$,system:X}=J,Y=[];if(typeof X==="string")Y.push({role:"system",content:X});if(typeof Q==="string")try{Q=JSON.parse(Q)}catch{}if(Array.isArray(Q))return Y.push(...nT(Q)),Y;if(Array.isArray($))return Y.push(...nT($)),Y;if(typeof $==="string")Y.push({role:"user",content:$});if(Y.length>0)return Y}}catch{}return[]}function tT(Z,J){if(typeof J[pQ]==="string"&&!J[c0]&&!J[t7]){let Q=J[pQ],$=SH0(Q);if($.length){let{systemInstructions:X,filteredMessages:Y}=y6($);if(X)Z.setAttribute(E6,X);let W=Array.isArray(Y)?Y.length:0,K=r7(Y);Z.setAttributes({[pQ]:K,[c0]:K,[X6]:W})}}else if(typeof J[t7]==="string")try{let Q=JSON.parse(J[t7]);if(Array.isArray(Q)){let{systemInstructions:$,filteredMessages:X}=y6(Q);if($)Z.setAttribute(E6,$);let Y=Array.isArray(X)?X.length:0,W=r7(X);Z.setAttributes({[t7]:W,[c0]:W,[X6]:Y})}}catch{}}function eT(Z){switch(Z){case"ai.generateText":case"ai.streamText":case"ai.generateObject":case"ai.streamObject":return xQ;case"ai.generateText.doGenerate":return FT;case"ai.streamText.doStream":return wT;case"ai.generateObject.doGenerate":return DT;case"ai.streamObject.doStream":return UT;case"ai.embed.doEmbed":return jT;case"ai.embedMany.doEmbed":return qT;case"ai.rerank.doRerank":return LT;case"ai.toolCall":return OT;default:if(Z.startsWith("ai.stream"))return"ai.run";return}}function _H0(Z){if(EK.has(Z))return"invoke_agent";if(yK.has(Z))return"generate_content";if(MT.has(Z))return"embeddings";if(RT.has(Z))return"rerank";if(Z==="ai.toolCall")return"execute_tool";return Z}function vH0(Z){let{data:J,description:Q}=h(Z);if(!Q)return;if(J[xK]&&J[gK]&&Q==="ai.toolCall"){cH0(Z,J);return}if(!J[vT]&&!Q.startsWith("ai."))return;mH0(Z,Q,J)}function bH0(Z){if(Z.type==="transaction"&&Z.spans){let J=new Map;for(let $ of Z.spans)dH0($),aT($,J);sT(Z.spans,J);let Q=Z.contexts?.trace;if(Q?.op==="gen_ai.invoke_agent")dK(Q,J)}return Z}function xH0(Z){if(typeof Z!=="string")return"stop";switch(Z){case"tool-calls":return"tool_call";case"stop":case"length":case"content_filter":case"error":return Z;default:return Z}}function gH0(Z){let J=Z[vK],Q=Z[bK],$=Z[gT];if(J==null&&Q==null)return;let X=[];if(typeof J==="string"&&J.length>0)X.push({type:"text",content:J});if(Q!=null)try{let Y=typeof Q==="string"?JSON.parse(Q):Q;if(Array.isArray(Y)){for(let W of Y){let K=W.input??W.args;X.push({type:"tool_call",id:W.toolCallId,name:W.toolName,arguments:typeof K==="string"?K:JSON.stringify(K??{})})}delete Z[bK]}}catch{}if(X.length>0){let Y={role:"assistant",parts:X,finish_reason:xH0($)};Z[GT]=JSON.stringify([Y]),delete Z[vK]}}function dH0(Z){let{data:J,origin:Q}=Z;if(Q!=="auto.vercelai.otel")return;if(Z.status&&Z.status!=="ok")Z.status="internal_error";if(m0(J,uT,k0),m0(J,lT,W0),m0(J,cT,cZ),m0(J,"ai.usage.inputTokens",W0),m0(J,"ai.usage.outputTokens",k0),m0(J,pT,W0),m0(J,"ai.response.avgOutputTokensPerSecond","ai.response.avgCompletionTokensPerSecond"),typeof J[W0]==="number"&&typeof J[cZ]==="number")J[W0]=J[W0]+J[cZ];if(typeof J[W0]==="number"){let $=typeof J[k0]==="number"?J[k0]:0;J[$6]=$+J[W0]}if(J[K8]&&Array.isArray(J[K8]))J[K8]=rT(J[K8]);if(J[lQ]){let $=_H0(J[lQ]);J[d0]=$,delete J[lQ]}if(m0(J,t7,c0),gH0(J),m0(J,xT,"gen_ai.response.object"),m0(J,K8,"gen_ai.request.available_tools"),m0(J,iT,dQ),m0(J,oT,cQ),m0(J,bT,"gen_ai.request.schema"),m0(J,X4,D0),Array.isArray(J[_K])){let $=J[_K].map((X)=>{try{return JSON.parse(X)}catch{return X}});J[gQ]=$.length===1?$[0]:JSON.stringify($)}uH0(J);for(let $ of Object.keys(J))if($.startsWith("ai."))m0(J,$,`vercel.${$}`)}function m0(Z,J,Q){if(Z[J]!=null)Z[Q]=Z[J],delete Z[J]}function cH0(Z,J){Z.setAttribute(_,"auto.vercelai.otel"),Z.setAttribute(b,"gen_ai.execute_tool"),Z.setAttribute(d0,"execute_tool"),m0(J,xK,o7),m0(J,gK,RK);let Q=J[RK];if(typeof Q==="string")J4.set(Q,Z.spanContext());if(!J[AK])Z.setAttribute(AK,"function");let $=J[o7];if($)Z.updateName(`execute_tool ${$}`)}function mH0(Z,J,Q){Z.setAttribute(_,"auto.vercelai.otel");let $=J.replace("ai.","");Z.setAttribute("ai.pipeline.name",$),Z.updateName($);let X=Q[mT];if(X&&typeof X==="string")Z.setAttribute("gen_ai.function_id",X);if(tT(Z,Q),Q[X4]&&!Q[T0])Z.setAttribute(T0,Q[X4]);Z.setAttribute("ai.streaming",J.includes("stream"));let Y=eT(J);if(Y)Z.setAttribute(b,Y);if(EK.has(J)){if(X&&typeof X==="string")Z.updateName(`invoke_agent ${X}`);else Z.updateName("invoke_agent");return}let W=Q[X4];if(W){let K=yK.has(J)?"generate_content":AT[J];if(K)Z.updateName(`${K} ${W}`)}}function iQ(Z){Z.on("spanStart",vH0),Z.addEventProcessor(Object.assign(bH0,{id:"VercelAiEventProcessor"}))}function uH0(Z){let J=Z[dT];if(J)try{let Q=JSON.parse(J),$=Q.openai??Q.azure;if($){if(L9(Z,cZ,$.cachedPromptTokens),L9(Z,"gen_ai.usage.output_tokens.reasoning",$.reasoningTokens),L9(Z,"gen_ai.usage.output_tokens.prediction_accepted",$.acceptedPredictionTokens),L9(Z,"gen_ai.usage.output_tokens.prediction_rejected",$.rejectedPredictionTokens),!Z["gen_ai.conversation.id"])L9(Z,"gen_ai.conversation.id",$.responseId)}if(Q.anthropic){let X=Q.anthropic.usage?.cache_read_input_tokens??Q.anthropic.cacheReadInputTokens;L9(Z,cZ,X);let Y=Q.anthropic.usage?.cache_creation_input_tokens??Q.anthropic.cacheCreationInputTokens;L9(Z,MK,Y)}if(Q.bedrock?.usage)L9(Z,cZ,Q.bedrock.usage.cacheReadInputTokens),L9(Z,MK,Q.bedrock.usage.cacheWriteInputTokens);if(Q.deepseek)L9(Z,cZ,Q.deepseek.promptCacheHitTokens),L9(Z,"gen_ai.usage.input_tokens.cache_miss",Q.deepseek.promptCacheMissTokens)}catch{}}function L9(Z,J,Q){if(Q!=null)Z[J]=Q}var lZ="OpenAI",Zf=["responses.create","chat.completions.create","embeddings.create","conversations.create"],lH0=["response.output_item.added","response.function_call_arguments.delta","response.function_call_arguments.done","response.output_item.done"],Jf=["response.created","response.in_progress","response.failed","response.completed","response.incomplete","response.queued","response.output_text.delta",...lH0];function oQ(Z){if(Z.includes("chat.completions"))return n7.CHAT;if(Z.includes("responses"))return n7.CHAT;if(Z.includes("embeddings"))return n7.EMBEDDINGS;if(Z.includes("conversations"))return n7.CHAT;return Z.split(".").pop()||"unknown"}function Qf(Z){return`gen_ai.${oQ(Z)}`}function $f(Z){return Zf.includes(Z)}function Xf(Z){return Z!==null&&typeof Z==="object"&&"object"in Z&&Z.object==="chat.completion"}function Yf(Z){return Z!==null&&typeof Z==="object"&&"object"in Z&&Z.object==="response"}function Wf(Z){if(Z===null||typeof Z!=="object"||!("object"in Z))return!1;let J=Z;return J.object==="list"&&typeof J.model==="string"&&J.model.toLowerCase().includes("embedding")}function Kf(Z){return Z!==null&&typeof Z==="object"&&"object"in Z&&Z.object==="conversation"}function zf(Z){return Z!==null&&typeof Z==="object"&&"type"in Z&&typeof Z.type==="string"&&Z.type.startsWith("response.")}function Gf(Z){return Z!==null&&typeof Z==="object"&&"object"in Z&&Z.object==="chat.completion.chunk"}function Bf(Z,J,Q){if(nQ(Z,J.id,J.model,J.created),J.usage)Y4(Z,J.usage.prompt_tokens,J.usage.completion_tokens,J.usage.total_tokens);if(Array.isArray(J.choices)){let $=J.choices.map((X)=>X.finish_reason).filter((X)=>X!==null);if($.length>0)Z.setAttributes({[q6]:JSON.stringify($)});if(Q){let X=J.choices.map((Y)=>Y.message?.tool_calls).filter((Y)=>Array.isArray(Y)&&Y.length>0).flat();if(X.length>0)Z.setAttributes({[S0]:JSON.stringify(X)})}}}function Hf(Z,J,Q){if(nQ(Z,J.id,J.model,J.created_at),J.status)Z.setAttributes({[q6]:JSON.stringify([J.status])});if(J.usage)Y4(Z,J.usage.input_tokens,J.usage.output_tokens,J.usage.total_tokens);if(Q){let $=J;if(Array.isArray($.output)&&$.output.length>0){let X=$.output.filter((Y)=>typeof Y==="object"&&Y!==null&&Y.type==="function_call");if(X.length>0)Z.setAttributes({[S0]:JSON.stringify(X)})}}}function Vf(Z,J){if(Z.setAttributes({[NK]:J.model,[T0]:J.model}),J.usage)Y4(Z,J.usage.prompt_tokens,void 0,J.usage.total_tokens)}function Ff(Z,J){let{id:Q,created_at:$}=J;if(Z.setAttributes({[IK]:Q,[a6]:Q,[Z4]:Q}),$)Z.setAttributes({[TK]:new Date($*1000).toISOString()})}function Y4(Z,J,Q,$){if(J!==void 0)Z.setAttributes({[kT]:J,[W0]:J});if(Q!==void 0)Z.setAttributes({[PT]:Q,[k0]:Q});if($!==void 0)Z.setAttributes({[$6]:$})}function nQ(Z,J,Q,$){Z.setAttributes({[IK]:J,[a6]:J}),Z.setAttributes({[NK]:Q,[T0]:Q}),Z.setAttributes({[TK]:new Date($*1000).toISOString()})}function pH0(Z){if("conversation"in Z&&typeof Z.conversation==="string")return Z.conversation;if("previous_response_id"in Z&&typeof Z.previous_response_id==="string")return Z.previous_response_id;return}function wf(Z){let J={[D0]:Z.model??"unknown"};if("temperature"in Z)J[xZ]=Z.temperature;if("top_p"in Z)J[dZ]=Z.top_p;if("frequency_penalty"in Z)J[gZ]=Z.frequency_penalty;if("presence_penalty"in Z)J[$8]=Z.presence_penalty;if("stream"in Z)J[J8]=Z.stream;if("encoding_format"in Z)J[WT]=Z.encoding_format;if("dimensions"in Z)J[KT]=Z.dimensions;let Q=pH0(Z);if(Q)J[Z4]=Q;return J}function iH0(Z,J){for(let Q of Z){let $=Q.index;if($===void 0||!Q.function)continue;if(!($ in J.chatCompletionToolCalls))J.chatCompletionToolCalls[$]={...Q,function:{name:Q.function.name,arguments:Q.function.arguments||""}};else{let X=J.chatCompletionToolCalls[$];if(Q.function.arguments&&X?.function)X.function.arguments+=Q.function.arguments}}}function oH0(Z,J,Q){if(J.responseId=Z.id??J.responseId,J.responseModel=Z.model??J.responseModel,J.responseTimestamp=Z.created??J.responseTimestamp,Z.usage)J.promptTokens=Z.usage.prompt_tokens,J.completionTokens=Z.usage.completion_tokens,J.totalTokens=Z.usage.total_tokens;for(let $ of Z.choices??[]){if(Q){if($.delta?.content)J.responseTexts.push($.delta.content);if($.delta?.tool_calls)iH0($.delta.tool_calls,J)}if($.finish_reason)J.finishReasons.push($.finish_reason)}}function nH0(Z,J,Q,$){if(!(Z&&typeof Z==="object")){J.eventTypes.push("unknown:non-object");return}if(Z instanceof Error){$.setStatus({code:i,message:"internal_error"}),g(Z,{mechanism:{handled:!1,type:"auto.ai.openai.stream-response"}});return}if(!("type"in Z))return;let X=Z;if(!Jf.includes(X.type)){J.eventTypes.push(X.type);return}if(Q){if(X.type==="response.output_item.done"&&"item"in X)J.responsesApiToolCalls.push(X.item);if(X.type==="response.output_text.delta"&&"delta"in X&&X.delta){J.responseTexts.push(X.delta);return}}if("response"in X){let{response:Y}=X;if(J.responseId=Y.id??J.responseId,J.responseModel=Y.model??J.responseModel,J.responseTimestamp=Y.created_at??J.responseTimestamp,Y.usage)J.promptTokens=Y.usage.input_tokens,J.completionTokens=Y.usage.output_tokens,J.totalTokens=Y.usage.total_tokens;if(Y.status)J.finishReasons.push(Y.status);if(Q&&Y.output_text)J.responseTexts.push(Y.output_text)}}async function*Df(Z,J,Q){let $={eventTypes:[],responseTexts:[],finishReasons:[],responseId:"",responseModel:"",responseTimestamp:0,promptTokens:void 0,completionTokens:void 0,totalTokens:void 0,chatCompletionToolCalls:{},responsesApiToolCalls:[]};try{for await(let X of Z){if(Gf(X))oH0(X,$,Q);else if(zf(X))nH0(X,$,Q,J);yield X}}finally{if(nQ(J,$.responseId,$.responseModel,$.responseTimestamp),Y4(J,$.promptTokens,$.completionTokens,$.totalTokens),J.setAttributes({[i7]:!0}),$.finishReasons.length)J.setAttributes({[q6]:JSON.stringify($.finishReasons)});if(Q&&$.responseTexts.length)J.setAttributes({[R0]:$.responseTexts.join("")});let Y=[...Object.values($.chatCompletionToolCalls),...$.responsesApiToolCalls];if(Y.length>0)J.setAttributes({[S0]:JSON.stringify(Y)});J.end()}}function aH0(Z){let J=Array.isArray(Z.tools)?Z.tools:[],$=Z.web_search_options&&typeof Z.web_search_options==="object"?[{type:"web_search_options",...Z.web_search_options}]:[],X=[...J,...$];if(X.length===0)return;try{return JSON.stringify(X)}catch(Y){k&&q.error("Failed to serialize OpenAI tools:",Y);return}}function sH0(Z,J){let Q={[bZ]:"openai",[d0]:oQ(J),[_]:"auto.ai.openai"};if(Z.length>0&&typeof Z[0]==="object"&&Z[0]!==null){let $=Z[0],X=aH0($);if(X)Q[h9]=X;Object.assign(Q,wf($))}else Q[D0]="unknown";return Q}function rH0(Z,J,Q){if(!J||typeof J!=="object")return;let $=J;if(Xf($)){if(Bf(Z,$,Q),Q&&$.choices?.length){let X=$.choices.map((Y)=>Y.message?.content||"");Z.setAttributes({[R0]:JSON.stringify(X)})}}else if(Yf($)){if(Hf(Z,$,Q),Q&&$.output_text)Z.setAttributes({[R0]:$.output_text})}else if(Wf($))Vf(Z,$);else if(Kf($))Ff(Z,$)}function Uf(Z,J,Q){if(Q===n7.EMBEDDINGS&&"input"in J){let K=J.input;if(K==null)return;if(typeof K==="string"&&K.length===0)return;if(Array.isArray(K)&&K.length===0)return;Z.setAttribute(gQ,typeof K==="string"?K:JSON.stringify(K));return}let $="input"in J?J.input:("messages"in J)?J.messages:void 0;if(!$)return;if(Array.isArray($)&&$.length===0)return;let{systemInstructions:X,filteredMessages:Y}=y6($);if(X)Z.setAttribute(E6,X);let W=r7(Y);if(Z.setAttribute(c0,W),Array.isArray(Y))Z.setAttribute(X6,Y.length);else Z.setAttribute(X6,1)}function tH0(Z,J,Q,$){return function(...Y){let W=sH0(Y,J),K=W[D0]||"unknown",z=oQ(J),G=Y[0],H=G&&typeof G==="object"&&G.stream===!0,B={name:`${z} ${K}`,op:Qf(J),attributes:W};if(H){let D,U=N0(B,(j)=>{if(D=Z.apply(Q,Y),$.recordInputs&&G)Uf(j,G,z);return(async()=>{try{let L=await D;return Df(L,j,$.recordOutputs??!1)}catch(L){throw j.setStatus({code:i,message:"internal_error"}),g(L,{mechanism:{handled:!1,type:"auto.ai.openai.stream",data:{function:J}}}),j.end(),L}})()});return W8(D,U,"auto.ai.openai")}let V,F=j6(B,(D)=>{if(V=Z.apply(Q,Y),$.recordInputs&&G)Uf(D,G,z);return V.then((U)=>{return rH0(D,U,$.recordOutputs),U},(U)=>{throw g(U,{mechanism:{handled:!1,type:"auto.ai.openai",data:{function:J}}}),U})});return W8(V,F,"auto.ai.openai")}}function jf(Z,J="",Q){return new Proxy(Z,{get($,X){let Y=$[X],W=Y8(J,String(X));if(typeof Y==="function"&&$f(W))return tH0(Y,W,$,Q);if(typeof Y==="function")return Y.bind($);if(Y&&typeof Y==="object")return jf(Y,W,Q);return Y}})}function aQ(Z,J){return jf(Z,"",S9(J))}var pZ="Anthropic_AI",qf=["messages.create","messages.stream","messages.countTokens","models.get","completions.create","models.retrieve","beta.messages.create"];function Lf(Z){return qf.includes(Z)}function Of(Z,J){if(Array.isArray(J)&&J.length===0)return;let{systemInstructions:Q,filteredMessages:$}=y6(J);if(Q)Z.setAttributes({[E6]:Q});let X=Array.isArray($)?$.length:1;Z.setAttributes({[c0]:r7($),[X6]:X})}var eH0={invalid_request_error:"invalid_argument",authentication_error:"unauthenticated",permission_error:"permission_denied",not_found_error:"not_found",request_too_large:"failed_precondition",rate_limit_error:"resource_exhausted",api_error:"internal_error",overloaded_error:"unavailable"};function uK(Z){if(!Z)return"internal_error";return eH0[Z]||"internal_error"}function Cf(Z,J){if(J.error)Z.setStatus({code:i,message:uK(J.error.type)}),g(J.error,{mechanism:{handled:!1,type:"auto.ai.anthropic.anthropic_error"}})}function Pf(Z){let{system:J,messages:Q,input:$}=Z,X=typeof J==="string"?[{role:"system",content:Z.system}]:[],Y=Array.isArray($)?$:$!=null?[$]:void 0,W=Array.isArray(Q)?Q:Q!=null?[Q]:[],K=Y??W;return[...X,...K]}function ZV0(Z,J){if("type"in Z&&typeof Z.type==="string"){if(Z.type==="error")return J.setStatus({code:i,message:uK(Z.error?.type)}),g(Z.error,{mechanism:{handled:!1,type:"auto.ai.anthropic.anthropic_error"}}),!0}return!1}function JV0(Z,J){if(Z.type==="message_delta"&&Z.usage){if("output_tokens"in Z.usage&&typeof Z.usage.output_tokens==="number")J.completionTokens=Z.usage.output_tokens}if(Z.message){let Q=Z.message;if(Q.id)J.responseId=Q.id;if(Q.model)J.responseModel=Q.model;if(Q.stop_reason)J.finishReasons.push(Q.stop_reason);if(Q.usage){if(typeof Q.usage.input_tokens==="number")J.promptTokens=Q.usage.input_tokens;if(typeof Q.usage.cache_creation_input_tokens==="number")J.cacheCreationInputTokens=Q.usage.cache_creation_input_tokens;if(typeof Q.usage.cache_read_input_tokens==="number")J.cacheReadInputTokens=Q.usage.cache_read_input_tokens}}}function QV0(Z,J){if(Z.type!=="content_block_start"||typeof Z.index!=="number"||!Z.content_block)return;if(Z.content_block.type==="tool_use"||Z.content_block.type==="server_tool_use")J.activeToolBlocks[Z.index]={id:Z.content_block.id,name:Z.content_block.name,inputJsonParts:[]}}function $V0(Z,J,Q){if(Z.type!=="content_block_delta"||!Z.delta)return;if(typeof Z.index==="number"&&"partial_json"in Z.delta&&typeof Z.delta.partial_json==="string"){let $=J.activeToolBlocks[Z.index];if($)$.inputJsonParts.push(Z.delta.partial_json)}if(Q&&typeof Z.delta.text==="string")J.responseTexts.push(Z.delta.text)}function XV0(Z,J){if(Z.type!=="content_block_stop"||typeof Z.index!=="number")return;let Q=J.activeToolBlocks[Z.index];if(!Q)return;let $=Q.inputJsonParts.join(""),X;try{X=$?JSON.parse($):{}}catch{X={__unparsed:$}}J.toolCalls.push({type:"tool_use",id:Q.id,name:Q.name,input:X}),delete J.activeToolBlocks[Z.index]}function kf(Z,J,Q,$){if(!(Z&&typeof Z==="object"))return;if(ZV0(Z,$))return;JV0(Z,J),QV0(Z,J),$V0(Z,J,Q),XV0(Z,J)}function YV0(Z,J,Q){if(!J.isRecording())return;if(Z.responseId)J.setAttributes({[a6]:Z.responseId});if(Z.responseModel)J.setAttributes({[T0]:Z.responseModel});if($4(J,Z.promptTokens,Z.completionTokens,Z.cacheCreationInputTokens,Z.cacheReadInputTokens),J.setAttributes({[i7]:!0}),Z.finishReasons.length>0)J.setAttributes({[q6]:JSON.stringify(Z.finishReasons)});if(Q&&Z.responseTexts.length>0)J.setAttributes({[R0]:Z.responseTexts.join("")});if(Q&&Z.toolCalls.length>0)J.setAttributes({[S0]:JSON.stringify(Z.toolCalls)});J.end()}async function*Mf(Z,J,Q){let $={responseTexts:[],finishReasons:[],responseId:"",responseModel:"",promptTokens:void 0,completionTokens:void 0,cacheCreationInputTokens:void 0,cacheReadInputTokens:void 0,toolCalls:[],activeToolBlocks:{}};try{for await(let X of Z)kf(X,$,Q,J),yield X}finally{if($.responseId)J.setAttributes({[a6]:$.responseId});if($.responseModel)J.setAttributes({[T0]:$.responseModel});if($4(J,$.promptTokens,$.completionTokens,$.cacheCreationInputTokens,$.cacheReadInputTokens),J.setAttributes({[i7]:!0}),$.finishReasons.length>0)J.setAttributes({[q6]:JSON.stringify($.finishReasons)});if(Q&&$.responseTexts.length>0)J.setAttributes({[R0]:$.responseTexts.join("")});if(Q&&$.toolCalls.length>0)J.setAttributes({[S0]:JSON.stringify($.toolCalls)});J.end()}}function Rf(Z,J,Q){let $={responseTexts:[],finishReasons:[],responseId:"",responseModel:"",promptTokens:void 0,completionTokens:void 0,cacheCreationInputTokens:void 0,cacheReadInputTokens:void 0,toolCalls:[],activeToolBlocks:{}};return Z.on("streamEvent",(X)=>{kf(X,$,Q,J)}),Z.on("message",()=>{YV0($,J,Q)}),Z.on("error",(X)=>{if(g(X,{mechanism:{handled:!1,type:"auto.ai.anthropic.stream_error"}}),J.isRecording())J.setStatus({code:i,message:"internal_error"}),J.end()}),Z}function WV0(Z,J){let Q={[bZ]:"anthropic",[d0]:s7(J),[_]:"auto.ai.anthropic"};if(Z.length>0&&typeof Z[0]==="object"&&Z[0]!==null){let $=Z[0];if($.tools&&Array.isArray($.tools))Q[h9]=JSON.stringify($.tools);if(Q[D0]=$.model??"unknown","temperature"in $)Q[xZ]=$.temperature;if("top_p"in $)Q[dZ]=$.top_p;if("stream"in $)Q[J8]=$.stream;if("top_k"in $)Q[bQ]=$.top_k;if("frequency_penalty"in $)Q[gZ]=$.frequency_penalty;if("max_tokens"in $)Q[Q8]=$.max_tokens}else if(J==="models.retrieve"||J==="models.get")Q[D0]=Z[0];else Q[D0]="unknown";return Q}function lK(Z,J){let Q=Pf(J);if(Of(Z,Q),"prompt"in J)Z.setAttributes({[YT]:JSON.stringify(J.prompt)})}function KV0(Z,J){if("content"in J){if(Array.isArray(J.content)){Z.setAttributes({[R0]:J.content.map(($)=>$.text).filter(($)=>!!$).join("")});let Q=[];for(let $ of J.content)if($.type==="tool_use"||$.type==="server_tool_use")Q.push($);if(Q.length>0)Z.setAttributes({[S0]:JSON.stringify(Q)})}}if("completion"in J)Z.setAttributes({[R0]:J.completion});if("input_tokens"in J)Z.setAttributes({[R0]:JSON.stringify(J.input_tokens)})}function zV0(Z,J){if("id"in J&&"model"in J){if(Z.setAttributes({[a6]:J.id,[T0]:J.model}),"created"in J&&typeof J.created==="number")Z.setAttributes({[fK]:new Date(J.created*1000).toISOString()});if("created_at"in J&&typeof J.created_at==="number")Z.setAttributes({[fK]:new Date(J.created_at*1000).toISOString()});if("usage"in J&&J.usage)$4(Z,J.usage.input_tokens,J.usage.output_tokens,J.usage.cache_creation_input_tokens,J.usage.cache_read_input_tokens)}}function GV0(Z,J,Q){if(!J||typeof J!=="object")return;if("type"in J&&J.type==="error"){Cf(Z,J);return}if(Q)KV0(Z,J);zV0(Z,J)}function Af(Z,J,Q){if(g(Z,{mechanism:{handled:!1,type:"auto.ai.anthropic",data:{function:Q}}}),J.isRecording())J.setStatus({code:i,message:"internal_error"}),J.end();throw Z}function BV0(Z,J,Q,$,X,Y,W,K,z,G,H){let B=X[D0]??"unknown",V={name:`${Y} ${B}`,op:X8(W),attributes:X};if(G&&!H){let F,D=N0(V,(U)=>{if(F=Z.apply(Q,$),z.recordInputs&&K)lK(U,K);return(async()=>{try{let j=await F;return Mf(j,U,z.recordOutputs??!1)}catch(j){return Af(j,U,W)}})()});return W8(F,D,"auto.ai.anthropic")}else return N0(V,(F)=>{try{if(z.recordInputs&&K)lK(F,K);let D=J.apply(Q,$);return Rf(D,F,z.recordOutputs??!1)}catch(D){return Af(D,F,W)}})}function HV0(Z,J,Q,$){return new Proxy(Z,{apply(X,Y,W){let K=WV0(W,J),z=K[D0]??"unknown",G=s7(J),H=typeof W[0]==="object"?W[0]:void 0,B=Boolean(H?.stream),V=J==="messages.stream";if(B||V)return BV0(Z,X,Q,W,K,G,J,H,$,B,V);let F,D=j6({name:`${G} ${z}`,op:X8(J),attributes:K},(U)=>{if(F=X.apply(Q,W),$.recordInputs&&H)lK(U,H);return F.then((j)=>{return GV0(U,j,$.recordOutputs),j},(j)=>{throw g(j,{mechanism:{handled:!1,type:"auto.ai.anthropic",data:{function:J}}}),j})});return W8(F,D,"auto.ai.anthropic")}})}function If(Z,J="",Q){return new Proxy(Z,{get($,X){let Y=$[X],W=Y8(J,String(X));if(typeof Y==="function"&&Lf(W))return HV0(Y,W,$,Q);if(typeof Y==="function")return Y.bind($);if(Y&&typeof Y==="object")return If(Y,W,Q);return Y}})}function sQ(Z,J){return If(Z,"",S9(J))}var iZ="Google_GenAI",pK=["models.generateContent","models.generateContentStream","chats.create","sendMessage","sendMessageStream"],Nf="google_genai",iK="chats.create",Tf="chat";function VV0(Z,J){let Q=Z?.promptFeedback;if(Q?.blockReason){let $=Q.blockReasonMessage??Q.blockReason;return J.setStatus({code:i,message:"internal_error"}),g(`Content blocked: ${$}`,{mechanism:{handled:!1,type:"auto.ai.google_genai"}}),!0}return!1}function FV0(Z,J){if(typeof Z.responseId==="string")J.responseId=Z.responseId;if(typeof Z.modelVersion==="string")J.responseModel=Z.modelVersion;let Q=Z.usageMetadata;if(Q){if(typeof Q.promptTokenCount==="number")J.promptTokens=Q.promptTokenCount;if(typeof Q.candidatesTokenCount==="number")J.completionTokens=Q.candidatesTokenCount;if(typeof Q.totalTokenCount==="number")J.totalTokens=Q.totalTokenCount}}function wV0(Z,J,Q){if(Array.isArray(Z.functionCalls))J.toolCalls.push(...Z.functionCalls);for(let $ of Z.candidates??[]){if($?.finishReason&&!J.finishReasons.includes($.finishReason))J.finishReasons.push($.finishReason);for(let X of $?.content?.parts??[]){if(Q&&X.text)J.responseTexts.push(X.text);if(X.functionCall)J.toolCalls.push({type:"function",id:X.functionCall.id,name:X.functionCall.name,arguments:X.functionCall.args})}}}function DV0(Z,J,Q,$){if(!Z||VV0(Z,$))return;FV0(Z,J),wV0(Z,J,Q)}async function*ff(Z,J,Q){let $={responseTexts:[],finishReasons:[],toolCalls:[]};try{for await(let X of Z)DV0(X,$,Q,J),yield X}finally{let X={[i7]:!0};if($.responseId)X[a6]=$.responseId;if($.responseModel)X[T0]=$.responseModel;if($.promptTokens!==void 0)X[W0]=$.promptTokens;if($.completionTokens!==void 0)X[k0]=$.completionTokens;if($.totalTokens!==void 0)X[$6]=$.totalTokens;if($.finishReasons.length)X[q6]=JSON.stringify($.finishReasons);if(Q&&$.responseTexts.length)X[R0]=$.responseTexts.join("");if(Q&&$.toolCalls.length)X[S0]=JSON.stringify($.toolCalls);J.setAttributes(X),J.end()}}function Ef(Z){if(pK.includes(Z))return!0;let J=Z.split(".").pop();return pK.includes(J)}function yf(Z){return Z.includes("Stream")}function z8(Z,J="user"){if(typeof Z==="string")return[{role:J,content:Z}];if(Array.isArray(Z))return Z.flatMap((Q)=>z8(Q,J));if(typeof Z!=="object"||!Z)return[];if("role"in Z&&typeof Z.role==="string")return[Z];if("parts"in Z)return[{...Z,role:J}];return[{role:J,content:Z}]}function hf(Z,J){if("model"in Z&&typeof Z.model==="string")return Z.model;if(J&&typeof J==="object"){let Q=J;if("model"in Q&&typeof Q.model==="string")return Q.model;if("modelVersion"in Q&&typeof Q.modelVersion==="string")return Q.modelVersion}return"unknown"}function UV0(Z){let J={};if("temperature"in Z&&typeof Z.temperature==="number")J[xZ]=Z.temperature;if("topP"in Z&&typeof Z.topP==="number")J[dZ]=Z.topP;if("topK"in Z&&typeof Z.topK==="number")J[bQ]=Z.topK;if("maxOutputTokens"in Z&&typeof Z.maxOutputTokens==="number")J[Q8]=Z.maxOutputTokens;if("frequencyPenalty"in Z&&typeof Z.frequencyPenalty==="number")J[gZ]=Z.frequencyPenalty;if("presencePenalty"in Z&&typeof Z.presencePenalty==="number")J[$8]=Z.presencePenalty;return J}function jV0(Z,J,Q){let $={[bZ]:Nf,[d0]:s7(Z),[_]:"auto.ai.google_genai"};if(J){if($[D0]=hf(J,Q),"config"in J&&typeof J.config==="object"&&J.config){let X=J.config;if(Object.assign($,UV0(X)),"tools"in X&&Array.isArray(X.tools)){let Y=X.tools.flatMap((W)=>W.functionDeclarations);$[h9]=JSON.stringify(Y)}}}else $[D0]=hf({},Q);return $}function Sf(Z,J){let Q=[];if("config"in J&&J.config&&typeof J.config==="object"&&"systemInstruction"in J.config&&J.config.systemInstruction)Q.push(...z8(J.config.systemInstruction,"system"));if("history"in J)Q.push(...z8(J.history,"user"));if("contents"in J)Q.push(...z8(J.contents,"user"));if("message"in J)Q.push(...z8(J.message,"user"));if(Array.isArray(Q)&&Q.length){let{systemInstructions:$,filteredMessages:X}=y6(Q);if($)Z.setAttribute(E6,$);let Y=Array.isArray(X)?X.length:0;Z.setAttributes({[X6]:Y,[c0]:JSON.stringify(uZ(X))})}}function qV0(Z,J,Q){if(!J||typeof J!=="object")return;if(J.modelVersion)Z.setAttribute(T0,J.modelVersion);if(J.usageMetadata&&typeof J.usageMetadata==="object"){let $=J.usageMetadata;if(typeof $.promptTokenCount==="number")Z.setAttributes({[W0]:$.promptTokenCount});if(typeof $.candidatesTokenCount==="number")Z.setAttributes({[k0]:$.candidatesTokenCount});if(typeof $.totalTokenCount==="number")Z.setAttributes({[$6]:$.totalTokenCount})}if(Q&&Array.isArray(J.candidates)&&J.candidates.length>0){let $=J.candidates.map((X)=>{if(X.content?.parts&&Array.isArray(X.content.parts))return X.content.parts.map((Y)=>typeof Y.text==="string"?Y.text:"").filter((Y)=>Y.length>0).join("");return""}).filter((X)=>X.length>0);if($.length>0)Z.setAttributes({[R0]:$.join("")})}if(Q&&J.functionCalls){let $=J.functionCalls;if(Array.isArray($)&&$.length>0)Z.setAttributes({[S0]:JSON.stringify($)})}}function _f(Z,J,Q,$){let X=J===iK;return new Proxy(Z,{apply(Y,W,K){let z=K[0],G=jV0(J,z,Q),H=G[D0]??"unknown",B=s7(J);if(yf(J))return N0({name:`${B} ${H}`,op:X8(J),attributes:G},async(V)=>{try{if($.recordInputs&&z)Sf(V,z);let F=await Y.apply(Q,K);return ff(F,V,Boolean($.recordOutputs))}catch(F){throw V.setStatus({code:i,message:"internal_error"}),g(F,{mechanism:{handled:!1,type:"auto.ai.google_genai",data:{function:J}}}),V.end(),F}});return j6({name:X?`${B} ${H} create`:`${B} ${H}`,op:X8(J),attributes:G},(V)=>{if($.recordInputs&&z)Sf(V,z);return U9(()=>Y.apply(Q,K),(F)=>{g(F,{mechanism:{handled:!1,type:"auto.ai.google_genai",data:{function:J}}})},()=>{},(F)=>{if(!X)qV0(V,F,$.recordOutputs)})})}})}function oK(Z,J="",Q){return new Proxy(Z,{get:($,X,Y)=>{let W=Reflect.get($,X,Y),K=Y8(J,String(X));if(typeof W==="function"&&Ef(K)){if(K===iK){let z=_f(W,K,$,Q);return function(...H){let B=z(...H);if(B&&typeof B==="object")return oK(B,Tf,Q);return B}}return _f(W,K,$,Q)}if(typeof W==="function")return W.bind($);if(W&&typeof W==="object")return oK(W,K,Q);return W}})}function rQ(Z,J){return oK(Z,"",S9(J))}var tQ="LangChain",e7="auto.ai.langchain",vf={human:"user",ai:"assistant",assistant:"assistant",system:"system",function:"function",tool:"tool"};var s6=(Z,J,Q)=>{if(Q!=null)Z[J]=Q},h6=(Z,J,Q)=>{let $=Number(Q);if(!Number.isNaN($))Z[J]=$};function QZ(Z){if(typeof Z==="string")return Z;try{return JSON.stringify(Z)}catch{return String(Z)}}function G8(Z){if(Array.isArray(Z))try{let J=Z.map((Q)=>Q&&typeof Q==="object"&&mZ(Q)?a7(Q):Q);return JSON.stringify(J)}catch{return String(Z)}return QZ(Z)}function W4(Z){let J=Z.toLowerCase();return vf[J]??J}function bf(Z){if(Z.includes("System"))return"system";if(Z.includes("Human"))return"user";if(Z.includes("AI")||Z.includes("Assistant"))return"assistant";if(Z.includes("Function"))return"function";if(Z.includes("Tool"))return"tool";return"user"}function nK(Z){if(!Z||Array.isArray(Z))return;return Z.invocation_params}function K4(Z){return Z.map((J)=>{let Q=J._getType;if(typeof Q==="function"){let X=Q.call(J);return{role:W4(X),content:G8(J.content)}}if(J.lc===1&&J.kwargs){let X=J.id,Y=Array.isArray(X)&&X.length>0?X[X.length-1]:"",W=typeof Y==="string"?bf(Y):"user";return{role:W4(W),content:G8(J.kwargs?.content)}}if(J.type){let X=String(J.type).toLowerCase();return{role:W4(X),content:G8(J.content)}}if(J.role)return{role:W4(String(J.role)),content:G8(J.content)};let $=J.constructor?.name;if($&&$!=="Object")return{role:W4(bf($)),content:G8(J.content)};return{role:"user",content:G8(J.content)}})}function LV0(Z,J,Q){let $={},X="kwargs"in Z?Z.kwargs:void 0,Y=J?.temperature??Q?.ls_temperature??X?.temperature;h6($,xZ,Y);let W=J?.max_tokens??Q?.ls_max_tokens??X?.max_tokens;h6($,Q8,W);let K=J?.top_p??X?.top_p;h6($,dZ,K);let z=J?.frequency_penalty;h6($,gZ,z);let G=J?.presence_penalty;if(h6($,$8,G),J&&"stream"in J)s6($,J8,Boolean(J.stream));return $}function xf(Z,J,Q,$,X){return{[bZ]:QZ(Z??"langchain"),[d0]:"chat",[D0]:QZ(J),[_]:e7,...LV0(Q,$,X)}}function gf(Z,J,Q,$,X){let Y=X?.ls_provider,W=$?.model??X?.ls_model_name??"unknown",K=xf(Y,W,Z,$,X);if(Q&&Array.isArray(J)&&J.length>0){s6(K,X6,J.length);let z=J.map((G)=>({role:"user",content:G}));s6(K,c0,QZ(z))}return K}function df(Z,J,Q,$,X){let Y=X?.ls_provider??Z.id?.[2],W=$?.model??X?.ls_model_name??"unknown",K=xf(Y,W,Z,$,X);if(Q&&Array.isArray(J)&&J.length>0){let z=K4(J.flat()),{systemInstructions:G,filteredMessages:H}=y6(z);if(G)s6(K,E6,G);let B=Array.isArray(H)?H.length:0;s6(K,X6,B);let V=uZ(H);s6(K,c0,QZ(V))}return K}function OV0(Z,J){let Q=[],$=Z.flat();for(let X of $){let Y=X.message?.content;if(Array.isArray(Y))for(let W of Y){let K=W;if(K.type==="tool_use")Q.push(K)}}if(Q.length>0)s6(J,S0,QZ(Q))}function CV0(Z,J){if(!Z)return;let{tokenUsage:Q,usage:$}=Z;if(Q)h6(J,W0,Q.promptTokens),h6(J,k0,Q.completionTokens),h6(J,$6,Q.totalTokens);else if($){h6(J,W0,$.input_tokens),h6(J,k0,$.output_tokens);let X=Number($.input_tokens),Y=Number($.output_tokens),W=(Number.isNaN(X)?0:X)+(Number.isNaN(Y)?0:Y);if(W>0)h6(J,$6,W);if($.cache_creation_input_tokens!==void 0)h6(J,HT,$.cache_creation_input_tokens);if($.cache_read_input_tokens!==void 0)h6(J,VT,$.cache_read_input_tokens)}}function cf(Z,J){if(!Z)return;let Q={};if(Array.isArray(Z.generations)){let G=Z.generations.flat().map((H)=>{if(H.generationInfo?.finish_reason)return H.generationInfo.finish_reason;if(H.generation_info?.finish_reason)return H.generation_info.finish_reason;return null}).filter((H)=>typeof H==="string");if(G.length>0)s6(Q,q6,QZ(G));if(OV0(Z.generations,Q),J){let H=Z.generations.flat().map((B)=>B.text??B.message?.content).filter((B)=>typeof B==="string");if(H.length>0)s6(Q,R0,QZ(H))}}CV0(Z.llmOutput,Q);let $=Z.llmOutput,Y=Z.generations?.[0]?.[0]?.message,W=$?.model_name??$?.model??Y?.response_metadata?.model_name;if(W)s6(Q,T0,W);let K=$?.id??Y?.id;if(K)s6(Q,a6,K);let z=$?.stop_reason??Y?.response_metadata?.finish_reason;if(z)s6(Q,zT,QZ(z));return Q}function eQ(Z={}){let{recordInputs:J,recordOutputs:Q}=S9(Z),$=new Map,X=(W)=>{let K=$.get(W);if(K?.isRecording())K.end(),$.delete(W)},Y={lc_serializable:!1,lc_namespace:["langchain_core","callbacks","sentry"],lc_secrets:void 0,lc_attributes:void 0,lc_aliases:void 0,lc_serializable_keys:void 0,lc_id:["langchain_core","callbacks","sentry"],lc_kwargs:{},name:"SentryCallbackHandler",ignoreLLM:!1,ignoreChain:!1,ignoreAgent:!1,ignoreRetriever:!1,ignoreCustomEvent:!1,raiseError:!1,awaitHandlers:!0,handleLLMStart(W,K,z,G,H,B,V,F){let D=nK(B),U=gf(W,K,J,D,V),j=U[D0],L=U[d0];N0({name:`${L} ${j}`,op:"gen_ai.chat",attributes:{...U,[b]:"gen_ai.chat"}},(O)=>{return $.set(z,O),O})},handleChatModelStart(W,K,z,G,H,B,V,F){let D=nK(B),U=df(W,K,J,D,V),j=U[D0],L=U[d0];N0({name:`${L} ${j}`,op:"gen_ai.chat",attributes:{...U,[b]:"gen_ai.chat"}},(O)=>{return $.set(z,O),O})},handleLLMEnd(W,K,z,G,H){let B=$.get(K);if(B?.isRecording()){let V=cf(W,Q);if(V)B.setAttributes(V);X(K)}},handleLLMError(W,K){let z=$.get(K);if(z?.isRecording())z.setStatus({code:i,message:"internal_error"}),X(K);g(W,{mechanism:{handled:!1,type:`${e7}.llm_error_handler`}})},handleChainStart(W,K,z,G,H,B,V,F){let D=F||W.name||"unknown_chain",U={[_]:"auto.ai.langchain","langchain.chain.name":D};if(J)U["langchain.chain.inputs"]=JSON.stringify(K);N0({name:`chain ${D}`,op:"gen_ai.invoke_agent",attributes:{...U,[b]:"gen_ai.invoke_agent"}},(j)=>{return $.set(z,j),j})},handleChainEnd(W,K){let z=$.get(K);if(z?.isRecording()){if(Q)z.setAttributes({"langchain.chain.outputs":JSON.stringify(W)});X(K)}},handleChainError(W,K){let z=$.get(K);if(z?.isRecording())z.setStatus({code:i,message:"internal_error"}),X(K);g(W,{mechanism:{handled:!1,type:`${e7}.chain_error_handler`}})},handleToolStart(W,K,z,G){let H=W.name||"unknown_tool",B={[_]:e7,[o7]:H};if(J)B[dQ]=K;N0({name:`execute_tool ${H}`,op:"gen_ai.execute_tool",attributes:{...B,[b]:"gen_ai.execute_tool"}},(V)=>{return $.set(z,V),V})},handleToolEnd(W,K){let z=$.get(K);if(z?.isRecording()){if(Q)z.setAttributes({[cQ]:JSON.stringify(W)});X(K)}},handleToolError(W,K){let z=$.get(K);if(z?.isRecording())z.setStatus({code:i,message:"internal_error"}),X(K);g(W,{mechanism:{handled:!1,type:`${e7}.tool_error_handler`}})},copy(){return Y},toJSON(){return{lc:1,type:"not_implemented",id:Y.lc_id}},toJSONNotImplemented(){return{lc:1,type:"not_implemented",id:Y.lc_id}}};return Y}var Z$="LangGraph",aK="auto.ai.langgraph";function PV0(Z){if(!Z||Z.length===0)return null;let J=[];for(let Q of Z)if(Q&&typeof Q==="object"){let $=Q.tool_calls;if($&&Array.isArray($))J.push(...$)}return J.length>0?J:null}function kV0(Z){let J=Z,Q=0,$=0,X=0;if(J.usage_metadata&&typeof J.usage_metadata==="object"){let Y=J.usage_metadata;if(typeof Y.input_tokens==="number")Q=Y.input_tokens;if(typeof Y.output_tokens==="number")$=Y.output_tokens;if(typeof Y.total_tokens==="number")X=Y.total_tokens;return{inputTokens:Q,outputTokens:$,totalTokens:X}}if(J.response_metadata&&typeof J.response_metadata==="object"){let Y=J.response_metadata;if(Y.tokenUsage&&typeof Y.tokenUsage==="object"){let W=Y.tokenUsage;if(typeof W.promptTokens==="number")Q=W.promptTokens;if(typeof W.completionTokens==="number")$=W.completionTokens;if(typeof W.totalTokens==="number")X=W.totalTokens}}return{inputTokens:Q,outputTokens:$,totalTokens:X}}function MV0(Z,J){let Q=J;if(Q.response_metadata&&typeof Q.response_metadata==="object"){let $=Q.response_metadata;if($.model_name&&typeof $.model_name==="string")Z.setAttribute(T0,$.model_name);if($.finish_reason&&typeof $.finish_reason==="string")Z.setAttribute(q6,[$.finish_reason])}}function mf(Z){if(!Z.builder?.nodes?.tools?.runnable?.tools)return null;let J=Z.builder?.nodes?.tools?.runnable?.tools;if(!J||!Array.isArray(J)||J.length===0)return null;return J.map((Q)=>({name:Q.lc_kwargs?.name,description:Q.lc_kwargs?.description,schema:Q.lc_kwargs?.schema}))}function uf(Z,J,Q){let X=Q?.messages;if(!X||!Array.isArray(X))return;let Y=J?.length??0,W=X.length>Y?X.slice(Y):[];if(W.length===0)return;let K=PV0(W);if(K)Z.setAttribute(S0,JSON.stringify(K));let z=K4(W);Z.setAttribute(R0,JSON.stringify(z));let G=0,H=0,B=0;for(let V of W){let F=kV0(V);G+=F.inputTokens,H+=F.outputTokens,B+=F.totalTokens,MV0(Z,V)}if(G>0)Z.setAttribute(W0,G);if(H>0)Z.setAttribute(k0,H);if(B>0)Z.setAttribute($6,B)}function sK(Z,J){return new Proxy(Z,{apply(Q,$,X){return j6({op:"gen_ai.create_agent",name:"create_agent",attributes:{[_]:aK,[b]:"gen_ai.create_agent",[d0]:"create_agent"}},(Y)=>{try{let W=Reflect.apply(Q,$,X),K=X.length>0?X[0]:{};if(K?.name&&typeof K.name==="string")Y.setAttribute(kK,K.name),Y.updateName(`create_agent ${K.name}`);let z=W.invoke;if(z&&typeof z==="function")W.invoke=RV0(z.bind(W),W,K,J);return W}catch(W){throw Y.setStatus({code:i,message:"internal_error"}),g(W,{mechanism:{handled:!1,type:"auto.ai.langgraph.error"}}),W}})}})}function RV0(Z,J,Q,$){return new Proxy(Z,{apply(X,Y,W){return j6({op:"gen_ai.invoke_agent",name:"invoke_agent",attributes:{[_]:aK,[b]:xQ,[d0]:"invoke_agent"}},async(K)=>{try{let z=Q?.name;if(z&&typeof z==="string")K.setAttribute(BT,z),K.setAttribute(kK,z),K.updateName(`invoke_agent ${z}`);let B=(W.length>1?W[1]:void 0)?.configurable?.thread_id;if(B&&typeof B==="string")K.setAttribute(Z4,B);let V=mf(J);if(V)K.setAttribute(h9,JSON.stringify(V));let{recordInputs:F,recordOutputs:D}=$,U=W.length>0?W[0]?.messages??[]:[];if(U&&F){let L=K4(U),{systemInstructions:O,filteredMessages:M}=y6(L);if(O)K.setAttribute(E6,O);let S=uZ(M),T=Array.isArray(M)?M.length:0;K.setAttributes({[c0]:JSON.stringify(S),[X6]:T})}let j=await Reflect.apply(X,Y,W);if(D)uf(K,U??null,j);return j}catch(z){throw K.setStatus({code:i,message:"internal_error"}),g(z,{mechanism:{handled:!1,type:"auto.ai.langgraph.error"}}),z}})}})}function J$(Z,J){return Z.compile=sK(Z.compile,S9(J)),Z}function z4(Z){if(Z===void 0)return;else if(Z>=400&&Z<500)return"warning";else if(Z>=500)return"error";else return}function G4(Z,J,Q){let $=Z[J];if(typeof $!=="function")return;try{Z[J]=Q}catch{Object.defineProperty(Z,J,{value:Q,writable:!0,configurable:!0,enumerable:!0})}if(Z.default===$)try{Z.default=Q}catch{Object.defineProperty(Z,"default",{value:Q,writable:!0,configurable:!0,enumerable:!0})}}function pf(Z,J=!1){return!(J||Z&&!Z.startsWith("/")&&!Z.match(/^[A-Z]:/)&&!Z.startsWith(".")&&!Z.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&Z!==void 0&&!Z.includes("node_modules/")}function of(Z){let J=/^\s*[-]{4,}$/,Q=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,$=/at (?:async )?(.+?) \(data:(.*?),/;return(X)=>{let Y=X.match($);if(Y)return{filename:``,function:Y[1]};let W=X.match(Q);if(W){let K,z,G,H,B;if(W[1]){G=W[1];let U=G.lastIndexOf(".");if(G[U-1]===".")U--;if(U>0){K=G.slice(0,U),z=G.slice(U+1);let j=K.indexOf(".Module");if(j>0)G=G.slice(j+1),K=K.slice(0,j)}H=void 0}if(z)H=K,B=z;if(z==="")B=void 0,G=void 0;if(G===void 0)B=B||wW,G=H?`${H}.${B}`:B;let V=wI(W[2]),F=W[5]==="native";if(!V&&W[5]&&!F)V=W[5];let D=V?AV0(V):void 0;return{filename:D??V,module:D&&Z?.(D),function:G,lineno:lf(W[3]),colno:lf(W[4]),in_app:pf(V||"",F)}}if(X.match(J))return{filename:X};return}}function rK(Z){return[90,of(Z)]}function lf(Z){return parseInt(Z||"",10)||void 0}function AV0(Z){try{return decodeURI(Z)}catch{return}}class S6{constructor(Z){this._maxSize=Z,this._cache=new Map}get size(){return this._cache.size}get(Z){let J=this._cache.get(Z);if(J===void 0)return;return this._cache.delete(Z),this._cache.set(Z,J),J}set(Z,J){if(this._cache.size>=this._maxSize){let Q=this._cache.keys().next().value;this._cache.delete(Q)}this._cache.set(Z,J)}remove(Z){let J=this._cache.get(Z);if(J)this._cache.delete(Z);return J}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){let Z=[];return this._cache.forEach((J)=>Z.push(J)),Z}}var _6=R(C(),1),YZ=R(Q0(),1),v6=R(s(),1);import{errorMonitor as sw0}from"node:events";var m=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;var nZ=R(C(),1);import{subscribe as iw0}from"node:diagnostics_channel";var w$="@sentry/instrumentation-http",Th=1048576;function fh(Z,J,Q,$){let X=0,Y=[];m&&q.log($,"Patching request.on");let W=new WeakMap,K=Q==="small"?1000:Q==="medium"?1e4:Th;try{Z.on=new Proxy(Z.on,{apply:(z,G,H)=>{let[B,V,...F]=H;if(B==="data"){m&&q.log($,`Handling request.on("data") with maximum body size of ${K}b`);let D=new Proxy(V,{apply:(U,j,L)=>{try{let O=L[0],M=Buffer.from(O);if(X{let[,B]=H,V=W.get(B);if(V){W.delete(B);let F=H.slice();return F[1]=V,Reflect.apply(z,G,F)}return Reflect.apply(z,G,H)}}),Z.on("end",()=>{try{let z=Buffer.concat(Y).toString("utf-8");if(z){let H=Buffer.byteLength(z,"utf-8")>K?`${Buffer.from(z).subarray(0,K-3).toString("utf-8")}...`:z;J.setSDKProcessingMetadata({normalizedRequest:{data:H}})}}catch(z){if(m)q.error($,"Error building captured request body",z)}})}catch(z){if(m)q.error($,"Error patching request to capture body",z)}}var Eh=nZ.createContextKey("sentry_http_server_instrumented"),wz="Http.Server",Fz=new Map,yh=new WeakSet;function hh(Z,J){M0(Z,"_startSpanCallback",new WeakRef(J))}var ow0=(Z={})=>{let J={sessions:Z.sessions??!0,sessionFlushingDelayMS:Z.sessionFlushingDelayMS??60000,maxRequestBodySize:Z.maxRequestBodySize??"medium",ignoreRequestBody:Z.ignoreRequestBody};return{name:wz,setupOnce(){iw0("http.server.request.start",($)=>{nw0($.server,J)})},afterAllSetup(Q){if(m&&Q.getIntegrationByName("Http"))q.warn("It seems that you have manually added `httpServerIntegration` while `httpIntegration` is also present. Make sure to remove `httpServerIntegration` when adding `httpIntegration`.")}}},H8=ow0;function nw0(Z,{ignoreRequestBody:J,maxRequestBodySize:Q,sessions:$,sessionFlushingDelayMS:X}){let Y=Z.emit;if(yh.has(Y))return;let W=new Proxy(Y,{apply(K,z,G){if(G[0]!=="request")return K.apply(z,G);let H=f();if(nZ.context.active().getValue(Eh)||!H)return K.apply(z,G);m&&q.log(wz,"Handling incoming request");let B=l().clone(),V=G[1],F=G[2],D=n5(V),U=V.ip||V.socket?.remoteAddress,j=V.url||"/";if(Q!=="none"&&!J?.(j,V))fh(V,B,Q,wz);B.setSDKProcessingMetadata({normalizedRequest:D,ipAddress:U});let L=(V.method||"GET").toUpperCase(),O=JZ(j),M=`${L} ${O}`;if(B.setTransactionName(M),$&&H)aw0(H,{requestIsolationScope:B,response:F,sessionFlushingDelayMS:X??60000});return x1(B,()=>{let S={traceId:w6(),sampleRand:g0(),propagationSpanId:D6()};t().setPropagationContext({...S}),B.setPropagationContext({...S});let T=nZ.propagation.extract(nZ.context.active(),D.headers).setValue(Eh,!0);return nZ.context.with(T,()=>{H.emit("httpServerRequest",V,F,D);let n=V._startSpanCallback?.deref();if(n)return n(()=>K.apply(z,G));return K.apply(z,G)})})}});yh.add(W),Z.emit=W}function aw0(Z,{requestIsolationScope:J,response:Q,sessionFlushingDelayMS:$}){J.setSDKProcessingMetadata({requestSession:{status:"ok"}}),Q.once("close",()=>{let X=J.getScopeData().sdkProcessingMetadata.requestSession;if(Z&&X){m&&q.log(`Recorded request session with status: ${X.status}`);let Y=new Date;Y.setSeconds(0,0);let W=Y.toISOString(),K=Fz.get(Z),z=K?.[W]||{exited:0,crashed:0,errored:0};if(z[{ok:"exited",crashed:"crashed",errored:"errored"}[X.status]]++,K)K[W]=z;else{m&&q.log("Opened new request session aggregate.");let G={[W]:z};Fz.set(Z,G);let H=()=>{clearTimeout(V),B(),Fz.delete(Z);let F=Object.entries(G).map(([D,U])=>({started:D,exited:U.exited,errored:U.errored,crashed:U.crashed}));Z.sendSession({aggregates:F})},B=Z.on("flush",()=>{m&&q.log("Sending request session aggregate due to client flush"),H()}),V=setTimeout(()=>{m&&q.log("Sending request session aggregate due to flushing schedule"),H()},$).unref()}}})}var Sh="Http.ServerSpans",rw0=(Z={})=>{let J=Z.ignoreStaticAssets??!0,Q=Z.ignoreIncomingRequests,$=Z.ignoreStatusCodes??[[401,404],[301,303],[305,399]],{onSpanCreated:X}=Z,{requestHook:Y,responseHook:W,applyCustomAttributesOnSpan:K}=Z.instrumentation??{};return{name:Sh,setup(z){if(typeof __SENTRY_TRACING__<"u"&&!__SENTRY_TRACING__)return;z.on("httpServerRequest",(G,H,B)=>{let V=G,F=H;hh(V,(U)=>{if(ZD0(V,{ignoreStaticAssets:J,ignoreIncomingRequests:Q}))return m&&q.log(Sh,"Skipping span creation for incoming request",V.url),U();let j=B.url||V.url||"/",L=o5(j),O=V.headers,M=O["user-agent"],S=O["x-forwarded-for"],T=V.httpVersion,n=O.host,r=n?.replace(/^(.*)(:[0-9]{1,5})/,"$1")||"localhost",t0=z.tracer,I9=j.startsWith("https")?"https":"http",w7=B.method||V.method?.toUpperCase()||"GET",D7=L?L.pathname:JZ(j),IJ=`${w7} ${D7}`,o0=t0.startSpan(IJ,{kind:_6.SpanKind.SERVER,attributes:{[b]:"http.server",[_]:"auto.http.otel.http","sentry.http.prefetch":tw0(V)||void 0,"http.url":j,"http.method":B.method,"http.target":L?`${L.pathname}${L.search}`:D7,"http.host":n,"net.host.name":r,"http.client_ip":typeof S==="string"?S.split(",")[0]:void 0,"http.user_agent":M,"http.scheme":I9,"http.flavor":T,"net.transport":T?.toUpperCase()==="QUIC"?"ip_udp":"ip_tcp",...JD0(V),...hQ(B.headers||{},z.getOptions().sendDefaultPii??!1)}});Y?.(o0,V),W?.(o0,F),K?.(o0,V,F),X?.(o0,V,F);let NJ={type:YZ.RPCType.HTTP,span:o0};return _6.context.with(YZ.setRPCMetadata(_6.trace.setSpan(_6.context.active(),o0),NJ),()=>{_6.context.bind(_6.context.active(),V),_6.context.bind(_6.context.active(),F);let TJ=!1;function MV(fJ){if(TJ)return;TJ=!0;let RV=XD0(V,F);o0.setAttributes(RV),o0.setStatus(fJ),o0.end();let AV=RV["http.route"];if(AV)l().setTransactionName(`${V.method?.toUpperCase()||"GET"} ${AV}`)}return F.on("close",()=>{MV(f9(F.statusCode))}),F.on(sw0,()=>{let fJ=f9(F.statusCode);MV(fJ.code===i?fJ:{code:i})}),U()})})})},processEvent(z){if(z.type==="transaction"){let G=z.contexts?.trace?.data?.["http.response.status_code"];if(typeof G==="number"){if(YD0(G,$))return m&&q.log("Dropping transaction due to status code",G),null}}return z},afterAllSetup(z){if(!m)return;if(z.getIntegrationByName("Http"))q.warn("It seems that you have manually added `httpServerSpansIntergation` while `httpIntegration` is also present. Make sure to remove `httpIntegration` when adding `httpServerSpansIntegration`.");if(!z.getIntegrationByName("Http.Server"))q.error("It seems that you have manually added `httpServerSpansIntergation` without adding `httpServerIntegration`. This is a requiement for spans to be created - please add the `httpServerIntegration` integration.")}}},V8=rw0;function tw0(Z){return Z.headers["next-router-prefetch"]==="1"}function ew0(Z){let J=JZ(Z);if(J.match(/\.(ico|png|jpg|jpeg|gif|svg|css|js|woff|woff2|ttf|eot|webp|avif)$/))return!0;if(J.match(/^\/(robots\.txt|sitemap\.xml|manifest\.json|browserconfig\.xml)$/))return!0;return!1}function ZD0(Z,{ignoreStaticAssets:J,ignoreIncomingRequests:Q}){if(YZ.isTracingSuppressed(_6.context.active()))return!0;let $=Z.url,X=Z.method?.toUpperCase();if(X==="OPTIONS"||X==="HEAD"||!$)return!0;if(J&&X==="GET"&&ew0($))return!0;if(Q?.($,Z))return!0;return!1}function JD0(Z){let J=QD0(Z.headers);if(J==null)return{};if($D0(Z.headers))return{["http.request_content_length"]:J};else return{["http.request_content_length_uncompressed"]:J}}function QD0(Z){let J=Z["content-length"];if(J===void 0)return null;let Q=parseInt(J,10);if(isNaN(Q))return null;return Q}function $D0(Z){let J=Z["content-encoding"];return!!J&&J!=="identity"}function XD0(Z,J){let{socket:Q}=Z,{statusCode:$,statusMessage:X}=J,Y={[v6.ATTR_HTTP_RESPONSE_STATUS_CODE]:$,[v6.SEMATTRS_HTTP_STATUS_CODE]:$,"http.status_text":X?.toUpperCase()},W=YZ.getRPCMetadata(_6.context.active());if(Q){let{localAddress:K,localPort:z,remoteAddress:G,remotePort:H}=Q;Y[v6.SEMATTRS_NET_HOST_IP]=K,Y[v6.SEMATTRS_NET_HOST_PORT]=z,Y[v6.SEMATTRS_NET_PEER_IP]=G,Y["net.peer.port"]=H}if(Y[v6.SEMATTRS_HTTP_STATUS_CODE]=$,Y["http.status_text"]=(X||"").toUpperCase(),W?.type===YZ.RPCType.HTTP&&W.route!==void 0){let K=W.route;Y[v6.ATTR_HTTP_ROUTE]=K}return Y}function YD0(Z,J){return J.some((Q)=>{if(typeof Q==="number")return Q===Z;let[$,X]=Q;return Z>=$&&Z<=X})}var Y6=R(C(),1),xh=R(Q0(),1),w4=R(c(),1),_0=R(s(),1);import{subscribe as Dz,unsubscribe as Uz}from"node:diagnostics_channel";import{errorMonitor as bh}from"node:events";function F4(Z,J){if(!Z)return J;let Q=y7(Z),$=y7(J);if(!$)return Z;let X={...Q};return Object.entries($).forEach(([Y,W])=>{if(Y.startsWith("sentry-")||!X[Y])X[Y]=W}),LQ(X)}var F8="@sentry/instrumentation-http";function _h(Z,J){let Q=WD0(Z),$=J?.statusCode,X=z4($);f6({category:"http",data:{status_code:$,...Q},type:"http",level:X},{event:"response",request:Z,response:J})}function D$(Z,J){let Q=U$(Z),{tracePropagationTargets:$,propagateTraceparent:X}=f()?.getOptions()||{},Y=p7(Q,$,J)?l7({propagateTraceparent:X}):void 0;if(!Y)return;let{"sentry-trace":W,baggage:K,traceparent:z}=Y;if(W&&!Z.getHeader("sentry-trace"))try{Z.setHeader("sentry-trace",W),m&&q.log(F8,"Added sentry-trace header to outgoing request")}catch(G){m&&q.error(F8,"Failed to add sentry-trace header to outgoing request:",N9(G)?G.message:"Unknown error")}if(z&&!Z.getHeader("traceparent"))try{Z.setHeader("traceparent",z),m&&q.log(F8,"Added traceparent header to outgoing request")}catch(G){m&&q.error(F8,"Failed to add traceparent header to outgoing request:",N9(G)?G.message:"Unknown error")}if(K){let G=F4(Z.getHeader("baggage"),K);if(G)try{Z.setHeader("baggage",G),m&&q.log(F8,"Added baggage header to outgoing request")}catch(H){m&&q.error(F8,"Failed to add baggage header to outgoing request:",N9(H)?H.message:"Unknown error")}}}function WD0(Z){try{let J=Z.getHeader("host")||Z.host,Q=new URL(Z.path,`${Z.protocol}//${J}`),$=_Z(Q.toString()),X={url:vZ($),"http.method":Z.method||"GET"};if($.search)X["http.query"]=$.search;if($.hash)X["http.fragment"]=$.hash;return X}catch{return{}}}function vh(Z){return{method:Z.method,protocol:Z.protocol,host:Z.host,hostname:Z.host,path:Z.path,headers:Z.getHeaders()}}function U$(Z){let J=Z.getHeader("host")||Z.host,Q=Z.protocol,$=Z.path;return`${Q}//${J}${$}`}class w8 extends w4.InstrumentationBase{constructor(Z={}){super(w$,a,Z);this._propagationDecisionMap=new S6(100),this._ignoreOutgoingRequestsMap=new WeakMap}init(){let Z=!1,J=(W)=>{let K=W;this._onOutgoingRequestFinish(K.request,K.response)},Q=(W)=>{let K=W;this._onOutgoingRequestFinish(K.request,void 0)},$=(W)=>{let K=W;this._onOutgoingRequestCreated(K.request)},X=(W)=>{if(Z)return W;if(Z=!0,Dz("http.client.response.finish",J),Dz("http.client.request.error",Q),this.getConfig().propagateTraceInOutgoingRequests||this.getConfig().createSpansForOutgoingRequests)Dz("http.client.request.created",$);return W},Y=()=>{Uz("http.client.response.finish",J),Uz("http.client.request.error",Q),Uz("http.client.request.created",$)};return[new w4.InstrumentationNodeModuleDefinition("http",["*"],X,Y),new w4.InstrumentationNodeModuleDefinition("https",["*"],X,Y)]}_startSpanForOutgoingRequest(Z){let J=Z.once,[Q,$]=KD0(Z),X=v5({name:Q,attributes:$,onlyIfParent:!0});this.getConfig().outgoingRequestHook?.(X,Z);let Y=new Proxy(J,{apply(z,G,H){let[B]=H;if(B!=="response")return z.apply(G,H);let V=Y6.context.active(),F=Y6.trace.setSpan(V,X);return Y6.context.with(F,()=>{return z.apply(G,H)})}});Z.once=Y;let W=!1,K=(z)=>{if(W)return;W=!0,X.setStatus(z),X.end()};return Z.prependListener("response",(z)=>{if(Z.listenerCount("response")<=1)z.resume();Y6.context.bind(Y6.context.active(),z);let G=zD0(z);X.setAttributes(G),this.getConfig().outgoingResponseHook?.(X,z),this.getConfig().outgoingRequestApplyCustomAttributes?.(X,Z,z);let H=(B=!1)=>{this._diag.debug("outgoingRequest on end()");let V=B||typeof z.statusCode!=="number"||z.aborted&&!z.complete?{code:Y6.SpanStatusCode.ERROR}:f9(z.statusCode);K(V)};z.on("end",()=>{H()}),z.on(bh,(B)=>{this._diag.debug("outgoingRequest on response error()",B),H(!0)})}),Z.on("close",()=>{K({code:Y6.SpanStatusCode.UNSET})}),Z.on(bh,(z)=>{this._diag.debug("outgoingRequest on request error()",z),K({code:Y6.SpanStatusCode.ERROR})}),X}_onOutgoingRequestFinish(Z,J){m&&q.log(w$,"Handling finished outgoing request");let Q=this.getConfig().breadcrumbs,$=typeof Q>"u"?!0:Q,X=this._ignoreOutgoingRequestsMap.get(Z)??this._shouldIgnoreOutgoingRequest(Z);if(this._ignoreOutgoingRequestsMap.set(Z,X),$&&!X)_h(Z,J)}_onOutgoingRequestCreated(Z){m&&q.log(w$,"Handling outgoing request created");let J=this._ignoreOutgoingRequestsMap.get(Z)??this._shouldIgnoreOutgoingRequest(Z);if(this._ignoreOutgoingRequestsMap.set(Z,J),J)return;let Q=this.getConfig().createSpansForOutgoingRequests&&(this.getConfig().spans??!0),$=this.getConfig().propagateTraceInOutgoingRequests;if(Q){let X=this._startSpanForOutgoingRequest(Z);if($&&X.isRecording()){let Y=Y6.trace.setSpan(Y6.context.active(),X);Y6.context.with(Y,()=>{D$(Z,this._propagationDecisionMap)})}else if($)D$(Z,this._propagationDecisionMap)}else if($)D$(Z,this._propagationDecisionMap)}_shouldIgnoreOutgoingRequest(Z){if(xh.isTracingSuppressed(Y6.context.active()))return!0;let J=this.getConfig().ignoreOutgoingRequests;if(!J)return!1;let Q=vh(Z),$=U$(Z);return J($,Q)}}function KD0(Z){let J=U$(Z),[Q,$]=FK(o5(J),"client","auto.http.otel.http",Z),X=Z.getHeader("user-agent");return[Q,{[b]:"http.client","otel.kind":"CLIENT",[_0.ATTR_USER_AGENT_ORIGINAL]:X,[_0.ATTR_URL_FULL]:J,"http.url":J,"http.method":Z.method,"http.target":Z.path||"/","net.peer.name":Z.host,"http.host":Z.getHeader("host"),...$}]}function zD0(Z){let{statusCode:J,statusMessage:Q,httpVersion:$,socket:X}=Z,Y=$.toUpperCase()!=="QUIC"?"ip_tcp":"ip_udp",W={[_0.ATTR_HTTP_RESPONSE_STATUS_CODE]:J,[_0.ATTR_NETWORK_PROTOCOL_VERSION]:$,"http.flavor":$,[_0.ATTR_NETWORK_TRANSPORT]:Y,"net.transport":Y,["http.status_text"]:Q?.toUpperCase(),"http.status_code":J,...GD0(Z)};if(X){let{remoteAddress:K,remotePort:z}=X;W[_0.ATTR_NETWORK_PEER_ADDRESS]=K,W[_0.ATTR_NETWORK_PEER_PORT]=z,W["net.peer.ip"]=K,W["net.peer.port"]=z}return W}function GD0(Z){let J=BD0(Z.headers);if(J==null)return{};if(HD0(Z.headers))return{[_0.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]:J};else return{[_0.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]:J}}function BD0(Z){let J=Z["content-length"];if(typeof J==="number")return J;if(typeof J!=="string")return;let Q=parseInt(J,10);if(isNaN(Q))return;return Q}function HD0(Z){let J=Z["content-encoding"];return!!J&&J!=="identity"}var mh=R(C(),1),uh=R(Q0(),1),lh=R(c(),1);import*as D8 from"diagnostics_channel";var t6=CW(process.versions.node),WZ=t6.major,D4=t6.minor;var j$="sentry-trace",jz="baggage",gh=/baggage: (.*)\r\n/;function dh(Z,J){let Q=q$(Z.origin,Z.path),{tracePropagationTargets:$,propagateTraceparent:X}=f()?.getOptions()||{},Y=p7(Q,$,J)?l7({propagateTraceparent:X}):void 0;if(!Y)return;let{"sentry-trace":W,baggage:K,traceparent:z}=Y;if(Array.isArray(Z.headers)){let G=Z.headers;if(W&&!G.includes(j$))G.push(j$,W);if(z&&!G.includes("traceparent"))G.push("traceparent",z);let H=G.findIndex((B)=>B===jz);if(K&&H===-1)G.push(jz,K);else if(K){let B=G[H+1],V=F4(B,K);if(V)G[H+1]=V}}else{let G=Z.headers;if(W&&!G.includes(`${j$}:`))Z.headers+=`${j$}: ${W}\r +`;if(z&&!G.includes("traceparent:"))Z.headers+=`traceparent: ${z}\r +`;let H=Z.headers.match(gh)?.[1];if(K&&!H)Z.headers+=`${jz}: ${K}\r +`;else if(K){let B=F4(H,K);if(B)Z.headers=Z.headers.replace(gh,`baggage: ${B}\r +`)}}}function ch(Z,J){let Q=VD0(Z),$=J.statusCode,X=z4($);f6({category:"http",data:{status_code:$,...Q},type:"http",level:X},{event:"response",request:Z,response:J})}function VD0(Z){try{let J=q$(Z.origin,Z.path),Q=_Z(J),$={url:vZ(Q),"http.method":Z.method||"GET"};if(Q.search)$["http.query"]=Q.search;if(Q.hash)$["http.fragment"]=Q.hash;return $}catch{return{}}}function q$(Z,J="/"){try{return new URL(J,Z).toString()}catch{let Q=`${Z}`;if(Q.endsWith("/")&&J.startsWith("/"))return`${Q}${J.slice(1)}`;if(!Q.endsWith("/")&&!J.startsWith("/"))return`${Q}/${J}`;return`${Q}${J}`}}class U8 extends lh.InstrumentationBase{constructor(Z={}){super("@sentry/instrumentation-node-fetch",a,Z);this._channelSubs=[],this._propagationDecisionMap=new S6(100),this._ignoreOutgoingRequestsMap=new WeakMap}init(){return}disable(){super.disable(),this._channelSubs.forEach((Z)=>Z.unsubscribe()),this._channelSubs=[]}enable(){if(super.enable(),this._channelSubs=this._channelSubs||[],this._channelSubs.length>0)return;this._subscribeToChannel("undici:request:create",this._onRequestCreated.bind(this)),this._subscribeToChannel("undici:request:headers",this._onResponseHeaders.bind(this))}_onRequestCreated({request:Z}){let J=this.getConfig();if(J.enabled===!1)return;let $=this._shouldIgnoreOutgoingRequest(Z);if(this._ignoreOutgoingRequestsMap.set(Z,$),$)return;if(J.tracePropagation!==!1)dh(Z,this._propagationDecisionMap)}_onResponseHeaders({request:Z,response:J}){let Q=this.getConfig();if(Q.enabled===!1)return;let X=Q.breadcrumbs,Y=typeof X>"u"?!0:X,W=this._ignoreOutgoingRequestsMap.get(Z);if(Y&&!W)ch(Z,J)}_subscribeToChannel(Z,J){let Q=WZ>18||WZ===18&&D4>=19,$;if(Q)D8.subscribe?.(Z,J),$=()=>D8.unsubscribe?.(Z,J);else{let X=D8.channel(Z);X.subscribe(J),$=()=>X.unsubscribe(J)}this._channelSubs.push({name:Z,unsubscribe:$})}_shouldIgnoreOutgoingRequest(Z){if(uh.isTracingSuppressed(mh.context.active()))return!0;let J=q$(Z.origin,Z.path),Q=this.getConfig().ignoreOutgoingRequests;if(typeof Q!=="function"||!J)return!1;return Q(J)}}var yb=R(QS(),1);var p=R(s(),1);var O6=R(C(),1),I=R(C(),1),W6=R(Q0(),1),sZ=R(gz(),1),oz="sentry.parentIsRemote",M8="sentry.graphql.operation";function nz(Z){if("parentSpanId"in Z)return Z.parentSpanId;else if("parentSpanContext"in Z)return Z.parentSpanContext?.spanId;return}function az(Z){let J=Z;return!!J.attributes&&typeof J.attributes==="object"}function ej0(Z){return typeof Z.kind==="number"}function Zq0(Z){return!!Z.status}function Qb(Z){return!!Z.name}function Jq0(Z){if(!az(Z))return{};let J=Z.attributes[p.ATTR_URL_FULL]||Z.attributes[p.SEMATTRS_HTTP_URL],Q={url:J,"http.method":Z.attributes[p.ATTR_HTTP_REQUEST_METHOD]||Z.attributes[p.SEMATTRS_HTTP_METHOD]};if(!Q["http.method"]&&Q.url)Q["http.method"]="GET";try{if(typeof J==="string"){let $=_Z(J);if(Q.url=vZ($),$.search)Q["http.query"]=$.search;if($.hash)Q["http.fragment"]=$.hash}}catch{}return Q}function Qq0(Z){if(ej0(Z))return Z.kind;return I.SpanKind.INTERNAL}var dz="sentry-trace",cz="baggage",sz="sentry.dsc",rz="sentry.sampled_not_recording",$b="sentry.url",$q0="sentry.sample_rand",Xq0="sentry.sample_rate",tz=I.createContextKey("sentry_scopes"),mz=I.createContextKey("sentry_fork_isolation_scope"),uz=I.createContextKey("sentry_fork_set_scope"),lz=I.createContextKey("sentry_fork_set_isolation_scope"),Xb="_scopeContext";function R8(Z){return Z.getValue(tz)}function Yb(Z,J){return Z.setValue(tz,J)}function Yq0(Z,J){M0(Z,Xb,J)}function M4(Z){return Z[Xb]}function k8(Z){let{traceFlags:J,traceState:Q}=Z,$=Q?Q.get(rz)==="1":!1;if(J===I.TraceFlags.SAMPLED)return!0;if($)return!1;let X=Q?Q.get(sz):void 0,Y=X?t9(X):void 0;if(Y?.sampled==="true")return!0;if(Y?.sampled==="false")return!1;return}function Wb(Z,J,Q){let $=J[p.ATTR_HTTP_REQUEST_METHOD]||J[p.SEMATTRS_HTTP_METHOD];if($)return Kq0({attributes:J,name:Z,kind:Q},$);let X=J[p.ATTR_DB_SYSTEM_NAME]||J[p.SEMATTRS_DB_SYSTEM],Y=typeof J[b]==="string"&&J[b].startsWith("cache.");if(X&&!Y)return Wq0({attributes:J,name:Z});let W=J[B0]==="custom"?"custom":"route";if(J[p.SEMATTRS_RPC_SERVICE])return{...k4(Z,J,"route"),op:"rpc"};if(J[p.SEMATTRS_MESSAGING_SYSTEM])return{...k4(Z,J,W),op:"message"};let G=J[p.SEMATTRS_FAAS_TRIGGER];if(G)return{...k4(Z,J,W),op:G.toString()};return{op:void 0,description:Z,source:"custom"}}function Kb(Z){let J=az(Z)?Z.attributes:{},Q=Qb(Z)?Z.name:"",$=Qq0(Z);return Wb(Q,J,$)}function Wq0({attributes:Z,name:J}){let Q=Z[n6];if(typeof Q==="string")return{op:"db",description:Q,source:Z[B0]||"custom"};if(Z[B0]==="custom")return{op:"db",description:J,source:"custom"};let $=Z[p.SEMATTRS_DB_STATEMENT];return{op:"db",description:$?$.toString():J,source:"task"}}function Kq0({name:Z,kind:J,attributes:Q},$){let X=["http"];switch(J){case I.SpanKind.CLIENT:X.push("client");break;case I.SpanKind.SERVER:X.push("server");break}if(Q["sentry.http.prefetch"])X.push("prefetch");let{urlPath:Y,url:W,query:K,fragment:z,hasRoute:G}=Gq0(Q,J);if(!Y)return{...k4(Z,Q),op:X.join(".")};let H=Q[M8],B=`${$} ${Y}`,V=H?`${B} (${zq0(H)})`:B,F=G||Y==="/"?"route":"url",D={};if(W)D.url=W;if(K)D["http.query"]=K;if(z)D["http.fragment"]=z;let U=J===I.SpanKind.CLIENT||J===I.SpanKind.SERVER,L=!`${Q[_]||"manual"}`.startsWith("auto"),O=Q[B0]==="custom",M=Q[n6],S=!O&&M==null&&(U||!L),{description:T,source:n}=S?{description:V,source:F}:k4(Z,Q);return{op:X.join("."),description:T,source:n,data:D}}function zq0(Z){if(Array.isArray(Z)){let J=Z.slice().sort();if(J.length<=5)return J.join(", ");else return`${J.slice(0,5).join(", ")}, +${J.length-5}`}return`${Z}`}function Gq0(Z,J){let Q=Z[p.SEMATTRS_HTTP_TARGET],$=Z[p.SEMATTRS_HTTP_URL]||Z[p.ATTR_URL_FULL],X=Z[p.ATTR_HTTP_ROUTE],Y=typeof $==="string"?_Z($):void 0,W=Y?vZ(Y):void 0,K=Y?.search||void 0,z=Y?.hash||void 0;if(typeof X==="string")return{urlPath:X,url:W,query:K,fragment:z,hasRoute:!0};if(J===I.SpanKind.SERVER&&typeof Q==="string")return{urlPath:JZ(Q),url:W,query:K,fragment:z,hasRoute:!1};if(Y)return{urlPath:W,url:W,query:K,fragment:z,hasRoute:!1};if(typeof Q==="string")return{urlPath:JZ(Q),url:W,query:K,fragment:z,hasRoute:!1};return{urlPath:void 0,url:W,query:K,fragment:z,hasRoute:!1}}function k4(Z,J,Q="custom"){let $=J[B0]||Q,X=J[n6];if(X&&typeof X==="string")return{description:X,source:$};return{description:Z,source:$}}function zb(Z){Z.on("createDsc",(J,Q)=>{if(!Q)return;let Y=h(Q).data[B0],{description:W}=Qb(Q)?Kb(Q):{description:void 0};if(Y!=="url"&&W)J.transaction=W;if(C0()){let K=k8(Q.spanContext());J.sampled=K==null?void 0:String(K)}})}function Gb(){return I.trace.getActiveSpan()}var rZ=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;function Bb({dsc:Z,sampled:J}){let Q=Z?E7(Z):void 0,$=new W6.TraceState,X=Q?$.set(sz,Q):$;return J===!1?X.set(rz,"1"):X}var Hb=new Set;function Vb(){return Array.from(Hb)}function _$(Z){Hb.add(Z)}class ez extends W6.W3CBaggagePropagator{constructor(){super();_$("SentryPropagator"),this._urlMatchesTargetsMap=new S6(100)}inject(Z,J,Q){if(W6.isTracingSuppressed(Z)){rZ&&q.log("[Tracing] Not injecting trace data for url because tracing is suppressed.");return}let $=I.trace.getSpan(Z),X=$&&Vq0($),{tracePropagationTargets:Y,propagateTraceparent:W}=f()?.getOptions()||{};if(!p7(X,Y,this._urlMatchesTargetsMap)){rZ&&q.log("[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:",X);return}let K=Hq0(J),z=I.propagation.getBaggage(Z)||I.propagation.createBaggage({}),{dynamicSamplingContext:G,traceId:H,spanId:B,sampled:V}=Fb(Z);if(K){let F=y7(K);if(F)Object.entries(F).forEach(([D,U])=>{z=z.setEntry(D,{value:U})})}if(G)z=Object.entries(G).reduce((F,[D,U])=>{if(U)return F.setEntry(`${c1}${D}`,{value:U});return F},z);if(H&&H!==I.INVALID_TRACEID){if(Q.set(J,dz,EZ(H,B,V)),W)Q.set(J,"traceparent",yZ(H,B,V))}super.inject(I.propagation.setBaggage(Z,z),J,Q)}extract(Z,J,Q){let $=Q.get(J,dz),X=Q.get(J,cz),Y=$?Array.isArray($)?$[0]:$:void 0;return Db(wb(Z,{sentryTrace:Y,baggage:X}))}fields(){return[dz,cz,"traceparent"]}}function Fb(Z,J={}){let Q=I.trace.getSpan(Z);if(Q?.spanContext().isRemote){let K=Q.spanContext();return{dynamicSamplingContext:P0(Q),traceId:K.traceId,spanId:void 0,sampled:k8(K)}}if(Q){let K=Q.spanContext();return{dynamicSamplingContext:P0(Q),traceId:K.traceId,spanId:K.spanId,sampled:k8(K)}}let $=J.scope||R8(Z)?.scope||t(),X=J.client||f(),Y=$.getPropagationContext();return{dynamicSamplingContext:X?y9(X,$):void 0,traceId:Y.traceId,spanId:Y.propagationSpanId,sampled:Y.sampled}}function wb(Z,{sentryTrace:J,baggage:Q}){let $=M5(J,Q),{traceId:X,parentSpanId:Y,sampled:W,dsc:K}=$,z=f(),G=t9(Q);if(!Y||z&&!yW(z,G?.org_id))return Z;let H=Fq0({traceId:X,spanId:Y,sampled:W,dsc:K});return I.trace.setSpanContext(Z,H)}function Bq0(Z,J,Q){let $=Db(wb(Z,J));return I.context.with($,Q)}function Db(Z){let J=R8(Z),Q={scope:J?J.scope:t().clone(),isolationScope:J?J.isolationScope:l()};return Yb(Z,Q)}function Hq0(Z){try{let J=Z[cz];return Array.isArray(J)?J.join(","):J}catch{return}}function Vq0(Z){let J=h(Z).data,Q=J[p.SEMATTRS_HTTP_URL]||J[p.ATTR_URL_FULL];if(typeof Q==="string")return Q;let $=Z.spanContext().traceState?.get($b);if($)return $;return}function Fq0({spanId:Z,traceId:J,sampled:Q,dsc:$}){let X=Bb({dsc:$,sampled:Q});return{traceId:J,spanId:Z,isRemote:!0,traceFlags:Q?I.TraceFlags.SAMPLED:I.TraceFlags.NONE,traceState:X}}function Ub(Z,J,Q){let $=qb(),{name:X,parentSpan:Y}=Z;return Pb(Y)(()=>{let K=Ob(Z.scope,Z.forceTransaction),G=Z.onlyIfParent&&!I.trace.getSpan(K)?W6.suppressTracing(K):K,H=Lb(Z);if(!C0()){let B=W6.isTracingSuppressed(G)?G:W6.suppressTracing(G);return I.context.with(B,()=>{return $.startActiveSpan(X,H,B,(V)=>{return I.context.with(K,()=>{return U9(()=>J(V),()=>{if(h(V).status===void 0)V.setStatus({code:I.SpanStatusCode.ERROR})},Q?()=>V.end():void 0)})})})}return $.startActiveSpan(X,H,G,(B)=>{return U9(()=>J(B),()=>{if(h(B).status===void 0)B.setStatus({code:I.SpanStatusCode.ERROR})},Q?()=>B.end():void 0)})})}function wq0(Z,J){return Ub(Z,J,!0)}function Dq0(Z,J){return Ub(Z,(Q)=>J(Q,()=>Q.end()),!1)}function Uq0(Z){let J=qb(),{name:Q,parentSpan:$}=Z;return Pb($)(()=>{let Y=Ob(Z.scope,Z.forceTransaction),K=Z.onlyIfParent&&!I.trace.getSpan(Y)?W6.suppressTracing(Y):Y,z=Lb(Z);if(!C0())K=W6.isTracingSuppressed(K)?K:W6.suppressTracing(K);return J.startSpan(Q,z,K)})}function jb(Z,J){let Q=Z?I.trace.setSpan(I.context.active(),Z):I.trace.deleteSpan(I.context.active());return I.context.with(Q,()=>J(t()))}function qb(){return f()?.tracer||I.trace.getTracer("@sentry/opentelemetry",a)}function Lb(Z){let{startTime:J,attributes:Q,kind:$,op:X,links:Y}=Z,W=typeof J==="number"?jq0(J):J;return{attributes:X?{[b]:X,...Q}:Q,kind:$,links:Y,startTime:W}}function jq0(Z){return Z<9999999999?Z*1000:Z}function Ob(Z,J){let Q=qq0(Z),$=I.trace.getSpan(Q);if(!$)return Q;if(!J)return Q;let X=I.trace.deleteSpan(Q),{spanId:Y,traceId:W}=$.spanContext(),K=k8($.spanContext()),z=H0($),G=P0(z),H=Bb({dsc:G,sampled:K}),B={traceId:W,spanId:Y,isRemote:!0,traceFlags:K?I.TraceFlags.SAMPLED:I.TraceFlags.NONE,traceState:H};return I.trace.setSpanContext(X,B)}function qq0(Z){if(Z){let J=M4(Z);if(J)return J}return I.context.active()}function Lq0(Z,J){return Bq0(I.context.active(),Z,J)}function Cb(Z,J){let Q=M4(J),$=Q&&I.trace.getSpan(Q),X=$?hZ($):f7(J);return[$?P0($):y9(Z,J),X]}function Pb(Z){return Z!==void 0?(J)=>{return jb(Z,J)}:(J)=>J()}function Oq0(Z){let J=W6.suppressTracing(I.context.active());return I.context.with(J,Z)}function kb(Z){Z.on("preprocessEvent",(J)=>{let Q=Gb();if(!Q||J.type==="transaction")return;J.contexts={trace:hZ(Q),...J.contexts};let $=H0(Q);return J.sdkProcessingMetadata={dynamicSamplingContext:P0($),...J.sdkProcessingMetadata},J})}function Cq0({span:Z,scope:J,client:Q,propagateTraceparent:$}={}){let X=(J&&M4(J))??O6.context.active();if(Z){let{scope:H}=w9(Z);X=H&&M4(H)||O6.trace.setSpan(O6.context.active(),Z)}let{traceId:Y,spanId:W,sampled:K,dynamicSamplingContext:z}=Fb(X,{scope:J,client:Q}),G={"sentry-trace":EZ(Y,W,K),baggage:E7(z)};if($)G.traceparent=yZ(Y,W,K);return G}function Mb(){function Z(){let K=O6.context.active(),z=R8(K);if(z)return z;return{scope:v1(),isolationScope:A6()}}function J(K){let z=O6.context.active();return O6.context.with(z,()=>{return K(Y())})}function Q(K,z){let G=M4(K)||O6.context.active();return O6.context.with(G.setValue(uz,K),()=>{return z(K)})}function $(K){let z=O6.context.active();return O6.context.with(z.setValue(mz,!0),()=>{return K(W())})}function X(K,z){let G=O6.context.active();return O6.context.with(G.setValue(lz,K),()=>{return z(W())})}function Y(){return Z().scope}function W(){return Z().isolationScope}kW({withScope:J,withSetScope:Q,withSetIsolationScope:X,withIsolationScope:$,getCurrentScope:Y,getIsolationScope:W,startSpan:wq0,startSpanManual:Dq0,startInactiveSpan:Uq0,getActiveSpan:Gb,suppressTracing:Oq0,getTraceData:Cq0,continueTrace:Lq0,withActiveSpan:jb})}function Rb(Z){class J extends Z{constructor(...Q){super(...Q);_$("SentryContextManager")}with(Q,$,X,...Y){let W=R8(Q),K=W?.scope||t(),z=W?.isolationScope||l(),G=Q.getValue(mz)===!0,H=Q.getValue(uz),B=Q.getValue(lz),V=H||K.clone(),F=B||(G?z.clone():z),j=Yb(Q,{scope:V,isolationScope:F}).deleteValue(mz).deleteValue(uz).deleteValue(lz);return Yq0(V,j),super.with(j,$,X,...Y)}getAsyncLocalStorageLookup(){return{asyncLocalStorage:this._asyncLocalStorage,contextSymbol:tz}}}return J}function Pq0(Z){let J=new Map;for(let Q of Z)kq0(J,Q);return Array.from(J,function([Q,$]){return $})}function Ab(Z){return Z.attributes[oz]!==!0?nz(Z):void 0}function kq0(Z,J){let Q=J.spanContext().spanId,$=Ab(J);if(!$){pz(Z,{id:Q,span:J,children:[]});return}let X=Mq0(Z,$),Y=pz(Z,{id:Q,span:J,parentNode:X,children:[]});X.children.push(Y)}function Mq0(Z,J){let Q=Z.get(J);if(Q)return Q;return pz(Z,{id:J,children:[]})}function pz(Z,J){let Q=Z.get(J.id);if(Q?.span)return Q;if(Q&&!Q.span)return Q.span=J.span,Q.parentNode=J.parentNode,Q;return Z.set(J.id,J),J}var Ib={"1":"cancelled","2":"unknown_error","3":"invalid_argument","4":"deadline_exceeded","5":"not_found","6":"already_exists","7":"permission_denied","8":"resource_exhausted","9":"failed_precondition","10":"aborted","11":"out_of_range","12":"unimplemented","13":"internal_error","14":"unavailable","15":"data_loss","16":"unauthenticated"},Rq0=(Z)=>{return Object.values(Ib).includes(Z)};function Nb(Z){let J=az(Z)?Z.attributes:{},Q=Zq0(Z)?Z.status:void 0;if(Q){if(Q.code===I.SpanStatusCode.OK)return{code:h1};else if(Q.code===I.SpanStatusCode.ERROR){if(typeof Q.message>"u"){let X=ev(J);if(X)return X}if(Q.message&&Rq0(Q.message))return{code:i,message:Q.message};else return{code:i,message:"internal_error"}}}let $=ev(J);if($)return $;if(Q?.code===I.SpanStatusCode.UNSET)return{code:h1};else return{code:i,message:"unknown_error"}}function ev(Z){let J=Z[p.ATTR_HTTP_RESPONSE_STATUS_CODE]||Z[p.SEMATTRS_HTTP_STATUS_CODE],Q=Z[p.SEMATTRS_RPC_GRPC_STATUS_CODE],$=typeof J==="number"?J:typeof J==="string"?parseInt(J):void 0;if(typeof $==="number")return f9($);if(typeof Q==="string")return{code:i,message:Ib[Q]||"unknown_error"};return}var Zb=1000,Jb=300;class Tb{constructor(Z){this._finishedSpanBucketSize=Z?.timeout||Jb,this._finishedSpanBuckets=Array(this._finishedSpanBucketSize).fill(void 0),this._lastCleanupTimestampInS=Math.floor(i6()/1000),this._spansToBucketEntry=new WeakMap,this._sentSpans=new Map,this._debouncedFlush=wK(this.flush.bind(this),1,{maxWait:100})}export(Z){let J=Math.floor(i6()/1000);if(this._lastCleanupTimestampInS!==J){let Y=0;if(this._finishedSpanBuckets.forEach((W,K)=>{if(W&&W.timestampInS<=J-this._finishedSpanBucketSize)Y+=W.spans.size,this._finishedSpanBuckets[K]=void 0}),Y>0)rZ&&q.log(`SpanExporter dropped ${Y} spans because they were pending for more than ${this._finishedSpanBucketSize} seconds.`);this._lastCleanupTimestampInS=J}let Q=J%this._finishedSpanBucketSize,$=this._finishedSpanBuckets[Q]||{timestampInS:J,spans:new Set};this._finishedSpanBuckets[Q]=$,$.spans.add(Z),this._spansToBucketEntry.set(Z,$);let X=Ab(Z);if(!X||this._sentSpans.has(X))this._debouncedFlush()}flush(){let Z=this._finishedSpanBuckets.flatMap((Y)=>Y?Array.from(Y.spans):[]);this._flushSentSpanCache();let J=this._maybeSend(Z),Q=J.size,$=Z.length-Q;rZ&&q.log(`SpanExporter exported ${Q} spans, ${$} spans are waiting for their parent spans to finish`);let X=i6()+Jb*1000;for(let Y of J){this._sentSpans.set(Y.spanContext().spanId,X);let W=this._spansToBucketEntry.get(Y);if(W)W.spans.delete(Y)}this._debouncedFlush.cancel()}clear(){this._finishedSpanBuckets=this._finishedSpanBuckets.fill(void 0),this._sentSpans.clear(),this._debouncedFlush.cancel()}_maybeSend(Z){let J=Pq0(Z),Q=new Set,$=this._getCompletedRootNodes(J);for(let X of $){let Y=X.span;Q.add(Y);let W=Iq0(Y);if(X.parentNode&&this._sentSpans.has(X.parentNode.id)){let G=W.contexts?.trace?.data;if(G)G["sentry.parent_span_already_sent"]=!0}let K=W.spans||[];for(let G of X.children)iz(G,K,Q);W.spans=K.length>Zb?K.sort((G,H)=>G.start_timestamp-H.start_timestamp).slice(0,Zb):K;let z=v7(Y.events);if(z)W.measurements=z;c5(W)}return Q}_flushSentSpanCache(){let Z=i6();for(let[J,Q]of this._sentSpans.entries())if(Q<=Z)this._sentSpans.delete(J)}_nodeIsCompletedRootNodeOrHasSentParent(Z){return!!Z.span&&(!Z.parentNode||this._sentSpans.has(Z.parentNode.id))}_getCompletedRootNodes(Z){return Z.filter((J)=>this._nodeIsCompletedRootNodeOrHasSentParent(J))}}function Aq0(Z){let J=Z.attributes,Q=J[_],$=J[b],X=J[B0];return{origin:Q,op:$,source:X}}function Iq0(Z){let{op:J,description:Q,data:$,origin:X="manual",source:Y}=fb(Z),W=w9(Z),K=Z.attributes[o6],z={[B0]:Y,[o6]:K,[b]:J,[_]:X,...$,...Eb(Z.attributes)},{links:G}=Z,{traceId:H,spanId:B}=Z.spanContext(),V=nz(Z),F=Nb(Z),D={parent_span_id:V,span_id:B,trace_id:H,data:z,origin:X,op:J,status:S7(F),links:h7(G)},U=z[p.ATTR_HTTP_RESPONSE_STATUS_CODE],j=typeof U==="number"?{response:{status_code:U}}:void 0;return{contexts:{trace:D,otel:{resource:Z.resource.attributes},...j},spans:[],start_timestamp:U6(Z.startTime),timestamp:U6(Z.endTime),transaction:Q,type:"transaction",sdkProcessingMetadata:{capturedSpanScope:W.scope,capturedSpanIsolationScope:W.isolationScope,sampleRate:K,dynamicSamplingContext:P0(Z)},...Y&&{transaction_info:{source:Y}}}}function iz(Z,J,Q){let $=Z.span;if($)Q.add($);if(!$){Z.children.forEach((M)=>{iz(M,J,Q)});return}let Y=$.spanContext().spanId,W=$.spanContext().traceId,K=nz($),{attributes:z,startTime:G,endTime:H,links:B}=$,{op:V,description:F,data:D,origin:U="manual"}=fb($),j={[_]:U,[b]:V,...Eb(z),...D},L=Nb($),O={span_id:Y,trace_id:W,data:j,description:F,parent_span_id:K,start_timestamp:U6(G),timestamp:U6(H)||void 0,status:S7(L),op:V,origin:U,measurements:v7($.events),links:h7(B)};J.push(O),Z.children.forEach((M)=>{iz(M,J,Q)})}function fb(Z){let{op:J,source:Q,origin:$}=Aq0(Z),{op:X,description:Y,source:W,data:K}=Kb(Z),z=J||X,G=Q||W,H={...K,...Nq0(Z)};return{op:z,description:Y,source:G,origin:$,data:H}}function Eb(Z){let J={...Z};return delete J[o6],delete J[oz],delete J[n6],J}function Nq0(Z){let J=Z.attributes,Q={};if(Z.kind!==I.SpanKind.INTERNAL)Q["otel.kind"]=I.SpanKind[Z.kind];let $=J[p.SEMATTRS_HTTP_STATUS_CODE];if($)Q[p.ATTR_HTTP_RESPONSE_STATUS_CODE]=$;let X=Jq0(Z);if(X.url)Q.url=X.url;if(X["http.query"])Q["http.query"]=X["http.query"].slice(1);if(X["http.fragment"])Q["http.fragment"]=X["http.fragment"].slice(1);return Q}function Tq0(Z,J){let Q=I.trace.getSpan(J),$=R8(J);if(Q&&!Q.spanContext().isRemote)m1(Q,Z);if(Q?.spanContext().isRemote)Z.setAttribute(oz,!0);if(J===I.ROOT_CONTEXT)$={scope:v1(),isolationScope:A6()};if($)O5(Z,$.scope,$.isolationScope);T5(Z),f()?.emit("spanStart",Z)}function fq0(Z){f5(Z),f()?.emit("spanEnd",Z)}class ZG{constructor(Z){_$("SentrySpanProcessor"),this._exporter=new Tb(Z)}async forceFlush(){this._exporter.flush()}async shutdown(){this._exporter.clear()}onStart(Z,J){Tq0(Z,J)}onEnd(Z){fq0(Z),this._exporter.export(Z)}}class JG{constructor(Z){this._client=Z,_$("SentrySampler")}shouldSample(Z,J,Q,$,X,Y){let W=this._client.getOptions(),K=hq0(Z),z=K?.spanContext();if(!C0(W))return P8({decision:void 0,context:Z,spanAttributes:X});let G=X[p.SEMATTRS_HTTP_METHOD]||X[p.ATTR_HTTP_REQUEST_METHOD];if($===I.SpanKind.CLIENT&&G&&(!K||z?.isRemote))return P8({decision:void 0,context:Z,spanAttributes:X});let H=K?Eq0(K,J,Q):void 0;if(!(!K||z?.isRemote))return P8({decision:H?sZ.SamplingDecision.RECORD_AND_SAMPLED:sZ.SamplingDecision.NOT_RECORD,context:Z,spanAttributes:X});let{description:V,data:F,op:D}=Wb(Q,X,$),U={...F,...X};if(D)U[b]=D;let j={decision:!0};if(this._client.emit("beforeSampling",{spanAttributes:U,spanName:V,parentSampled:H,parentContext:z},j),!j.decision)return P8({decision:void 0,context:Z,spanAttributes:X});let{isolationScope:L}=R8(Z)??{},O=z?.traceState?z.traceState.get(sz):void 0,M=O?t9(O):void 0,S=I6(M?.sample_rand)??g0(),[T,n,r]=E5(W,{name:V,attributes:U,normalizedRequest:L?.getScopeData().sdkProcessingMetadata.normalizedRequest,parentSampled:H,parentSampleRate:I6(M?.sample_rate)},S),t0=`${G}`.toUpperCase();if(t0==="OPTIONS"||t0==="HEAD")return rZ&&q.log(`[Tracing] Not sampling span because HTTP method is '${t0}' for ${Q}`),P8({decision:sZ.SamplingDecision.NOT_RECORD,context:Z,spanAttributes:X,sampleRand:S,downstreamTraceSampleRate:0});if(!T&&H===void 0)rZ&&q.log("[Tracing] Discarding root span because its trace was not chosen to be sampled."),this._client.recordDroppedEvent("sample_rate","transaction");return{...P8({decision:T?sZ.SamplingDecision.RECORD_AND_SAMPLED:sZ.SamplingDecision.NOT_RECORD,context:Z,spanAttributes:X,sampleRand:S,downstreamTraceSampleRate:r?n:void 0}),attributes:{[o6]:r?n:void 0}}}toString(){return"SentrySampler"}}function Eq0(Z,J,Q){let $=Z.spanContext();if(I.isSpanContextValid($)&&$.traceId===J){if($.isRemote){let Y=k8(Z.spanContext());return rZ&&q.log(`[Tracing] Inheriting remote parent's sampled decision for ${Q}: ${Y}`),Y}let X=k8($);return rZ&&q.log(`[Tracing] Inheriting parent's sampled decision for ${Q}: ${X}`),X}return}function P8({decision:Z,context:J,spanAttributes:Q,sampleRand:$,downstreamTraceSampleRate:X}){let Y=yq0(J,Q);if(X!==void 0)Y=Y.set(Xq0,`${X}`);if($!==void 0)Y=Y.set($q0,`${$}`);if(Z==null)return{decision:sZ.SamplingDecision.NOT_RECORD,traceState:Y};if(Z===sZ.SamplingDecision.NOT_RECORD)return{decision:Z,traceState:Y.set(rz,"1")};return{decision:Z,traceState:Y}}function yq0(Z,J){let X=I.trace.getSpan(Z)?.spanContext()?.traceState||new W6.TraceState,Y=J[p.SEMATTRS_HTTP_URL]||J[p.ATTR_URL_FULL];if(Y&&typeof Y==="string")X=X.set($b,Y);return X}function hq0(Z){let J=I.trace.getSpan(Z);return J&&I.isSpanContextValid(J.spanContext())?J:void 0}var v$=Rb(yb.AsyncLocalStorageContextManager);var R4=R(C(),1);function QG(){R4.diag.disable(),R4.diag.setLogger({error:q.error,warn:q.warn,info:q.log,debug:q.log,verbose:q.log},R4.DiagLogLevel.DEBUG)}var $G=R(c(),1),A4={};function N(Z,J,Q){if(Q)return _q0(Z,J,Q);return Sq0(Z,J)}function Sq0(Z,J){return Object.assign((Q)=>{let $=A4[Z];if($){if(Q)$.setConfig(Q);return $}let X=J(Q);return A4[Z]=X,$G.registerInstrumentations({instrumentations:[X]}),X},{id:Z})}function _q0(Z,J,Q){return Object.assign(($)=>{let X=Q($),Y=A4[Z];if(Y)return Y.setConfig(X),Y;let W=new J(X);return A4[Z]=W,$G.registerInstrumentations({instrumentations:[W]}),W},{id:Z})}function I4(Z){let J=!1,Q=[];if(!vq0(Z))J=!0;else{let X=Z._wrap;Z._wrap=(...Y)=>{return J=!0,Q.forEach((W)=>W()),Q=[],X(...Y)}}return(X)=>{if(J)X();else Q.push(X)}}function vq0(Z){return typeof Z._wrap==="function"}import*as XG from"node:diagnostics_channel";var bq0="ChildProcess",YG=P((Z={})=>{return{name:bq0,setup(){XG.channel("child_process").subscribe((J)=>{if(J&&typeof J==="object"&&"process"in J)xq0(J.process,Z)}),XG.channel("worker_threads").subscribe((J)=>{if(J&&typeof J==="object"&&"worker"in J)gq0(J.worker,Z)})}}});function xq0(Z,J){let Q=!1,$;Z.on("spawn",()=>{if(Z.spawnfile==="/usr/bin/sw_vers"){Q=!0;return}if($={spawnfile:Z.spawnfile},J.includeChildProcessArgs)$.spawnargs=Z.spawnargs}).on("exit",(X)=>{if(!Q){if(Q=!0,X!==null&&X!==0)f6({category:"child_process",message:`Child process exited with code '${X}'`,level:X===0?"info":"warning",data:$})}}).on("error",(X)=>{if(!Q)Q=!0,f6({category:"child_process",message:`Child process errored with '${X.message}'`,level:"error",data:$})})}function gq0(Z,J){let Q;Z.on("online",()=>{Q=Z.threadId}).on("error",($)=>{if(J.captureWorkerErrors!==!1)g($,{mechanism:{type:"auto.child_process.worker_thread",handled:!1,data:{threadId:String(Q)}}});else f6({category:"worker_thread",message:`Worker thread errored with '${$.message}'`,level:"error",data:{threadId:Q}})})}import{execFile as dq0}from"node:child_process";import{readFile as cq0,readdir as mq0}from"node:fs";import*as b0 from"node:os";import{join as uq0}from"node:path";import{promisify as Sb}from"node:util";var lq0=Sb(cq0),pq0=Sb(mq0),iq0="Context",oq0=(Z={})=>{let J,Q={app:!0,os:!0,device:!0,culture:!0,cloudResource:!0,...Z};async function $(Y){if(J===void 0)J=X();let W=nq0(await J);return Y.contexts={...Y.contexts,app:{...W.app,...Y.contexts?.app},os:{...W.os,...Y.contexts?.os},device:{...W.device,...Y.contexts?.device},culture:{...W.culture,...Y.contexts?.culture},cloud_resource:{...W.cloud_resource,...Y.contexts?.cloud_resource}},Y}async function X(){let Y={};if(Q.os)Y.os=await aq0();if(Q.app)Y.app=rq0();if(Q.device)Y.device=tq0(Q.device);if(Q.culture){let W=sq0();if(W)Y.culture=W}if(Q.cloudResource)Y.cloud_resource=XL0();return Y}return{name:iq0,processEvent(Y){return $(Y)}}},WG=P(oq0);function nq0(Z){if(Z.app?.app_memory)Z.app.app_memory=process.memoryUsage().rss;if(Z.app?.free_memory&&typeof process.availableMemory==="function"){let J=process.availableMemory?.();if(J!=null)Z.app.free_memory=J}if(Z.device?.free_memory)Z.device.free_memory=b0.freemem();return Z}async function aq0(){let Z=b0.platform();switch(Z){case"darwin":return QL0();case"linux":return $L0();default:return{name:eq0[Z]||Z,version:b0.release()}}}function sq0(){try{if(typeof process.versions.icu!=="string")return;let Z=new Date(900000000);if(new Intl.DateTimeFormat("es",{month:"long"}).format(Z)==="enero"){let Q=Intl.DateTimeFormat().resolvedOptions();return{locale:Q.locale,timezone:Q.timeZone}}}catch{}return}function rq0(){let Z=process.memoryUsage().rss,Q={app_start_time:new Date(Date.now()-process.uptime()*1000).toISOString(),app_memory:Z};if(typeof process.availableMemory==="function"){let $=process.availableMemory?.();if($!=null)Q.free_memory=$}return Q}function tq0(Z){let J={},Q;try{Q=b0.uptime()}catch{}if(typeof Q==="number")J.boot_time=new Date(Date.now()-Q*1000).toISOString();if(J.arch=b0.arch(),Z===!0||Z.memory)J.memory_size=b0.totalmem(),J.free_memory=b0.freemem();if(Z===!0||Z.cpu){let $=b0.cpus(),X=$?.[0];if(X)J.processor_count=$.length,J.cpu_description=X.model,J.processor_frequency=X.speed}return J}var eq0={aix:"IBM AIX",freebsd:"FreeBSD",openbsd:"OpenBSD",sunos:"SunOS",win32:"Windows",ohos:"OpenHarmony",android:"Android"},ZL0=[{name:"fedora-release",distros:["Fedora"]},{name:"redhat-release",distros:["Red Hat Linux","Centos"]},{name:"redhat_version",distros:["Red Hat Linux"]},{name:"SuSE-release",distros:["SUSE Linux"]},{name:"lsb-release",distros:["Ubuntu Linux","Arch Linux"]},{name:"debian_version",distros:["Debian"]},{name:"debian_release",distros:["Debian"]},{name:"arch-release",distros:["Arch Linux"]},{name:"gentoo-release",distros:["Gentoo Linux"]},{name:"novell-release",distros:["SUSE Linux"]},{name:"alpine-release",distros:["Alpine Linux"]}],JL0={alpine:(Z)=>Z,arch:(Z)=>b9(/distrib_release=(.*)/,Z),centos:(Z)=>b9(/release ([^ ]+)/,Z),debian:(Z)=>Z,fedora:(Z)=>b9(/release (..)/,Z),mint:(Z)=>b9(/distrib_release=(.*)/,Z),red:(Z)=>b9(/release ([^ ]+)/,Z),suse:(Z)=>b9(/VERSION = (.*)\n/,Z),ubuntu:(Z)=>b9(/distrib_release=(.*)/,Z)};function b9(Z,J){let Q=Z.exec(J);return Q?Q[1]:void 0}async function QL0(){let Z={kernel_version:b0.release(),name:"Mac OS X",version:`10.${Number(b0.release().split(".")[0])-4}`};try{let J=await new Promise((Q,$)=>{dq0("/usr/bin/sw_vers",(X,Y)=>{if(X){$(X);return}Q(Y)})});Z.name=b9(/^ProductName:\s+(.*)$/m,J),Z.version=b9(/^ProductVersion:\s+(.*)$/m,J),Z.build=b9(/^BuildVersion:\s+(.*)$/m,J)}catch{}return Z}function hb(Z){return Z.split(" ")[0].toLowerCase()}async function $L0(){let Z={kernel_version:b0.release(),name:"Linux"};try{let J=await pq0("/etc"),Q=ZL0.find((K)=>J.includes(K.name));if(!Q)return Z;let $=uq0("/etc",Q.name),X=(await lq0($,{encoding:"utf-8"})).toLowerCase(),{distros:Y}=Q;Z.name=Y.find((K)=>X.indexOf(hb(K))>=0)||Y[0];let W=hb(Z.name);Z.version=JL0[W]?.(X)}catch{}return Z}function XL0(){if(process.env.VERCEL)return{"cloud.provider":"vercel","cloud.region":process.env.VERCEL_REGION};else if(process.env.AWS_REGION)return{"cloud.provider":"aws","cloud.region":process.env.AWS_REGION,"cloud.platform":process.env.AWS_EXECUTION_ENV};else if(process.env.GCP_PROJECT)return{"cloud.provider":"gcp"};else if(process.env.ALIYUN_REGION_ID)return{"cloud.provider":"alibaba_cloud","cloud.region":process.env.ALIYUN_REGION_ID};else if(process.env.WEBSITE_SITE_NAME&&process.env.REGION_NAME)return{"cloud.provider":"azure","cloud.region":process.env.REGION_NAME};else if(process.env.IBM_CLOUD_REGION)return{"cloud.provider":"ibm_cloud","cloud.region":process.env.IBM_CLOUD_REGION};else if(process.env.TENCENTCLOUD_REGION)return{"cloud.provider":"tencent_cloud","cloud.region":process.env.TENCENTCLOUD_REGION,"cloud.account.id":process.env.TENCENTCLOUD_APPID,"cloud.availability_zone":process.env.TENCENTCLOUD_ZONE};else if(process.env.NETLIFY)return{"cloud.provider":"netlify"};else if(process.env.FLY_REGION)return{"cloud.provider":"fly.io","cloud.region":process.env.FLY_REGION};else if(process.env.DYNO)return{"cloud.provider":"heroku"};else return}import{createReadStream as YL0}from"node:fs";import{createInterface as WL0}from"node:readline";var KG=new S6(10),bb=new S6(20),KL0=7,zL0="ContextLines",GL0=1000,BL0=1e4;function HL0(Z,J,Q){let $=Z.get(J);if($===void 0)return Z.set(J,Q),Q;return $}function VL0(Z){if(Z.startsWith("node:"))return!0;if(Z.endsWith(".min.js"))return!0;if(Z.endsWith(".min.cjs"))return!0;if(Z.endsWith(".min.mjs"))return!0;if(Z.startsWith("data:"))return!0;return!1}function FL0(Z){if(Z.lineno!==void 0&&Z.lineno>BL0)return!0;if(Z.colno!==void 0&&Z.colno>GL0)return!0;return!1}function wL0(Z,J){let Q=KG.get(Z);if(Q===void 0)return!1;for(let $=J[0];$<=J[1];$++)if(Q[$]===void 0)return!1;return!0}function DL0(Z,J){if(!Z.length)return[];let Q=0,$=Z[0];if(typeof $!=="number")return[];let X=vb($,J),Y=[];while(!0){if(Q===Z.length-1){Y.push(X);break}let W=Z[Q+1];if(typeof W!=="number")break;if(W<=X[1])X[1]=W+J;else Y.push(X),X=vb(W,J);Q++}return Y}function UL0(Z,J,Q){return new Promise(($,X)=>{let Y=YL0(Z),W=WL0({input:Y});function K(){Y.destroy(),$()}let z=0,G=0,H=J[G];if(H===void 0){K();return}let B=H[0],V=H[1];function F(D){bb.set(Z,1),m&&q.error(`Failed to read file: ${Z}. Error: ${D}`),W.close(),W.removeAllListeners(),K()}Y.on("error",F),W.on("error",F),W.on("close",K),W.on("line",(D)=>{if(z++,z=V){if(G===J.length-1){W.close(),W.removeAllListeners();return}G++;let U=J[G];if(U===void 0){W.close(),W.removeAllListeners();return}B=U[0],V=U[1]}})})}async function jL0(Z,J){let Q={};if(J>0&&Z.exception?.values)for(let Y of Z.exception.values){if(!Y.stacktrace?.frames?.length)continue;for(let W=Y.stacktrace.frames.length-1;W>=0;W--){let K=Y.stacktrace.frames[W],z=K?.filename;if(!K||typeof z!=="string"||typeof K.lineno!=="number"||VL0(z)||FL0(K))continue;if(!Q[z])Q[z]=[];Q[z].push(K.lineno)}}let $=Object.keys(Q);if($.length==0)return Z;let X=[];for(let Y of $){if(bb.get(Y))continue;let W=Q[Y];if(!W)continue;W.sort((G,H)=>G-H);let K=DL0(W,J);if(K.every((G)=>wL0(Y,G)))continue;let z=HL0(KG,Y,{});X.push(UL0(Y,K,z))}if(await Promise.all(X).catch(()=>{m&&q.log("Failed to read one or more source files and resolve context lines")}),J>0&&Z.exception?.values){for(let Y of Z.exception.values)if(Y.stacktrace?.frames&&Y.stacktrace.frames.length>0)qL0(Y.stacktrace.frames,J,KG)}return Z}function qL0(Z,J,Q){for(let $ of Z)if($.filename&&$.context_line===void 0&&typeof $.lineno==="number"){let X=Q.get($.filename);if(X===void 0)continue;LL0($.lineno,$,J,X)}}function _b(Z){delete Z.pre_context,delete Z.context_line,delete Z.post_context}function LL0(Z,J,Q,$){if(J.lineno===void 0||$===void 0){m&&q.error("Cannot resolve context for frame with no lineno or file contents");return}J.pre_context=[];for(let Y=xb(Z,Q);Y{let J=Z.frameContextLines!==void 0?Z.frameContextLines:KL0;return{name:zL0,processEvent(Q){return jL0(Q,J)}}},zG=P(OL0);var db="Http",CL0=N(`${db}.sentry`,(Z)=>{return new w8(Z)}),cb=P((Z={})=>{let J={sessions:Z.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:Z.sessionFlushingDelayMS,ignoreRequestBody:Z.ignoreIncomingRequestBody,maxRequestBodySize:Z.maxIncomingRequestBodySize},Q={ignoreIncomingRequests:Z.ignoreIncomingRequests,ignoreStaticAssets:Z.ignoreStaticAssets,ignoreStatusCodes:Z.dropSpansForIncomingRequestStatusCodes},$={breadcrumbs:Z.breadcrumbs,propagateTraceInOutgoingRequests:Z.tracePropagation??!0,ignoreOutgoingRequests:Z.ignoreOutgoingRequests},X=H8(J),Y=V8(Q),W=Z.spans??!1,K=Z.disableIncomingRequestSpans??!1,z=W&&!K;return{name:db,setup(G){if(z)Y.setup(G)},setupOnce(){X.setupOnce(),CL0($)},processEvent(G){return Y.processEvent(G)}}});import{Worker as PL0}from"node:worker_threads";var b$;async function x$(){if(b$===void 0)try{b$=!!(await import("node:inspector")).url()}catch{b$=!1}return b$}var N4="__SENTRY_ERROR_LOCAL_VARIABLES__";function ub(Z,J,Q){let $=0,X=5,Y=0;return setInterval(()=>{if(Y===0){if($>Z){if(X*=2,Q(X),X>86400)X=86400;Y=X}}else if(Y-=1,Y===0)J();$=0},1000).unref(),()=>{$+=1}}function mb(Z){return Z!==void 0&&(Z.length===0||Z==="?"||Z==="")}function g$(Z,J){return Z===J||`Object.${Z}`===J||Z===`Object.${J}`||mb(Z)&&mb(J)}var kL0="LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ2LjAgKGU1ZmRjOWQpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyBlfWZyb20ibm9kZTppbnNwZWN0b3IvcHJvbWlzZXMiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIHR9ZnJvbSJub2RlOndvcmtlcl90aHJlYWRzIjtjb25zdCBuPWdsb2JhbFRoaXMsaT17fTtjb25zdCBvPSJfX1NFTlRSWV9FUlJPUl9MT0NBTF9WQVJJQUJMRVNfXyI7Y29uc3QgYT10O2Z1bmN0aW9uIHMoLi4uZSl7YS5kZWJ1ZyYmZnVuY3Rpb24oZSl7aWYoISgiY29uc29sZSJpbiBuKSlyZXR1cm4gZSgpO2NvbnN0IHQ9bi5jb25zb2xlLG89e30sYT1PYmplY3Qua2V5cyhpKTthLmZvckVhY2goZT0+e2NvbnN0IG49aVtlXTtvW2VdPXRbZV0sdFtlXT1ufSk7dHJ5e3JldHVybiBlKCl9ZmluYWxseXthLmZvckVhY2goZT0+e3RbZV09b1tlXX0pfX0oKCk9PmNvbnNvbGUubG9nKCJbTG9jYWxWYXJpYWJsZXMgV29ya2VyXSIsLi4uZSkpfWFzeW5jIGZ1bmN0aW9uIGMoZSx0LG4saSl7Y29uc3Qgbz1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pO2lbbl09by5yZXN1bHQuZmlsdGVyKGU9PiJsZW5ndGgiIT09ZS5uYW1lJiYhaXNOYU4ocGFyc2VJbnQoZS5uYW1lLDEwKSkpLnNvcnQoKGUsdCk9PnBhcnNlSW50KGUubmFtZSwxMCktcGFyc2VJbnQodC5uYW1lLDEwKSkubWFwKGU9PmUudmFsdWU/LnZhbHVlKX1hc3luYyBmdW5jdGlvbiByKGUsdCxuLGkpe2NvbnN0IG89YXdhaXQgZS5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLHtvYmplY3RJZDp0LG93blByb3BlcnRpZXM6ITB9KTtpW25dPW8ucmVzdWx0Lm1hcChlPT5bZS5uYW1lLGUudmFsdWU/LnZhbHVlXSkucmVkdWNlKChlLFt0LG5dKT0+KGVbdF09bixlKSx7fSl9ZnVuY3Rpb24gdShlLHQpe2UudmFsdWUmJigidmFsdWUiaW4gZS52YWx1ZT92b2lkIDA9PT1lLnZhbHVlLnZhbHVlfHxudWxsPT09ZS52YWx1ZS52YWx1ZT90W2UubmFtZV09YDwke2UudmFsdWUudmFsdWV9PmA6dFtlLm5hbWVdPWUudmFsdWUudmFsdWU6ImRlc2NyaXB0aW9uImluIGUudmFsdWUmJiJmdW5jdGlvbiIhPT1lLnZhbHVlLnR5cGU/dFtlLm5hbWVdPWA8JHtlLnZhbHVlLmRlc2NyaXB0aW9ufT5gOiJ1bmRlZmluZWQiPT09ZS52YWx1ZS50eXBlJiYodFtlLm5hbWVdPSI8dW5kZWZpbmVkPiIpKX1hc3luYyBmdW5jdGlvbiBsKGUsdCl7Y29uc3Qgbj1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pLGk9e307Zm9yKGNvbnN0IHQgb2Ygbi5yZXN1bHQpaWYodC52YWx1ZT8ub2JqZWN0SWQmJiJBcnJheSI9PT10LnZhbHVlLmNsYXNzTmFtZSl7Y29uc3Qgbj10LnZhbHVlLm9iamVjdElkO2F3YWl0IGMoZSxuLHQubmFtZSxpKX1lbHNlIGlmKHQudmFsdWU/Lm9iamVjdElkJiYiT2JqZWN0Ij09PXQudmFsdWUuY2xhc3NOYW1lKXtjb25zdCBuPXQudmFsdWUub2JqZWN0SWQ7YXdhaXQgcihlLG4sdC5uYW1lLGkpfWVsc2UgdC52YWx1ZSYmdSh0LGkpO3JldHVybiBpfWxldCBmOyhhc3luYyBmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IGU7dC5jb25uZWN0VG9NYWluVGhyZWFkKCkscygiQ29ubmVjdGVkIHRvIG1haW4gdGhyZWFkIik7bGV0IG49ITE7dC5vbigiRGVidWdnZXIucmVzdW1lZCIsKCk9PntuPSExfSksdC5vbigiRGVidWdnZXIucGF1c2VkIixlPT57bj0hMCxhc3luYyBmdW5jdGlvbihlLHtyZWFzb246dCxkYXRhOntvYmplY3RJZDpufSxjYWxsRnJhbWVzOml9KXtpZigiZXhjZXB0aW9uIiE9PXQmJiJwcm9taXNlUmVqZWN0aW9uIiE9PXQpcmV0dXJuO2lmKGY/LigpLG51bGw9PW4pcmV0dXJuO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0e3Njb3BlQ2hhaW46bixmdW5jdGlvbk5hbWU6byx0aGlzOnN9PWlbdF0sYz1uLmZpbmQoZT0+ImxvY2FsIj09PWUudHlwZSkscj0iZ2xvYmFsIiE9PXMuY2xhc3NOYW1lJiZzLmNsYXNzTmFtZT9gJHtzLmNsYXNzTmFtZX0uJHtvfWA6bztpZih2b2lkIDA9PT1jPy5vYmplY3Qub2JqZWN0SWQpYVt0XT17ZnVuY3Rpb246cn07ZWxzZXtjb25zdCBuPWF3YWl0IGwoZSxjLm9iamVjdC5vYmplY3RJZCk7YVt0XT17ZnVuY3Rpb246cix2YXJzOm59fX1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24iLHtmdW5jdGlvbkRlY2xhcmF0aW9uOmBmdW5jdGlvbigpIHsgdGhpcy4ke299ID0gdGhpcy4ke299IHx8ICR7SlNPTi5zdHJpbmdpZnkoYSl9OyB9YCxzaWxlbnQ6ITAsb2JqZWN0SWQ6bn0pLGF3YWl0IGUucG9zdCgiUnVudGltZS5yZWxlYXNlT2JqZWN0Iix7b2JqZWN0SWQ6bn0pfSh0LGUucGFyYW1zKS50aGVuKGFzeW5jKCk9PntuJiZhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpfSxhc3luYyBlPT57biYmYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKX0pfSksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTtjb25zdCBpPSExIT09YS5jYXB0dXJlQWxsRXhjZXB0aW9ucztpZihhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIix7c3RhdGU6aT8iYWxsIjoidW5jYXVnaHQifSksaSl7Y29uc3QgZT1hLm1heEV4Y2VwdGlvbnNQZXJTZWNvbmR8fDUwO2Y9ZnVuY3Rpb24oZSx0LG4pe2xldCBpPTAsbz01LGE9MDtyZXR1cm4gc2V0SW50ZXJ2YWwoKCk9PnswPT09YT9pPmUmJihvKj0yLG4obyksbz44NjQwMCYmKG89ODY0MDApLGE9byk6KGEtPTEsMD09PWEmJnQoKSksaT0wfSwxZTMpLnVucmVmKCksKCk9PntpKz0xfX0oZSxhc3luYygpPT57cygiUmF0ZS1saW1pdCBsaWZ0ZWQuIiksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJhbGwifSl9LGFzeW5jIGU9PntzKGBSYXRlLWxpbWl0IGV4Y2VlZGVkLiBEaXNhYmxpbmcgY2FwdHVyaW5nIG9mIGNhdWdodCBleGNlcHRpb25zIGZvciAke2V9IHNlY29uZHMuYCksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJ1bmNhdWdodCJ9KX0pfX0pKCkuY2F0Y2goZT0+e3MoIkZhaWxlZCB0byBzdGFydCBkZWJ1Z2dlciIsZSl9KSxzZXRJbnRlcnZhbCgoKT0+e30sMWU0KTs=";function lb(...Z){q.log("[LocalVariables]",...Z)}var pb=P((Z={})=>{function J(Y,W){let K=(Y.stacktrace?.frames||[]).filter((z)=>z.function!=="new Promise");for(let z=0;z{W.terminate()}),W.once("error",(K)=>{lb("Worker error",K)}),W.once("exit",(K)=>{lb("Worker exit",K)}),W.unref()}return{name:"LocalVariablesAsync",async setup(Y){if(!Y.getOptions().includeLocalVariables)return;if(await x$()){q.warn("Local variables capture has been disabled because the debugger was already enabled");return}let K={...Z,debug:q.isEnabled()};$().then(()=>{try{X(K)}catch(z){q.error("Failed to start worker",z)}},(z)=>{q.error("Failed to start inspector",z)})},processEvent(Y,W){return Q(Y,W)}}});function ib(Z){if(Z===void 0)return;return Z.slice(-10).reduce((J,Q)=>`${J},${Q.function},${Q.lineno},${Q.colno}`,"")}function ML0(Z,J){if(J===void 0)return;return ib(Z(J,1))}function ob(Z){let J=[],Q=!1;function $(W){if(J=[],Q)return;Q=!0,Z(W)}J.push($);function X(W){J.push(W)}function Y(W){let K=J.pop()||$;try{K(W)}catch{$(W)}}return{add:X,next:Y}}class GG{constructor(Z){this._session=Z}static async create(Z){if(Z)return Z;let J=await import("node:inspector");return new GG(new J.Session)}configureAndConnect(Z,J){this._session.connect(),this._session.on("Debugger.paused",(Q)=>{Z(Q,()=>{this._session.post("Debugger.resume")})}),this._session.post("Debugger.enable"),this._session.post("Debugger.setPauseOnExceptions",{state:J?"all":"uncaught"})}setPauseOnExceptions(Z){this._session.post("Debugger.setPauseOnExceptions",{state:Z?"all":"uncaught"})}getLocalVariables(Z,J){this._getProperties(Z,(Q)=>{let{add:$,next:X}=ob(J);for(let Y of Q)if(Y.value?.objectId&&Y.value.className==="Array"){let W=Y.value.objectId;$((K)=>this._unrollArray(W,Y.name,K,X))}else if(Y.value?.objectId&&Y.value.className==="Object"){let W=Y.value.objectId;$((K)=>this._unrollObject(W,Y.name,K,X))}else if(Y.value)$((W)=>this._unrollOther(Y,W,X));X({})})}_getProperties(Z,J){this._session.post("Runtime.getProperties",{objectId:Z,ownProperties:!0},(Q,$)=>{if(Q)J([]);else J($.result)})}_unrollArray(Z,J,Q,$){this._getProperties(Z,(X)=>{Q[J]=X.filter((Y)=>Y.name!=="length"&&!isNaN(parseInt(Y.name,10))).sort((Y,W)=>parseInt(Y.name,10)-parseInt(W.name,10)).map((Y)=>Y.value?.value),$(Q)})}_unrollObject(Z,J,Q,$){this._getProperties(Z,(X)=>{Q[J]=X.map((Y)=>[Y.name,Y.value?.value]).reduce((Y,[W,K])=>{return Y[W]=K,Y},{}),$(Q)})}_unrollOther(Z,J,Q){if(Z.value){if("value"in Z.value)if(Z.value.value===void 0||Z.value.value===null)J[Z.name]=`<${Z.value.value}>`;else J[Z.name]=Z.value.value;else if("description"in Z.value&&Z.value.type!=="function")J[Z.name]=`<${Z.value.description}>`;else if(Z.value.type==="undefined")J[Z.name]=""}Q(J)}}var RL0="LocalVariables",AL0=(Z={},J)=>{let Q=new S6(20),$,X=!1;function Y(G){let H=ib(G.stacktrace?.frames);if(H===void 0)return;let B=Q.remove(H);if(B===void 0)return;let V=(G.stacktrace?.frames||[]).filter((F)=>F.function!=="new Promise");for(let F=0;F= v18.");return}if(await x$()){q.warn("Local variables capture has been disabled because the debugger was already enabled");return}try{let V=await GG.create(J),F=(U,{params:{reason:j,data:L,callFrames:O}},M)=>{if(j!=="exception"&&j!=="promiseRejection"){M();return}$?.();let S=ML0(U,L.description);if(S==null){M();return}let{add:T,next:n}=ob((r)=>{Q.set(S,r),M()});for(let r=0;ro0.type==="local"),IJ=w7.className==="global"||!w7.className?I9:`${w7.className}.${I9}`;if(D7?.object.objectId===void 0)T((o0)=>{o0[r]={function:IJ},n(o0)});else{let o0=D7.object.objectId;T((NJ)=>V.getLocalVariables(o0,(TJ)=>{NJ[r]={function:IJ,vars:TJ},n(NJ)}))}}n([])},D=Z.captureAllExceptions!==!1;if(V.configureAndConnect((U,j)=>F(H.stackParser,U,j),D),D){let U=Z.maxExceptionsPerSecond||50;$=ub(U,()=>{q.log("Local variables rate-limit lifted."),V.setPauseOnExceptions(!0)},(j)=>{q.log(`Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${j} seconds.`),V.setPauseOnExceptions(!1)})}X=!0}catch(V){q.log("The `LocalVariables` integration failed to start.",V)}}return{name:RL0,setupOnce(){K=z()},async processEvent(G){if(await K,X)return W(G);return G},_getCachedFramesCount(){return Q.size},_getFirstCachedFrame(){return Q.values()[0]}}},nb=P(AL0);var BG=(Z={})=>{return t6.major<19?nb(Z):pb(Z)};import{existsSync as IL0,readFileSync as eb}from"node:fs";import{dirname as NL0,join as Zx}from"node:path";function T4(){try{return typeof sb<"u"&&typeof v96<"u"}catch{return!1}}var ab;function rb(){if(T4())return!1;if(WZ>=21||WZ===20&&D4>=6||WZ===18&&D4>=19)return!0;if(!ab)ab=!0,O0(()=>{console.warn(`[Sentry] You are using Node.js v${process.versions.node} in ESM mode ("import syntax"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS ("require() syntax"), or upgrade your Node.js version.`)});return!1}var HG,TL0="Modules",fL0=typeof __SENTRY_SERVER_MODULES__>"u"?{}:__SENTRY_SERVER_MODULES__,EL0=()=>{return{name:TL0,processEvent(Z){return Z.modules={...Z.modules,...tb()},Z},getModules:tb}},VG=EL0;function yL0(){try{return A.cache?Object.keys(A.cache):[]}catch{return[]}}function hL0(){return{...fL0,...vL0(),...T4()?SL0():{}}}function SL0(){let Z=A.main?.paths||[],J=yL0(),Q={},$=new Set;return J.forEach((X)=>{let Y=X,W=()=>{let K=Y;if(Y=NL0(K),!Y||K===Y||$.has(K))return;if(Z.indexOf(Y)<0)return W();let z=Zx(K,"package.json");if($.add(K),!IL0(z))return W();try{let G=JSON.parse(eb(z,"utf8"));Q[G.name]=G.version}catch{}};W()}),Q}function tb(){if(!HG)HG=hL0();return HG}function _L0(){try{let Z=Zx(process.cwd(),"package.json");return JSON.parse(eb(Z,"utf8"))}catch{return{}}}function vL0(){let Z=_L0();return{...Z.dependencies,...Z.devDependencies}}var bL0="NodeFetch",xL0=N(`${bL0}.sentry`,U8,(Z)=>{return Z}),gL0=(Z={})=>{return{name:"NodeFetch",setupOnce(){xL0(Z)}}},Jx=P(gL0);import{isMainThread as cL0}from"worker_threads";var dL0=2000;function f4(Z){O0(()=>{console.error(Z)});let J=f();if(J===void 0){m&&q.warn("No NodeClient was defined, we are exiting the process now."),global.process.exit(1);return}let Q=J.getOptions(),$=Q?.shutdownTimeout&&Q.shutdownTimeout>0?Q.shutdownTimeout:dL0;J.close($).then((X)=>{if(!X)m&&q.warn("We reached the timeout for emptying the request buffer, still exiting now!");global.process.exit(1)},(X)=>{m&&q.error(X)})}var mL0="OnUncaughtException",FG=P((Z={})=>{let J={exitEvenIfOtherHandlersAreRegistered:!1,...Z};return{name:mL0,setup(Q){if(!cL0)return;global.process.on("uncaughtException",uL0(Q,J))}}});function uL0(Z,J){let $=!1,X=!1,Y=!1,W,K=Z.getOptions();return Object.assign((z)=>{let G=f4;if(J.onFatalError)G=J.onFatalError;else if(K.onFatalError)G=K.onFatalError;let B=global.process.listeners("uncaughtException").filter((F)=>{return F.name!=="domainUncaughtExceptionClear"&&F.tag!=="sentry_tracingErrorCallback"&&F._errorHandler!==!0}).length===0,V=J.exitEvenIfOtherHandlersAreRegistered||B;if(!$){if(W=z,$=!0,f()===Z)g(z,{originalException:z,captureContext:{level:"fatal"},mechanism:{handled:!1,type:"auto.node.onuncaughtexception"}});if(!Y&&V)Y=!0,G(z)}else if(V){if(Y)m&&q.warn("uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown"),f4(z);else if(!X)X=!0,setTimeout(()=>{if(!Y)Y=!0,G(W,z)},2000)}},{_errorHandler:!0})}var lL0="OnUnhandledRejection",pL0=[{name:"AI_NoOutputGeneratedError"},{name:"AbortError"}],iL0=(Z={})=>{let J={mode:Z.mode??"warn",ignore:[...pL0,...Z.ignore??[]]};return{name:lL0,setup(Q){global.process.on("unhandledRejection",sL0(Q,J))}}},wG=P(iL0);function oL0(Z){if(typeof Z!=="object"||Z===null)return{name:"",message:String(Z??"")};let J=Z,Q=typeof J.name==="string"?J.name:"",$=typeof J.message==="string"?J.message:String(Z);return{name:Q,message:$}}function nL0(Z,J){let Q=Z.name===void 0||n9(J.name,Z.name,!0),$=Z.message===void 0||n9(J.message,Z.message);return Q&&$}function aL0(Z,J){let Q=oL0(J);return Z.some(($)=>nL0($,Q))}function sL0(Z,J){return function($,X){if(f()!==Z)return;if(aL0(J.ignore??[],$))return;let Y=J.mode==="strict"?"fatal":"error",W=$&&typeof $==="object"?$._sentry_active_span:void 0;(W?(z)=>b7(W,z):(z)=>z())(()=>{g($,{originalException:X,captureContext:{extra:{unhandledPromiseRejection:!0},level:Y},mechanism:{handled:!1,type:"auto.node.onunhandledrejection"}})}),rL0($,J.mode)}}function rL0(Z,J){let Q="This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:";if(J==="warn")O0(()=>{console.warn(Q),console.error(Z&&typeof Z==="object"&&"stack"in Z?Z.stack:Z)});else if(J==="strict")O0(()=>{console.warn(Q)}),f4(Z)}var tL0="ProcessSession",DG=P(()=>{return{name:tL0,setupOnce(){l5(),process.on("beforeExit",()=>{if(l().getSession()?.status!=="ok")i1()})}}});import*as Qx from"node:http";var UG="Spotlight",eL0=(Z={})=>{let J={sidecarUrl:Z.sidecarUrl||"http://localhost:8969/stream"};return{name:UG,setup(Q){try{}catch{}ZO0(Q,J)}}},jG=P(eL0);function ZO0(Z,J){let Q=JO0(J.sidecarUrl);if(!Q)return;let $=0;Z.on("beforeEnvelope",(X)=>{if($>3){q.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests");return}let Y=h5(X);x7(()=>{let W=Qx.request({method:"POST",path:Q.pathname,hostname:Q.hostname,port:Q.port,headers:{"Content-Type":"application/x-sentry-envelope"}},(K)=>{if(K.statusCode&&K.statusCode>=200&&K.statusCode<400)$=0;K.on("data",()=>{}),K.on("end",()=>{}),K.setEncoding("utf8")});W.on("error",()=>{$++,q.warn("[Spotlight] Failed to send envelope to Spotlight Sidecar")}),W.write(Y),W.end()})})}function JO0(Z){try{return new URL(`${Z}`)}catch{q.warn(`[Spotlight] Invalid sidecar URL: ${Z}`);return}}import*as $x from"node:util";var QO0="NodeSystemError";function $O0(Z){if(!(Z instanceof Error))return!1;if(!("errno"in Z)||typeof Z.errno!=="number")return!1;return $x.getSystemErrorMap().has(Z.errno)}var qG=P((Z={})=>{return{name:QO0,processEvent:(J,Q,$)=>{if(!$O0(Q.originalException))return J;let X=Q.originalException,Y={...X};if(!$.getOptions().sendDefaultPii&&Z.includePaths!==!0)delete Y.path,delete Y.dest;J.contexts={...J.contexts,node_system_error:Y};for(let W of J.exception?.values||[])if(W.value){if(X.path&&W.value.includes(X.path))W.value=W.value.replace(`'${X.path}'`,"").trim();if(X.dest&&W.value.includes(X.dest))W.value=W.value.replace(`'${X.dest}'`,"").trim()}return J}}});import*as YO0 from"node:http";import*as WO0 from"node:https";import{Readable as KO0}from"node:stream";import{createGzip as zO0}from"node:zlib";import*as GZ from"node:net";import*as CG from"node:tls";import*as LG from"node:http";var x9=Symbol("AgentBaseInternalState");class OG extends LG.Agent{constructor(Z){super(Z);this[x9]={}}isSecureEndpoint(Z){if(Z){if(typeof Z.secureEndpoint==="boolean")return Z.secureEndpoint;if(typeof Z.protocol==="string")return Z.protocol==="https:"}let{stack:J}=Error();if(typeof J!=="string")return!1;return J.split(` +`).some((Q)=>Q.indexOf("(https.js:")!==-1||Q.indexOf("node:https:")!==-1)}createSocket(Z,J,Q){let $={...J,secureEndpoint:this.isSecureEndpoint(J)};Promise.resolve().then(()=>this.connect(Z,$)).then((X)=>{if(X instanceof LG.Agent)return X.addRequest(Z,$);this[x9].currentSocket=X,super.createSocket(Z,J,Q)},Q)}createConnection(){let Z=this[x9].currentSocket;if(this[x9].currentSocket=void 0,!Z)throw Error("No socket was returned in the `connect()` function");return Z}get defaultPort(){return this[x9].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(Z){if(this[x9])this[x9].defaultPort=Z}get protocol(){return this[x9].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(Z){if(this[x9])this[x9].protocol=Z}}function d$(...Z){q.log("[https-proxy-agent:parse-proxy-response]",...Z)}function Xx(Z){return new Promise((J,Q)=>{let $=0,X=[];function Y(){let H=Z.read();if(H)G(H);else Z.once("readable",Y)}function W(){Z.removeListener("end",K),Z.removeListener("error",z),Z.removeListener("readable",Y)}function K(){W(),d$("onend"),Q(Error("Proxy connection ended before receiving CONNECT response"))}function z(H){W(),d$("onerror %o",H),Q(H)}function G(H){X.push(H),$+=H.length;let B=Buffer.concat(X,$),V=B.indexOf(`\r +\r +`);if(V===-1){d$("have not received end of HTTP headers yet..."),Y();return}let F=B.subarray(0,V).toString("ascii").split(`\r +`),D=F.shift();if(!D)return Z.destroy(),Q(Error("No header received from proxy CONNECT response"));let U=D.split(" "),j=+(U[1]||0),L=U.slice(2).join(" "),O={};for(let M of F){if(!M)continue;let S=M.indexOf(":");if(S===-1)return Z.destroy(),Q(Error(`Invalid header from proxy CONNECT response: "${M}"`));let T=M.slice(0,S).toLowerCase(),n=M.slice(S+1).trimStart(),r=O[T];if(typeof r==="string")O[T]=[r,n];else if(Array.isArray(r))r.push(n);else O[T]=n}d$("got proxy server response: %o %o",D,O),W(),J({connect:{statusCode:j,statusText:L,headers:O},buffered:B})}Z.on("error",z),Z.on("end",K),Y()})}function E4(...Z){q.log("[https-proxy-agent]",...Z)}class c$ extends OG{static __initStatic(){this.protocols=["http","https"]}constructor(Z,J){super(J);this.options={},this.proxy=typeof Z==="string"?new URL(Z):Z,this.proxyHeaders=J?.headers??{},E4("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let Q=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),$=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...J?Yx(J,"headers"):null,host:Q,port:$}}async connect(Z,J){let{proxy:Q}=this;if(!J.host)throw TypeError('No "host" provided');let $;if(Q.protocol==="https:"){E4("Creating `tls.Socket`: %o",this.connectOpts);let B=this.connectOpts.servername||this.connectOpts.host;$=CG.connect({...this.connectOpts,servername:B&&GZ.isIP(B)?void 0:B})}else E4("Creating `net.Socket`: %o",this.connectOpts),$=GZ.connect(this.connectOpts);let X=typeof this.proxyHeaders==="function"?this.proxyHeaders():{...this.proxyHeaders},Y=GZ.isIPv6(J.host)?`[${J.host}]`:J.host,W=`CONNECT ${Y}:${J.port} HTTP/1.1\r +`;if(Q.username||Q.password){let B=`${decodeURIComponent(Q.username)}:${decodeURIComponent(Q.password)}`;X["Proxy-Authorization"]=`Basic ${Buffer.from(B).toString("base64")}`}if(X.Host=`${Y}:${J.port}`,!X["Proxy-Connection"])X["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close";for(let B of Object.keys(X))W+=`${B}: ${X[B]}\r +`;let K=Xx($);$.write(`${W}\r +`);let{connect:z,buffered:G}=await K;if(Z.emit("proxyConnect",z),this.emit("proxyConnect",z,Z),z.statusCode===200){if(Z.once("socket",XO0),J.secureEndpoint){E4("Upgrading socket connection to TLS");let B=J.servername||J.host;return CG.connect({...Yx(J,"host","path","port"),socket:$,servername:GZ.isIP(B)?void 0:B})}return $}$.destroy();let H=new GZ.Socket({writable:!1});return H.readable=!0,Z.once("socket",(B)=>{E4("Replaying proxy buffer for failed request"),B.push(G),B.push(null)}),H}}c$.__initStatic();function XO0(Z){Z.resume()}function Yx(Z,...J){let Q={},$;for($ in Z)if(!J.includes($))Q[$]=Z[$];return Q}var GO0=32768;function BO0(Z){return new KO0({read(){this.push(Z),this.push(null)}})}function PG(Z){let J;try{J=new URL(Z.url)}catch(z){return O0(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),a1(Z,()=>Promise.resolve({}))}let Q=J.protocol==="https:",$=HO0(J,Z.proxy||(Q?process.env.https_proxy:void 0)||process.env.http_proxy),X=Q?WO0:YO0,Y=Z.keepAlive===void 0?!1:Z.keepAlive,W=$?new c$($):new X.Agent({keepAlive:Y,maxSockets:30,timeout:2000}),K=VO0(Z,Z.httpModule??X,W);return a1(Z,K)}function HO0(Z,J){let{no_proxy:Q}=process.env;if(Q?.split(",").some((X)=>Z.host.endsWith(X)||Z.hostname.endsWith(X)))return;else return J}function VO0(Z,J,Q){let{hostname:$,pathname:X,port:Y,protocol:W,search:K}=new URL(Z.url);return function(G){return new Promise((H,B)=>{x7(()=>{let V=BO0(G.body),F={...Z.headers};if(G.body.length>GO0)F["content-encoding"]="gzip",V=V.pipe(zO0());let D=$.startsWith("["),U=J.request({method:"POST",agent:Q,headers:F,hostname:D?$.slice(1,-1):$,path:`${X}${K}`,port:Y,protocol:W,ca:Z.caCerts},(j)=>{j.on("data",()=>{}),j.on("end",()=>{}),j.setEncoding("utf8");let L=j.headers["retry-after"]??null,O=j.headers["x-sentry-rate-limits"]??null;H({statusCode:j.statusCode,headers:{"retry-after":L,"x-sentry-rate-limits":Array.isArray(O)?O[0]||null:O}})});U.on("error",B),V.pipe(U)})})}}function Wx(Z){if(Z===!1)return!1;if(typeof Z==="string")return Z;let J=m7(process.env.SENTRY_SPOTLIGHT,{strict:!0}),Q=J===null&&process.env.SENTRY_SPOTLIGHT?process.env.SENTRY_SPOTLIGHT:void 0;return Z===!0?Q??!0:J??Q}import{posix as FO0,sep as wO0}from"node:path";function Kx(Z){return Z.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function kG(Z=process.argv[1]?jK(process.argv[1]):process.cwd(),J=wO0==="\\"){let Q=J?Kx(Z):Z;return($)=>{if(!$)return;let X=J?Kx($):$,{dir:Y,base:W,ext:K}=FO0.parse(X);if(K===".js"||K===".mjs"||K===".cjs")W=W.slice(0,K.length*-1);let z=decodeURIComponent(W);if(!Y)Y=".";let G=Y.lastIndexOf("/node_modules");if(G>-1)return`${Y.slice(G+14).replace(/\//g,".")}:${z}`;if(Y.startsWith(Q)){let H=Y.slice(Q.length+1).replace(/\//g,".");return H?`${H}:${z}`:z}return z}}function MG(Z){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(d.SENTRY_RELEASE?.id)return d.SENTRY_RELEASE.id;let J=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,Q=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_BUILD_COMMIT||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,$=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return J||Q||$||Z}var RG=DQ(rK(kG()));var Gx=R(C(),1),Bx=R(c(),1);import*as zx from"node:os";import{threadId as DO0,isMainThread as UO0}from"worker_threads";var jO0=60000;class m$ extends yQ{constructor(Z){let J=Z.includeServerName===!1?void 0:Z.serverName||global.process.env.SENTRY_NAME||zx.hostname(),Q={...Z,platform:"node",runtime:Z.runtime||{name:"node",version:global.process.version},serverName:J};if(Z.openTelemetryInstrumentations)Bx.registerInstrumentations({instrumentations:Z.openTelemetryInstrumentations});u7(Q,"node"),q.log(`Initializing Sentry: process: ${process.pid}, thread: ${UO0?"main":`worker-${DO0}`}.`);super(Q);if(this.getOptions().enableLogs){if(this._logOnExitFlushListener=()=>{o1(this)},J)this.on("beforeCaptureLog",($)=>{$.attributes={...$.attributes,"server.address":J}});process.on("beforeExit",this._logOnExitFlushListener)}}get tracer(){if(this._tracer)return this._tracer;let Z="@sentry/node",J=a,Q=Gx.trace.getTracer(Z,J);return this._tracer=Q,Q}async flush(Z){if(await this.traceProvider?.forceFlush(),this.getOptions().sendClientReports)this._flushOutcomes();return super.flush(Z)}async close(Z){if(this._clientReportInterval)clearInterval(this._clientReportInterval);if(this._clientReportOnExitFlushListener)process.off("beforeExit",this._clientReportOnExitFlushListener);if(this._logOnExitFlushListener)process.off("beforeExit",this._logOnExitFlushListener);let J=await super.close(Z);if(this.traceProvider)await this.traceProvider.shutdown();return J}startClientReportTracking(){let Z=this.getOptions();if(Z.sendClientReports)this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{m&&q.log("Flushing client reports based on interval."),this._flushOutcomes()},Z.clientReportFlushInterval??jO0).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener)}_setupIntegrations(){HK(),super._setupIntegrations()}_getTraceInfoFromScope(Z){if(!Z)return[void 0,void 0];return Cb(this,Z)}}var Hx=R(uY(),1);import*as Vx from"module";function AG(){if(!rb())return;if(!d._sentryEsmLoaderHookRegistered){d._sentryEsmLoaderHookRegistered=!0;try{let{addHookMessagePort:Z}=Hx.createAddHookMessageChannel();Vx.register("import-in-the-middle/hook.mjs",import.meta.url,{data:{addHookMessagePort:Z,include:[]},transferList:[Z]})}catch(Z){q.warn("Failed to register 'import-in-the-middle' hook",Z)}}}function u$(){return[s5(),a5(),r5(),t5(),qG(),CK(),e5(),cb(),Jx(),FG(),wG(),zG(),BG(),WG(),YG(),DG(),VG()]}function IG(Z={}){return qO0(Z,u$)}function qO0(Z={},J){let Q=LO0(Z,J);if(Q.debug===!0)if(m)q.enable();else O0(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")});if(Q.registerEsmLoaderHooks!==!1)AG();if(Mb(),t().update(Q.initialScope),Q.spotlight&&!Q.integrations.some(({name:Y})=>Y===UG))Q.integrations.push(jG({sidecarUrl:typeof Q.spotlight==="string"?Q.spotlight:void 0}));u7(Q,"node-core");let X=new m$(Q);if(t().setClient(X),X.init(),q.log(`SDK initialized from ${T4()?"CommonJS":"ESM"}`),X.startClientReportTracking(),PO0(),zb(X),kb(X),process.env.VERCEL)process.on("SIGTERM",async()=>{await X.flush(200)});return X}function l$(){if(!m)return;let Z=Vb(),J=["SentryContextManager","SentryPropagator"];if(C0())J.push("SentrySpanProcessor");for(let Q of J)if(!Z.includes(Q))q.error(`You have to set up the ${Q}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);if(!Z.includes("SentrySampler"))q.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}function LO0(Z,J){let Q=OO0(Z.release),$=Wx(Z.spotlight),X=CO0(Z.tracesSampleRate),Y={...Z,dsn:Z.dsn??process.env.SENTRY_DSN,environment:Z.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:Z.sendClientReports??!0,transport:Z.transport??PG,stackParser:DW(Z.stackParser||RG),release:Q,tracesSampleRate:X,spotlight:$,debug:m7(Z.debug??process.env.SENTRY_DEBUG)},W=Z.integrations,K=Z.defaultIntegrations??J(Y);return{...Y,integrations:aW({defaultIntegrations:K,integrations:W})}}function OO0(Z){if(Z!==void 0)return Z;let J=MG();if(J!==void 0)return J;return}function CO0(Z){if(Z!==void 0)return Z;let J=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!J)return;let Q=parseFloat(J);return isFinite(Q)?Q:void 0}function PO0(){if(m7(process.env.SENTRY_USE_ENVIRONMENT)!==!1){let Z=process.env.SENTRY_TRACE,J=process.env.SENTRY_BAGGAGE,Q=M5(Z,J);t().setPropagationContext(Q)}}function $0(Z,J){Z.setAttribute(_,J)}function y4(Z){let J=Z.protocol||"",Q=Z.hostname||Z.host||"",$=!Z.port||Z.port===80||Z.port===443||/^(.*):(\d+)$/.test(Q)?"":`:${Z.port}`,X=Z.path?Z.path:"/";return`${J}//${Q}${$}${X}`}var NG="Http",Fx="@opentelemetry_sentry-patched/instrumentation-http",p$=t6.major===22&&t6.minor>=12||t6.major===23&&t6.minor>=2||t6.major>=24,dO0=N(`${NG}.sentry`,(Z)=>{return new w8(Z)}),cO0=N(NG,(Z)=>{let J=new Dx.HttpInstrumentation({...Z,disableIncomingRequestInstrumentation:!0});try{J._diag=wx.diag.createComponentLogger({namespace:Fx}),J.instrumentationName=Fx}catch{}try{let Q={get:()=>!1,set:()=>{}};Object.defineProperty(J,"_httpPatched",Q),Object.defineProperty(J,"_httpsPatched",Q)}catch{}return J});function mO0(Z,J={}){if(typeof Z.spans==="boolean")return Z.spans;if(J.skipOpenTelemetrySetup)return!1;if(!C0(J)&&p$)return!1;return!0}var Ux=P((Z={})=>{let J=Z.spans??!0,Q=Z.disableIncomingRequestSpans,$={sessions:Z.trackIncomingRequestsAsSessions,sessionFlushingDelayMS:Z.sessionFlushingDelayMS,ignoreRequestBody:Z.ignoreIncomingRequestBody,maxRequestBodySize:Z.maxIncomingRequestBodySize},X={ignoreIncomingRequests:Z.ignoreIncomingRequests,ignoreStaticAssets:Z.ignoreStaticAssets,ignoreStatusCodes:Z.dropSpansForIncomingRequestStatusCodes,instrumentation:Z.instrumentation,onSpanCreated:Z.incomingRequestSpanHook},Y=H8($),W=V8(X),K=J&&!Q;return{name:NG,setup(z){let G=z.getOptions();if(K&&C0(G))W.setup(z)},setupOnce(){let z=f()?.getOptions()||{},G=mO0(Z,z);Y.setupOnce();let H={breadcrumbs:Z.breadcrumbs,propagateTraceInOutgoingRequests:typeof Z.tracePropagation==="boolean"?Z.tracePropagation:p$||!G,createSpansForOutgoingRequests:p$,spans:Z.spans,ignoreOutgoingRequests:Z.ignoreOutgoingRequests,outgoingRequestHook:(B,V)=>{let F=y4(V);if(F.startsWith("data:")){let D=e1(F);B.setAttribute("http.url",D),B.setAttribute(fZ,D),B.updateName(`${V.method||"GET"} ${D}`)}Z.instrumentation?.requestHook?.(B,V)},outgoingResponseHook:Z.instrumentation?.responseHook,outgoingRequestApplyCustomAttributes:Z.instrumentation?.applyCustomAttributesOnSpan};if(dO0(H),G){let B=uO0(Z);cO0(B)}},processEvent(z){return W.processEvent(z)}}});function uO0(Z={}){return{disableOutgoingRequestInstrumentation:p$,ignoreOutgoingRequestHook:(Q)=>{let $=y4(Q);if(!$)return!1;let X=Z.ignoreOutgoingRequests;if(X?.($,Q))return!0;return!1},requireParentforOutgoingSpans:!1,requestHook:(Q,$)=>{$0(Q,"auto.http.otel.http");let X=y4($);if(X.startsWith("data:")){let Y=e1(X);Q.setAttribute("http.url",Y),Q.setAttribute(fZ,Y),Q.updateName(`${$.method||"GET"} ${Y}`)}Z.instrumentation?.requestHook?.(Q,$)},responseHook:(Q,$)=>{Z.instrumentation?.responseHook?.(Q,$)},applyCustomAttributesOnSpan:(Q,$,X)=>{Z.instrumentation?.applyCustomAttributesOnSpan?.(Q,$,X)}}}var Ix=R(Rx(),1);var Nx="NodeFetch",nO0=N(Nx,Ix.UndiciInstrumentation,(Z)=>{return tO0(Z)}),aO0=N(`${Nx}.sentry`,U8,(Z)=>{return Z}),sO0=(Z={})=>{return{name:"NodeFetch",setupOnce(){if(rO0(Z,f()?.getOptions()))nO0(Z);aO0(Z)}}},Tx=P(sO0);function Ax(Z,J="/"){let Q=`${Z}`;if(Q.endsWith("/")&&J.startsWith("/"))return`${Q}${J.slice(1)}`;if(!Q.endsWith("/")&&!J.startsWith("/"))return`${Q}/${J}`;return`${Q}${J}`}function rO0(Z,J={}){return typeof Z.spans==="boolean"?Z.spans:!J.skipOpenTelemetrySetup&&C0(J)}function tO0(Z={}){return{requireParentforSpans:!1,ignoreRequestHook:(Q)=>{let $=Ax(Q.origin,Q.path),X=Z.ignoreOutgoingRequests;return!!(X&&$&&X($))},startSpanHook:(Q)=>{let $=Ax(Q.origin,Q.path);if($.startsWith("data:")){let X=e1($);return{[_]:"auto.http.otel.node_fetch","http.url":X,[fZ]:X,[n6]:`${Q.method||"GET"} ${X}`}}return{[_]:"auto.http.otel.node_fetch"}},requestHook:Z.requestHook,responseHook:Z.responseHook,headersToSpanAttributes:Z.headersToSpanAttributes}}var rx=R(sx(),1);var f0=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;var tx="Express";function kC0(Z){$0(Z,"auto.http.otel.express");let J=h(Z).data,Q=J["express.type"];if(Q)Z.setAttribute(b,`${Q}.express`);let $=J["express.name"];if(typeof $==="string")Z.updateName($)}function MC0(Z,J){if(l()===A6())return f0&&q.warn("Isolation scope is still default isolation scope - skipping setting transactionName"),J;if(Z.layerType==="request_handler"){let Q=Z.request,$=Q.method?Q.method.toUpperCase():"GET";l().setTransactionName(`${$} ${Z.route}`)}return J}var ex=N(tx,()=>new rx.ExpressInstrumentation({requestHook:(Z)=>kC0(Z),spanNameHook:(Z,J)=>MC0(Z,J)})),RC0=()=>{return{name:tx,setupOnce(){ex()}}},Zg=P(RC0);var xc=R(fc(),1);import*as RB from"node:diagnostics_channel";var P9=R(C(),1),B3=R(Q0(),1),z1=R(c(),1),_c=R(s(),1);var BZ;(function(Z){Z.FASTIFY_NAME="fastify.name";let Q="fastify.type";Z.FASTIFY_TYPE=Q;let $="hook.name";Z.HOOK_NAME=$;let X="plugin.name";Z.PLUGIN_NAME=X})(BZ||(BZ={}));var a4;(function(Z){Z.MIDDLEWARE="middleware";let Q="request_handler";Z.REQUEST_HANDLER=Q})(a4||(a4={}));var s4;(function(Z){Z.MIDDLEWARE="middleware";let Q="request handler";Z.REQUEST_HANDLER=Q})(s4||(s4={}));var yc=R(C(),1);var r4=Symbol("opentelemetry.instrumentation.fastify.request_active_span");function kB(Z,J,Q,$={}){let X=J.startSpan(Q,{attributes:$}),Y=Z[r4]||[];return Y.push(X),Object.defineProperty(Z,r4,{enumerable:!1,configurable:!0,value:Y}),X}function G3(Z,J){let Q=Z[r4]||[];if(!Q.length)return;Q.forEach(($)=>{if(J)$.setStatus({code:yc.SpanStatusCode.ERROR,message:J.message}),$.recordException(J);$.end()}),delete Z[r4]}function hc(Z,J,Q){let $,X=void 0;try{if(X=Z(),Ec(X))X.then((Y)=>J(void 0,Y),(Y)=>J(Y))}catch(Y){$=Y}finally{if(!Ec(X)){if(J($,X),$)throw $}return X}}function Ec(Z){return typeof Z==="object"&&Z&&typeof Object.getOwnPropertyDescriptor(Z,"then")?.value==="function"||!1}var uk0="0.1.0",lk0="@sentry/instrumentation-fastify-v3",Sc="anonymous",pk0=new Set(["onTimeout","onRequest","preParsing","preValidation","preSerialization","preHandler","onSend","onResponse","onError"]);class MB extends z1.InstrumentationBase{constructor(Z={}){super(lk0,uk0,Z)}init(){return[new z1.InstrumentationNodeModuleDefinition("fastify",[">=3.0.0 <4"],(Z)=>{return this._patchConstructor(Z)})]}_hookOnRequest(){let Z=this;return function(Q,$,X){if(!Z.isEnabled())return X();Z._wrap($,"send",Z._patchSend());let Y=Q,W=B3.getRPCMetadata(P9.context.active()),K=Y.routeOptions?Y.routeOptions.url:Q.routerPath;if(K&&W?.type===B3.RPCType.HTTP)W.route=K;let z=Q.method||"GET";l().setTransactionName(`${z} ${K}`),X()}}_wrapHandler(Z,J,Q,$){let X=this;return this._diag.debug("Patching fastify route.handler function"),function(...Y){if(!X.isEnabled())return Q.apply(this,Y);let W=Q.name||Z||Sc,K=`${s4.MIDDLEWARE} - ${W}`,z=Y[1],G=kB(z,X.tracer,K,{[BZ.FASTIFY_TYPE]:a4.MIDDLEWARE,[BZ.PLUGIN_NAME]:Z,[BZ.HOOK_NAME]:J}),H=$&&Y[Y.length-1];if(H)Y[Y.length-1]=function(...B){G3(z),H.apply(this,B)};return P9.context.with(P9.trace.setSpan(P9.context.active(),G),()=>{return hc(()=>{return Q.apply(this,Y)},(B)=>{if(B instanceof Error)G.setStatus({code:P9.SpanStatusCode.ERROR,message:B.message}),G.recordException(B);if(!$)G3(z)})})}}_wrapAddHook(){let Z=this;return this._diag.debug("Patching fastify server.addHook function"),function(J){return function(...$){let X=$[0],Y=$[1],W=this.pluginName;if(!pk0.has(X))return J.apply(this,$);let K=typeof $[$.length-1]==="function"&&Y.constructor.name!=="AsyncFunction";return J.apply(this,[X,Z._wrapHandler(W,X,Y,K)])}}}_patchConstructor(Z){let J=this;function Q(...$){let X=Z.fastify.apply(this,$);return X.addHook("onRequest",J._hookOnRequest()),X.addHook("preHandler",J._hookPreHandler()),ik0(),J._wrap(X,"addHook",J._wrapAddHook()),X}if(Z.errorCodes!==void 0)Q.errorCodes=Z.errorCodes;return Q.fastify=Q,Q.default=Q,Q}_patchSend(){let Z=this;return this._diag.debug("Patching fastify reply.send function"),function(Q){return function(...X){let Y=X[0];if(!Z.isEnabled())return Q.apply(this,X);return z1.safeExecuteInTheMiddle(()=>{return Q.apply(this,X)},(W)=>{if(!W&&Y instanceof Error)W=Y;G3(this,W)})}}}_hookPreHandler(){let Z=this;return this._diag.debug("Patching fastify preHandler function"),function(Q,$,X){if(!Z.isEnabled())return X();let Y=Q,W=Y.routeOptions?.handler||Y.context?.handler,K=W?.name.startsWith("bound ")?W.name.substring(6):W?.name,z=`${s4.REQUEST_HANDLER} - ${K||this.pluginName||Sc}`,G={[BZ.PLUGIN_NAME]:this.pluginName,[BZ.FASTIFY_TYPE]:a4.REQUEST_HANDLER,[_c.SEMATTRS_HTTP_ROUTE]:Y.routeOptions?Y.routeOptions.url:Q.routerPath};if(K)G[BZ.FASTIFY_NAME]=K;let H=kB($,Z.tracer,z,G);vc(H);let{requestHook:B}=Z.getConfig();if(B)z1.safeExecuteInTheMiddle(()=>B(H,{request:Q}),(V)=>{if(V)Z._diag.error("request hook failed",V)},!0);return P9.context.with(P9.trace.setSpan(P9.context.active(),H),()=>{X()})}}}function ik0(){let Z=f();if(Z)Z.on("spanStart",(J)=>{vc(J)})}function vc(Z){let J=h(Z).data,Q=J["fastify.type"];if(J[b]||!Q)return;Z.setAttributes({[_]:"auto.http.otel.fastify",[b]:`${Q}.fastify`});let $=J["fastify.name"]||J["plugin.name"]||J["hook.name"];if(typeof $==="string"){let X=$.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");Z.updateName(X)}}var H3="Fastify",gc=N(`${H3}.v3`,()=>new MB);function ok0(){let Z=f();if(!Z)return;else return Z.getIntegrationByName(H3)}function bc(Z,J,Q,$){let X=ok0()?.getShouldHandleError()||mc;if($==="diagnostics-channel")this.diagnosticsChannelExists=!0;if(this.diagnosticsChannelExists&&$==="onError-hook"){f0&&q.warn("Fastify error handler was already registered via diagnostics channel.","You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.");return}if(X(Z,J,Q))g(Z,{mechanism:{handled:!1,type:"auto.function.fastify"}})}var dc=N(`${H3}.v5`,()=>{let Z=new xc.FastifyOtelInstrumentation,J=Z.plugin();return RB.subscribe("fastify.initialization",(Q)=>{let $=Q.fastify;$?.register(J).after((X)=>{if(X)f0&&q.error("Failed to setup Fastify instrumentation",X);else if(ak0(),$)sk0($)})}),RB.subscribe("tracing:fastify.request.handler:error",(Q)=>{let{error:$,request:X,reply:Y}=Q;bc.call(bc,$,X,Y,"diagnostics-channel")}),Z}),nk0=({shouldHandleError:Z})=>{let J;return{name:H3,setupOnce(){J=Z||mc,gc(),dc()},getShouldHandleError(){return J},setShouldHandleError(Q){J=Q}}},cc=P((Z={})=>nk0(Z));function mc(Z,J,Q){let $=Q.statusCode;return $>=500||$<=299}function uc(Z){let J=h(Z),Q=J.description,$=J.data,X=$["fastify.type"],Y=X==="hook",W=X===Q?.startsWith("handler -"),K=Q==="request"||X==="request-handler";if($[b]||!W&&!K&&!Y)return;let z=Y?"hook":W?"middleware":K?"request_handler":"";Z.setAttributes({[_]:"auto.http.otel.fastify",[b]:`${z}.fastify`});let G=$["fastify.name"]||$["plugin.name"]||$["hook.name"];if(typeof G==="string"){let H=G.replace(/^fastify -> /,"").replace(/^@fastify\/otel -> /,"");Z.updateName(H)}}function ak0(){let Z=f();if(Z)Z.on("spanStart",(J)=>{uc(J)})}function sk0(Z){Z.addHook("onRequest",async(J,Q)=>{if(J.opentelemetry){let{span:Y}=J.opentelemetry();if(Y)uc(Y)}let $=J.routeOptions?.url,X=J.method||"GET";l().setTransactionName(`${X} ${$}`)})}var Am=R(C(),1),Im=R(Rm(),1);var Nm="Graphql",Tm=N(Nm,Im.GraphQLInstrumentation,(Z)=>{let J=Em(Z);return{...J,responseHook(Q,$){if($0(Q,"auto.graphql.otel.graphql"),$.errors?.length&&!h(Q).status)Q.setStatus({code:Am.SpanStatusCode.ERROR});let Y=h(Q).data,W=Y["graphql.operation.type"],K=Y["graphql.operation.name"];if(J.useOperationNameForRootSpan&&W){let z=H0(Q),H=h(z).data[M8]||[],B=K?`${W} ${K}`:`${W}`;if(Array.isArray(H))H.push(B),z.setAttribute(M8,H);else if(typeof H==="string")z.setAttribute(M8,[H,B]);else z.setAttribute(M8,B);if(!h(z).data["original-description"])z.setAttribute("original-description",h(z).description);z.updateName(`${h(z).data["original-description"]} (${AM0(H)})`)}}}}),RM0=(Z={})=>{return{name:Nm,setupOnce(){Tm(Em(Z))}}},fm=P(RM0);function Em(Z){return{ignoreResolveSpans:!0,ignoreTrivialResolveSpans:!0,useOperationNameForRootSpan:!0,...Z}}function AM0(Z){if(Array.isArray(Z)){let J=Z.slice().sort();if(J.length<=5)return J.join(", ");else return`${J.slice(0,5).join(", ")}, +${J.length-5}`}return`${Z}`}var Zu=R(em(),1);var Ju="Kafka",Qu=N(Ju,()=>new Zu.KafkaJsInstrumentation({consumerHook(Z){$0(Z,"auto.kafkajs.otel.consumer")},producerHook(Z){$0(Z,"auto.kafkajs.otel.producer")}})),iM0=()=>{return{name:Ju,setupOnce(){Qu()}}},$u=P(iM0);var Du=R(wu(),1);var Uu="LruMemoizer",ju=N(Uu,()=>new Du.LruMemoizerInstrumentation),sM0=()=>{return{name:Uu,setupOnce(){ju()}}},qu=P(sM0);var _u=R(Su(),1);var vu="Mongo",bu=N(vu,()=>new _u.MongoDBInstrumentation({dbStatementSerializer:FR0,responseHook(Z){$0(Z,"auto.db.otel.mongo")}}));function FR0(Z){let J=xB(Z);return JSON.stringify(J)}function xB(Z){if(Array.isArray(Z))return Z.map((J)=>xB(J));if(wR0(Z)){let J={};return Object.entries(Z).map(([Q,$])=>[Q,xB($)]).reduce((Q,$)=>{if(UR0($))Q[$[0]]=$[1];return Q},J)}return"?"}function wR0(Z){return typeof Z==="object"&&Z!==null&&!DR0(Z)}function DR0(Z){let J=!1;if(typeof Buffer<"u")J=Buffer.isBuffer(Z);return J}function UR0(Z){return Array.isArray(Z)}var jR0=()=>{return{name:vu,setupOnce(){bu()}}},xu=P(jR0);var Xl=R($l(),1);var Yl="Mongoose",Wl=N(Yl,()=>new Xl.MongooseInstrumentation({responseHook(Z){$0(Z,"auto.db.otel.mongoose")}})),xR0=()=>{return{name:Yl,setupOnce(){Wl()}}},Kl=P(xR0);var Rl=R(Ml(),1);var Al="Mysql",Il=N(Al,()=>new Rl.MySQLInstrumentation({})),BA0=()=>{return{name:Al,setupOnce(){Il()}}},Nl=P(BA0);var ol=R(il(),1);var nl="Mysql2",al=N(nl,()=>new ol.MySQL2Instrumentation({responseHook(Z){$0(Z,"auto.db.otel.mysql2")}})),xA0=()=>{return{name:nl,setupOnce(){al()}}},sl=P(xA0);var np=R(Dp(),1),ap=R(up(),1);var CI0=["get","set","setex"],WH=["get","mget"],PI0=["set","setex"];function zJ(Z,J){return Z.includes(J.toLowerCase())}function KH(Z){if(zJ(WH,Z))return"cache.get";else if(zJ(PI0,Z))return"cache.put";else return}function kI0(Z,J){return J.some((Q)=>Z.startsWith(Q))}function pp(Z,J){try{if(J.length===0)return;let Q=(X)=>{if(typeof X==="string"||typeof X==="number"||Buffer.isBuffer(X))return[X.toString()];else if(Array.isArray(X))return lp(X.map((Y)=>Q(Y)));else return[""]},$=J[0];if(zJ(CI0,Z)&&$!=null)return Q($);return lp(J.map((X)=>Q(X)))}catch{return}}function ip(Z,J,Q){if(!KH(Z))return!1;for(let $ of J)if(kI0($,Q))return!0;return!1}function op(Z){let J=(Q)=>{try{if(Buffer.isBuffer(Q))return Q.byteLength;else if(typeof Q==="string")return Q.length;else if(typeof Q==="number")return Q.toString().length;else if(Q===null||Q===void 0)return 0;return JSON.stringify(Q).length}catch{return}};return Array.isArray(Z)?Z.reduce((Q,$)=>{let X=J($);return typeof X==="number"?Q!==void 0?Q+X:X:Q},0):J(Z)}function lp(Z){let J=[],Q=($)=>{$.forEach((X)=>{if(Array.isArray(X))Q(X);else J.push(X)})};return Q(Z),J}var R3="Redis",GJ={},sp=(Z,J,Q,$)=>{Z.setAttribute(_,"auto.db.otel.redis");let X=pp(J,Q),Y=KH(J);if(!X||!Y||!GJ.cachePrefixes||!ip(J,X,GJ.cachePrefixes))return;let W=h(Z).data["net.peer.name"],K=h(Z).data["net.peer.port"];if(K&&W)Z.setAttributes({"network.peer.address":W,"network.peer.port":K});let z=op($);if(z)Z.setAttribute(TW,z);if(zJ(WH,J)&&z!==void 0)Z.setAttribute(IW,z>0);Z.setAttributes({[b]:Y,[NW]:X});let G=X.join(", ");Z.updateName(GJ.maxCacheKeyLength?AZ(G,GJ.maxCacheKeyLength):G)},MI0=N(`${R3}.IORedis`,()=>{return new np.IORedisInstrumentation({responseHook:sp})}),RI0=N(`${R3}.Redis`,()=>{return new ap.RedisInstrumentation({responseHook:sp})}),rp=Object.assign(()=>{MI0(),RI0()},{id:R3}),AI0=(Z={})=>{return{name:R3,setupOnce(){GJ=Z,rp()}}},tp=P(AI0);var Ni=R(Ii(),1);var Ti="Postgres",fi=N(Ti,Ni.PgInstrumentation,(Z)=>({requireParentSpan:!0,requestHook(J){$0(J,"auto.db.otel.postgres")},ignoreConnectSpans:Z?.ignoreConnectSpans??!1})),qN0=(Z)=>{return{name:Ti,setupOnce(){fi(Z)}}},Ei=P(qN0);var b8=R(C(),1),W7=R(c(),1),R9=R(s(),1);var wH="PostgresJs",yi=[">=3.0.0 <4"],LN0=/^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i,ON0=Symbol.for("sentry.query.from.instrumented.sql"),hi=N(wH,(Z)=>new Si({requireParentSpan:Z?.requireParentSpan??!0,requestHook:Z?.requestHook}));class Si extends W7.InstrumentationBase{constructor(Z){super("sentry-postgres-js",a,Z)}init(){let Z=new W7.InstrumentationNodeModuleDefinition("postgres",yi,(J)=>{try{return this._patchPostgres(J)}catch(Q){return f0&&q.error("Failed to patch postgres module:",Q),J}},(J)=>J);return["src","cf/src","cjs/src"].forEach((J)=>{Z.files.push(new W7.InstrumentationNodeModuleFile(`postgres/${J}/query.js`,yi,this._patchQueryPrototype.bind(this),this._unpatchQueryPrototype.bind(this)))}),Z}_patchPostgres(Z){let J=typeof Z==="function",Q=J?Z:Z.default;if(typeof Q!=="function")return f0&&q.warn("postgres module does not export a function. Skipping instrumentation."),Z;let $=this,X=function(...Y){let W=Reflect.construct(Q,Y);if(!W||typeof W!=="function")return f0&&q.warn("postgres() did not return a valid instance"),W;let K=$.getConfig();return OK(W,{requireParentSpan:K.requireParentSpan,requestHook:K.requestHook})};Object.setPrototypeOf(X,Q),Object.setPrototypeOf(X.prototype,Q.prototype);for(let Y of Object.getOwnPropertyNames(Q))if(!["length","name","prototype"].includes(Y)){let W=Object.getOwnPropertyDescriptor(Q,Y);if(W)Object.defineProperty(X,Y,W)}if(J)return X;else return G4(Z,"default",X),Z}_shouldCreateSpans(){let Z=this.getConfig();return b8.trace.getSpan(b8.context.active())!==void 0||!Z.requireParentSpan}_setOperationName(Z,J,Q){if(Q){Z.setAttribute(R9.ATTR_DB_OPERATION_NAME,Q);return}let $=J?.match(LN0);if($?.[1])Z.setAttribute(R9.ATTR_DB_OPERATION_NAME,$[1].toUpperCase())}_reconstructQuery(Z){if(!Z?.length)return;if(Z.length===1)return Z[0]||void 0;return Z.reduce((J,Q,$)=>$===0?Q:`${J}$${$}${Q}`,"")}_sanitizeSqlQuery(Z){if(!Z)return"Unknown SQL Query";return Z.replace(/--.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/;\s*$/,"").replace(/\s+/g," ").trim().replace(/\bX'[0-9A-Fa-f]*'/gi,"?").replace(/\bB'[01]*'/gi,"?").replace(/'(?:[^']|'')*'/g,"?").replace(/\b0x[0-9A-Fa-f]+/gi,"?").replace(/\b(?:TRUE|FALSE)\b/gi,"?").replace(/-?\b\d+\.?\d*[eE][+-]?\d+\b/g,"?").replace(/-?\b\d+\.\d+\b/g,"?").replace(/-?\.\d+\b/g,"?").replace(/(?{$0(W,"auto.db.postgresjs"),W.setAttributes({[R9.ATTR_DB_SYSTEM_NAME]:"postgres",[R9.ATTR_DB_QUERY_TEXT]:Y});let K=J.getConfig(),{requestHook:z}=K;if(z)W7.safeExecuteInTheMiddle(()=>z(W,Y,void 0),(B)=>{if(B)W.setAttribute("sentry.hook.error","requestHook failed"),f0&&q.error(`Error in requestHook for ${wH} integration:`,B)},!0);let G=this.resolve;this.resolve=new Proxy(G,{apply:(B,V,F)=>{try{J._setOperationName(W,Y,F?.[0]?.command),W.end()}catch(D){f0&&q.error("Error ending span in resolve callback:",D)}return Reflect.apply(B,V,F)}});let H=this.reject;this.reject=new Proxy(H,{apply:(B,V,F)=>{try{W.setStatus({code:i,message:F?.[0]?.message||"unknown_error"}),W.setAttribute(R9.ATTR_DB_RESPONSE_STATUS_CODE,F?.[0]?.code||"unknown"),W.setAttribute(R9.ATTR_ERROR_TYPE,F?.[0]?.name||"unknown"),J._setOperationName(W,Y),W.end()}catch(D){f0&&q.error("Error ending span in reject callback:",D)}return Reflect.apply(B,V,F)}});try{return Q.apply(this,$)}catch(B){throw W.setStatus({code:i,message:B instanceof Error?B.message:"unknown_error"}),W.end(),B}})},Z.Query.prototype.handle.__sentry_original__=Q,Z}_unpatchQueryPrototype(Z){if(Z.Query.prototype.handle.__sentry_original__)Z.Query.prototype.handle=Z.Query.prototype.handle.__sentry_original__;return Z}}var CN0=(Z)=>{return{name:wH,setupOnce(){hi(Z)}}},_i=P(CN0);var z9=R(C(),1);var Rn=R(C(),1),x3=R(Pn(),1),K7=R(C(),1);var Uf0={name:"@prisma/instrumentation-contract",version:"7.4.2",description:"Shared types and utilities for Prisma instrumentation",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{require:{types:"./dist/index.d.ts",default:"./dist/index.js"},import:{types:"./dist/index.d.mts",default:"./dist/index.mjs"}}},license:"Apache-2.0",homepage:"https://www.prisma.io",repository:{type:"git",url:"https://github.com/prisma/prisma.git",directory:"packages/instrumentation-contract"},bugs:"https://github.com/prisma/prisma/issues",scripts:{dev:"DEV=true tsx helpers/build.ts",build:"tsx helpers/build.ts",prepublishOnly:"pnpm run build",test:"vitest run"},files:["dist"],sideEffects:!1,devDependencies:{"@opentelemetry/api":"1.9.0"},peerDependencies:{"@opentelemetry/api":"^1.8"}},jf0=Uf0.version.split(".")[0],pH="PRISMA_INSTRUMENTATION",iH=`V${jf0}_PRISMA_INSTRUMENTATION`,d8=globalThis;function qf0(){let Z=d8[iH];if(Z?.helper)return Z.helper;return d8[pH]?.helper}function Lf0(Z){let J={helper:Z};d8[iH]=J,d8[pH]=J}function Of0(){delete d8[iH],delete d8[pH]}var Cf0=process.env.PRISMA_SHOW_ALL_TRACES==="true",Pf0="00-10-10-00";function kf0(Z){switch(Z){case"client":return K7.SpanKind.CLIENT;case"internal":default:return K7.SpanKind.INTERNAL}}var Mf0=class{tracerProvider;ignoreSpanTypes;constructor({tracerProvider:Z,ignoreSpanTypes:J}){this.tracerProvider=Z,this.ignoreSpanTypes=J}isEnabled(){return!0}getTraceParent(Z){let J=K7.trace.getSpanContext(Z??K7.context.active());if(J)return`00-${J.traceId}-${J.spanId}-0${J.traceFlags}`;return Pf0}dispatchEngineSpans(Z){let J=this.tracerProvider.getTracer("prisma"),Q=new Map,$=Z.filter((X)=>X.parentId===null);for(let X of $)An(J,X,Z,Q,this.ignoreSpanTypes)}getActiveContext(){return K7.context.active()}runInChildSpan(Z,J){if(typeof Z==="string")Z={name:Z};if(Z.internal&&!Cf0)return J();let Q=this.tracerProvider.getTracer("prisma"),$=Z.context??this.getActiveContext(),X=`prisma:client:${Z.name}`;if(In(X,this.ignoreSpanTypes))return J();if(Z.active===!1){let Y=Q.startSpan(X,Z,$);return kn(Y,J(Y,$))}return Q.startActiveSpan(X,Z,(Y)=>kn(Y,J(Y,$)))}};function An(Z,J,Q,$,X){if(In(J.name,X))return;let Y={attributes:J.attributes,kind:kf0(J.kind),startTime:J.startTime};Z.startActiveSpan(J.name,Y,(W)=>{if($.set(J.id,W.spanContext().spanId),J.links)W.addLinks(J.links.flatMap((z)=>{let G=$.get(z);if(!G)return[];return{context:{spanId:G,traceId:W.spanContext().traceId,traceFlags:W.spanContext().traceFlags}}}));let K=Q.filter((z)=>z.parentId===J.id);for(let z of K)An(Z,z,Q,$,X);W.end(J.endTime)})}function kn(Z,J){if(Rf0(J))return J.then((Q)=>{return Z.end(),Q},(Q)=>{throw Z.end(),Q});return Z.end(),J}function Rf0(Z){return Z!=null&&typeof Z.then==="function"}function In(Z,J){return J.some((Q)=>typeof Q==="string"?Q===Z:Q.test(Z))}var Nn={name:"@prisma/instrumentation",version:"7.4.2",description:"OpenTelemetry compliant instrumentation for Prisma Client",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{require:{types:"./dist/index.d.ts",default:"./dist/index.js"},import:{types:"./dist/index.d.ts",default:"./dist/index.mjs"}}},license:"Apache-2.0",homepage:"https://www.prisma.io",repository:{type:"git",url:"https://github.com/prisma/prisma.git",directory:"packages/instrumentation"},bugs:"https://github.com/prisma/prisma/issues",devDependencies:{"@opentelemetry/api":"1.9.0","@prisma/instrumentation-contract":"workspace:*","@types/node":"~20.19.24",typescript:"5.4.5"},dependencies:{"@opentelemetry/instrumentation":"^0.207.0"},peerDependencies:{"@opentelemetry/api":"^1.8"},files:["dist"],keywords:["prisma","instrumentation","opentelemetry","otel"],scripts:{dev:"DEV=true tsx helpers/build.ts",build:"tsx helpers/build.ts",prepublishOnly:"pnpm run build",test:"vitest run"},sideEffects:!1},Mn=Nn.version,Af0=Nn.name,If0="@prisma/client",Tn=class extends x3.InstrumentationBase{tracerProvider;constructor(Z={}){super(Af0,Mn,Z)}setTracerProvider(Z){this.tracerProvider=Z}init(){return[new x3.InstrumentationNodeModuleDefinition(If0,[Mn])]}enable(){let Z=this._config;Lf0(new Mf0({tracerProvider:this.tracerProvider??Rn.trace.getTracerProvider(),ignoreSpanTypes:Z.ignoreSpanTypes??[]}))}disable(){Of0()}isEnabled(){return qf0()!==void 0}};var fn="Prisma";function Nf0(Z){return!!Z&&typeof Z==="object"&&"dispatchEngineSpans"in Z}function En(){let Z=globalThis.PRISMA_INSTRUMENTATION;return Z&&typeof Z==="object"&&"helper"in Z?Z.helper:void 0}class yn extends Tn{constructor(Z){super(Z?.instrumentationConfig)}enable(){super.enable();let Z=En();if(Nf0(Z))Z.createEngineSpan=(J)=>{let Q=z9.trace.getTracer("prismaV5Compatibility"),$=Q._idGenerator;if(!$){O0(()=>{console.warn("[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!")});return}try{J.spans.forEach((X)=>{let Y=Tf0(X.kind),W=X.parent_span_id,K=X.span_id,z=X.trace_id,G=X.links?.map((B)=>{return{context:{traceId:B.trace_id,spanId:B.span_id,traceFlags:z9.TraceFlags.SAMPLED}}}),H=z9.trace.setSpanContext(z9.context.active(),{traceId:z,spanId:W,traceFlags:z9.TraceFlags.SAMPLED});z9.context.with(H,()=>{let B={generateTraceId:()=>{return z},generateSpanId:()=>{return K}};Q._idGenerator=B,Q.startSpan(X.name,{kind:Y,links:G,startTime:X.start_time,attributes:X.attributes}).end(X.end_time),Q._idGenerator=$})})}finally{Q._idGenerator=$}}}}function Tf0(Z){switch(Z){case"client":return z9.SpanKind.CLIENT;case"internal":default:return z9.SpanKind.INTERNAL}}var ff0=N(fn,(Z)=>{return new yn(Z)}),hn=P((Z)=>{return{name:fn,setupOnce(){ff0(Z)},setup(J){if(!En())return;J.on("spanStart",(Q)=>{let $=h(Q);if($.description?.startsWith("prisma:"))Q.setAttribute(_,"auto.db.otel.prisma");if($.description==="prisma:engine:db_query"&&$.data["db.query.text"])Q.updateName($.data["db.query.text"]);if($.description==="prisma:engine:db_query"&&!$.data["db.system"])Q.setAttribute("db.system","prisma")})}}});var Qa=R(Ja(),1);var $a="Hapi",Xa=N($a,()=>new Qa.HapiInstrumentation),ZE0=()=>{return{name:$a,setupOnce(){Xa()}}},Ya=P(ZE0);var c3=R(s(),1);var G7={HONO_TYPE:"hono.type",HONO_NAME:"hono.name"},OJ={MIDDLEWARE:"middleware",REQUEST_HANDLER:"request_handler"};var D1=R(C(),1),d3=R(c(),1);var JE0="@sentry/instrumentation-hono",QE0="0.0.1";class rH extends d3.InstrumentationBase{constructor(Z={}){super(JE0,QE0,Z)}init(){return[new d3.InstrumentationNodeModuleDefinition("hono",[">=4.0.0 <5"],(Z)=>this._patch(Z))]}_patch(Z){let J=this;class Q extends Z.Hono{constructor(...$){super(...$);J._wrap(this,"get",J._patchHandler()),J._wrap(this,"post",J._patchHandler()),J._wrap(this,"put",J._patchHandler()),J._wrap(this,"delete",J._patchHandler()),J._wrap(this,"options",J._patchHandler()),J._wrap(this,"patch",J._patchHandler()),J._wrap(this,"all",J._patchHandler()),J._wrap(this,"on",J._patchOnHandler()),J._wrap(this,"use",J._patchMiddlewareHandler())}}try{Z.Hono=Q}catch{return{...Z,Hono:Q}}return Z}_patchHandler(){let Z=this;return function(J){return function(...$){if(typeof $[0]==="string"){let X=$[0];if($.length===1)return J.apply(this,[X]);let Y=$.slice(1);return J.apply(this,[X,...Y.map((W)=>Z._wrapHandler(W))])}return J.apply(this,$.map((X)=>Z._wrapHandler(X)))}}}_patchOnHandler(){let Z=this;return function(J){return function(...$){let X=$.slice(2);return J.apply(this,[...$.slice(0,2),...X.map((Y)=>Z._wrapHandler(Y))])}}}_patchMiddlewareHandler(){let Z=this;return function(J){return function(...$){if(typeof $[0]==="string"){let X=$[0];if($.length===1)return J.apply(this,[X]);let Y=$.slice(1);return J.apply(this,[X,...Y.map((W)=>Z._wrapHandler(W))])}return J.apply(this,$.map((X)=>Z._wrapHandler(X)))}}}_wrapHandler(Z){let J=this;return function(Q,$){if(!J.isEnabled())return Z.apply(this,[Q,$]);let X=Q.req.path,Y=J.tracer.startSpan(X);return D1.context.with(D1.trace.setSpan(D1.context.active(),Y),()=>{return J._safeExecute(()=>{let W=Z.apply(this,[Q,$]);if(x0(W))return W.then((K)=>{let z=J._determineHandlerType(K);return Y.setAttributes({[G7.HONO_TYPE]:z,[G7.HONO_NAME]:z===OJ.REQUEST_HANDLER?X:Z.name||"anonymous"}),J.getConfig().responseHook?.(Y),K});else{let K=J._determineHandlerType(W);return Y.setAttributes({[G7.HONO_TYPE]:K,[G7.HONO_NAME]:K===OJ.REQUEST_HANDLER?X:Z.name||"anonymous"}),J.getConfig().responseHook?.(Y),W}},()=>Y.end(),(W)=>{J._handleError(Y,W),Y.end()})})}}_safeExecute(Z,J,Q){try{let $=Z();if(x0($))$.then(()=>J(),(X)=>Q(X));else J();return $}catch($){throw Q($),$}}_determineHandlerType(Z){return Z===void 0?OJ.MIDDLEWARE:OJ.REQUEST_HANDLER}_handleError(Z,J){if(J instanceof Error)Z.setStatus({code:D1.SpanStatusCode.ERROR,message:J.message}),Z.recordException(J)}}var Wa="Hono";function $E0(Z){let J=h(Z).data,Q=J[G7.HONO_TYPE];if(J[b]||!Q)return;Z.setAttributes({[_]:"auto.http.otel.hono",[b]:`${Q}.hono`});let $=J[G7.HONO_NAME];if(typeof $==="string")Z.updateName($);if(l()===A6()){f0&&q.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let X=J[c3.ATTR_HTTP_ROUTE],Y=J[c3.ATTR_HTTP_REQUEST_METHOD];if(typeof X==="string"&&typeof Y==="string")l().setTransactionName(`${Y} ${X}`)}var Ka=N(Wa,()=>new rH({responseHook:(Z)=>{$E0(Z)}})),XE0=()=>{return{name:Wa,setupOnce(){Ka()}}},za=P(XE0);var Ea=R(fa(),1),ya=R(s(),1);var ha="Koa",Sa=N(ha,Ea.KoaInstrumentation,(Z={})=>{return{ignoreLayersType:Z.ignoreLayersType,requestHook(J,Q){$0(J,"auto.http.otel.koa");let $=h(J).data,X=$["koa.type"];if(X)J.setAttribute(b,`${X}.koa`);let Y=$["koa.name"];if(typeof Y==="string")J.updateName(Y||"< unknown >");if(l()===A6()){f0&&q.warn("Isolation scope is default isolation scope - skipping setting transactionName");return}let W=$[ya.ATTR_HTTP_ROUTE],K=Q.context?.request?.method?.toUpperCase()||"GET";if(W)l().setTransactionName(`${K} ${W}`)}}}),UE0=(Z={})=>{return{name:ha,setupOnce(){Sa(Z)}}},_a=P(UE0);var Qs=R(Js(),1);var $s="Connect",Xs=N($s,()=>new Qs.ConnectInstrumentation),fE0=()=>{return{name:$s,setupOnce(){Xs()}}},Ys=P(fE0);var ks=R(Ps(),1);var pE0=new Set(["callProcedure","execSql","execSqlBatch","execBulkLoad","prepare","execute"]),Ms="Tedious",Rs=N(Ms,()=>new ks.TediousInstrumentation({})),iE0=()=>{let Z;return{name:Ms,setupOnce(){let J=Rs();Z=I4(J)},setup(J){Z?.(()=>J.on("spanStart",(Q)=>{let{description:$,data:X}=h(Q);if(!$||X["db.system"]!=="mssql")return;let Y=$.split(" ")[0]||"";if(pE0.has(Y))Q.setAttribute(_,"auto.db.otel.tedious")}))}}},As=P(iE0);var vs=R(_s(),1);var bs="GenericPool",xs=N(bs,()=>new vs.GenericPoolInstrumentation({})),sE0=()=>{let Z;return{name:bs,setupOnce(){let J=xs();Z=I4(J)},setup(J){Z?.(()=>J.on("spanStart",(Q)=>{let X=h(Q).description;if(X==="generic-pool.aquire"||X==="generic-pool.acquire")Q.setAttribute(_,"auto.db.otel.generic_pool")}))}}},gs=P(sE0);var Gr=R(zr(),1);var Br="Amqplib",fy0={consumeEndHook:(Z)=>{$0(Z,"auto.amqplib.otel.consumer")},publishHook:(Z)=>{$0(Z,"auto.amqplib.otel.publisher")}},Hr=N(Br,()=>new Gr.AmqplibInstrumentation(fy0)),Ey0=()=>{return{name:Br,setupOnce(){Hr()}}},Vr=P(Ey0);var RJ="VercelAI";var s3=R(c(),1);var yy0=[">=3.0.0 <7"],Fr=["generateText","streamText","generateObject","streamObject","embed","embedMany","rerank"];function hy0(Z){if(typeof Z!=="object"||Z===null)return!1;let J=Z;return"type"in J&&"error"in J&&"toolName"in J&&"toolCallId"in J&&J.type==="tool-error"&&J.error instanceof Error}function Sy0(Z){if(typeof Z!=="object"||Z===null||!("content"in Z))return;let J=Z;if(!Array.isArray(J.content))return;_y0(J.content),vy0(J.content)}function _y0(Z){for(let J of Z){if(!hy0(J))continue;let Q=cK(J.toolCallId);if(Q)a0(($)=>{$.setContext("trace",{trace_id:Q.traceId,span_id:Q.spanId}),$.setTag("vercel.ai.tool.name",J.toolName),$.setTag("vercel.ai.tool.callId",J.toolCallId),$.setLevel("error"),g(J.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})});else a0(($)=>{$.setTag("vercel.ai.tool.name",J.toolName),$.setTag("vercel.ai.tool.callId",J.toolCallId),$.setLevel("error"),g(J.error,{mechanism:{type:"auto.vercelai.otel",handled:!1}})})}}function vy0(Z){for(let J of Z)if(typeof J==="object"&&J!==null&&"toolCallId"in J&&typeof J.toolCallId==="string")mK(J.toolCallId)}function by0(Z,J,Q,$){let X=Z?.recordInputs!==void 0?Z.recordInputs:J.recordInputs!==void 0?J.recordInputs:Q===!0?!0:$,Y=Z?.recordOutputs!==void 0?Z.recordOutputs:J.recordOutputs!==void 0?J.recordOutputs:Q===!0?!0:$;return{recordInputs:X,recordOutputs:Y}}class AJ extends s3.InstrumentationBase{__init(){this._isPatched=!1}__init2(){this._callbacks=[]}constructor(Z={}){super("@sentry/instrumentation-vercel-ai",a,Z);AJ.prototype.__init.call(this),AJ.prototype.__init2.call(this)}init(){return new s3.InstrumentationNodeModuleDefinition("ai",yy0,this._patch.bind(this))}callWhenPatched(Z){if(this._isPatched)Z();else this._callbacks.push(Z)}_patch(Z){this._isPatched=!0,this._callbacks.forEach((Q)=>Q()),this._callbacks=[];let J=(Q)=>{return new Proxy(Q,{apply:($,X,Y)=>{let W=Y[0].experimental_telemetry||{},K=W.isEnabled,z=f(),G=z?.getIntegrationByName(RJ),H=G?.options,B=G?Boolean(z?.getOptions().sendDefaultPii):!1,{recordInputs:V,recordOutputs:F}=by0(H,W,K,B);return Y[0].experimental_telemetry={...W,isEnabled:K!==void 0?K:!0,recordInputs:V,recordOutputs:F},U9(()=>Reflect.apply($,X,Y),(D)=>{if(D&&typeof D==="object")M0(D,"_sentry_active_span",T6())},()=>{},(D)=>{Sy0(D)})}})};if(Object.prototype.toString.call(Z)==="[object Module]"){for(let Q of Fr)if(Z[Q]!=null)Z[Q]=J(Z[Q]);return Z}else{let Q=Fr.reduce(($,X)=>{if(Z[X]!=null)$[X]=J(Z[X]);return $},{});return{...Z,...Q}}}}var wr=N(RJ,()=>new AJ({}));function xy0(Z){return!!Z.getIntegrationByName("Modules")?.getModules?.()?.ai}var gy0=(Z={})=>{let J;return{name:RJ,options:Z,setupOnce(){J=wr()},afterAllSetup(Q){if(Z.force??xy0(Q))iQ(Q);else J?.callWhenPatched(()=>iQ(Q))}}},Dr=P(gy0);var r3=R(c(),1);var dy0=[">=4.0.0 <7"];class UV extends r3.InstrumentationBase{constructor(Z={}){super("@sentry/instrumentation-openai",a,Z)}init(){return new r3.InstrumentationNodeModuleDefinition("openai",dy0,this._patch.bind(this))}_patch(Z){let J=Z;return J=this._patchClient(J,"OpenAI"),J=this._patchClient(J,"AzureOpenAI"),J}_patchClient(Z,J){let Q=Z[J];if(!Q)return Z;let $=this.getConfig(),X=function(...Y){if(c7(lZ))return Reflect.construct(Q,Y);let W=Reflect.construct(Q,Y);return aQ(W,$)};Object.setPrototypeOf(X,Q),Object.setPrototypeOf(X.prototype,Q.prototype);for(let Y of Object.getOwnPropertyNames(Q))if(!["length","name","prototype"].includes(Y)){let W=Object.getOwnPropertyDescriptor(Q,Y);if(W)Object.defineProperty(X,Y,W)}try{Z[J]=X}catch{Object.defineProperty(Z,J,{value:X,writable:!0,configurable:!0,enumerable:!0})}if(Z.default===Q)try{Z.default=X}catch{Object.defineProperty(Z,"default",{value:X,writable:!0,configurable:!0,enumerable:!0})}return Z}}var Ur=N(lZ,(Z)=>new UV(Z)),cy0=(Z={})=>{return{name:lZ,setupOnce(){Ur(Z)}}},jr=P(cy0);var t3=R(c(),1);var my0=[">=0.19.2 <1.0.0"];class jV extends t3.InstrumentationBase{constructor(Z={}){super("@sentry/instrumentation-anthropic-ai",a,Z)}init(){return new t3.InstrumentationNodeModuleDefinition("@anthropic-ai/sdk",my0,this._patch.bind(this))}_patch(Z){let J=Z.Anthropic,Q=this.getConfig(),$=function(...X){if(c7(pZ))return Reflect.construct(J,X);let Y=Reflect.construct(J,X);return sQ(Y,Q)};Object.setPrototypeOf($,J),Object.setPrototypeOf($.prototype,J.prototype);for(let X of Object.getOwnPropertyNames(J))if(!["length","name","prototype"].includes(X)){let Y=Object.getOwnPropertyDescriptor(J,X);if(Y)Object.defineProperty($,X,Y)}try{Z.Anthropic=$}catch{Object.defineProperty(Z,"Anthropic",{value:$,writable:!0,configurable:!0,enumerable:!0})}if(Z.default===J)try{Z.default=$}catch{Object.defineProperty(Z,"default",{value:$,writable:!0,configurable:!0,enumerable:!0})}return Z}}var qr=N(pZ,(Z)=>new jV(Z)),uy0=(Z={})=>{return{name:pZ,options:Z,setupOnce(){qr(Z)}}},Lr=P(uy0);var l8=R(c(),1);var Or=[">=0.10.0 <2"];class qV extends l8.InstrumentationBase{constructor(Z={}){super("@sentry/instrumentation-google-genai",a,Z)}init(){return new l8.InstrumentationNodeModuleDefinition("@google/genai",Or,(J)=>this._patch(J),(J)=>J,[new l8.InstrumentationNodeModuleFile("@google/genai/dist/node/index.cjs",Or,(J)=>this._patch(J),(J)=>J)])}_patch(Z){let J=Z.GoogleGenAI,Q=this.getConfig();if(typeof J!=="function")return Z;let $=function(...X){if(c7(iZ))return Reflect.construct(J,X);let Y=Reflect.construct(J,X);return rQ(Y,Q)};Object.setPrototypeOf($,J),Object.setPrototypeOf($.prototype,J.prototype);for(let X of Object.getOwnPropertyNames(J))if(!["length","name","prototype"].includes(X)){let Y=Object.getOwnPropertyDescriptor(J,X);if(Y)Object.defineProperty($,X,Y)}return G4(Z,"GoogleGenAI",$),Z}}var Cr=N(iZ,(Z)=>new qV(Z)),ly0=(Z={})=>{return{name:iZ,setupOnce(){Cr(Z)}}},Pr=P(ly0);var F7=R(c(),1);var e3=[">=0.1.0 <2.0.0"];function py0(Z,J){if(!Z)return[J];if(Array.isArray(Z)){if(Z.includes(J))return Z;return[...Z,J]}if(typeof Z==="object")return[Z,J];return Z}function iy0(Z,J,Q){return new Proxy(Z,{apply($,X,Y){let K=Y[1];if(!K||typeof K!=="object"||Array.isArray(K))K={},Y[1]=K;let z=K.callbacks,G=py0(z,J);return K.callbacks=G,Reflect.apply($,X,Y)}})}class LV extends F7.InstrumentationBase{constructor(Z={}){super("@sentry/instrumentation-langchain",a,Z)}init(){let Z=[],J=["@langchain/anthropic","@langchain/openai","@langchain/google-genai","@langchain/mistralai","@langchain/google-vertexai","@langchain/groq"];for(let Q of J)Z.push(new F7.InstrumentationNodeModuleDefinition(Q,e3,this._patch.bind(this),($)=>$,[new F7.InstrumentationNodeModuleFile(`${Q}/dist/index.cjs`,e3,this._patch.bind(this),($)=>$)]));return Z.push(new F7.InstrumentationNodeModuleDefinition("langchain",e3,this._patch.bind(this),(Q)=>Q,[new F7.InstrumentationNodeModuleFile("langchain/dist/chat_models/universal.cjs",e3,this._patch.bind(this),(Q)=>Q)])),Z}_patch(Z){BK([lZ,pZ,iZ]);let J=eQ(this.getConfig());return this._patchRunnableMethods(Z,J),Z}_patchRunnableMethods(Z,J){let Q=["ChatAnthropic","ChatOpenAI","ChatGoogleGenerativeAI","ChatMistralAI","ChatVertexAI","ChatGroq","ConfigurableModel"],$=Z.universal_exports??Z,X=Object.values($).find((K)=>{return typeof K==="function"&&Q.includes(K.name)});if(!X)return;let Y=X.prototype;if(Y.__sentry_patched__)return;Y.__sentry_patched__=!0;let W=["invoke","stream","batch"];for(let K of W){let z=Y[K];if(typeof z==="function")Y[K]=iy0(z,J)}}}var kr=N(tQ,(Z)=>new LV(Z)),oy0=(Z={})=>{return{name:tQ,setupOnce(){kr(Z)}}},Mr=P(oy0);var p8=R(c(),1);var Rr=[">=0.0.0 <2.0.0"];class OV extends p8.InstrumentationBase{constructor(Z={}){super("@sentry/instrumentation-langgraph",a,Z)}init(){return new p8.InstrumentationNodeModuleDefinition("@langchain/langgraph",Rr,this._patch.bind(this),(J)=>J,[new p8.InstrumentationNodeModuleFile("@langchain/langgraph/dist/index.cjs",Rr,this._patch.bind(this),(J)=>J)])}_patch(Z){if(Z.StateGraph&&typeof Z.StateGraph==="function")J$(Z.StateGraph.prototype,this.getConfig());return Z}}var Ar=N(Z$,(Z)=>new OV(Z)),ny0=(Z={})=>{return{name:Z$,setupOnce(){Ar(Z)}}},Ir=P(ny0);var _r=R(c(),1);var jZ=R(C(),1),qZ=R(c(),1),G9=R(s(),1);import*as Tr from"node:net";function fr(Z,J,Q,$,X){let W=()=>{},K=X.firestoreSpanCreationHook;if(typeof K==="function")W=(H)=>{qZ.safeExecuteInTheMiddle(()=>K(H),(B)=>{if(!B)return;jZ.diag.error(B?.message)},!0)};let z=new qZ.InstrumentationNodeModuleDefinition("@firebase/firestore",J,(H)=>Nr(H,Q,$,Z,W)),G=["@firebase/firestore/dist/lite/index.node.cjs.js","@firebase/firestore/dist/lite/index.node.mjs.js","@firebase/firestore/dist/lite/index.rn.esm2017.js","@firebase/firestore/dist/lite/index.cjs.js"];for(let H of G)z.files.push(new qZ.InstrumentationNodeModuleFile(H,J,(B)=>Nr(B,Q,$,Z,W),(B)=>Er(B,$)));return z}function Nr(Z,J,Q,$,X){return Er(Z,Q),J(Z,"addDoc",ay0($,X)),J(Z,"getDocs",ry0($,X)),J(Z,"setDoc",ty0($,X)),J(Z,"deleteDoc",sy0($,X)),Z}function Er(Z,J){for(let Q of["addDoc","getDocs","setDoc","deleteDoc"])if(qZ.isWrapped(Z[Q]))J(Z,Q);return Z}function ay0(Z,J){return function($){return function(X,Y){let W=JX(Z,"addDoc",X);return J(W),ZX(W,()=>{return $(X,Y)})}}}function sy0(Z,J){return function($){return function(X){let Y=JX(Z,"deleteDoc",X.parent||X);return J(Y),ZX(Y,()=>{return $(X)})}}}function ry0(Z,J){return function($){return function(X){let Y=JX(Z,"getDocs",X);return J(Y),ZX(Y,()=>{return $(X)})}}}function ty0(Z,J){return function($){return function(X,Y,W){let K=JX(Z,"setDoc",X.parent||X);return J(K),ZX(K,()=>{return typeof W<"u"?$(X,Y,W):$(X,Y)})}}}function ZX(Z,J){return jZ.context.with(jZ.trace.setSpan(jZ.context.active(),Z),()=>{return qZ.safeExecuteInTheMiddle(()=>{return J()},(Q)=>{if(Q)Z.recordException(Q);Z.end()},!0)})}function JX(Z,J,Q){let $=Z.startSpan(`${J} ${Q.path}`,{kind:jZ.SpanKind.CLIENT});return Zh0($,Q),$.setAttribute(G9.ATTR_DB_OPERATION_NAME,J),$}function ey0(Z){let J,Q;if(typeof Z.host==="string")if(Z.host.startsWith("[")){if(Z.host.endsWith("]"))J=Z.host.replace(/^\[|\]$/g,"");else if(Z.host.includes("]:")){let $=Z.host.lastIndexOf(":");if($!==-1)J=Z.host.slice(1,$).replace(/^\[|\]$/g,""),Q=Z.host.slice($+1)}}else if(Tr.isIPv6(Z.host))J=Z.host;else{let $=Z.host.lastIndexOf(":");if($!==-1)J=Z.host.slice(0,$),Q=Z.host.slice($+1);else J=Z.host}return{address:J,port:Q?parseInt(Q,10):void 0}}function Zh0(Z,J){let Q=J.firestore.app,$=Q.options,Y=(J.firestore.toJSON()||{}).settings||{},W={[G9.ATTR_DB_COLLECTION_NAME]:J.path,[G9.ATTR_DB_NAMESPACE]:Q.name,[G9.ATTR_DB_SYSTEM_NAME]:"firebase.firestore","firebase.firestore.type":J.type,"firebase.firestore.options.projectId":$.projectId,"firebase.firestore.options.appId":$.appId,"firebase.firestore.options.messagingSenderId":$.messagingSenderId,"firebase.firestore.options.storageBucket":$.storageBucket},{address:K,port:z}=ey0(Y);if(K)W[G9.ATTR_SERVER_ADDRESS]=K;if(z)W[G9.ATTR_SERVER_PORT]=z;Z.setAttributes(W)}var u9=R(C(),1),LZ=R(c(),1);function yr(Z,J,Q,$,X){let Y=()=>{},W=()=>{},K=X.functions?.errorHook,z=X.functions?.requestHook,G=X.functions?.responseHook;if(typeof G==="function")W=(V,F)=>{LZ.safeExecuteInTheMiddle(()=>G(V,F),(D)=>{if(!D)return;u9.diag.error(D?.message)},!0)};if(typeof z==="function")Y=(V)=>{LZ.safeExecuteInTheMiddle(()=>z(V),(F)=>{if(!F)return;u9.diag.error(F?.message)},!0)};let H=new LZ.InstrumentationNodeModuleDefinition("firebase-functions",J);return[{name:"firebase-functions/lib/v2/providers/https.js",triggerType:"function"},{name:"firebase-functions/lib/v2/providers/firestore.js",triggerType:"firestore"},{name:"firebase-functions/lib/v2/providers/scheduler.js",triggerType:"scheduler"},{name:"firebase-functions/lib/v2/storage.js",triggerType:"storage"}].forEach(({name:V,triggerType:F})=>{H.files.push(new LZ.InstrumentationNodeModuleFile(V,J,(D)=>Jh0(D,Q,$,Z,{requestHook:Y,responseHook:W,errorHook:K},F),(D)=>hr(D,$)))}),H}function F6(Z,J,Q){return function(X){return function(...Y){let W=typeof Y[0]==="function"?Y[0]:Y[1],K=typeof Y[0]==="function"?void 0:Y[0];if(!W)return X.call(this,...Y);let z=async function(...G){let H=process.env.FUNCTION_TARGET||process.env.K_SERVICE||"unknown",B=Z.startSpan(`firebase.function.${Q}`,{kind:u9.SpanKind.SERVER}),V={"faas.name":H,"faas.trigger":Q,"faas.provider":"firebase"};if(process.env.GCLOUD_PROJECT)V["cloud.project_id"]=process.env.GCLOUD_PROJECT;if(process.env.EVENTARC_CLOUD_EVENT_SOURCE)V["cloud.event_source"]=process.env.EVENTARC_CLOUD_EVENT_SOURCE;return B.setAttributes(V),J?.requestHook?.(B),u9.context.with(u9.trace.setSpan(u9.context.active(),B),async()=>{let F,D;try{D=await W.apply(this,G)}catch(U){F=U}if(J?.responseHook?.(B,F),F)B.recordException(F);if(B.end(),F)throw await J?.errorHook?.(B,F),F;return D})};if(K)return X.call(this,K,z);else return X.call(this,z)}}}function Jh0(Z,J,Q,$,X,Y){switch(hr(Z,Q),Y){case"function":J(Z,"onRequest",F6($,X,"http.request")),J(Z,"onCall",F6($,X,"http.call"));break;case"firestore":J(Z,"onDocumentCreated",F6($,X,"firestore.document.created")),J(Z,"onDocumentUpdated",F6($,X,"firestore.document.updated")),J(Z,"onDocumentDeleted",F6($,X,"firestore.document.deleted")),J(Z,"onDocumentWritten",F6($,X,"firestore.document.written")),J(Z,"onDocumentCreatedWithAuthContext",F6($,X,"firestore.document.created")),J(Z,"onDocumentUpdatedWithAuthContext",F6($,X,"firestore.document.updated")),J(Z,"onDocumentDeletedWithAuthContext",F6($,X,"firestore.document.deleted")),J(Z,"onDocumentWrittenWithAuthContext",F6($,X,"firestore.document.written"));break;case"scheduler":J(Z,"onSchedule",F6($,X,"scheduler.scheduled"));break;case"storage":J(Z,"onObjectFinalized",F6($,X,"storage.object.finalized")),J(Z,"onObjectArchived",F6($,X,"storage.object.archived")),J(Z,"onObjectDeleted",F6($,X,"storage.object.deleted")),J(Z,"onObjectMetadataUpdated",F6($,X,"storage.object.metadataUpdated"));break}return Z}function hr(Z,J){let Q=["onSchedule","onRequest","onCall","onObjectFinalized","onObjectArchived","onObjectDeleted","onObjectMetadataUpdated","onDocumentCreated","onDocumentUpdated","onDocumentDeleted","onDocumentWritten","onDocumentCreatedWithAuthContext","onDocumentUpdatedWithAuthContext","onDocumentDeletedWithAuthContext","onDocumentWrittenWithAuthContext"];for(let $ of Q)if(LZ.isWrapped(Z[$]))J(Z,$);return Z}var Sr={},Qh0=[">=3.0.0 <5"],$h0=[">=6.0.0 <7"];class CV extends _r.InstrumentationBase{constructor(Z=Sr){super("@sentry/instrumentation-firebase",a,Z)}setConfig(Z={}){super.setConfig({...Sr,...Z})}init(){let Z=[];return Z.push(fr(this.tracer,Qh0,this._wrap,this._unwrap,this.getConfig())),Z.push(yr(this.tracer,$h0,this._wrap,this._unwrap,this.getConfig())),Z}}var vr="Firebase",Xh0={firestoreSpanCreationHook:(Z)=>{$0(Z,"auto.firebase.otel.firestore"),Z.setAttribute(b,"db.query")},functions:{requestHook:(Z)=>{$0(Z,"auto.firebase.otel.functions"),Z.setAttribute(b,"http.request")},errorHook:async(Z,J)=>{if(J)g(J,{mechanism:{type:"auto.firebase.otel.functions",handled:!1}}),await d7(2000)}}},br=N(vr,()=>new CV(Xh0)),Yh0=()=>{return{name:vr,setupOnce(){br()}}},xr=P(Yh0);function gr(){return[Zg(),cc(),fm(),za(),xu(),Kl(),Nl(),sl(),tp(),Ei(),hn(),Ya(),_a(),Ys(),As(),gs(),$u(),Vr(),qu(),Mr(),Ir(),Dr(),jr(),Lr(),Pr(),_i(),xr()]}var i8=R(C(),1),QX=R(Nz(),1),dr=R(gz(),1),o8=R(s(),1);var PV=1e6;function cr(Z,J={}){if(Z.getOptions().debug)QG();let[Q,$]=Wh0(Z,J);Z.traceProvider=Q,Z.asyncLocalStorageLookup=$}function Wh0(Z,J={}){let Q=new dr.BasicTracerProvider({sampler:new JG(Z),resource:QX.defaultResource().merge(QX.resourceFromAttributes({[o8.ATTR_SERVICE_NAME]:"node",[o8.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[o8.ATTR_SERVICE_VERSION]:a})),forceFlushTimeoutMillis:500,spanProcessors:[new ZG({timeout:Kh0(Z.getOptions().maxSpanWaitDuration)}),...J.spanProcessors||[]]});i8.trace.setGlobalTracerProvider(Q),i8.propagation.setGlobalPropagator(new ez);let $=new v$;return i8.context.setGlobalContextManager($),[Q,$.getAsyncLocalStorageLookup()]}function Kh0(Z){if(Z==null)return;if(Z>PV)return f0&&q.warn(`\`maxSpanWaitDuration\` is too high, using the maximum value of ${PV}`),PV;else if(Z<=0||Number.isNaN(Z)){f0&&q.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return Z}function mr(){return u$().filter((J)=>J.name!=="Http"&&J.name!=="NodeFetch").concat(Ux(),Tx())}function ur(Z){return[...mr(),...C0(Z)?gr():[]]}function kV(Z={}){return zh0(Z,ur)}function zh0(Z={},J){u7(Z,"node");let Q=IG({...Z,defaultIntegrations:Z.defaultIntegrations??J(Z)});if(Q&&!Z.skipOpenTelemetrySetup)cr(Q,{spanProcessors:Z.openTelemetrySpanProcessors}),l$();return Q}var Bh0="https://b5a33745f4bf36a0f1e66dbcfceaa898@o4510814125228032.ingest.us.sentry.io/4511124523974656",lr="1.0.0",n8=!1,Hh0=[/token/i,/secret/i,/password/i,/key/i,/credential/i,/auth/i,/^GITHUB_/i,/^AWS_/i,/^AZURE_/i,/^GCP_/i,/^NPM_/i,/^NODE_AUTH/i];function pr(Z){let J=Z;for(let[Q,$]of Object.entries(process.env)){if(!$||$.length<8)continue;if(Hh0.some((X)=>X.test(Q)))J=J.replaceAll($,"[REDACTED]")}return J}function ir(Z){if(delete Z.server_name,delete Z.extra,delete Z.user,delete Z.request,Z.contexts={},Z.breadcrumbs=[],Z.exception?.values){for(let J of Z.exception.values)if(J.value)J.value=pr(J.value)}if(Z.message)Z.message=pr(Z.message);return Z}function D36(Z,J){if(n8=Z,!Z)return;kV({dsn:Bh0,defaultIntegrations:!1,environment:J.channel,release:`setup-elide@${lr}`,tracesSampleRate:1,beforeSend(Q){return ir(Q)},beforeSendTransaction(Q){return ir(Q)}}),m5({installer:J.installer,os:J.os,arch:J.arch,channel:J.channel,version:J.version,action_version:lr})}function U36(Z,J){if(!n8)return;a0((Q)=>{if(J)for(let[$,X]of Object.entries(J))Q.setTag($,X);g(Z)})}async function j36(Z,J,Q){if(!n8)return Q();return j6({name:Z,op:J,attributes:{"sentry.origin":"manual"}},async()=>Q())}function q36(Z,J,Q,$){if(!n8)return;Z8.gauge(Z,J,{unit:Q,tags:$})}function L36(Z,J){if(!n8)return;d5(Z,{level:"info",tags:J})}async function or(){if(!n8)return;await d7(2000)}or(); + +//# debugId=BD7DC9C81710F1F864756E2164756E21 +//# sourceMappingURL=post.js.map diff --git a/dist/post.js.map b/dist/post.js.map new file mode 100644 index 0000000..fb27c70 --- /dev/null +++ b/dist/post.js.map @@ -0,0 +1,621 @@ +{ + "version": 3, + "sources": ["../node_modules/@opentelemetry/api/build/src/version.js", "../node_modules/@opentelemetry/api/build/src/internal/semver.js", "../node_modules/@opentelemetry/api/build/src/internal/global-utils.js", "../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js", "../node_modules/@opentelemetry/api/build/src/diag/types.js", "../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js", "../node_modules/@opentelemetry/api/build/src/api/diag.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js", "../node_modules/@opentelemetry/api/build/src/baggage/utils.js", "../node_modules/@opentelemetry/api/build/src/context/context.js", "../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js", "../node_modules/@opentelemetry/api/build/src/metrics/Metric.js", "../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js", "../node_modules/@opentelemetry/api/build/src/api/context.js", "../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js", "../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js", "../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js", "../node_modules/@opentelemetry/api/build/src/trace/context-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js", "../node_modules/@opentelemetry/api/build/src/trace/span_kind.js", "../node_modules/@opentelemetry/api/build/src/trace/status.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js", "../node_modules/@opentelemetry/api/build/src/context-api.js", "../node_modules/@opentelemetry/api/build/src/diag-api.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js", "../node_modules/@opentelemetry/api/build/src/api/metrics.js", "../node_modules/@opentelemetry/api/build/src/metrics-api.js", "../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js", "../node_modules/@opentelemetry/api/build/src/api/propagation.js", "../node_modules/@opentelemetry/api/build/src/propagation-api.js", "../node_modules/@opentelemetry/api/build/src/api/trace.js", "../node_modules/@opentelemetry/api/build/src/trace-api.js", "../node_modules/@opentelemetry/api/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/baggage/constants.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/baggage/utils.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/anchored-clock.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/attributes.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/global-error-handler.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/platform/node/environment.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/globalThis.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/version.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/internal/utils.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/trace/SemanticAttributes.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/trace/index.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/resource/SemanticResourceAttributes.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/resource/index.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/stable_metrics.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/stable_events.js", "../node_modules/@opentelemetry/semantic-conventions/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/platform/node/index.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/platform/index.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/time.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/common/timer-util.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/ExportResult.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/propagation/composite.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/internal/validators.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/trace/TraceState.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/merge.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/timeout.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/url.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/promise.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/callback.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/utils/configuration.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/internal/exporter.js", "../node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/core/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/version.js", "../node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js", "../node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js", "../node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js", "../node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js", "../node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js", "../node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js", "../node_modules/@opentelemetry/api-logs/build/src/api/logs.js", "../node_modules/@opentelemetry/api-logs/build/src/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js", "../node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js", "../node_modules/@opentelemetry/instrumentation/build/src/semver.js", "../node_modules/@opentelemetry/instrumentation/build/src/shimmer.js", "../node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js", "../node_modules/ms/index.js", "../node_modules/debug/src/common.js", "../node_modules/debug/src/browser.js", "../node_modules/has-flag/index.js", "../node_modules/supports-color/index.js", "../node_modules/debug/src/node.js", "../node_modules/debug/src/index.js", "../node_modules/module-details-from-path/index.js", "../node_modules/require-in-the-middle/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js", "../node_modules/import-in-the-middle/lib/register.js", "../node_modules/import-in-the-middle/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/platform/index.js", "../node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js", "../node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js", "../node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js", "../node_modules/@opentelemetry/instrumentation/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/internal-types.js", "../node_modules/forwarded-parse/lib/error.js", "../node_modules/forwarded-parse/lib/ascii.js", "../node_modules/forwarded-parse/index.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/http.js", "../node_modules/@opentelemetry/instrumentation-http/build/src/index.js", "../node_modules/@opentelemetry/core/build/src/trace/suppress-tracing.js", "../node_modules/@opentelemetry/core/build/src/baggage/constants.js", "../node_modules/@opentelemetry/core/build/src/baggage/utils.js", "../node_modules/@opentelemetry/core/build/src/baggage/propagation/W3CBaggagePropagator.js", "../node_modules/@opentelemetry/core/build/src/common/anchored-clock.js", "../node_modules/@opentelemetry/core/build/src/common/attributes.js", "../node_modules/@opentelemetry/core/build/src/common/logging-error-handler.js", "../node_modules/@opentelemetry/core/build/src/common/global-error-handler.js", "../node_modules/@opentelemetry/core/build/src/platform/node/environment.js", "../node_modules/@opentelemetry/core/build/src/common/globalThis.js", "../node_modules/@opentelemetry/core/build/src/version.js", "../node_modules/@opentelemetry/core/build/src/semconv.js", "../node_modules/@opentelemetry/core/build/src/platform/node/sdk-info.js", "../node_modules/@opentelemetry/core/build/src/platform/node/index.js", "../node_modules/@opentelemetry/core/build/src/platform/index.js", "../node_modules/@opentelemetry/core/build/src/common/time.js", "../node_modules/@opentelemetry/core/build/src/common/timer-util.js", "../node_modules/@opentelemetry/core/build/src/ExportResult.js", "../node_modules/@opentelemetry/core/build/src/propagation/composite.js", "../node_modules/@opentelemetry/core/build/src/internal/validators.js", "../node_modules/@opentelemetry/core/build/src/trace/TraceState.js", "../node_modules/@opentelemetry/core/build/src/trace/W3CTraceContextPropagator.js", "../node_modules/@opentelemetry/core/build/src/trace/rpc-metadata.js", "../node_modules/@opentelemetry/core/build/src/utils/lodash.merge.js", "../node_modules/@opentelemetry/core/build/src/utils/merge.js", "../node_modules/@opentelemetry/core/build/src/utils/timeout.js", "../node_modules/@opentelemetry/core/build/src/utils/url.js", "../node_modules/@opentelemetry/core/build/src/utils/promise.js", "../node_modules/@opentelemetry/core/build/src/utils/callback.js", "../node_modules/@opentelemetry/core/build/src/utils/configuration.js", "../node_modules/@opentelemetry/core/build/src/internal/exporter.js", "../node_modules/@opentelemetry/core/build/src/index.js", "../node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js", "../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncHooksContextManager.js", "../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js", "../node_modules/@opentelemetry/context-async-hooks/build/src/index.js", "../node_modules/@opentelemetry/resources/build/src/default-service-name.js", "../node_modules/@opentelemetry/resources/build/src/utils.js", "../node_modules/@opentelemetry/resources/build/src/ResourceImpl.js", "../node_modules/@opentelemetry/resources/build/src/detect-resources.js", "../node_modules/@opentelemetry/resources/build/src/detectors/EnvDetector.js", "../node_modules/@opentelemetry/resources/build/src/semconv.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/execAsync.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-darwin.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-linux.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-bsd.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-win.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId-unsupported.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/machine-id/getMachineId.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/utils.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/HostDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/OSDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ProcessDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/ServiceInstanceIdDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/node/index.js", "../node_modules/@opentelemetry/resources/build/src/detectors/platform/index.js", "../node_modules/@opentelemetry/resources/build/src/detectors/NoopDetector.js", "../node_modules/@opentelemetry/resources/build/src/detectors/index.js", "../node_modules/@opentelemetry/resources/build/src/index.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/enums.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/Span.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/Sampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOffSampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/AlwaysOnSampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/ParentBasedSampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/sampler/TraceIdRatioBasedSampler.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/config.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/utility.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/BatchSpanProcessorBase.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/export/BatchSpanProcessor.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/RandomIdGenerator.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/node/index.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/platform/index.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/semconv.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/TracerMetrics.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/version.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/Tracer.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/MultiSpanProcessor.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/BasicTracerProvider.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/ConsoleSpanExporter.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/InMemorySpanExporter.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/SimpleSpanProcessor.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/export/NoopSpanProcessor.js", "../node_modules/@opentelemetry/sdk-trace-base/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-undici/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-undici/build/src/undici.js", "../node_modules/@opentelemetry/instrumentation-undici/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-express/build/src/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/semver.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/lib/register.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/utils.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js", "../node_modules/@fastify/otel/node_modules/@opentelemetry/instrumentation/build/src/index.js", "../node_modules/@fastify/otel/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/dist/commonjs/index.js", "../node_modules/@fastify/otel/node_modules/minimatch/node_modules/brace-expansion/dist/commonjs/index.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/brace-expressions.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/unescape.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/ast.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/escape.js", "../node_modules/@fastify/otel/node_modules/minimatch/dist/commonjs/index.js", "../node_modules/@fastify/otel/index.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/enum.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/symbols.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-graphql/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/propagator.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-kafkajs/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-lru-memoizer/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/types.js", "../node_modules/@opentelemetry/instrumentation-mongodb/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js", "../node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-mysql/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/semconv.js", "../node_modules/@opentelemetry/sql-common/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-mysql2/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/utils.js", "../node_modules/@opentelemetry/redis-common/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-ioredis/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/utils.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/v2-v3/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/utils.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/v4-v5/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/redis.js", "../node_modules/@opentelemetry/instrumentation-redis/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-pg/build/src/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/platform/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/api/logs.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/@opentelemetry/api-logs/build/src/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoaderUtils.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/autoLoader.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semver.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/shimmer.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentation.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/ModuleNameTrie.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/RequireInTheMiddleSingleton.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/lib/register.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/node_modules/import-in-the-middle/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/utils.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/instrumentation.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/normalize.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/node/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/platform/index.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleDefinition.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/instrumentationNodeModuleFile.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/semconvStability.js", "../node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-hapi/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/types.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-koa/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/enums/AttributeNames.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/internal-types.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-connect/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-tedious/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-generic-pool/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-generic-pool/build/src/instrumentation.js", "../node_modules/@opentelemetry/instrumentation-generic-pool/build/src/index.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/semconv-obsolete.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/types.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/utils.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/version.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/amqplib.js", "../node_modules/@opentelemetry/instrumentation-amqplib/build/src/index.js", "../node_modules/@sentry/node/build/esm/integrations/http.js", "../node_modules/@sentry/core/build/esm/debug-build.js", "../node_modules/@sentry/core/build/esm/utils/is.js", "../node_modules/@sentry/core/build/esm/utils/worldwide.js", "../node_modules/@sentry/core/build/esm/utils/browser.js", "../node_modules/@sentry/core/build/esm/utils/version.js", "../node_modules/@sentry/core/build/esm/carrier.js", "../node_modules/@sentry/core/build/esm/utils/debug-logger.js", "../node_modules/@sentry/core/build/esm/utils/object.js", "../node_modules/@sentry/core/build/esm/tracing/utils.js", "../node_modules/@sentry/core/build/esm/tracing/spanstatus.js", "../node_modules/@sentry/core/build/esm/utils/randomSafeContext.js", "../node_modules/@sentry/core/build/esm/utils/stacktrace.js", "../node_modules/@sentry/core/build/esm/utils/string.js", "../node_modules/@sentry/core/build/esm/utils/misc.js", "../node_modules/@sentry/core/build/esm/utils/time.js", "../node_modules/@sentry/core/build/esm/session.js", "../node_modules/@sentry/core/build/esm/utils/merge.js", "../node_modules/@sentry/core/build/esm/utils/propagationContext.js", "../node_modules/@sentry/core/build/esm/utils/spanOnScope.js", "../node_modules/@sentry/core/build/esm/scope.js", "../node_modules/@sentry/core/build/esm/defaultScopes.js", "../node_modules/@sentry/core/build/esm/utils/chain-and-copy-promiselike.js", "../node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js", "../node_modules/@sentry/core/build/esm/asyncContext/index.js", "../node_modules/@sentry/core/build/esm/currentScopes.js", "../node_modules/@sentry/core/build/esm/semanticAttributes.js", "../node_modules/@sentry/core/build/esm/utils/baggage.js", "../node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js", "../node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js", "../node_modules/@sentry/core/build/esm/utils/parseSampleRate.js", "../node_modules/@sentry/core/build/esm/utils/dsn.js", "../node_modules/@sentry/core/build/esm/utils/tracing.js", "../node_modules/@sentry/core/build/esm/utils/spanUtils.js", "../node_modules/@sentry/core/build/esm/constants.js", "../node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js", "../node_modules/@sentry/core/build/esm/tracing/logSpans.js", "../node_modules/@sentry/core/build/esm/tracing/sampling.js", "../node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js", "../node_modules/@sentry/core/build/esm/utils/normalize.js", "../node_modules/@sentry/core/build/esm/utils/envelope.js", "../node_modules/@sentry/core/build/esm/utils/should-ignore-span.js", "../node_modules/@sentry/core/build/esm/envelope.js", "../node_modules/@sentry/core/build/esm/tracing/measurement.js", "../node_modules/@sentry/core/build/esm/tracing/sentrySpan.js", "../node_modules/@sentry/core/build/esm/tracing/trace.js", "../node_modules/@sentry/core/build/esm/utils/syncpromise.js", "../node_modules/@sentry/core/build/esm/eventProcessors.js", "../node_modules/@sentry/core/build/esm/utils/debug-ids.js", "../node_modules/@sentry/core/build/esm/utils/scopeData.js", "../node_modules/@sentry/core/build/esm/utils/prepareEvent.js", "../node_modules/@sentry/core/build/esm/exports.js", "../node_modules/@sentry/core/build/esm/checkin.js", "../node_modules/@sentry/core/build/esm/api.js", "../node_modules/@sentry/core/build/esm/integration.js", "../node_modules/@sentry/core/build/esm/attributes.js", "../node_modules/@sentry/core/build/esm/utils/timestampSequence.js", "../node_modules/@sentry/core/build/esm/utils/trace-info.js", "../node_modules/@sentry/core/build/esm/logs/envelope.js", "../node_modules/@sentry/core/build/esm/logs/internal.js", "../node_modules/@sentry/core/build/esm/metrics/envelope.js", "../node_modules/@sentry/core/build/esm/metrics/internal.js", "../node_modules/@sentry/core/build/esm/utils/timer.js", "../node_modules/@sentry/core/build/esm/utils/promisebuffer.js", "../node_modules/@sentry/core/build/esm/utils/ratelimit.js", "../node_modules/@sentry/core/build/esm/transports/base.js", "../node_modules/@sentry/core/build/esm/utils/clientreport.js", "../node_modules/@sentry/core/build/esm/utils/eventUtils.js", "../node_modules/@sentry/core/build/esm/utils/transactionEvent.js", "../node_modules/@sentry/core/build/esm/client.js", "../node_modules/@sentry/core/build/esm/instrument/handlers.js", "../node_modules/@sentry/core/build/esm/instrument/globalError.js", "../node_modules/@sentry/core/build/esm/instrument/globalUnhandledRejection.js", "../node_modules/@sentry/core/build/esm/tracing/errors.js", "../node_modules/@sentry/core/build/esm/transports/userAgent.js", "../node_modules/@sentry/core/build/esm/utils/eventbuilder.js", "../node_modules/@sentry/core/build/esm/server-runtime-client.js", "../node_modules/@sentry/core/build/esm/utils/ai/providerSkip.js", "../node_modules/@sentry/core/build/esm/utils/envToBool.js", "../node_modules/@sentry/core/build/esm/utils/url.js", "../node_modules/@sentry/core/build/esm/utils/sdkMetadata.js", "../node_modules/@sentry/core/build/esm/utils/traceData.js", "../node_modules/@sentry/core/build/esm/utils/tracePropagationTargets.js", "../node_modules/@sentry/core/build/esm/utils/debounce.js", "../node_modules/@sentry/core/build/esm/utils/request.js", "../node_modules/@sentry/core/build/esm/breadcrumbs.js", "../node_modules/@sentry/core/build/esm/integrations/functiontostring.js", "../node_modules/@sentry/core/build/esm/integrations/eventFilters.js", "../node_modules/@sentry/core/build/esm/utils/aggregate-errors.js", "../node_modules/@sentry/core/build/esm/integrations/linkederrors.js", "../node_modules/@sentry/core/build/esm/utils/cookie.js", "../node_modules/@sentry/core/build/esm/vendor/getIpAddress.js", "../node_modules/@sentry/core/build/esm/integrations/requestdata.js", "../node_modules/@sentry/core/build/esm/instrument/console.js", "../node_modules/@sentry/core/build/esm/utils/severity.js", "../node_modules/@sentry/core/build/esm/utils/path.js", "../node_modules/@sentry/core/build/esm/integrations/postgresjs.js", "../node_modules/@sentry/core/build/esm/integrations/console.js", "../node_modules/@sentry/core/build/esm/integrations/conversationId.js", "../node_modules/@sentry/core/build/esm/metrics/public-api.js", "../node_modules/@sentry/core/build/esm/tracing/ai/gen-ai-attributes.js", "../node_modules/@sentry/core/build/esm/tracing/vercel-ai/constants.js", "../node_modules/@sentry/core/build/esm/tracing/ai/mediaStripping.js", "../node_modules/@sentry/core/build/esm/tracing/ai/messageTruncation.js", "../node_modules/@sentry/core/build/esm/tracing/ai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/vercel-ai/vercel-ai-attributes.js", "../node_modules/@sentry/core/build/esm/tracing/vercel-ai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/vercel-ai/index.js", "../node_modules/@sentry/core/build/esm/tracing/openai/constants.js", "../node_modules/@sentry/core/build/esm/tracing/openai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/openai/streaming.js", "../node_modules/@sentry/core/build/esm/tracing/openai/index.js", "../node_modules/@sentry/core/build/esm/tracing/anthropic-ai/constants.js", "../node_modules/@sentry/core/build/esm/tracing/anthropic-ai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/anthropic-ai/streaming.js", "../node_modules/@sentry/core/build/esm/tracing/anthropic-ai/index.js", "../node_modules/@sentry/core/build/esm/tracing/google-genai/constants.js", "../node_modules/@sentry/core/build/esm/tracing/google-genai/streaming.js", "../node_modules/@sentry/core/build/esm/tracing/google-genai/utils.js", "../node_modules/@sentry/core/build/esm/tracing/google-genai/index.js", "../node_modules/@sentry/core/build/esm/tracing/langchain/constants.js", "../node_modules/@sentry/core/build/esm/tracing/langchain/utils.js", "../node_modules/@sentry/core/build/esm/tracing/langchain/index.js", "../node_modules/@sentry/core/build/esm/tracing/langgraph/constants.js", "../node_modules/@sentry/core/build/esm/tracing/langgraph/utils.js", "../node_modules/@sentry/core/build/esm/tracing/langgraph/index.js", "../node_modules/@sentry/core/build/esm/utils/breadcrumb-log-level.js", "../node_modules/@sentry/core/build/esm/utils/exports.js", "../node_modules/@sentry/core/build/esm/utils/node-stack-trace.js", "../node_modules/@sentry/core/build/esm/utils/lru.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/httpServerSpansIntegration.js", "../node_modules/@sentry/node-core/build/esm/debug-build.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/httpServerIntegration.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/constants.js", "../node_modules/@sentry/node-core/build/esm/utils/captureRequestBody.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/SentryHttpInstrumentation.js", "../node_modules/@sentry/node-core/build/esm/utils/baggage.js", "../node_modules/@sentry/node-core/build/esm/utils/outgoingHttpRequest.js", "../node_modules/@sentry/node-core/build/esm/integrations/node-fetch/SentryNodeFetchInstrumentation.js", "../node_modules/@sentry/node-core/build/esm/nodeVersion.js", "../node_modules/@sentry/node-core/build/esm/utils/outgoingFetchRequest.js", "../node_modules/@sentry/node-core/build/esm/otel/contextManager.js", "../node_modules/@sentry/opentelemetry/build/esm/index.js", "../node_modules/@sentry/node-core/build/esm/otel/logger.js", "../node_modules/@sentry/node-core/build/esm/otel/instrument.js", "../node_modules/@sentry/node-core/build/esm/integrations/childProcess.js", "../node_modules/@sentry/node-core/build/esm/integrations/context.js", "../node_modules/@sentry/node-core/build/esm/integrations/contextlines.js", "../node_modules/@sentry/node-core/build/esm/integrations/http/index.js", "../node_modules/@sentry/node-core/build/esm/integrations/local-variables/local-variables-async.js", "../node_modules/@sentry/node-core/build/esm/utils/debug.js", "../node_modules/@sentry/node-core/build/esm/integrations/local-variables/common.js", "../node_modules/@sentry/node-core/build/esm/integrations/local-variables/local-variables-sync.js", "../node_modules/@sentry/node-core/build/esm/integrations/local-variables/index.js", "../node_modules/@sentry/node-core/build/esm/integrations/modules.js", "../node_modules/@sentry/node-core/build/esm/utils/detection.js", "../node_modules/@sentry/node-core/build/esm/integrations/node-fetch/index.js", "../node_modules/@sentry/node-core/build/esm/integrations/onuncaughtexception.js", "../node_modules/@sentry/node-core/build/esm/utils/errorhandling.js", "../node_modules/@sentry/node-core/build/esm/integrations/onunhandledrejection.js", "../node_modules/@sentry/node-core/build/esm/integrations/processSession.js", "../node_modules/@sentry/node-core/build/esm/integrations/spotlight.js", "../node_modules/@sentry/node-core/build/esm/integrations/systemError.js", "../node_modules/@sentry/node-core/build/esm/transports/http.js", "../node_modules/@sentry/node-core/build/esm/proxy/index.js", "../node_modules/@sentry/node-core/build/esm/proxy/base.js", "../node_modules/@sentry/node-core/build/esm/proxy/parse-proxy-response.js", "../node_modules/@sentry/node-core/build/esm/utils/spotlight.js", "../node_modules/@sentry/node-core/build/esm/utils/module.js", "../node_modules/@sentry/node-core/build/esm/sdk/api.js", "../node_modules/@sentry/node-core/build/esm/sdk/client.js", "../node_modules/@sentry/node-core/build/esm/sdk/esmLoader.js", "../node_modules/@sentry/node-core/build/esm/sdk/index.js", "../node_modules/@sentry/node-core/build/esm/utils/addOriginToSpan.js", "../node_modules/@sentry/node-core/build/esm/utils/getRequestUrl.js", "../node_modules/@sentry/node/build/esm/integrations/node-fetch.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/express.js", "../node_modules/@sentry/node/build/esm/debug-build.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/v3/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/v3/enums/AttributeNames.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/v3/utils.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/fastify/v3/constants.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/graphql.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/kafka.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/lrumemoizer.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/mongo.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/mongoose.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/mysql.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/mysql2.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/redis.js", "../node_modules/@sentry/node/build/esm/utils/redisCache.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/postgres.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/postgresjs.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/prisma.js", "../node_modules/@prisma/instrumentation/dist/index.mjs", "../node_modules/@sentry/node/build/esm/integrations/tracing/hapi/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/hono/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/hono/constants.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/hono/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/koa.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/connect.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/tedious.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/genericPool.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/amqplib.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/vercelai/constants.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/vercelai/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/vercelai/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/openai/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/openai/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/anthropic-ai/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/anthropic-ai/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/google-genai/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/google-genai/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/langchain/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/langchain/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/langgraph/instrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/langgraph/index.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/firebase/otel/firebaseInstrumentation.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/firebase/otel/patches/firestore.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/firebase/otel/patches/functions.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/firebase/firebase.js", "../node_modules/@sentry/node/build/esm/integrations/tracing/index.js", "../node_modules/@sentry/node/build/esm/sdk/initOtel.js", "../node_modules/@sentry/node/build/esm/sdk/index.js", "../src/telemetry.ts", "../src/post.ts"], + "sourcesContent": [ + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '1.9.1';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCompatible = exports._makeCompatibilityCheck = void 0;\nconst version_1 = require(\"../version\");\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nfunction _makeCompatibilityCheck(ownVersion) {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion) {\n return globalVersion === ownVersion;\n };\n }\n function _reject(v) {\n rejectedVersions.add(v);\n return false;\n }\n function _accept(v) {\n acceptedVersions.add(v);\n return true;\n }\n return function isCompatible(globalVersion) {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n const globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n if (ownVersionParsed.major === 0) {\n if (ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n }\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n };\n}\nexports._makeCompatibilityCheck = _makeCompatibilityCheck;\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);\n//# sourceMappingURL=semver.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;\nconst version_1 = require(\"../version\");\nconst semver_1 = require(\"./semver\");\nconst major = version_1.VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(`opentelemetry.js.api.${major}`);\nconst _global = (typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : {});\nfunction registerGlobal(type, instance, diag, allowOverride = false) {\n var _a;\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n version: version_1.VERSION,\n });\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${type}`);\n diag.error(err.stack || err.message);\n return false;\n }\n if (api.version !== version_1.VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(`@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${version_1.VERSION}`);\n diag.error(err.stack || err.message);\n return false;\n }\n api[type] = instance;\n diag.debug(`@opentelemetry/api: Registered a global for ${type} v${version_1.VERSION}.`);\n return true;\n}\nexports.registerGlobal = registerGlobal;\nfunction getGlobal(type) {\n var _a, _b;\n const globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n if (!globalVersion || !(0, semver_1.isCompatible)(globalVersion)) {\n return;\n }\n return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexports.getGlobal = getGlobal;\nfunction unregisterGlobal(type, diag) {\n diag.debug(`@opentelemetry/api: Unregistering a global for ${type} v${version_1.VERSION}.`);\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n if (api) {\n delete api[type];\n }\n}\nexports.unregisterGlobal = unregisterGlobal;\n//# sourceMappingURL=global-utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagComponentLogger = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nclass DiagComponentLogger {\n constructor(props) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n debug(...args) {\n return logProxy('debug', this._namespace, args);\n }\n error(...args) {\n return logProxy('error', this._namespace, args);\n }\n info(...args) {\n return logProxy('info', this._namespace, args);\n }\n warn(...args) {\n return logProxy('warn', this._namespace, args);\n }\n verbose(...args) {\n return logProxy('verbose', this._namespace, args);\n }\n}\nexports.DiagComponentLogger = DiagComponentLogger;\nfunction logProxy(funcName, namespace, args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n return logger[funcName](namespace, ...args);\n}\n//# sourceMappingURL=ComponentLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagLogLevel = void 0;\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nvar DiagLogLevel;\n(function (DiagLogLevel) {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n /** Identifies an error scenario */\n DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n /** Identifies a warning scenario */\n DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n /** General informational log message */\n DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n /** General debug log message */\n DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n /** Used to set the logging level to include all logging */\n DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLogLevelDiagLogger = void 0;\nconst types_1 = require(\"../types\");\nfunction createLogLevelDiagLogger(maxLevel, logger) {\n if (maxLevel < types_1.DiagLogLevel.NONE) {\n maxLevel = types_1.DiagLogLevel.NONE;\n }\n else if (maxLevel > types_1.DiagLogLevel.ALL) {\n maxLevel = types_1.DiagLogLevel.ALL;\n }\n // In case the logger is null or undefined\n logger = logger || {};\n function _filterFunc(funcName, theLevel) {\n const theFunc = logger[funcName];\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () { };\n }\n return {\n error: _filterFunc('error', types_1.DiagLogLevel.ERROR),\n warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),\n info: _filterFunc('info', types_1.DiagLogLevel.INFO),\n debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),\n };\n}\nexports.createLogLevelDiagLogger = createLogLevelDiagLogger;\n//# sourceMappingURL=logLevelLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagAPI = void 0;\nconst ComponentLogger_1 = require(\"../diag/ComponentLogger\");\nconst logLevelLogger_1 = require(\"../diag/internal/logLevelLogger\");\nconst types_1 = require(\"../diag/types\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n *\n * @since 1.0.0\n */\nclass DiagAPI {\n /** Get the singleton instance of the DiagAPI API */\n static instance() {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n return this._instance;\n }\n /**\n * Private internal constructor\n * @private\n */\n constructor() {\n function _logProxy(funcName) {\n return function (...args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger)\n return;\n return logger[funcName](...args);\n };\n }\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n // DiagAPI specific functions\n const setLogger = (logger, optionsOrLogLevel = { logLevel: types_1.DiagLogLevel.INFO }) => {\n var _a, _b, _c;\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n return false;\n }\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n const oldLogger = (0, global_utils_1.getGlobal)('diag');\n const newLogger = (0, logLevelLogger_1.createLogLevelDiagLogger)((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : types_1.DiagLogLevel.INFO, logger);\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(`Current logger will overwrite one already registered from ${stack}`);\n }\n return (0, global_utils_1.registerGlobal)('diag', newLogger, self, true);\n };\n self.setLogger = setLogger;\n self.disable = () => {\n (0, global_utils_1.unregisterGlobal)(API_NAME, self);\n };\n self.createComponentLogger = (options) => {\n return new ComponentLogger_1.DiagComponentLogger(options);\n };\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n}\nexports.DiagAPI = DiagAPI;\n//# sourceMappingURL=diag.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaggageImpl = void 0;\nclass BaggageImpl {\n constructor(entries) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n getEntry(key) {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n return Object.assign({}, entry);\n }\n getAllEntries() {\n return Array.from(this._entries.entries());\n }\n setEntry(key, entry) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n removeEntry(key) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n removeEntries(...keys) {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n clear() {\n return new BaggageImpl();\n }\n}\nexports.BaggageImpl = BaggageImpl;\n//# sourceMappingURL=baggage-impl.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataSymbol = void 0;\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n//# sourceMappingURL=symbol.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataFromString = exports.createBaggage = void 0;\nconst diag_1 = require(\"../api/diag\");\nconst baggage_impl_1 = require(\"./internal/baggage-impl\");\nconst symbol_1 = require(\"./internal/symbol\");\nconst diag = diag_1.DiagAPI.instance();\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nfunction createBaggage(entries = {}) {\n return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));\n}\nexports.createBaggage = createBaggage;\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n * @since 1.0.0\n */\nfunction baggageEntryMetadataFromString(str) {\n if (typeof str !== 'string') {\n diag.error(`Cannot create baggage metadata from unknown type: ${typeof str}`);\n str = '';\n }\n return {\n __TYPE__: symbol_1.baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\nexports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ROOT_CONTEXT = exports.createContextKey = void 0;\n/**\n * Get a key to uniquely identify a context value\n *\n * @since 1.0.0\n */\nfunction createContextKey(description) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\nexports.createContextKey = createContextKey;\nclass BaseContext {\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext) {\n // for minification\n const self = this;\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n self.getValue = (key) => self._currentContext.get(key);\n self.setValue = (key, value) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n self.deleteValue = (key) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n}\n/**\n * The root context is used as the default parent context when there is no active context\n *\n * @since 1.0.0\n */\nexports.ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagConsoleLogger = exports._originalConsoleMethods = void 0;\nconst consoleMap = [\n { n: 'error', c: 'error' },\n { n: 'warn', c: 'warn' },\n { n: 'info', c: 'info' },\n { n: 'debug', c: 'debug' },\n { n: 'verbose', c: 'trace' },\n];\n// Save original console methods at module load time, before any instrumentation\n// can wrap them. This ensures DiagConsoleLogger calls the unwrapped originals.\n// Exported for testing only — not part of the public API.\nexports._originalConsoleMethods = {};\nif (typeof console !== 'undefined') {\n const keys = [\n 'error',\n 'warn',\n 'info',\n 'debug',\n 'trace',\n 'log',\n ];\n for (const key of keys) {\n // eslint-disable-next-line no-console\n if (typeof console[key] === 'function') {\n // eslint-disable-next-line no-console\n exports._originalConsoleMethods[key] = console[key];\n }\n }\n}\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n *\n * @since 1.0.0\n */\nclass DiagConsoleLogger {\n constructor() {\n function _consoleFunc(funcName) {\n return function (...args) {\n // Prefer original (pre-instrumentation) methods saved at module load time.\n let theFunc = exports._originalConsoleMethods[funcName];\n // Some environments only expose the console when the F12 developer console is open\n if (typeof theFunc !== 'function') {\n theFunc = exports._originalConsoleMethods['log'];\n }\n // Fall back in case console was not available at module load time but became available later.\n if (typeof theFunc !== 'function' && console) {\n // eslint-disable-next-line no-console\n theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n }\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n };\n }\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n}\nexports.DiagConsoleLogger = DiagConsoleLogger;\n//# sourceMappingURL=consoleLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoopMeter = exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = exports.NOOP_OBSERVABLE_GAUGE_METRIC = exports.NOOP_OBSERVABLE_COUNTER_METRIC = exports.NOOP_UP_DOWN_COUNTER_METRIC = exports.NOOP_HISTOGRAM_METRIC = exports.NOOP_GAUGE_METRIC = exports.NOOP_COUNTER_METRIC = exports.NOOP_METER = exports.NoopObservableUpDownCounterMetric = exports.NoopObservableGaugeMetric = exports.NoopObservableCounterMetric = exports.NoopObservableMetric = exports.NoopHistogramMetric = exports.NoopGaugeMetric = exports.NoopUpDownCounterMetric = exports.NoopCounterMetric = exports.NoopMetric = exports.NoopMeter = void 0;\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nclass NoopMeter {\n constructor() { }\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name, _options) {\n return exports.NOOP_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name, _options) {\n return exports.NOOP_HISTOGRAM_METRIC;\n }\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name, _options) {\n return exports.NOOP_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name, _options) {\n return exports.NOOP_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(_name, _options) {\n return exports.NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(_callback, _observables) { }\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback) { }\n}\nexports.NoopMeter = NoopMeter;\nclass NoopMetric {\n}\nexports.NoopMetric = NoopMetric;\nclass NoopCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopCounterMetric = NoopCounterMetric;\nclass NoopUpDownCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopUpDownCounterMetric = NoopUpDownCounterMetric;\nclass NoopGaugeMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopGaugeMetric = NoopGaugeMetric;\nclass NoopHistogramMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopHistogramMetric = NoopHistogramMetric;\nclass NoopObservableMetric {\n addCallback(_callback) { }\n removeCallback(_callback) { }\n}\nexports.NoopObservableMetric = NoopObservableMetric;\nclass NoopObservableCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableCounterMetric = NoopObservableCounterMetric;\nclass NoopObservableGaugeMetric extends NoopObservableMetric {\n}\nexports.NoopObservableGaugeMetric = NoopObservableGaugeMetric;\nclass NoopObservableUpDownCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric;\nexports.NOOP_METER = new NoopMeter();\n// Synchronous instruments\nexports.NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexports.NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexports.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexports.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n// Asynchronous instruments\nexports.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexports.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric();\n/**\n * Create a no-op Meter\n *\n * @since 1.3.0\n */\nfunction createNoopMeter() {\n return exports.NOOP_METER;\n}\nexports.createNoopMeter = createNoopMeter;\n//# sourceMappingURL=NoopMeter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueType = void 0;\n/**\n * The Type of value. It describes how the data is reported.\n *\n * @since 1.3.0\n */\nvar ValueType;\n(function (ValueType) {\n ValueType[ValueType[\"INT\"] = 0] = \"INT\";\n ValueType[ValueType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n})(ValueType = exports.ValueType || (exports.ValueType = {}));\n//# sourceMappingURL=Metric.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;\n/**\n * @since 1.0.0\n */\nexports.defaultTextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\n/**\n * @since 1.0.0\n */\nexports.defaultTextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n carrier[key] = value;\n },\n};\n//# sourceMappingURL=TextMapPropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopContextManager = void 0;\nconst context_1 = require(\"./context\");\nclass NoopContextManager {\n active() {\n return context_1.ROOT_CONTEXT;\n }\n with(_context, fn, thisArg, ...args) {\n return fn.call(thisArg, ...args);\n }\n bind(_context, target) {\n return target;\n }\n enable() {\n return this;\n }\n disable() {\n return this;\n }\n}\nexports.NoopContextManager = NoopContextManager;\n//# sourceMappingURL=NoopContextManager.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextAPI = void 0;\nconst NoopContextManager_1 = require(\"../context/NoopContextManager\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n *\n * @since 1.0.0\n */\nclass ContextAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Context API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n return this._instance;\n }\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n setGlobalContextManager(contextManager) {\n return (0, global_utils_1.registerGlobal)(API_NAME, contextManager, diag_1.DiagAPI.instance());\n }\n /**\n * Get the currently active context\n */\n active() {\n return this._getContextManager().active();\n }\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with(context, fn, thisArg, ...args) {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n bind(context, target) {\n return this._getContextManager().bind(context, target);\n }\n _getContextManager() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n /** Disable and remove the global context manager */\n disable() {\n this._getContextManager().disable();\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.ContextAPI = ContextAPI;\n//# sourceMappingURL=context.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceFlags = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n/**\n * @since 1.0.0\n */\nvar TraceFlags;\n(function (TraceFlags) {\n /** Represents no flag set. */\n TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n /** Bit to represent whether trace is sampled in trace flags. */\n TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags = exports.TraceFlags || (exports.TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;\nconst trace_flags_1 = require(\"./trace_flags\");\n/**\n * @since 1.0.0\n */\nexports.INVALID_SPANID = '0000000000000000';\n/**\n * @since 1.0.0\n */\nexports.INVALID_TRACEID = '00000000000000000000000000000000';\n/**\n * @since 1.0.0\n */\nexports.INVALID_SPAN_CONTEXT = {\n traceId: exports.INVALID_TRACEID,\n spanId: exports.INVALID_SPANID,\n traceFlags: trace_flags_1.TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonRecordingSpan = void 0;\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nclass NonRecordingSpan {\n constructor(spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT) {\n this._spanContext = spanContext;\n }\n // Returns a SpanContext.\n spanContext() {\n return this._spanContext;\n }\n // By default does nothing\n setAttribute(_key, _value) {\n return this;\n }\n // By default does nothing\n setAttributes(_attributes) {\n return this;\n }\n // By default does nothing\n addEvent(_name, _attributes) {\n return this;\n }\n addLink(_link) {\n return this;\n }\n addLinks(_links) {\n return this;\n }\n // By default does nothing\n setStatus(_status) {\n return this;\n }\n // By default does nothing\n updateName(_name) {\n return this;\n }\n // By default does nothing\n end(_endTime) { }\n // isRecording always returns false for NonRecordingSpan.\n isRecording() {\n return false;\n }\n // By default does nothing\n recordException(_exception, _time) { }\n}\nexports.NonRecordingSpan = NonRecordingSpan;\n//# sourceMappingURL=NonRecordingSpan.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getActiveSpan = exports.getSpan = void 0;\nconst context_1 = require(\"../context/context\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst context_2 = require(\"../api/context\");\n/**\n * span key\n */\nconst SPAN_KEY = (0, context_1.createContextKey)('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nfunction getSpan(context) {\n return context.getValue(SPAN_KEY) || undefined;\n}\nexports.getSpan = getSpan;\n/**\n * Gets the span from the current context, if one exists.\n */\nfunction getActiveSpan() {\n return getSpan(context_2.ContextAPI.getInstance().active());\n}\nexports.getActiveSpan = getActiveSpan;\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nfunction setSpan(context, span) {\n return context.setValue(SPAN_KEY, span);\n}\nexports.setSpan = setSpan;\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nfunction deleteSpan(context) {\n return context.deleteValue(SPAN_KEY);\n}\nexports.deleteSpan = deleteSpan;\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nfunction setSpanContext(context, spanContext) {\n return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));\n}\nexports.setSpanContext = setSpanContext;\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nfunction getSpanContext(context) {\n var _a;\n return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\nexports.getSpanContext = getSpanContext;\n//# sourceMappingURL=context-utils.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\n// Valid characters (0-9, a-f, A-F) are marked as 1.\nconst isHex = new Uint8Array([\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,\n]);\nfunction isValidHex(id, length) {\n // As of 1.9.0 the id was allowed to be a non-string value,\n // even though it was not possible in the types.\n if (typeof id !== 'string' || id.length !== length)\n return false;\n let r = 0;\n for (let i = 0; i < id.length; i += 4) {\n r +=\n (isHex[id.charCodeAt(i)] | 0) +\n (isHex[id.charCodeAt(i + 1)] | 0) +\n (isHex[id.charCodeAt(i + 2)] | 0) +\n (isHex[id.charCodeAt(i + 3)] | 0);\n }\n return r === length;\n}\n/**\n * @since 1.0.0\n */\nfunction isValidTraceId(traceId) {\n return isValidHex(traceId, 32) && traceId !== invalid_span_constants_1.INVALID_TRACEID;\n}\nexports.isValidTraceId = isValidTraceId;\n/**\n * @since 1.0.0\n */\nfunction isValidSpanId(spanId) {\n return isValidHex(spanId, 16) && spanId !== invalid_span_constants_1.INVALID_SPANID;\n}\nexports.isValidSpanId = isValidSpanId;\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n *\n * @since 1.0.0\n */\nfunction isSpanContextValid(spanContext) {\n return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\nexports.isSpanContextValid = isSpanContextValid;\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nfunction wrapSpanContext(spanContext) {\n return new NonRecordingSpan_1.NonRecordingSpan(spanContext);\n}\nexports.wrapSpanContext = wrapSpanContext;\n//# sourceMappingURL=spancontext-utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracer = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst spancontext_utils_1 = require(\"./spancontext-utils\");\nconst contextApi = context_1.ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nclass NoopTracer {\n // startSpan starts a noop span.\n startSpan(name, options, context = contextApi.active()) {\n const root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n if (root) {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n const parentFromContext = context && (0, context_utils_1.getSpanContext)(context);\n if (isSpanContext(parentFromContext) &&\n (0, spancontext_utils_1.isSpanContextValid)(parentFromContext)) {\n return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);\n }\n else {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n }\n startActiveSpan(name, arg2, arg3, arg4) {\n let opts;\n let ctx;\n let fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n const parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = (0, context_utils_1.setSpan)(parentContext, span);\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\nexports.NoopTracer = NoopTracer;\nfunction isSpanContext(spanContext) {\n return (spanContext !== null &&\n typeof spanContext === 'object' &&\n 'spanId' in spanContext &&\n typeof spanContext['spanId'] === 'string' &&\n 'traceId' in spanContext &&\n typeof spanContext['traceId'] === 'string' &&\n 'traceFlags' in spanContext &&\n typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracer = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\nconst NOOP_TRACER = new NoopTracer_1.NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n *\n * @since 1.0.0\n */\nclass ProxyTracer {\n constructor(provider, name, version, options) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n startSpan(name, options, context) {\n return this._getTracer().startSpan(name, options, context);\n }\n startActiveSpan(_name, _options, _context, _fn) {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!tracer) {\n return NOOP_TRACER;\n }\n this._delegate = tracer;\n return this._delegate;\n }\n}\nexports.ProxyTracer = ProxyTracer;\n//# sourceMappingURL=ProxyTracer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracerProvider = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nclass NoopTracerProvider {\n getTracer(_name, _version, _options) {\n return new NoopTracer_1.NoopTracer();\n }\n}\nexports.NoopTracerProvider = NoopTracerProvider;\n//# sourceMappingURL=NoopTracerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracerProvider = void 0;\nconst ProxyTracer_1 = require(\"./ProxyTracer\");\nconst NoopTracerProvider_1 = require(\"./NoopTracerProvider\");\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n *\n * @deprecated This will be removed in the next major version.\n * @since 1.0.0\n */\nclass ProxyTracerProvider {\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name, version, options) {\n var _a;\n return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version, options));\n }\n getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n }\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate) {\n this._delegate = delegate;\n }\n getDelegateTracer(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n }\n}\nexports.ProxyTracerProvider = ProxyTracerProvider;\n//# sourceMappingURL=ProxyTracerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n *\n * @since 1.0.0\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=SamplingResult.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanKind = void 0;\n/**\n * @since 1.0.0\n */\nvar SpanKind;\n(function (SpanKind) {\n /** Default value. Indicates that the span is used internally. */\n SpanKind[SpanKind[\"INTERNAL\"] = 0] = \"INTERNAL\";\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SpanKind[SpanKind[\"SERVER\"] = 1] = \"SERVER\";\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n SpanKind[SpanKind[\"CLIENT\"] = 2] = \"CLIENT\";\n /**\n * Indicates that the span describes producer sending a message to a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"PRODUCER\"] = 3] = \"PRODUCER\";\n /**\n * Indicates that the span describes consumer receiving a message from a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"CONSUMER\"] = 4] = \"CONSUMER\";\n})(SpanKind = exports.SpanKind || (exports.SpanKind = {}));\n//# sourceMappingURL=span_kind.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanStatusCode = void 0;\n/**\n * An enumeration of status codes.\n *\n * @since 1.0.0\n */\nvar SpanStatusCode;\n(function (SpanStatusCode) {\n /**\n * The default status.\n */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /**\n * The operation contains an error.\n */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));\n//# sourceMappingURL=status.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=tracestate-validators.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceStateImpl = void 0;\nconst tracestate_validators_1 = require(\"./tracestate-validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceStateImpl {\n constructor(rawTraceState) {\n this._internalState = new Map();\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return (Array.from(this._internalState.keys())\n // Use reduceRight() because keys are stored in reverse insertion order.\n .reduceRight((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR));\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n // Use reduceRight() so new keys (.set(...)) will be placed at the beginning\n .reduceRight((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, tracestate_validators_1.validateKey)(key) && (0, tracestate_validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n // @ts-expect-error TS6133 Accessed in tests only.\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceStateImpl = TraceStateImpl;\n//# sourceMappingURL=tracestate-impl.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTraceState = void 0;\nconst tracestate_impl_1 = require(\"./tracestate-impl\");\n/**\n * @since 1.1.0\n */\nfunction createTraceState(rawTraceState) {\n return new tracestate_impl_1.TraceStateImpl(rawTraceState);\n}\nexports.createTraceState = createTraceState;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.context = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_1 = require(\"./api/context\");\n/**\n * Entrypoint for context API\n * @since 1.0.0\n */\nexports.context = context_1.ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diag = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst diag_1 = require(\"./api/diag\");\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n *\n * @since 1.0.0\n */\nexports.diag = diag_1.DiagAPI.instance();\n//# sourceMappingURL=diag-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0;\nconst NoopMeter_1 = require(\"./NoopMeter\");\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nclass NoopMeterProvider {\n getMeter(_name, _version, _options) {\n return NoopMeter_1.NOOP_METER;\n }\n}\nexports.NoopMeterProvider = NoopMeterProvider;\nexports.NOOP_METER_PROVIDER = new NoopMeterProvider();\n//# sourceMappingURL=NoopMeterProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsAPI = void 0;\nconst NoopMeterProvider_1 = require(\"../metrics/NoopMeterProvider\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'metrics';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nclass MetricsAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Metrics API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n setGlobalMeterProvider(provider) {\n return (0, global_utils_1.registerGlobal)(API_NAME, provider, diag_1.DiagAPI.instance());\n }\n /**\n * Returns the global meter provider.\n */\n getMeterProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NoopMeterProvider_1.NOOP_METER_PROVIDER;\n }\n /**\n * Returns a meter from the global meter provider.\n */\n getMeter(name, version, options) {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n /** Remove the global meter provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.MetricsAPI = MetricsAPI;\n//# sourceMappingURL=metrics.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.metrics = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst metrics_1 = require(\"./api/metrics\");\n/**\n * Entrypoint for metrics API\n *\n * @since 1.3.0\n */\nexports.metrics = metrics_1.MetricsAPI.getInstance();\n//# sourceMappingURL=metrics-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTextMapPropagator = void 0;\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nclass NoopTextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context, _carrier) { }\n /** Noop extract function does nothing and returns the input context */\n extract(context, _carrier) {\n return context;\n }\n fields() {\n return [];\n }\n}\nexports.NoopTextMapPropagator = NoopTextMapPropagator;\n//# sourceMappingURL=NoopTextMapPropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deleteBaggage = exports.setBaggage = exports.getActiveBaggage = exports.getBaggage = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_2 = require(\"../context/context\");\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = (0, context_2.createContextKey)('OpenTelemetry Baggage Key');\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getBaggage(context) {\n return context.getValue(BAGGAGE_KEY) || undefined;\n}\nexports.getBaggage = getBaggage;\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getActiveBaggage() {\n return getBaggage(context_1.ContextAPI.getInstance().active());\n}\nexports.getActiveBaggage = getActiveBaggage;\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nfunction setBaggage(context, baggage) {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\nexports.setBaggage = setBaggage;\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nfunction deleteBaggage(context) {\n return context.deleteValue(BAGGAGE_KEY);\n}\nexports.deleteBaggage = deleteBaggage;\n//# sourceMappingURL=context-helpers.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PropagationAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopTextMapPropagator_1 = require(\"../propagation/NoopTextMapPropagator\");\nconst TextMapPropagator_1 = require(\"../propagation/TextMapPropagator\");\nconst context_helpers_1 = require(\"../baggage/context-helpers\");\nconst utils_1 = require(\"../baggage/utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n *\n * @since 1.0.0\n */\nclass PropagationAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this.createBaggage = utils_1.createBaggage;\n this.getBaggage = context_helpers_1.getBaggage;\n this.getActiveBaggage = context_helpers_1.getActiveBaggage;\n this.setBaggage = context_helpers_1.setBaggage;\n this.deleteBaggage = context_helpers_1.deleteBaggage;\n }\n /** Get the singleton instance of the Propagator API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n return this._instance;\n }\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n setGlobalPropagator(propagator) {\n return (0, global_utils_1.registerGlobal)(API_NAME, propagator, diag_1.DiagAPI.instance());\n }\n /**\n * Inject context into a carrier to be propagated inter-process\n *\n * @param context Context carrying tracing data to inject\n * @param carrier carrier to inject context into\n * @param setter Function used to set values on the carrier\n */\n inject(context, carrier, setter = TextMapPropagator_1.defaultTextMapSetter) {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\n /**\n * Extract context from a carrier\n *\n * @param context Context which the newly created context will inherit from\n * @param carrier Carrier to extract context from\n * @param getter Function used to extract keys from a carrier\n */\n extract(context, carrier, getter = TextMapPropagator_1.defaultTextMapGetter) {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields() {\n return this._getGlobalPropagator().fields();\n }\n /** Remove the global propagator */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n _getGlobalPropagator() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\nexports.PropagationAPI = PropagationAPI;\n//# sourceMappingURL=propagation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propagation = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst propagation_1 = require(\"./api/propagation\");\n/**\n * Entrypoint for propagation API\n *\n * @since 1.0.0\n */\nexports.propagation = propagation_1.PropagationAPI.getInstance();\n//# sourceMappingURL=propagation-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst ProxyTracerProvider_1 = require(\"../trace/ProxyTracerProvider\");\nconst spancontext_utils_1 = require(\"../trace/spancontext-utils\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n *\n * @since 1.0.0\n */\nclass TraceAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;\n this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;\n this.deleteSpan = context_utils_1.deleteSpan;\n this.getSpan = context_utils_1.getSpan;\n this.getActiveSpan = context_utils_1.getActiveSpan;\n this.getSpanContext = context_utils_1.getSpanContext;\n this.setSpan = context_utils_1.setSpan;\n this.setSpanContext = context_utils_1.setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n setGlobalTracerProvider(provider) {\n const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n /**\n * Returns the global tracer provider.\n */\n getTracerProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;\n }\n /**\n * Returns a tracer from the global tracer provider.\n */\n getTracer(name, version) {\n return this.getTracerProvider().getTracer(name, version);\n }\n /** Remove the global tracer provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n }\n}\nexports.TraceAPI = TraceAPI;\n//# sourceMappingURL=trace.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst trace_1 = require(\"./api/trace\");\n/**\n * Entrypoint for trace API\n *\n * @since 1.0.0\n */\nexports.trace = trace_1.TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = exports.propagation = exports.metrics = exports.diag = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.createTraceState = exports.TraceFlags = exports.SpanStatusCode = exports.SpanKind = exports.SamplingDecision = exports.ProxyTracerProvider = exports.ProxyTracer = exports.defaultTextMapSetter = exports.defaultTextMapGetter = exports.ValueType = exports.createNoopMeter = exports.DiagLogLevel = exports.DiagConsoleLogger = exports.ROOT_CONTEXT = exports.createContextKey = exports.baggageEntryMetadataFromString = void 0;\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"baggageEntryMetadataFromString\", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });\n// Context APIs\nvar context_1 = require(\"./context/context\");\nObject.defineProperty(exports, \"createContextKey\", { enumerable: true, get: function () { return context_1.createContextKey; } });\nObject.defineProperty(exports, \"ROOT_CONTEXT\", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } });\n// Diag APIs\nvar consoleLogger_1 = require(\"./diag/consoleLogger\");\nObject.defineProperty(exports, \"DiagConsoleLogger\", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } });\nvar types_1 = require(\"./diag/types\");\nObject.defineProperty(exports, \"DiagLogLevel\", { enumerable: true, get: function () { return types_1.DiagLogLevel; } });\n// Metrics APIs\nvar NoopMeter_1 = require(\"./metrics/NoopMeter\");\nObject.defineProperty(exports, \"createNoopMeter\", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } });\nvar Metric_1 = require(\"./metrics/Metric\");\nObject.defineProperty(exports, \"ValueType\", { enumerable: true, get: function () { return Metric_1.ValueType; } });\n// Propagation APIs\nvar TextMapPropagator_1 = require(\"./propagation/TextMapPropagator\");\nObject.defineProperty(exports, \"defaultTextMapGetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } });\nObject.defineProperty(exports, \"defaultTextMapSetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } });\nvar ProxyTracer_1 = require(\"./trace/ProxyTracer\");\nObject.defineProperty(exports, \"ProxyTracer\", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } });\n// TODO: Remove ProxyTracerProvider export in the next major version.\nvar ProxyTracerProvider_1 = require(\"./trace/ProxyTracerProvider\");\nObject.defineProperty(exports, \"ProxyTracerProvider\", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } });\nvar SamplingResult_1 = require(\"./trace/SamplingResult\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } });\nvar span_kind_1 = require(\"./trace/span_kind\");\nObject.defineProperty(exports, \"SpanKind\", { enumerable: true, get: function () { return span_kind_1.SpanKind; } });\nvar status_1 = require(\"./trace/status\");\nObject.defineProperty(exports, \"SpanStatusCode\", { enumerable: true, get: function () { return status_1.SpanStatusCode; } });\nvar trace_flags_1 = require(\"./trace/trace_flags\");\nObject.defineProperty(exports, \"TraceFlags\", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } });\nvar utils_2 = require(\"./trace/internal/utils\");\nObject.defineProperty(exports, \"createTraceState\", { enumerable: true, get: function () { return utils_2.createTraceState; } });\nvar spancontext_utils_1 = require(\"./trace/spancontext-utils\");\nObject.defineProperty(exports, \"isSpanContextValid\", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });\nObject.defineProperty(exports, \"isValidTraceId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });\nObject.defineProperty(exports, \"isValidSpanId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });\nvar invalid_span_constants_1 = require(\"./trace/invalid-span-constants\");\nObject.defineProperty(exports, \"INVALID_SPANID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });\nObject.defineProperty(exports, \"INVALID_TRACEID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });\nObject.defineProperty(exports, \"INVALID_SPAN_CONTEXT\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_api_1 = require(\"./context-api\");\nObject.defineProperty(exports, \"context\", { enumerable: true, get: function () { return context_api_1.context; } });\nconst diag_api_1 = require(\"./diag-api\");\nObject.defineProperty(exports, \"diag\", { enumerable: true, get: function () { return diag_api_1.diag; } });\nconst metrics_api_1 = require(\"./metrics-api\");\nObject.defineProperty(exports, \"metrics\", { enumerable: true, get: function () { return metrics_api_1.metrics; } });\nconst propagation_api_1 = require(\"./propagation-api\");\nObject.defineProperty(exports, \"propagation\", { enumerable: true, get: function () { return propagation_api_1.propagation; } });\nconst trace_api_1 = require(\"./trace-api\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return trace_api_1.trace; } });\n// Default export.\nexports.default = {\n context: context_api_1.context,\n diag: diag_api_1.diag,\n metrics: metrics_api_1.metrics,\n propagation: propagation_api_1.propagation,\n trace: trace_api_1.trace,\n};\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracingSuppressed = exports.unsuppressTracing = exports.suppressTracing = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst SUPPRESS_TRACING_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key SUPPRESS_TRACING');\nfunction suppressTracing(context) {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\nexports.suppressTracing = suppressTracing;\nfunction unsuppressTracing(context) {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\nexports.unsuppressTracing = unsuppressTracing;\nfunction isTracingSuppressed(context) {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\nexports.isTracingSuppressed = isTracingSuppressed;\n//# sourceMappingURL=suppress-tracing.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BAGGAGE_MAX_TOTAL_LENGTH = exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = exports.BAGGAGE_HEADER = exports.BAGGAGE_ITEMS_SEPARATOR = exports.BAGGAGE_PROPERTIES_SEPARATOR = exports.BAGGAGE_KEY_PAIR_SEPARATOR = void 0;\nexports.BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexports.BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexports.BAGGAGE_ITEMS_SEPARATOR = ',';\n// Name of the http header used to propagate the baggage\nexports.BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n//# sourceMappingURL=constants.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseKeyPairsIntoRecord = exports.parsePairKeyValue = exports.getKeyPairs = exports.serializeKeyPairs = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst constants_1 = require(\"./constants\");\nfunction serializeKeyPairs(keyPairs) {\n return keyPairs.reduce((hValue, current) => {\n const value = `${hValue}${hValue !== '' ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ''}${current}`;\n return value.length > constants_1.BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\nexports.serializeKeyPairs = serializeKeyPairs;\nfunction getKeyPairs(baggage) {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += constants_1.BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n return entry;\n });\n}\nexports.getKeyPairs = getKeyPairs;\nfunction parsePairKeyValue(entry) {\n if (!entry)\n return;\n const metadataSeparatorIndex = entry.indexOf(constants_1.BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart = metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n const separatorIndex = keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0)\n return;\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n if (!rawKey || !rawValue)\n return;\n let key;\n let value;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n }\n catch {\n return;\n }\n let metadata;\n if (metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = (0, api_1.baggageEntryMetadataFromString)(metadataString);\n }\n return { key, value, metadata };\n}\nexports.parsePairKeyValue = parsePairKeyValue;\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nfunction parseKeyPairsIntoRecord(value) {\n const result = {};\n if (typeof value === 'string' && value.length > 0) {\n value.split(constants_1.BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n return result;\n}\nexports.parseKeyPairsIntoRecord = parseKeyPairsIntoRecord;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CBaggagePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../../trace/suppress-tracing\");\nconst constants_1 = require(\"../constants\");\nconst utils_1 = require(\"../utils\");\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nclass W3CBaggagePropagator {\n inject(context, carrier, setter) {\n const baggage = api_1.propagation.getBaggage(context);\n if (!baggage || (0, suppress_tracing_1.isTracingSuppressed)(context))\n return;\n const keyPairs = (0, utils_1.getKeyPairs)(baggage)\n .filter((pair) => {\n return pair.length <= constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = (0, utils_1.serializeKeyPairs)(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, constants_1.BAGGAGE_HEADER, headerValue);\n }\n }\n extract(context, carrier, getter) {\n const headerValue = getter.get(carrier, constants_1.BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString)\n return context;\n const baggage = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(constants_1.BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = (0, utils_1.parsePairKeyValue)(entry);\n if (keyPair) {\n const baggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return api_1.propagation.setBaggage(context, api_1.propagation.createBaggage(baggage));\n }\n fields() {\n return [constants_1.BAGGAGE_HEADER];\n }\n}\nexports.W3CBaggagePropagator = W3CBaggagePropagator;\n//# sourceMappingURL=W3CBaggagePropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnchoredClock = void 0;\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nclass AnchoredClock {\n _monotonicClock;\n _epochMillis;\n _performanceMillis;\n /**\n * Create a new AnchoredClock anchored to the current time returned by systemClock.\n *\n * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n */\n constructor(systemClock, monotonicClock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\n /**\n * Returns the current time by adding the number of milliseconds since the\n * AnchoredClock was created to the creation epoch time\n */\n now() {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\nexports.AnchoredClock = AnchoredClock;\n//# sourceMappingURL=anchored-clock.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAttributeValue = exports.isAttributeKey = exports.sanitizeAttributes = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nfunction sanitizeAttributes(attributes) {\n const out = {};\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n api_1.diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = attributes[key];\n if (!isAttributeValue(val)) {\n api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n }\n else {\n out[key] = val;\n }\n }\n return out;\n}\nexports.sanitizeAttributes = sanitizeAttributes;\nfunction isAttributeKey(key) {\n return typeof key === 'string' && key !== '';\n}\nexports.isAttributeKey = isAttributeKey;\nfunction isAttributeValue(val) {\n if (val == null) {\n return true;\n }\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n return isValidPrimitiveAttributeValueType(typeof val);\n}\nexports.isAttributeValue = isAttributeValue;\nfunction isHomogeneousAttributeValueArray(arr) {\n let type;\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null)\n continue;\n const elementType = typeof element;\n if (elementType === type) {\n continue;\n }\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n return false;\n }\n return true;\n}\nfunction isValidPrimitiveAttributeValueType(valType) {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n return false;\n}\n//# sourceMappingURL=attributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loggingErrorHandler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nfunction loggingErrorHandler() {\n return (ex) => {\n api_1.diag.error(stringifyException(ex));\n };\n}\nexports.loggingErrorHandler = loggingErrorHandler;\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex) {\n if (typeof ex === 'string') {\n return ex;\n }\n else {\n return JSON.stringify(flattenException(ex));\n }\n}\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex) {\n const result = {};\n let current = ex;\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName])\n return;\n const value = current[propertyName];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n return result;\n}\n//# sourceMappingURL=logging-error-handler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalErrorHandler = exports.setGlobalErrorHandler = void 0;\nconst logging_error_handler_1 = require(\"./logging-error-handler\");\n/** The global error handler delegate */\nlet delegateHandler = (0, logging_error_handler_1.loggingErrorHandler)();\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nfunction setGlobalErrorHandler(handler) {\n delegateHandler = handler;\n}\nexports.setGlobalErrorHandler = setGlobalErrorHandler;\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nfunction globalErrorHandler(ex) {\n try {\n delegateHandler(ex);\n }\n catch { } // eslint-disable-line no-empty\n}\nexports.globalErrorHandler = globalErrorHandler;\n//# sourceMappingURL=global-error-handler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringListFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports.getNumberFromEnv = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst util_1 = require(\"util\");\n/**\n * Retrieves a number from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number.\n * - Returns a number in all other cases.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {number | undefined} - The number value or `undefined`.\n */\nfunction getNumberFromEnv(key) {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n const value = Number(raw);\n if (isNaN(value)) {\n api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected a number, using defaults`);\n return undefined;\n }\n return value;\n}\nexports.getNumberFromEnv = getNumberFromEnv;\n/**\n * Retrieves a string from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string | undefined} - The string value or `undefined`.\n */\nfunction getStringFromEnv(key) {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\nexports.getStringFromEnv = getStringFromEnv;\n/**\n * Retrieves a boolean value from an environment variable.\n * - Trims leading and trailing whitespace and ignores casing.\n * - Returns `false` if the environment variable is empty, unset, or contains only whitespace.\n * - Returns `false` for strings that cannot be mapped to a boolean.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace.\n */\nfunction getBooleanFromEnv(key) {\n const raw = process.env[key]?.trim().toLowerCase();\n if (raw == null || raw === '') {\n // NOTE: falling back to `false` instead of `undefined` as required by the specification.\n // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary\n // normalizations in the consuming code.\n return false;\n }\n if (raw === 'true') {\n return true;\n }\n else if (raw === 'false') {\n return false;\n }\n else {\n api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`);\n return false;\n }\n}\nexports.getBooleanFromEnv = getBooleanFromEnv;\n/**\n * Retrieves a list of strings from an environment variable.\n * - Uses ',' as the delimiter.\n * - Trims leading and trailing whitespace from each entry.\n * - Excludes empty entries.\n * - Returns `undefined` if the environment variable is empty or contains only whitespace.\n * - Returns an empty array if all entries are empty or whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string[] | undefined} - The list of strings or `undefined`.\n */\nfunction getStringListFromEnv(key) {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\nexports.getStringListFromEnv = getStringListFromEnv;\n//# sourceMappingURL=environment.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/**\n * @deprecated Use globalThis directly instead.\n */\nexports._globalThis = globalThis;\n//# sourceMappingURL=globalThis.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '2.6.0';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConstMap = void 0;\n/**\n * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction createConstMap(values) {\n // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n let res = {};\n const len = values.length;\n for (let lp = 0; lp < len; lp++) {\n const val = values[lp];\n if (val) {\n res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n }\n }\n return res;\n}\nexports.createConstMap = createConstMap;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEMATTRS_NET_HOST_CARRIER_ICC = exports.SEMATTRS_NET_HOST_CARRIER_MNC = exports.SEMATTRS_NET_HOST_CARRIER_MCC = exports.SEMATTRS_NET_HOST_CARRIER_NAME = exports.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = exports.SEMATTRS_NET_HOST_CONNECTION_TYPE = exports.SEMATTRS_NET_HOST_NAME = exports.SEMATTRS_NET_HOST_PORT = exports.SEMATTRS_NET_HOST_IP = exports.SEMATTRS_NET_PEER_NAME = exports.SEMATTRS_NET_PEER_PORT = exports.SEMATTRS_NET_PEER_IP = exports.SEMATTRS_NET_TRANSPORT = exports.SEMATTRS_FAAS_INVOKED_REGION = exports.SEMATTRS_FAAS_INVOKED_PROVIDER = exports.SEMATTRS_FAAS_INVOKED_NAME = exports.SEMATTRS_FAAS_COLDSTART = exports.SEMATTRS_FAAS_CRON = exports.SEMATTRS_FAAS_TIME = exports.SEMATTRS_FAAS_DOCUMENT_NAME = exports.SEMATTRS_FAAS_DOCUMENT_TIME = exports.SEMATTRS_FAAS_DOCUMENT_OPERATION = exports.SEMATTRS_FAAS_DOCUMENT_COLLECTION = exports.SEMATTRS_FAAS_EXECUTION = exports.SEMATTRS_FAAS_TRIGGER = exports.SEMATTRS_EXCEPTION_ESCAPED = exports.SEMATTRS_EXCEPTION_STACKTRACE = exports.SEMATTRS_EXCEPTION_MESSAGE = exports.SEMATTRS_EXCEPTION_TYPE = exports.SEMATTRS_DB_SQL_TABLE = exports.SEMATTRS_DB_MONGODB_COLLECTION = exports.SEMATTRS_DB_REDIS_DATABASE_INDEX = exports.SEMATTRS_DB_HBASE_NAMESPACE = exports.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = exports.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = exports.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = exports.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = exports.SEMATTRS_DB_CASSANDRA_TABLE = exports.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = exports.SEMATTRS_DB_CASSANDRA_PAGE_SIZE = exports.SEMATTRS_DB_CASSANDRA_KEYSPACE = exports.SEMATTRS_DB_MSSQL_INSTANCE_NAME = exports.SEMATTRS_DB_OPERATION = exports.SEMATTRS_DB_STATEMENT = exports.SEMATTRS_DB_NAME = exports.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = exports.SEMATTRS_DB_USER = exports.SEMATTRS_DB_CONNECTION_STRING = exports.SEMATTRS_DB_SYSTEM = exports.SEMATTRS_AWS_LAMBDA_INVOKED_ARN = void 0;\nexports.SEMATTRS_MESSAGING_DESTINATION_KIND = exports.SEMATTRS_MESSAGING_DESTINATION = exports.SEMATTRS_MESSAGING_SYSTEM = exports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = exports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = exports.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = exports.SEMATTRS_AWS_DYNAMODB_COUNT = exports.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = exports.SEMATTRS_AWS_DYNAMODB_SEGMENT = exports.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = exports.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = exports.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = exports.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = exports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = exports.SEMATTRS_AWS_DYNAMODB_SELECT = exports.SEMATTRS_AWS_DYNAMODB_INDEX_NAME = exports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = exports.SEMATTRS_AWS_DYNAMODB_LIMIT = exports.SEMATTRS_AWS_DYNAMODB_PROJECTION = exports.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = exports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = exports.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = exports.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = exports.SEMATTRS_HTTP_CLIENT_IP = exports.SEMATTRS_HTTP_ROUTE = exports.SEMATTRS_HTTP_SERVER_NAME = exports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = exports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = exports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = exports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = exports.SEMATTRS_HTTP_USER_AGENT = exports.SEMATTRS_HTTP_FLAVOR = exports.SEMATTRS_HTTP_STATUS_CODE = exports.SEMATTRS_HTTP_SCHEME = exports.SEMATTRS_HTTP_HOST = exports.SEMATTRS_HTTP_TARGET = exports.SEMATTRS_HTTP_URL = exports.SEMATTRS_HTTP_METHOD = exports.SEMATTRS_CODE_LINENO = exports.SEMATTRS_CODE_FILEPATH = exports.SEMATTRS_CODE_NAMESPACE = exports.SEMATTRS_CODE_FUNCTION = exports.SEMATTRS_THREAD_NAME = exports.SEMATTRS_THREAD_ID = exports.SEMATTRS_ENDUSER_SCOPE = exports.SEMATTRS_ENDUSER_ROLE = exports.SEMATTRS_ENDUSER_ID = exports.SEMATTRS_PEER_SERVICE = void 0;\nexports.DBSYSTEMVALUES_FILEMAKER = exports.DBSYSTEMVALUES_DERBY = exports.DBSYSTEMVALUES_FIREBIRD = exports.DBSYSTEMVALUES_ADABAS = exports.DBSYSTEMVALUES_CACHE = exports.DBSYSTEMVALUES_EDB = exports.DBSYSTEMVALUES_FIRSTSQL = exports.DBSYSTEMVALUES_INGRES = exports.DBSYSTEMVALUES_HANADB = exports.DBSYSTEMVALUES_MAXDB = exports.DBSYSTEMVALUES_PROGRESS = exports.DBSYSTEMVALUES_HSQLDB = exports.DBSYSTEMVALUES_CLOUDSCAPE = exports.DBSYSTEMVALUES_HIVE = exports.DBSYSTEMVALUES_REDSHIFT = exports.DBSYSTEMVALUES_POSTGRESQL = exports.DBSYSTEMVALUES_DB2 = exports.DBSYSTEMVALUES_ORACLE = exports.DBSYSTEMVALUES_MYSQL = exports.DBSYSTEMVALUES_MSSQL = exports.DBSYSTEMVALUES_OTHER_SQL = exports.SemanticAttributes = exports.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = exports.SEMATTRS_MESSAGE_COMPRESSED_SIZE = exports.SEMATTRS_MESSAGE_ID = exports.SEMATTRS_MESSAGE_TYPE = exports.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = exports.SEMATTRS_RPC_JSONRPC_ERROR_CODE = exports.SEMATTRS_RPC_JSONRPC_REQUEST_ID = exports.SEMATTRS_RPC_JSONRPC_VERSION = exports.SEMATTRS_RPC_GRPC_STATUS_CODE = exports.SEMATTRS_RPC_METHOD = exports.SEMATTRS_RPC_SERVICE = exports.SEMATTRS_RPC_SYSTEM = exports.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = exports.SEMATTRS_MESSAGING_KAFKA_PARTITION = exports.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = exports.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = exports.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = exports.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = exports.SEMATTRS_MESSAGING_CONSUMER_ID = exports.SEMATTRS_MESSAGING_OPERATION = exports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = exports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = exports.SEMATTRS_MESSAGING_CONVERSATION_ID = exports.SEMATTRS_MESSAGING_MESSAGE_ID = exports.SEMATTRS_MESSAGING_URL = exports.SEMATTRS_MESSAGING_PROTOCOL_VERSION = exports.SEMATTRS_MESSAGING_PROTOCOL = exports.SEMATTRS_MESSAGING_TEMP_DESTINATION = void 0;\nexports.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = exports.FaasDocumentOperationValues = exports.FAASDOCUMENTOPERATIONVALUES_DELETE = exports.FAASDOCUMENTOPERATIONVALUES_EDIT = exports.FAASDOCUMENTOPERATIONVALUES_INSERT = exports.FaasTriggerValues = exports.FAASTRIGGERVALUES_OTHER = exports.FAASTRIGGERVALUES_TIMER = exports.FAASTRIGGERVALUES_PUBSUB = exports.FAASTRIGGERVALUES_HTTP = exports.FAASTRIGGERVALUES_DATASOURCE = exports.DbCassandraConsistencyLevelValues = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = exports.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ANY = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_THREE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_TWO = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ONE = exports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = exports.DBCASSANDRACONSISTENCYLEVELVALUES_ALL = exports.DbSystemValues = exports.DBSYSTEMVALUES_COCKROACHDB = exports.DBSYSTEMVALUES_MEMCACHED = exports.DBSYSTEMVALUES_ELASTICSEARCH = exports.DBSYSTEMVALUES_GEODE = exports.DBSYSTEMVALUES_NEO4J = exports.DBSYSTEMVALUES_DYNAMODB = exports.DBSYSTEMVALUES_COSMOSDB = exports.DBSYSTEMVALUES_COUCHDB = exports.DBSYSTEMVALUES_COUCHBASE = exports.DBSYSTEMVALUES_REDIS = exports.DBSYSTEMVALUES_MONGODB = exports.DBSYSTEMVALUES_HBASE = exports.DBSYSTEMVALUES_CASSANDRA = exports.DBSYSTEMVALUES_COLDFUSION = exports.DBSYSTEMVALUES_H2 = exports.DBSYSTEMVALUES_VERTICA = exports.DBSYSTEMVALUES_TERADATA = exports.DBSYSTEMVALUES_SYBASE = exports.DBSYSTEMVALUES_SQLITE = exports.DBSYSTEMVALUES_POINTBASE = exports.DBSYSTEMVALUES_PERVASIVE = exports.DBSYSTEMVALUES_NETEZZA = exports.DBSYSTEMVALUES_MARIADB = exports.DBSYSTEMVALUES_INTERBASE = exports.DBSYSTEMVALUES_INSTANTDB = exports.DBSYSTEMVALUES_INFORMIX = void 0;\nexports.MESSAGINGOPERATIONVALUES_RECEIVE = exports.MessagingDestinationKindValues = exports.MESSAGINGDESTINATIONKINDVALUES_TOPIC = exports.MESSAGINGDESTINATIONKINDVALUES_QUEUE = exports.HttpFlavorValues = exports.HTTPFLAVORVALUES_QUIC = exports.HTTPFLAVORVALUES_SPDY = exports.HTTPFLAVORVALUES_HTTP_2_0 = exports.HTTPFLAVORVALUES_HTTP_1_1 = exports.HTTPFLAVORVALUES_HTTP_1_0 = exports.NetHostConnectionSubtypeValues = exports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_NR = exports.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = exports.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_GSM = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = exports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = exports.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = exports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = exports.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = exports.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = exports.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = exports.NetHostConnectionTypeValues = exports.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = exports.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = exports.NETHOSTCONNECTIONTYPEVALUES_CELL = exports.NETHOSTCONNECTIONTYPEVALUES_WIRED = exports.NETHOSTCONNECTIONTYPEVALUES_WIFI = exports.NetTransportValues = exports.NETTRANSPORTVALUES_OTHER = exports.NETTRANSPORTVALUES_INPROC = exports.NETTRANSPORTVALUES_PIPE = exports.NETTRANSPORTVALUES_UNIX = exports.NETTRANSPORTVALUES_IP = exports.NETTRANSPORTVALUES_IP_UDP = exports.NETTRANSPORTVALUES_IP_TCP = exports.FaasInvokedProviderValues = exports.FAASINVOKEDPROVIDERVALUES_GCP = exports.FAASINVOKEDPROVIDERVALUES_AZURE = exports.FAASINVOKEDPROVIDERVALUES_AWS = void 0;\nexports.MessageTypeValues = exports.MESSAGETYPEVALUES_RECEIVED = exports.MESSAGETYPEVALUES_SENT = exports.RpcGrpcStatusCodeValues = exports.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = exports.RPCGRPCSTATUSCODEVALUES_DATA_LOSS = exports.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = exports.RPCGRPCSTATUSCODEVALUES_INTERNAL = exports.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = exports.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = exports.RPCGRPCSTATUSCODEVALUES_ABORTED = exports.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = exports.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = exports.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = exports.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = exports.RPCGRPCSTATUSCODEVALUES_NOT_FOUND = exports.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = exports.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = exports.RPCGRPCSTATUSCODEVALUES_UNKNOWN = exports.RPCGRPCSTATUSCODEVALUES_CANCELLED = exports.RPCGRPCSTATUSCODEVALUES_OK = exports.MessagingOperationValues = exports.MESSAGINGOPERATIONVALUES_PROCESS = void 0;\nconst utils_1 = require(\"../internal/utils\");\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nconst TMP_DB_SYSTEM = 'db.system';\nconst TMP_DB_CONNECTION_STRING = 'db.connection_string';\nconst TMP_DB_USER = 'db.user';\nconst TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nconst TMP_DB_NAME = 'db.name';\nconst TMP_DB_STATEMENT = 'db.statement';\nconst TMP_DB_OPERATION = 'db.operation';\nconst TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nconst TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nconst TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nconst TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nconst TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nconst TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nconst TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count';\nconst TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nconst TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nconst TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nconst TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nconst TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nconst TMP_DB_SQL_TABLE = 'db.sql.table';\nconst TMP_EXCEPTION_TYPE = 'exception.type';\nconst TMP_EXCEPTION_MESSAGE = 'exception.message';\nconst TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nconst TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nconst TMP_FAAS_TRIGGER = 'faas.trigger';\nconst TMP_FAAS_EXECUTION = 'faas.execution';\nconst TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nconst TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nconst TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nconst TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nconst TMP_FAAS_TIME = 'faas.time';\nconst TMP_FAAS_CRON = 'faas.cron';\nconst TMP_FAAS_COLDSTART = 'faas.coldstart';\nconst TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nconst TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nconst TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nconst TMP_NET_TRANSPORT = 'net.transport';\nconst TMP_NET_PEER_IP = 'net.peer.ip';\nconst TMP_NET_PEER_PORT = 'net.peer.port';\nconst TMP_NET_PEER_NAME = 'net.peer.name';\nconst TMP_NET_HOST_IP = 'net.host.ip';\nconst TMP_NET_HOST_PORT = 'net.host.port';\nconst TMP_NET_HOST_NAME = 'net.host.name';\nconst TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nconst TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nconst TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nconst TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nconst TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nconst TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nconst TMP_PEER_SERVICE = 'peer.service';\nconst TMP_ENDUSER_ID = 'enduser.id';\nconst TMP_ENDUSER_ROLE = 'enduser.role';\nconst TMP_ENDUSER_SCOPE = 'enduser.scope';\nconst TMP_THREAD_ID = 'thread.id';\nconst TMP_THREAD_NAME = 'thread.name';\nconst TMP_CODE_FUNCTION = 'code.function';\nconst TMP_CODE_NAMESPACE = 'code.namespace';\nconst TMP_CODE_FILEPATH = 'code.filepath';\nconst TMP_CODE_LINENO = 'code.lineno';\nconst TMP_HTTP_METHOD = 'http.method';\nconst TMP_HTTP_URL = 'http.url';\nconst TMP_HTTP_TARGET = 'http.target';\nconst TMP_HTTP_HOST = 'http.host';\nconst TMP_HTTP_SCHEME = 'http.scheme';\nconst TMP_HTTP_STATUS_CODE = 'http.status_code';\nconst TMP_HTTP_FLAVOR = 'http.flavor';\nconst TMP_HTTP_USER_AGENT = 'http.user_agent';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed';\nconst TMP_HTTP_SERVER_NAME = 'http.server_name';\nconst TMP_HTTP_ROUTE = 'http.route';\nconst TMP_HTTP_CLIENT_IP = 'http.client_ip';\nconst TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nconst TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nconst TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = 'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = 'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = 'aws.dynamodb.provisioned_write_capacity';\nconst TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nconst TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nconst TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nconst TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nconst TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nconst TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = 'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = 'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = 'aws.dynamodb.exclusive_start_table';\nconst TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nconst TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nconst TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nconst TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nconst TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nconst TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nconst TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = 'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = 'aws.dynamodb.global_secondary_index_updates';\nconst TMP_MESSAGING_SYSTEM = 'messaging.system';\nconst TMP_MESSAGING_DESTINATION = 'messaging.destination';\nconst TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nconst TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nconst TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nconst TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nconst TMP_MESSAGING_URL = 'messaging.url';\nconst TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nconst TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = 'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = 'messaging.message_payload_compressed_size_bytes';\nconst TMP_MESSAGING_OPERATION = 'messaging.operation';\nconst TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nconst TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nconst TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nconst TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nconst TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nconst TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nconst TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nconst TMP_RPC_SYSTEM = 'rpc.system';\nconst TMP_RPC_SERVICE = 'rpc.service';\nconst TMP_RPC_METHOD = 'rpc.method';\nconst TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nconst TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nconst TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nconst TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nconst TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nconst TMP_MESSAGE_TYPE = 'message.type';\nconst TMP_MESSAGE_ID = 'message.id';\nconst TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nconst TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_USER = TMP_DB_USER;\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called "schema name".\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_NAME = TMP_DB_NAME;\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL = TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_COORDINATOR_ID = TMP_DB_CASSANDRA_COORDINATOR_ID;\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_CASSANDRA_COORDINATOR_DC = TMP_DB_CASSANDRA_COORDINATOR_DC;\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexports.SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexports.SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexports.SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically "in flight".\nThis may be actually "in flight" in some languages (e.g. if the exception\nis passed to a Context manager's `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexports.SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CONNECTION_SUBTYPE = TMP_NET_HOST_CONNECTION_SUBTYPE;\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n/**\n * Current "managed" thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit's name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n/**\n * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute's value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH = TMP_HTTP_REQUEST_CONTENT_LENGTH;\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH = TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexports.SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it's the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexports.SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY = TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS = TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY = TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ = TMP_AWS_DYNAMODB_CONSISTENT_READ;\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET = TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES = TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE = TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS = TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT = TMP_AWS_DYNAMODB_SCANNED_COUNT;\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS = TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES = TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.SEMATTRS_MESSAGING_DESTINATION_KIND = TMP_MESSAGING_DESTINATION_KIND;\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_TEMP_DESTINATION = TMP_MESSAGING_TEMP_DESTINATION;\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexports.SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexports.SEMATTRS_MESSAGING_PROTOCOL_VERSION = TMP_MESSAGING_PROTOCOL_VERSION;\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexports.SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexports.SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES = TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexports.SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY = TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message_id` in that they're not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY = TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP = TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexports.SemanticAttributes = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_AWS_LAMBDA_INVOKED_ARN,\n TMP_DB_SYSTEM,\n TMP_DB_CONNECTION_STRING,\n TMP_DB_USER,\n TMP_DB_JDBC_DRIVER_CLASSNAME,\n TMP_DB_NAME,\n TMP_DB_STATEMENT,\n TMP_DB_OPERATION,\n TMP_DB_MSSQL_INSTANCE_NAME,\n TMP_DB_CASSANDRA_KEYSPACE,\n TMP_DB_CASSANDRA_PAGE_SIZE,\n TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n TMP_DB_CASSANDRA_TABLE,\n TMP_DB_CASSANDRA_IDEMPOTENCE,\n TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n TMP_DB_CASSANDRA_COORDINATOR_ID,\n TMP_DB_CASSANDRA_COORDINATOR_DC,\n TMP_DB_HBASE_NAMESPACE,\n TMP_DB_REDIS_DATABASE_INDEX,\n TMP_DB_MONGODB_COLLECTION,\n TMP_DB_SQL_TABLE,\n TMP_EXCEPTION_TYPE,\n TMP_EXCEPTION_MESSAGE,\n TMP_EXCEPTION_STACKTRACE,\n TMP_EXCEPTION_ESCAPED,\n TMP_FAAS_TRIGGER,\n TMP_FAAS_EXECUTION,\n TMP_FAAS_DOCUMENT_COLLECTION,\n TMP_FAAS_DOCUMENT_OPERATION,\n TMP_FAAS_DOCUMENT_TIME,\n TMP_FAAS_DOCUMENT_NAME,\n TMP_FAAS_TIME,\n TMP_FAAS_CRON,\n TMP_FAAS_COLDSTART,\n TMP_FAAS_INVOKED_NAME,\n TMP_FAAS_INVOKED_PROVIDER,\n TMP_FAAS_INVOKED_REGION,\n TMP_NET_TRANSPORT,\n TMP_NET_PEER_IP,\n TMP_NET_PEER_PORT,\n TMP_NET_PEER_NAME,\n TMP_NET_HOST_IP,\n TMP_NET_HOST_PORT,\n TMP_NET_HOST_NAME,\n TMP_NET_HOST_CONNECTION_TYPE,\n TMP_NET_HOST_CONNECTION_SUBTYPE,\n TMP_NET_HOST_CARRIER_NAME,\n TMP_NET_HOST_CARRIER_MCC,\n TMP_NET_HOST_CARRIER_MNC,\n TMP_NET_HOST_CARRIER_ICC,\n TMP_PEER_SERVICE,\n TMP_ENDUSER_ID,\n TMP_ENDUSER_ROLE,\n TMP_ENDUSER_SCOPE,\n TMP_THREAD_ID,\n TMP_THREAD_NAME,\n TMP_CODE_FUNCTION,\n TMP_CODE_NAMESPACE,\n TMP_CODE_FILEPATH,\n TMP_CODE_LINENO,\n TMP_HTTP_METHOD,\n TMP_HTTP_URL,\n TMP_HTTP_TARGET,\n TMP_HTTP_HOST,\n TMP_HTTP_SCHEME,\n TMP_HTTP_STATUS_CODE,\n TMP_HTTP_FLAVOR,\n TMP_HTTP_USER_AGENT,\n TMP_HTTP_REQUEST_CONTENT_LENGTH,\n TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n TMP_HTTP_SERVER_NAME,\n TMP_HTTP_ROUTE,\n TMP_HTTP_CLIENT_IP,\n TMP_AWS_DYNAMODB_TABLE_NAMES,\n TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n TMP_AWS_DYNAMODB_CONSISTENT_READ,\n TMP_AWS_DYNAMODB_PROJECTION,\n TMP_AWS_DYNAMODB_LIMIT,\n TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n TMP_AWS_DYNAMODB_INDEX_NAME,\n TMP_AWS_DYNAMODB_SELECT,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n TMP_AWS_DYNAMODB_TABLE_COUNT,\n TMP_AWS_DYNAMODB_SCAN_FORWARD,\n TMP_AWS_DYNAMODB_SEGMENT,\n TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n TMP_AWS_DYNAMODB_COUNT,\n TMP_AWS_DYNAMODB_SCANNED_COUNT,\n TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n TMP_MESSAGING_SYSTEM,\n TMP_MESSAGING_DESTINATION,\n TMP_MESSAGING_DESTINATION_KIND,\n TMP_MESSAGING_TEMP_DESTINATION,\n TMP_MESSAGING_PROTOCOL,\n TMP_MESSAGING_PROTOCOL_VERSION,\n TMP_MESSAGING_URL,\n TMP_MESSAGING_MESSAGE_ID,\n TMP_MESSAGING_CONVERSATION_ID,\n TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n TMP_MESSAGING_OPERATION,\n TMP_MESSAGING_CONSUMER_ID,\n TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n TMP_MESSAGING_KAFKA_CLIENT_ID,\n TMP_MESSAGING_KAFKA_PARTITION,\n TMP_MESSAGING_KAFKA_TOMBSTONE,\n TMP_RPC_SYSTEM,\n TMP_RPC_SERVICE,\n TMP_RPC_METHOD,\n TMP_RPC_GRPC_STATUS_CODE,\n TMP_RPC_JSONRPC_VERSION,\n TMP_RPC_JSONRPC_REQUEST_ID,\n TMP_RPC_JSONRPC_ERROR_CODE,\n TMP_RPC_JSONRPC_ERROR_MESSAGE,\n TMP_MESSAGE_TYPE,\n TMP_MESSAGE_ID,\n TMP_MESSAGE_COMPRESSED_SIZE,\n TMP_MESSAGE_UNCOMPRESSED_SIZE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nconst TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nconst TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nconst TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nconst TMP_DBSYSTEMVALUES_DB2 = 'db2';\nconst TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nconst TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nconst TMP_DBSYSTEMVALUES_HIVE = 'hive';\nconst TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nconst TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nconst TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nconst TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nconst TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nconst TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nconst TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nconst TMP_DBSYSTEMVALUES_EDB = 'edb';\nconst TMP_DBSYSTEMVALUES_CACHE = 'cache';\nconst TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nconst TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nconst TMP_DBSYSTEMVALUES_DERBY = 'derby';\nconst TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nconst TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nconst TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nconst TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nconst TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nconst TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nconst TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nconst TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nconst TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nconst TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nconst TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nconst TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nconst TMP_DBSYSTEMVALUES_H2 = 'h2';\nconst TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nconst TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nconst TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nconst TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nconst TMP_DBSYSTEMVALUES_REDIS = 'redis';\nconst TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nconst TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nconst TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nconst TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nconst TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nconst TMP_DBSYSTEMVALUES_GEODE = 'geode';\nconst TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nconst TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nconst TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexports.DbSystemValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_DBSYSTEMVALUES_OTHER_SQL,\n TMP_DBSYSTEMVALUES_MSSQL,\n TMP_DBSYSTEMVALUES_MYSQL,\n TMP_DBSYSTEMVALUES_ORACLE,\n TMP_DBSYSTEMVALUES_DB2,\n TMP_DBSYSTEMVALUES_POSTGRESQL,\n TMP_DBSYSTEMVALUES_REDSHIFT,\n TMP_DBSYSTEMVALUES_HIVE,\n TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n TMP_DBSYSTEMVALUES_HSQLDB,\n TMP_DBSYSTEMVALUES_PROGRESS,\n TMP_DBSYSTEMVALUES_MAXDB,\n TMP_DBSYSTEMVALUES_HANADB,\n TMP_DBSYSTEMVALUES_INGRES,\n TMP_DBSYSTEMVALUES_FIRSTSQL,\n TMP_DBSYSTEMVALUES_EDB,\n TMP_DBSYSTEMVALUES_CACHE,\n TMP_DBSYSTEMVALUES_ADABAS,\n TMP_DBSYSTEMVALUES_FIREBIRD,\n TMP_DBSYSTEMVALUES_DERBY,\n TMP_DBSYSTEMVALUES_FILEMAKER,\n TMP_DBSYSTEMVALUES_INFORMIX,\n TMP_DBSYSTEMVALUES_INSTANTDB,\n TMP_DBSYSTEMVALUES_INTERBASE,\n TMP_DBSYSTEMVALUES_MARIADB,\n TMP_DBSYSTEMVALUES_NETEZZA,\n TMP_DBSYSTEMVALUES_PERVASIVE,\n TMP_DBSYSTEMVALUES_POINTBASE,\n TMP_DBSYSTEMVALUES_SQLITE,\n TMP_DBSYSTEMVALUES_SYBASE,\n TMP_DBSYSTEMVALUES_TERADATA,\n TMP_DBSYSTEMVALUES_VERTICA,\n TMP_DBSYSTEMVALUES_H2,\n TMP_DBSYSTEMVALUES_COLDFUSION,\n TMP_DBSYSTEMVALUES_CASSANDRA,\n TMP_DBSYSTEMVALUES_HBASE,\n TMP_DBSYSTEMVALUES_MONGODB,\n TMP_DBSYSTEMVALUES_REDIS,\n TMP_DBSYSTEMVALUES_COUCHBASE,\n TMP_DBSYSTEMVALUES_COUCHDB,\n TMP_DBSYSTEMVALUES_COSMOSDB,\n TMP_DBSYSTEMVALUES_DYNAMODB,\n TMP_DBSYSTEMVALUES_NEO4J,\n TMP_DBSYSTEMVALUES_GEODE,\n TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n TMP_DBSYSTEMVALUES_MEMCACHED,\n TMP_DBSYSTEMVALUES_COCKROACHDB,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ALL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_TWO = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_THREE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_ANY = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexports.DbCassandraConsistencyLevelValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nconst TMP_FAASTRIGGERVALUES_HTTP = 'http';\nconst TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nconst TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nconst TMP_FAASTRIGGERVALUES_OTHER = 'other';\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexports.FaasTriggerValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASTRIGGERVALUES_DATASOURCE,\n TMP_FAASTRIGGERVALUES_HTTP,\n TMP_FAASTRIGGERVALUES_PUBSUB,\n TMP_FAASTRIGGERVALUES_TIMER,\n TMP_FAASTRIGGERVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASDOCUMENTOPERATIONVALUES_INSERT = TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASDOCUMENTOPERATIONVALUES_EDIT = TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASDOCUMENTOPERATIONVALUES_DELETE = TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexports.FaasDocumentOperationValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASINVOKEDPROVIDERVALUES_AZURE = TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexports.FaasInvokedProviderValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nconst TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nconst TMP_NETTRANSPORTVALUES_IP = 'ip';\nconst TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nconst TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nconst TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nconst TMP_NETTRANSPORTVALUES_OTHER = 'other';\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexports.NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexports.NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexports.NetTransportValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETTRANSPORTVALUES_IP_TCP,\n TMP_NETTRANSPORTVALUES_IP_UDP,\n TMP_NETTRANSPORTVALUES_IP,\n TMP_NETTRANSPORTVALUES_UNIX,\n TMP_NETTRANSPORTVALUES_PIPE,\n TMP_NETTRANSPORTVALUES_INPROC,\n TMP_NETTRANSPORTVALUES_OTHER,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_WIFI = TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_WIRED = TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_CELL = TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexports.NetHostConnectionTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_GSM = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_NR = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexports.NetHostConnectionSubtypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nconst TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nconst TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nconst TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nconst TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexports.HttpFlavorValues = {\n HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.MESSAGINGDESTINATIONKINDVALUES_QUEUE = TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.MESSAGINGDESTINATIONKINDVALUES_TOPIC = TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexports.MessagingDestinationKindValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nconst TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGINGOPERATIONVALUES_RECEIVE = TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGINGOPERATIONVALUES_PROCESS = TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexports.MessagingOperationValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nconst TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nconst TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nconst TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nconst TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nconst TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nconst TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_CANCELLED = TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNKNOWN = TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_NOT_FOUND = TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_ABORTED = TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_INTERNAL = TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_DATA_LOSS = TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexports.RpcGrpcStatusCodeValues = {\n OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nconst TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexports.MessageTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_MESSAGETYPEVALUES_SENT,\n TMP_MESSAGETYPEVALUES_RECEIVED,\n]);\n//# sourceMappingURL=SemanticAttributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\n__exportStar(require(\"./SemanticAttributes\"), exports);\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SEMRESATTRS_K8S_STATEFULSET_NAME = exports.SEMRESATTRS_K8S_STATEFULSET_UID = exports.SEMRESATTRS_K8S_DEPLOYMENT_NAME = exports.SEMRESATTRS_K8S_DEPLOYMENT_UID = exports.SEMRESATTRS_K8S_REPLICASET_NAME = exports.SEMRESATTRS_K8S_REPLICASET_UID = exports.SEMRESATTRS_K8S_CONTAINER_NAME = exports.SEMRESATTRS_K8S_POD_NAME = exports.SEMRESATTRS_K8S_POD_UID = exports.SEMRESATTRS_K8S_NAMESPACE_NAME = exports.SEMRESATTRS_K8S_NODE_UID = exports.SEMRESATTRS_K8S_NODE_NAME = exports.SEMRESATTRS_K8S_CLUSTER_NAME = exports.SEMRESATTRS_HOST_IMAGE_VERSION = exports.SEMRESATTRS_HOST_IMAGE_ID = exports.SEMRESATTRS_HOST_IMAGE_NAME = exports.SEMRESATTRS_HOST_ARCH = exports.SEMRESATTRS_HOST_TYPE = exports.SEMRESATTRS_HOST_NAME = exports.SEMRESATTRS_HOST_ID = exports.SEMRESATTRS_FAAS_MAX_MEMORY = exports.SEMRESATTRS_FAAS_INSTANCE = exports.SEMRESATTRS_FAAS_VERSION = exports.SEMRESATTRS_FAAS_ID = exports.SEMRESATTRS_FAAS_NAME = exports.SEMRESATTRS_DEVICE_MODEL_NAME = exports.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = exports.SEMRESATTRS_DEVICE_ID = exports.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = exports.SEMRESATTRS_CONTAINER_IMAGE_TAG = exports.SEMRESATTRS_CONTAINER_IMAGE_NAME = exports.SEMRESATTRS_CONTAINER_RUNTIME = exports.SEMRESATTRS_CONTAINER_ID = exports.SEMRESATTRS_CONTAINER_NAME = exports.SEMRESATTRS_AWS_LOG_STREAM_ARNS = exports.SEMRESATTRS_AWS_LOG_STREAM_NAMES = exports.SEMRESATTRS_AWS_LOG_GROUP_ARNS = exports.SEMRESATTRS_AWS_LOG_GROUP_NAMES = exports.SEMRESATTRS_AWS_EKS_CLUSTER_ARN = exports.SEMRESATTRS_AWS_ECS_TASK_REVISION = exports.SEMRESATTRS_AWS_ECS_TASK_FAMILY = exports.SEMRESATTRS_AWS_ECS_TASK_ARN = exports.SEMRESATTRS_AWS_ECS_LAUNCHTYPE = exports.SEMRESATTRS_AWS_ECS_CLUSTER_ARN = exports.SEMRESATTRS_AWS_ECS_CONTAINER_ARN = exports.SEMRESATTRS_CLOUD_PLATFORM = exports.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = exports.SEMRESATTRS_CLOUD_REGION = exports.SEMRESATTRS_CLOUD_ACCOUNT_ID = exports.SEMRESATTRS_CLOUD_PROVIDER = void 0;\nexports.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = exports.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = exports.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = exports.CLOUDPLATFORMVALUES_AZURE_AKS = exports.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = exports.CLOUDPLATFORMVALUES_AZURE_VM = exports.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = exports.CLOUDPLATFORMVALUES_AWS_LAMBDA = exports.CLOUDPLATFORMVALUES_AWS_EKS = exports.CLOUDPLATFORMVALUES_AWS_ECS = exports.CLOUDPLATFORMVALUES_AWS_EC2 = exports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = exports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = exports.CloudProviderValues = exports.CLOUDPROVIDERVALUES_GCP = exports.CLOUDPROVIDERVALUES_AZURE = exports.CLOUDPROVIDERVALUES_AWS = exports.CLOUDPROVIDERVALUES_ALIBABA_CLOUD = exports.SemanticResourceAttributes = exports.SEMRESATTRS_WEBENGINE_DESCRIPTION = exports.SEMRESATTRS_WEBENGINE_VERSION = exports.SEMRESATTRS_WEBENGINE_NAME = exports.SEMRESATTRS_TELEMETRY_AUTO_VERSION = exports.SEMRESATTRS_TELEMETRY_SDK_VERSION = exports.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = exports.SEMRESATTRS_TELEMETRY_SDK_NAME = exports.SEMRESATTRS_SERVICE_VERSION = exports.SEMRESATTRS_SERVICE_INSTANCE_ID = exports.SEMRESATTRS_SERVICE_NAMESPACE = exports.SEMRESATTRS_SERVICE_NAME = exports.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = exports.SEMRESATTRS_PROCESS_RUNTIME_VERSION = exports.SEMRESATTRS_PROCESS_RUNTIME_NAME = exports.SEMRESATTRS_PROCESS_OWNER = exports.SEMRESATTRS_PROCESS_COMMAND_ARGS = exports.SEMRESATTRS_PROCESS_COMMAND_LINE = exports.SEMRESATTRS_PROCESS_COMMAND = exports.SEMRESATTRS_PROCESS_EXECUTABLE_PATH = exports.SEMRESATTRS_PROCESS_EXECUTABLE_NAME = exports.SEMRESATTRS_PROCESS_PID = exports.SEMRESATTRS_OS_VERSION = exports.SEMRESATTRS_OS_NAME = exports.SEMRESATTRS_OS_DESCRIPTION = exports.SEMRESATTRS_OS_TYPE = exports.SEMRESATTRS_K8S_CRONJOB_NAME = exports.SEMRESATTRS_K8S_CRONJOB_UID = exports.SEMRESATTRS_K8S_JOB_NAME = exports.SEMRESATTRS_K8S_JOB_UID = exports.SEMRESATTRS_K8S_DAEMONSET_NAME = exports.SEMRESATTRS_K8S_DAEMONSET_UID = void 0;\nexports.TelemetrySdkLanguageValues = exports.TELEMETRYSDKLANGUAGEVALUES_WEBJS = exports.TELEMETRYSDKLANGUAGEVALUES_RUBY = exports.TELEMETRYSDKLANGUAGEVALUES_PYTHON = exports.TELEMETRYSDKLANGUAGEVALUES_PHP = exports.TELEMETRYSDKLANGUAGEVALUES_NODEJS = exports.TELEMETRYSDKLANGUAGEVALUES_JAVA = exports.TELEMETRYSDKLANGUAGEVALUES_GO = exports.TELEMETRYSDKLANGUAGEVALUES_ERLANG = exports.TELEMETRYSDKLANGUAGEVALUES_DOTNET = exports.TELEMETRYSDKLANGUAGEVALUES_CPP = exports.OsTypeValues = exports.OSTYPEVALUES_Z_OS = exports.OSTYPEVALUES_SOLARIS = exports.OSTYPEVALUES_AIX = exports.OSTYPEVALUES_HPUX = exports.OSTYPEVALUES_DRAGONFLYBSD = exports.OSTYPEVALUES_OPENBSD = exports.OSTYPEVALUES_NETBSD = exports.OSTYPEVALUES_FREEBSD = exports.OSTYPEVALUES_DARWIN = exports.OSTYPEVALUES_LINUX = exports.OSTYPEVALUES_WINDOWS = exports.HostArchValues = exports.HOSTARCHVALUES_X86 = exports.HOSTARCHVALUES_PPC64 = exports.HOSTARCHVALUES_PPC32 = exports.HOSTARCHVALUES_IA64 = exports.HOSTARCHVALUES_ARM64 = exports.HOSTARCHVALUES_ARM32 = exports.HOSTARCHVALUES_AMD64 = exports.AwsEcsLaunchtypeValues = exports.AWSECSLAUNCHTYPEVALUES_FARGATE = exports.AWSECSLAUNCHTYPEVALUES_EC2 = exports.CloudPlatformValues = exports.CLOUDPLATFORMVALUES_GCP_APP_ENGINE = exports.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = exports.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = exports.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = void 0;\nconst utils_1 = require(\"../internal/utils\");\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUD_PROVIDER = 'cloud.provider';\nconst TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nconst TMP_CLOUD_REGION = 'cloud.region';\nconst TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nconst TMP_CLOUD_PLATFORM = 'cloud.platform';\nconst TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nconst TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nconst TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nconst TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nconst TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nconst TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nconst TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nconst TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nconst TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nconst TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nconst TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nconst TMP_CONTAINER_NAME = 'container.name';\nconst TMP_CONTAINER_ID = 'container.id';\nconst TMP_CONTAINER_RUNTIME = 'container.runtime';\nconst TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nconst TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nconst TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nconst TMP_DEVICE_ID = 'device.id';\nconst TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nconst TMP_DEVICE_MODEL_NAME = 'device.model.name';\nconst TMP_FAAS_NAME = 'faas.name';\nconst TMP_FAAS_ID = 'faas.id';\nconst TMP_FAAS_VERSION = 'faas.version';\nconst TMP_FAAS_INSTANCE = 'faas.instance';\nconst TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nconst TMP_HOST_ID = 'host.id';\nconst TMP_HOST_NAME = 'host.name';\nconst TMP_HOST_TYPE = 'host.type';\nconst TMP_HOST_ARCH = 'host.arch';\nconst TMP_HOST_IMAGE_NAME = 'host.image.name';\nconst TMP_HOST_IMAGE_ID = 'host.image.id';\nconst TMP_HOST_IMAGE_VERSION = 'host.image.version';\nconst TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nconst TMP_K8S_NODE_NAME = 'k8s.node.name';\nconst TMP_K8S_NODE_UID = 'k8s.node.uid';\nconst TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nconst TMP_K8S_POD_UID = 'k8s.pod.uid';\nconst TMP_K8S_POD_NAME = 'k8s.pod.name';\nconst TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nconst TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nconst TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nconst TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nconst TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nconst TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nconst TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nconst TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nconst TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nconst TMP_K8S_JOB_UID = 'k8s.job.uid';\nconst TMP_K8S_JOB_NAME = 'k8s.job.name';\nconst TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nconst TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nconst TMP_OS_TYPE = 'os.type';\nconst TMP_OS_DESCRIPTION = 'os.description';\nconst TMP_OS_NAME = 'os.name';\nconst TMP_OS_VERSION = 'os.version';\nconst TMP_PROCESS_PID = 'process.pid';\nconst TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nconst TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nconst TMP_PROCESS_COMMAND = 'process.command';\nconst TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nconst TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nconst TMP_PROCESS_OWNER = 'process.owner';\nconst TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nconst TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nconst TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nconst TMP_SERVICE_NAME = 'service.name';\nconst TMP_SERVICE_NAMESPACE = 'service.namespace';\nconst TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nconst TMP_SERVICE_VERSION = 'service.version';\nconst TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nconst TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nconst TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nconst TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nconst TMP_WEBENGINE_NAME = 'webengine.name';\nconst TMP_WEBENGINE_VERSION = 'webengine.version';\nconst TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n/**\n * The geographical region the resource is running. Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called "zones" on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n/**\n * The model identifier for the device.\n *\n * Note: It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n/**\n * The marketing name for the device model.\n *\n * Note: It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the "invoked ARN" directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexports.SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexports.SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION = TMP_PROCESS_RUNTIME_DESCRIPTION;\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexports.SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexports.SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexports.SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexports.SemanticResourceAttributes = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUD_PROVIDER,\n TMP_CLOUD_ACCOUNT_ID,\n TMP_CLOUD_REGION,\n TMP_CLOUD_AVAILABILITY_ZONE,\n TMP_CLOUD_PLATFORM,\n TMP_AWS_ECS_CONTAINER_ARN,\n TMP_AWS_ECS_CLUSTER_ARN,\n TMP_AWS_ECS_LAUNCHTYPE,\n TMP_AWS_ECS_TASK_ARN,\n TMP_AWS_ECS_TASK_FAMILY,\n TMP_AWS_ECS_TASK_REVISION,\n TMP_AWS_EKS_CLUSTER_ARN,\n TMP_AWS_LOG_GROUP_NAMES,\n TMP_AWS_LOG_GROUP_ARNS,\n TMP_AWS_LOG_STREAM_NAMES,\n TMP_AWS_LOG_STREAM_ARNS,\n TMP_CONTAINER_NAME,\n TMP_CONTAINER_ID,\n TMP_CONTAINER_RUNTIME,\n TMP_CONTAINER_IMAGE_NAME,\n TMP_CONTAINER_IMAGE_TAG,\n TMP_DEPLOYMENT_ENVIRONMENT,\n TMP_DEVICE_ID,\n TMP_DEVICE_MODEL_IDENTIFIER,\n TMP_DEVICE_MODEL_NAME,\n TMP_FAAS_NAME,\n TMP_FAAS_ID,\n TMP_FAAS_VERSION,\n TMP_FAAS_INSTANCE,\n TMP_FAAS_MAX_MEMORY,\n TMP_HOST_ID,\n TMP_HOST_NAME,\n TMP_HOST_TYPE,\n TMP_HOST_ARCH,\n TMP_HOST_IMAGE_NAME,\n TMP_HOST_IMAGE_ID,\n TMP_HOST_IMAGE_VERSION,\n TMP_K8S_CLUSTER_NAME,\n TMP_K8S_NODE_NAME,\n TMP_K8S_NODE_UID,\n TMP_K8S_NAMESPACE_NAME,\n TMP_K8S_POD_UID,\n TMP_K8S_POD_NAME,\n TMP_K8S_CONTAINER_NAME,\n TMP_K8S_REPLICASET_UID,\n TMP_K8S_REPLICASET_NAME,\n TMP_K8S_DEPLOYMENT_UID,\n TMP_K8S_DEPLOYMENT_NAME,\n TMP_K8S_STATEFULSET_UID,\n TMP_K8S_STATEFULSET_NAME,\n TMP_K8S_DAEMONSET_UID,\n TMP_K8S_DAEMONSET_NAME,\n TMP_K8S_JOB_UID,\n TMP_K8S_JOB_NAME,\n TMP_K8S_CRONJOB_UID,\n TMP_K8S_CRONJOB_NAME,\n TMP_OS_TYPE,\n TMP_OS_DESCRIPTION,\n TMP_OS_NAME,\n TMP_OS_VERSION,\n TMP_PROCESS_PID,\n TMP_PROCESS_EXECUTABLE_NAME,\n TMP_PROCESS_EXECUTABLE_PATH,\n TMP_PROCESS_COMMAND,\n TMP_PROCESS_COMMAND_LINE,\n TMP_PROCESS_COMMAND_ARGS,\n TMP_PROCESS_OWNER,\n TMP_PROCESS_RUNTIME_NAME,\n TMP_PROCESS_RUNTIME_VERSION,\n TMP_PROCESS_RUNTIME_DESCRIPTION,\n TMP_SERVICE_NAME,\n TMP_SERVICE_NAMESPACE,\n TMP_SERVICE_INSTANCE_ID,\n TMP_SERVICE_VERSION,\n TMP_TELEMETRY_SDK_NAME,\n TMP_TELEMETRY_SDK_LANGUAGE,\n TMP_TELEMETRY_SDK_VERSION,\n TMP_TELEMETRY_AUTO_VERSION,\n TMP_WEBENGINE_NAME,\n TMP_WEBENGINE_VERSION,\n TMP_WEBENGINE_DESCRIPTION,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nconst TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPROVIDERVALUES_ALIBABA_CLOUD = TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexports.CloudProviderValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n TMP_CLOUDPROVIDERVALUES_AWS,\n TMP_CLOUDPROVIDERVALUES_AZURE,\n TMP_CLOUDPROVIDERVALUES_GCP,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nconst TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = 'azure_container_instances';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nconst TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nconst TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nconst TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_LAMBDA = TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES = TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.CLOUDPLATFORMVALUES_GCP_APP_ENGINE = TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexports.CloudPlatformValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nconst TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.AWSECSLAUNCHTYPEVALUES_FARGATE = TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexports.AwsEcsLaunchtypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nconst TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nconst TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nconst TMP_HOSTARCHVALUES_IA64 = 'ia64';\nconst TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nconst TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nconst TMP_HOSTARCHVALUES_X86 = 'x86';\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexports.HostArchValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_HOSTARCHVALUES_AMD64,\n TMP_HOSTARCHVALUES_ARM32,\n TMP_HOSTARCHVALUES_ARM64,\n TMP_HOSTARCHVALUES_IA64,\n TMP_HOSTARCHVALUES_PPC32,\n TMP_HOSTARCHVALUES_PPC64,\n TMP_HOSTARCHVALUES_X86,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_OSTYPEVALUES_WINDOWS = 'windows';\nconst TMP_OSTYPEVALUES_LINUX = 'linux';\nconst TMP_OSTYPEVALUES_DARWIN = 'darwin';\nconst TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nconst TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nconst TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nconst TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nconst TMP_OSTYPEVALUES_HPUX = 'hpux';\nconst TMP_OSTYPEVALUES_AIX = 'aix';\nconst TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nconst TMP_OSTYPEVALUES_Z_OS = 'z_os';\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexports.OsTypeValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_OSTYPEVALUES_WINDOWS,\n TMP_OSTYPEVALUES_LINUX,\n TMP_OSTYPEVALUES_DARWIN,\n TMP_OSTYPEVALUES_FREEBSD,\n TMP_OSTYPEVALUES_NETBSD,\n TMP_OSTYPEVALUES_OPENBSD,\n TMP_OSTYPEVALUES_DRAGONFLYBSD,\n TMP_OSTYPEVALUES_HPUX,\n TMP_OSTYPEVALUES_AIX,\n TMP_OSTYPEVALUES_SOLARIS,\n TMP_OSTYPEVALUES_Z_OS,\n]);\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_CPP = TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_DOTNET = TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_ERLANG = TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_JAVA = TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_NODEJS = TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_PHP = TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_PYTHON = TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_RUBY = TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexports.TELEMETRYSDKLANGUAGEVALUES_WEBJS = TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexports.TelemetrySdkLanguageValues = \n/*#__PURE__*/ (0, utils_1.createConstMap)([\n TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n]);\n//# sourceMappingURL=SemanticResourceAttributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\n__exportStar(require(\"./SemanticResourceAttributes\"), exports);\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_EXCEPTION_TYPE = exports.ATTR_EXCEPTION_STACKTRACE = exports.ATTR_EXCEPTION_MESSAGE = exports.ATTR_EXCEPTION_ESCAPED = exports.ERROR_TYPE_VALUE_OTHER = exports.ATTR_ERROR_TYPE = exports.DOTNET_GC_HEAP_GENERATION_VALUE_POH = exports.DOTNET_GC_HEAP_GENERATION_VALUE_LOH = exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = exports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = exports.ATTR_DOTNET_GC_HEAP_GENERATION = exports.DB_SYSTEM_NAME_VALUE_POSTGRESQL = exports.DB_SYSTEM_NAME_VALUE_MYSQL = exports.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = exports.DB_SYSTEM_NAME_VALUE_MARIADB = exports.ATTR_DB_SYSTEM_NAME = exports.ATTR_DB_STORED_PROCEDURE_NAME = exports.ATTR_DB_RESPONSE_STATUS_CODE = exports.ATTR_DB_QUERY_TEXT = exports.ATTR_DB_QUERY_SUMMARY = exports.ATTR_DB_OPERATION_NAME = exports.ATTR_DB_OPERATION_BATCH_SIZE = exports.ATTR_DB_NAMESPACE = exports.ATTR_DB_COLLECTION_NAME = exports.ATTR_CODE_STACKTRACE = exports.ATTR_CODE_LINE_NUMBER = exports.ATTR_CODE_FUNCTION_NAME = exports.ATTR_CODE_FILE_PATH = exports.ATTR_CODE_COLUMN_NUMBER = exports.ATTR_CLIENT_PORT = exports.ATTR_CLIENT_ADDRESS = exports.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = exports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = exports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = exports.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = exports.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = exports.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = exports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = exports.ATTR_ASPNETCORE_RATE_LIMITING_RESULT = exports.ATTR_ASPNETCORE_RATE_LIMITING_POLICY = exports.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = exports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = exports.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = void 0;\nexports.OTEL_STATUS_CODE_VALUE_ERROR = exports.ATTR_OTEL_STATUS_CODE = exports.ATTR_OTEL_SCOPE_VERSION = exports.ATTR_OTEL_SCOPE_NAME = exports.NETWORK_TYPE_VALUE_IPV6 = exports.NETWORK_TYPE_VALUE_IPV4 = exports.ATTR_NETWORK_TYPE = exports.NETWORK_TRANSPORT_VALUE_UNIX = exports.NETWORK_TRANSPORT_VALUE_UDP = exports.NETWORK_TRANSPORT_VALUE_TCP = exports.NETWORK_TRANSPORT_VALUE_QUIC = exports.NETWORK_TRANSPORT_VALUE_PIPE = exports.ATTR_NETWORK_TRANSPORT = exports.ATTR_NETWORK_PROTOCOL_VERSION = exports.ATTR_NETWORK_PROTOCOL_NAME = exports.ATTR_NETWORK_PEER_PORT = exports.ATTR_NETWORK_PEER_ADDRESS = exports.ATTR_NETWORK_LOCAL_PORT = exports.ATTR_NETWORK_LOCAL_ADDRESS = exports.JVM_THREAD_STATE_VALUE_WAITING = exports.JVM_THREAD_STATE_VALUE_TIMED_WAITING = exports.JVM_THREAD_STATE_VALUE_TERMINATED = exports.JVM_THREAD_STATE_VALUE_RUNNABLE = exports.JVM_THREAD_STATE_VALUE_NEW = exports.JVM_THREAD_STATE_VALUE_BLOCKED = exports.ATTR_JVM_THREAD_STATE = exports.ATTR_JVM_THREAD_DAEMON = exports.JVM_MEMORY_TYPE_VALUE_NON_HEAP = exports.JVM_MEMORY_TYPE_VALUE_HEAP = exports.ATTR_JVM_MEMORY_TYPE = exports.ATTR_JVM_MEMORY_POOL_NAME = exports.ATTR_JVM_GC_NAME = exports.ATTR_JVM_GC_ACTION = exports.ATTR_HTTP_ROUTE = exports.ATTR_HTTP_RESPONSE_STATUS_CODE = exports.ATTR_HTTP_RESPONSE_HEADER = exports.ATTR_HTTP_REQUEST_RESEND_COUNT = exports.ATTR_HTTP_REQUEST_METHOD_ORIGINAL = exports.HTTP_REQUEST_METHOD_VALUE_TRACE = exports.HTTP_REQUEST_METHOD_VALUE_PUT = exports.HTTP_REQUEST_METHOD_VALUE_POST = exports.HTTP_REQUEST_METHOD_VALUE_PATCH = exports.HTTP_REQUEST_METHOD_VALUE_OPTIONS = exports.HTTP_REQUEST_METHOD_VALUE_HEAD = exports.HTTP_REQUEST_METHOD_VALUE_GET = exports.HTTP_REQUEST_METHOD_VALUE_DELETE = exports.HTTP_REQUEST_METHOD_VALUE_CONNECT = exports.HTTP_REQUEST_METHOD_VALUE_OTHER = exports.ATTR_HTTP_REQUEST_METHOD = exports.ATTR_HTTP_REQUEST_HEADER = void 0;\nexports.ATTR_USER_AGENT_ORIGINAL = exports.ATTR_URL_SCHEME = exports.ATTR_URL_QUERY = exports.ATTR_URL_PATH = exports.ATTR_URL_FULL = exports.ATTR_URL_FRAGMENT = exports.ATTR_TELEMETRY_SDK_VERSION = exports.ATTR_TELEMETRY_SDK_NAME = exports.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = exports.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = exports.TELEMETRY_SDK_LANGUAGE_VALUE_RUST = exports.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = exports.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = exports.TELEMETRY_SDK_LANGUAGE_VALUE_PHP = exports.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = exports.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = exports.TELEMETRY_SDK_LANGUAGE_VALUE_GO = exports.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = exports.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = exports.TELEMETRY_SDK_LANGUAGE_VALUE_CPP = exports.ATTR_TELEMETRY_SDK_LANGUAGE = exports.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = exports.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = exports.SIGNALR_TRANSPORT_VALUE_LONG_POLLING = exports.ATTR_SIGNALR_TRANSPORT = exports.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = exports.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = exports.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = exports.ATTR_SIGNALR_CONNECTION_STATUS = exports.ATTR_SERVICE_VERSION = exports.ATTR_SERVICE_NAMESPACE = exports.ATTR_SERVICE_NAME = exports.ATTR_SERVICE_INSTANCE_ID = exports.ATTR_SERVER_PORT = exports.ATTR_SERVER_ADDRESS = exports.ATTR_OTEL_STATUS_DESCRIPTION = exports.OTEL_STATUS_CODE_VALUE_OK = void 0;\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexports.ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result';\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling didn't run because the request was aborted.\n */\nexports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\";\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\";\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling was skipped because the response had started.\n */\nexports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\";\n/**\n * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was not handled by the exception handling middleware.\n */\nexports.ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\";\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexports.ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type';\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexports.ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy';\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexports.ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result';\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\";\n/**\n * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the endpoint limiter\n */\nexports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\";\n/**\n * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the global limiter\n */\nexports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\";\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexports.ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\";\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexports.ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled';\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexports.ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback';\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexports.ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status';\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\";\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexports.ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\";\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexports.ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated';\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries, for example proxies, if it's available.\n */\nexports.ATTR_CLIENT_ADDRESS = 'client.address';\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries, for example proxies, if it's available.\n */\nexports.ATTR_CLIENT_PORT = 'client.port';\n/**\n * The column number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 16\n */\nexports.ATTR_CODE_COLUMN_NUMBER = 'code.column.number';\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\n */\nexports.ATTR_CODE_FILE_PATH = 'code.file.path';\n/**\n * The method or function fully-qualified name without arguments. The value should fit the natural representation of the language runtime, which is also likely the same used within `code.stacktrace` attribute value. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example com.example.MyHttpService.serveRequest\n * @example GuzzleHttp\\\\Client::transfer\n * @example fopen\n *\n * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples.\n * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in\n * `code.stacktrace` without information on arguments.\n *\n * Examples:\n *\n * - Java method: `com.example.MyHttpService.serveRequest`\n * - Java anonymous class method: `com.mycompany.Main$1.myMethod`\n * - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod`\n * - PHP function: `GuzzleHttp\\Client::transfer`\n * - Go function: `github.com/my/repo/pkg.foo.func5`\n * - Elixir: `OpenTelemetry.Ctx.new`\n * - Erlang: `opentelemetry_ctx:new`\n * - Rust: `playground::my_module::my_cool_func`\n * - C function: `fopen`\n */\nexports.ATTR_CODE_FUNCTION_NAME = 'code.function.name';\n/**\n * The line number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 42\n */\nexports.ATTR_CODE_LINE_NUMBER = 'code.line.number';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is identical to [`exception.stacktrace`](/docs/exceptions/exceptions-spans.md#stacktrace-representation). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Location'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexports.ATTR_CODE_STACKTRACE = 'code.stacktrace';\n/**\n * The name of a collection (table, container) within the database.\n *\n * @example public.users\n * @example customers\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The collection name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple collections\n * in non-batch operations.\n *\n * For batch operations, if the individual operations are known to have the same\n * collection name then that collection name **SHOULD** be used.\n */\nexports.ATTR_DB_COLLECTION_NAME = 'db.collection.name';\n/**\n * The name of the database, fully qualified within the server address and port.\n *\n * @example customers\n * @example test.users\n *\n * @note If a database system has multiple namespace components, they **SHOULD** be concatenated from the most general to the most specific namespace component, using `|` as a separator between the components. Any missing components (and their associated separators) **SHOULD** be omitted.\n * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system.\n * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.\n */\nexports.ATTR_DB_NAMESPACE = 'db.namespace';\n/**\n * The number of queries included in a batch operation.\n *\n * @example 2\n * @example 3\n * @example 4\n *\n * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`.\n */\nexports.ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size';\n/**\n * The name of the operation or command being executed.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The operation name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple operations\n * in non-batch operations.\n *\n * If spaces can occur in the operation name, multiple consecutive spaces\n * **SHOULD** be normalized to a single space.\n *\n * For batch operations, if the individual operations are known to have the same operation name\n * then that operation name **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexports.ATTR_DB_OPERATION_NAME = 'db.operation.name';\n/**\n * Low cardinality summary of a database query.\n *\n * @example SELECT wuser_table\n * @example INSERT shipping_details SELECT orders\n * @example get user by id\n *\n * @note The query summary describes a class of database queries and is useful\n * as a grouping key, especially when analyzing telemetry for database\n * calls involving complex queries.\n *\n * Summary may be available to the instrumentation through\n * instrumentation hooks or other means. If it is not available, instrumentations\n * that support query parsing **SHOULD** generate a summary following\n * [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query)\n * section.\n *\n * For batch operations, if the individual operations are known to have the same query summary\n * then that query summary **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.query.summary` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexports.ATTR_DB_QUERY_SUMMARY = 'db.query.summary';\n/**\n * The database query being executed.\n *\n * @example SELECT * FROM wuser_table where username = ?\n * @example SET mykey ?\n *\n * @note For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext).\n * For batch operations, if the individual operations are known to have the same query text then that query text **SHOULD** be used, otherwise all of the individual query texts **SHOULD** be concatenated with separator `; ` or some other database system specific separator if more applicable.\n * Parameterized query text **SHOULD NOT** be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk.\n */\nexports.ATTR_DB_QUERY_TEXT = 'db.query.text';\n/**\n * Database response status code.\n *\n * @example 102\n * @example ORA-17002\n * @example 08P01\n * @example 404\n *\n * @note The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.\n * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system.\n */\nexports.ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code';\n/**\n * The name of a stored procedure within the database.\n *\n * @example GetCustomer\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * For batch operations, if the individual operations are known to have the same\n * stored procedure name then that stored procedure name **SHOULD** be used.\n */\nexports.ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name';\n/**\n * The database management system (DBMS) product as identified by the client instrumentation.\n *\n * @note The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge.\n */\nexports.ATTR_DB_SYSTEM_NAME = 'db.system.name';\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexports.DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\";\n/**\n * Enum value \"microsoft.sql_server\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Microsoft SQL Server](https://www.microsoft.com/sql-server)\n */\nexports.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\";\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexports.DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\";\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexports.DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\";\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexports.ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation';\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\";\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\";\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\";\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\";\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexports.DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\";\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes),\n * it's **RECOMMENDED** to:\n *\n * - Use a domain-specific attribute\n * - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexports.ATTR_ERROR_TYPE = 'error.type';\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n *\n * A fallback error value to be used when the instrumentation doesn't define a custom value.\n */\nexports.ERROR_TYPE_VALUE_OTHER = \"_OTHER\";\n/**\n * Indicates that the exception is escaping the scope of the span.\n *\n * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span.\n */\nexports.ATTR_EXCEPTION_ESCAPED = 'exception.escaped';\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n *\n * @note > [!WARNING]\n *\n * > This attribute may contain sensitive information.\n */\nexports.ATTR_EXCEPTION_MESSAGE = 'exception.message';\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexports.ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace';\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexports.ATTR_EXCEPTION_TYPE = 'exception.type';\n/**\n * HTTP request headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * The `User-Agent` header is already captured in the `user_agent.original` attribute.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for`\n * attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]` or `[\"1.2.3.4, 1.2.3.5\"]` depending on the HTTP library.\n */\nconst ATTR_HTTP_REQUEST_HEADER = (key) => `http.request.header.${key}`;\nexports.ATTR_HTTP_REQUEST_HEADER = ATTR_HTTP_REQUEST_HEADER;\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods),\n * the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html)\n * and the QUERY method defined in [httpbis-safe-method-w-body](https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/?include_text=1).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods.\n *\n *\n * If this override is done via declarative configuration, then the list **MUST** be configurable via the `known_methods` property\n * (an array of case-sensitive strings with minimum items 0) under `.instrumentation/development.general.http.client` and/or\n * `.instrumentation/development.general.http.server`.\n *\n * In either case, this list **MUST** be a full override of the default known methods,\n * it is not a list of known methods in addition to the defaults.\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexports.ATTR_HTTP_REQUEST_METHOD = 'http.request.method';\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * Any HTTP method that the instrumentation has no prior knowledge of.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\";\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\";\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\";\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_GET = \"GET\";\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\";\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\";\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\";\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_POST = \"POST\";\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\";\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexports.HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\";\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexports.ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original';\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexports.ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count';\n/**\n * HTTP response headers, `` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n * - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type`\n * attribute with value `[\"application/json\"]`.\n * - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header`\n * attribute with value `[\"abc\", \"def\"]` or `[\"abc, def\"]` depending on the HTTP library.\n */\nconst ATTR_HTTP_RESPONSE_HEADER = (key) => `http.response.header.${key}`;\nexports.ATTR_HTTP_RESPONSE_HEADER = ATTR_HTTP_RESPONSE_HEADER;\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexports.ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code';\n/**\n * The matched route template for the request. This **MUST** be low-cardinality and include all static path segments, with dynamic path segments represented with placeholders.\n *\n * @example /users/:userID?\n * @example my-controller/my-action/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n *\n * A static path segment is a part of the route template with a fixed, low-cardinality value. This includes literal strings like `/users/` and placeholders that\n * are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`.\n *\n * A dynamic path segment is a placeholder for a value that can have high cardinality and is not constrained to a predefined list like static path segments.\n *\n * Instrumentations **SHOULD** use routing information provided by the corresponding web framework. They **SHOULD** pick the most precise source of routing information and **MAY**\n * support custom route formatting. Instrumentations **SHOULD** document the format and the API used to obtain the route string.\n */\nexports.ATTR_HTTP_ROUTE = 'http.route';\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexports.ATTR_JVM_GC_ACTION = 'jvm.gc.action';\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexports.ATTR_JVM_GC_NAME = 'jvm.gc.name';\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexports.ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name';\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexports.ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type';\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexports.JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\";\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexports.JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\";\n/**\n * Whether the thread is daemon or not.\n */\nexports.ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon';\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexports.ATTR_JVM_THREAD_STATE = 'jvm.thread.state';\n/**\n * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is blocked waiting for a monitor lock is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\";\n/**\n * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has not yet started is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_NEW = \"new\";\n/**\n * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread executing in the Java virtual machine is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\";\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\";\n/**\n * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\";\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting indefinitely for another thread to perform a particular action is in this state.\n */\nexports.JVM_THREAD_STATE_VALUE_WAITING = \"waiting\";\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexports.ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address';\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexports.ATTR_NETWORK_LOCAL_PORT = 'network.local.port';\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexports.ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address';\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexports.ATTR_NETWORK_PEER_PORT = 'network.peer.port';\n/**\n * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexports.ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name';\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexports.ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version';\n/**\n * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexports.ATTR_NETWORK_TRANSPORT = 'network.transport';\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexports.NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\";\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexports.NETWORK_TRANSPORT_VALUE_QUIC = \"quic\";\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexports.NETWORK_TRANSPORT_VALUE_TCP = \"tcp\";\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexports.NETWORK_TRANSPORT_VALUE_UDP = \"udp\";\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexports.NETWORK_TRANSPORT_VALUE_UNIX = \"unix\";\n/**\n * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexports.ATTR_NETWORK_TYPE = 'network.type';\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexports.NETWORK_TYPE_VALUE_IPV4 = \"ipv4\";\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexports.NETWORK_TYPE_VALUE_IPV6 = \"ipv6\";\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexports.ATTR_OTEL_SCOPE_NAME = 'otel.scope.name';\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexports.ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version';\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexports.ATTR_OTEL_STATUS_CODE = 'otel.status_code';\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexports.OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\";\n/**\n * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation has been validated by an Application developer or Operator to have completed successfully.\n */\nexports.OTEL_STATUS_CODE_VALUE_OK = \"OK\";\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexports.ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description';\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexports.ATTR_SERVER_ADDRESS = 'server.address';\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexports.ATTR_SERVER_PORT = 'server.port';\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n */\nexports.ATTR_SERVICE_INSTANCE_ID = 'service.instance.id';\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexports.ATTR_SERVICE_NAME = 'service.name';\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n */\nexports.ATTR_SERVICE_NAMESPACE = 'service.namespace';\n/**\n * The version string of the service component. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexports.ATTR_SERVICE_VERSION = 'service.version';\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexports.ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status';\n/**\n * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed because the app is shutting down.\n */\nexports.SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\";\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexports.SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\";\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexports.SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\";\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexports.ATTR_SIGNALR_TRANSPORT = 'signalr.transport';\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexports.SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\";\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexports.SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\";\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexports.SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\";\n/**\n * The language of the telemetry SDK.\n */\nexports.ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\";\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\";\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\";\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\";\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\";\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\";\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\";\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\";\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\";\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\";\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\";\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexports.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\";\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexports.ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexports.ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexports.ATTR_URL_FRAGMENT = 'url.fragment';\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment\n * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n *\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`.\n * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n *\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed).\n *\n * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the\n * value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `https://www.example.com/path?color=blue&sig=REDACTED`.\n */\nexports.ATTR_URL_FULL = 'url.full';\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexports.ATTR_URL_PATH = 'url.path';\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`:\n *\n * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * Matching of query parameter keys against the sensitive list **SHOULD** be case-sensitive.\n *\n * Instrumentation **MAY** provide a way to override this list via declarative configuration.\n * If so, it **SHOULD** use the `sensitive_query_parameters` property\n * (an array of case-sensitive strings with minimum items 0) under\n * `.instrumentation/development.general.sanitization.url`.\n * This list is a full override of the default sensitive query parameter keys,\n * it is not a list of keys in addition to the defaults.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexports.ATTR_URL_QUERY = 'url.query';\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexports.ATTR_URL_SCHEME = 'url.scheme';\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexports.ATTR_USER_AGENT_ORIGINAL = 'user_agent.original';\n//# sourceMappingURL=stable_attributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = exports.METRIC_KESTREL_UPGRADED_CONNECTIONS = exports.METRIC_KESTREL_TLS_HANDSHAKE_DURATION = exports.METRIC_KESTREL_REJECTED_CONNECTIONS = exports.METRIC_KESTREL_QUEUED_REQUESTS = exports.METRIC_KESTREL_QUEUED_CONNECTIONS = exports.METRIC_KESTREL_CONNECTION_DURATION = exports.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = exports.METRIC_KESTREL_ACTIVE_CONNECTIONS = exports.METRIC_JVM_THREAD_COUNT = exports.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = exports.METRIC_JVM_MEMORY_USED = exports.METRIC_JVM_MEMORY_LIMIT = exports.METRIC_JVM_MEMORY_COMMITTED = exports.METRIC_JVM_GC_DURATION = exports.METRIC_JVM_CPU_TIME = exports.METRIC_JVM_CPU_RECENT_UTILIZATION = exports.METRIC_JVM_CPU_COUNT = exports.METRIC_JVM_CLASS_UNLOADED = exports.METRIC_JVM_CLASS_LOADED = exports.METRIC_JVM_CLASS_COUNT = exports.METRIC_HTTP_SERVER_REQUEST_DURATION = exports.METRIC_HTTP_CLIENT_REQUEST_DURATION = exports.METRIC_DOTNET_TIMER_COUNT = exports.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = exports.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = exports.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = exports.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = exports.METRIC_DOTNET_PROCESS_CPU_TIME = exports.METRIC_DOTNET_PROCESS_CPU_COUNT = exports.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = exports.METRIC_DOTNET_JIT_COMPILED_METHODS = exports.METRIC_DOTNET_JIT_COMPILED_IL_SIZE = exports.METRIC_DOTNET_JIT_COMPILATION_TIME = exports.METRIC_DOTNET_GC_PAUSE_TIME = exports.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = exports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = exports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = exports.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = exports.METRIC_DOTNET_GC_COLLECTIONS = exports.METRIC_DOTNET_EXCEPTIONS = exports.METRIC_DOTNET_ASSEMBLY_COUNT = exports.METRIC_DB_CLIENT_OPERATION_DURATION = exports.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = exports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = exports.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = exports.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = exports.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = void 0;\nexports.METRIC_SIGNALR_SERVER_CONNECTION_DURATION = void 0;\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions';\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases';\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests';\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue';\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration';\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n * - Rejected by global or endpoint rate limiting policies\n * - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests';\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts';\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexports.METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration';\n/**\n * The number of .NET assemblies that are currently loaded.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies).\n */\nexports.METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count';\n/**\n * The number of exceptions that have been thrown in managed code.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception).\n */\nexports.METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions';\n/**\n * The number of garbage collections that have occurred since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation.\n */\nexports.METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections';\n/**\n * The *approximate* number of bytes allocated on the managed GC heap since the process has started. The returned value does not include any native allocations.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes).\n */\nexports.METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated';\n/**\n * The heap fragmentation, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes).\n */\nexports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size';\n/**\n * The managed GC heap size (including fragmentation), as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes).\n */\nexports.METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size';\n/**\n * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().TotalCommittedBytes`](https://learn.microsoft.com/dotnet/api/system.gcmemoryinfo.totalcommittedbytes). Committed virtual memory may be larger than the heap size because it includes both memory for storing existing objects (the heap size) and some extra memory that is ready to handle newly allocated objects in the future.\n */\nexports.METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size';\n/**\n * The total amount of time paused in GC since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration).\n */\nexports.METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time';\n/**\n * The amount of time the JIT compiler has spent compiling methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime).\n */\nexports.METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time';\n/**\n * Count of bytes of intermediate language that have been compiled since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes).\n */\nexports.METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size';\n/**\n * The number of times the JIT compiler (re)compiled methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount).\n */\nexports.METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods';\n/**\n * The number of times there was contention when trying to acquire a monitor lock since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount).\n */\nexports.METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions';\n/**\n * The number of processors available to the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount).\n */\nexports.METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count';\n/**\n * CPU time used by the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing the corresponding processor time properties on [`System.Diagnostics.Process`](https://learn.microsoft.com/dotnet/api/system.diagnostics.process).\n */\nexports.METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time';\n/**\n * The number of bytes of physical memory mapped to the process context.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset).\n */\nexports.METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set';\n/**\n * The number of work items that are currently queued to be processed by the thread pool.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount).\n */\nexports.METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length';\n/**\n * The number of thread pool threads that currently exist.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount).\n */\nexports.METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count';\n/**\n * The number of work items that the thread pool has completed since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount).\n */\nexports.METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count';\n/**\n * The number of timer instances that are currently active.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount).\n */\nexports.METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count';\n/**\n * Duration of HTTP client requests.\n */\nexports.METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration';\n/**\n * Duration of HTTP server requests.\n */\nexports.METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration';\n/**\n * Number of classes currently loaded.\n */\nexports.METRIC_JVM_CLASS_COUNT = 'jvm.class.count';\n/**\n * Number of classes loaded since JVM start.\n */\nexports.METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded';\n/**\n * Number of classes unloaded since JVM start.\n */\nexports.METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded';\n/**\n * Number of processors available to the Java virtual machine.\n */\nexports.METRIC_JVM_CPU_COUNT = 'jvm.cpu.count';\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexports.METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization';\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexports.METRIC_JVM_CPU_TIME = 'jvm.cpu.time';\n/**\n * Duration of JVM garbage collection actions.\n */\nexports.METRIC_JVM_GC_DURATION = 'jvm.gc.duration';\n/**\n * Measure of memory committed.\n */\nexports.METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed';\n/**\n * Measure of max obtainable memory.\n */\nexports.METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit';\n/**\n * Measure of memory used.\n */\nexports.METRIC_JVM_MEMORY_USED = 'jvm.memory.used';\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexports.METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc';\n/**\n * Number of executing platform threads.\n */\nexports.METRIC_JVM_THREAD_COUNT = 'jvm.thread.count';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections';\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration';\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections';\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests';\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections';\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration';\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections';\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections';\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexports.METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration';\n//# sourceMappingURL=stable_metrics.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENT_EXCEPTION = void 0;\n//-----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n/**\n * This event describes a single exception.\n */\nexports.EVENT_EXCEPTION = 'exception';\n//# sourceMappingURL=stable_events.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n// Deprecated. These are kept around for compatibility purposes\n__exportStar(require(\"./trace\"), exports);\n__exportStar(require(\"./resource\"), exports);\n// Use these instead\n__exportStar(require(\"./stable_attributes\"), exports);\n__exportStar(require(\"./stable_metrics\"), exports);\n__exportStar(require(\"./stable_events\"), exports);\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_PROCESS_RUNTIME_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SDK_INFO = void 0;\nconst version_1 = require(\"../../version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../../semconv\");\n/** Constants describing the SDK in use */\nexports.SDK_INFO = {\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: semantic_conventions_1.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: version_1.VERSION,\n};\n//# sourceMappingURL=sdk-info.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.otperformance = exports.SDK_INFO = exports._globalThis = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = void 0;\nvar environment_1 = require(\"./environment\");\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return environment_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return environment_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return environment_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return environment_1.getStringListFromEnv; } });\nvar globalThis_1 = require(\"../../common/globalThis\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return globalThis_1._globalThis; } });\nvar sdk_info_1 = require(\"./sdk-info\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return sdk_info_1.SDK_INFO; } });\n/**\n * @deprecated Use performance directly.\n */\nexports.otperformance = performance;\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringListFromEnv = exports.getNumberFromEnv = exports.getStringFromEnv = exports.getBooleanFromEnv = exports.otperformance = exports._globalThis = exports.SDK_INFO = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return node_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return node_1._globalThis; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return node_1.otperformance; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return node_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return node_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return node_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return node_1.getStringListFromEnv; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addHrTimes = exports.isTimeInput = exports.isTimeInputHrTime = exports.hrTimeToMicroseconds = exports.hrTimeToMilliseconds = exports.hrTimeToNanoseconds = exports.hrTimeToTimeStamp = exports.hrTimeDuration = exports.timeInputToHrTime = exports.hrTime = exports.getTimeOrigin = exports.millisToHrTime = void 0;\nconst platform_1 = require(\"../platform\");\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nfunction millisToHrTime(epochMillis) {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\nexports.millisToHrTime = millisToHrTime;\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nfunction getTimeOrigin() {\n return platform_1.otperformance.timeOrigin;\n}\nexports.getTimeOrigin = getTimeOrigin;\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nfunction hrTime(performanceNow) {\n const timeOrigin = millisToHrTime(platform_1.otperformance.timeOrigin);\n const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : platform_1.otperformance.now());\n return addHrTimes(timeOrigin, now);\n}\nexports.hrTime = hrTime;\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nfunction timeInputToHrTime(time) {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time;\n }\n else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < platform_1.otperformance.timeOrigin) {\n return hrTime(time);\n }\n else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n }\n else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n }\n else {\n throw TypeError('Invalid input type');\n }\n}\nexports.timeInputToHrTime = timeInputToHrTime;\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nfunction hrTimeDuration(startTime, endTime) {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n return [seconds, nanos];\n}\nexports.hrTimeDuration = hrTimeDuration;\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nfunction hrTimeToTimeStamp(time) {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\nexports.hrTimeToTimeStamp = hrTimeToTimeStamp;\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nfunction hrTimeToNanoseconds(time) {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\nexports.hrTimeToNanoseconds = hrTimeToNanoseconds;\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nfunction hrTimeToMilliseconds(time) {\n return time[0] * 1e3 + time[1] / 1e6;\n}\nexports.hrTimeToMilliseconds = hrTimeToMilliseconds;\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nfunction hrTimeToMicroseconds(time) {\n return time[0] * 1e6 + time[1] / 1e3;\n}\nexports.hrTimeToMicroseconds = hrTimeToMicroseconds;\n/**\n * check if time is HrTime\n * @param value\n */\nfunction isTimeInputHrTime(value) {\n return (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number');\n}\nexports.isTimeInputHrTime = isTimeInputHrTime;\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nfunction isTimeInput(value) {\n return (isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date);\n}\nexports.isTimeInput = isTimeInput;\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nfunction addHrTimes(time1, time2) {\n const out = [time1[0] + time2[0], time1[1] + time2[1]];\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n return out;\n}\nexports.addHrTimes = addHrTimes;\n//# sourceMappingURL=time.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unrefTimer = void 0;\n/**\n * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package.\n * @param timer\n */\nfunction unrefTimer(timer) {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\nexports.unrefTimer = unrefTimer;\n//# sourceMappingURL=timer-util.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportResultCode = void 0;\nvar ExportResultCode;\n(function (ExportResultCode) {\n ExportResultCode[ExportResultCode[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExportResultCode[ExportResultCode[\"FAILED\"] = 1] = \"FAILED\";\n})(ExportResultCode = exports.ExportResultCode || (exports.ExportResultCode = {}));\n//# sourceMappingURL=ExportResult.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompositePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/** Combines multiple propagators into a single propagator. */\nclass CompositePropagator {\n _propagators;\n _fields;\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config = {}) {\n this._propagators = config.propagators ?? [];\n this._fields = Array.from(new Set(this._propagators\n // older propagators may not have fields function, null check to be sure\n .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n .reduce((x, y) => x.concat(y), [])));\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same carrier key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to inject\n * @param carrier Carrier into which context will be injected\n */\n inject(context, carrier, setter) {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n }\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same context key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to add values to\n * @param carrier Carrier from which to extract context\n */\n extract(context, carrier, getter) {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n return ctx;\n }, context);\n }\n fields() {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\nexports.CompositePropagator = CompositePropagator;\n//# sourceMappingURL=composite.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=validators.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceState = void 0;\nconst validators_1 = require(\"../internal/validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceState {\n _internalState = new Map();\n constructor(rawTraceState) {\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return this._keys()\n .reduce((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, validators_1.validateKey)(key) && (0, validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceState = TraceState;\n//# sourceMappingURL=TraceState.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CTraceContextPropagator = exports.parseTraceParent = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"./suppress-tracing\");\nconst TraceState_1 = require(\"./TraceState\");\nexports.TRACE_PARENT_HEADER = 'traceparent';\nexports.TRACE_STATE_HEADER = 'tracestate';\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(`^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`);\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n * It should be dynamically generated server side to have the server's request trace Id,\n * a parent span Id that was set on the server's request span,\n * and the trace flags to indicate the server's sampling decision\n * (01 = sampled, 00 = not sampled).\n * for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n * For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nfunction parseTraceParent(traceParent) {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match)\n return null;\n // According to the specification the implementation should be compatible\n // with future versions. If there are more parts, we only reject it if it's using version 00\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n if (match[1] === '00' && match[5])\n return null;\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\nexports.parseTraceParent = parseTraceParent;\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nclass W3CTraceContextPropagator {\n inject(context, carrier, setter) {\n const spanContext = api_1.trace.getSpanContext(context);\n if (!spanContext ||\n (0, suppress_tracing_1.isTracingSuppressed)(context) ||\n !(0, api_1.isSpanContextValid)(spanContext))\n return;\n const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || api_1.TraceFlags.NONE).toString(16)}`;\n setter.set(carrier, exports.TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(carrier, exports.TRACE_STATE_HEADER, spanContext.traceState.serialize());\n }\n }\n extract(context, carrier, getter) {\n const traceParentHeader = getter.get(carrier, exports.TRACE_PARENT_HEADER);\n if (!traceParentHeader)\n return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string')\n return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext)\n return context;\n spanContext.isRemote = true;\n const traceStateHeader = getter.get(carrier, exports.TRACE_STATE_HEADER);\n if (traceStateHeader) {\n // If more than one `tracestate` header is found, we merge them into a\n // single header.\n const state = Array.isArray(traceStateHeader)\n ? traceStateHeader.join(',')\n : traceStateHeader;\n spanContext.traceState = new TraceState_1.TraceState(typeof state === 'string' ? state : undefined);\n }\n return api_1.trace.setSpanContext(context, spanContext);\n }\n fields() {\n return [exports.TRACE_PARENT_HEADER, exports.TRACE_STATE_HEADER];\n }\n}\nexports.W3CTraceContextPropagator = W3CTraceContextPropagator;\n//# sourceMappingURL=W3CTraceContextPropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRPCMetadata = exports.deleteRPCMetadata = exports.setRPCMetadata = exports.RPCType = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst RPC_METADATA_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key RPC_METADATA');\nvar RPCType;\n(function (RPCType) {\n RPCType[\"HTTP\"] = \"http\";\n})(RPCType = exports.RPCType || (exports.RPCType = {}));\nfunction setRPCMetadata(context, meta) {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\nexports.setRPCMetadata = setRPCMetadata;\nfunction deleteRPCMetadata(context) {\n return context.deleteValue(RPC_METADATA_KEY);\n}\nexports.deleteRPCMetadata = deleteRPCMetadata;\nfunction getRPCMetadata(context) {\n return context.getValue(RPC_METADATA_KEY);\n}\nexports.getRPCMetadata = getRPCMetadata;\n//# sourceMappingURL=rpc-metadata.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPlainObject = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n return false;\n }\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString);\n}\nexports.isPlainObject = isPlainObject;\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value)\n ? getRawTag(value)\n : objectToString(value);\n}\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n }\n catch {\n // silence\n }\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n }\n else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n//# sourceMappingURL=lodash.merge.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst lodash_merge_1 = require(\"./lodash.merge\");\nconst MAX_LEVEL = 20;\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nfunction merge(...args) {\n let result = args.shift();\n const objects = new WeakMap();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n return result;\n}\nexports.merge = merge;\nfunction takeValue(value) {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(one, two, level = 0, objects) {\n let result;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\n }\n else if (isArray(one)) {\n result = one.slice();\n if (isArray(two)) {\n for (let i = 0, j = two.length; i < j; i++) {\n result.push(takeValue(two[i]));\n }\n }\n else if (isObject(two)) {\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n result[key] = takeValue(two[key]);\n }\n }\n }\n else if (isObject(one)) {\n if (isObject(two)) {\n if (!shouldMerge(one, two)) {\n return two;\n }\n result = Object.assign({}, one);\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n }\n else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n }\n else {\n const obj1 = result[key];\n const obj2 = twoValue;\n if (wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)) {\n delete result[key];\n }\n else {\n if (isObject(obj1) && isObject(obj2)) {\n const arr1 = objects.get(obj1) || [];\n const arr2 = objects.get(obj2) || [];\n arr1.push({ obj: one, key });\n arr2.push({ obj: two, key });\n objects.set(obj1, arr1);\n objects.set(obj2, arr2);\n }\n result[key] = mergeTwoObjects(result[key], twoValue, level, objects);\n }\n }\n }\n }\n else {\n result = two;\n }\n }\n return result;\n}\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(obj, key, objects) {\n const arr = objects.get(obj[key]) || [];\n for (let i = 0, j = arr.length; i < j; i++) {\n const info = arr[i];\n if (info.key === key && info.obj === obj) {\n return true;\n }\n }\n return false;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isObject(value) {\n return (!isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object');\n}\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined' ||\n value instanceof Date ||\n value instanceof RegExp ||\n value === null);\n}\nfunction shouldMerge(one, two) {\n if (!(0, lodash_merge_1.isPlainObject)(one) || !(0, lodash_merge_1.isPlainObject)(two)) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=merge.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callWithTimeout = exports.TimeoutError = void 0;\n/**\n * Error that is thrown on timeouts.\n */\nclass TimeoutError extends Error {\n constructor(message) {\n super(message);\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\nexports.TimeoutError = TimeoutError;\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *

NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nfunction callWithTimeout(promise, timeout) {\n let timeoutHandle;\n const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n return Promise.race([promise, timeoutPromise]).then(result => {\n clearTimeout(timeoutHandle);\n return result;\n }, reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n });\n}\nexports.callWithTimeout = callWithTimeout;\n//# sourceMappingURL=timeout.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isUrlIgnored = exports.urlMatches = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nfunction urlMatches(url, urlToMatch) {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n }\n else {\n return !!url.match(urlToMatch);\n }\n}\nexports.urlMatches = urlMatches;\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nfunction isUrlIgnored(url, ignoredUrls) {\n if (!ignoredUrls) {\n return false;\n }\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\nexports.isUrlIgnored = isUrlIgnored;\n//# sourceMappingURL=url.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deferred = void 0;\nclass Deferred {\n _promise;\n _resolve;\n _reject;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n get promise() {\n return this._promise;\n }\n resolve(val) {\n this._resolve(val);\n }\n reject(err) {\n this._reject(err);\n }\n}\nexports.Deferred = Deferred;\n//# sourceMappingURL=promise.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindOnceFuture = void 0;\nconst promise_1 = require(\"./promise\");\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nclass BindOnceFuture {\n _isCalled = false;\n _deferred = new promise_1.Deferred();\n _callback;\n _that;\n constructor(callback, that) {\n this._callback = callback;\n this._that = that;\n }\n get isCalled() {\n return this._isCalled;\n }\n get promise() {\n return this._deferred.promise;\n }\n call(...args) {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err));\n }\n catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\nexports.BindOnceFuture = BindOnceFuture;\n//# sourceMappingURL=callback.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diagLogLevelFromString = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst logLevelMap = {\n ALL: api_1.DiagLogLevel.ALL,\n VERBOSE: api_1.DiagLogLevel.VERBOSE,\n DEBUG: api_1.DiagLogLevel.DEBUG,\n INFO: api_1.DiagLogLevel.INFO,\n WARN: api_1.DiagLogLevel.WARN,\n ERROR: api_1.DiagLogLevel.ERROR,\n NONE: api_1.DiagLogLevel.NONE,\n};\n/**\n * Convert a string to a {@link DiagLogLevel}, defaults to {@link DiagLogLevel} if the log level does not exist or undefined if the input is undefined.\n * @param value\n */\nfunction diagLogLevelFromString(value) {\n if (value == null) {\n // don't fall back to default - no value set has different semantics for ús than an incorrect value (do not set vs. fall back to default)\n return undefined;\n }\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n if (resolvedLogLevel == null) {\n api_1.diag.warn(`Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`);\n return api_1.DiagLogLevel.INFO;\n }\n return resolvedLogLevel;\n}\nexports.diagLogLevelFromString = diagLogLevelFromString;\n//# sourceMappingURL=configuration.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._export = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../trace/suppress-tracing\");\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nfunction _export(exporter, arg) {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n api_1.context.with((0, suppress_tracing_1.suppressTracing)(api_1.context.active()), () => {\n exporter.export(arg, resolve);\n });\n });\n}\nexports._export = _export;\n//# sourceMappingURL=exporter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.internal = exports.diagLogLevelFromString = exports.BindOnceFuture = exports.urlMatches = exports.isUrlIgnored = exports.callWithTimeout = exports.TimeoutError = exports.merge = exports.TraceState = exports.unsuppressTracing = exports.suppressTracing = exports.isTracingSuppressed = exports.setRPCMetadata = exports.getRPCMetadata = exports.deleteRPCMetadata = exports.RPCType = exports.parseTraceParent = exports.W3CTraceContextPropagator = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = exports.CompositePropagator = exports.otperformance = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports._globalThis = exports.SDK_INFO = exports.parseKeyPairsIntoRecord = exports.ExportResultCode = exports.unrefTimer = exports.timeInputToHrTime = exports.millisToHrTime = exports.isTimeInputHrTime = exports.isTimeInput = exports.hrTimeToTimeStamp = exports.hrTimeToNanoseconds = exports.hrTimeToMilliseconds = exports.hrTimeToMicroseconds = exports.hrTimeDuration = exports.hrTime = exports.getTimeOrigin = exports.addHrTimes = exports.loggingErrorHandler = exports.setGlobalErrorHandler = exports.globalErrorHandler = exports.sanitizeAttributes = exports.isAttributeValue = exports.AnchoredClock = exports.W3CBaggagePropagator = void 0;\nvar W3CBaggagePropagator_1 = require(\"./baggage/propagation/W3CBaggagePropagator\");\nObject.defineProperty(exports, \"W3CBaggagePropagator\", { enumerable: true, get: function () { return W3CBaggagePropagator_1.W3CBaggagePropagator; } });\nvar anchored_clock_1 = require(\"./common/anchored-clock\");\nObject.defineProperty(exports, \"AnchoredClock\", { enumerable: true, get: function () { return anchored_clock_1.AnchoredClock; } });\nvar attributes_1 = require(\"./common/attributes\");\nObject.defineProperty(exports, \"isAttributeValue\", { enumerable: true, get: function () { return attributes_1.isAttributeValue; } });\nObject.defineProperty(exports, \"sanitizeAttributes\", { enumerable: true, get: function () { return attributes_1.sanitizeAttributes; } });\nvar global_error_handler_1 = require(\"./common/global-error-handler\");\nObject.defineProperty(exports, \"globalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.globalErrorHandler; } });\nObject.defineProperty(exports, \"setGlobalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.setGlobalErrorHandler; } });\nvar logging_error_handler_1 = require(\"./common/logging-error-handler\");\nObject.defineProperty(exports, \"loggingErrorHandler\", { enumerable: true, get: function () { return logging_error_handler_1.loggingErrorHandler; } });\nvar time_1 = require(\"./common/time\");\nObject.defineProperty(exports, \"addHrTimes\", { enumerable: true, get: function () { return time_1.addHrTimes; } });\nObject.defineProperty(exports, \"getTimeOrigin\", { enumerable: true, get: function () { return time_1.getTimeOrigin; } });\nObject.defineProperty(exports, \"hrTime\", { enumerable: true, get: function () { return time_1.hrTime; } });\nObject.defineProperty(exports, \"hrTimeDuration\", { enumerable: true, get: function () { return time_1.hrTimeDuration; } });\nObject.defineProperty(exports, \"hrTimeToMicroseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMicroseconds; } });\nObject.defineProperty(exports, \"hrTimeToMilliseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMilliseconds; } });\nObject.defineProperty(exports, \"hrTimeToNanoseconds\", { enumerable: true, get: function () { return time_1.hrTimeToNanoseconds; } });\nObject.defineProperty(exports, \"hrTimeToTimeStamp\", { enumerable: true, get: function () { return time_1.hrTimeToTimeStamp; } });\nObject.defineProperty(exports, \"isTimeInput\", { enumerable: true, get: function () { return time_1.isTimeInput; } });\nObject.defineProperty(exports, \"isTimeInputHrTime\", { enumerable: true, get: function () { return time_1.isTimeInputHrTime; } });\nObject.defineProperty(exports, \"millisToHrTime\", { enumerable: true, get: function () { return time_1.millisToHrTime; } });\nObject.defineProperty(exports, \"timeInputToHrTime\", { enumerable: true, get: function () { return time_1.timeInputToHrTime; } });\nvar timer_util_1 = require(\"./common/timer-util\");\nObject.defineProperty(exports, \"unrefTimer\", { enumerable: true, get: function () { return timer_util_1.unrefTimer; } });\nvar ExportResult_1 = require(\"./ExportResult\");\nObject.defineProperty(exports, \"ExportResultCode\", { enumerable: true, get: function () { return ExportResult_1.ExportResultCode; } });\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"parseKeyPairsIntoRecord\", { enumerable: true, get: function () { return utils_1.parseKeyPairsIntoRecord; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return platform_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return platform_1._globalThis; } });\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return platform_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return platform_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return platform_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return platform_1.getStringListFromEnv; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return platform_1.otperformance; } });\nvar composite_1 = require(\"./propagation/composite\");\nObject.defineProperty(exports, \"CompositePropagator\", { enumerable: true, get: function () { return composite_1.CompositePropagator; } });\nvar W3CTraceContextPropagator_1 = require(\"./trace/W3CTraceContextPropagator\");\nObject.defineProperty(exports, \"TRACE_PARENT_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_PARENT_HEADER; } });\nObject.defineProperty(exports, \"TRACE_STATE_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_STATE_HEADER; } });\nObject.defineProperty(exports, \"W3CTraceContextPropagator\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.W3CTraceContextPropagator; } });\nObject.defineProperty(exports, \"parseTraceParent\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.parseTraceParent; } });\nvar rpc_metadata_1 = require(\"./trace/rpc-metadata\");\nObject.defineProperty(exports, \"RPCType\", { enumerable: true, get: function () { return rpc_metadata_1.RPCType; } });\nObject.defineProperty(exports, \"deleteRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.deleteRPCMetadata; } });\nObject.defineProperty(exports, \"getRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.getRPCMetadata; } });\nObject.defineProperty(exports, \"setRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.setRPCMetadata; } });\nvar suppress_tracing_1 = require(\"./trace/suppress-tracing\");\nObject.defineProperty(exports, \"isTracingSuppressed\", { enumerable: true, get: function () { return suppress_tracing_1.isTracingSuppressed; } });\nObject.defineProperty(exports, \"suppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.suppressTracing; } });\nObject.defineProperty(exports, \"unsuppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.unsuppressTracing; } });\nvar TraceState_1 = require(\"./trace/TraceState\");\nObject.defineProperty(exports, \"TraceState\", { enumerable: true, get: function () { return TraceState_1.TraceState; } });\nvar merge_1 = require(\"./utils/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar timeout_1 = require(\"./utils/timeout\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return timeout_1.TimeoutError; } });\nObject.defineProperty(exports, \"callWithTimeout\", { enumerable: true, get: function () { return timeout_1.callWithTimeout; } });\nvar url_1 = require(\"./utils/url\");\nObject.defineProperty(exports, \"isUrlIgnored\", { enumerable: true, get: function () { return url_1.isUrlIgnored; } });\nObject.defineProperty(exports, \"urlMatches\", { enumerable: true, get: function () { return url_1.urlMatches; } });\nvar callback_1 = require(\"./utils/callback\");\nObject.defineProperty(exports, \"BindOnceFuture\", { enumerable: true, get: function () { return callback_1.BindOnceFuture; } });\nvar configuration_1 = require(\"./utils/configuration\");\nObject.defineProperty(exports, \"diagLogLevelFromString\", { enumerable: true, get: function () { return configuration_1.diagLogLevelFromString; } });\nconst exporter_1 = require(\"./internal/exporter\");\nexports.internal = {\n _export: exporter_1._export,\n};\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '0.213.0';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeverityNumber = void 0;\nvar SeverityNumber;\n(function (SeverityNumber) {\n SeverityNumber[SeverityNumber[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n SeverityNumber[SeverityNumber[\"TRACE\"] = 1] = \"TRACE\";\n SeverityNumber[SeverityNumber[\"TRACE2\"] = 2] = \"TRACE2\";\n SeverityNumber[SeverityNumber[\"TRACE3\"] = 3] = \"TRACE3\";\n SeverityNumber[SeverityNumber[\"TRACE4\"] = 4] = \"TRACE4\";\n SeverityNumber[SeverityNumber[\"DEBUG\"] = 5] = \"DEBUG\";\n SeverityNumber[SeverityNumber[\"DEBUG2\"] = 6] = \"DEBUG2\";\n SeverityNumber[SeverityNumber[\"DEBUG3\"] = 7] = \"DEBUG3\";\n SeverityNumber[SeverityNumber[\"DEBUG4\"] = 8] = \"DEBUG4\";\n SeverityNumber[SeverityNumber[\"INFO\"] = 9] = \"INFO\";\n SeverityNumber[SeverityNumber[\"INFO2\"] = 10] = \"INFO2\";\n SeverityNumber[SeverityNumber[\"INFO3\"] = 11] = \"INFO3\";\n SeverityNumber[SeverityNumber[\"INFO4\"] = 12] = \"INFO4\";\n SeverityNumber[SeverityNumber[\"WARN\"] = 13] = \"WARN\";\n SeverityNumber[SeverityNumber[\"WARN2\"] = 14] = \"WARN2\";\n SeverityNumber[SeverityNumber[\"WARN3\"] = 15] = \"WARN3\";\n SeverityNumber[SeverityNumber[\"WARN4\"] = 16] = \"WARN4\";\n SeverityNumber[SeverityNumber[\"ERROR\"] = 17] = \"ERROR\";\n SeverityNumber[SeverityNumber[\"ERROR2\"] = 18] = \"ERROR2\";\n SeverityNumber[SeverityNumber[\"ERROR3\"] = 19] = \"ERROR3\";\n SeverityNumber[SeverityNumber[\"ERROR4\"] = 20] = \"ERROR4\";\n SeverityNumber[SeverityNumber[\"FATAL\"] = 21] = \"FATAL\";\n SeverityNumber[SeverityNumber[\"FATAL2\"] = 22] = \"FATAL2\";\n SeverityNumber[SeverityNumber[\"FATAL3\"] = 23] = \"FATAL3\";\n SeverityNumber[SeverityNumber[\"FATAL4\"] = 24] = \"FATAL4\";\n})(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {}));\n//# sourceMappingURL=LogRecord.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER = exports.NoopLogger = void 0;\nclass NoopLogger {\n emit(_logRecord) { }\n}\nexports.NoopLogger = NoopLogger;\nexports.NOOP_LOGGER = new NoopLogger();\n//# sourceMappingURL=NoopLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = void 0;\nexports.GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\nexports._global = globalThis;\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nfunction makeGetter(requiredVersion, instance, fallback) {\n return (version) => version === requiredVersion ? instance : fallback;\n}\nexports.makeGetter = makeGetter;\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n//# sourceMappingURL=global-utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass NoopLoggerProvider {\n getLogger(_name, _version, _options) {\n return new NoopLogger_1.NoopLogger();\n }\n}\nexports.NoopLoggerProvider = NoopLoggerProvider;\nexports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n//# sourceMappingURL=NoopLoggerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLogger = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass ProxyLogger {\n constructor(provider, name, version, options) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord) {\n this._getLogger().emit(logRecord);\n }\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(this.name, this.version, this.options);\n if (!logger) {\n return NoopLogger_1.NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\nexports.ProxyLogger = ProxyLogger;\n//# sourceMappingURL=ProxyLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLoggerProvider = void 0;\nconst NoopLoggerProvider_1 = require(\"./NoopLoggerProvider\");\nconst ProxyLogger_1 = require(\"./ProxyLogger\");\nclass ProxyLoggerProvider {\n getLogger(name, version, options) {\n var _a;\n return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger_1.ProxyLogger(this, name, version, options));\n }\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER;\n }\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate) {\n this._delegate = delegate;\n }\n /**\n * @internal\n */\n _getDelegateLogger(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options);\n }\n}\nexports.ProxyLoggerProvider = ProxyLoggerProvider;\n//# sourceMappingURL=ProxyLoggerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogsAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopLoggerProvider_1 = require(\"../NoopLoggerProvider\");\nconst ProxyLoggerProvider_1 = require(\"../ProxyLoggerProvider\");\nclass LogsAPI {\n constructor() {\n this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n }\n static getInstance() {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n return this._instance;\n }\n setGlobalLoggerProvider(provider) {\n if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY] = (0, global_utils_1.makeGetter)(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER);\n this._proxyLoggerProvider._setDelegate(provider);\n return provider;\n }\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n getLoggerProvider() {\n var _a, _b;\n return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider);\n }\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n getLogger(name, version, options) {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n /** Remove the global logger provider */\n disable() {\n delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n }\n}\nexports.LogsAPI = LogsAPI;\n//# sourceMappingURL=logs.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logs = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = void 0;\nvar LogRecord_1 = require(\"./types/LogRecord\");\nObject.defineProperty(exports, \"SeverityNumber\", { enumerable: true, get: function () { return LogRecord_1.SeverityNumber; } });\nvar NoopLogger_1 = require(\"./NoopLogger\");\nObject.defineProperty(exports, \"NOOP_LOGGER\", { enumerable: true, get: function () { return NoopLogger_1.NOOP_LOGGER; } });\nObject.defineProperty(exports, \"NoopLogger\", { enumerable: true, get: function () { return NoopLogger_1.NoopLogger; } });\nconst logs_1 = require(\"./api/logs\");\nexports.logs = logs_1.LogsAPI.getInstance();\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.disableInstrumentations = exports.enableInstrumentations = void 0;\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nfunction enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\nexports.enableInstrumentations = enableInstrumentations;\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nfunction disableInstrumentations(instrumentations) {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\nexports.disableInstrumentations = disableInstrumentations;\n//# sourceMappingURL=autoLoaderUtils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerInstrumentations = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst autoLoaderUtils_1 = require(\"./autoLoaderUtils\");\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nfunction registerInstrumentations(options) {\n const tracerProvider = options.tracerProvider || api_1.trace.getTracerProvider();\n const meterProvider = options.meterProvider || api_1.metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || api_logs_1.logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n (0, autoLoaderUtils_1.enableInstrumentations)(instrumentations, tracerProvider, meterProvider, loggerProvider);\n return () => {\n (0, autoLoaderUtils_1.disableInstrumentations)(instrumentations);\n };\n}\nexports.registerInstrumentations = registerInstrumentations;\n//# sourceMappingURL=autoLoader.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.satisfies = void 0;\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\nconst api_1 = require(\"@opentelemetry/api\");\nconst VERSION_REGEXP = /^(?:v)?(?(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*))(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst RANGE_REGEXP = /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|0|[1-9]\\d*))?)(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nfunction satisfies(version, range, options) {\n // Strict semver format check\n if (!_validateVersion(version)) {\n api_1.diag.error(`Invalid version: ${version}`);\n return false;\n }\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n // Parse version\n const parsedVersion = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n const allParsedRanges = [];\n // Check given version whether it satisfies given range expression\n const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options);\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\nexports.satisfies = satisfies;\nfunction _validateVersion(version) {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\nfunction _doSatisfies(parsedVersion, range, allParsedRanges, options) {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n }\n else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n }\n else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\nfunction _checkRange(parsedVersion, range, allParsedRanges, options) {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n }\n else {\n // Validate and parse range\n const parsedRange = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\nfunction _satisfies(parsedVersion, parsedRange) {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n // Compare version segment first\n let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []);\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments = parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments = parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n }\n else if (!versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length) {\n comparisonResult = 1;\n }\n else if (versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length) {\n comparisonResult = -1;\n }\n else {\n comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments);\n }\n }\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op]?.includes(comparisonResult);\n}\nfunction _doPreleaseCheck(parsedVersion, allParsedRanges) {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version);\n }\n return true;\n}\nfunction _normalizeRange(range, options) {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\nfunction _parseVersion(versionString) {\n const match = versionString.match(VERSION_REGEXP);\n if (!match) {\n api_1.diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n const version = match.groups.version;\n const prerelease = match.groups.prerelease;\n const build = match.groups.build;\n const versionSegments = version.split('.');\n const prereleaseSegments = prerelease?.split('.');\n return {\n op: undefined,\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n build,\n };\n}\nfunction _parseRange(rangeString) {\n if (!rangeString) {\n return {};\n }\n const match = rangeString.match(RANGE_REGEXP);\n if (!match) {\n api_1.diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n let op = match.groups.op;\n const version = match.groups.version;\n const prerelease = match.groups.prerelease;\n const build = match.groups.build;\n const versionSegments = version.split('.');\n const prereleaseSegments = prerelease?.split('.');\n if (op === '==') {\n op = '=';\n }\n return {\n op: op || '=',\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n build,\n };\n}\nfunction _isWildcard(s) {\n return s === '*' || s === 'x' || s === 'X';\n}\nfunction _parseVersionString(v) {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\nfunction _normalizeVersionType(a, b) {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a, b];\n }\n else if (typeof a === 'string') {\n return [a, b];\n }\n else {\n throw new Error('Version segments can only be strings or numbers');\n }\n }\n else {\n return [String(a), String(b)];\n }\n}\nfunction _compareVersionStrings(v1, v2) {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2));\n if (parsedV1 > parsedV2) {\n return 1;\n }\n else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\nfunction _compareVersionSegments(v1, v2) {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN = `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\nconst HYPHENRANGE = `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp) {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n if (isX(M)) {\n ret = '';\n }\n else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n }\n else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n }\n else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp, options) {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n if (isX(M)) {\n ret = '';\n }\n else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n }\n else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n }\n else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n }\n else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n }\n else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n }\n else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n }\n else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n }\n else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n }\n else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp, options) {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n }\n else {\n // nothing is forbidden\n ret = '*';\n }\n }\n else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n }\n else {\n m = +m + 1;\n p = 0;\n }\n }\n else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n }\n else {\n m = +m + 1;\n }\n }\n if (gtlt === '<') {\n pr = '-0';\n }\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n }\n else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n }\n else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp, options) {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n }\n else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n }\n else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n }\n else if (fpr) {\n from = `>=${from}`;\n }\n else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n if (isX(tM)) {\n to = '';\n }\n else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n }\n else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n }\n else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n }\n else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n }\n else {\n to = `<=${to}`;\n }\n return `${from} ${to}`.trim();\n });\n}\n//# sourceMappingURL=semver.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massUnwrap = exports.unwrap = exports.massWrap = exports.wrap = void 0;\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger = console.error.bind(console);\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj, name, value) {\n const enumerable = !!obj[name] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\nconst wrap = (nodule, name, wrapper) => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n const original = nodule[name];\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n const wrapped = wrapper(original, name);\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped;\n};\nexports.wrap = wrap;\nconst massWrap = (nodules, names, wrapper) => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n }\n else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n nodules.forEach(nodule => {\n names.forEach(name => {\n (0, exports.wrap)(nodule, name, wrapper);\n });\n });\n};\nexports.massWrap = massWrap;\nconst unwrap = (nodule, name) => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n const wrapped = nodule[name];\n if (!wrapped.__unwrap) {\n logger('no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?');\n }\n else {\n wrapped.__unwrap();\n return;\n }\n};\nexports.unwrap = unwrap;\nconst massUnwrap = (nodules, names) => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n }\n else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n nodules.forEach(nodule => {\n names.forEach(name => {\n (0, exports.unwrap)(nodule, name);\n });\n });\n};\nexports.massUnwrap = massUnwrap;\nfunction shimmer(options) {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n }\n else {\n logger = options.logger;\n }\n }\n}\nexports.default = shimmer;\nshimmer.wrap = exports.wrap;\nshimmer.massWrap = exports.massWrap;\nshimmer.unwrap = exports.unwrap;\nshimmer.massUnwrap = exports.massUnwrap;\n//# sourceMappingURL=shimmer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationAbstract = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst shimmer = require(\"./shimmer\");\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nclass InstrumentationAbstract {\n _config = {};\n _tracer;\n _meter;\n _logger;\n _diag;\n instrumentationName;\n instrumentationVersion;\n constructor(instrumentationName, instrumentationVersion, config) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n this.setConfig(config);\n this._diag = api_1.diag.createComponentLogger({\n namespace: instrumentationName,\n });\n this._tracer = api_1.trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = api_1.metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = api_logs_1.logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n /* Api to wrap instrumented method */\n _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n _massUnwrap = shimmer.massUnwrap;\n /* Returns meter */\n get meter() {\n return this._meter;\n }\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n setMeterProvider(meterProvider) {\n this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion);\n this._updateMetricInstruments();\n }\n /* Returns logger */\n get logger() {\n return this._logger;\n }\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n setLoggerProvider(loggerProvider) {\n this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion);\n }\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n getModuleDefinitions() {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n return initResult;\n }\n /**\n * Sets the new metric instruments with the current Meter.\n */\n _updateMetricInstruments() {\n return;\n }\n /* Returns InstrumentationConfig */\n getConfig() {\n return this._config;\n }\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n setConfig(config) {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n setTracerProvider(tracerProvider) {\n this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion);\n }\n /* Returns tracer */\n get tracer() {\n return this._tracer;\n }\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n _runSpanCustomizationHook(hookHandler, triggerName, span, info) {\n if (!hookHandler) {\n return;\n }\n try {\n hookHandler(span, info);\n }\n catch (e) {\n this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e);\n }\n }\n}\nexports.InstrumentationAbstract = InstrumentationAbstract;\n//# sourceMappingURL=instrumentation.js.map", + "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", + "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", + "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", + "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", + "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", + "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", + "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", + "'use strict'\n\nvar sep = require('path').sep\n\nmodule.exports = function (file) {\n var segments = file.split(sep)\n var index = segments.lastIndexOf('node_modules')\n\n if (index === -1) return\n if (!segments[index + 1]) return\n\n var scoped = segments[index + 1][0] === '@'\n var name = scoped ? segments[index + 1] + '/' + segments[index + 2] : segments[index + 1]\n var offset = scoped ? 3 : 2\n\n var basedir = ''\n var lastBaseDirSegmentIndex = index + offset - 1\n for (var i = 0; i <= lastBaseDirSegmentIndex; i++) {\n if (i === lastBaseDirSegmentIndex) {\n basedir += segments[i]\n } else {\n basedir += segments[i] + sep\n }\n }\n\n var path = ''\n var lastSegmentIndex = segments.length - 1\n for (var i2 = index + offset; i2 <= lastSegmentIndex; i2++) {\n if (i2 === lastSegmentIndex) {\n path += segments[i2]\n } else {\n path += segments[i2] + sep\n }\n }\n\n return {\n name: name,\n basedir: basedir,\n path: path\n }\n}\n", + "'use strict'\n\nconst path = require('path')\nconst Module = require('module')\nconst debug = require('debug')('require-in-the-middle')\nconst moduleDetailsFromPath = require('module-details-from-path')\n\n// Using the default export is discouraged, but kept for backward compatibility.\n// Use this instead:\n// const { Hook } = require('require-in-the-middle')\nmodule.exports = Hook\nmodule.exports.Hook = Hook\n\nlet builtinModules // Set\n\n/**\n * Is the given module a \"core\" module?\n * https://nodejs.org/api/modules.html#core-modules\n *\n * @type {(moduleName: string) => boolean}\n */\nlet isCore\nif (Module.isBuiltin) { // Added in node v18.6.0, v16.17.0\n isCore = Module.isBuiltin\n} else if (Module.builtinModules) { // Added in node v9.3.0, v8.10.0, v6.13.0\n isCore = moduleName => {\n if (moduleName.startsWith('node:')) {\n return true\n }\n\n if (builtinModules === undefined) {\n builtinModules = new Set(Module.builtinModules)\n }\n\n return builtinModules.has(moduleName)\n }\n} else {\n throw new Error('\\'require-in-the-middle\\' requires Node.js >=v9.3.0 or >=v8.10.0')\n}\n\n// 'foo/bar.js' or 'foo/bar/index.js' => 'foo/bar'\nconst normalize = /([/\\\\]index)?(\\.js)?$/\n\n// Cache `onrequire`-patched exports for modules.\n//\n// Exports for built-in (a.k.a. \"core\") modules are stored in an internal Map.\n//\n// Exports for non-core modules are stored on a private field on the `Module`\n// object in `require.cache`. This allows users to delete from `require.cache`\n// to trigger a re-load (and re-run of the hook's `onrequire`) of a module the\n// next time it is required.\n// https://nodejs.org/docs/latest/api/all.html#all_modules_requirecache\n//\n// In some special cases -- e.g. some other `require()` hook swapping out\n// `Module._cache` like `@babel/register` -- a non-core module won't be in\n// `require.cache`. In that case this falls back to caching on the internal Map.\nclass ExportsCache {\n constructor () {\n this._localCache = new Map() // -> \n this._kRitmExports = Symbol('RitmExports')\n }\n\n has (filename, isBuiltin) {\n if (this._localCache.has(filename)) {\n return true\n } else if (!isBuiltin) {\n const mod = require.cache[filename]\n return !!(mod && this._kRitmExports in mod)\n } else {\n return false\n }\n }\n\n get (filename, isBuiltin) {\n const cachedExports = this._localCache.get(filename)\n if (cachedExports !== undefined) {\n return cachedExports\n } else if (!isBuiltin) {\n const mod = require.cache[filename]\n return (mod && mod[this._kRitmExports])\n }\n }\n\n set (filename, exports, isBuiltin) {\n if (isBuiltin) {\n this._localCache.set(filename, exports)\n } else if (filename in require.cache) {\n require.cache[filename][this._kRitmExports] = exports\n } else {\n debug('non-core module is unexpectedly not in require.cache: \"%s\"', filename)\n this._localCache.set(filename, exports)\n }\n }\n}\n\nfunction Hook (modules, options, onrequire) {\n if ((this instanceof Hook) === false) return new Hook(modules, options, onrequire)\n if (typeof modules === 'function') {\n onrequire = modules\n modules = null\n options = null\n } else if (typeof options === 'function') {\n onrequire = options\n options = null\n }\n\n if (typeof Module._resolveFilename !== 'function') {\n console.error('Error: Expected Module._resolveFilename to be a function (was: %s) - aborting!', typeof Module._resolveFilename)\n console.error('Please report this error as an issue related to Node.js %s at https://github.com/nodejs/require-in-the-middle/issues', process.version)\n return\n }\n\n this._cache = new ExportsCache()\n\n this._unhooked = false\n this._origRequire = Module.prototype.require\n\n const self = this\n const patching = new Set()\n const internals = options ? options.internals === true : false\n const hasWhitelist = Array.isArray(modules)\n\n debug('registering require hook')\n\n this._require = Module.prototype.require = function (id) {\n if (self._unhooked === true) {\n // if the patched require function could not be removed because\n // someone else patched it after it was patched here, we just\n // abort and pass the request onwards to the original require\n debug('ignoring require call - module is soft-unhooked')\n return self._origRequire.apply(this, arguments)\n }\n\n return patchedRequire.call(this, arguments, false)\n }\n\n if (typeof process.getBuiltinModule === 'function') {\n this._origGetBuiltinModule = process.getBuiltinModule\n this._getBuiltinModule = process.getBuiltinModule = function (id) {\n if (self._unhooked === true) {\n // if the patched process.getBuiltinModule function could not be removed because\n // someone else patched it after it was patched here, we just abort and pass the\n // request onwards to the original process.getBuiltinModule\n debug('ignoring process.getBuiltinModule call - module is soft-unhooked')\n return self._origGetBuiltinModule.apply(this, arguments)\n }\n\n return patchedRequire.call(this, arguments, true)\n }\n }\n\n // Preserve the original require/process.getBuiltinModule arguments in `args`\n function patchedRequire (args, coreOnly) {\n const id = args[0]\n const core = isCore(id)\n let filename // the string used for caching\n if (core) {\n filename = id\n // If this is a builtin module that can be identified both as 'foo' and\n // 'node:foo', then prefer 'foo' as the caching key.\n if (id.startsWith('node:')) {\n const idWithoutPrefix = id.slice(5)\n if (isCore(idWithoutPrefix)) {\n filename = idWithoutPrefix\n }\n }\n } else if (coreOnly) {\n // `coreOnly` is `true` if this was a call to `process.getBuiltinModule`, in which case\n // we don't want to return anything if the requested `id` isn't a core module. Falling\n // back to default behaviour, which at the time of this wrting is simply returning `undefined`\n debug('call to process.getBuiltinModule with unknown built-in id')\n return self._origGetBuiltinModule.apply(this, args)\n } else {\n try {\n filename = Module._resolveFilename(id, this)\n } catch (resolveErr) {\n // If someone *else* monkey-patches before this monkey-patch, then that\n // code might expect `require(someId)` to get through so it can be\n // handled, even if `someId` cannot be resolved to a filename. In this\n // case, instead of throwing we defer to the underlying `require`.\n //\n // For example the Azure Functions Node.js worker module does this,\n // where `@azure/functions-core` resolves to an internal object.\n // https://github.com/Azure/azure-functions-nodejs-worker/blob/v3.5.2/src/setupCoreModule.ts#L46-L54\n debug('Module._resolveFilename(\"%s\") threw %j, calling original Module.require', id, resolveErr.message)\n return self._origRequire.apply(this, args)\n }\n }\n\n let moduleName, basedir\n\n debug('processing %s module require(\\'%s\\'): %s', core === true ? 'core' : 'non-core', id, filename)\n\n // return known patched modules immediately\n if (self._cache.has(filename, core) === true) {\n debug('returning already patched cached module: %s', filename)\n return self._cache.get(filename, core)\n }\n\n // Check if this module has a patcher in-progress already.\n // Otherwise, mark this module as patching in-progress.\n const isPatching = patching.has(filename)\n if (isPatching === false) {\n patching.add(filename)\n }\n\n const exports = coreOnly\n ? self._origGetBuiltinModule.apply(this, args)\n : self._origRequire.apply(this, args)\n\n // If it's already patched, just return it as-is.\n if (isPatching === true) {\n debug('module is in the process of being patched already - ignoring: %s', filename)\n return exports\n }\n\n // The module has already been loaded,\n // so the patching mark can be cleaned up.\n patching.delete(filename)\n\n if (core === true) {\n if (hasWhitelist === true && modules.includes(filename) === false) {\n debug('ignoring core module not on whitelist: %s', filename)\n return exports // abort if module name isn't on whitelist\n }\n moduleName = filename\n } else if (hasWhitelist === true && modules.includes(filename)) {\n // whitelist includes the absolute path to the file including extension\n const parsedPath = path.parse(filename)\n moduleName = parsedPath.name\n basedir = parsedPath.dir\n } else {\n const stat = moduleDetailsFromPath(filename)\n if (stat === undefined) {\n debug('could not parse filename: %s', filename)\n return exports // abort if filename could not be parsed\n }\n moduleName = stat.name\n basedir = stat.basedir\n\n // Ex: require('foo/lib/../bar.js')\n // moduleName = 'foo'\n // fullModuleName = 'foo/bar'\n const fullModuleName = resolveModuleName(stat)\n\n debug('resolved filename to module: %s (id: %s, resolved: %s, basedir: %s)', moduleName, id, fullModuleName, basedir)\n\n let matchFound = false\n if (hasWhitelist) {\n if (!id.startsWith('.') && modules.includes(id)) {\n // Not starting with '.' means `id` is identifying a module path,\n // as opposed to a local file path. (Note: I'm not sure about\n // absolute paths, but those are handled above.)\n // If this `id` is in `modules`, then this could be a match to an\n // package \"exports\" entry point that wouldn't otherwise match below.\n moduleName = id\n matchFound = true\n }\n\n // abort if module name isn't on whitelist\n if (!modules.includes(moduleName) && !modules.includes(fullModuleName)) {\n return exports\n }\n\n if (modules.includes(fullModuleName) && fullModuleName !== moduleName) {\n // if we get to this point, it means that we're requiring a whitelisted sub-module\n moduleName = fullModuleName\n matchFound = true\n }\n }\n\n if (!matchFound) {\n // figure out if this is the main module file, or a file inside the module\n let res\n try {\n res = require.resolve(moduleName, { paths: [basedir] })\n } catch (e) {\n debug('could not resolve module: %s', moduleName)\n self._cache.set(filename, exports, core)\n return exports // abort if module could not be resolved (e.g. no main in package.json and no index.js file)\n }\n\n if (res !== filename) {\n // this is a module-internal file\n if (internals === true) {\n // use the module-relative path to the file, prefixed by original module name\n moduleName = moduleName + path.sep + path.relative(basedir, filename)\n debug('preparing to process require of internal file: %s', moduleName)\n } else {\n debug('ignoring require of non-main module file: %s', res)\n self._cache.set(filename, exports, core)\n return exports // abort if not main module file\n }\n }\n }\n }\n\n // ensure that the cache entry is assigned a value before calling\n // onrequire, in case calling onrequire requires the same module.\n self._cache.set(filename, exports, core)\n debug('calling require hook: %s', moduleName)\n const patchedExports = onrequire(exports, moduleName, basedir)\n self._cache.set(filename, patchedExports, core)\n\n debug('returning module: %s', moduleName)\n return patchedExports\n }\n}\n\nHook.prototype.unhook = function () {\n this._unhooked = true\n\n if (this._require === Module.prototype.require) {\n Module.prototype.require = this._origRequire\n debug('require unhook successful')\n } else {\n debug('require unhook unsuccessful')\n }\n\n if (process.getBuiltinModule !== undefined) {\n if (this._getBuiltinModule === process.getBuiltinModule) {\n process.getBuiltinModule = this._origGetBuiltinModule\n debug('process.getBuiltinModule unhook successful')\n } else {\n debug('process.getBuiltinModule unhook unsuccessful')\n }\n }\n}\n\nfunction resolveModuleName (stat) {\n const normalizedPath = path.sep !== '/' ? stat.path.split(path.sep).join('/') : stat.path\n return path.posix.join(stat.name, normalizedPath).replace(normalize, '')\n}\n", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleNameTrie = exports.ModuleNameSeparator = void 0;\nexports.ModuleNameSeparator = '/';\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks = [];\n children = new Map();\n}\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nclass ModuleNameTrie {\n _trie = new ModuleNameTrieNode();\n _counter = 0;\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook) {\n let trieNode = this._trie;\n for (const moduleNamePart of hook.moduleName.split(exports.ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(moduleName, { maintainInsertionOrder, fullOnly } = {}) {\n let trieNode = this._trie;\n const results = [];\n let foundFull = true;\n for (const moduleNamePart of moduleName.split(exports.ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\nexports.ModuleNameTrie = ModuleNameTrie;\n//# sourceMappingURL=ModuleNameTrie.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequireInTheMiddleSingleton = void 0;\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst path = require(\"path\");\nconst ModuleNameTrie_1 = require(\"./ModuleNameTrie\");\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nclass RequireInTheMiddleSingleton {\n _moduleNameTrie = new ModuleNameTrie_1.ModuleNameTrie();\n static _instance;\n constructor() {\n this._initialize();\n }\n _initialize() {\n new require_in_the_middle_1.Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null, { internals: true }, (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n return exports;\n });\n }\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName, onRequire) {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance() {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha)\n return new RequireInTheMiddleSingleton();\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\nexports.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton;\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath) {\n return path.sep !== ModuleNameTrie_1.ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameTrie_1.ModuleNameSeparator)\n : moduleNameOrPath;\n}\n//# sourceMappingURL=RequireInTheMiddleSingleton.js.map", + "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst importHooks = [] // TODO should this be a Set?\nconst setters = new WeakMap()\nconst getters = new WeakMap()\nconst specifiers = new Map()\nconst toHook = []\n\nconst proxyHandler = {\n set (target, name, value) {\n const set = setters.get(target)\n const setter = set && set[name]\n if (typeof setter === 'function') {\n return setter(value)\n }\n // If a module doesn't export the property being assigned (e.g. no default\n // export), there is no setter to call. Don't crash userland code.\n return true\n },\n\n get (target, name) {\n if (name === Symbol.toStringTag) {\n return 'Module'\n }\n\n const getter = getters.get(target)[name]\n\n if (typeof getter === 'function') {\n return getter()\n }\n },\n\n defineProperty (target, property, descriptor) {\n if ((!('value' in descriptor))) {\n throw new Error('Getters/setters are not supported for exports property descriptors.')\n }\n\n const set = setters.get(target)\n const setter = set && set[property]\n if (typeof setter === 'function') {\n return setter(descriptor.value)\n }\n return true\n }\n}\n\nfunction register (name, namespace, set, get, specifier) {\n specifiers.set(name, specifier)\n setters.set(namespace, set)\n getters.set(namespace, get)\n const proxy = new Proxy(namespace, proxyHandler)\n importHooks.forEach(hook => hook(name, proxy, specifier))\n toHook.push([name, proxy, specifier])\n}\n\nexports.register = register\nexports.importHooks = importHooks\nexports.specifiers = specifiers\nexports.toHook = toHook\n", + "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst path = require('path')\nconst moduleDetailsFromPath = require('module-details-from-path')\nconst { fileURLToPath } = require('url')\nconst { MessageChannel } = require('worker_threads')\n\nlet { isBuiltin } = require('module')\nif (!isBuiltin) {\n isBuiltin = () => true\n}\n\nconst {\n importHooks,\n specifiers,\n toHook\n} = require('./lib/register')\n\nfunction addHook (hook) {\n importHooks.push(hook)\n toHook.forEach(([name, namespace, specifier]) => hook(name, namespace, specifier))\n}\n\nfunction removeHook (hook) {\n const index = importHooks.indexOf(hook)\n if (index > -1) {\n importHooks.splice(index, 1)\n }\n}\n\nfunction callHookFn (hookFn, namespace, name, baseDir) {\n const newDefault = hookFn(namespace, name, baseDir)\n if (newDefault && newDefault !== namespace) {\n // Only ESM modules that actually export `default` can have it reassigned.\n // Some hooks return a value unconditionally; avoid crashing when the module\n // has no default export (see issue #188).\n if ('default' in namespace) {\n namespace.default = newDefault\n }\n }\n}\n\nlet sendModulesToLoader\n\n/**\n * EXPERIMENTAL\n * This feature is experimental and may change in minor versions.\n * **NOTE** This feature is incompatible with the {internals: true} Hook option.\n *\n * Creates a message channel with a port that can be used to add hooks to the\n * list of exclusively included modules.\n *\n * This can be used to only wrap modules that are Hook'ed, however modules need\n * to be hooked before they are imported.\n *\n * ```ts\n * import { register } from 'module'\n * import { Hook, createAddHookMessageChannel } from 'import-in-the-middle'\n *\n * const { registerOptions, waitForAllMessagesAcknowledged } = createAddHookMessageChannel()\n *\n * register('import-in-the-middle/hook.mjs', import.meta.url, registerOptions)\n *\n * Hook(['fs'], (exported, name, baseDir) => {\n * // Instrument the fs module\n * })\n *\n * // Ensure that the loader has acknowledged all the modules\n * // before we allow execution to continue\n * await waitForAllMessagesAcknowledged()\n * ```\n */\nfunction createAddHookMessageChannel () {\n const { port1, port2 } = new MessageChannel()\n let pendingAckCount = 0\n let resolveFn\n\n sendModulesToLoader = (modules) => {\n pendingAckCount++\n port1.postMessage(modules)\n }\n\n port1.on('message', () => {\n pendingAckCount--\n\n if (resolveFn && pendingAckCount <= 0) {\n resolveFn()\n }\n }).unref()\n\n function waitForAllMessagesAcknowledged () {\n // This timer is to prevent the process from exiting with code 13:\n // 13: Unsettled Top-Level Await.\n const timer = setInterval(() => { }, 1000)\n const promise = new Promise((resolve) => {\n resolveFn = resolve\n }).then(() => { clearInterval(timer) })\n\n if (pendingAckCount === 0) {\n resolveFn()\n }\n\n return promise\n }\n\n const addHookMessagePort = port2\n const registerOptions = { data: { addHookMessagePort, include: [] }, transferList: [addHookMessagePort] }\n\n return { registerOptions, addHookMessagePort, waitForAllMessagesAcknowledged }\n}\n\nfunction Hook (modules, options, hookFn) {\n if ((this instanceof Hook) === false) return new Hook(modules, options, hookFn)\n if (typeof modules === 'function') {\n hookFn = modules\n modules = null\n options = null\n } else if (typeof options === 'function') {\n hookFn = options\n options = null\n }\n const internals = options ? options.internals === true : false\n\n if (sendModulesToLoader && Array.isArray(modules)) {\n sendModulesToLoader(modules)\n }\n\n this._iitmHook = (name, namespace, specifier) => {\n const loadUrl = name\n const isNodeUrl = loadUrl.startsWith('node:')\n let filePath, baseDir\n\n if (isNodeUrl) {\n // Normalize builtin module name to *not* have 'node:' prefix, unless\n // required, as it is for 'node:test' and some others. `module.isBuiltin`\n // is available in all Node.js versions that have node:-only modules.\n const unprefixed = name.slice(5)\n if (isBuiltin(unprefixed)) {\n name = unprefixed\n }\n } else if (loadUrl.startsWith('file://')) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n filePath = fileURLToPath(name)\n name = filePath\n } catch (e) {}\n Error.stackTraceLimit = stackTraceLimit\n\n if (filePath) {\n const details = moduleDetailsFromPath(filePath)\n if (details) {\n name = details.name\n baseDir = details.basedir\n }\n }\n }\n\n if (modules) {\n for (const matchArg of modules) {\n if (filePath && matchArg === filePath) {\n // abspath match\n callHookFn(hookFn, namespace, filePath, undefined)\n } else if (matchArg === name) {\n if (!baseDir) {\n // built-in module (or unexpected non file:// name?)\n callHookFn(hookFn, namespace, name, baseDir)\n } else if (baseDir.endsWith(specifiers.get(loadUrl))) {\n // An import of the top-level module (e.g. `import 'ioredis'`).\n // Note: Slight behaviour difference from RITM. RITM uses\n // `require.resolve(name)` to see if filename is the module\n // main file, which will catch `require('ioredis/built/index.js')`.\n // The check here will not catch `import 'ioredis/built/index.js'`.\n callHookFn(hookFn, namespace, name, baseDir)\n } else if (internals) {\n const internalPath = name + path.sep + path.relative(baseDir, filePath)\n callHookFn(hookFn, namespace, internalPath, baseDir)\n }\n } else if (matchArg === specifier) {\n callHookFn(hookFn, namespace, specifier, baseDir)\n }\n }\n } else {\n callHookFn(hookFn, namespace, name, baseDir)\n }\n }\n\n addHook(this._iitmHook)\n}\n\nHook.prototype.unhook = function () {\n removeHook(this._iitmHook)\n}\n\nmodule.exports = Hook\nmodule.exports.Hook = Hook\nmodule.exports.addHook = addHook\nmodule.exports.removeHook = removeHook\nmodule.exports.createAddHookMessageChannel = createAddHookMessageChannel\n", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0;\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nfunction safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) {\n let error;\n let result;\n try {\n result = execute();\n }\n catch (e) {\n error = e;\n }\n finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\nexports.safeExecuteInTheMiddle = safeExecuteInTheMiddle;\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nasync function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) {\n let error;\n let result;\n try {\n result = await execute();\n }\n catch (e) {\n error = e;\n }\n finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\nexports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync;\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nfunction isWrapped(func) {\n return (typeof func === 'function' &&\n typeof func.__original === 'function' &&\n typeof func.__unwrap === 'function' &&\n func.__wrapped === true);\n}\nexports.isWrapped = isWrapped;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationBase = void 0;\nconst path = require(\"path\");\nconst util_1 = require(\"util\");\nconst semver_1 = require(\"../../semver\");\nconst shimmer_1 = require(\"../../shimmer\");\nconst instrumentation_1 = require(\"../../instrumentation\");\nconst RequireInTheMiddleSingleton_1 = require(\"./RequireInTheMiddleSingleton\");\nconst import_in_the_middle_1 = require(\"import-in-the-middle\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst fs_1 = require(\"fs\");\nconst utils_1 = require(\"../../utils\");\n/**\n * Base abstract class for instrumenting node plugins\n */\nclass InstrumentationBase extends instrumentation_1.InstrumentationAbstract {\n _modules;\n _hooks = [];\n _requireInTheMiddleSingleton = RequireInTheMiddleSingleton_1.RequireInTheMiddleSingleton.getInstance();\n _enabled = false;\n constructor(instrumentationName, instrumentationVersion, config) {\n super(instrumentationName, instrumentationVersion, config);\n let modules = this.init();\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n this._modules = modules || [];\n if (this._config.enabled) {\n this.enable();\n }\n }\n _wrap = (moduleExports, name, wrapper) => {\n if ((0, utils_1.isWrapped)(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!util_1.types.isProxy(moduleExports)) {\n return (0, shimmer_1.wrap)(moduleExports, name, wrapper);\n }\n else {\n const wrapped = (0, shimmer_1.wrap)(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n _unwrap = (moduleExports, name) => {\n if (!util_1.types.isProxy(moduleExports)) {\n return (0, shimmer_1.unwrap)(moduleExports, name);\n }\n else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n _massWrap = (moduleExportsArray, names, wrapper) => {\n if (!moduleExportsArray) {\n api_1.diag.error('must provide one or more modules to patch');\n return;\n }\n else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n if (!(names && Array.isArray(names))) {\n api_1.diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n _massUnwrap = (moduleExportsArray, names) => {\n if (!moduleExportsArray) {\n api_1.diag.error('must provide one or more modules to patch');\n return;\n }\n else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n if (!(names && Array.isArray(names))) {\n api_1.diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n _warnOnPreloadedModules() {\n this._modules.forEach((module) => {\n const { name } = module;\n try {\n const resolvedModule = require.resolve(name);\n if (require.cache[resolvedModule]) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`);\n }\n }\n catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n _extractPackageVersion(baseDir) {\n try {\n const json = (0, fs_1.readFileSync)(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n }\n catch {\n api_1.diag.warn('Failed extracting version', baseDir);\n }\n return undefined;\n }\n _onRequire(module, exports, name, baseDir) {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', {\n module: module.name,\n });\n return module.patch(exports);\n }\n }\n return exports;\n }\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (isSupported(module.supportedVersions, version, module.includePrerelease)) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for module on require hook', {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n });\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(f => f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease));\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n });\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion);\n }\n return patchedExports;\n }, exports);\n }\n enable() {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', {\n module: module.name,\n version: module.moduleVersion,\n });\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n });\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new require_in_the_middle_1.Hook([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n this._hooks.push(hook);\n const esmHook = new import_in_the_middle_1.Hook([module.name], { internals: true }, hookFn);\n this._hooks.push(esmHook);\n }\n }\n disable() {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', {\n module: module.name,\n version: module.moduleVersion,\n });\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n });\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n isEnabled() {\n return this._enabled;\n }\n}\nexports.InstrumentationBase = InstrumentationBase;\nfunction isSupported(supportedVersions, version, includePrerelease) {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n return supportedVersions.some(supportedVersion => {\n return (0, semver_1.satisfies)(version, supportedVersion, { includePrerelease });\n });\n}\n//# sourceMappingURL=instrumentation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nvar path_1 = require(\"path\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return path_1.normalize; } });\n//# sourceMappingURL=normalize.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } });\nvar normalize_1 = require(\"./normalize\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return normalize_1.normalize; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return node_1.InstrumentationBase; } });\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return node_1.normalize; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleDefinition = void 0;\nclass InstrumentationNodeModuleDefinition {\n files;\n name;\n supportedVersions;\n patch;\n unpatch;\n constructor(name, supportedVersions, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch, files) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\nexports.InstrumentationNodeModuleDefinition = InstrumentationNodeModuleDefinition;\n//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleFile = void 0;\nconst index_1 = require(\"./platform/index\");\nclass InstrumentationNodeModuleFile {\n name;\n supportedVersions;\n patch;\n unpatch;\n constructor(name, supportedVersions, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch) {\n this.name = (0, index_1.normalize)(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\nexports.InstrumentationNodeModuleFile = InstrumentationNodeModuleFile;\n//# sourceMappingURL=instrumentationNodeModuleFile.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = void 0;\nvar SemconvStability;\n(function (SemconvStability) {\n /** Emit only stable semantic conventions. */\n SemconvStability[SemconvStability[\"STABLE\"] = 1] = \"STABLE\";\n /** Emit only old semantic conventions. */\n SemconvStability[SemconvStability[\"OLD\"] = 2] = \"OLD\";\n /** Emit both stable and old semantic conventions. */\n SemconvStability[SemconvStability[\"DUPLICATE\"] = 3] = \"DUPLICATE\";\n})(SemconvStability = exports.SemconvStability || (exports.SemconvStability = {}));\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nfunction semconvStabilityFromStr(namespace, str) {\n let semconvStability = SemconvStability.OLD;\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n }\n else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n return semconvStability;\n}\nexports.semconvStabilityFromStr = semconvStabilityFromStr;\n//# sourceMappingURL=semconvStability.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = exports.isWrapped = exports.InstrumentationNodeModuleFile = exports.InstrumentationNodeModuleDefinition = exports.InstrumentationBase = exports.registerInstrumentations = void 0;\nvar autoLoader_1 = require(\"./autoLoader\");\nObject.defineProperty(exports, \"registerInstrumentations\", { enumerable: true, get: function () { return autoLoader_1.registerInstrumentations; } });\nvar index_1 = require(\"./platform/index\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return index_1.InstrumentationBase; } });\nvar instrumentationNodeModuleDefinition_1 = require(\"./instrumentationNodeModuleDefinition\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleDefinition\", { enumerable: true, get: function () { return instrumentationNodeModuleDefinition_1.InstrumentationNodeModuleDefinition; } });\nvar instrumentationNodeModuleFile_1 = require(\"./instrumentationNodeModuleFile\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleFile\", { enumerable: true, get: function () { return instrumentationNodeModuleFile_1.InstrumentationNodeModuleFile; } });\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"isWrapped\", { enumerable: true, get: function () { return utils_1.isWrapped; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddle\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddle; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddleAsync\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddleAsync; } });\nvar semconvStability_1 = require(\"./semconvStability\");\nObject.defineProperty(exports, \"SemconvStability\", { enumerable: true, get: function () { return semconvStability_1.SemconvStability; } });\nObject.defineProperty(exports, \"semconvStabilityFromStr\", { enumerable: true, get: function () { return semconvStability_1.semconvStabilityFromStr; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HTTP_FLAVOR_VALUE_HTTP_1_1 = exports.NET_TRANSPORT_VALUE_IP_UDP = exports.NET_TRANSPORT_VALUE_IP_TCP = exports.ATTR_NET_TRANSPORT = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_NET_PEER_IP = exports.ATTR_NET_HOST_PORT = exports.ATTR_NET_HOST_NAME = exports.ATTR_NET_HOST_IP = exports.ATTR_HTTP_USER_AGENT = exports.ATTR_HTTP_URL = exports.ATTR_HTTP_TARGET = exports.ATTR_HTTP_STATUS_CODE = exports.ATTR_HTTP_SERVER_NAME = exports.ATTR_HTTP_SCHEME = exports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = exports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH = exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = exports.ATTR_HTTP_REQUEST_CONTENT_LENGTH = exports.ATTR_HTTP_METHOD = exports.ATTR_HTTP_HOST = exports.ATTR_HTTP_FLAVOR = exports.ATTR_HTTP_CLIENT_IP = exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = exports.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = exports.ATTR_USER_AGENT_SYNTHETIC_TYPE = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Specifies the category of synthetic traffic, such as tests or bots.\n *\n * @note This attribute **MAY** be derived from the contents of the `user_agent.original` attribute. Components that populate the attribute are responsible for determining what they consider to be synthetic bot or test traffic. This attribute can either be set for self-identification purposes, or on telemetry detected to be generated as a result of a synthetic request. This attribute is useful for distinguishing between genuine client traffic and synthetic traffic generated by bots or tests.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type';\n/**\n * Enum value \"bot\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexports.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT = 'bot';\n/**\n * Enum value \"test\" for attribute {@link ATTR_USER_AGENT_SYNTHETIC_TYPE}.\n */\nexports.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST = 'test';\n/**\n * Deprecated, use `client.address` instead.\n *\n * @example \"83.164.160.102\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `client.address`.\n */\nexports.ATTR_HTTP_CLIENT_IP = 'http.client_ip';\n/**\n * Deprecated, use `network.protocol.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.protocol.name`.\n */\nexports.ATTR_HTTP_FLAVOR = 'http.flavor';\n/**\n * Deprecated, use one of `server.address`, `client.address` or `http.request.header.host` instead, depending on the usage.\n *\n * @example www.example.org\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by one of `server.address`, `client.address` or `http.request.header.host`, depending on the usage.\n */\nexports.ATTR_HTTP_HOST = 'http.host';\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexports.ATTR_HTTP_METHOD = 'http.method';\n/**\n * Deprecated, use `http.request.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.header.`.\n */\nexports.ATTR_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\n/**\n * Deprecated, use `http.request.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.body.size`.\n */\nexports.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED = 'http.request_content_length_uncompressed';\n/**\n * Deprecated, use `http.response.header.` instead.\n *\n * @example 3495\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.header.`.\n */\nexports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\n/**\n * Deprecated, use `http.response.body.size` instead.\n *\n * @example 5493\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replace by `http.response.body.size`.\n */\nexports.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED = 'http.response_content_length_uncompressed';\n/**\n * Deprecated, use `url.scheme` instead.\n *\n * @example http\n * @example https\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.scheme` instead.\n */\nexports.ATTR_HTTP_SCHEME = 'http.scheme';\n/**\n * Deprecated, use `server.address` instead.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexports.ATTR_HTTP_SERVER_NAME = 'http.server_name';\n/**\n * Deprecated, use `http.response.status_code` instead.\n *\n * @example 200\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.response.status_code`.\n */\nexports.ATTR_HTTP_STATUS_CODE = 'http.status_code';\n/**\n * Deprecated, use `url.path` and `url.query` instead.\n *\n * @example /search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Split to `url.path` and `url.query.\n */\nexports.ATTR_HTTP_TARGET = 'http.target';\n/**\n * Deprecated, use `url.full` instead.\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `url.full`.\n */\nexports.ATTR_HTTP_URL = 'http.url';\n/**\n * Deprecated, use `user_agent.original` instead.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `user_agent.original`.\n */\nexports.ATTR_HTTP_USER_AGENT = 'http.user_agent';\n/**\n * Deprecated, use `network.local.address`.\n *\n * @example \"192.168.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.local.address`.\n */\nexports.ATTR_NET_HOST_IP = 'net.host.ip';\n/**\n * Deprecated, use `server.address`.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address`.\n */\nexports.ATTR_NET_HOST_NAME = 'net.host.name';\n/**\n * Deprecated, use `server.port`.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port`.\n */\nexports.ATTR_NET_HOST_PORT = 'net.host.port';\n/**\n * Deprecated, use `network.peer.address`.\n *\n * @example \"127.0.0.1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.peer.address`.\n */\nexports.ATTR_NET_PEER_IP = 'net.peer.ip';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Deprecated, use `network.transport`.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `network.transport`.\n */\nexports.ATTR_NET_TRANSPORT = 'net.transport';\n/**\n * Enum value \"ip_tcp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexports.NET_TRANSPORT_VALUE_IP_TCP = 'ip_tcp';\n/**\n * Enum value \"ip_udp\" for attribute {@link ATTR_NET_TRANSPORT}.\n */\nexports.NET_TRANSPORT_VALUE_IP_UDP = 'ip_udp';\n/**\n * Enum value \"1.1\" for attribute {@link ATTR_HTTP_FLAVOR}.\n */\nexports.HTTP_FLAVOR_VALUE_HTTP_1_1 = '1.1';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/**\n * https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/http.md\n */\nvar AttributeNames;\n(function (AttributeNames) {\n AttributeNames[\"HTTP_ERROR_NAME\"] = \"http.error_name\";\n AttributeNames[\"HTTP_ERROR_MESSAGE\"] = \"http.error_message\";\n AttributeNames[\"HTTP_STATUS_TEXT\"] = \"http.status_text\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_QUERY_STRINGS_TO_REDACT = exports.STR_REDACTED = exports.SYNTHETIC_BOT_NAMES = exports.SYNTHETIC_TEST_NAMES = void 0;\n/**\n * Names of possible synthetic test sources.\n */\nexports.SYNTHETIC_TEST_NAMES = ['alwayson'];\n/**\n * Names of possible synthetic bot sources.\n */\nexports.SYNTHETIC_BOT_NAMES = ['googlebot', 'bingbot'];\n/**\n * REDACTED string used to replace sensitive information in URLs.\n */\nexports.STR_REDACTED = 'REDACTED';\n/**\n * List of URL query keys that are considered sensitive and whose value should be redacted.\n */\nexports.DEFAULT_QUERY_STRINGS_TO_REDACT = [\n 'sig',\n 'Signature',\n 'AWSAccessKeyId',\n 'X-Goog-Signature',\n];\n//# sourceMappingURL=internal-types.js.map", + "'use strict';\n\nvar util = require('util');\n\n/**\n * An error thrown by the parser on unexpected input.\n *\n * @constructor\n * @param {string} message The error message.\n * @param {string} input The unexpected input.\n * @public\n */\nfunction ParseError(message, input) {\n Error.captureStackTrace(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = message;\n this.input = input;\n}\n\nutil.inherits(ParseError, Error);\n\nmodule.exports = ParseError;\n", + "'use strict';\n\n/**\n * Check if a character is a delimiter as defined in section 3.2.6 of RFC 7230.\n *\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is a delimiter, else `false`.\n * @public\n */\nfunction isDelimiter(code) {\n return code === 0x22 // '\"'\n || code === 0x28 // '('\n || code === 0x29 // ')'\n || code === 0x2C // ','\n || code === 0x2F // '/'\n || code >= 0x3A && code <= 0x40 // ':', ';', '<', '=', '>', '?' '@'\n || code >= 0x5B && code <= 0x5D // '[', '\\', ']'\n || code === 0x7B // '{'\n || code === 0x7D; // '}'\n}\n\n/**\n * Check if a character is allowed in a token as defined in section 3.2.6\n * of RFC 7230.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if the character is allowed, else `false`.\n * @public\n */\nfunction isTokenChar(code) {\n return code === 0x21 // '!'\n || code >= 0x23 && code <= 0x27 // '#', '$', '%', '&', '''\n || code === 0x2A // '*'\n || code === 0x2B // '+'\n || code === 0x2D // '-'\n || code === 0x2E // '.'\n || code >= 0x30 && code <= 0x39 // 0-9\n || code >= 0x41 && code <= 0x5A // A-Z\n || code >= 0x5E && code <= 0x7A // '^', '_', '`', a-z\n || code === 0x7C // '|'\n || code === 0x7E; // '~'\n}\n\n/**\n * Check if a character is a printable ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x20-7E range, else `false`.\n * @public\n */\nfunction isPrint(code) {\n return code >= 0x20 && code <= 0x7E;\n}\n\n/**\n * Check if a character is an extended ASCII character.\n *\n * @param {number} code The code of the character to check.\n * @returns {boolean} `true` if `code` is in the %x80-FF range, else `false`.\n * @public\n */\nfunction isExtended(code) {\n return code >= 0x80 && code <= 0xFF;\n}\n\nmodule.exports = {\n isDelimiter: isDelimiter,\n isTokenChar: isTokenChar,\n isExtended: isExtended,\n isPrint: isPrint\n};\n", + "'use strict';\n\nvar util = require('util');\n\nvar ParseError = require('./lib/error');\nvar ascii = require('./lib/ascii');\n\nvar isDelimiter = ascii.isDelimiter;\nvar isTokenChar = ascii.isTokenChar;\nvar isExtended = ascii.isExtended;\nvar isPrint = ascii.isPrint;\n\n/**\n * Unescape a string.\n *\n * @param {string} str The string to unescape.\n * @returns {string} A new unescaped string.\n * @private\n */\nfunction decode(str) {\n return str.replace(/\\\\(.)/g, '$1');\n}\n\n/**\n * Build an error message when an unexpected character is found.\n *\n * @param {string} header The header field value.\n * @param {number} position The position of the unexpected character.\n * @returns {string} The error message.\n * @private\n */\nfunction unexpectedCharacterMessage(header, position) {\n return util.format(\n \"Unexpected character '%s' at index %d\",\n header.charAt(position),\n position\n );\n}\n\n/**\n * Parse the `Forwarded` header field value into an array of objects.\n *\n * @param {string} header The header field value.\n * @returns {Object[]}\n * @public\n */\nfunction parse(header) {\n var mustUnescape = false;\n var isEscaping = false;\n var inQuotes = false;\n var forwarded = {};\n var output = [];\n var start = -1;\n var end = -1;\n var parameter;\n var code;\n\n for (var i = 0; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (parameter === undefined) {\n if (\n i !== 0 &&\n start === -1 &&\n (code === 0x20/*' '*/ || code === 0x09/*'\\t'*/)\n ) {\n continue;\n }\n\n if (isTokenChar(code)) {\n if (start === -1) start = i;\n } else if (code === 0x3D/*'='*/ && start !== -1) {\n parameter = header.slice(start, i).toLowerCase();\n start = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n if (isEscaping && (code === 0x09 || isPrint(code) || isExtended(code))) {\n isEscaping = false;\n } else if (isTokenChar(code)) {\n if (end !== -1) {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n\n if (start === -1) start = i;\n } else if (isDelimiter(code) || isExtended(code)) {\n if (inQuotes) {\n if (code === 0x22/*'\"'*/) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5C/*'\\'*/) {\n if (start === -1) start = i;\n isEscaping = mustUnescape = true;\n } else if (start === -1) {\n start = i;\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3D) {\n inQuotes = true;\n } else if (\n (code === 0x2C/*','*/|| code === 0x3B/*';'*/) &&\n (start !== -1 || end !== -1)\n ) {\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n if (code === 0x2C) {\n output.push(forwarded);\n forwarded = {};\n }\n\n parameter = undefined;\n start = end = -1;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else if (code === 0x20 || code === 0x09) {\n if (end !== -1) continue;\n\n if (inQuotes) {\n if (start === -1) start = i;\n } else if (start !== -1) {\n end = i;\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n } else {\n throw new ParseError(unexpectedCharacterMessage(header, i), header);\n }\n }\n }\n\n if (\n parameter === undefined ||\n inQuotes ||\n (start === -1 && end === -1) ||\n code === 0x20 ||\n code === 0x09\n ) {\n throw new ParseError('Unexpected end of input', header);\n }\n\n if (start !== -1) {\n if (end === -1) end = i;\n forwarded[parameter] = mustUnescape\n ? decode(header.slice(start, end))\n : header.slice(start, end);\n } else {\n forwarded[parameter] = '';\n }\n\n output.push(forwarded);\n return output;\n}\n\nmodule.exports = parse;\n", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.headerCapture = exports.getIncomingStableRequestMetricAttributesOnResponse = exports.getIncomingRequestMetricAttributesOnResponse = exports.getIncomingRequestAttributesOnResponse = exports.getIncomingRequestMetricAttributes = exports.getIncomingRequestAttributes = exports.getRemoteClientAddress = exports.getOutgoingStableRequestMetricAttributesOnResponse = exports.getOutgoingRequestMetricAttributesOnResponse = exports.getOutgoingRequestAttributesOnResponse = exports.setAttributesFromHttpKind = exports.getOutgoingRequestMetricAttributes = exports.getOutgoingRequestAttributes = exports.extractHostnameAndPort = exports.isValidOptionsType = exports.getRequestInfo = exports.isCompressed = exports.setResponseContentLengthAttribute = exports.setRequestContentLengthAttribute = exports.setSpanWithError = exports.satisfiesPattern = exports.parseResponseStatus = exports.getAbsoluteUrl = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst url = require(\"url\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst internal_types_1 = require(\"./internal-types\");\nconst internal_types_2 = require(\"./internal-types\");\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst forwardedParse = require(\"forwarded-parse\");\n/**\n * Get an absolute url\n */\nconst getAbsoluteUrl = (requestUrl, headers, fallbackProtocol = 'http:', redactedQueryParams = Array.from(internal_types_2.DEFAULT_QUERY_STRINGS_TO_REDACT)) => {\n const reqUrlObject = requestUrl || {};\n const protocol = reqUrlObject.protocol || fallbackProtocol;\n const port = (reqUrlObject.port || '').toString();\n let path = reqUrlObject.path || '/';\n let host = reqUrlObject.host || reqUrlObject.hostname || headers.host || 'localhost';\n // if there is no port in host and there is a port\n // it should be displayed if it's not 80 and 443 (default ports)\n if (host.indexOf(':') === -1 &&\n port &&\n port !== '80' &&\n port !== '443') {\n host += `:${port}`;\n }\n // Redact sensitive query parameters\n if (path.includes('?')) {\n try {\n const parsedUrl = new URL(path, 'http://localhost');\n const sensitiveParamsToRedact = redactedQueryParams || [];\n for (const sensitiveParam of sensitiveParamsToRedact) {\n if (parsedUrl.searchParams.get(sensitiveParam)) {\n parsedUrl.searchParams.set(sensitiveParam, internal_types_2.STR_REDACTED);\n }\n }\n path = `${parsedUrl.pathname}${parsedUrl.search}`;\n }\n catch {\n // Ignore error, as the path was not a valid URL.\n }\n }\n const authPart = reqUrlObject.auth ? `${internal_types_2.STR_REDACTED}:${internal_types_2.STR_REDACTED}@` : '';\n return `${protocol}//${authPart}${host}${path}`;\n};\nexports.getAbsoluteUrl = getAbsoluteUrl;\n/**\n * Parse status code from HTTP response. [More details](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/data-http.md#status)\n */\nconst parseResponseStatus = (kind, statusCode) => {\n const upperBound = kind === api_1.SpanKind.CLIENT ? 400 : 500;\n // 1xx, 2xx, 3xx are OK on client and server\n // 4xx is OK on server\n if (statusCode && statusCode >= 100 && statusCode < upperBound) {\n return api_1.SpanStatusCode.UNSET;\n }\n // All other codes are error\n return api_1.SpanStatusCode.ERROR;\n};\nexports.parseResponseStatus = parseResponseStatus;\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (constant, pattern) => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n }\n else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n }\n else if (typeof pattern === 'function') {\n return pattern(constant);\n }\n else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\nexports.satisfiesPattern = satisfiesPattern;\n/**\n * Sets the span with the error passed in params\n * @param {Span} span the span that need to be set\n * @param {Error} error error that will be set to span\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nconst setSpanWithError = (span, error, semconvStability) => {\n const message = error.message;\n if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n span.setAttribute(AttributeNames_1.AttributeNames.HTTP_ERROR_NAME, error.name);\n span.setAttribute(AttributeNames_1.AttributeNames.HTTP_ERROR_MESSAGE, message);\n }\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n span.setAttribute(semantic_conventions_1.ATTR_ERROR_TYPE, error.name);\n }\n span.setStatus({ code: api_1.SpanStatusCode.ERROR, message });\n span.recordException(error);\n};\nexports.setSpanWithError = setSpanWithError;\n/**\n * Adds attributes for request content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Request object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n */\nconst setRequestContentLengthAttribute = (request, attributes) => {\n const length = getContentLength(request.headers);\n if (length === null)\n return;\n if ((0, exports.isCompressed)(request.headers)) {\n attributes[semconv_1.ATTR_HTTP_REQUEST_CONTENT_LENGTH] = length;\n }\n else {\n attributes[semconv_1.ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\nexports.setRequestContentLengthAttribute = setRequestContentLengthAttribute;\n/**\n * Adds attributes for response content-length and content-encoding HTTP headers\n * @param { IncomingMessage } Response object whose headers will be analyzed\n * @param { Attributes } Attributes object to be modified\n *\n * @deprecated this is for an older version of semconv. It is retained for compatibility using OTEL_SEMCONV_STABILITY_OPT_IN\n */\nconst setResponseContentLengthAttribute = (response, attributes) => {\n const length = getContentLength(response.headers);\n if (length === null)\n return;\n if ((0, exports.isCompressed)(response.headers)) {\n attributes[semconv_1.ATTR_HTTP_RESPONSE_CONTENT_LENGTH] = length;\n }\n else {\n attributes[semconv_1.ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED] = length;\n }\n};\nexports.setResponseContentLengthAttribute = setResponseContentLengthAttribute;\nfunction getContentLength(headers) {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined)\n return null;\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength))\n return null;\n return contentLength;\n}\nconst isCompressed = (headers) => {\n const encoding = headers['content-encoding'];\n return !!encoding && encoding !== 'identity';\n};\nexports.isCompressed = isCompressed;\n/**\n * Mimics Node.js conversion of URL strings to RequestOptions expected by\n * `http.request` and `https.request` APIs.\n *\n * See https://github.com/nodejs/node/blob/2505e217bba05fc581b572c685c5cf280a16c5a3/lib/internal/url.js#L1415-L1437\n *\n * @param stringUrl\n * @throws TypeError if the URL is not valid.\n */\nfunction stringUrlToHttpOptions(stringUrl) {\n // This is heavily inspired by Node.js handling of the same situation, trying\n // to follow it as closely as possible while keeping in mind that we only\n // deal with string URLs, not URL objects.\n const { hostname, pathname, port, username, password, search, protocol, hash, href, origin, host, } = new URL(stringUrl);\n const options = {\n protocol: protocol,\n hostname: hostname && hostname[0] === '[' ? hostname.slice(1, -1) : hostname,\n hash: hash,\n search: search,\n pathname: pathname,\n path: `${pathname || ''}${search || ''}`,\n href: href,\n origin: origin,\n host: host,\n };\n if (port !== '') {\n options.port = Number(port);\n }\n if (username || password) {\n options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(password)}`;\n }\n return options;\n}\n/**\n * Makes sure options is an url object\n * return an object with default value and parsed options\n * @param logger component logger\n * @param options original options for the request\n * @param [extraOptions] additional options for the request\n */\nconst getRequestInfo = (logger, options, extraOptions) => {\n let pathname;\n let origin;\n let optionsParsed;\n let invalidUrl = false;\n if (typeof options === 'string') {\n try {\n const convertedOptions = stringUrlToHttpOptions(options);\n optionsParsed = convertedOptions;\n pathname = convertedOptions.pathname || '/';\n }\n catch (e) {\n invalidUrl = true;\n logger.verbose('Unable to parse URL provided to HTTP request, using fallback to determine path. Original error:', e);\n // for backward compatibility with how url.parse() behaved.\n optionsParsed = {\n path: options,\n };\n pathname = optionsParsed.path || '/';\n }\n origin = `${optionsParsed.protocol || 'http:'}//${optionsParsed.host}`;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n }\n else if (options instanceof url.URL) {\n optionsParsed = {\n protocol: options.protocol,\n hostname: typeof options.hostname === 'string' && options.hostname.startsWith('[')\n ? options.hostname.slice(1, -1)\n : options.hostname,\n path: `${options.pathname || ''}${options.search || ''}`,\n };\n if (options.port !== '') {\n optionsParsed.port = Number(options.port);\n }\n if (options.username || options.password) {\n optionsParsed.auth = `${options.username}:${options.password}`;\n }\n pathname = options.pathname;\n origin = options.origin;\n if (extraOptions !== undefined) {\n Object.assign(optionsParsed, extraOptions);\n }\n }\n else {\n optionsParsed = Object.assign({ protocol: options.host ? 'http:' : undefined }, options);\n const hostname = optionsParsed.host ||\n (optionsParsed.port != null\n ? `${optionsParsed.hostname}${optionsParsed.port}`\n : optionsParsed.hostname);\n origin = `${optionsParsed.protocol || 'http:'}//${hostname}`;\n pathname = options.pathname;\n if (!pathname && optionsParsed.path) {\n try {\n const parsedUrl = new URL(optionsParsed.path, origin);\n pathname = parsedUrl.pathname || '/';\n }\n catch {\n pathname = '/';\n }\n }\n }\n // some packages return method in lowercase..\n // ensure upperCase for consistency\n const method = optionsParsed.method\n ? optionsParsed.method.toUpperCase()\n : 'GET';\n return { origin, pathname, method, optionsParsed, invalidUrl };\n};\nexports.getRequestInfo = getRequestInfo;\n/**\n * Makes sure options is of type string or object\n * @param options for the request\n */\nconst isValidOptionsType = (options) => {\n if (!options) {\n return false;\n }\n const type = typeof options;\n return type === 'string' || (type === 'object' && !Array.isArray(options));\n};\nexports.isValidOptionsType = isValidOptionsType;\nconst extractHostnameAndPort = (requestOptions) => {\n if (requestOptions.hostname && requestOptions.port) {\n return { hostname: requestOptions.hostname, port: requestOptions.port };\n }\n const matches = requestOptions.host?.match(/^([^:/ ]+)(:\\d{1,5})?/) || null;\n const hostname = requestOptions.hostname || (matches === null ? 'localhost' : matches[1]);\n let port = requestOptions.port;\n if (!port) {\n if (matches && matches[2]) {\n // remove the leading \":\". The extracted port would be something like \":8080\"\n port = matches[2].substring(1);\n }\n else {\n port = requestOptions.protocol === 'https:' ? '443' : '80';\n }\n }\n return { hostname, port };\n};\nexports.extractHostnameAndPort = extractHostnameAndPort;\n/**\n * Returns outgoing request attributes scoped to the options passed to the request\n * @param {ParsedRequestOptions} requestOptions the same options used to make the request\n * @param {{ component: string, hostname: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nconst getOutgoingRequestAttributes = (requestOptions, options, semconvStability, enableSyntheticSourceDetection) => {\n const hostname = options.hostname;\n const port = options.port;\n const method = requestOptions.method ?? 'GET';\n const normalizedMethod = normalizeMethod(method);\n const headers = (requestOptions.headers || {});\n const userAgent = headers['user-agent'];\n const urlFull = (0, exports.getAbsoluteUrl)(requestOptions, headers, `${options.component}:`, options.redactedQueryParams);\n const oldAttributes = {\n [semconv_1.ATTR_HTTP_URL]: urlFull,\n [semconv_1.ATTR_HTTP_METHOD]: method,\n [semconv_1.ATTR_HTTP_TARGET]: requestOptions.path || '/',\n [semconv_1.ATTR_NET_PEER_NAME]: hostname,\n [semconv_1.ATTR_HTTP_HOST]: headers.host ?? `${hostname}:${port}`,\n };\n const newAttributes = {\n // Required attributes\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: hostname,\n [semantic_conventions_1.ATTR_SERVER_PORT]: Number(port),\n [semantic_conventions_1.ATTR_URL_FULL]: urlFull,\n [semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL]: userAgent,\n // leaving out protocol version, it is not yet negotiated\n // leaving out protocol name, it is only required when protocol version is set\n // retries and redirects not supported\n // Opt-in attributes left off for now\n };\n // conditionally required if request method required case normalization\n if (method !== normalizedMethod) {\n newAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[semconv_1.ATTR_USER_AGENT_SYNTHETIC_TYPE] = getSyntheticType(userAgent);\n }\n if (userAgent !== undefined) {\n oldAttributes[semconv_1.ATTR_HTTP_USER_AGENT] = userAgent;\n }\n switch (semconvStability) {\n case instrumentation_1.SemconvStability.STABLE:\n return Object.assign(newAttributes, options.hookAttributes);\n case instrumentation_1.SemconvStability.OLD:\n return Object.assign(oldAttributes, options.hookAttributes);\n }\n return Object.assign(oldAttributes, newAttributes, options.hookAttributes);\n};\nexports.getOutgoingRequestAttributes = getOutgoingRequestAttributes;\n/**\n * Returns outgoing request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nconst getOutgoingRequestMetricAttributes = (spanAttributes) => {\n const metricAttributes = {};\n metricAttributes[semconv_1.ATTR_HTTP_METHOD] = spanAttributes[semconv_1.ATTR_HTTP_METHOD];\n metricAttributes[semconv_1.ATTR_NET_PEER_NAME] = spanAttributes[semconv_1.ATTR_NET_PEER_NAME];\n //TODO: http.url attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\nexports.getOutgoingRequestMetricAttributes = getOutgoingRequestMetricAttributes;\n/**\n * Returns attributes related to the kind of HTTP protocol used\n * @param {string} [kind] Kind of HTTP protocol used: \"1.0\", \"1.1\", \"2\", \"SPDY\" or \"QUIC\".\n */\nconst setAttributesFromHttpKind = (kind, attributes) => {\n if (kind) {\n attributes[semconv_1.ATTR_HTTP_FLAVOR] = kind;\n if (kind.toUpperCase() !== 'QUIC') {\n attributes[semconv_1.ATTR_NET_TRANSPORT] = semconv_1.NET_TRANSPORT_VALUE_IP_TCP;\n }\n else {\n attributes[semconv_1.ATTR_NET_TRANSPORT] = semconv_1.NET_TRANSPORT_VALUE_IP_UDP;\n }\n }\n};\nexports.setAttributesFromHttpKind = setAttributesFromHttpKind;\n/**\n * Returns the type of synthetic source based on the user agent\n * @param {OutgoingHttpHeader} userAgent the user agent string\n */\nconst getSyntheticType = (userAgent) => {\n const userAgentString = String(userAgent).toLowerCase();\n for (const name of internal_types_1.SYNTHETIC_TEST_NAMES) {\n if (userAgentString.includes(name)) {\n return semconv_1.USER_AGENT_SYNTHETIC_TYPE_VALUE_TEST;\n }\n }\n for (const name of internal_types_1.SYNTHETIC_BOT_NAMES) {\n if (userAgentString.includes(name)) {\n return semconv_1.USER_AGENT_SYNTHETIC_TYPE_VALUE_BOT;\n }\n }\n return;\n};\n/**\n * Returns outgoing request attributes scoped to the response data\n * @param {IncomingMessage} response the response object\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nconst getOutgoingRequestAttributesOnResponse = (response, semconvStability) => {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n const oldAttributes = {};\n const stableAttributes = {};\n if (statusCode != null) {\n stableAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] = statusCode;\n }\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n oldAttributes[semconv_1.ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[semconv_1.ATTR_NET_PEER_PORT] = remotePort;\n // Recommended\n stableAttributes[semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n stableAttributes[semantic_conventions_1.ATTR_NETWORK_PEER_PORT] = remotePort;\n stableAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] = response.httpVersion;\n }\n (0, exports.setResponseContentLengthAttribute)(response, oldAttributes);\n if (statusCode) {\n oldAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames_1.AttributeNames.HTTP_STATUS_TEXT] = (statusMessage || '').toUpperCase();\n }\n (0, exports.setAttributesFromHttpKind)(httpVersion, oldAttributes);\n switch (semconvStability) {\n case instrumentation_1.SemconvStability.STABLE:\n return stableAttributes;\n case instrumentation_1.SemconvStability.OLD:\n return oldAttributes;\n }\n return Object.assign(oldAttributes, stableAttributes);\n};\nexports.getOutgoingRequestAttributesOnResponse = getOutgoingRequestAttributesOnResponse;\n/**\n * Returns outgoing request Metric attributes scoped to the response data\n * @param {Attributes} spanAttributes the span attributes\n */\nconst getOutgoingRequestMetricAttributesOnResponse = (spanAttributes) => {\n const metricAttributes = {};\n metricAttributes[semconv_1.ATTR_NET_PEER_PORT] = spanAttributes[semconv_1.ATTR_NET_PEER_PORT];\n metricAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] =\n spanAttributes[semconv_1.ATTR_HTTP_STATUS_CODE];\n metricAttributes[semconv_1.ATTR_HTTP_FLAVOR] = spanAttributes[semconv_1.ATTR_HTTP_FLAVOR];\n return metricAttributes;\n};\nexports.getOutgoingRequestMetricAttributesOnResponse = getOutgoingRequestMetricAttributesOnResponse;\nconst getOutgoingStableRequestMetricAttributesOnResponse = (spanAttributes) => {\n const metricAttributes = {};\n if (spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) {\n metricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION];\n }\n if (spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\nexports.getOutgoingStableRequestMetricAttributesOnResponse = getOutgoingStableRequestMetricAttributesOnResponse;\nfunction parseHostHeader(hostHeader, proto) {\n const parts = hostHeader.split(':');\n // no semicolon implies ipv4 dotted syntax or host name without port\n // x.x.x.x\n // example.com\n if (parts.length === 1) {\n if (proto === 'http') {\n return { host: parts[0], port: '80' };\n }\n if (proto === 'https') {\n return { host: parts[0], port: '443' };\n }\n return { host: parts[0] };\n }\n // single semicolon implies ipv4 dotted syntax or host name with port\n // x.x.x.x:yyyy\n // example.com:yyyy\n if (parts.length === 2) {\n return {\n host: parts[0],\n port: parts[1],\n };\n }\n // more than 2 parts implies ipv6 syntax with multiple colons\n // [x:x:x:x:x:x:x:x]\n // [x:x:x:x:x:x:x:x]:yyyy\n if (parts[0].startsWith('[')) {\n if (parts[parts.length - 1].endsWith(']')) {\n if (proto === 'http') {\n return { host: hostHeader, port: '80' };\n }\n if (proto === 'https') {\n return { host: hostHeader, port: '443' };\n }\n }\n else if (parts[parts.length - 2].endsWith(']')) {\n return {\n host: parts.slice(0, -1).join(':'),\n port: parts[parts.length - 1],\n };\n }\n }\n // if nothing above matches just return the host header\n return { host: hostHeader };\n}\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nfunction getServerAddress(request, component) {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.host) {\n return parseHostHeader(entry.host, entry.proto);\n }\n }\n }\n const xForwardedHost = request.headers['x-forwarded-host'];\n if (typeof xForwardedHost === 'string') {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(xForwardedHost, request.headers['x-forwarded-proto']);\n }\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(xForwardedHost, request.headers['x-forwarded-proto'][0]);\n }\n return parseHostHeader(xForwardedHost);\n }\n else if (Array.isArray(xForwardedHost) &&\n typeof xForwardedHost[0] === 'string' &&\n xForwardedHost[0].length > 0) {\n if (typeof request.headers['x-forwarded-proto'] === 'string') {\n return parseHostHeader(xForwardedHost[0], request.headers['x-forwarded-proto']);\n }\n if (Array.isArray(request.headers['x-forwarded-proto'])) {\n return parseHostHeader(xForwardedHost[0], request.headers['x-forwarded-proto'][0]);\n }\n return parseHostHeader(xForwardedHost[0]);\n }\n const host = request.headers['host'];\n if (typeof host === 'string' && host.length > 0) {\n return parseHostHeader(host, component);\n }\n return null;\n}\n/**\n * Get server.address and port according to http semconv 1.27\n * https://github.com/open-telemetry/semantic-conventions/blob/bf0a2c1134f206f034408b201dbec37960ed60ec/docs/http/http-spans.md#setting-serveraddress-and-serverport-attributes\n */\nfunction getRemoteClientAddress(request) {\n const forwardedHeader = request.headers['forwarded'];\n if (forwardedHeader) {\n for (const entry of parseForwardedHeader(forwardedHeader)) {\n if (entry.for) {\n return removePortFromAddress(entry.for);\n }\n }\n }\n const xForwardedFor = request.headers['x-forwarded-for'];\n if (xForwardedFor) {\n let xForwardedForVal;\n if (typeof xForwardedFor === 'string') {\n xForwardedForVal = xForwardedFor;\n }\n else if (Array.isArray(xForwardedFor)) {\n xForwardedForVal = xForwardedFor[0];\n }\n if (typeof xForwardedForVal === 'string') {\n xForwardedForVal = xForwardedForVal.split(',')[0].trim();\n return removePortFromAddress(xForwardedForVal);\n }\n }\n const remote = request.socket.remoteAddress;\n if (remote) {\n return remote;\n }\n return null;\n}\nexports.getRemoteClientAddress = getRemoteClientAddress;\nfunction removePortFromAddress(input) {\n // This function can be replaced with SocketAddress.parse() once the minimum\n // supported Node.js version allows it.\n try {\n const { hostname: address } = new URL(`http://${input}`);\n if (address.startsWith('[') && address.endsWith(']')) {\n return address.slice(1, -1);\n }\n return address;\n }\n catch {\n return input;\n }\n}\nfunction getInfoFromIncomingMessage(component, request, logger) {\n try {\n if (request.headers.host) {\n return new URL(request.url ?? '/', `${component}://${request.headers.host}`);\n }\n else {\n const unsafeParsedUrl = new URL(request.url ?? '/', \n // using localhost as a workaround to still use the URL constructor for parsing\n `${component}://localhost`);\n // since we use localhost as a workaround, ensure we hide the rest of the properties to avoid\n // our workaround leaking though.\n return {\n pathname: unsafeParsedUrl.pathname,\n search: unsafeParsedUrl.search,\n toString: function () {\n // we cannot use the result of unsafeParsedUrl.toString as it's potentially wrong.\n return unsafeParsedUrl.pathname + unsafeParsedUrl.search;\n },\n };\n }\n }\n catch (e) {\n // something is wrong, use undefined - this *should* never happen, logging\n // for troubleshooting in case it does happen.\n logger.verbose('Unable to get URL from request', e);\n return {};\n }\n}\n/**\n * Returns incoming request attributes scoped to the request data\n * @param {IncomingMessage} request the request object\n * @param {{ component: string, serverName?: string, hookAttributes?: Attributes }} options used to pass data needed to create attributes\n * @param {SemconvStability} semconvStability determines which semconv version to use\n */\nconst getIncomingRequestAttributes = (request, options, logger) => {\n const { component, enableSyntheticSourceDetection, hookAttributes, semconvStability, serverName, } = options;\n const { headers, httpVersion, method } = request;\n const { host, 'user-agent': userAgent, 'x-forwarded-for': ips } = headers;\n const parsedUrl = getInfoFromIncomingMessage(component, request, logger);\n let newAttributes;\n let oldAttributes;\n if (semconvStability !== instrumentation_1.SemconvStability.OLD) {\n // Stable attributes are used.\n const normalizedMethod = normalizeMethod(method);\n const serverAddress = getServerAddress(request, component);\n const remoteClientAddress = getRemoteClientAddress(request);\n newAttributes = {\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: normalizedMethod,\n [semantic_conventions_1.ATTR_URL_SCHEME]: component,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: serverAddress?.host,\n [semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS]: request.socket.remoteAddress,\n [semantic_conventions_1.ATTR_NETWORK_PEER_PORT]: request.socket.remotePort,\n [semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]: request.httpVersion,\n [semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL]: userAgent,\n };\n if (parsedUrl.pathname != null) {\n newAttributes[semantic_conventions_1.ATTR_URL_PATH] = parsedUrl.pathname;\n }\n if (parsedUrl.search) {\n // Remove leading '?' from URL search (https://developer.mozilla.org/en-US/docs/Web/API/URL/search).\n newAttributes[semantic_conventions_1.ATTR_URL_QUERY] = parsedUrl.search.slice(1);\n }\n if (remoteClientAddress != null) {\n newAttributes[semantic_conventions_1.ATTR_CLIENT_ADDRESS] = remoteClientAddress;\n }\n if (serverAddress?.port != null) {\n newAttributes[semantic_conventions_1.ATTR_SERVER_PORT] = Number(serverAddress.port);\n }\n // Conditionally required if request method required case normalization.\n if (method !== normalizedMethod) {\n newAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL] = method;\n }\n if (enableSyntheticSourceDetection && userAgent) {\n newAttributes[semconv_1.ATTR_USER_AGENT_SYNTHETIC_TYPE] =\n getSyntheticType(userAgent);\n }\n }\n if (semconvStability !== instrumentation_1.SemconvStability.STABLE) {\n // Old attributes are used.\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n oldAttributes = {\n [semconv_1.ATTR_HTTP_URL]: parsedUrl.toString(),\n [semconv_1.ATTR_HTTP_HOST]: host,\n [semconv_1.ATTR_NET_HOST_NAME]: hostname,\n [semconv_1.ATTR_HTTP_METHOD]: method,\n [semconv_1.ATTR_HTTP_SCHEME]: component,\n };\n if (typeof ips === 'string') {\n oldAttributes[semconv_1.ATTR_HTTP_CLIENT_IP] = ips.split(',')[0];\n }\n if (typeof serverName === 'string') {\n oldAttributes[semconv_1.ATTR_HTTP_SERVER_NAME] = serverName;\n }\n if (parsedUrl.pathname) {\n oldAttributes[semconv_1.ATTR_HTTP_TARGET] =\n parsedUrl.pathname + parsedUrl.search || '/';\n }\n if (userAgent !== undefined) {\n oldAttributes[semconv_1.ATTR_HTTP_USER_AGENT] = userAgent;\n }\n (0, exports.setRequestContentLengthAttribute)(request, oldAttributes);\n (0, exports.setAttributesFromHttpKind)(httpVersion, oldAttributes);\n }\n switch (semconvStability) {\n case instrumentation_1.SemconvStability.STABLE:\n return Object.assign(newAttributes, hookAttributes);\n case instrumentation_1.SemconvStability.OLD:\n return Object.assign(oldAttributes, hookAttributes);\n default:\n return Object.assign(oldAttributes, newAttributes, hookAttributes);\n }\n};\nexports.getIncomingRequestAttributes = getIncomingRequestAttributes;\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n * @param {{ component: string }} options used to pass data needed to create attributes\n */\nconst getIncomingRequestMetricAttributes = (spanAttributes) => {\n const metricAttributes = {};\n metricAttributes[semconv_1.ATTR_HTTP_SCHEME] = spanAttributes[semconv_1.ATTR_HTTP_SCHEME];\n metricAttributes[semconv_1.ATTR_HTTP_METHOD] = spanAttributes[semconv_1.ATTR_HTTP_METHOD];\n metricAttributes[semconv_1.ATTR_NET_HOST_NAME] = spanAttributes[semconv_1.ATTR_NET_HOST_NAME];\n metricAttributes[semconv_1.ATTR_HTTP_FLAVOR] = spanAttributes[semconv_1.ATTR_HTTP_FLAVOR];\n //TODO: http.target attribute, it should substitute any parameters to avoid high cardinality.\n return metricAttributes;\n};\nexports.getIncomingRequestMetricAttributes = getIncomingRequestMetricAttributes;\n/**\n * Returns incoming request attributes scoped to the response data\n * @param {(ServerResponse & { socket: Socket; })} response the response object\n */\nconst getIncomingRequestAttributesOnResponse = (request, response, semconvStability) => {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n const newAttributes = {\n [semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n };\n const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active());\n const oldAttributes = {};\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n oldAttributes[semconv_1.ATTR_NET_HOST_IP] = localAddress;\n oldAttributes[semconv_1.ATTR_NET_HOST_PORT] = localPort;\n oldAttributes[semconv_1.ATTR_NET_PEER_IP] = remoteAddress;\n oldAttributes[semconv_1.ATTR_NET_PEER_PORT] = remotePort;\n }\n oldAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] = statusCode;\n oldAttributes[AttributeNames_1.AttributeNames.HTTP_STATUS_TEXT] = (statusMessage || '').toUpperCase();\n if (rpcMetadata?.type === core_1.RPCType.HTTP && rpcMetadata.route !== undefined) {\n oldAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = rpcMetadata.route;\n newAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = rpcMetadata.route;\n }\n switch (semconvStability) {\n case instrumentation_1.SemconvStability.STABLE:\n return newAttributes;\n case instrumentation_1.SemconvStability.OLD:\n return oldAttributes;\n }\n return Object.assign(oldAttributes, newAttributes);\n};\nexports.getIncomingRequestAttributesOnResponse = getIncomingRequestAttributesOnResponse;\n/**\n * Returns incoming request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nconst getIncomingRequestMetricAttributesOnResponse = (spanAttributes) => {\n const metricAttributes = {};\n metricAttributes[semconv_1.ATTR_HTTP_STATUS_CODE] =\n spanAttributes[semconv_1.ATTR_HTTP_STATUS_CODE];\n metricAttributes[semconv_1.ATTR_NET_HOST_PORT] = spanAttributes[semconv_1.ATTR_NET_HOST_PORT];\n if (spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE];\n }\n return metricAttributes;\n};\nexports.getIncomingRequestMetricAttributesOnResponse = getIncomingRequestMetricAttributesOnResponse;\n/**\n * Returns incoming stable request Metric attributes scoped to the request data\n * @param {Attributes} spanAttributes the span attributes\n */\nconst getIncomingStableRequestMetricAttributesOnResponse = (spanAttributes) => {\n const metricAttributes = {};\n if (spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] !== undefined) {\n metricAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE] = spanAttributes[semantic_conventions_1.ATTR_HTTP_ROUTE];\n }\n // required if and only if one was sent, same as span requirement\n if (spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n metricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] =\n spanAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n return metricAttributes;\n};\nexports.getIncomingStableRequestMetricAttributesOnResponse = getIncomingStableRequestMetricAttributesOnResponse;\nfunction headerCapture(type, headers, semconvStability) {\n const normalizedHeaders = new Map();\n for (let i = 0, len = headers.length; i < len; i++) {\n const capturedHeader = headers[i].toLowerCase();\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n normalizedHeaders.set(capturedHeader, capturedHeader);\n }\n else {\n // In old semconv, the header name converted hypen to underscore, e.g.:\n // `http.request.header.content_length`.\n normalizedHeaders.set(capturedHeader, capturedHeader.replaceAll('-', '_'));\n }\n }\n return (getHeader) => {\n const attributes = {};\n for (const capturedHeader of normalizedHeaders.keys()) {\n const value = getHeader(capturedHeader);\n if (value === undefined) {\n continue;\n }\n const normalizedHeader = normalizedHeaders.get(capturedHeader);\n const key = `http.${type}.header.${normalizedHeader}`;\n if (typeof value === 'string') {\n attributes[key] = [value];\n }\n else if (Array.isArray(value)) {\n attributes[key] = value;\n }\n else {\n attributes[key] = [value];\n }\n }\n return attributes;\n };\n}\nexports.headerCapture = headerCapture;\nconst KNOWN_METHODS = new Set([\n // methods from https://www.rfc-editor.org/rfc/rfc9110.html#name-methods\n 'GET',\n 'HEAD',\n 'POST',\n 'PUT',\n 'DELETE',\n 'CONNECT',\n 'OPTIONS',\n 'TRACE',\n // PATCH from https://www.rfc-editor.org/rfc/rfc5789.html\n 'PATCH',\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n 'QUERY',\n]);\nfunction normalizeMethod(method) {\n if (method == null) {\n return 'GET';\n }\n const upper = method.toUpperCase();\n if (KNOWN_METHODS.has(upper)) {\n return upper;\n }\n return '_OTHER';\n}\nfunction parseForwardedHeader(header) {\n try {\n return forwardedParse(header);\n }\n catch {\n return [];\n }\n}\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst url = require(\"url\");\nconst version_1 = require(\"./version\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst events_1 = require(\"events\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst utils_1 = require(\"./utils\");\n/**\n * `node:http` and `node:https` instrumentation for OpenTelemetry\n */\nclass HttpInstrumentation extends instrumentation_1.InstrumentationBase {\n /** keep track on spans not ended */\n _spanNotEnded = new WeakSet();\n _headerCapture;\n _httpPatched = false;\n _httpsPatched = false;\n _semconvStability = instrumentation_1.SemconvStability.OLD;\n constructor(config = {}) {\n super('@opentelemetry/instrumentation-http', version_1.VERSION, config);\n this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n _updateMetricInstruments() {\n this._oldHttpServerDurationHistogram = this.meter.createHistogram('http.server.duration', {\n description: 'Measures the duration of inbound HTTP requests.',\n unit: 'ms',\n valueType: api_1.ValueType.DOUBLE,\n });\n this._oldHttpClientDurationHistogram = this.meter.createHistogram('http.client.duration', {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 'ms',\n valueType: api_1.ValueType.DOUBLE,\n });\n this._stableHttpServerDurationHistogram = this.meter.createHistogram(semantic_conventions_1.METRIC_HTTP_SERVER_REQUEST_DURATION, {\n description: 'Duration of HTTP server requests.',\n unit: 's',\n valueType: api_1.ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n });\n this._stableHttpClientDurationHistogram = this.meter.createHistogram(semantic_conventions_1.METRIC_HTTP_CLIENT_REQUEST_DURATION, {\n description: 'Duration of HTTP client requests.',\n unit: 's',\n valueType: api_1.ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n });\n }\n _recordServerDuration(durationMs, oldAttributes, stableAttributes) {\n if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpServerDurationHistogram.record(durationMs, oldAttributes);\n }\n if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpServerDurationHistogram.record(durationMs / 1000, stableAttributes);\n }\n }\n _recordClientDuration(durationMs, oldAttributes, stableAttributes) {\n if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n // old histogram is counted in MS\n this._oldHttpClientDurationHistogram.record(durationMs, oldAttributes);\n }\n if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n // stable histogram is counted in S\n this._stableHttpClientDurationHistogram.record(durationMs / 1000, stableAttributes);\n }\n }\n setConfig(config = {}) {\n super.setConfig(config);\n this._headerCapture = this._createHeaderCapture(this._semconvStability);\n }\n init() {\n return [this._getHttpsInstrumentation(), this._getHttpInstrumentation()];\n }\n _getHttpInstrumentation() {\n return new instrumentation_1.InstrumentationNodeModuleDefinition('http', ['*'], (moduleExports) => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpPatched) {\n return moduleExports;\n }\n this._httpPatched = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = moduleExports[Symbol.toStringTag] === 'Module';\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(moduleExports, 'request', this._getPatchOutgoingRequestFunction('http'));\n const patchedGet = this._wrap(moduleExports, 'get', this._getPatchOutgoingGetFunction(patchedRequest));\n if (isESM) {\n // To handle `import http from 'http'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports.default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports.default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(moduleExports.Server.prototype, 'emit', this._getPatchIncomingRequestFunction('http'));\n }\n return moduleExports;\n }, (moduleExports) => {\n this._httpPatched = false;\n if (moduleExports === undefined)\n return;\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n });\n }\n _getHttpsInstrumentation() {\n return new instrumentation_1.InstrumentationNodeModuleDefinition('https', ['*'], (moduleExports) => {\n // Guard against double-instrumentation, if loaded by both `require`\n // and `import`.\n if (this._httpsPatched) {\n return moduleExports;\n }\n this._httpsPatched = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const isESM = moduleExports[Symbol.toStringTag] === 'Module';\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n const patchedRequest = this._wrap(moduleExports, 'request', this._getPatchHttpsOutgoingRequestFunction('https'));\n const patchedGet = this._wrap(moduleExports, 'get', this._getPatchHttpsOutgoingGetFunction(patchedRequest));\n if (isESM) {\n // To handle `import https from 'https'`, which returns the default\n // export, we need to set `module.default.*`.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports.default.request = patchedRequest;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports.default.get = patchedGet;\n }\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._wrap(moduleExports.Server.prototype, 'emit', this._getPatchIncomingRequestFunction('https'));\n }\n return moduleExports;\n }, (moduleExports) => {\n this._httpsPatched = false;\n if (moduleExports === undefined)\n return;\n if (!this.getConfig().disableOutgoingRequestInstrumentation) {\n this._unwrap(moduleExports, 'request');\n this._unwrap(moduleExports, 'get');\n }\n if (!this.getConfig().disableIncomingRequestInstrumentation) {\n this._unwrap(moduleExports.Server.prototype, 'emit');\n }\n });\n }\n /**\n * Creates spans for incoming requests, restoring spans' context if applied.\n */\n _getPatchIncomingRequestFunction(component) {\n return (original) => {\n return this._incomingRequestFunction(component, original);\n };\n }\n /**\n * Creates spans for outgoing requests, sending spans' context for distributed\n * tracing.\n */\n _getPatchOutgoingRequestFunction(component) {\n return (original) => {\n return this._outgoingRequestFunction(component, original);\n };\n }\n _getPatchOutgoingGetFunction(clientRequest) {\n return (_original) => {\n // Re-implement http.get. This needs to be done (instead of using\n // getPatchOutgoingRequestFunction to patch it) because we need to\n // set the trace context header before the returned http.ClientRequest is\n // ended. The Node.js docs state that the only differences between\n // request and get are that (1) get defaults to the HTTP GET method and\n // (2) the returned request object is ended immediately. The former is\n // already true (at least in supported Node versions up to v10), so we\n // simply follow the latter. Ref:\n // https://nodejs.org/dist/latest/docs/api/http.html#http_http_get_options_callback\n // https://github.com/googleapis/cloud-trace-nodejs/blob/master/src/instrumentations/instrumentation-http.ts#L198\n return function outgoingGetRequest(options, ...args) {\n const req = clientRequest(options, ...args);\n req.end();\n return req;\n };\n };\n }\n /** Patches HTTPS outgoing requests */\n _getPatchHttpsOutgoingRequestFunction(component) {\n return (original) => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options, ...args) {\n // Makes sure options will have default HTTPS parameters\n if (component === 'https' &&\n typeof options === 'object' &&\n options?.constructor?.name !== 'URL') {\n options = Object.assign({}, options);\n instrumentation._setDefaultOptions(options);\n }\n return instrumentation._getPatchOutgoingRequestFunction(component)(original)(options, ...args);\n };\n };\n }\n _setDefaultOptions(options) {\n options.protocol = options.protocol || 'https:';\n options.port = options.port || 443;\n }\n /** Patches HTTPS outgoing get requests */\n _getPatchHttpsOutgoingGetFunction(clientRequest) {\n return (original) => {\n const instrumentation = this;\n return function httpsOutgoingRequest(\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n options, ...args) {\n return instrumentation._getPatchOutgoingGetFunction(clientRequest)(original)(options, ...args);\n };\n };\n }\n /**\n * Attach event listeners to a client request to end span and add span attributes.\n *\n * @param request The original request object.\n * @param span representing the current operation\n * @param startTime representing the start time of the request to calculate duration in Metric\n * @param oldMetricAttributes metric attributes for old semantic conventions\n * @param stableMetricAttributes metric attributes for new semantic conventions\n */\n _traceClientRequest(request, span, startTime, oldMetricAttributes, stableMetricAttributes) {\n if (this.getConfig().requestHook) {\n this._callRequestHook(span, request);\n }\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n /*\n * User 'response' event listeners can be added before our listener,\n * force our listener to be the first, so response emitter is bound\n * before any user listeners are added to it.\n */\n request.prependListener('response', (response) => {\n this._diag.debug('outgoingRequest on response()');\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n const responseAttributes = (0, utils_1.getOutgoingRequestAttributesOnResponse)(response, this._semconvStability);\n span.setAttributes(responseAttributes);\n oldMetricAttributes = Object.assign(oldMetricAttributes, (0, utils_1.getOutgoingRequestMetricAttributesOnResponse)(responseAttributes));\n stableMetricAttributes = Object.assign(stableMetricAttributes, (0, utils_1.getOutgoingStableRequestMetricAttributesOnResponse)(responseAttributes));\n if (this.getConfig().responseHook) {\n this._callResponseHook(span, response);\n }\n span.setAttributes(this._headerCapture.client.captureRequestHeaders(header => request.getHeader(header)));\n span.setAttributes(this._headerCapture.client.captureResponseHeaders(header => response.headers[header]));\n api_1.context.bind(api_1.context.active(), response);\n const endHandler = () => {\n this._diag.debug('outgoingRequest on end()');\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n let status;\n if (response.aborted && !response.complete) {\n status = { code: api_1.SpanStatusCode.ERROR };\n }\n else {\n // behaves same for new and old semconv\n status = {\n code: (0, utils_1.parseResponseStatus)(api_1.SpanKind.CLIENT, response.statusCode),\n };\n }\n span.setStatus(status);\n if (this.getConfig().applyCustomAttributesOnSpan) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().applyCustomAttributesOnSpan(span, request, response), () => { }, true);\n }\n this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes);\n };\n response.on('end', endHandler);\n response.on(events_1.errorMonitor, (error) => {\n this._diag.debug('outgoingRequest on error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error);\n });\n });\n request.on('close', () => {\n this._diag.debug('outgoingRequest on request close()');\n if (request.aborted || responseFinished) {\n return;\n }\n responseFinished = true;\n this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes);\n });\n request.on(events_1.errorMonitor, (error) => {\n this._diag.debug('outgoingRequest on request error()', error);\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n this._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error);\n });\n this._diag.debug('http.ClientRequest return request');\n return request;\n }\n _incomingRequestFunction(component, original) {\n const instrumentation = this;\n return function incomingRequest(event, ...args) {\n // Only traces request events\n if (event !== 'request') {\n return original.apply(this, [event, ...args]);\n }\n const request = args[0];\n const response = args[1];\n const method = request.method || 'GET';\n instrumentation._diag.debug(`${component} instrumentation incomingRequest`);\n if ((0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation.getConfig().ignoreIncomingRequestHook?.(request), (e) => {\n if (e != null) {\n instrumentation._diag.error('caught ignoreIncomingRequestHook error: ', e);\n }\n }, true)) {\n return api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => {\n api_1.context.bind(api_1.context.active(), request);\n api_1.context.bind(api_1.context.active(), response);\n return original.apply(this, [event, ...args]);\n });\n }\n const headers = request.headers;\n const spanAttributes = (0, utils_1.getIncomingRequestAttributes)(request, {\n component: component,\n serverName: instrumentation.getConfig().serverName,\n hookAttributes: instrumentation._callStartSpanHook(request, instrumentation.getConfig().startIncomingSpanHook),\n semconvStability: instrumentation._semconvStability,\n enableSyntheticSourceDetection: instrumentation.getConfig().enableSyntheticSourceDetection || false,\n }, instrumentation._diag);\n Object.assign(spanAttributes, instrumentation._headerCapture.server.captureRequestHeaders(header => request.headers[header]));\n const spanOptions = {\n kind: api_1.SpanKind.SERVER,\n attributes: spanAttributes,\n };\n const startTime = (0, core_1.hrTime)();\n const oldMetricAttributes = (0, utils_1.getIncomingRequestMetricAttributes)(spanAttributes);\n // request method and url.scheme are both required span attributes\n const stableMetricAttributes = {\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: spanAttributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD],\n [semantic_conventions_1.ATTR_URL_SCHEME]: spanAttributes[semantic_conventions_1.ATTR_URL_SCHEME],\n };\n // recommended if and only if one was sent, same as span recommendation\n if (spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] =\n spanAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION];\n }\n const ctx = api_1.propagation.extract(api_1.ROOT_CONTEXT, headers);\n const span = instrumentation._startHttpSpan(method, spanOptions, ctx);\n const rpcMetadata = {\n type: core_1.RPCType.HTTP,\n span,\n };\n return api_1.context.with((0, core_1.setRPCMetadata)(api_1.trace.setSpan(ctx, span), rpcMetadata), () => {\n api_1.context.bind(api_1.context.active(), request);\n api_1.context.bind(api_1.context.active(), response);\n if (instrumentation.getConfig().requestHook) {\n instrumentation._callRequestHook(span, request);\n }\n if (instrumentation.getConfig().responseHook) {\n instrumentation._callResponseHook(span, response);\n }\n // After 'error', no further events other than 'close' should be emitted.\n let hasError = false;\n response.on('close', () => {\n if (hasError) {\n return;\n }\n instrumentation._onServerResponseFinish(request, response, span, oldMetricAttributes, stableMetricAttributes, startTime);\n });\n response.on(events_1.errorMonitor, (err) => {\n hasError = true;\n instrumentation._onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, err);\n });\n return (0, instrumentation_1.safeExecuteInTheMiddle)(() => original.apply(this, [event, ...args]), error => {\n if (error) {\n instrumentation._onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, error);\n throw error;\n }\n });\n });\n };\n }\n _outgoingRequestFunction(component, original) {\n const instrumentation = this;\n return function outgoingRequest(options, ...args) {\n if (!(0, utils_1.isValidOptionsType)(options)) {\n return original.apply(this, [options, ...args]);\n }\n const extraOptions = typeof args[0] === 'object' &&\n (typeof options === 'string' || options instanceof url.URL)\n ? args.shift()\n : undefined;\n const { method, invalidUrl, optionsParsed } = (0, utils_1.getRequestInfo)(instrumentation._diag, options, extraOptions);\n if ((0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation\n .getConfig()\n .ignoreOutgoingRequestHook?.(optionsParsed), (e) => {\n if (e != null) {\n instrumentation._diag.error('caught ignoreOutgoingRequestHook error: ', e);\n }\n }, true)) {\n return original.apply(this, [optionsParsed, ...args]);\n }\n const { hostname, port } = (0, utils_1.extractHostnameAndPort)(optionsParsed);\n const attributes = (0, utils_1.getOutgoingRequestAttributes)(optionsParsed, {\n component,\n port,\n hostname,\n hookAttributes: instrumentation._callStartSpanHook(optionsParsed, instrumentation.getConfig().startOutgoingSpanHook),\n redactedQueryParams: instrumentation.getConfig().redactedQueryParams, // Added config for adding custom query strings\n }, instrumentation._semconvStability, instrumentation.getConfig().enableSyntheticSourceDetection || false);\n const startTime = (0, core_1.hrTime)();\n const oldMetricAttributes = (0, utils_1.getOutgoingRequestMetricAttributes)(attributes);\n // request method, server address, and server port are both required span attributes\n const stableMetricAttributes = {\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: attributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD],\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS],\n [semantic_conventions_1.ATTR_SERVER_PORT]: attributes[semantic_conventions_1.ATTR_SERVER_PORT],\n };\n // required if and only if one was sent, same as span requirement\n if (attributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]) {\n stableMetricAttributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE] =\n attributes[semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE];\n }\n // recommended if and only if one was sent, same as span recommendation\n if (attributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION]) {\n stableMetricAttributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION] =\n attributes[semantic_conventions_1.ATTR_NETWORK_PROTOCOL_VERSION];\n }\n const spanOptions = {\n kind: api_1.SpanKind.CLIENT,\n attributes,\n };\n const span = instrumentation._startHttpSpan(method, spanOptions);\n const parentContext = api_1.context.active();\n const requestContext = api_1.trace.setSpan(parentContext, span);\n if (!optionsParsed.headers) {\n optionsParsed.headers = {};\n }\n else {\n // Make a copy of the headers object to avoid mutating an object the\n // caller might have a reference to.\n optionsParsed.headers = Object.assign({}, optionsParsed.headers);\n }\n api_1.propagation.inject(requestContext, optionsParsed.headers);\n return api_1.context.with(requestContext, () => {\n /*\n * The response callback is registered before ClientRequest is bound,\n * thus it is needed to bind it before the function call.\n */\n const cb = args[args.length - 1];\n if (typeof cb === 'function') {\n args[args.length - 1] = api_1.context.bind(parentContext, cb);\n }\n const request = (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n if (invalidUrl) {\n // we know that the url is invalid, there's no point in injecting context as it will fail validation.\n // Passing in what the user provided will give the user an error that matches what they'd see without\n // the instrumentation.\n return original.apply(this, [options, ...args]);\n }\n else {\n return original.apply(this, [optionsParsed, ...args]);\n }\n }, error => {\n if (error) {\n instrumentation._onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error);\n throw error;\n }\n });\n instrumentation._diag.debug(`${component} instrumentation outgoingRequest`);\n api_1.context.bind(parentContext, request);\n return instrumentation._traceClientRequest(request, span, startTime, oldMetricAttributes, stableMetricAttributes);\n });\n };\n }\n _onServerResponseFinish(request, response, span, oldMetricAttributes, stableMetricAttributes, startTime) {\n const attributes = (0, utils_1.getIncomingRequestAttributesOnResponse)(request, response, this._semconvStability);\n oldMetricAttributes = Object.assign(oldMetricAttributes, (0, utils_1.getIncomingRequestMetricAttributesOnResponse)(attributes));\n stableMetricAttributes = Object.assign(stableMetricAttributes, (0, utils_1.getIncomingStableRequestMetricAttributesOnResponse)(attributes));\n span.setAttributes(this._headerCapture.server.captureResponseHeaders(header => response.getHeader(header)));\n span.setAttributes(attributes).setStatus({\n code: (0, utils_1.parseResponseStatus)(api_1.SpanKind.SERVER, response.statusCode),\n });\n const route = attributes[semantic_conventions_1.ATTR_HTTP_ROUTE];\n if (route) {\n span.updateName(`${request.method || 'GET'} ${route}`);\n }\n if (this.getConfig().applyCustomAttributesOnSpan) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().applyCustomAttributesOnSpan(span, request, response), () => { }, true);\n }\n this._closeHttpSpan(span, api_1.SpanKind.SERVER, startTime, oldMetricAttributes, stableMetricAttributes);\n }\n _onOutgoingRequestError(span, oldMetricAttributes, stableMetricAttributes, startTime, error) {\n (0, utils_1.setSpanWithError)(span, error, this._semconvStability);\n stableMetricAttributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.name;\n this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, oldMetricAttributes, stableMetricAttributes);\n }\n _onServerResponseError(span, oldMetricAttributes, stableMetricAttributes, startTime, error) {\n (0, utils_1.setSpanWithError)(span, error, this._semconvStability);\n stableMetricAttributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.name;\n this._closeHttpSpan(span, api_1.SpanKind.SERVER, startTime, oldMetricAttributes, stableMetricAttributes);\n }\n _startHttpSpan(name, options, ctx = api_1.context.active()) {\n /*\n * If a parent is required but not present, we use a `NoopSpan` to still\n * propagate context without recording it.\n */\n const requireParent = options.kind === api_1.SpanKind.CLIENT\n ? this.getConfig().requireParentforOutgoingSpans\n : this.getConfig().requireParentforIncomingSpans;\n let span;\n const currentSpan = api_1.trace.getSpan(ctx);\n if (requireParent === true &&\n (!currentSpan || !api_1.trace.isSpanContextValid(currentSpan.spanContext()))) {\n span = api_1.trace.wrapSpanContext(api_1.INVALID_SPAN_CONTEXT);\n }\n else if (requireParent === true && currentSpan?.spanContext().isRemote) {\n span = currentSpan;\n }\n else {\n span = this.tracer.startSpan(name, options, ctx);\n }\n this._spanNotEnded.add(span);\n return span;\n }\n _closeHttpSpan(span, spanKind, startTime, oldMetricAttributes, stableMetricAttributes) {\n if (!this._spanNotEnded.has(span)) {\n return;\n }\n span.end();\n this._spanNotEnded.delete(span);\n // Record metrics\n const duration = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)()));\n if (spanKind === api_1.SpanKind.SERVER) {\n this._recordServerDuration(duration, oldMetricAttributes, stableMetricAttributes);\n }\n else if (spanKind === api_1.SpanKind.CLIENT) {\n this._recordClientDuration(duration, oldMetricAttributes, stableMetricAttributes);\n }\n }\n _callResponseHook(span, response) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().responseHook(span, response), () => { }, true);\n }\n _callRequestHook(span, request) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => this.getConfig().requestHook(span, request), () => { }, true);\n }\n _callStartSpanHook(request, hookFunc) {\n if (typeof hookFunc === 'function') {\n return (0, instrumentation_1.safeExecuteInTheMiddle)(() => hookFunc(request), () => { }, true);\n }\n }\n _createHeaderCapture(semconvStability) {\n const config = this.getConfig();\n return {\n client: {\n captureRequestHeaders: (0, utils_1.headerCapture)('request', config.headersToSpanAttributes?.client?.requestHeaders ?? [], semconvStability),\n captureResponseHeaders: (0, utils_1.headerCapture)('response', config.headersToSpanAttributes?.client?.responseHeaders ?? [], semconvStability),\n },\n server: {\n captureRequestHeaders: (0, utils_1.headerCapture)('request', config.headersToSpanAttributes?.server?.requestHeaders ?? [], semconvStability),\n captureResponseHeaders: (0, utils_1.headerCapture)('response', config.headersToSpanAttributes?.server?.responseHeaders ?? [], semconvStability),\n },\n };\n }\n}\nexports.HttpInstrumentation = HttpInstrumentation;\n//# sourceMappingURL=http.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpInstrumentation = void 0;\nvar http_1 = require(\"./http\");\nObject.defineProperty(exports, \"HttpInstrumentation\", { enumerable: true, get: function () { return http_1.HttpInstrumentation; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracingSuppressed = exports.unsuppressTracing = exports.suppressTracing = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst SUPPRESS_TRACING_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key SUPPRESS_TRACING');\nfunction suppressTracing(context) {\n return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\nexports.suppressTracing = suppressTracing;\nfunction unsuppressTracing(context) {\n return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\nexports.unsuppressTracing = unsuppressTracing;\nfunction isTracingSuppressed(context) {\n return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\nexports.isTracingSuppressed = isTracingSuppressed;\n//# sourceMappingURL=suppress-tracing.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BAGGAGE_MAX_TOTAL_LENGTH = exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = exports.BAGGAGE_HEADER = exports.BAGGAGE_ITEMS_SEPARATOR = exports.BAGGAGE_PROPERTIES_SEPARATOR = exports.BAGGAGE_KEY_PAIR_SEPARATOR = void 0;\nexports.BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexports.BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexports.BAGGAGE_ITEMS_SEPARATOR = ',';\n// Name of the http header used to propagate the baggage\nexports.BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexports.BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n//# sourceMappingURL=constants.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseKeyPairsIntoRecord = exports.parsePairKeyValue = exports.getKeyPairs = exports.serializeKeyPairs = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst constants_1 = require(\"./constants\");\nfunction serializeKeyPairs(keyPairs) {\n return keyPairs.reduce((hValue, current) => {\n const value = `${hValue}${hValue !== '' ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ''}${current}`;\n return value.length > constants_1.BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\nexports.serializeKeyPairs = serializeKeyPairs;\nfunction getKeyPairs(baggage) {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += constants_1.BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n return entry;\n });\n}\nexports.getKeyPairs = getKeyPairs;\nfunction parsePairKeyValue(entry) {\n if (!entry)\n return;\n const metadataSeparatorIndex = entry.indexOf(constants_1.BAGGAGE_PROPERTIES_SEPARATOR);\n const keyPairPart = metadataSeparatorIndex === -1\n ? entry\n : entry.substring(0, metadataSeparatorIndex);\n const separatorIndex = keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR);\n if (separatorIndex <= 0)\n return;\n const rawKey = keyPairPart.substring(0, separatorIndex).trim();\n const rawValue = keyPairPart.substring(separatorIndex + 1).trim();\n if (!rawKey || !rawValue)\n return;\n let key;\n let value;\n try {\n key = decodeURIComponent(rawKey);\n value = decodeURIComponent(rawValue);\n }\n catch {\n return;\n }\n let metadata;\n if (metadataSeparatorIndex !== -1 &&\n metadataSeparatorIndex < entry.length - 1) {\n const metadataString = entry.substring(metadataSeparatorIndex + 1);\n metadata = (0, api_1.baggageEntryMetadataFromString)(metadataString);\n }\n return { key, value, metadata };\n}\nexports.parsePairKeyValue = parsePairKeyValue;\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nfunction parseKeyPairsIntoRecord(value) {\n const result = {};\n if (typeof value === 'string' && value.length > 0) {\n value.split(constants_1.BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n return result;\n}\nexports.parseKeyPairsIntoRecord = parseKeyPairsIntoRecord;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CBaggagePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../../trace/suppress-tracing\");\nconst constants_1 = require(\"../constants\");\nconst utils_1 = require(\"../utils\");\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nclass W3CBaggagePropagator {\n inject(context, carrier, setter) {\n const baggage = api_1.propagation.getBaggage(context);\n if (!baggage || (0, suppress_tracing_1.isTracingSuppressed)(context))\n return;\n const keyPairs = (0, utils_1.getKeyPairs)(baggage)\n .filter((pair) => {\n return pair.length <= constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n })\n .slice(0, constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = (0, utils_1.serializeKeyPairs)(keyPairs);\n if (headerValue.length > 0) {\n setter.set(carrier, constants_1.BAGGAGE_HEADER, headerValue);\n }\n }\n extract(context, carrier, getter) {\n const headerValue = getter.get(carrier, constants_1.BAGGAGE_HEADER);\n const baggageString = Array.isArray(headerValue)\n ? headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR)\n : headerValue;\n if (!baggageString)\n return context;\n const baggage = {};\n if (baggageString.length === 0) {\n return context;\n }\n const pairs = baggageString.split(constants_1.BAGGAGE_ITEMS_SEPARATOR);\n pairs.forEach(entry => {\n const keyPair = (0, utils_1.parsePairKeyValue)(entry);\n if (keyPair) {\n const baggageEntry = { value: keyPair.value };\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n baggage[keyPair.key] = baggageEntry;\n }\n });\n if (Object.entries(baggage).length === 0) {\n return context;\n }\n return api_1.propagation.setBaggage(context, api_1.propagation.createBaggage(baggage));\n }\n fields() {\n return [constants_1.BAGGAGE_HEADER];\n }\n}\nexports.W3CBaggagePropagator = W3CBaggagePropagator;\n//# sourceMappingURL=W3CBaggagePropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnchoredClock = void 0;\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nclass AnchoredClock {\n _monotonicClock;\n _epochMillis;\n _performanceMillis;\n /**\n * Create a new AnchoredClock anchored to the current time returned by systemClock.\n *\n * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n */\n constructor(systemClock, monotonicClock) {\n this._monotonicClock = monotonicClock;\n this._epochMillis = systemClock.now();\n this._performanceMillis = monotonicClock.now();\n }\n /**\n * Returns the current time by adding the number of milliseconds since the\n * AnchoredClock was created to the creation epoch time\n */\n now() {\n const delta = this._monotonicClock.now() - this._performanceMillis;\n return this._epochMillis + delta;\n }\n}\nexports.AnchoredClock = AnchoredClock;\n//# sourceMappingURL=anchored-clock.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAttributeValue = exports.isAttributeKey = exports.sanitizeAttributes = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nfunction sanitizeAttributes(attributes) {\n const out = {};\n if (typeof attributes !== 'object' || attributes == null) {\n return out;\n }\n for (const key in attributes) {\n if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n continue;\n }\n if (!isAttributeKey(key)) {\n api_1.diag.warn(`Invalid attribute key: ${key}`);\n continue;\n }\n const val = attributes[key];\n if (!isAttributeValue(val)) {\n api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n continue;\n }\n if (Array.isArray(val)) {\n out[key] = val.slice();\n }\n else {\n out[key] = val;\n }\n }\n return out;\n}\nexports.sanitizeAttributes = sanitizeAttributes;\nfunction isAttributeKey(key) {\n return typeof key === 'string' && key !== '';\n}\nexports.isAttributeKey = isAttributeKey;\nfunction isAttributeValue(val) {\n if (val == null) {\n return true;\n }\n if (Array.isArray(val)) {\n return isHomogeneousAttributeValueArray(val);\n }\n return isValidPrimitiveAttributeValueType(typeof val);\n}\nexports.isAttributeValue = isAttributeValue;\nfunction isHomogeneousAttributeValueArray(arr) {\n let type;\n for (const element of arr) {\n // null/undefined elements are allowed\n if (element == null)\n continue;\n const elementType = typeof element;\n if (elementType === type) {\n continue;\n }\n if (!type) {\n if (isValidPrimitiveAttributeValueType(elementType)) {\n type = elementType;\n continue;\n }\n // encountered an invalid primitive\n return false;\n }\n return false;\n }\n return true;\n}\nfunction isValidPrimitiveAttributeValueType(valType) {\n switch (valType) {\n case 'number':\n case 'boolean':\n case 'string':\n return true;\n }\n return false;\n}\n//# sourceMappingURL=attributes.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loggingErrorHandler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nfunction loggingErrorHandler() {\n return (ex) => {\n api_1.diag.error(stringifyException(ex));\n };\n}\nexports.loggingErrorHandler = loggingErrorHandler;\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex) {\n if (typeof ex === 'string') {\n return ex;\n }\n else {\n return JSON.stringify(flattenException(ex));\n }\n}\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex) {\n const result = {};\n let current = ex;\n while (current !== null) {\n Object.getOwnPropertyNames(current).forEach(propertyName => {\n if (result[propertyName])\n return;\n const value = current[propertyName];\n if (value) {\n result[propertyName] = String(value);\n }\n });\n current = Object.getPrototypeOf(current);\n }\n return result;\n}\n//# sourceMappingURL=logging-error-handler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.globalErrorHandler = exports.setGlobalErrorHandler = void 0;\nconst logging_error_handler_1 = require(\"./logging-error-handler\");\n/** The global error handler delegate */\nlet delegateHandler = (0, logging_error_handler_1.loggingErrorHandler)();\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nfunction setGlobalErrorHandler(handler) {\n delegateHandler = handler;\n}\nexports.setGlobalErrorHandler = setGlobalErrorHandler;\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nfunction globalErrorHandler(ex) {\n try {\n delegateHandler(ex);\n }\n catch { } // eslint-disable-line no-empty\n}\nexports.globalErrorHandler = globalErrorHandler;\n//# sourceMappingURL=global-error-handler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringListFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports.getNumberFromEnv = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst util_1 = require(\"util\");\n/**\n * Retrieves a number from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number.\n * - Returns a number in all other cases.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {number | undefined} - The number value or `undefined`.\n */\nfunction getNumberFromEnv(key) {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n const value = Number(raw);\n if (isNaN(value)) {\n api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected a number, using defaults`);\n return undefined;\n }\n return value;\n}\nexports.getNumberFromEnv = getNumberFromEnv;\n/**\n * Retrieves a string from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string | undefined} - The string value or `undefined`.\n */\nfunction getStringFromEnv(key) {\n const raw = process.env[key];\n if (raw == null || raw.trim() === '') {\n return undefined;\n }\n return raw;\n}\nexports.getStringFromEnv = getStringFromEnv;\n/**\n * Retrieves a boolean value from an environment variable.\n * - Trims leading and trailing whitespace and ignores casing.\n * - Returns `false` if the environment variable is empty, unset, or contains only whitespace.\n * - Returns `false` for strings that cannot be mapped to a boolean.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace.\n */\nfunction getBooleanFromEnv(key) {\n const raw = process.env[key]?.trim().toLowerCase();\n if (raw == null || raw === '') {\n // NOTE: falling back to `false` instead of `undefined` as required by the specification.\n // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary\n // normalizations in the consuming code.\n return false;\n }\n if (raw === 'true') {\n return true;\n }\n else if (raw === 'false') {\n return false;\n }\n else {\n api_1.diag.warn(`Unknown value ${(0, util_1.inspect)(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`);\n return false;\n }\n}\nexports.getBooleanFromEnv = getBooleanFromEnv;\n/**\n * Retrieves a list of strings from an environment variable.\n * - Uses ',' as the delimiter.\n * - Trims leading and trailing whitespace from each entry.\n * - Excludes empty entries.\n * - Returns `undefined` if the environment variable is empty or contains only whitespace.\n * - Returns an empty array if all entries are empty or whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string[] | undefined} - The list of strings or `undefined`.\n */\nfunction getStringListFromEnv(key) {\n return getStringFromEnv(key)\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n}\nexports.getStringListFromEnv = getStringListFromEnv;\n//# sourceMappingURL=environment.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/**\n * @deprecated Use globalThis directly instead.\n */\nexports._globalThis = globalThis;\n//# sourceMappingURL=globalThis.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '2.6.1';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_PROCESS_RUNTIME_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SDK_INFO = void 0;\nconst version_1 = require(\"../../version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../../semconv\");\n/** Constants describing the SDK in use */\nexports.SDK_INFO = {\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'node',\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: semantic_conventions_1.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: version_1.VERSION,\n};\n//# sourceMappingURL=sdk-info.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.otperformance = exports.SDK_INFO = exports._globalThis = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = void 0;\nvar environment_1 = require(\"./environment\");\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return environment_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return environment_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return environment_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return environment_1.getStringListFromEnv; } });\nvar globalThis_1 = require(\"../../common/globalThis\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return globalThis_1._globalThis; } });\nvar sdk_info_1 = require(\"./sdk-info\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return sdk_info_1.SDK_INFO; } });\n/**\n * @deprecated Use performance directly.\n */\nexports.otperformance = performance;\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStringListFromEnv = exports.getNumberFromEnv = exports.getStringFromEnv = exports.getBooleanFromEnv = exports.otperformance = exports._globalThis = exports.SDK_INFO = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return node_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return node_1._globalThis; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return node_1.otperformance; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return node_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return node_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return node_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return node_1.getStringListFromEnv; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addHrTimes = exports.isTimeInput = exports.isTimeInputHrTime = exports.hrTimeToMicroseconds = exports.hrTimeToMilliseconds = exports.hrTimeToNanoseconds = exports.hrTimeToTimeStamp = exports.hrTimeDuration = exports.timeInputToHrTime = exports.hrTime = exports.getTimeOrigin = exports.millisToHrTime = void 0;\nconst platform_1 = require(\"../platform\");\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nfunction millisToHrTime(epochMillis) {\n const epochSeconds = epochMillis / 1000;\n // Decimals only.\n const seconds = Math.trunc(epochSeconds);\n // Round sub-nanosecond accuracy to nanosecond.\n const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n return [seconds, nanos];\n}\nexports.millisToHrTime = millisToHrTime;\n/**\n * @deprecated Use `performance.timeOrigin` directly.\n */\nfunction getTimeOrigin() {\n return platform_1.otperformance.timeOrigin;\n}\nexports.getTimeOrigin = getTimeOrigin;\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nfunction hrTime(performanceNow) {\n const timeOrigin = millisToHrTime(platform_1.otperformance.timeOrigin);\n const now = millisToHrTime(typeof performanceNow === 'number' ? performanceNow : platform_1.otperformance.now());\n return addHrTimes(timeOrigin, now);\n}\nexports.hrTime = hrTime;\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nfunction timeInputToHrTime(time) {\n // process.hrtime\n if (isTimeInputHrTime(time)) {\n return time;\n }\n else if (typeof time === 'number') {\n // Must be a performance.now() if it's smaller than process start time.\n if (time < platform_1.otperformance.timeOrigin) {\n return hrTime(time);\n }\n else {\n // epoch milliseconds or performance.timeOrigin\n return millisToHrTime(time);\n }\n }\n else if (time instanceof Date) {\n return millisToHrTime(time.getTime());\n }\n else {\n throw TypeError('Invalid input type');\n }\n}\nexports.timeInputToHrTime = timeInputToHrTime;\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nfunction hrTimeDuration(startTime, endTime) {\n let seconds = endTime[0] - startTime[0];\n let nanos = endTime[1] - startTime[1];\n // overflow\n if (nanos < 0) {\n seconds -= 1;\n // negate\n nanos += SECOND_TO_NANOSECONDS;\n }\n return [seconds, nanos];\n}\nexports.hrTimeDuration = hrTimeDuration;\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nfunction hrTimeToTimeStamp(time) {\n const precision = NANOSECOND_DIGITS;\n const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n const nanoString = tmp.substring(tmp.length - precision - 1);\n const date = new Date(time[0] * 1000).toISOString();\n return date.replace('000Z', nanoString);\n}\nexports.hrTimeToTimeStamp = hrTimeToTimeStamp;\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nfunction hrTimeToNanoseconds(time) {\n return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\nexports.hrTimeToNanoseconds = hrTimeToNanoseconds;\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nfunction hrTimeToMilliseconds(time) {\n return time[0] * 1e3 + time[1] / 1e6;\n}\nexports.hrTimeToMilliseconds = hrTimeToMilliseconds;\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nfunction hrTimeToMicroseconds(time) {\n return time[0] * 1e6 + time[1] / 1e3;\n}\nexports.hrTimeToMicroseconds = hrTimeToMicroseconds;\n/**\n * check if time is HrTime\n * @param value\n */\nfunction isTimeInputHrTime(value) {\n return (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number');\n}\nexports.isTimeInputHrTime = isTimeInputHrTime;\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nfunction isTimeInput(value) {\n return (isTimeInputHrTime(value) ||\n typeof value === 'number' ||\n value instanceof Date);\n}\nexports.isTimeInput = isTimeInput;\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nfunction addHrTimes(time1, time2) {\n const out = [time1[0] + time2[0], time1[1] + time2[1]];\n // Nanoseconds\n if (out[1] >= SECOND_TO_NANOSECONDS) {\n out[1] -= SECOND_TO_NANOSECONDS;\n out[0] += 1;\n }\n return out;\n}\nexports.addHrTimes = addHrTimes;\n//# sourceMappingURL=time.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unrefTimer = void 0;\n/**\n * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package.\n * @param timer\n */\nfunction unrefTimer(timer) {\n if (typeof timer !== 'number') {\n timer.unref();\n }\n}\nexports.unrefTimer = unrefTimer;\n//# sourceMappingURL=timer-util.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportResultCode = void 0;\nvar ExportResultCode;\n(function (ExportResultCode) {\n ExportResultCode[ExportResultCode[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExportResultCode[ExportResultCode[\"FAILED\"] = 1] = \"FAILED\";\n})(ExportResultCode = exports.ExportResultCode || (exports.ExportResultCode = {}));\n//# sourceMappingURL=ExportResult.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompositePropagator = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\n/** Combines multiple propagators into a single propagator. */\nclass CompositePropagator {\n _propagators;\n _fields;\n /**\n * Construct a composite propagator from a list of propagators.\n *\n * @param [config] Configuration object for composite propagator\n */\n constructor(config = {}) {\n this._propagators = config.propagators ?? [];\n this._fields = Array.from(new Set(this._propagators\n // older propagators may not have fields function, null check to be sure\n .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n .reduce((x, y) => x.concat(y), [])));\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same carrier key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to inject\n * @param carrier Carrier into which context will be injected\n */\n inject(context, carrier, setter) {\n for (const propagator of this._propagators) {\n try {\n propagator.inject(context, carrier, setter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n }\n }\n /**\n * Run each of the configured propagators with the given context and carrier.\n * Propagators are run in the order they are configured, so if multiple\n * propagators write the same context key, the propagator later in the list\n * will \"win\".\n *\n * @param context Context to add values to\n * @param carrier Carrier from which to extract context\n */\n extract(context, carrier, getter) {\n return this._propagators.reduce((ctx, propagator) => {\n try {\n return propagator.extract(ctx, carrier, getter);\n }\n catch (err) {\n api_1.diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`);\n }\n return ctx;\n }, context);\n }\n fields() {\n // return a new array so our fields cannot be modified\n return this._fields.slice();\n }\n}\nexports.CompositePropagator = CompositePropagator;\n//# sourceMappingURL=composite.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=validators.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceState = void 0;\nconst validators_1 = require(\"../internal/validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceState {\n _internalState = new Map();\n constructor(rawTraceState) {\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return this._keys()\n .reduce((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, validators_1.validateKey)(key) && (0, validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceState();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceState = TraceState;\n//# sourceMappingURL=TraceState.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.W3CTraceContextPropagator = exports.parseTraceParent = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"./suppress-tracing\");\nconst TraceState_1 = require(\"./TraceState\");\nexports.TRACE_PARENT_HEADER = 'traceparent';\nexports.TRACE_STATE_HEADER = 'tracestate';\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(`^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`);\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n * It should be dynamically generated server side to have the server's request trace Id,\n * a parent span Id that was set on the server's request span,\n * and the trace flags to indicate the server's sampling decision\n * (01 = sampled, 00 = not sampled).\n * for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n * For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nfunction parseTraceParent(traceParent) {\n const match = TRACE_PARENT_REGEX.exec(traceParent);\n if (!match)\n return null;\n // According to the specification the implementation should be compatible\n // with future versions. If there are more parts, we only reject it if it's using version 00\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n if (match[1] === '00' && match[5])\n return null;\n return {\n traceId: match[2],\n spanId: match[3],\n traceFlags: parseInt(match[4], 16),\n };\n}\nexports.parseTraceParent = parseTraceParent;\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nclass W3CTraceContextPropagator {\n inject(context, carrier, setter) {\n const spanContext = api_1.trace.getSpanContext(context);\n if (!spanContext ||\n (0, suppress_tracing_1.isTracingSuppressed)(context) ||\n !(0, api_1.isSpanContextValid)(spanContext))\n return;\n const traceParent = `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags || api_1.TraceFlags.NONE).toString(16)}`;\n setter.set(carrier, exports.TRACE_PARENT_HEADER, traceParent);\n if (spanContext.traceState) {\n setter.set(carrier, exports.TRACE_STATE_HEADER, spanContext.traceState.serialize());\n }\n }\n extract(context, carrier, getter) {\n const traceParentHeader = getter.get(carrier, exports.TRACE_PARENT_HEADER);\n if (!traceParentHeader)\n return context;\n const traceParent = Array.isArray(traceParentHeader)\n ? traceParentHeader[0]\n : traceParentHeader;\n if (typeof traceParent !== 'string')\n return context;\n const spanContext = parseTraceParent(traceParent);\n if (!spanContext)\n return context;\n spanContext.isRemote = true;\n const traceStateHeader = getter.get(carrier, exports.TRACE_STATE_HEADER);\n if (traceStateHeader) {\n // If more than one `tracestate` header is found, we merge them into a\n // single header.\n const state = Array.isArray(traceStateHeader)\n ? traceStateHeader.join(',')\n : traceStateHeader;\n spanContext.traceState = new TraceState_1.TraceState(typeof state === 'string' ? state : undefined);\n }\n return api_1.trace.setSpanContext(context, spanContext);\n }\n fields() {\n return [exports.TRACE_PARENT_HEADER, exports.TRACE_STATE_HEADER];\n }\n}\nexports.W3CTraceContextPropagator = W3CTraceContextPropagator;\n//# sourceMappingURL=W3CTraceContextPropagator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRPCMetadata = exports.deleteRPCMetadata = exports.setRPCMetadata = exports.RPCType = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst RPC_METADATA_KEY = (0, api_1.createContextKey)('OpenTelemetry SDK Context Key RPC_METADATA');\nvar RPCType;\n(function (RPCType) {\n RPCType[\"HTTP\"] = \"http\";\n})(RPCType = exports.RPCType || (exports.RPCType = {}));\nfunction setRPCMetadata(context, meta) {\n return context.setValue(RPC_METADATA_KEY, meta);\n}\nexports.setRPCMetadata = setRPCMetadata;\nfunction deleteRPCMetadata(context) {\n return context.deleteValue(RPC_METADATA_KEY);\n}\nexports.deleteRPCMetadata = deleteRPCMetadata;\nfunction getRPCMetadata(context) {\n return context.getValue(RPC_METADATA_KEY);\n}\nexports.getRPCMetadata = getRPCMetadata;\n//# sourceMappingURL=rpc-metadata.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPlainObject = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n return false;\n }\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor &&\n funcToString.call(Ctor) === objectCtorString);\n}\nexports.isPlainObject = isPlainObject;\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value)\n ? getRawTag(value)\n : objectToString(value);\n}\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n const isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];\n let unmasked = false;\n try {\n value[symToStringTag] = undefined;\n unmasked = true;\n }\n catch {\n // silence\n }\n const result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n }\n else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n//# sourceMappingURL=lodash.merge.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst lodash_merge_1 = require(\"./lodash.merge\");\nconst MAX_LEVEL = 20;\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nfunction merge(...args) {\n let result = args.shift();\n const objects = new WeakMap();\n while (args.length > 0) {\n result = mergeTwoObjects(result, args.shift(), 0, objects);\n }\n return result;\n}\nexports.merge = merge;\nfunction takeValue(value) {\n if (isArray(value)) {\n return value.slice();\n }\n return value;\n}\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(one, two, level = 0, objects) {\n let result;\n if (level > MAX_LEVEL) {\n return undefined;\n }\n level++;\n if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n result = takeValue(two);\n }\n else if (isArray(one)) {\n result = one.slice();\n if (isArray(two)) {\n for (let i = 0, j = two.length; i < j; i++) {\n result.push(takeValue(two[i]));\n }\n }\n else if (isObject(two)) {\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n result[key] = takeValue(two[key]);\n }\n }\n }\n else if (isObject(one)) {\n if (isObject(two)) {\n if (!shouldMerge(one, two)) {\n return two;\n }\n result = Object.assign({}, one);\n const keys = Object.keys(two);\n for (let i = 0, j = keys.length; i < j; i++) {\n const key = keys[i];\n const twoValue = two[key];\n if (isPrimitive(twoValue)) {\n if (typeof twoValue === 'undefined') {\n delete result[key];\n }\n else {\n // result[key] = takeValue(twoValue);\n result[key] = twoValue;\n }\n }\n else {\n const obj1 = result[key];\n const obj2 = twoValue;\n if (wasObjectReferenced(one, key, objects) ||\n wasObjectReferenced(two, key, objects)) {\n delete result[key];\n }\n else {\n if (isObject(obj1) && isObject(obj2)) {\n const arr1 = objects.get(obj1) || [];\n const arr2 = objects.get(obj2) || [];\n arr1.push({ obj: one, key });\n arr2.push({ obj: two, key });\n objects.set(obj1, arr1);\n objects.set(obj2, arr2);\n }\n result[key] = mergeTwoObjects(result[key], twoValue, level, objects);\n }\n }\n }\n }\n else {\n result = two;\n }\n }\n return result;\n}\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(obj, key, objects) {\n const arr = objects.get(obj[key]) || [];\n for (let i = 0, j = arr.length; i < j; i++) {\n const info = arr[i];\n if (info.key === key && info.obj === obj) {\n return true;\n }\n }\n return false;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction isObject(value) {\n return (!isPrimitive(value) &&\n !isArray(value) &&\n !isFunction(value) &&\n typeof value === 'object');\n}\nfunction isPrimitive(value) {\n return (typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'undefined' ||\n value instanceof Date ||\n value instanceof RegExp ||\n value === null);\n}\nfunction shouldMerge(one, two) {\n if (!(0, lodash_merge_1.isPlainObject)(one) || !(0, lodash_merge_1.isPlainObject)(two)) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=merge.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callWithTimeout = exports.TimeoutError = void 0;\n/**\n * Error that is thrown on timeouts.\n */\nclass TimeoutError extends Error {\n constructor(message) {\n super(message);\n // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\nexports.TimeoutError = TimeoutError;\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n *

NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nfunction callWithTimeout(promise, timeout) {\n let timeoutHandle;\n const timeoutPromise = new Promise(function timeoutFunction(_resolve, reject) {\n timeoutHandle = setTimeout(function timeoutHandler() {\n reject(new TimeoutError('Operation timed out.'));\n }, timeout);\n });\n return Promise.race([promise, timeoutPromise]).then(result => {\n clearTimeout(timeoutHandle);\n return result;\n }, reason => {\n clearTimeout(timeoutHandle);\n throw reason;\n });\n}\nexports.callWithTimeout = callWithTimeout;\n//# sourceMappingURL=timeout.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isUrlIgnored = exports.urlMatches = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nfunction urlMatches(url, urlToMatch) {\n if (typeof urlToMatch === 'string') {\n return url === urlToMatch;\n }\n else {\n return !!url.match(urlToMatch);\n }\n}\nexports.urlMatches = urlMatches;\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nfunction isUrlIgnored(url, ignoredUrls) {\n if (!ignoredUrls) {\n return false;\n }\n for (const ignoreUrl of ignoredUrls) {\n if (urlMatches(url, ignoreUrl)) {\n return true;\n }\n }\n return false;\n}\nexports.isUrlIgnored = isUrlIgnored;\n//# sourceMappingURL=url.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deferred = void 0;\nclass Deferred {\n _promise;\n _resolve;\n _reject;\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n get promise() {\n return this._promise;\n }\n resolve(val) {\n this._resolve(val);\n }\n reject(err) {\n this._reject(err);\n }\n}\nexports.Deferred = Deferred;\n//# sourceMappingURL=promise.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BindOnceFuture = void 0;\nconst promise_1 = require(\"./promise\");\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nclass BindOnceFuture {\n _isCalled = false;\n _deferred = new promise_1.Deferred();\n _callback;\n _that;\n constructor(callback, that) {\n this._callback = callback;\n this._that = that;\n }\n get isCalled() {\n return this._isCalled;\n }\n get promise() {\n return this._deferred.promise;\n }\n call(...args) {\n if (!this._isCalled) {\n this._isCalled = true;\n try {\n Promise.resolve(this._callback.call(this._that, ...args)).then(val => this._deferred.resolve(val), err => this._deferred.reject(err));\n }\n catch (err) {\n this._deferred.reject(err);\n }\n }\n return this._deferred.promise;\n }\n}\nexports.BindOnceFuture = BindOnceFuture;\n//# sourceMappingURL=callback.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diagLogLevelFromString = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst logLevelMap = {\n ALL: api_1.DiagLogLevel.ALL,\n VERBOSE: api_1.DiagLogLevel.VERBOSE,\n DEBUG: api_1.DiagLogLevel.DEBUG,\n INFO: api_1.DiagLogLevel.INFO,\n WARN: api_1.DiagLogLevel.WARN,\n ERROR: api_1.DiagLogLevel.ERROR,\n NONE: api_1.DiagLogLevel.NONE,\n};\n/**\n * Convert a string to a {@link DiagLogLevel}, defaults to {@link DiagLogLevel} if the log level does not exist or undefined if the input is undefined.\n * @param value\n */\nfunction diagLogLevelFromString(value) {\n if (value == null) {\n // don't fall back to default - no value set has different semantics for ús than an incorrect value (do not set vs. fall back to default)\n return undefined;\n }\n const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n if (resolvedLogLevel == null) {\n api_1.diag.warn(`Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`);\n return api_1.DiagLogLevel.INFO;\n }\n return resolvedLogLevel;\n}\nexports.diagLogLevelFromString = diagLogLevelFromString;\n//# sourceMappingURL=configuration.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._export = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst suppress_tracing_1 = require(\"../trace/suppress-tracing\");\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nfunction _export(exporter, arg) {\n return new Promise(resolve => {\n // prevent downstream exporter calls from generating spans\n api_1.context.with((0, suppress_tracing_1.suppressTracing)(api_1.context.active()), () => {\n exporter.export(arg, resolve);\n });\n });\n}\nexports._export = _export;\n//# sourceMappingURL=exporter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.internal = exports.diagLogLevelFromString = exports.BindOnceFuture = exports.urlMatches = exports.isUrlIgnored = exports.callWithTimeout = exports.TimeoutError = exports.merge = exports.TraceState = exports.unsuppressTracing = exports.suppressTracing = exports.isTracingSuppressed = exports.setRPCMetadata = exports.getRPCMetadata = exports.deleteRPCMetadata = exports.RPCType = exports.parseTraceParent = exports.W3CTraceContextPropagator = exports.TRACE_STATE_HEADER = exports.TRACE_PARENT_HEADER = exports.CompositePropagator = exports.otperformance = exports.getStringListFromEnv = exports.getNumberFromEnv = exports.getBooleanFromEnv = exports.getStringFromEnv = exports._globalThis = exports.SDK_INFO = exports.parseKeyPairsIntoRecord = exports.ExportResultCode = exports.unrefTimer = exports.timeInputToHrTime = exports.millisToHrTime = exports.isTimeInputHrTime = exports.isTimeInput = exports.hrTimeToTimeStamp = exports.hrTimeToNanoseconds = exports.hrTimeToMilliseconds = exports.hrTimeToMicroseconds = exports.hrTimeDuration = exports.hrTime = exports.getTimeOrigin = exports.addHrTimes = exports.loggingErrorHandler = exports.setGlobalErrorHandler = exports.globalErrorHandler = exports.sanitizeAttributes = exports.isAttributeValue = exports.AnchoredClock = exports.W3CBaggagePropagator = void 0;\nvar W3CBaggagePropagator_1 = require(\"./baggage/propagation/W3CBaggagePropagator\");\nObject.defineProperty(exports, \"W3CBaggagePropagator\", { enumerable: true, get: function () { return W3CBaggagePropagator_1.W3CBaggagePropagator; } });\nvar anchored_clock_1 = require(\"./common/anchored-clock\");\nObject.defineProperty(exports, \"AnchoredClock\", { enumerable: true, get: function () { return anchored_clock_1.AnchoredClock; } });\nvar attributes_1 = require(\"./common/attributes\");\nObject.defineProperty(exports, \"isAttributeValue\", { enumerable: true, get: function () { return attributes_1.isAttributeValue; } });\nObject.defineProperty(exports, \"sanitizeAttributes\", { enumerable: true, get: function () { return attributes_1.sanitizeAttributes; } });\nvar global_error_handler_1 = require(\"./common/global-error-handler\");\nObject.defineProperty(exports, \"globalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.globalErrorHandler; } });\nObject.defineProperty(exports, \"setGlobalErrorHandler\", { enumerable: true, get: function () { return global_error_handler_1.setGlobalErrorHandler; } });\nvar logging_error_handler_1 = require(\"./common/logging-error-handler\");\nObject.defineProperty(exports, \"loggingErrorHandler\", { enumerable: true, get: function () { return logging_error_handler_1.loggingErrorHandler; } });\nvar time_1 = require(\"./common/time\");\nObject.defineProperty(exports, \"addHrTimes\", { enumerable: true, get: function () { return time_1.addHrTimes; } });\nObject.defineProperty(exports, \"getTimeOrigin\", { enumerable: true, get: function () { return time_1.getTimeOrigin; } });\nObject.defineProperty(exports, \"hrTime\", { enumerable: true, get: function () { return time_1.hrTime; } });\nObject.defineProperty(exports, \"hrTimeDuration\", { enumerable: true, get: function () { return time_1.hrTimeDuration; } });\nObject.defineProperty(exports, \"hrTimeToMicroseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMicroseconds; } });\nObject.defineProperty(exports, \"hrTimeToMilliseconds\", { enumerable: true, get: function () { return time_1.hrTimeToMilliseconds; } });\nObject.defineProperty(exports, \"hrTimeToNanoseconds\", { enumerable: true, get: function () { return time_1.hrTimeToNanoseconds; } });\nObject.defineProperty(exports, \"hrTimeToTimeStamp\", { enumerable: true, get: function () { return time_1.hrTimeToTimeStamp; } });\nObject.defineProperty(exports, \"isTimeInput\", { enumerable: true, get: function () { return time_1.isTimeInput; } });\nObject.defineProperty(exports, \"isTimeInputHrTime\", { enumerable: true, get: function () { return time_1.isTimeInputHrTime; } });\nObject.defineProperty(exports, \"millisToHrTime\", { enumerable: true, get: function () { return time_1.millisToHrTime; } });\nObject.defineProperty(exports, \"timeInputToHrTime\", { enumerable: true, get: function () { return time_1.timeInputToHrTime; } });\nvar timer_util_1 = require(\"./common/timer-util\");\nObject.defineProperty(exports, \"unrefTimer\", { enumerable: true, get: function () { return timer_util_1.unrefTimer; } });\nvar ExportResult_1 = require(\"./ExportResult\");\nObject.defineProperty(exports, \"ExportResultCode\", { enumerable: true, get: function () { return ExportResult_1.ExportResultCode; } });\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"parseKeyPairsIntoRecord\", { enumerable: true, get: function () { return utils_1.parseKeyPairsIntoRecord; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"SDK_INFO\", { enumerable: true, get: function () { return platform_1.SDK_INFO; } });\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return platform_1._globalThis; } });\nObject.defineProperty(exports, \"getStringFromEnv\", { enumerable: true, get: function () { return platform_1.getStringFromEnv; } });\nObject.defineProperty(exports, \"getBooleanFromEnv\", { enumerable: true, get: function () { return platform_1.getBooleanFromEnv; } });\nObject.defineProperty(exports, \"getNumberFromEnv\", { enumerable: true, get: function () { return platform_1.getNumberFromEnv; } });\nObject.defineProperty(exports, \"getStringListFromEnv\", { enumerable: true, get: function () { return platform_1.getStringListFromEnv; } });\nObject.defineProperty(exports, \"otperformance\", { enumerable: true, get: function () { return platform_1.otperformance; } });\nvar composite_1 = require(\"./propagation/composite\");\nObject.defineProperty(exports, \"CompositePropagator\", { enumerable: true, get: function () { return composite_1.CompositePropagator; } });\nvar W3CTraceContextPropagator_1 = require(\"./trace/W3CTraceContextPropagator\");\nObject.defineProperty(exports, \"TRACE_PARENT_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_PARENT_HEADER; } });\nObject.defineProperty(exports, \"TRACE_STATE_HEADER\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.TRACE_STATE_HEADER; } });\nObject.defineProperty(exports, \"W3CTraceContextPropagator\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.W3CTraceContextPropagator; } });\nObject.defineProperty(exports, \"parseTraceParent\", { enumerable: true, get: function () { return W3CTraceContextPropagator_1.parseTraceParent; } });\nvar rpc_metadata_1 = require(\"./trace/rpc-metadata\");\nObject.defineProperty(exports, \"RPCType\", { enumerable: true, get: function () { return rpc_metadata_1.RPCType; } });\nObject.defineProperty(exports, \"deleteRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.deleteRPCMetadata; } });\nObject.defineProperty(exports, \"getRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.getRPCMetadata; } });\nObject.defineProperty(exports, \"setRPCMetadata\", { enumerable: true, get: function () { return rpc_metadata_1.setRPCMetadata; } });\nvar suppress_tracing_1 = require(\"./trace/suppress-tracing\");\nObject.defineProperty(exports, \"isTracingSuppressed\", { enumerable: true, get: function () { return suppress_tracing_1.isTracingSuppressed; } });\nObject.defineProperty(exports, \"suppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.suppressTracing; } });\nObject.defineProperty(exports, \"unsuppressTracing\", { enumerable: true, get: function () { return suppress_tracing_1.unsuppressTracing; } });\nvar TraceState_1 = require(\"./trace/TraceState\");\nObject.defineProperty(exports, \"TraceState\", { enumerable: true, get: function () { return TraceState_1.TraceState; } });\nvar merge_1 = require(\"./utils/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar timeout_1 = require(\"./utils/timeout\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return timeout_1.TimeoutError; } });\nObject.defineProperty(exports, \"callWithTimeout\", { enumerable: true, get: function () { return timeout_1.callWithTimeout; } });\nvar url_1 = require(\"./utils/url\");\nObject.defineProperty(exports, \"isUrlIgnored\", { enumerable: true, get: function () { return url_1.isUrlIgnored; } });\nObject.defineProperty(exports, \"urlMatches\", { enumerable: true, get: function () { return url_1.urlMatches; } });\nvar callback_1 = require(\"./utils/callback\");\nObject.defineProperty(exports, \"BindOnceFuture\", { enumerable: true, get: function () { return callback_1.BindOnceFuture; } });\nvar configuration_1 = require(\"./utils/configuration\");\nObject.defineProperty(exports, \"diagLogLevelFromString\", { enumerable: true, get: function () { return configuration_1.diagLogLevelFromString; } });\nconst exporter_1 = require(\"./internal/exporter\");\nexports.internal = {\n _export: exporter_1._export,\n};\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractAsyncHooksContextManager = void 0;\nconst events_1 = require(\"events\");\nconst ADD_LISTENER_METHODS = [\n 'addListener',\n 'on',\n 'once',\n 'prependListener',\n 'prependOnceListener',\n];\nclass AbstractAsyncHooksContextManager {\n /**\n * Binds a the certain context or the active one to the target function and then returns the target\n * @param context A context (span) to be bind to target\n * @param target a function or event emitter. When target or one of its callbacks is called,\n * the provided context will be used as the active context for the duration of the call.\n */\n bind(context, target) {\n if (target instanceof events_1.EventEmitter) {\n return this._bindEventEmitter(context, target);\n }\n if (typeof target === 'function') {\n return this._bindFunction(context, target);\n }\n return target;\n }\n _bindFunction(context, target) {\n const manager = this;\n const contextWrapper = function (...args) {\n return manager.with(context, () => target.apply(this, args));\n };\n Object.defineProperty(contextWrapper, 'length', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: target.length,\n });\n /**\n * It isn't possible to tell Typescript that contextWrapper is the same as T\n * so we forced to cast as any here.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return contextWrapper;\n }\n /**\n * By default, EventEmitter call their callback with their context, which we do\n * not want, instead we will bind a specific context to all callbacks that\n * go through it.\n * @param context the context we want to bind\n * @param ee EventEmitter an instance of EventEmitter to patch\n */\n _bindEventEmitter(context, ee) {\n const map = this._getPatchMap(ee);\n if (map !== undefined)\n return ee;\n this._createPatchMap(ee);\n // patch methods that add a listener to propagate context\n ADD_LISTENER_METHODS.forEach(methodName => {\n if (ee[methodName] === undefined)\n return;\n ee[methodName] = this._patchAddListener(ee, ee[methodName], context);\n });\n // patch methods that remove a listener\n if (typeof ee.removeListener === 'function') {\n ee.removeListener = this._patchRemoveListener(ee, ee.removeListener);\n }\n if (typeof ee.off === 'function') {\n ee.off = this._patchRemoveListener(ee, ee.off);\n }\n // patch method that remove all listeners\n if (typeof ee.removeAllListeners === 'function') {\n ee.removeAllListeners = this._patchRemoveAllListeners(ee, ee.removeAllListeners);\n }\n return ee;\n }\n /**\n * Patch methods that remove a given listener so that we match the \"patched\"\n * version of that listener (the one that propagate context).\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n _patchRemoveListener(ee, original) {\n const contextManager = this;\n return function (event, listener) {\n const events = contextManager._getPatchMap(ee)?.[event];\n if (events === undefined) {\n return original.call(this, event, listener);\n }\n const patchedListener = events.get(listener);\n return original.call(this, event, patchedListener || listener);\n };\n }\n /**\n * Patch methods that remove all listeners so we remove our\n * internal references for a given event.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n */\n _patchRemoveAllListeners(ee, original) {\n const contextManager = this;\n return function (event) {\n const map = contextManager._getPatchMap(ee);\n if (map !== undefined) {\n if (arguments.length === 0) {\n contextManager._createPatchMap(ee);\n }\n else if (map[event] !== undefined) {\n delete map[event];\n }\n }\n return original.apply(this, arguments);\n };\n }\n /**\n * Patch methods on an event emitter instance that can add listeners so we\n * can force them to propagate a given context.\n * @param ee EventEmitter instance\n * @param original reference to the patched method\n * @param [context] context to propagate when calling listeners\n */\n _patchAddListener(ee, original, context) {\n const contextManager = this;\n return function (event, listener) {\n /**\n * This check is required to prevent double-wrapping the listener.\n * The implementation for ee.once wraps the listener and calls ee.on.\n * Without this check, we would wrap that wrapped listener.\n * This causes an issue because ee.removeListener depends on the onceWrapper\n * to properly remove the listener. If we wrap their wrapper, we break\n * that detection.\n */\n if (contextManager._wrapped) {\n return original.call(this, event, listener);\n }\n let map = contextManager._getPatchMap(ee);\n if (map === undefined) {\n map = contextManager._createPatchMap(ee);\n }\n let listeners = map[event];\n if (listeners === undefined) {\n listeners = new WeakMap();\n map[event] = listeners;\n }\n const patchedListener = contextManager.bind(context, listener);\n // store a weak reference of the user listener to ours\n listeners.set(listener, patchedListener);\n /**\n * See comment at the start of this function for the explanation of this property.\n */\n contextManager._wrapped = true;\n try {\n return original.call(this, event, patchedListener);\n }\n finally {\n contextManager._wrapped = false;\n }\n };\n }\n _createPatchMap(ee) {\n const map = Object.create(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ee[this._kOtListeners] = map;\n return map;\n }\n _getPatchMap(ee) {\n return ee[this._kOtListeners];\n }\n _kOtListeners = Symbol('OtListeners');\n _wrapped = false;\n}\nexports.AbstractAsyncHooksContextManager = AbstractAsyncHooksContextManager;\n//# sourceMappingURL=AbstractAsyncHooksContextManager.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncHooksContextManager = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst asyncHooks = require(\"async_hooks\");\nconst AbstractAsyncHooksContextManager_1 = require(\"./AbstractAsyncHooksContextManager\");\n/**\n * @deprecated Use AsyncLocalStorageContextManager instead.\n */\nclass AsyncHooksContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager {\n _asyncHook;\n _contexts = new Map();\n _stack = [];\n constructor() {\n super();\n this._asyncHook = asyncHooks.createHook({\n init: this._init.bind(this),\n before: this._before.bind(this),\n after: this._after.bind(this),\n destroy: this._destroy.bind(this),\n promiseResolve: this._destroy.bind(this),\n });\n }\n active() {\n return this._stack[this._stack.length - 1] ?? api_1.ROOT_CONTEXT;\n }\n with(context, fn, thisArg, ...args) {\n this._enterContext(context);\n try {\n return fn.call(thisArg, ...args);\n }\n finally {\n this._exitContext();\n }\n }\n enable() {\n this._asyncHook.enable();\n return this;\n }\n disable() {\n this._asyncHook.disable();\n this._contexts.clear();\n this._stack = [];\n return this;\n }\n /**\n * Init hook will be called when userland create a async context, setting the\n * context as the current one if it exist.\n * @param uid id of the async context\n * @param type the resource type\n */\n _init(uid, type) {\n // ignore TIMERWRAP as they combine timers with same timeout which can lead to\n // false context propagation. TIMERWRAP has been removed in node 11\n // every timer has it's own `Timeout` resource anyway which is used to propagate\n // context.\n if (type === 'TIMERWRAP')\n return;\n const context = this._stack[this._stack.length - 1];\n if (context !== undefined) {\n this._contexts.set(uid, context);\n }\n }\n /**\n * Destroy hook will be called when a given context is no longer used so we can\n * remove its attached context.\n * @param uid uid of the async context\n */\n _destroy(uid) {\n this._contexts.delete(uid);\n }\n /**\n * Before hook is called just before executing a async context.\n * @param uid uid of the async context\n */\n _before(uid) {\n const context = this._contexts.get(uid);\n if (context !== undefined) {\n this._enterContext(context);\n }\n }\n /**\n * After hook is called just after completing the execution of a async context.\n */\n _after() {\n this._exitContext();\n }\n /**\n * Set the given context as active\n */\n _enterContext(context) {\n this._stack.push(context);\n }\n /**\n * Remove the context at the root of the stack\n */\n _exitContext() {\n this._stack.pop();\n }\n}\nexports.AsyncHooksContextManager = AsyncHooksContextManager;\n//# sourceMappingURL=AsyncHooksContextManager.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncLocalStorageContextManager = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst async_hooks_1 = require(\"async_hooks\");\nconst AbstractAsyncHooksContextManager_1 = require(\"./AbstractAsyncHooksContextManager\");\nclass AsyncLocalStorageContextManager extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager {\n _asyncLocalStorage;\n constructor() {\n super();\n this._asyncLocalStorage = new async_hooks_1.AsyncLocalStorage();\n }\n active() {\n return this._asyncLocalStorage.getStore() ?? api_1.ROOT_CONTEXT;\n }\n with(context, fn, thisArg, ...args) {\n const cb = thisArg == null ? fn : fn.bind(thisArg);\n return this._asyncLocalStorage.run(context, cb, ...args);\n }\n enable() {\n return this;\n }\n disable() {\n this._asyncLocalStorage.disable();\n return this;\n }\n}\nexports.AsyncLocalStorageContextManager = AsyncLocalStorageContextManager;\n//# sourceMappingURL=AsyncLocalStorageContextManager.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncLocalStorageContextManager = exports.AsyncHooksContextManager = void 0;\nvar AsyncHooksContextManager_1 = require(\"./AsyncHooksContextManager\");\nObject.defineProperty(exports, \"AsyncHooksContextManager\", { enumerable: true, get: function () { return AsyncHooksContextManager_1.AsyncHooksContextManager; } });\nvar AsyncLocalStorageContextManager_1 = require(\"./AsyncLocalStorageContextManager\");\nObject.defineProperty(exports, \"AsyncLocalStorageContextManager\", { enumerable: true, get: function () { return AsyncLocalStorageContextManager_1.AsyncLocalStorageContextManager; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._clearDefaultServiceNameCache = exports.defaultServiceName = void 0;\nlet serviceName;\n/**\n * Returns the default service name for OpenTelemetry resources.\n * In Node.js environments, returns \"unknown_service:\".\n * In browser/edge environments, returns \"unknown_service\".\n */\nfunction defaultServiceName() {\n if (serviceName === undefined) {\n try {\n const argv0 = globalThis.process.argv0;\n serviceName = argv0 ? `unknown_service:${argv0}` : 'unknown_service';\n }\n catch {\n serviceName = 'unknown_service';\n }\n }\n return serviceName;\n}\nexports.defaultServiceName = defaultServiceName;\n/** @internal For testing purposes only */\nfunction _clearDefaultServiceNameCache() {\n serviceName = undefined;\n}\nexports._clearDefaultServiceNameCache = _clearDefaultServiceNameCache;\n//# sourceMappingURL=default-service-name.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPromiseLike = void 0;\nconst isPromiseLike = (val) => {\n return (val !== null &&\n typeof val === 'object' &&\n typeof val.then === 'function');\n};\nexports.isPromiseLike = isPromiseLike;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultResource = exports.emptyResource = exports.resourceFromDetectedResource = exports.resourceFromAttributes = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst default_service_name_1 = require(\"./default-service-name\");\nconst utils_1 = require(\"./utils\");\nclass ResourceImpl {\n _rawAttributes;\n _asyncAttributesPending = false;\n _schemaUrl;\n _memoizedAttributes;\n static FromAttributeList(attributes, options) {\n const res = new ResourceImpl({}, options);\n res._rawAttributes = guardedRawAttributes(attributes);\n res._asyncAttributesPending =\n attributes.filter(([_, val]) => (0, utils_1.isPromiseLike)(val)).length > 0;\n return res;\n }\n constructor(\n /**\n * A dictionary of attributes with string keys and values that provide\n * information about the entity as numbers, strings or booleans\n * TODO: Consider to add check/validation on attributes.\n */\n resource, options) {\n const attributes = resource.attributes ?? {};\n this._rawAttributes = Object.entries(attributes).map(([k, v]) => {\n if ((0, utils_1.isPromiseLike)(v)) {\n // side-effect\n this._asyncAttributesPending = true;\n }\n return [k, v];\n });\n this._rawAttributes = guardedRawAttributes(this._rawAttributes);\n this._schemaUrl = validateSchemaUrl(options?.schemaUrl);\n }\n get asyncAttributesPending() {\n return this._asyncAttributesPending;\n }\n async waitForAsyncAttributes() {\n if (!this.asyncAttributesPending) {\n return;\n }\n for (let i = 0; i < this._rawAttributes.length; i++) {\n const [k, v] = this._rawAttributes[i];\n this._rawAttributes[i] = [k, (0, utils_1.isPromiseLike)(v) ? await v : v];\n }\n this._asyncAttributesPending = false;\n }\n get attributes() {\n if (this.asyncAttributesPending) {\n api_1.diag.error('Accessing resource attributes before async attributes settled');\n }\n if (this._memoizedAttributes) {\n return this._memoizedAttributes;\n }\n const attrs = {};\n for (const [k, v] of this._rawAttributes) {\n if ((0, utils_1.isPromiseLike)(v)) {\n api_1.diag.debug(`Unsettled resource attribute ${k} skipped`);\n continue;\n }\n if (v != null) {\n attrs[k] ??= v;\n }\n }\n // only memoize output if all attributes are settled\n if (!this._asyncAttributesPending) {\n this._memoizedAttributes = attrs;\n }\n return attrs;\n }\n getRawAttributes() {\n return this._rawAttributes;\n }\n get schemaUrl() {\n return this._schemaUrl;\n }\n merge(resource) {\n if (resource == null)\n return this;\n // Order is important\n // Spec states incoming attributes override existing attributes\n const mergedSchemaUrl = mergeSchemaUrl(this, resource);\n const mergedOptions = mergedSchemaUrl\n ? { schemaUrl: mergedSchemaUrl }\n : undefined;\n return ResourceImpl.FromAttributeList([...resource.getRawAttributes(), ...this.getRawAttributes()], mergedOptions);\n }\n}\nfunction resourceFromAttributes(attributes, options) {\n return ResourceImpl.FromAttributeList(Object.entries(attributes), options);\n}\nexports.resourceFromAttributes = resourceFromAttributes;\nfunction resourceFromDetectedResource(detectedResource, options) {\n return new ResourceImpl(detectedResource, options);\n}\nexports.resourceFromDetectedResource = resourceFromDetectedResource;\nfunction emptyResource() {\n return resourceFromAttributes({});\n}\nexports.emptyResource = emptyResource;\nfunction defaultResource() {\n return resourceFromAttributes({\n [semantic_conventions_1.ATTR_SERVICE_NAME]: (0, default_service_name_1.defaultServiceName)(),\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_LANGUAGE],\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME],\n [semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION]: core_1.SDK_INFO[semantic_conventions_1.ATTR_TELEMETRY_SDK_VERSION],\n });\n}\nexports.defaultResource = defaultResource;\nfunction guardedRawAttributes(attributes) {\n return attributes.map(([k, v]) => {\n if ((0, utils_1.isPromiseLike)(v)) {\n return [\n k,\n v.catch(err => {\n api_1.diag.debug('promise rejection for resource attribute: %s - %s', k, err);\n return undefined;\n }),\n ];\n }\n return [k, v];\n });\n}\nfunction validateSchemaUrl(schemaUrl) {\n if (typeof schemaUrl === 'string' || schemaUrl === undefined) {\n return schemaUrl;\n }\n api_1.diag.warn('Schema URL must be string or undefined, got %s. Schema URL will be ignored.', schemaUrl);\n return undefined;\n}\nfunction mergeSchemaUrl(old, updating) {\n const oldSchemaUrl = old?.schemaUrl;\n const updatingSchemaUrl = updating?.schemaUrl;\n const isOldEmpty = oldSchemaUrl === undefined || oldSchemaUrl === '';\n const isUpdatingEmpty = updatingSchemaUrl === undefined || updatingSchemaUrl === '';\n if (isOldEmpty) {\n return updatingSchemaUrl;\n }\n if (isUpdatingEmpty) {\n return oldSchemaUrl;\n }\n if (oldSchemaUrl === updatingSchemaUrl) {\n return oldSchemaUrl;\n }\n api_1.diag.warn('Schema URL merge conflict: old resource has \"%s\", updating resource has \"%s\". Resulting resource will have undefined Schema URL.', oldSchemaUrl, updatingSchemaUrl);\n return undefined;\n}\n//# sourceMappingURL=ResourceImpl.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.detectResources = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst ResourceImpl_1 = require(\"./ResourceImpl\");\n/**\n * Runs all resource detectors and returns the results merged into a single Resource.\n *\n * @param config Configuration for resource detection\n */\nconst detectResources = (config = {}) => {\n const resources = (config.detectors || []).map(d => {\n try {\n const resource = (0, ResourceImpl_1.resourceFromDetectedResource)(d.detect(config));\n api_1.diag.debug(`${d.constructor.name} found resource.`, resource);\n return resource;\n }\n catch (e) {\n api_1.diag.debug(`${d.constructor.name} failed: ${e.message}`);\n return (0, ResourceImpl_1.emptyResource)();\n }\n });\n return resources.reduce((acc, resource) => acc.merge(resource), (0, ResourceImpl_1.emptyResource)());\n};\nexports.detectResources = detectResources;\n//# sourceMappingURL=detect-resources.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.envDetector = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * EnvDetector can be used to detect the presence of and create a Resource\n * from the OTEL_RESOURCE_ATTRIBUTES environment variable.\n */\nclass EnvDetector {\n // Type, attribute keys, and attribute values should not exceed 256 characters.\n _MAX_LENGTH = 255;\n // OTEL_RESOURCE_ATTRIBUTES is a comma-separated list of attributes.\n _COMMA_SEPARATOR = ',';\n // OTEL_RESOURCE_ATTRIBUTES contains key value pair separated by '='.\n _LABEL_KEY_VALUE_SPLITTER = '=';\n /**\n * Returns a {@link Resource} populated with attributes from the\n * OTEL_RESOURCE_ATTRIBUTES environment variable. Note this is an async\n * function to conform to the Detector interface.\n *\n * @param config The resource detection config\n */\n detect(_config) {\n const attributes = {};\n const rawAttributes = (0, core_1.getStringFromEnv)('OTEL_RESOURCE_ATTRIBUTES');\n const serviceName = (0, core_1.getStringFromEnv)('OTEL_SERVICE_NAME');\n if (rawAttributes) {\n try {\n const parsedAttributes = this._parseResourceAttributes(rawAttributes);\n Object.assign(attributes, parsedAttributes);\n }\n catch (e) {\n api_1.diag.debug(`EnvDetector failed: ${e instanceof Error ? e.message : e}`);\n }\n }\n if (serviceName) {\n attributes[semantic_conventions_1.ATTR_SERVICE_NAME] = serviceName;\n }\n return { attributes };\n }\n /**\n * Creates an attribute map from the OTEL_RESOURCE_ATTRIBUTES environment\n * variable.\n *\n * OTEL_RESOURCE_ATTRIBUTES: A comma-separated list of attributes in the\n * format \"key1=value1,key2=value2\". The ',' and '=' characters in keys\n * and values MUST be percent-encoded. Other characters MAY be percent-encoded.\n *\n * Per the spec, on any error (e.g., decoding failure), the entire environment\n * variable value is discarded.\n *\n * @param rawEnvAttributes The resource attributes as a comma-separated list\n * of key/value pairs.\n * @returns The parsed resource attributes.\n * @throws Error if parsing fails (caller handles by discarding all attributes)\n */\n _parseResourceAttributes(rawEnvAttributes) {\n if (!rawEnvAttributes)\n return {};\n const attributes = {};\n const rawAttributes = rawEnvAttributes.split(this._COMMA_SEPARATOR);\n for (const rawAttribute of rawAttributes) {\n const keyValuePair = rawAttribute.split(this._LABEL_KEY_VALUE_SPLITTER);\n // Per spec: ',' and '=' MUST be percent-encoded in keys and values.\n // If we get != 2 parts, there's an unencoded '=' which is an error.\n if (keyValuePair.length !== 2) {\n throw new Error(`Invalid format for OTEL_RESOURCE_ATTRIBUTES: \"${rawAttribute}\". ` +\n `Expected format: key=value. The ',' and '=' characters must be percent-encoded in keys and values.`);\n }\n const [rawKey, rawValue] = keyValuePair;\n const key = rawKey.trim();\n const value = rawValue.trim();\n if (key.length === 0) {\n throw new Error(`Invalid OTEL_RESOURCE_ATTRIBUTES: empty attribute key in \"${rawAttribute}\".`);\n }\n let decodedKey;\n let decodedValue;\n try {\n decodedKey = decodeURIComponent(key);\n decodedValue = decodeURIComponent(value);\n }\n catch (e) {\n throw new Error(`Failed to percent-decode OTEL_RESOURCE_ATTRIBUTES entry \"${rawAttribute}\": ${e instanceof Error ? e.message : e}`);\n }\n if (decodedKey.length > this._MAX_LENGTH) {\n throw new Error(`Attribute key exceeds the maximum length of ${this._MAX_LENGTH} characters: \"${decodedKey}\".`);\n }\n if (decodedValue.length > this._MAX_LENGTH) {\n throw new Error(`Attribute value exceeds the maximum length of ${this._MAX_LENGTH} characters for key \"${decodedKey}\".`);\n }\n attributes[decodedKey] = decodedValue;\n }\n return attributes;\n }\n}\nexports.envDetector = new EnvDetector();\n//# sourceMappingURL=EnvDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_WEBENGINE_VERSION = exports.ATTR_WEBENGINE_NAME = exports.ATTR_WEBENGINE_DESCRIPTION = exports.ATTR_SERVICE_NAMESPACE = exports.ATTR_SERVICE_INSTANCE_ID = exports.ATTR_PROCESS_RUNTIME_VERSION = exports.ATTR_PROCESS_RUNTIME_NAME = exports.ATTR_PROCESS_RUNTIME_DESCRIPTION = exports.ATTR_PROCESS_PID = exports.ATTR_PROCESS_OWNER = exports.ATTR_PROCESS_EXECUTABLE_PATH = exports.ATTR_PROCESS_EXECUTABLE_NAME = exports.ATTR_PROCESS_COMMAND_ARGS = exports.ATTR_PROCESS_COMMAND = exports.ATTR_OS_VERSION = exports.ATTR_OS_TYPE = exports.ATTR_K8S_POD_NAME = exports.ATTR_K8S_NAMESPACE_NAME = exports.ATTR_K8S_DEPLOYMENT_NAME = exports.ATTR_K8S_CLUSTER_NAME = exports.ATTR_HOST_TYPE = exports.ATTR_HOST_NAME = exports.ATTR_HOST_IMAGE_VERSION = exports.ATTR_HOST_IMAGE_NAME = exports.ATTR_HOST_IMAGE_ID = exports.ATTR_HOST_ID = exports.ATTR_HOST_ARCH = exports.ATTR_CONTAINER_NAME = exports.ATTR_CONTAINER_IMAGE_TAGS = exports.ATTR_CONTAINER_IMAGE_NAME = exports.ATTR_CONTAINER_ID = exports.ATTR_CLOUD_REGION = exports.ATTR_CLOUD_PROVIDER = exports.ATTR_CLOUD_AVAILABILITY_ZONE = exports.ATTR_CLOUD_ACCOUNT_ID = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @example 111111111111\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CLOUD_ACCOUNT_ID = 'cloud.account.id';\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * @example us-east-1c\n *\n * @note Availability zones are called \"zones\" on Alibaba Cloud and Google Cloud.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\n/**\n * Name of the cloud provider.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CLOUD_PROVIDER = 'cloud.provider';\n/**\n * The geographical region the resource is running.\n *\n * @example us-central1\n * @example us-east-1\n *\n * @note Refer to your provider's docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/global-infrastructure/geographies/), [Google Cloud regions](https://cloud.google.com/about/locations), or [Tencent Cloud regions](https://www.tencentcloud.com/document/product/213/6091).\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CLOUD_REGION = 'cloud.region';\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated.\n *\n * @example a3bf90e006b2\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CONTAINER_ID = 'container.id';\n/**\n * Name of the image the container was built on.\n *\n * @example gcr.io/opentelemetry/operator\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CONTAINER_IMAGE_NAME = 'container.image.name';\n/**\n * Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`.\n *\n * @example [\"v1.27.1\", \"3.5.7-0\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CONTAINER_IMAGE_TAGS = 'container.image.tags';\n/**\n * Container name used by container runtime.\n *\n * @example opentelemetry-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_CONTAINER_NAME = 'container.name';\n/**\n * The CPU architecture the host system is running on.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_ARCH = 'host.arch';\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the `machine-id`. See the table below for the sources to use to determine the `machine-id` based on operating system.\n *\n * @example fdbf79e8af94cb7f9e8df36789187052\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_ID = 'host.id';\n/**\n * VM image ID or host OS image ID. For Cloud, this value is from the provider.\n *\n * @example ami-07b06b442921831e5\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_IMAGE_ID = 'host.image.id';\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @example infra-ami-eks-worker-node-7d4ec78312\n * @example CentOS-8-x86_64-1905\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_IMAGE_NAME = 'host.image.name';\n/**\n * The version string of the VM image or host OS as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 0.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_IMAGE_VERSION = 'host.image.version';\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @example opentelemetry-test\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_NAME = 'host.name';\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @example n1-standard-1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_HOST_TYPE = 'host.type';\n/**\n * The name of the cluster.\n *\n * @example opentelemetry-cluster\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_K8S_CLUSTER_NAME = 'k8s.cluster.name';\n/**\n * The name of the Deployment.\n *\n * @example opentelemetry\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\n/**\n * The name of the namespace that the pod is running in.\n *\n * @example default\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\n/**\n * The name of the Pod.\n *\n * @example opentelemetry-pod-autoconf\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_K8S_POD_NAME = 'k8s.pod.name';\n/**\n * The operating system type.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_OS_TYPE = 'os.type';\n/**\n * The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes).\n *\n * @example 14.2.1\n * @example 18.04.1\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_OS_VERSION = 'os.version';\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @example cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_COMMAND = 'process.command';\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @example [\"cmd/otecol\", \"--config=config.yaml\"]\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_COMMAND_ARGS = 'process.command_args';\n/**\n * The name of the process executable. On Linux based systems, this **SHOULD** be set to the base name of the target of `/proc/[pid]/exe`. On Windows, this **SHOULD** be set to the base name of `GetProcessImageFileNameW`.\n *\n * @example otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @example /usr/bin/cmd/otelcol\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\n/**\n * The username of the user that owns the process.\n *\n * @example root\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_OWNER = 'process.owner';\n/**\n * Process identifier (PID).\n *\n * @example 1234\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_PID = 'process.pid';\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @example \"Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name';\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @example \"14.0.2\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\n/**\n * The string ID of the service instance.\n *\n * @example 627cc493-f310-47de-96bd-71410b7dec09\n *\n * @note **MUST** be unique for each instance of the same `service.namespace,service.name` pair (in other words\n * `service.namespace,service.name,service.instance.id` triplet **MUST** be globally unique). The ID helps to\n * distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled\n * service).\n *\n * Implementations, such as SDKs, are recommended to generate a random Version 1 or Version 4 [RFC\n * 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an inherent unique ID as the source of\n * this value if stability is desirable. In that case, the ID **SHOULD** be used as source of a UUID Version 5 and\n * **SHOULD** use the following UUID as the namespace: `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.\n *\n * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is\n * needed. Similar to what can be seen in the man page for the\n * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying\n * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it\n * or not via another resource attribute.\n *\n * For applications running behind an application server (like unicorn), we do not recommend using one identifier\n * for all processes participating in the application. Instead, it's recommended each division (e.g. a worker\n * thread in unicorn) to have its own instance.id.\n *\n * It's not recommended for a Collector to set `service.instance.id` if it can't unambiguously determine the\n * service instance that is generating that telemetry. For instance, creating an UUID based on `pod.name` will\n * likely be wrong, as the Collector might not know from which container within that pod the telemetry originated.\n * However, Collectors can set the `service.instance.id` if they can unambiguously determine the service instance\n * for that telemetry. This is typically the case for scraping receivers, as they know the target address and\n * port.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_SERVICE_INSTANCE_ID = 'service.instance.id';\n/**\n * A namespace for `service.name`.\n *\n * @example Shop\n *\n * @note A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_SERVICE_NAMESPACE = 'service.namespace';\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @example WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_WEBENGINE_DESCRIPTION = 'webengine.description';\n/**\n * The name of the web engine.\n *\n * @example WildFly\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_WEBENGINE_NAME = 'webengine.name';\n/**\n * The version of the web engine.\n *\n * @example 21.0.0\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_WEBENGINE_VERSION = 'webengine.version';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.execAsync = void 0;\nconst child_process = require(\"child_process\");\nconst util = require(\"util\");\nexports.execAsync = util.promisify(child_process.exec);\n//# sourceMappingURL=execAsync.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n try {\n const result = await (0, execAsync_1.execAsync)('ioreg -rd1 -c \"IOPlatformExpertDevice\"');\n const idLine = result.stdout\n .split('\\n')\n .find(line => line.includes('IOPlatformUUID'));\n if (!idLine) {\n return undefined;\n }\n const parts = idLine.split('\" = \"');\n if (parts.length === 2) {\n return parts[1].slice(0, -1);\n }\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-darwin.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst fs_1 = require(\"fs\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n const paths = ['/etc/machine-id', '/var/lib/dbus/machine-id'];\n for (const path of paths) {\n try {\n const result = await fs_1.promises.readFile(path, { encoding: 'utf8' });\n return result.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n }\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-linux.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst fs_1 = require(\"fs\");\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n try {\n const result = await fs_1.promises.readFile('/etc/hostid', { encoding: 'utf8' });\n return result.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n try {\n const result = await (0, execAsync_1.execAsync)('kenv -q smbios.system.uuid');\n return result.stdout.trim();\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-bsd.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst process = require(\"process\");\nconst execAsync_1 = require(\"./execAsync\");\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n const args = 'QUERY HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Cryptography /v MachineGuid';\n let command = '%windir%\\\\System32\\\\REG.exe';\n if (process.arch === 'ia32' && 'PROCESSOR_ARCHITEW6432' in process.env) {\n command = '%windir%\\\\sysnative\\\\cmd.exe /c ' + command;\n }\n try {\n const result = await (0, execAsync_1.execAsync)(`${command} ${args}`);\n const parts = result.stdout.split('REG_SZ');\n if (parts.length === 2) {\n return parts[1].trim();\n }\n }\n catch (e) {\n api_1.diag.debug(`error reading machine id: ${e}`);\n }\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-win.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nasync function getMachineId() {\n api_1.diag.debug('could not read machine-id: unsupported platform');\n return undefined;\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId-unsupported.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMachineId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst process = require(\"process\");\nlet getMachineIdImpl;\nasync function getMachineId() {\n if (!getMachineIdImpl) {\n switch (process.platform) {\n case 'darwin':\n getMachineIdImpl = (await import('./getMachineId-darwin.js'))\n .getMachineId;\n break;\n case 'linux':\n getMachineIdImpl = (await import('./getMachineId-linux.js'))\n .getMachineId;\n break;\n case 'freebsd':\n getMachineIdImpl = (await import('./getMachineId-bsd.js')).getMachineId;\n break;\n case 'win32':\n getMachineIdImpl = (await import('./getMachineId-win.js')).getMachineId;\n break;\n default:\n getMachineIdImpl = (await import('./getMachineId-unsupported.js'))\n .getMachineId;\n break;\n }\n }\n return getMachineIdImpl();\n}\nexports.getMachineId = getMachineId;\n//# sourceMappingURL=getMachineId.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeType = exports.normalizeArch = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nconst normalizeArch = (nodeArchString) => {\n // Maps from https://nodejs.org/api/os.html#osarch to arch values in spec:\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md\n switch (nodeArchString) {\n case 'arm':\n return 'arm32';\n case 'ppc':\n return 'ppc32';\n case 'x64':\n return 'amd64';\n default:\n return nodeArchString;\n }\n};\nexports.normalizeArch = normalizeArch;\nconst normalizeType = (nodePlatform) => {\n // Maps from https://nodejs.org/api/os.html#osplatform to arch values in spec:\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/os.md\n switch (nodePlatform) {\n case 'sunos':\n return 'solaris';\n case 'win32':\n return 'windows';\n default:\n return nodePlatform;\n }\n};\nexports.normalizeType = normalizeType;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hostDetector = void 0;\nconst semconv_1 = require(\"../../../semconv\");\nconst os_1 = require(\"os\");\nconst getMachineId_1 = require(\"./machine-id/getMachineId\");\nconst utils_1 = require(\"./utils\");\n/**\n * HostDetector detects the resources related to the host current process is\n * running on. Currently only non-cloud-based attributes are included.\n */\nclass HostDetector {\n detect(_config) {\n const attributes = {\n [semconv_1.ATTR_HOST_NAME]: (0, os_1.hostname)(),\n [semconv_1.ATTR_HOST_ARCH]: (0, utils_1.normalizeArch)((0, os_1.arch)()),\n [semconv_1.ATTR_HOST_ID]: (0, getMachineId_1.getMachineId)(),\n };\n return { attributes };\n }\n}\nexports.hostDetector = new HostDetector();\n//# sourceMappingURL=HostDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.osDetector = void 0;\nconst semconv_1 = require(\"../../../semconv\");\nconst os_1 = require(\"os\");\nconst utils_1 = require(\"./utils\");\n/**\n * OSDetector detects the resources related to the operating system (OS) on\n * which the process represented by this resource is running.\n */\nclass OSDetector {\n detect(_config) {\n const attributes = {\n [semconv_1.ATTR_OS_TYPE]: (0, utils_1.normalizeType)((0, os_1.platform)()),\n [semconv_1.ATTR_OS_VERSION]: (0, os_1.release)(),\n };\n return { attributes };\n }\n}\nexports.osDetector = new OSDetector();\n//# sourceMappingURL=OSDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.processDetector = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst semconv_1 = require(\"../../../semconv\");\nconst os = require(\"os\");\n/**\n * ProcessDetector will be used to detect the resources related current process running\n * and being instrumented from the NodeJS Process module.\n */\nclass ProcessDetector {\n detect(_config) {\n const attributes = {\n [semconv_1.ATTR_PROCESS_PID]: process.pid,\n [semconv_1.ATTR_PROCESS_EXECUTABLE_NAME]: process.title,\n [semconv_1.ATTR_PROCESS_EXECUTABLE_PATH]: process.execPath,\n [semconv_1.ATTR_PROCESS_COMMAND_ARGS]: [\n process.argv[0],\n ...process.execArgv,\n ...process.argv.slice(1),\n ],\n [semconv_1.ATTR_PROCESS_RUNTIME_VERSION]: process.versions.node,\n [semconv_1.ATTR_PROCESS_RUNTIME_NAME]: 'nodejs',\n [semconv_1.ATTR_PROCESS_RUNTIME_DESCRIPTION]: 'Node.js',\n };\n if (process.argv.length > 1) {\n attributes[semconv_1.ATTR_PROCESS_COMMAND] = process.argv[1];\n }\n try {\n const userInfo = os.userInfo();\n attributes[semconv_1.ATTR_PROCESS_OWNER] = userInfo.username;\n }\n catch (e) {\n api_1.diag.debug(`error obtaining process owner: ${e}`);\n }\n return { attributes };\n }\n}\nexports.processDetector = new ProcessDetector();\n//# sourceMappingURL=ProcessDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetector = void 0;\nconst semconv_1 = require(\"../../../semconv\");\nconst crypto_1 = require(\"crypto\");\n/**\n * ServiceInstanceIdDetector detects the resources related to the service instance ID.\n */\nclass ServiceInstanceIdDetector {\n detect(_config) {\n return {\n attributes: {\n [semconv_1.ATTR_SERVICE_INSTANCE_ID]: (0, crypto_1.randomUUID)(),\n },\n };\n }\n}\n/**\n * @experimental\n */\nexports.serviceInstanceIdDetector = new ServiceInstanceIdDetector();\n//# sourceMappingURL=ServiceInstanceIdDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = void 0;\nvar HostDetector_1 = require(\"./HostDetector\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return HostDetector_1.hostDetector; } });\nvar OSDetector_1 = require(\"./OSDetector\");\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return OSDetector_1.osDetector; } });\nvar ProcessDetector_1 = require(\"./ProcessDetector\");\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return ProcessDetector_1.processDetector; } });\nvar ServiceInstanceIdDetector_1 = require(\"./ServiceInstanceIdDetector\");\nObject.defineProperty(exports, \"serviceInstanceIdDetector\", { enumerable: true, get: function () { return ServiceInstanceIdDetector_1.serviceInstanceIdDetector; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return node_1.hostDetector; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return node_1.osDetector; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return node_1.processDetector; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetector\", { enumerable: true, get: function () { return node_1.serviceInstanceIdDetector; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noopDetector = exports.NoopDetector = void 0;\nclass NoopDetector {\n detect() {\n return {\n attributes: {},\n };\n }\n}\nexports.NoopDetector = NoopDetector;\nexports.noopDetector = new NoopDetector();\n//# sourceMappingURL=NoopDetector.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noopDetector = exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = exports.envDetector = void 0;\nvar EnvDetector_1 = require(\"./EnvDetector\");\nObject.defineProperty(exports, \"envDetector\", { enumerable: true, get: function () { return EnvDetector_1.envDetector; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return platform_1.hostDetector; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return platform_1.osDetector; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return platform_1.processDetector; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetector\", { enumerable: true, get: function () { return platform_1.serviceInstanceIdDetector; } });\nvar NoopDetector_1 = require(\"./NoopDetector\");\nObject.defineProperty(exports, \"noopDetector\", { enumerable: true, get: function () { return NoopDetector_1.noopDetector; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultServiceName = exports.emptyResource = exports.defaultResource = exports.resourceFromAttributes = exports.serviceInstanceIdDetector = exports.processDetector = exports.osDetector = exports.hostDetector = exports.envDetector = exports.detectResources = void 0;\nvar detect_resources_1 = require(\"./detect-resources\");\nObject.defineProperty(exports, \"detectResources\", { enumerable: true, get: function () { return detect_resources_1.detectResources; } });\nvar detectors_1 = require(\"./detectors\");\nObject.defineProperty(exports, \"envDetector\", { enumerable: true, get: function () { return detectors_1.envDetector; } });\nObject.defineProperty(exports, \"hostDetector\", { enumerable: true, get: function () { return detectors_1.hostDetector; } });\nObject.defineProperty(exports, \"osDetector\", { enumerable: true, get: function () { return detectors_1.osDetector; } });\nObject.defineProperty(exports, \"processDetector\", { enumerable: true, get: function () { return detectors_1.processDetector; } });\nObject.defineProperty(exports, \"serviceInstanceIdDetector\", { enumerable: true, get: function () { return detectors_1.serviceInstanceIdDetector; } });\nvar ResourceImpl_1 = require(\"./ResourceImpl\");\nObject.defineProperty(exports, \"resourceFromAttributes\", { enumerable: true, get: function () { return ResourceImpl_1.resourceFromAttributes; } });\nObject.defineProperty(exports, \"defaultResource\", { enumerable: true, get: function () { return ResourceImpl_1.defaultResource; } });\nObject.defineProperty(exports, \"emptyResource\", { enumerable: true, get: function () { return ResourceImpl_1.emptyResource; } });\nvar default_service_name_1 = require(\"./default-service-name\");\nObject.defineProperty(exports, \"defaultServiceName\", { enumerable: true, get: function () { return default_service_name_1.defaultServiceName; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExceptionEventName = void 0;\n// Event name definitions\nexports.ExceptionEventName = 'exception';\n//# sourceMappingURL=enums.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanImpl = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst enums_1 = require(\"./enums\");\n/**\n * This class represents a span.\n */\nclass SpanImpl {\n // Below properties are included to implement ReadableSpan for export\n // purposes but are not intended to be written-to directly.\n _spanContext;\n kind;\n parentSpanContext;\n attributes = {};\n links = [];\n events = [];\n startTime;\n resource;\n instrumentationScope;\n _droppedAttributesCount = 0;\n _droppedEventsCount = 0;\n _droppedLinksCount = 0;\n _attributesCount = 0;\n name;\n status = {\n code: api_1.SpanStatusCode.UNSET,\n };\n endTime = [0, 0];\n _ended = false;\n _duration = [-1, -1];\n _spanProcessor;\n _spanLimits;\n _attributeValueLengthLimit;\n _recordEndMetrics;\n _performanceStartTime;\n _performanceOffset;\n _startTimeProvided;\n /**\n * Constructs a new SpanImpl instance.\n */\n constructor(opts) {\n const now = Date.now();\n this._spanContext = opts.spanContext;\n this._performanceStartTime = core_1.otperformance.now();\n this._performanceOffset =\n now - (this._performanceStartTime + core_1.otperformance.timeOrigin);\n this._startTimeProvided = opts.startTime != null;\n this._spanLimits = opts.spanLimits;\n this._attributeValueLengthLimit =\n this._spanLimits.attributeValueLengthLimit ?? 0;\n this._spanProcessor = opts.spanProcessor;\n this.name = opts.name;\n this.parentSpanContext = opts.parentSpanContext;\n this.kind = opts.kind;\n if (opts.links) {\n for (const link of opts.links) {\n this.addLink(link);\n }\n }\n this.startTime = this._getTime(opts.startTime ?? now);\n this.resource = opts.resource;\n this.instrumentationScope = opts.scope;\n this._recordEndMetrics = opts.recordEndMetrics;\n if (opts.attributes != null) {\n this.setAttributes(opts.attributes);\n }\n this._spanProcessor.onStart(this, opts.context);\n }\n spanContext() {\n return this._spanContext;\n }\n setAttribute(key, value) {\n if (value == null || this._isSpanEnded())\n return this;\n if (key.length === 0) {\n api_1.diag.warn(`Invalid attribute key: ${key}`);\n return this;\n }\n if (!(0, core_1.isAttributeValue)(value)) {\n api_1.diag.warn(`Invalid attribute value set for key: ${key}`);\n return this;\n }\n const { attributeCountLimit } = this._spanLimits;\n const isNewKey = !Object.prototype.hasOwnProperty.call(this.attributes, key);\n if (attributeCountLimit !== undefined &&\n this._attributesCount >= attributeCountLimit &&\n isNewKey) {\n this._droppedAttributesCount++;\n return this;\n }\n this.attributes[key] = this._truncateToSize(value);\n if (isNewKey) {\n this._attributesCount++;\n }\n return this;\n }\n setAttributes(attributes) {\n for (const key in attributes) {\n if (Object.prototype.hasOwnProperty.call(attributes, key)) {\n this.setAttribute(key, attributes[key]);\n }\n }\n return this;\n }\n /**\n *\n * @param name Span Name\n * @param [attributesOrStartTime] Span attributes or start time\n * if type is {@type TimeInput} and 3rd param is undefined\n * @param [timeStamp] Specified time stamp for the event\n */\n addEvent(name, attributesOrStartTime, timeStamp) {\n if (this._isSpanEnded())\n return this;\n const { eventCountLimit } = this._spanLimits;\n if (eventCountLimit === 0) {\n api_1.diag.warn('No events allowed.');\n this._droppedEventsCount++;\n return this;\n }\n if (eventCountLimit !== undefined &&\n this.events.length >= eventCountLimit) {\n if (this._droppedEventsCount === 0) {\n api_1.diag.debug('Dropping extra events.');\n }\n this.events.shift();\n this._droppedEventsCount++;\n }\n if ((0, core_1.isTimeInput)(attributesOrStartTime)) {\n if (!(0, core_1.isTimeInput)(timeStamp)) {\n timeStamp = attributesOrStartTime;\n }\n attributesOrStartTime = undefined;\n }\n const sanitized = (0, core_1.sanitizeAttributes)(attributesOrStartTime);\n const { attributePerEventCountLimit } = this._spanLimits;\n const attributes = {};\n let droppedAttributesCount = 0;\n let eventAttributesCount = 0;\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (attributePerEventCountLimit !== undefined &&\n eventAttributesCount >= attributePerEventCountLimit) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal);\n eventAttributesCount++;\n }\n this.events.push({\n name,\n attributes,\n time: this._getTime(timeStamp),\n droppedAttributesCount,\n });\n return this;\n }\n addLink(link) {\n if (this._isSpanEnded())\n return this;\n const { linkCountLimit } = this._spanLimits;\n if (linkCountLimit === 0) {\n this._droppedLinksCount++;\n return this;\n }\n if (linkCountLimit !== undefined && this.links.length >= linkCountLimit) {\n if (this._droppedLinksCount === 0) {\n api_1.diag.debug('Dropping extra links.');\n }\n this.links.shift();\n this._droppedLinksCount++;\n }\n const { attributePerLinkCountLimit } = this._spanLimits;\n const sanitized = (0, core_1.sanitizeAttributes)(link.attributes);\n const attributes = {};\n let droppedAttributesCount = 0;\n let linkAttributesCount = 0;\n for (const attr in sanitized) {\n if (!Object.prototype.hasOwnProperty.call(sanitized, attr)) {\n continue;\n }\n const attrVal = sanitized[attr];\n if (attributePerLinkCountLimit !== undefined &&\n linkAttributesCount >= attributePerLinkCountLimit) {\n droppedAttributesCount++;\n continue;\n }\n attributes[attr] = this._truncateToSize(attrVal);\n linkAttributesCount++;\n }\n const processedLink = { context: link.context };\n if (linkAttributesCount > 0) {\n processedLink.attributes = attributes;\n }\n if (droppedAttributesCount > 0) {\n processedLink.droppedAttributesCount = droppedAttributesCount;\n }\n this.links.push(processedLink);\n return this;\n }\n addLinks(links) {\n for (const link of links) {\n this.addLink(link);\n }\n return this;\n }\n setStatus(status) {\n if (this._isSpanEnded())\n return this;\n if (status.code === api_1.SpanStatusCode.UNSET)\n return this;\n if (this.status.code === api_1.SpanStatusCode.OK)\n return this;\n const newStatus = { code: status.code };\n // When using try-catch, the caught \"error\" is of type `any`. When then assigning `any` to `status.message`,\n // TypeScript will not error. While this can happen during use of any API, it is more common on Span#setStatus()\n // as it's likely used in a catch-block. Therefore, we validate if `status.message` is actually a string, null, or\n // undefined to avoid an incorrect type causing issues downstream.\n if (status.code === api_1.SpanStatusCode.ERROR) {\n if (typeof status.message === 'string') {\n newStatus.message = status.message;\n }\n else if (status.message != null) {\n api_1.diag.warn(`Dropping invalid status.message of type '${typeof status.message}', expected 'string'`);\n }\n }\n this.status = newStatus;\n return this;\n }\n updateName(name) {\n if (this._isSpanEnded())\n return this;\n this.name = name;\n return this;\n }\n end(endTime) {\n if (this._isSpanEnded()) {\n api_1.diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`);\n return;\n }\n this.endTime = this._getTime(endTime);\n this._duration = (0, core_1.hrTimeDuration)(this.startTime, this.endTime);\n if (this._duration[0] < 0) {\n api_1.diag.warn('Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.', this.startTime, this.endTime);\n this.endTime = this.startTime.slice();\n this._duration = [0, 0];\n }\n if (this._droppedEventsCount > 0) {\n api_1.diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`);\n }\n if (this._droppedLinksCount > 0) {\n api_1.diag.warn(`Dropped ${this._droppedLinksCount} links because linkCountLimit reached`);\n }\n if (this._spanProcessor.onEnding) {\n this._spanProcessor.onEnding(this);\n }\n this._recordEndMetrics?.();\n this._ended = true;\n this._spanProcessor.onEnd(this);\n }\n _getTime(inp) {\n if (typeof inp === 'number' && inp <= core_1.otperformance.now()) {\n // must be a performance timestamp\n // apply correction and convert to hrtime\n return (0, core_1.hrTime)(inp + this._performanceOffset);\n }\n if (typeof inp === 'number') {\n return (0, core_1.millisToHrTime)(inp);\n }\n if (inp instanceof Date) {\n return (0, core_1.millisToHrTime)(inp.getTime());\n }\n if ((0, core_1.isTimeInputHrTime)(inp)) {\n return inp;\n }\n if (this._startTimeProvided) {\n // if user provided a time for the start manually\n // we can't use duration to calculate event/end times\n return (0, core_1.millisToHrTime)(Date.now());\n }\n const msDuration = core_1.otperformance.now() - this._performanceStartTime;\n return (0, core_1.addHrTimes)(this.startTime, (0, core_1.millisToHrTime)(msDuration));\n }\n isRecording() {\n return this._ended === false;\n }\n recordException(exception, time) {\n const attributes = {};\n if (typeof exception === 'string') {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE] = exception;\n }\n else if (exception) {\n if (exception.code) {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] = exception.code.toString();\n }\n else if (exception.name) {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] = exception.name;\n }\n if (exception.message) {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE] = exception.message;\n }\n if (exception.stack) {\n attributes[semantic_conventions_1.ATTR_EXCEPTION_STACKTRACE] = exception.stack;\n }\n }\n // these are minimum requirements from spec\n if (attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE] || attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE]) {\n this.addEvent(enums_1.ExceptionEventName, attributes, time);\n }\n else {\n api_1.diag.warn(`Failed to record an exception ${exception}`);\n }\n }\n get duration() {\n return this._duration;\n }\n get ended() {\n return this._ended;\n }\n get droppedAttributesCount() {\n return this._droppedAttributesCount;\n }\n get droppedEventsCount() {\n return this._droppedEventsCount;\n }\n get droppedLinksCount() {\n return this._droppedLinksCount;\n }\n _isSpanEnded() {\n if (this._ended) {\n const error = new Error(`Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`);\n api_1.diag.warn(`Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`, error);\n }\n return this._ended;\n }\n // Utility function to truncate given value within size\n // for value type of string, will truncate to given limit\n // for type of non-string, will return same value\n _truncateToLimitUtil(value, limit) {\n if (value.length <= limit) {\n return value;\n }\n return value.substring(0, limit);\n }\n /**\n * If the given attribute value is of type string and has more characters than given {@code attributeValueLengthLimit} then\n * return string with truncated to {@code attributeValueLengthLimit} characters\n *\n * If the given attribute value is array of strings then\n * return new array of strings with each element truncated to {@code attributeValueLengthLimit} characters\n *\n * Otherwise return same Attribute {@code value}\n *\n * @param value Attribute value\n * @returns truncated attribute value if required, otherwise same value\n */\n _truncateToSize(value) {\n const limit = this._attributeValueLengthLimit;\n // Check limit\n if (limit <= 0) {\n // Negative values are invalid, so do not truncate\n api_1.diag.warn(`Attribute value limit must be positive, got ${limit}`);\n return value;\n }\n // String\n if (typeof value === 'string') {\n return this._truncateToLimitUtil(value, limit);\n }\n // Array of strings\n if (Array.isArray(value)) {\n return value.map(val => typeof val === 'string' ? this._truncateToLimitUtil(val, limit) : val);\n }\n // Other types, no need to apply value length limit\n return value;\n }\n}\nexports.SpanImpl = SpanImpl;\n//# sourceMappingURL=Span.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=Sampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOffSampler = void 0;\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples no traces. */\nclass AlwaysOffSampler {\n shouldSample() {\n return {\n decision: Sampler_1.SamplingDecision.NOT_RECORD,\n };\n }\n toString() {\n return 'AlwaysOffSampler';\n }\n}\nexports.AlwaysOffSampler = AlwaysOffSampler;\n//# sourceMappingURL=AlwaysOffSampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AlwaysOnSampler = void 0;\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples all traces. */\nclass AlwaysOnSampler {\n shouldSample() {\n return {\n decision: Sampler_1.SamplingDecision.RECORD_AND_SAMPLED,\n };\n }\n toString() {\n return 'AlwaysOnSampler';\n }\n}\nexports.AlwaysOnSampler = AlwaysOnSampler;\n//# sourceMappingURL=AlwaysOnSampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParentBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AlwaysOffSampler_1 = require(\"./AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./AlwaysOnSampler\");\n/**\n * A composite sampler that either respects the parent span's sampling decision\n * or delegates to `delegateSampler` for root spans.\n */\nclass ParentBasedSampler {\n _root;\n _remoteParentSampled;\n _remoteParentNotSampled;\n _localParentSampled;\n _localParentNotSampled;\n constructor(config) {\n this._root = config.root;\n if (!this._root) {\n (0, core_1.globalErrorHandler)(new Error('ParentBasedSampler must have a root sampler configured'));\n this._root = new AlwaysOnSampler_1.AlwaysOnSampler();\n }\n this._remoteParentSampled =\n config.remoteParentSampled ?? new AlwaysOnSampler_1.AlwaysOnSampler();\n this._remoteParentNotSampled =\n config.remoteParentNotSampled ?? new AlwaysOffSampler_1.AlwaysOffSampler();\n this._localParentSampled =\n config.localParentSampled ?? new AlwaysOnSampler_1.AlwaysOnSampler();\n this._localParentNotSampled =\n config.localParentNotSampled ?? new AlwaysOffSampler_1.AlwaysOffSampler();\n }\n shouldSample(context, traceId, spanName, spanKind, attributes, links) {\n const parentContext = api_1.trace.getSpanContext(context);\n if (!parentContext || !(0, api_1.isSpanContextValid)(parentContext)) {\n return this._root.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n if (parentContext.isRemote) {\n if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n return this._remoteParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n return this._remoteParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n if (parentContext.traceFlags & api_1.TraceFlags.SAMPLED) {\n return this._localParentSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n return this._localParentNotSampled.shouldSample(context, traceId, spanName, spanKind, attributes, links);\n }\n toString() {\n return `ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`;\n }\n}\nexports.ParentBasedSampler = ParentBasedSampler;\n//# sourceMappingURL=ParentBasedSampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceIdRatioBasedSampler = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst Sampler_1 = require(\"../Sampler\");\n/** Sampler that samples a given fraction of traces based of trace id deterministically. */\nclass TraceIdRatioBasedSampler {\n _ratio;\n _upperBound;\n constructor(ratio = 0) {\n this._ratio = this._normalize(ratio);\n this._upperBound = Math.floor(this._ratio * 0xffffffff);\n }\n shouldSample(context, traceId) {\n return {\n decision: (0, api_1.isValidTraceId)(traceId) && this._accumulate(traceId) < this._upperBound\n ? Sampler_1.SamplingDecision.RECORD_AND_SAMPLED\n : Sampler_1.SamplingDecision.NOT_RECORD,\n };\n }\n toString() {\n return `TraceIdRatioBased{${this._ratio}}`;\n }\n _normalize(ratio) {\n if (typeof ratio !== 'number' || isNaN(ratio))\n return 0;\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio;\n }\n _accumulate(traceId) {\n let accumulation = 0;\n for (let i = 0; i < traceId.length / 8; i++) {\n const pos = i * 8;\n const part = parseInt(traceId.slice(pos, pos + 8), 16);\n accumulation = (accumulation ^ part) >>> 0;\n }\n return accumulation;\n }\n}\nexports.TraceIdRatioBasedSampler = TraceIdRatioBasedSampler;\n//# sourceMappingURL=TraceIdRatioBasedSampler.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildSamplerFromEnv = exports.loadDefaultConfig = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AlwaysOffSampler_1 = require(\"./sampler/AlwaysOffSampler\");\nconst AlwaysOnSampler_1 = require(\"./sampler/AlwaysOnSampler\");\nconst ParentBasedSampler_1 = require(\"./sampler/ParentBasedSampler\");\nconst TraceIdRatioBasedSampler_1 = require(\"./sampler/TraceIdRatioBasedSampler\");\nvar TracesSamplerValues;\n(function (TracesSamplerValues) {\n TracesSamplerValues[\"AlwaysOff\"] = \"always_off\";\n TracesSamplerValues[\"AlwaysOn\"] = \"always_on\";\n TracesSamplerValues[\"ParentBasedAlwaysOff\"] = \"parentbased_always_off\";\n TracesSamplerValues[\"ParentBasedAlwaysOn\"] = \"parentbased_always_on\";\n TracesSamplerValues[\"ParentBasedTraceIdRatio\"] = \"parentbased_traceidratio\";\n TracesSamplerValues[\"TraceIdRatio\"] = \"traceidratio\";\n})(TracesSamplerValues || (TracesSamplerValues = {}));\nconst DEFAULT_RATIO = 1;\n/**\n * Load default configuration. For fields with primitive values, any user-provided\n * value will override the corresponding default value. For fields with\n * non-primitive values (like `spanLimits`), the user-provided value will be\n * used to extend the default value.\n */\n// object needs to be wrapped in this function and called when needed otherwise\n// envs are parsed before tests are ran - causes tests using these envs to fail\nfunction loadDefaultConfig() {\n return {\n sampler: buildSamplerFromEnv(),\n forceFlushTimeoutMillis: 30000,\n generalLimits: {\n attributeValueLengthLimit: (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit: (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n },\n spanLimits: {\n attributeValueLengthLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ?? Infinity,\n attributeCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ?? 128,\n linkCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_LINK_COUNT_LIMIT') ?? 128,\n eventCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_EVENT_COUNT_LIMIT') ?? 128,\n attributePerEventCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT') ?? 128,\n attributePerLinkCountLimit: (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT') ?? 128,\n },\n };\n}\nexports.loadDefaultConfig = loadDefaultConfig;\n/**\n * Based on environment, builds a sampler, complies with specification.\n */\nfunction buildSamplerFromEnv() {\n const sampler = (0, core_1.getStringFromEnv)('OTEL_TRACES_SAMPLER') ??\n TracesSamplerValues.ParentBasedAlwaysOn;\n switch (sampler) {\n case TracesSamplerValues.AlwaysOn:\n return new AlwaysOnSampler_1.AlwaysOnSampler();\n case TracesSamplerValues.AlwaysOff:\n return new AlwaysOffSampler_1.AlwaysOffSampler();\n case TracesSamplerValues.ParentBasedAlwaysOn:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new AlwaysOnSampler_1.AlwaysOnSampler(),\n });\n case TracesSamplerValues.ParentBasedAlwaysOff:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new AlwaysOffSampler_1.AlwaysOffSampler(),\n });\n case TracesSamplerValues.TraceIdRatio:\n return new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());\n case TracesSamplerValues.ParentBasedTraceIdRatio:\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv()),\n });\n default:\n api_1.diag.error(`OTEL_TRACES_SAMPLER value \"${sampler}\" invalid, defaulting to \"${TracesSamplerValues.ParentBasedAlwaysOn}\".`);\n return new ParentBasedSampler_1.ParentBasedSampler({\n root: new AlwaysOnSampler_1.AlwaysOnSampler(),\n });\n }\n}\nexports.buildSamplerFromEnv = buildSamplerFromEnv;\nfunction getSamplerProbabilityFromEnv() {\n const probability = (0, core_1.getNumberFromEnv)('OTEL_TRACES_SAMPLER_ARG');\n if (probability == null) {\n api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to ${DEFAULT_RATIO}.`);\n return DEFAULT_RATIO;\n }\n if (probability < 0 || probability > 1) {\n api_1.diag.error(`OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to ${DEFAULT_RATIO}.`);\n return DEFAULT_RATIO;\n }\n return probability;\n}\n//# sourceMappingURL=config.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reconfigureLimits = exports.mergeConfig = exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = void 0;\nconst config_1 = require(\"./config\");\nconst core_1 = require(\"@opentelemetry/core\");\nexports.DEFAULT_ATTRIBUTE_COUNT_LIMIT = 128;\nexports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT = Infinity;\n/**\n * Function to merge Default configuration (as specified in './config') with\n * user provided configurations.\n */\nfunction mergeConfig(userConfig) {\n const perInstanceDefaults = {\n sampler: (0, config_1.buildSamplerFromEnv)(),\n };\n const DEFAULT_CONFIG = (0, config_1.loadDefaultConfig)();\n const target = Object.assign({}, DEFAULT_CONFIG, perInstanceDefaults, userConfig);\n target.generalLimits = Object.assign({}, DEFAULT_CONFIG.generalLimits, userConfig.generalLimits || {});\n target.spanLimits = Object.assign({}, DEFAULT_CONFIG.spanLimits, userConfig.spanLimits || {});\n return target;\n}\nexports.mergeConfig = mergeConfig;\n/**\n * When general limits are provided and model specific limits are not,\n * configures the model specific limits by using the values from the general ones.\n * @param userConfig User provided tracer configuration\n */\nfunction reconfigureLimits(userConfig) {\n const spanLimits = Object.assign({}, userConfig.spanLimits);\n /**\n * Reassign span attribute count limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeCountLimit =\n userConfig.spanLimits?.attributeCountLimit ??\n userConfig.generalLimits?.attributeCountLimit ??\n (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT') ??\n (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_COUNT_LIMIT') ??\n exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT;\n /**\n * Reassign span attribute value length limit to use first non null value defined by user or use default value\n */\n spanLimits.attributeValueLengthLimit =\n userConfig.spanLimits?.attributeValueLengthLimit ??\n userConfig.generalLimits?.attributeValueLengthLimit ??\n (0, core_1.getNumberFromEnv)('OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n (0, core_1.getNumberFromEnv)('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT') ??\n exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT;\n return Object.assign({}, userConfig, { spanLimits });\n}\nexports.reconfigureLimits = reconfigureLimits;\n//# sourceMappingURL=utility.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchSpanProcessorBase = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Implementation of the {@link SpanProcessor} that batches spans exported by\n * the SDK then pushes them to the exporter pipeline.\n */\nclass BatchSpanProcessorBase {\n _maxExportBatchSize;\n _maxQueueSize;\n _scheduledDelayMillis;\n _exportTimeoutMillis;\n _exporter;\n _isExporting = false;\n _finishedSpans = [];\n _timer;\n _shutdownOnce;\n _droppedSpansCount = 0;\n constructor(exporter, config) {\n this._exporter = exporter;\n this._maxExportBatchSize =\n typeof config?.maxExportBatchSize === 'number'\n ? config.maxExportBatchSize\n : ((0, core_1.getNumberFromEnv)('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512);\n this._maxQueueSize =\n typeof config?.maxQueueSize === 'number'\n ? config.maxQueueSize\n : ((0, core_1.getNumberFromEnv)('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048);\n this._scheduledDelayMillis =\n typeof config?.scheduledDelayMillis === 'number'\n ? config.scheduledDelayMillis\n : ((0, core_1.getNumberFromEnv)('OTEL_BSP_SCHEDULE_DELAY') ?? 5000);\n this._exportTimeoutMillis =\n typeof config?.exportTimeoutMillis === 'number'\n ? config.exportTimeoutMillis\n : ((0, core_1.getNumberFromEnv)('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000);\n this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n if (this._maxExportBatchSize > this._maxQueueSize) {\n api_1.diag.warn('BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize');\n this._maxExportBatchSize = this._maxQueueSize;\n }\n }\n forceFlush() {\n if (this._shutdownOnce.isCalled) {\n return this._shutdownOnce.promise;\n }\n return this._flushAll();\n }\n // does nothing.\n onStart(_span, _parentContext) { }\n onEnd(span) {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) {\n return;\n }\n this._addToBuffer(span);\n }\n shutdown() {\n return this._shutdownOnce.call();\n }\n _shutdown() {\n return Promise.resolve()\n .then(() => {\n return this.onShutdown();\n })\n .then(() => {\n return this._flushAll();\n })\n .then(() => {\n return this._exporter.shutdown();\n });\n }\n /** Add a span in the buffer. */\n _addToBuffer(span) {\n if (this._finishedSpans.length >= this._maxQueueSize) {\n // limit reached, drop span\n if (this._droppedSpansCount === 0) {\n api_1.diag.debug('maxQueueSize reached, dropping spans');\n }\n this._droppedSpansCount++;\n return;\n }\n if (this._droppedSpansCount > 0) {\n // some spans were dropped, log once with count of spans dropped\n api_1.diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`);\n this._droppedSpansCount = 0;\n }\n this._finishedSpans.push(span);\n this._maybeStartTimer();\n }\n /**\n * Send all spans to the exporter respecting the batch size limit\n * This function is used only on forceFlush or shutdown,\n * for all other cases _flush should be used\n * */\n _flushAll() {\n return new Promise((resolve, reject) => {\n const promises = [];\n // calculate number of batches\n const count = Math.ceil(this._finishedSpans.length / this._maxExportBatchSize);\n for (let i = 0, j = count; i < j; i++) {\n promises.push(this._flushOneBatch());\n }\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(reject);\n });\n }\n _flushOneBatch() {\n this._clearTimer();\n if (this._finishedSpans.length === 0) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n // don't wait anymore for export, this way the next batch can start\n reject(new Error('Timeout'));\n }, this._exportTimeoutMillis);\n // prevent downstream exporter calls from generating spans\n api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), () => {\n // Reset the finished spans buffer here because the next invocations of the _flush method\n // could pass the same finished spans to the exporter if the buffer is cleared\n // outside the execution of this callback.\n let spans;\n if (this._finishedSpans.length <= this._maxExportBatchSize) {\n spans = this._finishedSpans;\n this._finishedSpans = [];\n }\n else {\n spans = this._finishedSpans.splice(0, this._maxExportBatchSize);\n }\n const doExport = () => this._exporter.export(spans, result => {\n clearTimeout(timer);\n if (result.code === core_1.ExportResultCode.SUCCESS) {\n resolve();\n }\n else {\n reject(result.error ??\n new Error('BatchSpanProcessor: span export failed'));\n }\n });\n let pendingResources = null;\n for (let i = 0, len = spans.length; i < len; i++) {\n const span = spans[i];\n if (span.resource.asyncAttributesPending &&\n span.resource.waitForAsyncAttributes) {\n pendingResources ??= [];\n pendingResources.push(span.resource.waitForAsyncAttributes());\n }\n }\n // Avoid scheduling a promise to make the behavior more predictable and easier to test\n if (pendingResources === null) {\n doExport();\n }\n else {\n Promise.all(pendingResources).then(doExport, err => {\n (0, core_1.globalErrorHandler)(err);\n reject(err);\n });\n }\n });\n });\n }\n _maybeStartTimer() {\n if (this._isExporting)\n return;\n const flush = () => {\n this._isExporting = true;\n this._flushOneBatch()\n .finally(() => {\n this._isExporting = false;\n if (this._finishedSpans.length > 0) {\n this._clearTimer();\n this._maybeStartTimer();\n }\n })\n .catch(e => {\n this._isExporting = false;\n (0, core_1.globalErrorHandler)(e);\n });\n };\n // we only wait if the queue doesn't have enough elements yet\n if (this._finishedSpans.length >= this._maxExportBatchSize) {\n return flush();\n }\n if (this._timer !== undefined)\n return;\n this._timer = setTimeout(() => flush(), this._scheduledDelayMillis);\n // depending on runtime, this may be a 'number' or NodeJS.Timeout\n if (typeof this._timer !== 'number') {\n this._timer.unref();\n }\n }\n _clearTimer() {\n if (this._timer !== undefined) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n }\n}\nexports.BatchSpanProcessorBase = BatchSpanProcessorBase;\n//# sourceMappingURL=BatchSpanProcessorBase.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BatchSpanProcessor = void 0;\nconst BatchSpanProcessorBase_1 = require(\"../../../export/BatchSpanProcessorBase\");\nclass BatchSpanProcessor extends BatchSpanProcessorBase_1.BatchSpanProcessorBase {\n onShutdown() { }\n}\nexports.BatchSpanProcessor = BatchSpanProcessor;\n//# sourceMappingURL=BatchSpanProcessor.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = void 0;\nconst SPAN_ID_BYTES = 8;\nconst TRACE_ID_BYTES = 16;\nclass RandomIdGenerator {\n /**\n * Returns a random 16-byte trace ID formatted/encoded as a 32 lowercase hex\n * characters corresponding to 128 bits.\n */\n generateTraceId = getIdGenerator(TRACE_ID_BYTES);\n /**\n * Returns a random 8-byte span ID formatted/encoded as a 16 lowercase hex\n * characters corresponding to 64 bits.\n */\n generateSpanId = getIdGenerator(SPAN_ID_BYTES);\n}\nexports.RandomIdGenerator = RandomIdGenerator;\nconst SHARED_BUFFER = Buffer.allocUnsafe(TRACE_ID_BYTES);\nfunction getIdGenerator(bytes) {\n return function generateId() {\n for (let i = 0; i < bytes / 4; i++) {\n // unsigned right shift drops decimal part of the number\n // it is required because if a number between 2**32 and 2**32 - 1 is generated, an out of range error is thrown by writeUInt32BE\n SHARED_BUFFER.writeUInt32BE((Math.random() * 2 ** 32) >>> 0, i * 4);\n }\n // If buffer is all 0, set the last byte to 1 to guarantee a valid w3c id is generated\n for (let i = 0; i < bytes; i++) {\n if (SHARED_BUFFER[i] > 0) {\n break;\n }\n else if (i === bytes - 1) {\n SHARED_BUFFER[bytes - 1] = 1;\n }\n }\n return SHARED_BUFFER.toString('hex', 0, bytes);\n };\n}\n//# sourceMappingURL=RandomIdGenerator.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = exports.BatchSpanProcessor = void 0;\nvar BatchSpanProcessor_1 = require(\"./export/BatchSpanProcessor\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return BatchSpanProcessor_1.BatchSpanProcessor; } });\nvar RandomIdGenerator_1 = require(\"./RandomIdGenerator\");\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return RandomIdGenerator_1.RandomIdGenerator; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomIdGenerator = exports.BatchSpanProcessor = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return node_1.BatchSpanProcessor; } });\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return node_1.RandomIdGenerator; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_OTEL_SDK_SPAN_STARTED = exports.METRIC_OTEL_SDK_SPAN_LIVE = exports.ATTR_OTEL_SPAN_SAMPLING_RESULT = exports.ATTR_OTEL_SPAN_PARENT_ORIGIN = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Determines whether the span has a parent span, and if so, [whether it is a remote parent](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote)\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_OTEL_SPAN_PARENT_ORIGIN = 'otel.span.parent.origin';\n/**\n * The result value of the sampler for this span\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_OTEL_SPAN_SAMPLING_RESULT = 'otel.span.sampling_result';\n/**\n * The number of created spans with `recording=true` for which the end operation has not been called yet.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_OTEL_SDK_SPAN_LIVE = 'otel.sdk.span.live';\n/**\n * The number of created spans.\n *\n * @note Implementations **MUST** record this metric for all spans, even for non-recording ones.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_OTEL_SDK_SPAN_STARTED = 'otel.sdk.span.started';\n//# sourceMappingURL=semconv.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TracerMetrics = void 0;\nconst Sampler_1 = require(\"./Sampler\");\nconst semconv_1 = require(\"./semconv\");\n/**\n * Generates `otel.sdk.span.*` metrics.\n * https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics/#span-metrics\n */\nclass TracerMetrics {\n startedSpans;\n liveSpans;\n constructor(meter) {\n this.startedSpans = meter.createCounter(semconv_1.METRIC_OTEL_SDK_SPAN_STARTED, {\n unit: '{span}',\n description: 'The number of created spans.',\n });\n this.liveSpans = meter.createUpDownCounter(semconv_1.METRIC_OTEL_SDK_SPAN_LIVE, {\n unit: '{span}',\n description: 'The number of currently live spans.',\n });\n }\n startSpan(parentSpanCtx, samplingDecision) {\n const samplingDecisionStr = samplingDecisionToString(samplingDecision);\n this.startedSpans.add(1, {\n [semconv_1.ATTR_OTEL_SPAN_PARENT_ORIGIN]: parentOrigin(parentSpanCtx),\n [semconv_1.ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n });\n if (samplingDecision === Sampler_1.SamplingDecision.NOT_RECORD) {\n return () => { };\n }\n const liveSpanAttributes = {\n [semconv_1.ATTR_OTEL_SPAN_SAMPLING_RESULT]: samplingDecisionStr,\n };\n this.liveSpans.add(1, liveSpanAttributes);\n return () => {\n this.liveSpans.add(-1, liveSpanAttributes);\n };\n }\n}\nexports.TracerMetrics = TracerMetrics;\nfunction parentOrigin(parentSpanContext) {\n if (!parentSpanContext) {\n return 'none';\n }\n if (parentSpanContext.isRemote) {\n return 'remote';\n }\n return 'local';\n}\nfunction samplingDecisionToString(decision) {\n switch (decision) {\n case Sampler_1.SamplingDecision.RECORD_AND_SAMPLED:\n return 'RECORD_AND_SAMPLE';\n case Sampler_1.SamplingDecision.RECORD:\n return 'RECORD_ONLY';\n case Sampler_1.SamplingDecision.NOT_RECORD:\n return 'DROP';\n }\n}\n//# sourceMappingURL=TracerMetrics.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '2.6.1';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tracer = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst Span_1 = require(\"./Span\");\nconst utility_1 = require(\"./utility\");\nconst platform_1 = require(\"./platform\");\nconst TracerMetrics_1 = require(\"./TracerMetrics\");\nconst version_1 = require(\"./version\");\n/**\n * This class represents a basic tracer.\n */\nclass Tracer {\n _sampler;\n _generalLimits;\n _spanLimits;\n _idGenerator;\n instrumentationScope;\n _resource;\n _spanProcessor;\n _tracerMetrics;\n /**\n * Constructs a new Tracer instance.\n */\n constructor(instrumentationScope, config, resource, spanProcessor) {\n const localConfig = (0, utility_1.mergeConfig)(config);\n this._sampler = localConfig.sampler;\n this._generalLimits = localConfig.generalLimits;\n this._spanLimits = localConfig.spanLimits;\n this._idGenerator = config.idGenerator || new platform_1.RandomIdGenerator();\n this._resource = resource;\n this._spanProcessor = spanProcessor;\n this.instrumentationScope = instrumentationScope;\n const meter = localConfig.meterProvider\n ? localConfig.meterProvider.getMeter('@opentelemetry/sdk-trace', version_1.VERSION)\n : api.createNoopMeter();\n this._tracerMetrics = new TracerMetrics_1.TracerMetrics(meter);\n }\n /**\n * Starts a new Span or returns the default NoopSpan based on the sampling\n * decision.\n */\n startSpan(name, options = {}, context = api.context.active()) {\n // remove span from context in case a root span is requested via options\n if (options.root) {\n context = api.trace.deleteSpan(context);\n }\n const parentSpan = api.trace.getSpan(context);\n if ((0, core_1.isTracingSuppressed)(context)) {\n api.diag.debug('Instrumentation suppressed, returning Noop Span');\n const nonRecordingSpan = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);\n return nonRecordingSpan;\n }\n const parentSpanContext = parentSpan?.spanContext();\n const spanId = this._idGenerator.generateSpanId();\n let validParentSpanContext;\n let traceId;\n let traceState;\n if (!parentSpanContext ||\n !api.trace.isSpanContextValid(parentSpanContext)) {\n // New root span.\n traceId = this._idGenerator.generateTraceId();\n }\n else {\n // New child span.\n traceId = parentSpanContext.traceId;\n traceState = parentSpanContext.traceState;\n validParentSpanContext = parentSpanContext;\n }\n const spanKind = options.kind ?? api.SpanKind.INTERNAL;\n const links = (options.links ?? []).map(link => {\n return {\n context: link.context,\n attributes: (0, core_1.sanitizeAttributes)(link.attributes),\n };\n });\n const attributes = (0, core_1.sanitizeAttributes)(options.attributes);\n // make sampling decision\n const samplingResult = this._sampler.shouldSample(context, traceId, name, spanKind, attributes, links);\n const recordEndMetrics = this._tracerMetrics.startSpan(parentSpanContext, samplingResult.decision);\n traceState = samplingResult.traceState ?? traceState;\n const traceFlags = samplingResult.decision === api.SamplingDecision.RECORD_AND_SAMPLED\n ? api.TraceFlags.SAMPLED\n : api.TraceFlags.NONE;\n const spanContext = { traceId, spanId, traceFlags, traceState };\n if (samplingResult.decision === api.SamplingDecision.NOT_RECORD) {\n api.diag.debug('Recording is off, propagating context in a non-recording span');\n const nonRecordingSpan = api.trace.wrapSpanContext(spanContext);\n return nonRecordingSpan;\n }\n // Set initial span attributes. The attributes object may have been mutated\n // by the sampler, so we sanitize the merged attributes before setting them.\n const initAttributes = (0, core_1.sanitizeAttributes)(Object.assign(attributes, samplingResult.attributes));\n const span = new Span_1.SpanImpl({\n resource: this._resource,\n scope: this.instrumentationScope,\n context,\n spanContext,\n name,\n kind: spanKind,\n links,\n parentSpanContext: validParentSpanContext,\n attributes: initAttributes,\n startTime: options.startTime,\n spanProcessor: this._spanProcessor,\n spanLimits: this._spanLimits,\n recordEndMetrics,\n });\n return span;\n }\n startActiveSpan(name, arg2, arg3, arg4) {\n let opts;\n let ctx;\n let fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n const parentContext = ctx ?? api.context.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = api.trace.setSpan(parentContext, span);\n return api.context.with(contextWithSpanSet, fn, undefined, span);\n }\n /** Returns the active {@link GeneralLimits}. */\n getGeneralLimits() {\n return this._generalLimits;\n }\n /** Returns the active {@link SpanLimits}. */\n getSpanLimits() {\n return this._spanLimits;\n }\n}\nexports.Tracer = Tracer;\n//# sourceMappingURL=Tracer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MultiSpanProcessor = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * Implementation of the {@link SpanProcessor} that simply forwards all\n * received events to a list of {@link SpanProcessor}s.\n */\nclass MultiSpanProcessor {\n _spanProcessors;\n constructor(spanProcessors) {\n this._spanProcessors = spanProcessors;\n }\n forceFlush() {\n const promises = [];\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.forceFlush());\n }\n return new Promise(resolve => {\n Promise.all(promises)\n .then(() => {\n resolve();\n })\n .catch(error => {\n (0, core_1.globalErrorHandler)(error || new Error('MultiSpanProcessor: forceFlush failed'));\n resolve();\n });\n });\n }\n onStart(span, context) {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onStart(span, context);\n }\n }\n onEnding(span) {\n for (const spanProcessor of this._spanProcessors) {\n if (spanProcessor.onEnding) {\n spanProcessor.onEnding(span);\n }\n }\n }\n onEnd(span) {\n for (const spanProcessor of this._spanProcessors) {\n spanProcessor.onEnd(span);\n }\n }\n shutdown() {\n const promises = [];\n for (const spanProcessor of this._spanProcessors) {\n promises.push(spanProcessor.shutdown());\n }\n return new Promise((resolve, reject) => {\n Promise.all(promises).then(() => {\n resolve();\n }, reject);\n });\n }\n}\nexports.MultiSpanProcessor = MultiSpanProcessor;\n//# sourceMappingURL=MultiSpanProcessor.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasicTracerProvider = exports.ForceFlushState = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\nconst resources_1 = require(\"@opentelemetry/resources\");\nconst Tracer_1 = require(\"./Tracer\");\nconst config_1 = require(\"./config\");\nconst MultiSpanProcessor_1 = require(\"./MultiSpanProcessor\");\nconst utility_1 = require(\"./utility\");\nvar ForceFlushState;\n(function (ForceFlushState) {\n ForceFlushState[ForceFlushState[\"resolved\"] = 0] = \"resolved\";\n ForceFlushState[ForceFlushState[\"timeout\"] = 1] = \"timeout\";\n ForceFlushState[ForceFlushState[\"error\"] = 2] = \"error\";\n ForceFlushState[ForceFlushState[\"unresolved\"] = 3] = \"unresolved\";\n})(ForceFlushState = exports.ForceFlushState || (exports.ForceFlushState = {}));\n/**\n * This class represents a basic tracer provider which platform libraries can extend\n */\nclass BasicTracerProvider {\n _config;\n _tracers = new Map();\n _resource;\n _activeSpanProcessor;\n constructor(config = {}) {\n const mergedConfig = (0, core_1.merge)({}, (0, config_1.loadDefaultConfig)(), (0, utility_1.reconfigureLimits)(config));\n this._resource = mergedConfig.resource ?? (0, resources_1.defaultResource)();\n this._config = Object.assign({}, mergedConfig, {\n resource: this._resource,\n });\n const spanProcessors = [];\n if (config.spanProcessors?.length) {\n spanProcessors.push(...config.spanProcessors);\n }\n this._activeSpanProcessor = new MultiSpanProcessor_1.MultiSpanProcessor(spanProcessors);\n }\n getTracer(name, version, options) {\n const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;\n if (!this._tracers.has(key)) {\n this._tracers.set(key, new Tracer_1.Tracer({ name, version, schemaUrl: options?.schemaUrl }, this._config, this._resource, this._activeSpanProcessor));\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._tracers.get(key);\n }\n forceFlush() {\n const timeout = this._config.forceFlushTimeoutMillis;\n const promises = this._activeSpanProcessor['_spanProcessors'].map((spanProcessor) => {\n return new Promise(resolve => {\n let state;\n const timeoutInterval = setTimeout(() => {\n resolve(new Error(`Span processor did not completed within timeout period of ${timeout} ms`));\n state = ForceFlushState.timeout;\n }, timeout);\n spanProcessor\n .forceFlush()\n .then(() => {\n clearTimeout(timeoutInterval);\n if (state !== ForceFlushState.timeout) {\n state = ForceFlushState.resolved;\n resolve(state);\n }\n })\n .catch(error => {\n clearTimeout(timeoutInterval);\n state = ForceFlushState.error;\n resolve(error);\n });\n });\n });\n return new Promise((resolve, reject) => {\n Promise.all(promises)\n .then(results => {\n const errors = results.filter(result => result !== ForceFlushState.resolved);\n if (errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n })\n .catch(error => reject([error]));\n });\n }\n shutdown() {\n return this._activeSpanProcessor.shutdown();\n }\n}\nexports.BasicTracerProvider = BasicTracerProvider;\n//# sourceMappingURL=BasicTracerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleSpanExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * This is implementation of {@link SpanExporter} that prints spans to the\n * console. This class can be used for diagnostic purposes.\n *\n * NOTE: This {@link SpanExporter} is intended for diagnostics use only, output rendered to the console may change at any time.\n */\n/* eslint-disable no-console */\nclass ConsoleSpanExporter {\n /**\n * Export spans.\n * @param spans\n * @param resultCallback\n */\n export(spans, resultCallback) {\n return this._sendSpans(spans, resultCallback);\n }\n /**\n * Shutdown the exporter.\n */\n shutdown() {\n this._sendSpans([]);\n return this.forceFlush();\n }\n /**\n * Exports any pending spans in exporter\n */\n forceFlush() {\n return Promise.resolve();\n }\n /**\n * converts span info into more readable format\n * @param span\n */\n _exportInfo(span) {\n return {\n resource: {\n attributes: span.resource.attributes,\n },\n instrumentationScope: span.instrumentationScope,\n traceId: span.spanContext().traceId,\n parentSpanContext: span.parentSpanContext,\n traceState: span.spanContext().traceState?.serialize(),\n name: span.name,\n id: span.spanContext().spanId,\n kind: span.kind,\n timestamp: (0, core_1.hrTimeToMicroseconds)(span.startTime),\n duration: (0, core_1.hrTimeToMicroseconds)(span.duration),\n attributes: span.attributes,\n status: span.status,\n events: span.events,\n links: span.links,\n };\n }\n /**\n * Showing spans in console\n * @param spans\n * @param done\n */\n _sendSpans(spans, done) {\n for (const span of spans) {\n console.dir(this._exportInfo(span), { depth: 3 });\n }\n if (done) {\n return done({ code: core_1.ExportResultCode.SUCCESS });\n }\n }\n}\nexports.ConsoleSpanExporter = ConsoleSpanExporter;\n//# sourceMappingURL=ConsoleSpanExporter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InMemorySpanExporter = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * This class can be used for testing purposes. It stores the exported spans\n * in a list in memory that can be retrieved using the `getFinishedSpans()`\n * method.\n */\nclass InMemorySpanExporter {\n _finishedSpans = [];\n /**\n * Indicates if the exporter has been \"shutdown.\"\n * When false, exported spans will not be stored in-memory.\n */\n _stopped = false;\n export(spans, resultCallback) {\n if (this._stopped)\n return resultCallback({\n code: core_1.ExportResultCode.FAILED,\n error: new Error('Exporter has been stopped'),\n });\n this._finishedSpans.push(...spans);\n setTimeout(() => resultCallback({ code: core_1.ExportResultCode.SUCCESS }), 0);\n }\n shutdown() {\n this._stopped = true;\n this._finishedSpans = [];\n return this.forceFlush();\n }\n /**\n * Exports any pending spans in the exporter\n */\n forceFlush() {\n return Promise.resolve();\n }\n reset() {\n this._finishedSpans = [];\n }\n getFinishedSpans() {\n return this._finishedSpans;\n }\n}\nexports.InMemorySpanExporter = InMemorySpanExporter;\n//# sourceMappingURL=InMemorySpanExporter.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SimpleSpanProcessor = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n/**\n * An implementation of the {@link SpanProcessor} that converts the {@link Span}\n * to {@link ReadableSpan} and passes it to the configured exporter.\n *\n * Only spans that are sampled are converted.\n *\n * NOTE: This {@link SpanProcessor} exports every ended span individually instead of batching spans together, which causes significant performance overhead with most exporters. For production use, please consider using the {@link BatchSpanProcessor} instead.\n */\nclass SimpleSpanProcessor {\n _exporter;\n _shutdownOnce;\n _pendingExports;\n constructor(exporter) {\n this._exporter = exporter;\n this._shutdownOnce = new core_1.BindOnceFuture(this._shutdown, this);\n this._pendingExports = new Set();\n }\n async forceFlush() {\n await Promise.all(Array.from(this._pendingExports));\n if (this._exporter.forceFlush) {\n await this._exporter.forceFlush();\n }\n }\n onStart(_span, _parentContext) { }\n onEnd(span) {\n if (this._shutdownOnce.isCalled) {\n return;\n }\n if ((span.spanContext().traceFlags & api_1.TraceFlags.SAMPLED) === 0) {\n return;\n }\n const pendingExport = this._doExport(span).catch(err => (0, core_1.globalErrorHandler)(err));\n // Enqueue this export to the pending list so it can be flushed by the user.\n this._pendingExports.add(pendingExport);\n void pendingExport.finally(() => this._pendingExports.delete(pendingExport));\n }\n async _doExport(span) {\n if (span.resource.asyncAttributesPending) {\n // Ensure resource is fully resolved before exporting.\n await span.resource.waitForAsyncAttributes?.();\n }\n const result = await core_1.internal._export(this._exporter, [span]);\n if (result.code !== core_1.ExportResultCode.SUCCESS) {\n throw (result.error ??\n new Error(`SimpleSpanProcessor: span export failed (status ${result})`));\n }\n }\n shutdown() {\n return this._shutdownOnce.call();\n }\n _shutdown() {\n return this._exporter.shutdown();\n }\n}\nexports.SimpleSpanProcessor = SimpleSpanProcessor;\n//# sourceMappingURL=SimpleSpanProcessor.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopSpanProcessor = void 0;\n/** No-op implementation of SpanProcessor */\nclass NoopSpanProcessor {\n onStart(_span, _context) { }\n onEnd(_span) { }\n shutdown() {\n return Promise.resolve();\n }\n forceFlush() {\n return Promise.resolve();\n }\n}\nexports.NoopSpanProcessor = NoopSpanProcessor;\n//# sourceMappingURL=NoopSpanProcessor.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = exports.TraceIdRatioBasedSampler = exports.ParentBasedSampler = exports.AlwaysOnSampler = exports.AlwaysOffSampler = exports.NoopSpanProcessor = exports.SimpleSpanProcessor = exports.InMemorySpanExporter = exports.ConsoleSpanExporter = exports.RandomIdGenerator = exports.BatchSpanProcessor = exports.BasicTracerProvider = void 0;\nvar BasicTracerProvider_1 = require(\"./BasicTracerProvider\");\nObject.defineProperty(exports, \"BasicTracerProvider\", { enumerable: true, get: function () { return BasicTracerProvider_1.BasicTracerProvider; } });\nvar platform_1 = require(\"./platform\");\nObject.defineProperty(exports, \"BatchSpanProcessor\", { enumerable: true, get: function () { return platform_1.BatchSpanProcessor; } });\nObject.defineProperty(exports, \"RandomIdGenerator\", { enumerable: true, get: function () { return platform_1.RandomIdGenerator; } });\nvar ConsoleSpanExporter_1 = require(\"./export/ConsoleSpanExporter\");\nObject.defineProperty(exports, \"ConsoleSpanExporter\", { enumerable: true, get: function () { return ConsoleSpanExporter_1.ConsoleSpanExporter; } });\nvar InMemorySpanExporter_1 = require(\"./export/InMemorySpanExporter\");\nObject.defineProperty(exports, \"InMemorySpanExporter\", { enumerable: true, get: function () { return InMemorySpanExporter_1.InMemorySpanExporter; } });\nvar SimpleSpanProcessor_1 = require(\"./export/SimpleSpanProcessor\");\nObject.defineProperty(exports, \"SimpleSpanProcessor\", { enumerable: true, get: function () { return SimpleSpanProcessor_1.SimpleSpanProcessor; } });\nvar NoopSpanProcessor_1 = require(\"./export/NoopSpanProcessor\");\nObject.defineProperty(exports, \"NoopSpanProcessor\", { enumerable: true, get: function () { return NoopSpanProcessor_1.NoopSpanProcessor; } });\nvar AlwaysOffSampler_1 = require(\"./sampler/AlwaysOffSampler\");\nObject.defineProperty(exports, \"AlwaysOffSampler\", { enumerable: true, get: function () { return AlwaysOffSampler_1.AlwaysOffSampler; } });\nvar AlwaysOnSampler_1 = require(\"./sampler/AlwaysOnSampler\");\nObject.defineProperty(exports, \"AlwaysOnSampler\", { enumerable: true, get: function () { return AlwaysOnSampler_1.AlwaysOnSampler; } });\nvar ParentBasedSampler_1 = require(\"./sampler/ParentBasedSampler\");\nObject.defineProperty(exports, \"ParentBasedSampler\", { enumerable: true, get: function () { return ParentBasedSampler_1.ParentBasedSampler; } });\nvar TraceIdRatioBasedSampler_1 = require(\"./sampler/TraceIdRatioBasedSampler\");\nObject.defineProperty(exports, \"TraceIdRatioBasedSampler\", { enumerable: true, get: function () { return TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler; } });\nvar Sampler_1 = require(\"./Sampler\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return Sampler_1.SamplingDecision; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.23.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-undici';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UndiciInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst diagch = require(\"diagnostics_channel\");\nconst url_1 = require(\"url\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\n// A combination of https://github.com/elastic/apm-agent-nodejs and\n// https://github.com/gadget-inc/opentelemetry-instrumentations/blob/main/packages/opentelemetry-instrumentation-undici/src/index.ts\nclass UndiciInstrumentation extends instrumentation_1.InstrumentationBase {\n _recordFromReq = new WeakMap();\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n }\n // No need to instrument files/modules\n init() {\n return undefined;\n }\n disable() {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs.length = 0;\n }\n enable() {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n this.subscribeToChannel('undici:request:create', this.onRequestCreated.bind(this));\n this.subscribeToChannel('undici:client:sendHeaders', this.onRequestHeaders.bind(this));\n this.subscribeToChannel('undici:request:headers', this.onResponseHeaders.bind(this));\n this.subscribeToChannel('undici:request:trailers', this.onDone.bind(this));\n this.subscribeToChannel('undici:request:error', this.onError.bind(this));\n }\n _updateMetricInstruments() {\n this._httpClientDurationHistogram = this.meter.createHistogram(semantic_conventions_1.METRIC_HTTP_CLIENT_REQUEST_DURATION, {\n description: 'Measures the duration of outbound HTTP requests.',\n unit: 's',\n valueType: api_1.ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5,\n 7.5, 10,\n ],\n },\n });\n }\n subscribeToChannel(diagnosticChannel, onMessage) {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const [major, minor] = process.version\n .replace('v', '')\n .split('.')\n .map(n => Number(n));\n const useNewSubscribe = major > 18 || (major === 18 && minor >= 19);\n let unsubscribe;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n }\n else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n parseRequestHeaders(request) {\n const result = new Map();\n if (Array.isArray(request.headers)) {\n // headers are an array [k1, v2, k2, v2] (undici v6+)\n // values could be string or a string[] for multiple values\n for (let i = 0; i < request.headers.length; i += 2) {\n const key = request.headers[i];\n const value = request.headers[i + 1];\n // Key should always be a string, but the types don't know that, and let's be safe\n if (typeof key === 'string') {\n result.set(key.toLowerCase(), value);\n }\n }\n }\n else if (typeof request.headers === 'string') {\n // headers are a raw string (undici v5)\n // headers could be repeated in several lines for multiple values\n const headers = request.headers.split('\\r\\n');\n for (const line of headers) {\n if (!line) {\n continue;\n }\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) {\n // Invalid header? Probably this can't happen, but again let's be safe.\n continue;\n }\n const key = line.substring(0, colonIndex).toLowerCase();\n const value = line.substring(colonIndex + 1).trim();\n const allValues = result.get(key);\n if (allValues && Array.isArray(allValues)) {\n allValues.push(value);\n }\n else if (allValues) {\n result.set(key, [allValues, value]);\n }\n else {\n result.set(key, value);\n }\n }\n }\n return result;\n }\n // This is the 1st message we receive for each request (fired after request creation). Here we will\n // create the span and populate some atttributes, then link the span to the request for further\n // span processing\n onRequestCreated({ request }) {\n // Ignore if:\n // - instrumentation is disabled\n // - ignored by config\n // - method is 'CONNECT'\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n const shouldIgnoreReq = (0, instrumentation_1.safeExecuteInTheMiddle)(() => !enabled ||\n request.method === 'CONNECT' ||\n config.ignoreRequestHook?.(request), e => e && this._diag.error('caught ignoreRequestHook error: ', e), true);\n if (shouldIgnoreReq) {\n return;\n }\n const startTime = (0, core_1.hrTime)();\n let requestUrl;\n try {\n requestUrl = new url_1.URL(request.path, request.origin);\n }\n catch (err) {\n this._diag.warn('could not determine url.full:', err);\n // Skip instrumenting this request.\n return;\n }\n const urlScheme = requestUrl.protocol.replace(':', '');\n const requestMethod = this.getRequestMethod(request.method);\n const attributes = {\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD]: requestMethod,\n [semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD_ORIGINAL]: request.method,\n [semantic_conventions_1.ATTR_URL_FULL]: requestUrl.toString(),\n [semantic_conventions_1.ATTR_URL_PATH]: requestUrl.pathname,\n [semantic_conventions_1.ATTR_URL_QUERY]: requestUrl.search,\n [semantic_conventions_1.ATTR_URL_SCHEME]: urlScheme,\n };\n const schemePorts = { https: '443', http: '80' };\n const serverAddress = requestUrl.hostname;\n const serverPort = requestUrl.port || schemePorts[urlScheme];\n attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = serverAddress;\n if (serverPort && !isNaN(Number(serverPort))) {\n attributes[semantic_conventions_1.ATTR_SERVER_PORT] = Number(serverPort);\n }\n // Get user agent from headers\n const headersMap = this.parseRequestHeaders(request);\n const userAgentValues = headersMap.get('user-agent');\n if (userAgentValues) {\n // NOTE: having multiple user agents is not expected so\n // we're going to take last one like `curl` does\n // ref: https://curl.se/docs/manpage.html#-A\n const userAgent = Array.isArray(userAgentValues)\n ? userAgentValues[userAgentValues.length - 1]\n : userAgentValues;\n attributes[semantic_conventions_1.ATTR_USER_AGENT_ORIGINAL] = userAgent;\n }\n // Get attributes from the hook if present\n const hookAttributes = (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.startSpanHook?.(request), e => e && this._diag.error('caught startSpanHook error: ', e), true);\n if (hookAttributes) {\n Object.entries(hookAttributes).forEach(([key, val]) => {\n attributes[key] = val;\n });\n }\n // Check if parent span is required via config and:\n // - if a parent is required but not present, we use a `NoopSpan` to still\n // propagate context without recording it.\n // - create a span otherwise\n const activeCtx = api_1.context.active();\n const currentSpan = api_1.trace.getSpan(activeCtx);\n let span;\n if (config.requireParentforSpans &&\n (!currentSpan || !api_1.trace.isSpanContextValid(currentSpan.spanContext()))) {\n span = api_1.trace.wrapSpanContext(api_1.INVALID_SPAN_CONTEXT);\n }\n else {\n span = this.tracer.startSpan(requestMethod === '_OTHER' ? 'HTTP' : requestMethod, {\n kind: api_1.SpanKind.CLIENT,\n attributes: attributes,\n }, activeCtx);\n }\n // Execute the request hook if defined\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.requestHook?.(span, request), e => e && this._diag.error('caught requestHook error: ', e), true);\n // Context propagation goes last so no hook can tamper\n // the propagation headers\n const requestContext = api_1.trace.setSpan(api_1.context.active(), span);\n const addedHeaders = {};\n api_1.propagation.inject(requestContext, addedHeaders);\n const headerEntries = Object.entries(addedHeaders);\n for (let i = 0; i < headerEntries.length; i++) {\n const [k, v] = headerEntries[i];\n if (typeof request.addHeader === 'function') {\n request.addHeader(k, v);\n }\n else if (typeof request.headers === 'string') {\n request.headers += `${k}: ${v}\\r\\n`;\n }\n else if (Array.isArray(request.headers)) {\n // undici@6.11.0 accidentally, briefly removed `request.addHeader()`.\n request.headers.push(k, v);\n }\n }\n this._recordFromReq.set(request, { span, attributes, startTime });\n }\n // This is the 2nd message we receive for each request. It is fired when connection with\n // the remote is established and about to send the first byte. Here we do have info about the\n // remote address and port so we can populate some `network.*` attributes into the span\n onRequestHeaders({ request, socket }) {\n const record = this._recordFromReq.get(request);\n if (!record) {\n return;\n }\n const config = this.getConfig();\n const { span } = record;\n const { remoteAddress, remotePort } = socket;\n const spanAttributes = {\n [semantic_conventions_1.ATTR_NETWORK_PEER_ADDRESS]: remoteAddress,\n [semantic_conventions_1.ATTR_NETWORK_PEER_PORT]: remotePort,\n };\n // After hooks have been processed (which may modify request headers)\n // we can collect the headers based on the configuration\n if (config.headersToSpanAttributes?.requestHeaders) {\n const headersToAttribs = new Set(config.headersToSpanAttributes.requestHeaders.map(n => n.toLowerCase()));\n const headersMap = this.parseRequestHeaders(request);\n for (const [name, value] of headersMap.entries()) {\n if (headersToAttribs.has(name)) {\n const attrValue = Array.isArray(value) ? value : [value];\n spanAttributes[`http.request.header.${name}`] = attrValue;\n }\n }\n }\n span.setAttributes(spanAttributes);\n }\n // This is the 3rd message we get for each request and it's fired when the server\n // headers are received, body may not be accessible yet.\n // From the response headers we can set the status and content length\n onResponseHeaders({ request, response, }) {\n const record = this._recordFromReq.get(request);\n if (!record) {\n return;\n }\n const { span, attributes } = record;\n const spanAttributes = {\n [semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE]: response.statusCode,\n };\n const config = this.getConfig();\n // Execute the response hook if defined\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => config.responseHook?.(span, { request, response }), e => e && this._diag.error('caught responseHook error: ', e), true);\n if (config.headersToSpanAttributes?.responseHeaders) {\n const headersToAttribs = new Set();\n config.headersToSpanAttributes?.responseHeaders.forEach(name => headersToAttribs.add(name.toLowerCase()));\n for (let idx = 0; idx < response.headers.length; idx = idx + 2) {\n const name = response.headers[idx].toString().toLowerCase();\n const value = response.headers[idx + 1];\n if (headersToAttribs.has(name)) {\n const attrName = `http.response.header.${name}`;\n if (!Object.hasOwn(spanAttributes, attrName)) {\n spanAttributes[attrName] = [value.toString()];\n }\n else {\n spanAttributes[attrName].push(value.toString());\n }\n }\n }\n }\n span.setAttributes(spanAttributes);\n span.setStatus({\n code: response.statusCode >= 400\n ? api_1.SpanStatusCode.ERROR\n : api_1.SpanStatusCode.UNSET,\n });\n record.attributes = Object.assign(attributes, spanAttributes);\n }\n // This is the last event we receive if the request went without any errors\n onDone({ request }) {\n const record = this._recordFromReq.get(request);\n if (!record) {\n return;\n }\n const { span, attributes, startTime } = record;\n // End the span\n span.end();\n this._recordFromReq.delete(request);\n // Record metrics\n this.recordRequestDuration(attributes, startTime);\n }\n // This is the event we get when something is wrong in the request like\n // - invalid options when calling `fetch` global API or any undici method for request\n // - connectivity errors such as unreachable host\n // - requests aborted through an `AbortController.signal`\n // NOTE: server errors are considered valid responses and it's the lib consumer\n // who should deal with that.\n onError({ request, error }) {\n const record = this._recordFromReq.get(request);\n if (!record) {\n return;\n }\n const { span, attributes, startTime } = record;\n // NOTE: in `undici@6.3.0` when request aborted the error type changes from\n // a custom error (`RequestAbortedError`) to a built-in `DOMException` carrying\n // some differences:\n // - `code` is from DOMEXception (ABORT_ERR: 20)\n // - `message` changes\n // - stacktrace is smaller and contains node internal frames\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: error.message,\n });\n span.end();\n this._recordFromReq.delete(request);\n // Record metrics (with the error)\n attributes[semantic_conventions_1.ATTR_ERROR_TYPE] = error.message;\n this.recordRequestDuration(attributes, startTime);\n }\n recordRequestDuration(attributes, startTime) {\n // Time to record metrics\n const metricsAttributes = {};\n // Get the attribs already in span attributes\n const keysToCopy = [\n semantic_conventions_1.ATTR_HTTP_RESPONSE_STATUS_CODE,\n semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD,\n semantic_conventions_1.ATTR_SERVER_ADDRESS,\n semantic_conventions_1.ATTR_SERVER_PORT,\n semantic_conventions_1.ATTR_URL_SCHEME,\n semantic_conventions_1.ATTR_ERROR_TYPE,\n ];\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n // Take the duration and record it\n const durationSeconds = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())) / 1000;\n this._httpClientDurationHistogram.record(durationSeconds, metricsAttributes);\n }\n getRequestMethod(original) {\n const knownMethods = {\n CONNECT: true,\n OPTIONS: true,\n HEAD: true,\n GET: true,\n POST: true,\n PUT: true,\n PATCH: true,\n DELETE: true,\n TRACE: true,\n // QUERY from https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/\n QUERY: true,\n };\n if (original.toUpperCase() in knownMethods) {\n return original.toUpperCase();\n }\n return '_OTHER';\n }\n}\nexports.UndiciInstrumentation = UndiciInstrumentation;\n//# sourceMappingURL=undici.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UndiciInstrumentation = void 0;\nvar undici_1 = require(\"./undici\");\nObject.defineProperty(exports, \"UndiciInstrumentation\", { enumerable: true, get: function () { return undici_1.UndiciInstrumentation; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExpressLayerType = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar ExpressLayerType;\n(function (ExpressLayerType) {\n ExpressLayerType[\"ROUTER\"] = \"router\";\n ExpressLayerType[\"MIDDLEWARE\"] = \"middleware\";\n ExpressLayerType[\"REQUEST_HANDLER\"] = \"request_handler\";\n})(ExpressLayerType = exports.ExpressLayerType || (exports.ExpressLayerType = {}));\n//# sourceMappingURL=ExpressLayerType.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AttributeNames;\n(function (AttributeNames) {\n AttributeNames[\"EXPRESS_TYPE\"] = \"express.type\";\n AttributeNames[\"EXPRESS_NAME\"] = \"express.name\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._LAYERS_STORE_PROPERTY = exports.kLayerPatched = void 0;\n/**\n * This symbol is used to mark express layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexports.kLayerPatched = Symbol('express-layer-patched');\n/**\n * This const define where on the `request` object the Instrumentation will mount the\n * current stack of express layer.\n *\n * It is necessary because express doesn't store the different layers\n * (ie: middleware, router etc) that it called to get to the current layer.\n * Given that, the only way to know the route of a given layer is to\n * store the path of where each previous layer has been mounted.\n *\n * ex: bodyParser > auth middleware > /users router > get /:id\n * in this case the stack would be: [\"/users\", \"/:id\"]\n *\n * ex2: bodyParser > /api router > /v1 router > /users router > get /:id\n * stack: [\"/api\", \"/v1\", \"/users\", \":id\"]\n *\n */\nexports._LAYERS_STORE_PROPERTY = '__ot_middlewares';\n//# sourceMappingURL=internal-types.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getActualMatchedRoute = exports.getConstructedRoute = exports.getLayerPath = exports.asErrorAndMessage = exports.isLayerIgnored = exports.getLayerMetadata = exports.getRouterPath = exports.storeLayerPath = void 0;\nconst ExpressLayerType_1 = require(\"./enums/ExpressLayerType\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst internal_types_1 = require(\"./internal-types\");\n/**\n * Store layers path in the request to be able to construct route later\n * @param request The request where\n * @param [value] the value to push into the array\n */\nconst storeLayerPath = (request, value) => {\n if (Array.isArray(request[internal_types_1._LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, internal_types_1._LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n if (value === undefined)\n return { isLayerPathStored: false };\n request[internal_types_1._LAYERS_STORE_PROPERTY].push(value);\n return { isLayerPathStored: true };\n};\nexports.storeLayerPath = storeLayerPath;\n/**\n * Recursively search the router path from layer stack\n * @param path The path to reconstruct\n * @param layer The layer to reconstruct from\n * @returns The reconstructed path\n */\nconst getRouterPath = (path, layer) => {\n const stackLayer = layer.handle?.stack?.[0];\n if (stackLayer?.route?.path) {\n return `${path}${stackLayer.route.path}`;\n }\n if (stackLayer?.handle?.stack) {\n return (0, exports.getRouterPath)(path, stackLayer);\n }\n return path;\n};\nexports.getRouterPath = getRouterPath;\n/**\n * Parse express layer context to retrieve a name and attributes.\n * @param route The route of the layer\n * @param layer Express layer\n * @param [layerPath] if present, the path on which the layer has been mounted\n */\nconst getLayerMetadata = (route, layer, layerPath) => {\n if (layer.name === 'router') {\n const maybeRouterPath = (0, exports.getRouterPath)('', layer);\n const extractedRouterPath = maybeRouterPath\n ? maybeRouterPath\n : layerPath || route || '/';\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: extractedRouterPath,\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.ROUTER,\n },\n name: `router - ${extractedRouterPath}`,\n };\n }\n else if (layer.name === 'bound dispatch' || layer.name === 'handle') {\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: (route || layerPath) ?? 'request handler',\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.REQUEST_HANDLER,\n },\n name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`,\n };\n }\n else {\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: layer.name,\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\nexports.getLayerMetadata = getLayerMetadata;\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param obj obj to inspect\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (constant, pattern) => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n }\n else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n }\n else if (typeof pattern === 'function') {\n return pattern(constant);\n }\n else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n/**\n * Check whether the given request is ignored by configuration\n * It will not re-throw exceptions from `list` provided by the client\n * @param constant e.g URL of request\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nconst isLayerIgnored = (name, type, config) => {\n if (Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)) {\n return true;\n }\n if (Array.isArray(config?.ignoreLayers) === false)\n return false;\n try {\n for (const pattern of config.ignoreLayers) {\n if (satisfiesPattern(name, pattern)) {\n return true;\n }\n }\n }\n catch (e) {\n /* catch block*/\n }\n return false;\n};\nexports.isLayerIgnored = isLayerIgnored;\n/**\n * Converts a user-provided error value into an error and error message pair\n *\n * @param error - User-provided error value\n * @returns Both an Error or string representation of the value and an error message\n */\nconst asErrorAndMessage = (error) => error instanceof Error\n ? [error, error.message]\n : [String(error), String(error)];\nexports.asErrorAndMessage = asErrorAndMessage;\n/**\n * Extracts the layer path from the route arguments\n *\n * @param args - Arguments of the route\n * @returns The layer path\n */\nconst getLayerPath = (args) => {\n const firstArg = args[0];\n if (Array.isArray(firstArg)) {\n return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(',');\n }\n return extractLayerPathSegment(firstArg);\n};\nexports.getLayerPath = getLayerPath;\nconst extractLayerPathSegment = (arg) => {\n if (typeof arg === 'string') {\n return arg;\n }\n if (arg instanceof RegExp || typeof arg === 'number') {\n return arg.toString();\n }\n return;\n};\nfunction getConstructedRoute(req) {\n const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY])\n ? req[internal_types_1._LAYERS_STORE_PROPERTY]\n : [];\n const meaningfulPaths = layersStore.filter(path => path !== '/' && path !== '/*');\n if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') {\n return '*';\n }\n // Join parts and remove duplicate slashes\n return meaningfulPaths.join('').replace(/\\/{2,}/g, '/');\n}\nexports.getConstructedRoute = getConstructedRoute;\n/**\n * Extracts the actual matched route from Express request for OpenTelemetry instrumentation.\n * Returns the route that should be used as the http.route attribute.\n *\n * @param req - The Express request object with layers store\n * @param layersStoreProperty - The property name where layer paths are stored\n * @returns The matched route string or undefined if no valid route is found\n */\nfunction getActualMatchedRoute(req) {\n const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY])\n ? req[internal_types_1._LAYERS_STORE_PROPERTY]\n : [];\n // If no layers are stored, no route can be determined\n if (layersStore.length === 0) {\n return undefined;\n }\n // Handle root path case - if all paths are root, only return root if originalUrl is also root\n // The layer store also includes root paths in case a non-existing url was requested\n if (layersStore.every(path => path === '/')) {\n return req.originalUrl === '/' ? '/' : undefined;\n }\n const constructedRoute = getConstructedRoute(req);\n if (constructedRoute === '*') {\n return constructedRoute;\n }\n // For RegExp routes or route arrays, return the constructed route\n // This handles the case where the route is defined using RegExp or an array\n if (constructedRoute.includes('/') &&\n (constructedRoute.includes(',') ||\n constructedRoute.includes('\\\\') ||\n constructedRoute.includes('*') ||\n constructedRoute.includes('['))) {\n return constructedRoute;\n }\n // Ensure route starts with '/' if it doesn't already\n const normalizedRoute = constructedRoute.startsWith('/')\n ? constructedRoute\n : `/${constructedRoute}`;\n // Validate that this appears to be a matched route\n // A route is considered matched if:\n // 1. We have a constructed route\n // 2. The original URL matches or starts with our route pattern\n const isValidRoute = normalizedRoute.length > 0 &&\n (req.originalUrl === normalizedRoute ||\n req.originalUrl.startsWith(normalizedRoute) ||\n isRoutePattern(normalizedRoute));\n return isValidRoute ? normalizedRoute : undefined;\n}\nexports.getActualMatchedRoute = getActualMatchedRoute;\n/**\n * Checks if a route contains parameter patterns (e.g., :id, :userId)\n * which are valid even if they don't exactly match the original URL\n */\nfunction isRoutePattern(route) {\n return route.includes(':') || route.includes('*');\n}\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-express';\n//# sourceMappingURL=version.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExpressInstrumentation = void 0;\nconst core_1 = require(\"@opentelemetry/core\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst ExpressLayerType_1 = require(\"./enums/ExpressLayerType\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst internal_types_1 = require(\"./internal-types\");\n/** Express instrumentation for OpenTelemetry */\nclass ExpressInstrumentation extends instrumentation_1.InstrumentationBase {\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n }\n init() {\n return [\n new instrumentation_1.InstrumentationNodeModuleDefinition('express', ['>=4.0.0 <6'], moduleExports => {\n const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype // Express v5\n : moduleExports.Router; // Express v4\n // patch express.Router.route\n if ((0, instrumentation_1.isWrapped)(routerProto.route)) {\n this._unwrap(routerProto, 'route');\n }\n this._wrap(routerProto, 'route', this._getRoutePatch());\n // patch express.Router.use\n if ((0, instrumentation_1.isWrapped)(routerProto.use)) {\n this._unwrap(routerProto, 'use');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._wrap(routerProto, 'use', this._getRouterUsePatch());\n // patch express.Application.use\n if ((0, instrumentation_1.isWrapped)(moduleExports.application.use)) {\n this._unwrap(moduleExports.application, 'use');\n }\n this._wrap(moduleExports.application, 'use', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._getAppUsePatch(isExpressWithRouterPrototype));\n return moduleExports;\n }, moduleExports => {\n if (moduleExports === undefined)\n return;\n const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype\n : moduleExports.Router;\n this._unwrap(routerProto, 'route');\n this._unwrap(routerProto, 'use');\n this._unwrap(moduleExports.application, 'use');\n }),\n ];\n }\n /**\n * Get the patch for Router.route function\n */\n _getRoutePatch() {\n const instrumentation = this;\n return function (original) {\n return function route_trace(...args) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n return route;\n };\n };\n }\n /**\n * Get the patch for Router.use function\n */\n _getRouterUsePatch() {\n const instrumentation = this;\n return function (original) {\n return function use(...args) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n return route;\n };\n };\n }\n /**\n * Get the patch for Application.use function\n */\n _getAppUsePatch(isExpressWithRouterPrototype) {\n const instrumentation = this;\n return function (original) {\n return function use(...args) {\n // If we access app.router in express 4.x we trigger an assertion error.\n // This property existed in v3, was removed in v4 and then re-added in v5.\n const router = isExpressWithRouterPrototype\n ? this.router\n : this._router;\n const route = original.apply(this, args);\n if (router) {\n const layer = router.stack[router.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n }\n return route;\n };\n };\n }\n /** Patch each express layer to create span and propagate context */\n _applyPatch(layer, layerPath) {\n const instrumentation = this;\n // avoid patching multiple times the same layer\n if (layer[internal_types_1.kLayerPatched] === true)\n return;\n layer[internal_types_1.kLayerPatched] = true;\n this._wrap(layer, 'handle', original => {\n // TODO: instrument error handlers\n if (original.length === 4)\n return original;\n const patched = function (req, res) {\n const { isLayerPathStored } = (0, utils_1.storeLayerPath)(req, layerPath);\n const constructedRoute = (0, utils_1.getConstructedRoute)(req);\n const actualMatchedRoute = (0, utils_1.getActualMatchedRoute)(req);\n const attributes = {\n [semantic_conventions_1.ATTR_HTTP_ROUTE]: actualMatchedRoute,\n };\n const metadata = (0, utils_1.getLayerMetadata)(constructedRoute, layer, layerPath);\n const type = metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE];\n const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active());\n if (rpcMetadata?.type === core_1.RPCType.HTTP) {\n rpcMetadata.route = actualMatchedRoute;\n }\n // verify against the config if the layer should be ignored\n if ((0, utils_1.isLayerIgnored)(metadata.name, type, instrumentation.getConfig())) {\n if (type === ExpressLayerType_1.ExpressLayerType.MIDDLEWARE) {\n req[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n }\n return original.apply(this, arguments);\n }\n if (api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n const spanName = instrumentation._getSpanName({\n request: req,\n layerType: type,\n route: constructedRoute,\n }, metadata.name);\n const span = instrumentation.tracer.startSpan(spanName, {\n attributes: Object.assign(attributes, metadata.attributes),\n });\n const parentContext = api_1.context.active();\n let currentContext = api_1.trace.setSpan(parentContext, span);\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => requestHook(span, {\n request: req,\n layerType: type,\n route: constructedRoute,\n }), e => {\n if (e) {\n api_1.diag.error('express instrumentation: request hook failed', e);\n }\n }, true);\n }\n let spanHasEnded = false;\n // TODO: Fix router spans (getRouterPath does not work properly) to\n // have useful names before removing this branch\n if (metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE] ===\n ExpressLayerType_1.ExpressLayerType.ROUTER) {\n span.end();\n spanHasEnded = true;\n currentContext = parentContext;\n }\n // listener for response.on('finish')\n const onResponseFinish = () => {\n if (spanHasEnded === false) {\n spanHasEnded = true;\n span.end();\n }\n };\n // verify we have a callback\n const args = Array.from(arguments);\n const callbackIdx = args.findIndex(arg => typeof arg === 'function');\n if (callbackIdx >= 0) {\n arguments[callbackIdx] = function () {\n // express considers anything but an empty value, \"route\" or \"router\"\n // passed to its callback to be an error\n const maybeError = arguments[0];\n const isError = ![undefined, null, 'route', 'router'].includes(maybeError);\n if (!spanHasEnded && isError) {\n const [error, message] = (0, utils_1.asErrorAndMessage)(maybeError);\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message,\n });\n }\n if (spanHasEnded === false) {\n spanHasEnded = true;\n req.res?.removeListener('finish', onResponseFinish);\n span.end();\n }\n if (!(req.route && isError) && isLayerPathStored) {\n req[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n }\n const callback = args[callbackIdx];\n return api_1.context.bind(parentContext, callback).apply(this, arguments);\n };\n }\n try {\n return api_1.context.bind(currentContext, original).apply(this, arguments);\n }\n catch (anyError) {\n const [error, message] = (0, utils_1.asErrorAndMessage)(anyError);\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message,\n });\n throw anyError;\n }\n finally {\n /**\n * At this point if the callback wasn't called, that means either the\n * layer is asynchronous (so it will call the callback later on) or that\n * the layer directly ends the http response, so we'll hook into the \"finish\"\n * event to handle the later case.\n */\n if (!spanHasEnded) {\n res.once('finish', onResponseFinish);\n }\n }\n };\n // `handle` isn't just a regular function in some cases. It also contains\n // some properties holding metadata and state so we need to proxy them\n // through through patched function\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1950\n // Also some apps/libs do their own patching before OTEL and have these properties\n // in the proptotype. So we use a `for...in` loop to get own properties and also\n // any enumerable prop in the prototype chain\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2271\n for (const key in original) {\n Object.defineProperty(patched, key, {\n get() {\n return original[key];\n },\n set(value) {\n original[key] = value;\n },\n });\n }\n return patched;\n });\n }\n _getSpanName(info, defaultName) {\n const { spanNameHook } = this.getConfig();\n if (!(spanNameHook instanceof Function)) {\n return defaultName;\n }\n try {\n return spanNameHook(info, defaultName) ?? defaultName;\n }\n catch (err) {\n api_1.diag.error('express instrumentation: error calling span name rewrite hook', err);\n return defaultName;\n }\n }\n}\nexports.ExpressInstrumentation = ExpressInstrumentation;\n//# sourceMappingURL=instrumentation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = exports.ExpressLayerType = exports.ExpressInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"ExpressInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.ExpressInstrumentation; } });\nvar ExpressLayerType_1 = require(\"./enums/ExpressLayerType\");\nObject.defineProperty(exports, \"ExpressLayerType\", { enumerable: true, get: function () { return ExpressLayerType_1.ExpressLayerType; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeverityNumber = void 0;\nvar SeverityNumber;\n(function (SeverityNumber) {\n SeverityNumber[SeverityNumber[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n SeverityNumber[SeverityNumber[\"TRACE\"] = 1] = \"TRACE\";\n SeverityNumber[SeverityNumber[\"TRACE2\"] = 2] = \"TRACE2\";\n SeverityNumber[SeverityNumber[\"TRACE3\"] = 3] = \"TRACE3\";\n SeverityNumber[SeverityNumber[\"TRACE4\"] = 4] = \"TRACE4\";\n SeverityNumber[SeverityNumber[\"DEBUG\"] = 5] = \"DEBUG\";\n SeverityNumber[SeverityNumber[\"DEBUG2\"] = 6] = \"DEBUG2\";\n SeverityNumber[SeverityNumber[\"DEBUG3\"] = 7] = \"DEBUG3\";\n SeverityNumber[SeverityNumber[\"DEBUG4\"] = 8] = \"DEBUG4\";\n SeverityNumber[SeverityNumber[\"INFO\"] = 9] = \"INFO\";\n SeverityNumber[SeverityNumber[\"INFO2\"] = 10] = \"INFO2\";\n SeverityNumber[SeverityNumber[\"INFO3\"] = 11] = \"INFO3\";\n SeverityNumber[SeverityNumber[\"INFO4\"] = 12] = \"INFO4\";\n SeverityNumber[SeverityNumber[\"WARN\"] = 13] = \"WARN\";\n SeverityNumber[SeverityNumber[\"WARN2\"] = 14] = \"WARN2\";\n SeverityNumber[SeverityNumber[\"WARN3\"] = 15] = \"WARN3\";\n SeverityNumber[SeverityNumber[\"WARN4\"] = 16] = \"WARN4\";\n SeverityNumber[SeverityNumber[\"ERROR\"] = 17] = \"ERROR\";\n SeverityNumber[SeverityNumber[\"ERROR2\"] = 18] = \"ERROR2\";\n SeverityNumber[SeverityNumber[\"ERROR3\"] = 19] = \"ERROR3\";\n SeverityNumber[SeverityNumber[\"ERROR4\"] = 20] = \"ERROR4\";\n SeverityNumber[SeverityNumber[\"FATAL\"] = 21] = \"FATAL\";\n SeverityNumber[SeverityNumber[\"FATAL2\"] = 22] = \"FATAL2\";\n SeverityNumber[SeverityNumber[\"FATAL3\"] = 23] = \"FATAL3\";\n SeverityNumber[SeverityNumber[\"FATAL4\"] = 24] = \"FATAL4\";\n})(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {}));\n//# sourceMappingURL=LogRecord.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER = exports.NoopLogger = void 0;\nclass NoopLogger {\n emit(_logRecord) { }\n}\nexports.NoopLogger = NoopLogger;\nexports.NOOP_LOGGER = new NoopLogger();\n//# sourceMappingURL=NoopLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = void 0;\nexports.GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\nexports._global = globalThis;\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nfunction makeGetter(requiredVersion, instance, fallback) {\n return (version) => version === requiredVersion ? instance : fallback;\n}\nexports.makeGetter = makeGetter;\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n//# sourceMappingURL=global-utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass NoopLoggerProvider {\n getLogger(_name, _version, _options) {\n return new NoopLogger_1.NoopLogger();\n }\n}\nexports.NoopLoggerProvider = NoopLoggerProvider;\nexports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n//# sourceMappingURL=NoopLoggerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLogger = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass ProxyLogger {\n constructor(provider, name, version, options) {\n this._provider = provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n /**\n * Emit a log record. This method should only be used by log appenders.\n *\n * @param logRecord\n */\n emit(logRecord) {\n this._getLogger().emit(logRecord);\n }\n /**\n * Try to get a logger from the proxy logger provider.\n * If the proxy logger provider has no delegate, return a noop logger.\n */\n _getLogger() {\n if (this._delegate) {\n return this._delegate;\n }\n const logger = this._provider._getDelegateLogger(this.name, this.version, this.options);\n if (!logger) {\n return NoopLogger_1.NOOP_LOGGER;\n }\n this._delegate = logger;\n return this._delegate;\n }\n}\nexports.ProxyLogger = ProxyLogger;\n//# sourceMappingURL=ProxyLogger.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLoggerProvider = void 0;\nconst NoopLoggerProvider_1 = require(\"./NoopLoggerProvider\");\nconst ProxyLogger_1 = require(\"./ProxyLogger\");\nclass ProxyLoggerProvider {\n getLogger(name, version, options) {\n var _a;\n return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger_1.ProxyLogger(this, name, version, options));\n }\n /**\n * Get the delegate logger provider.\n * Used by tests only.\n * @internal\n */\n _getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER;\n }\n /**\n * Set the delegate logger provider\n * @internal\n */\n _setDelegate(delegate) {\n this._delegate = delegate;\n }\n /**\n * @internal\n */\n _getDelegateLogger(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options);\n }\n}\nexports.ProxyLoggerProvider = ProxyLoggerProvider;\n//# sourceMappingURL=ProxyLoggerProvider.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogsAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopLoggerProvider_1 = require(\"../NoopLoggerProvider\");\nconst ProxyLoggerProvider_1 = require(\"../ProxyLoggerProvider\");\nclass LogsAPI {\n constructor() {\n this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n }\n static getInstance() {\n if (!this._instance) {\n this._instance = new LogsAPI();\n }\n return this._instance;\n }\n setGlobalLoggerProvider(provider) {\n if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) {\n return this.getLoggerProvider();\n }\n global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY] = (0, global_utils_1.makeGetter)(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER);\n this._proxyLoggerProvider._setDelegate(provider);\n return provider;\n }\n /**\n * Returns the global logger provider.\n *\n * @returns LoggerProvider\n */\n getLoggerProvider() {\n var _a, _b;\n return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider);\n }\n /**\n * Returns a logger from the global logger provider.\n *\n * @returns Logger\n */\n getLogger(name, version, options) {\n return this.getLoggerProvider().getLogger(name, version, options);\n }\n /** Remove the global logger provider */\n disable() {\n delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY];\n this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n }\n}\nexports.LogsAPI = LogsAPI;\n//# sourceMappingURL=logs.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logs = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = void 0;\nvar LogRecord_1 = require(\"./types/LogRecord\");\nObject.defineProperty(exports, \"SeverityNumber\", { enumerable: true, get: function () { return LogRecord_1.SeverityNumber; } });\nvar NoopLogger_1 = require(\"./NoopLogger\");\nObject.defineProperty(exports, \"NOOP_LOGGER\", { enumerable: true, get: function () { return NoopLogger_1.NOOP_LOGGER; } });\nObject.defineProperty(exports, \"NoopLogger\", { enumerable: true, get: function () { return NoopLogger_1.NoopLogger; } });\nconst logs_1 = require(\"./api/logs\");\nexports.logs = logs_1.LogsAPI.getInstance();\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.disableInstrumentations = exports.enableInstrumentations = void 0;\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nfunction enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) {\n for (let i = 0, j = instrumentations.length; i < j; i++) {\n const instrumentation = instrumentations[i];\n if (tracerProvider) {\n instrumentation.setTracerProvider(tracerProvider);\n }\n if (meterProvider) {\n instrumentation.setMeterProvider(meterProvider);\n }\n if (loggerProvider && instrumentation.setLoggerProvider) {\n instrumentation.setLoggerProvider(loggerProvider);\n }\n // instrumentations have been already enabled during creation\n // so enable only if user prevented that by setting enabled to false\n // this is to prevent double enabling but when calling register all\n // instrumentations should be now enabled\n if (!instrumentation.getConfig().enabled) {\n instrumentation.enable();\n }\n }\n}\nexports.enableInstrumentations = enableInstrumentations;\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nfunction disableInstrumentations(instrumentations) {\n instrumentations.forEach(instrumentation => instrumentation.disable());\n}\nexports.disableInstrumentations = disableInstrumentations;\n//# sourceMappingURL=autoLoaderUtils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerInstrumentations = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst autoLoaderUtils_1 = require(\"./autoLoaderUtils\");\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n * registered\n */\nfunction registerInstrumentations(options) {\n const tracerProvider = options.tracerProvider || api_1.trace.getTracerProvider();\n const meterProvider = options.meterProvider || api_1.metrics.getMeterProvider();\n const loggerProvider = options.loggerProvider || api_logs_1.logs.getLoggerProvider();\n const instrumentations = options.instrumentations?.flat() ?? [];\n (0, autoLoaderUtils_1.enableInstrumentations)(instrumentations, tracerProvider, meterProvider, loggerProvider);\n return () => {\n (0, autoLoaderUtils_1.disableInstrumentations)(instrumentations);\n };\n}\nexports.registerInstrumentations = registerInstrumentations;\n//# sourceMappingURL=autoLoader.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.satisfies = void 0;\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\nconst api_1 = require(\"@opentelemetry/api\");\nconst VERSION_REGEXP = /^(?:v)?(?(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*))(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst RANGE_REGEXP = /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|0|[1-9]\\d*))?)(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n '!=': [-1, 1],\n};\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nfunction satisfies(version, range, options) {\n // Strict semver format check\n if (!_validateVersion(version)) {\n api_1.diag.error(`Invalid version: ${version}`);\n return false;\n }\n // If range is empty, satisfy check succeeds regardless what version is\n if (!range) {\n return true;\n }\n // Cleanup range\n range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n // Parse version\n const parsedVersion = _parseVersion(version);\n if (!parsedVersion) {\n return false;\n }\n const allParsedRanges = [];\n // Check given version whether it satisfies given range expression\n const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options);\n // If check result is OK,\n // do another final check for pre-release, if pre-release check is included by option\n if (checkResult && !options?.includePrerelease) {\n return _doPreleaseCheck(parsedVersion, allParsedRanges);\n }\n return checkResult;\n}\nexports.satisfies = satisfies;\nfunction _validateVersion(version) {\n return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\nfunction _doSatisfies(parsedVersion, range, allParsedRanges, options) {\n if (range.includes('||')) {\n // A version matches a range if and only if\n // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n const ranges = range.trim().split('||');\n for (const r of ranges) {\n if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return true;\n }\n }\n return false;\n }\n else if (range.includes(' - ')) {\n // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n range = replaceHyphen(range, options);\n }\n else if (range.includes(' ')) {\n // Multiple separated ranges and all needs to be satisfied for success\n const ranges = range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ');\n for (const r of ranges) {\n if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n return false;\n }\n }\n return true;\n }\n // Check given parsed version with given range\n return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\nfunction _checkRange(parsedVersion, range, allParsedRanges, options) {\n range = _normalizeRange(range, options);\n if (range.includes(' ')) {\n // If there are multiple ranges separated, satisfy each of them\n return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n }\n else {\n // Validate and parse range\n const parsedRange = _parseRange(range);\n allParsedRanges.push(parsedRange);\n // Check parsed version by parsed range\n return _satisfies(parsedVersion, parsedRange);\n }\n}\nfunction _satisfies(parsedVersion, parsedRange) {\n // If range is invalid, satisfy check fails (no error throw)\n if (parsedRange.invalid) {\n return false;\n }\n // If range is empty or wildcard, satisfy check succeeds regardless what version is\n if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n return true;\n }\n // Compare version segment first\n let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []);\n // If versions segments are equal, compare by pre-release segments\n if (comparisonResult === 0) {\n const versionPrereleaseSegments = parsedVersion.prereleaseSegments || [];\n const rangePrereleaseSegments = parsedRange.prereleaseSegments || [];\n if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n comparisonResult = 0;\n }\n else if (!versionPrereleaseSegments.length &&\n rangePrereleaseSegments.length) {\n comparisonResult = 1;\n }\n else if (versionPrereleaseSegments.length &&\n !rangePrereleaseSegments.length) {\n comparisonResult = -1;\n }\n else {\n comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments);\n }\n }\n // Resolve check result according to comparison operator\n return operatorResMap[parsedRange.op]?.includes(comparisonResult);\n}\nfunction _doPreleaseCheck(parsedVersion, allParsedRanges) {\n if (parsedVersion.prerelease) {\n return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version);\n }\n return true;\n}\nfunction _normalizeRange(range, options) {\n range = range.trim();\n range = replaceCaret(range, options);\n range = replaceTilde(range);\n range = replaceXRange(range, options);\n range = range.trim();\n return range;\n}\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\nfunction _parseVersion(versionString) {\n const match = versionString.match(VERSION_REGEXP);\n if (!match) {\n api_1.diag.error(`Invalid version: ${versionString}`);\n return undefined;\n }\n const version = match.groups.version;\n const prerelease = match.groups.prerelease;\n const build = match.groups.build;\n const versionSegments = version.split('.');\n const prereleaseSegments = prerelease?.split('.');\n return {\n op: undefined,\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n build,\n };\n}\nfunction _parseRange(rangeString) {\n if (!rangeString) {\n return {};\n }\n const match = rangeString.match(RANGE_REGEXP);\n if (!match) {\n api_1.diag.error(`Invalid range: ${rangeString}`);\n return {\n invalid: true,\n };\n }\n let op = match.groups.op;\n const version = match.groups.version;\n const prerelease = match.groups.prerelease;\n const build = match.groups.build;\n const versionSegments = version.split('.');\n const prereleaseSegments = prerelease?.split('.');\n if (op === '==') {\n op = '=';\n }\n return {\n op: op || '=',\n version,\n versionSegments,\n versionSegmentCount: versionSegments.length,\n prerelease,\n prereleaseSegments,\n prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n build,\n };\n}\nfunction _isWildcard(s) {\n return s === '*' || s === 'x' || s === 'X';\n}\nfunction _parseVersionString(v) {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n}\nfunction _normalizeVersionType(a, b) {\n if (typeof a === typeof b) {\n if (typeof a === 'number') {\n return [a, b];\n }\n else if (typeof a === 'string') {\n return [a, b];\n }\n else {\n throw new Error('Version segments can only be strings or numbers');\n }\n }\n else {\n return [String(a), String(b)];\n }\n}\nfunction _compareVersionStrings(v1, v2) {\n if (_isWildcard(v1) || _isWildcard(v2)) {\n return 0;\n }\n const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2));\n if (parsedV1 > parsedV2) {\n return 1;\n }\n else if (parsedV1 < parsedV2) {\n return -1;\n }\n return 0;\n}\nfunction _compareVersionSegments(v1, v2) {\n for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n}\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN = `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:\\\\.(${XRANGEIDENTIFIER})` +\n `(?:${PRERELEASE})?${BUILD}?` +\n `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\nconst HYPHENRANGE = `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp) {\n const r = TILDE_REGEXP;\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n if (isX(M)) {\n ret = '';\n }\n else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n }\n else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n }\n else if (pr) {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp, options) {\n const r = CARET_REGEXP;\n const z = options?.includePrerelease ? '-0' : '';\n return comp.replace(r, (_, M, m, p, pr) => {\n let ret;\n if (isX(M)) {\n ret = '';\n }\n else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n }\n else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n }\n else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n }\n }\n else if (pr) {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n }\n else {\n ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n }\n }\n else {\n ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n }\n }\n else {\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n }\n else {\n ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n }\n }\n else {\n ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n }\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp, options) {\n const r = XRANGE_REGEXP;\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n const xM = isX(M);\n const xm = xM || isX(m);\n const xp = xm || isX(p);\n const anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options?.includePrerelease ? '-0' : '';\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0';\n }\n else {\n // nothing is forbidden\n ret = '*';\n }\n }\n else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n }\n else {\n m = +m + 1;\n p = 0;\n }\n }\n else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n }\n else {\n m = +m + 1;\n }\n }\n if (gtlt === '<') {\n pr = '-0';\n }\n ret = `${gtlt + M}.${m}.${p}${pr}`;\n }\n else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n }\n else if (xp) {\n ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n }\n return ret;\n });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp, options) {\n const r = HYPHENRANGE_REGEXP;\n return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = '';\n }\n else if (isX(fm)) {\n from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n }\n else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n }\n else if (fpr) {\n from = `>=${from}`;\n }\n else {\n from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n }\n if (isX(tM)) {\n to = '';\n }\n else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`;\n }\n else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`;\n }\n else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`;\n }\n else if (options?.includePrerelease) {\n to = `<${tM}.${tm}.${+tp + 1}-0`;\n }\n else {\n to = `<=${to}`;\n }\n return `${from} ${to}`.trim();\n });\n}\n//# sourceMappingURL=semver.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massUnwrap = exports.unwrap = exports.massWrap = exports.wrap = void 0;\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger = console.error.bind(console);\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj, name, value) {\n const enumerable = !!obj[name] &&\n Object.prototype.propertyIsEnumerable.call(obj, name);\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable,\n writable: true,\n value,\n });\n}\nconst wrap = (nodule, name, wrapper) => {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + String(name) + ' to wrap');\n return;\n }\n if (!wrapper) {\n logger('no wrapper function');\n logger(new Error().stack);\n return;\n }\n const original = nodule[name];\n if (typeof original !== 'function' || typeof wrapper !== 'function') {\n logger('original object and wrapper must be functions');\n return;\n }\n const wrapped = wrapper(original, name);\n defineProperty(wrapped, '__original', original);\n defineProperty(wrapped, '__unwrap', () => {\n if (nodule[name] === wrapped) {\n defineProperty(nodule, name, original);\n }\n });\n defineProperty(wrapped, '__wrapped', true);\n defineProperty(nodule, name, wrapped);\n return wrapped;\n};\nexports.wrap = wrap;\nconst massWrap = (nodules, names, wrapper) => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n }\n else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules');\n return;\n }\n nodules.forEach(nodule => {\n names.forEach(name => {\n (0, exports.wrap)(nodule, name, wrapper);\n });\n });\n};\nexports.massWrap = massWrap;\nconst unwrap = (nodule, name) => {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.');\n logger(new Error().stack);\n return;\n }\n const wrapped = nodule[name];\n if (!wrapped.__unwrap) {\n logger('no original to unwrap to -- has ' +\n String(name) +\n ' already been unwrapped?');\n }\n else {\n wrapped.__unwrap();\n return;\n }\n};\nexports.unwrap = unwrap;\nconst massUnwrap = (nodules, names) => {\n if (!nodules) {\n logger('must provide one or more modules to patch');\n logger(new Error().stack);\n return;\n }\n else if (!Array.isArray(nodules)) {\n nodules = [nodules];\n }\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules');\n return;\n }\n nodules.forEach(nodule => {\n names.forEach(name => {\n (0, exports.unwrap)(nodule, name);\n });\n });\n};\nexports.massUnwrap = massUnwrap;\nfunction shimmer(options) {\n if (options && options.logger) {\n if (typeof options.logger !== 'function') {\n logger(\"new logger isn't a function, not replacing\");\n }\n else {\n logger = options.logger;\n }\n }\n}\nexports.default = shimmer;\nshimmer.wrap = exports.wrap;\nshimmer.massWrap = exports.massWrap;\nshimmer.unwrap = exports.unwrap;\nshimmer.massUnwrap = exports.massUnwrap;\n//# sourceMappingURL=shimmer.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationAbstract = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst shimmer = require(\"./shimmer\");\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nclass InstrumentationAbstract {\n _config = {};\n _tracer;\n _meter;\n _logger;\n _diag;\n instrumentationName;\n instrumentationVersion;\n constructor(instrumentationName, instrumentationVersion, config) {\n this.instrumentationName = instrumentationName;\n this.instrumentationVersion = instrumentationVersion;\n this.setConfig(config);\n this._diag = api_1.diag.createComponentLogger({\n namespace: instrumentationName,\n });\n this._tracer = api_1.trace.getTracer(instrumentationName, instrumentationVersion);\n this._meter = api_1.metrics.getMeter(instrumentationName, instrumentationVersion);\n this._logger = api_logs_1.logs.getLogger(instrumentationName, instrumentationVersion);\n this._updateMetricInstruments();\n }\n /* Api to wrap instrumented method */\n _wrap = shimmer.wrap;\n /* Api to unwrap instrumented methods */\n _unwrap = shimmer.unwrap;\n /* Api to mass wrap instrumented method */\n _massWrap = shimmer.massWrap;\n /* Api to mass unwrap instrumented methods */\n _massUnwrap = shimmer.massUnwrap;\n /* Returns meter */\n get meter() {\n return this._meter;\n }\n /**\n * Sets MeterProvider to this plugin\n * @param meterProvider\n */\n setMeterProvider(meterProvider) {\n this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion);\n this._updateMetricInstruments();\n }\n /* Returns logger */\n get logger() {\n return this._logger;\n }\n /**\n * Sets LoggerProvider to this plugin\n * @param loggerProvider\n */\n setLoggerProvider(loggerProvider) {\n this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion);\n }\n /**\n * @experimental\n *\n * Get module definitions defined by {@link init}.\n * This can be used for experimental compile-time instrumentation.\n *\n * @returns an array of {@link InstrumentationModuleDefinition}\n */\n getModuleDefinitions() {\n const initResult = this.init() ?? [];\n if (!Array.isArray(initResult)) {\n return [initResult];\n }\n return initResult;\n }\n /**\n * Sets the new metric instruments with the current Meter.\n */\n _updateMetricInstruments() {\n return;\n }\n /* Returns InstrumentationConfig */\n getConfig() {\n return this._config;\n }\n /**\n * Sets InstrumentationConfig to this plugin\n * @param config\n */\n setConfig(config) {\n // copy config first level properties to ensure they are immutable.\n // nested properties are not copied, thus are mutable from the outside.\n this._config = {\n enabled: true,\n ...config,\n };\n }\n /**\n * Sets TraceProvider to this plugin\n * @param tracerProvider\n */\n setTracerProvider(tracerProvider) {\n this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion);\n }\n /* Returns tracer */\n get tracer() {\n return this._tracer;\n }\n /**\n * Execute span customization hook, if configured, and log any errors.\n * Any semantics of the trigger and info are defined by the specific instrumentation.\n * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n * @param triggerName The name of the trigger for executing the hook for logging purposes\n * @param span The span to which the hook should be applied\n * @param info The info object to be passed to the hook, with useful data the hook may use\n */\n _runSpanCustomizationHook(hookHandler, triggerName, span, info) {\n if (!hookHandler) {\n return;\n }\n try {\n hookHandler(span, info);\n }\n catch (e) {\n this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e);\n }\n }\n}\nexports.InstrumentationAbstract = InstrumentationAbstract;\n//# sourceMappingURL=instrumentation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleNameTrie = exports.ModuleNameSeparator = void 0;\nexports.ModuleNameSeparator = '/';\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n hooks = [];\n children = new Map();\n}\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nclass ModuleNameTrie {\n _trie = new ModuleNameTrieNode();\n _counter = 0;\n /**\n * Insert a module hook into the trie\n *\n * @param {Hooked} hook Hook\n */\n insert(hook) {\n let trieNode = this._trie;\n for (const moduleNamePart of hook.moduleName.split(exports.ModuleNameSeparator)) {\n let nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n nextNode = new ModuleNameTrieNode();\n trieNode.children.set(moduleNamePart, nextNode);\n }\n trieNode = nextNode;\n }\n trieNode.hooks.push({ hook, insertedId: this._counter++ });\n }\n /**\n * Search for matching hooks in the trie\n *\n * @param {string} moduleName Module name\n * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n * @param {boolean} fullOnly Whether to return only full matches\n * @returns {Hooked[]} Matching hooks\n */\n search(moduleName, { maintainInsertionOrder, fullOnly } = {}) {\n let trieNode = this._trie;\n const results = [];\n let foundFull = true;\n for (const moduleNamePart of moduleName.split(exports.ModuleNameSeparator)) {\n const nextNode = trieNode.children.get(moduleNamePart);\n if (!nextNode) {\n foundFull = false;\n break;\n }\n if (!fullOnly) {\n results.push(...nextNode.hooks);\n }\n trieNode = nextNode;\n }\n if (fullOnly && foundFull) {\n results.push(...trieNode.hooks);\n }\n if (results.length === 0) {\n return [];\n }\n if (results.length === 1) {\n return [results[0].hook];\n }\n if (maintainInsertionOrder) {\n results.sort((a, b) => a.insertedId - b.insertedId);\n }\n return results.map(({ hook }) => hook);\n }\n}\nexports.ModuleNameTrie = ModuleNameTrie;\n//# sourceMappingURL=ModuleNameTrie.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequireInTheMiddleSingleton = void 0;\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst path = require(\"path\");\nconst ModuleNameTrie_1 = require(\"./ModuleNameTrie\");\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n 'afterEach',\n 'after',\n 'beforeEach',\n 'before',\n 'describe',\n 'it',\n].every(fn => {\n // @ts-expect-error TS7053: Element implicitly has an 'any' type\n return typeof global[fn] === 'function';\n});\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nclass RequireInTheMiddleSingleton {\n _moduleNameTrie = new ModuleNameTrie_1.ModuleNameTrie();\n static _instance;\n constructor() {\n this._initialize();\n }\n _initialize() {\n new require_in_the_middle_1.Hook(\n // Intercept all `require` calls; we will filter the matching ones below\n null, { internals: true }, (exports, name, basedir) => {\n // For internal files on Windows, `name` will use backslash as the path separator\n const normalizedModuleName = normalizePathSeparators(name);\n const matches = this._moduleNameTrie.search(normalizedModuleName, {\n maintainInsertionOrder: true,\n // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n // This matches the behavior of `require-in-the-middle`.\n // `basedir` is always `undefined` for core modules.\n fullOnly: basedir === undefined,\n });\n for (const { onRequire } of matches) {\n exports = onRequire(exports, name, basedir);\n }\n return exports;\n });\n }\n /**\n * Register a hook with `require-in-the-middle`\n *\n * @param {string} moduleName Module name\n * @param {OnRequireFn} onRequire Hook function\n * @returns {Hooked} Registered hook\n */\n register(moduleName, onRequire) {\n const hooked = { moduleName, onRequire };\n this._moduleNameTrie.insert(hooked);\n return hooked;\n }\n /**\n * Get the `RequireInTheMiddleSingleton` singleton\n *\n * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n */\n static getInstance() {\n // Mocha runs all test suites in the same process\n // This prevents test suites from sharing a singleton\n if (isMocha)\n return new RequireInTheMiddleSingleton();\n return (this._instance =\n this._instance ?? new RequireInTheMiddleSingleton());\n }\n}\nexports.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton;\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath) {\n return path.sep !== ModuleNameTrie_1.ModuleNameSeparator\n ? moduleNameOrPath.split(path.sep).join(ModuleNameTrie_1.ModuleNameSeparator)\n : moduleNameOrPath;\n}\n//# sourceMappingURL=RequireInTheMiddleSingleton.js.map", + "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst importHooks = [] // TODO should this be a Set?\nconst setters = new WeakMap()\nconst getters = new WeakMap()\nconst specifiers = new Map()\nconst toHook = []\n\nconst proxyHandler = {\n set (target, name, value) {\n const set = setters.get(target)\n const setter = set && set[name]\n if (typeof setter === 'function') {\n return setter(value)\n }\n // If a module doesn't export the property being assigned (e.g. no default\n // export), there is no setter to call. Don't crash userland code.\n return true\n },\n\n get (target, name) {\n if (name === Symbol.toStringTag) {\n return 'Module'\n }\n\n const getter = getters.get(target)[name]\n\n if (typeof getter === 'function') {\n return getter()\n }\n },\n\n defineProperty (target, property, descriptor) {\n if ((!('value' in descriptor))) {\n throw new Error('Getters/setters are not supported for exports property descriptors.')\n }\n\n const set = setters.get(target)\n const setter = set && set[property]\n if (typeof setter === 'function') {\n return setter(descriptor.value)\n }\n return true\n }\n}\n\nfunction register (name, namespace, set, get, specifier) {\n specifiers.set(name, specifier)\n setters.set(namespace, set)\n getters.set(namespace, get)\n const proxy = new Proxy(namespace, proxyHandler)\n importHooks.forEach(hook => hook(name, proxy, specifier))\n toHook.push([name, proxy, specifier])\n}\n\nexports.register = register\nexports.importHooks = importHooks\nexports.specifiers = specifiers\nexports.toHook = toHook\n", + "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst path = require('path')\nconst moduleDetailsFromPath = require('module-details-from-path')\nconst { fileURLToPath } = require('url')\nconst { MessageChannel } = require('worker_threads')\n\nlet { isBuiltin } = require('module')\nif (!isBuiltin) {\n isBuiltin = () => true\n}\n\nconst {\n importHooks,\n specifiers,\n toHook\n} = require('./lib/register')\n\nfunction addHook (hook) {\n importHooks.push(hook)\n toHook.forEach(([name, namespace, specifier]) => hook(name, namespace, specifier))\n}\n\nfunction removeHook (hook) {\n const index = importHooks.indexOf(hook)\n if (index > -1) {\n importHooks.splice(index, 1)\n }\n}\n\nfunction callHookFn (hookFn, namespace, name, baseDir) {\n const newDefault = hookFn(namespace, name, baseDir)\n if (newDefault && newDefault !== namespace) {\n // Only ESM modules that actually export `default` can have it reassigned.\n // Some hooks return a value unconditionally; avoid crashing when the module\n // has no default export (see issue #188).\n if ('default' in namespace) {\n namespace.default = newDefault\n }\n }\n}\n\nlet sendModulesToLoader\n\n/**\n * EXPERIMENTAL\n * This feature is experimental and may change in minor versions.\n * **NOTE** This feature is incompatible with the {internals: true} Hook option.\n *\n * Creates a message channel with a port that can be used to add hooks to the\n * list of exclusively included modules.\n *\n * This can be used to only wrap modules that are Hook'ed, however modules need\n * to be hooked before they are imported.\n *\n * ```ts\n * import { register } from 'module'\n * import { Hook, createAddHookMessageChannel } from 'import-in-the-middle'\n *\n * const { registerOptions, waitForAllMessagesAcknowledged } = createAddHookMessageChannel()\n *\n * register('import-in-the-middle/hook.mjs', import.meta.url, registerOptions)\n *\n * Hook(['fs'], (exported, name, baseDir) => {\n * // Instrument the fs module\n * })\n *\n * // Ensure that the loader has acknowledged all the modules\n * // before we allow execution to continue\n * await waitForAllMessagesAcknowledged()\n * ```\n */\nfunction createAddHookMessageChannel () {\n const { port1, port2 } = new MessageChannel()\n let pendingAckCount = 0\n let resolveFn\n\n sendModulesToLoader = (modules) => {\n pendingAckCount++\n port1.postMessage(modules)\n }\n\n port1.on('message', () => {\n pendingAckCount--\n\n if (resolveFn && pendingAckCount <= 0) {\n resolveFn()\n }\n }).unref()\n\n function waitForAllMessagesAcknowledged () {\n // This timer is to prevent the process from exiting with code 13:\n // 13: Unsettled Top-Level Await.\n const timer = setInterval(() => { }, 1000)\n const promise = new Promise((resolve) => {\n resolveFn = resolve\n }).then(() => { clearInterval(timer) })\n\n if (pendingAckCount === 0) {\n resolveFn()\n }\n\n return promise\n }\n\n const addHookMessagePort = port2\n const registerOptions = { data: { addHookMessagePort, include: [] }, transferList: [addHookMessagePort] }\n\n return { registerOptions, addHookMessagePort, waitForAllMessagesAcknowledged }\n}\n\nfunction Hook (modules, options, hookFn) {\n if ((this instanceof Hook) === false) return new Hook(modules, options, hookFn)\n if (typeof modules === 'function') {\n hookFn = modules\n modules = null\n options = null\n } else if (typeof options === 'function') {\n hookFn = options\n options = null\n }\n const internals = options ? options.internals === true : false\n\n if (sendModulesToLoader && Array.isArray(modules)) {\n sendModulesToLoader(modules)\n }\n\n this._iitmHook = (name, namespace, specifier) => {\n const loadUrl = name\n const isNodeUrl = loadUrl.startsWith('node:')\n let filePath, baseDir\n\n if (isNodeUrl) {\n // Normalize builtin module name to *not* have 'node:' prefix, unless\n // required, as it is for 'node:test' and some others. `module.isBuiltin`\n // is available in all Node.js versions that have node:-only modules.\n const unprefixed = name.slice(5)\n if (isBuiltin(unprefixed)) {\n name = unprefixed\n }\n } else if (loadUrl.startsWith('file://')) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n filePath = fileURLToPath(name)\n name = filePath\n } catch (e) {}\n Error.stackTraceLimit = stackTraceLimit\n\n if (filePath) {\n const details = moduleDetailsFromPath(filePath)\n if (details) {\n name = details.name\n baseDir = details.basedir\n }\n }\n }\n\n if (modules) {\n for (const matchArg of modules) {\n if (filePath && matchArg === filePath) {\n // abspath match\n callHookFn(hookFn, namespace, filePath, undefined)\n } else if (matchArg === name) {\n if (!baseDir) {\n // built-in module (or unexpected non file:// name?)\n callHookFn(hookFn, namespace, name, baseDir)\n } else if (baseDir.endsWith(specifiers.get(loadUrl))) {\n // An import of the top-level module (e.g. `import 'ioredis'`).\n // Note: Slight behaviour difference from RITM. RITM uses\n // `require.resolve(name)` to see if filename is the module\n // main file, which will catch `require('ioredis/built/index.js')`.\n // The check here will not catch `import 'ioredis/built/index.js'`.\n callHookFn(hookFn, namespace, name, baseDir)\n } else if (internals) {\n const internalPath = name + path.sep + path.relative(baseDir, filePath)\n callHookFn(hookFn, namespace, internalPath, baseDir)\n }\n } else if (matchArg === specifier) {\n callHookFn(hookFn, namespace, specifier, baseDir)\n }\n }\n } else {\n callHookFn(hookFn, namespace, name, baseDir)\n }\n }\n\n addHook(this._iitmHook)\n}\n\nHook.prototype.unhook = function () {\n removeHook(this._iitmHook)\n}\n\nmodule.exports = Hook\nmodule.exports.Hook = Hook\nmodule.exports.addHook = addHook\nmodule.exports.removeHook = removeHook\nmodule.exports.createAddHookMessageChannel = createAddHookMessageChannel\n", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0;\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nfunction safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) {\n let error;\n let result;\n try {\n result = execute();\n }\n catch (e) {\n error = e;\n }\n finally {\n onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\nexports.safeExecuteInTheMiddle = safeExecuteInTheMiddle;\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nasync function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) {\n let error;\n let result;\n try {\n result = await execute();\n }\n catch (e) {\n error = e;\n }\n finally {\n await onFinish(error, result);\n if (error && !preventThrowingError) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\nexports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync;\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nfunction isWrapped(func) {\n return (typeof func === 'function' &&\n typeof func.__original === 'function' &&\n typeof func.__unwrap === 'function' &&\n func.__wrapped === true);\n}\nexports.isWrapped = isWrapped;\n//# sourceMappingURL=utils.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationBase = void 0;\nconst path = require(\"path\");\nconst util_1 = require(\"util\");\nconst semver_1 = require(\"../../semver\");\nconst shimmer_1 = require(\"../../shimmer\");\nconst instrumentation_1 = require(\"../../instrumentation\");\nconst RequireInTheMiddleSingleton_1 = require(\"./RequireInTheMiddleSingleton\");\nconst import_in_the_middle_1 = require(\"import-in-the-middle\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst fs_1 = require(\"fs\");\nconst utils_1 = require(\"../../utils\");\n/**\n * Base abstract class for instrumenting node plugins\n */\nclass InstrumentationBase extends instrumentation_1.InstrumentationAbstract {\n _modules;\n _hooks = [];\n _requireInTheMiddleSingleton = RequireInTheMiddleSingleton_1.RequireInTheMiddleSingleton.getInstance();\n _enabled = false;\n constructor(instrumentationName, instrumentationVersion, config) {\n super(instrumentationName, instrumentationVersion, config);\n let modules = this.init();\n if (modules && !Array.isArray(modules)) {\n modules = [modules];\n }\n this._modules = modules || [];\n if (this._config.enabled) {\n this.enable();\n }\n }\n _wrap = (moduleExports, name, wrapper) => {\n if ((0, utils_1.isWrapped)(moduleExports[name])) {\n this._unwrap(moduleExports, name);\n }\n if (!util_1.types.isProxy(moduleExports)) {\n return (0, shimmer_1.wrap)(moduleExports, name, wrapper);\n }\n else {\n const wrapped = (0, shimmer_1.wrap)(Object.assign({}, moduleExports), name, wrapper);\n Object.defineProperty(moduleExports, name, {\n value: wrapped,\n });\n return wrapped;\n }\n };\n _unwrap = (moduleExports, name) => {\n if (!util_1.types.isProxy(moduleExports)) {\n return (0, shimmer_1.unwrap)(moduleExports, name);\n }\n else {\n return Object.defineProperty(moduleExports, name, {\n value: moduleExports[name],\n });\n }\n };\n _massWrap = (moduleExportsArray, names, wrapper) => {\n if (!moduleExportsArray) {\n api_1.diag.error('must provide one or more modules to patch');\n return;\n }\n else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n if (!(names && Array.isArray(names))) {\n api_1.diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._wrap(moduleExports, name, wrapper);\n });\n });\n };\n _massUnwrap = (moduleExportsArray, names) => {\n if (!moduleExportsArray) {\n api_1.diag.error('must provide one or more modules to patch');\n return;\n }\n else if (!Array.isArray(moduleExportsArray)) {\n moduleExportsArray = [moduleExportsArray];\n }\n if (!(names && Array.isArray(names))) {\n api_1.diag.error('must provide one or more functions to wrap on modules');\n return;\n }\n moduleExportsArray.forEach(moduleExports => {\n names.forEach(name => {\n this._unwrap(moduleExports, name);\n });\n });\n };\n _warnOnPreloadedModules() {\n this._modules.forEach((module) => {\n const { name } = module;\n try {\n const resolvedModule = require.resolve(name);\n if (require.cache[resolvedModule]) {\n // Module is already cached, which means the instrumentation hook might not work\n this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`);\n }\n }\n catch {\n // Module isn't available, we can simply skip\n }\n });\n }\n _extractPackageVersion(baseDir) {\n try {\n const json = (0, fs_1.readFileSync)(path.join(baseDir, 'package.json'), {\n encoding: 'utf8',\n });\n const version = JSON.parse(json).version;\n return typeof version === 'string' ? version : undefined;\n }\n catch {\n api_1.diag.warn('Failed extracting version', baseDir);\n }\n return undefined;\n }\n _onRequire(module, exports, name, baseDir) {\n if (!baseDir) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', {\n module: module.name,\n });\n return module.patch(exports);\n }\n }\n return exports;\n }\n const version = this._extractPackageVersion(baseDir);\n module.moduleVersion = version;\n if (module.name === name) {\n // main module\n if (isSupported(module.supportedVersions, version, module.includePrerelease)) {\n if (typeof module.patch === 'function') {\n module.moduleExports = exports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for module on require hook', {\n module: module.name,\n version: module.moduleVersion,\n baseDir,\n });\n return module.patch(exports, module.moduleVersion);\n }\n }\n }\n return exports;\n }\n // internal file\n const files = module.files ?? [];\n const normalizedName = path.normalize(name);\n const supportedFileInstrumentations = files.filter(f => f.name === normalizedName &&\n isSupported(f.supportedVersions, version, module.includePrerelease));\n return supportedFileInstrumentations.reduce((patchedExports, file) => {\n file.moduleExports = patchedExports;\n if (this._enabled) {\n this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n baseDir,\n });\n // patch signature is not typed, so we cast it assuming it's correct\n return file.patch(patchedExports, module.moduleVersion);\n }\n return patchedExports;\n }, exports);\n }\n enable() {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n // already hooked, just call patch again\n if (this._hooks.length > 0) {\n for (const module of this._modules) {\n if (typeof module.patch === 'function' && module.moduleExports) {\n this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', {\n module: module.name,\n version: module.moduleVersion,\n });\n module.patch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n });\n file.patch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n return;\n }\n this._warnOnPreloadedModules();\n for (const module of this._modules) {\n const hookFn = (exports, name, baseDir) => {\n if (!baseDir && path.isAbsolute(name)) {\n // Change IITM `name` and `baseDir` values to match what RITM returns.\n // See \"Comparing to RITM\" on https://github.com/nodejs/import-in-the-middle/pull/241\n // for an example of the differences.\n const parsedPath = path.parse(name);\n name = parsedPath.name;\n baseDir = parsedPath.dir;\n }\n return this._onRequire(module, exports, name, baseDir);\n };\n const onRequire = (exports, name, baseDir) => {\n return this._onRequire(module, exports, name, baseDir);\n };\n // `RequireInTheMiddleSingleton` does not support absolute paths.\n // For an absolute paths, we must create a separate instance of the\n // require-in-the-middle `Hook`.\n const hook = path.isAbsolute(module.name)\n ? new require_in_the_middle_1.Hook([module.name], { internals: true }, onRequire)\n : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n this._hooks.push(hook);\n const esmHook = new import_in_the_middle_1.Hook([module.name], { internals: true }, hookFn);\n this._hooks.push(esmHook);\n }\n }\n disable() {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n for (const module of this._modules) {\n if (typeof module.unpatch === 'function' && module.moduleExports) {\n this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', {\n module: module.name,\n version: module.moduleVersion,\n });\n module.unpatch(module.moduleExports, module.moduleVersion);\n }\n for (const file of module.files) {\n if (file.moduleExports) {\n this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', {\n module: module.name,\n version: module.moduleVersion,\n fileName: file.name,\n });\n file.unpatch(file.moduleExports, module.moduleVersion);\n }\n }\n }\n }\n isEnabled() {\n return this._enabled;\n }\n}\nexports.InstrumentationBase = InstrumentationBase;\nfunction isSupported(supportedVersions, version, includePrerelease) {\n if (typeof version === 'undefined') {\n // If we don't have the version, accept the wildcard case only\n return supportedVersions.includes('*');\n }\n return supportedVersions.some(supportedVersion => {\n return (0, semver_1.satisfies)(version, supportedVersion, { includePrerelease });\n });\n}\n//# sourceMappingURL=instrumentation.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nvar path_1 = require(\"path\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return path_1.normalize; } });\n//# sourceMappingURL=normalize.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } });\nvar normalize_1 = require(\"./normalize\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return normalize_1.normalize; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return node_1.InstrumentationBase; } });\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return node_1.normalize; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleDefinition = void 0;\nclass InstrumentationNodeModuleDefinition {\n files;\n name;\n supportedVersions;\n patch;\n unpatch;\n constructor(name, supportedVersions, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch, files) {\n this.files = files || [];\n this.name = name;\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\nexports.InstrumentationNodeModuleDefinition = InstrumentationNodeModuleDefinition;\n//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleFile = void 0;\nconst index_1 = require(\"./platform/index\");\nclass InstrumentationNodeModuleFile {\n name;\n supportedVersions;\n patch;\n unpatch;\n constructor(name, supportedVersions, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n unpatch) {\n this.name = (0, index_1.normalize)(name);\n this.supportedVersions = supportedVersions;\n this.patch = patch;\n this.unpatch = unpatch;\n }\n}\nexports.InstrumentationNodeModuleFile = InstrumentationNodeModuleFile;\n//# sourceMappingURL=instrumentationNodeModuleFile.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = void 0;\nvar SemconvStability;\n(function (SemconvStability) {\n /** Emit only stable semantic conventions. */\n SemconvStability[SemconvStability[\"STABLE\"] = 1] = \"STABLE\";\n /** Emit only old semantic conventions. */\n SemconvStability[SemconvStability[\"OLD\"] = 2] = \"OLD\";\n /** Emit both stable and old semantic conventions. */\n SemconvStability[SemconvStability[\"DUPLICATE\"] = 3] = \"DUPLICATE\";\n})(SemconvStability = exports.SemconvStability || (exports.SemconvStability = {}));\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n * import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n * export class FooInstrumentation extends InstrumentationBase {\n * private _semconvStability: SemconvStability;\n * constructor(config: FooInstrumentationConfig = {}) {\n * super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n * // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n * );\n *\n * // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n * // the web where there are no envvars).\n * this._semconvStability = semconvStabilityFromStr(\n * 'http',\n * config?.semconvStabilityOptIn\n * );\n * }\n * }\n *\n * // Then, to apply semconv, use the following or similar:\n * if (this._semconvStability & SemconvStability.OLD) {\n * // ...\n * }\n * if (this._semconvStability & SemconvStability.STABLE) {\n * // ...\n * }\n *\n */\nfunction semconvStabilityFromStr(namespace, str) {\n let semconvStability = SemconvStability.OLD;\n // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n const entries = str\n ?.split(',')\n .map(v => v.trim())\n .filter(s => s !== '');\n for (const entry of entries ?? []) {\n if (entry.toLowerCase() === namespace + '/dup') {\n // DUPLICATE takes highest precedence.\n semconvStability = SemconvStability.DUPLICATE;\n break;\n }\n else if (entry.toLowerCase() === namespace) {\n semconvStability = SemconvStability.STABLE;\n }\n }\n return semconvStability;\n}\nexports.semconvStabilityFromStr = semconvStabilityFromStr;\n//# sourceMappingURL=semconvStability.js.map", + "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = exports.isWrapped = exports.InstrumentationNodeModuleFile = exports.InstrumentationNodeModuleDefinition = exports.InstrumentationBase = exports.registerInstrumentations = void 0;\nvar autoLoader_1 = require(\"./autoLoader\");\nObject.defineProperty(exports, \"registerInstrumentations\", { enumerable: true, get: function () { return autoLoader_1.registerInstrumentations; } });\nvar index_1 = require(\"./platform/index\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return index_1.InstrumentationBase; } });\nvar instrumentationNodeModuleDefinition_1 = require(\"./instrumentationNodeModuleDefinition\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleDefinition\", { enumerable: true, get: function () { return instrumentationNodeModuleDefinition_1.InstrumentationNodeModuleDefinition; } });\nvar instrumentationNodeModuleFile_1 = require(\"./instrumentationNodeModuleFile\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleFile\", { enumerable: true, get: function () { return instrumentationNodeModuleFile_1.InstrumentationNodeModuleFile; } });\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"isWrapped\", { enumerable: true, get: function () { return utils_1.isWrapped; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddle\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddle; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddleAsync\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddleAsync; } });\nvar semconvStability_1 = require(\"./semconvStability\");\nObject.defineProperty(exports, \"SemconvStability\", { enumerable: true, get: function () { return semconvStability_1.SemconvStability; } });\nObject.defineProperty(exports, \"semconvStabilityFromStr\", { enumerable: true, get: function () { return semconvStability_1.semconvStabilityFromStr; } });\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.range = exports.balanced = void 0;\nconst balanced = (a, b, str) => {\n const ma = a instanceof RegExp ? maybeMatch(a, str) : a;\n const mb = b instanceof RegExp ? maybeMatch(b, str) : b;\n const r = ma !== null && mb != null && (0, exports.range)(ma, mb, str);\n return (r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + ma.length, r[1]),\n post: str.slice(r[1] + mb.length),\n });\n};\nexports.balanced = balanced;\nconst maybeMatch = (reg, str) => {\n const m = str.match(reg);\n return m ? m[0] : null;\n};\nconst range = (a, b, str) => {\n let begs, beg, left, right = undefined, result;\n let ai = str.indexOf(a);\n let bi = str.indexOf(b, ai + 1);\n let i = ai;\n if (ai >= 0 && bi > 0) {\n if (a === b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n while (i >= 0 && !result) {\n if (i === ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n }\n else if (begs.length === 1) {\n const r = begs.pop();\n if (r !== undefined)\n result = [r, bi];\n }\n else {\n beg = begs.pop();\n if (beg !== undefined && beg < left) {\n left = beg;\n right = bi;\n }\n bi = str.indexOf(b, i + 1);\n }\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n if (begs.length && right !== undefined) {\n result = [left, right];\n }\n }\n return result;\n};\nexports.range = range;\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EXPANSION_MAX = void 0;\nexports.expand = expand;\nconst balanced_match_1 = require(\"balanced-match\");\nconst escSlash = '\\0SLASH' + Math.random() + '\\0';\nconst escOpen = '\\0OPEN' + Math.random() + '\\0';\nconst escClose = '\\0CLOSE' + Math.random() + '\\0';\nconst escComma = '\\0COMMA' + Math.random() + '\\0';\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0';\nconst escSlashPattern = new RegExp(escSlash, 'g');\nconst escOpenPattern = new RegExp(escOpen, 'g');\nconst escClosePattern = new RegExp(escClose, 'g');\nconst escCommaPattern = new RegExp(escComma, 'g');\nconst escPeriodPattern = new RegExp(escPeriod, 'g');\nconst slashPattern = /\\\\\\\\/g;\nconst openPattern = /\\\\{/g;\nconst closePattern = /\\\\}/g;\nconst commaPattern = /\\\\,/g;\nconst periodPattern = /\\\\\\./g;\nexports.EXPANSION_MAX = 100_000;\nfunction numeric(str) {\n return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);\n}\nfunction escapeBraces(str) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod);\n}\nfunction unescapeBraces(str) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.');\n}\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str) {\n if (!str) {\n return [''];\n }\n const parts = [];\n const m = (0, balanced_match_1.balanced)('{', '}', str);\n if (!m) {\n return str.split(',');\n }\n const { pre, body, post } = m;\n const p = pre.split(',');\n p[p.length - 1] += '{' + body + '}';\n const postParts = parseCommaParts(post);\n if (post.length) {\n ;\n p[p.length - 1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n parts.push.apply(parts, p);\n return parts;\n}\nfunction expand(str, options = {}) {\n if (!str) {\n return [];\n }\n const { max = exports.EXPANSION_MAX } = options;\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2);\n }\n return expand_(escapeBraces(str), max, true).map(unescapeBraces);\n}\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\nfunction expand_(str, max, isTop) {\n /** @type {string[]} */\n const expansions = [];\n const m = (0, balanced_match_1.balanced)('{', '}', str);\n if (!m)\n return [str];\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre;\n const post = m.post.length ? expand_(m.post, max, false) : [''];\n if (/\\$$/.test(m.pre)) {\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n }\n else {\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n const isSequence = isNumericSequence || isAlphaSequence;\n const isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand_(str, max, true);\n }\n return [str];\n }\n let n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n }\n else {\n n = parseCommaParts(m.body);\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace);\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p);\n }\n /* c8 ignore stop */\n }\n }\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n let N;\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0]);\n const y = numeric(n[1]);\n const width = Math.max(n[0].length, n[1].length);\n let incr = n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1;\n let test = lte;\n const reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n const pad = n.some(isPadded);\n N = [];\n for (let i = x; test(i, y); i += incr) {\n let c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\') {\n c = '';\n }\n }\n else {\n c = String(i);\n if (pad) {\n const need = width - c.length;\n if (need > 0) {\n const z = new Array(need + 1).join('0');\n if (i < 0) {\n c = '-' + z + c.slice(1);\n }\n else {\n c = z + c;\n }\n }\n }\n }\n N.push(c);\n }\n }\n else {\n N = [];\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j], max, false));\n }\n }\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion);\n }\n }\n }\n }\n return expansions;\n}\n//# sourceMappingURL=index.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertValidPattern = void 0;\nconst MAX_PATTERN_LENGTH = 1024 * 64;\nconst assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\nexports.assertValidPattern = assertValidPattern;\n//# sourceMappingURL=assert-valid-pattern.js.map", + "\"use strict\";\n// translate the various posix character classes into unicode properties\n// this works across all unicode locales\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseClass = void 0;\n// { : [, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nconst parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n : ranges.length ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\nexports.parseClass = parseClass;\n//# sourceMappingURL=brace-expressions.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unescape = void 0;\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\nconst unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n .replace(/\\\\([^\\/])/g, '$1');\n }\n return windowsPathsNoEscape ?\n s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n .replace(/\\\\([^\\/{}])/g, '$1');\n};\nexports.unescape = unescape;\n//# sourceMappingURL=unescape.js.map", + "\"use strict\";\n// parse a single path portion\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AST = void 0;\nconst brace_expressions_js_1 = require(\"./brace-expressions.js\");\nconst unescape_js_1 = require(\"./unescape.js\");\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n]);\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n]);\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n]);\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nlet ID = 0;\nclass AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n id = ++ID;\n get depth() {\n return (this.#parent?.depth ?? -1) + 1;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n };\n }\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n if (this.#toString !== undefined)\n return this.#toString;\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''));\n }\n else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n }\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' &&\n !(p instanceof _a && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof _a && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new _a(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt, extDepth) {\n const maxDepth = opt.maxExtglobRecursion ?? 2;\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth;\n if (doRecurse) {\n ast.push(acc);\n acc = '';\n const ext = new _a(c, ast);\n i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new _a(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n part.push(acc);\n acc = '';\n const ext = new _a(c, part);\n part.push(ext);\n i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new _a(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n #canAdoptWithSpace(child) {\n return this.#canAdopt(child, adoptionWithSpaceMap);\n }\n #canAdopt(child, map = adoptionMap) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canAdoptType(gc.type, map);\n }\n #canAdoptType(c, map = adoptionAnyMap) {\n return !!map.get(this.type)?.includes(c);\n }\n #adoptWithSpace(child, index) {\n const gc = child.#parts[0];\n const blank = new _a(null, gc, this.options);\n blank.#parts.push('');\n gc.push(blank);\n this.#adopt(child, index);\n }\n #adopt(child, index) {\n const gc = child.#parts[0];\n this.#parts.splice(index, 1, ...gc.#parts);\n for (const p of gc.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.#toString = undefined;\n }\n #canUsurpType(c) {\n const m = usurpMap.get(this.type);\n return !!(m?.has(c));\n }\n #canUsurp(child) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canUsurpType(gc.type);\n }\n #usurp(child) {\n const m = usurpMap.get(this.type);\n const gc = child.#parts[0];\n const nt = m?.get(gc.type);\n /* c8 ignore start - impossible */\n if (!nt)\n return false;\n /* c8 ignore stop */\n this.#parts = gc.#parts;\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this;\n }\n }\n this.type = nt;\n this.#toString = undefined;\n this.#emptyExt = false;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new _a(null, undefined, options);\n _a.#parseAST(pattern, ast, 0, options, 0);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this) {\n this.#flatten();\n this.#fillNegs();\n }\n if (!isExtglobAST(this)) {\n const noEmpty = this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string');\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string' ?\n _a.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n (0, unescape_js_1.unescape)(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n const me = this;\n me.#parts = [s];\n me.type = null;\n me.#hasMagic = undefined;\n return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];\n }\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n (0, unescape_js_1.unescape)(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten();\n }\n }\n }\n else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0;\n let done = false;\n do {\n done = true;\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i];\n if (typeof c === 'object') {\n c.#flatten();\n if (this.#canAdopt(c)) {\n done = false;\n this.#adopt(c, i);\n }\n else if (this.#canAdoptWithSpace(c)) {\n done = false;\n this.#adoptWithSpace(c, i);\n }\n else if (this.#canUsurp(c)) {\n done = false;\n this.#usurp(c);\n }\n }\n }\n } while (!done && ++iterations < 10);\n }\n this.#toString = undefined;\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n continue;\n }\n if (c === '*') {\n if (inStar)\n continue;\n inStar = true;\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n hasMagic = true;\n continue;\n }\n else {\n inStar = false;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n continue;\n }\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, (0, unescape_js_1.unescape)(glob), !!hasMagic, uflag];\n }\n}\nexports.AST = AST;\n_a = AST;\n//# sourceMappingURL=ast.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape = void 0;\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nconst escape = (s, { windowsPathsNoEscape = false, magicalBraces = false, } = {}) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&');\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\nexports.escape = escape;\n//# sourceMappingURL=escape.js.map", + "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;\nconst brace_expansion_1 = require(\"brace-expansion\");\nconst assert_valid_pattern_js_1 = require(\"./assert-valid-pattern.js\");\nconst ast_js_1 = require(\"./ast.js\");\nconst escape_js_1 = require(\"./escape.js\");\nconst unescape_js_1 = require(\"./unescape.js\");\nconst minimatch = (p, pattern, options = {}) => {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\nexports.minimatch = minimatch;\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process ?\n (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nexports.minimatch.sep = exports.sep;\nexports.GLOBSTAR = Symbol('globstar **');\nexports.minimatch.GLOBSTAR = exports.GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nconst filter = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options);\nexports.filter = filter;\nexports.minimatch.filter = exports.filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nconst defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return exports.minimatch;\n }\n const orig = exports.minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: exports.GLOBSTAR,\n });\n};\nexports.defaults = defaults;\nexports.minimatch.defaults = exports.defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nconst braceExpand = (pattern, options = {}) => {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n return (0, brace_expansion_1.expand)(pattern, { max: options.braceExpandMax });\n};\nexports.braceExpand = braceExpand;\nexports.minimatch.braceExpand = exports.braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nconst makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nexports.makeRe = makeRe;\nexports.minimatch.makeRe = exports.makeRe;\nconst match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options);\n list = list.filter(f => mm.match(f));\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n return list;\n};\nexports.match = match;\nexports.minimatch.match = exports.match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nclass Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n maxGlobstarRecursion;\n regexp;\n constructor(pattern, options = {}) {\n (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n options = options || {};\n this.options = options;\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n // avoid the annoying deprecation flag lol\n const awe = ('allowWindow' + 'sEscape');\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options[awe] === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined ?\n options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n if (!pattern) {\n this.empty = true;\n return;\n }\n // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [\n ...s.slice(0, 4),\n ...s.slice(4).map(ss => this.parse(ss)),\n ];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n //

// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3\n                : fileDrive ? 0\n                    : undefined;\n            const pdi = patternUNC ? 3\n                : patternDrive ? 0\n                    : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                // start matching at the drive letter index of each\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // don't need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(exports.GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        // split the pattern into head, tail, and middle of ** delimited parts\n        const firstgs = pattern.indexOf(exports.GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(exports.GLOBSTAR);\n        // split the pattern up into globstar-delimited sections\n        // the tail has to be at the end, and the others just have\n        // to be found in order from the head.\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        // check the head, from the current file/pattern index.\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n                return false;\n            }\n            fileIndex += head.length;\n            patternIndex += head.length;\n        }\n        // now we know the head matches!\n        // if the last portion is not empty, it MUST match the end\n        // check the tail\n        let fileTailMatch = 0;\n        if (tail.length) {\n            // if head + tail > file, then we cannot possibly match\n            if (tail.length + fileIndex > file.length)\n                return false;\n            // try to match the tail\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                // affordance for stuff like a/**/* matching a/b/\n                // if the last file portion is '', and there's more to the pattern\n                // then try without the '' bit.\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n                    return false;\n                }\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        // now we know the tail matches!\n        // the middle is zero or more portions wrapped in **, possibly\n        // containing more ** sections.\n        // so a/**/b/**/c/**/d has become **/b/**/c/**\n        // if it's empty, it means a/**/b, just verify we have no bad dots\n        // if there's no tail, so it ends on /**, then we must have *something*\n        // after the head, or it's not a matc\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' ||\n                    f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            // in partial mode, we just need to get past all file parts\n            return partial || sawSome;\n        }\n        // now we know that there's one or more body sections, which can\n        // be matched anywhere from the 0 index (because the head was pruned)\n        // through to the length-fileTailMatch index.\n        // split the body up into sections, and note the minimum index it can\n        // be found at (start with the length of all previous segments)\n        // [section, before, after]\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === exports.GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    // return false for \"nope, not matching\"\n    // return null for \"not matching, cannot keep trying\"\n    #matchGlobStarBodySections(file, \n    // pattern section, last possible position for it\n    bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        // take the first body segment, and walk from fileIndex to its \"after\"\n        // value at the end\n        // If it doesn't match at that position, we increment, until we hit\n        // that final possible position, and give up.\n        // If it does match, then advance and try to rest.\n        // If any of them fail we keep walking forward.\n        // this is still a bit recursively painful, but it's more constrained\n        // than previous implementations, because we never test something that\n        // can't possibly be a valid matching condition.\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            // just make sure that there's no bad dots\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' ||\n                    f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        // have a non-globstar body section to test\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            // if limit exceeded, no match. intentional false negative,\n            // acceptable break in correctness for security.\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                // match! see if the rest match. if so, we're done!\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false) {\n                    return sub;\n                }\n            }\n            const f = file[fileIndex];\n            if (f === '.' ||\n                f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        // walked off. no point continuing\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex,\n            pi = patternIndex,\n            fl = file.length,\n            pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            // should be impossible.\n            // some invalid regexp stuff in the set.\n            /* c8 ignore start */\n            if (p === false || p === exports.GLOBSTAR) {\n                return false;\n            }\n            /* c8 ignore stop */\n            // something other than **\n            // non-magic patterns just have to match exactly\n            // patterns with magic have been turned into regexps.\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        // Note: ending in / means that we'll get a final \"\"\n        // at the end of the pattern.  This can only match a\n        // corresponding \"\" at the end of the file.\n        // If the file ends in /, then it can only match a\n        // a pattern that ends in /, unless the pattern just\n        // doesn't have any more for it. But, a/b/ should *not*\n        // match \"a/b/*\", even though \"\" matches against the\n        // [^/]*? pattern, except in partial mode, where it might\n        // simply not be reached yet.\n        // However, a/b/ should still satisfy a/*\n        // now either we fell off the end of the pattern, or we're done.\n        if (fi === fl && pi === pl) {\n            // ran out of pattern and filename at the same time.\n            // an exact hit!\n            return true;\n        }\n        else if (fi === fl) {\n            // ran out of file, but still had pattern left.\n            // this is ok if we're doing the match as part of\n            // a glob fs traversal.\n            return partial;\n        }\n        else if (pi === pl) {\n            // ran out of pattern, still have file left.\n            // this is only acceptable if we're on the very last\n            // empty segment of a file with a trailing slash.\n            // a/* should match a/b/\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            // should be unreachable.\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return (0, exports.braceExpand)(this.pattern, this.options);\n    }\n    parse(pattern) {\n        (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return exports.GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase ?\n                options.dot ?\n                    starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase ?\n                options.dot ?\n                    qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = ast_js_1.AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar ? star\n            : options.dot ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return (typeof p === 'string' ? regExpEscape(p)\n                    : p === exports.GLOBSTAR ? exports.GLOBSTAR\n                        : p._src);\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== exports.GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?';\n                }\n                else if (next !== exports.GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = exports.GLOBSTAR;\n                }\n            });\n            const filtered = pp.filter(p => p !== exports.GLOBSTAR);\n            // For partial matches, we need to make the pattern match\n            // any prefix of the full path. We do this by generating\n            // alternative patterns that match progressively longer prefixes.\n            if (this.partial && filtered.length >= 1) {\n                const prefixes = [];\n                for (let i = 1; i <= filtered.length; i++) {\n                    prefixes.push(filtered.slice(0, i).join('/'));\n                }\n                return '(?:' + prefixes.join('|') + ')';\n            }\n            return filtered.join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // In partial mode, '/' should always match as it's a valid prefix for any pattern\n        if (this.partial) {\n            re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$';\n        }\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return exports.minimatch.defaults(def).Minimatch;\n    }\n}\nexports.Minimatch = Minimatch;\n/* c8 ignore start */\nvar ast_js_2 = require(\"./ast.js\");\nObject.defineProperty(exports, \"AST\", { enumerable: true, get: function () { return ast_js_2.AST; } });\nvar escape_js_2 = require(\"./escape.js\");\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return escape_js_2.escape; } });\nvar unescape_js_2 = require(\"./unescape.js\");\nObject.defineProperty(exports, \"unescape\", { enumerable: true, get: function () { return unescape_js_2.unescape; } });\n/* c8 ignore stop */\nexports.minimatch.AST = ast_js_1.AST;\nexports.minimatch.Minimatch = Minimatch;\nexports.minimatch.escape = escape_js_1.escape;\nexports.minimatch.unescape = unescape_js_1.unescape;\n//# sourceMappingURL=index.js.map",
+    "'use strict'\nconst dc = require('node:diagnostics_channel')\nconst { context, trace, SpanStatusCode, propagation, diag } = require('@opentelemetry/api')\nconst { getRPCMetadata, RPCType } = require('@opentelemetry/core')\nconst {\n  ATTR_HTTP_ROUTE,\n  ATTR_HTTP_RESPONSE_STATUS_CODE,\n  ATTR_HTTP_REQUEST_METHOD,\n  ATTR_URL_PATH\n} = require('@opentelemetry/semantic-conventions')\nconst { InstrumentationBase } = require('@opentelemetry/instrumentation')\n\nconst {\n  version: PACKAGE_VERSION,\n  name: PACKAGE_NAME\n} = require('./package.json')\n\n// Constants\nconst SUPPORTED_VERSIONS = '>=4.0.0 <6'\nconst FASTIFY_HOOKS = [\n  'onRequest',\n  'preParsing',\n  'preValidation',\n  'preHandler',\n  'preSerialization',\n  'onSend',\n  'onResponse',\n  'onError'\n]\nconst ATTRIBUTE_NAMES = {\n  HOOK_NAME: 'hook.name',\n  FASTIFY_TYPE: 'fastify.type',\n  HOOK_CALLBACK_NAME: 'hook.callback.name',\n  ROOT: 'fastify.root'\n}\nconst HOOK_TYPES = {\n  ROUTE: 'route-hook',\n  INSTANCE: 'hook',\n  HANDLER: 'request-handler'\n}\nconst ANONYMOUS_FUNCTION_NAME = 'anonymous'\n\n// Symbols\nconst kInstrumentation = Symbol('fastify otel instance')\nconst kRequestSpan = Symbol('fastify otel request spans')\nconst kRequestContext = Symbol('fastify otel request context')\nconst kAddHookOriginal = Symbol('fastify otel addhook original')\nconst kSetNotFoundOriginal = Symbol('fastify otel setnotfound original')\nconst kIgnorePaths = Symbol('fastify otel ignore path')\nconst kRecordExceptions = Symbol('fastify otel record exceptions')\n\nclass FastifyOtelInstrumentation extends InstrumentationBase {\n  logger = null\n  _requestHook = null\n  _lifecycleHook = null\n\n  constructor (config) {\n    super(PACKAGE_NAME, PACKAGE_VERSION, config)\n    this.logger = diag.createComponentLogger({ namespace: PACKAGE_NAME })\n    this[kIgnorePaths] = null\n    this[kRecordExceptions] = true\n\n    if (config?.recordExceptions != null) {\n      if (typeof config.recordExceptions !== 'boolean') {\n        throw new TypeError('recordExceptions must be a boolean')\n      }\n\n      this[kRecordExceptions] = config.recordExceptions\n    }\n    if (typeof config?.requestHook === 'function') {\n      this._requestHook = config.requestHook\n    }\n    if (typeof config?.lifecycleHook === 'function') {\n      this._lifecycleHook = config.lifecycleHook\n    }\n\n    if (config?.ignorePaths != null || process.env.OTEL_FASTIFY_IGNORE_PATHS != null) {\n      const ignorePaths = config?.ignorePaths ?? process.env.OTEL_FASTIFY_IGNORE_PATHS\n\n      if ((typeof ignorePaths !== 'string' || ignorePaths.length === 0) && typeof ignorePaths !== 'function') {\n        throw new TypeError(\n          'ignorePaths must be a string or a function'\n        )\n      }\n\n      let globMatcher = null\n\n      this[kIgnorePaths] = (routeOptions) => {\n        if (typeof ignorePaths === 'function') {\n          return ignorePaths(routeOptions)\n        } else {\n          // Using minimatch to match the path until path.matchesGlob is out of experimental\n          // path.matchesGlob uses minimatch internally\n          if (globMatcher == null) {\n            globMatcher = require('minimatch').minimatch\n          }\n\n          return globMatcher(routeOptions.url, ignorePaths)\n        }\n      }\n    }\n  }\n\n  enable () {\n    if (this._handleInitialization === undefined && this.getConfig().registerOnInitialization) {\n      this._handleInitialization = (message) => {\n        // Cannot use `fastify.register(plugin)` because it is lazily executed and\n        // thus requires user code to await fastify instance first.\n        this.plugin()(message.fastify, undefined, () => {})\n\n        // Add an empty plugin to keep `app.hasPlugin('@fastify/otel')` invariant\n        const emptyPlugin = (_, __, done) => {\n          done()\n        }\n        emptyPlugin[Symbol.for('skip-override')] = true\n        emptyPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n        message.fastify.register(emptyPlugin)\n      }\n      dc.subscribe('fastify.initialization', this._handleInitialization)\n    }\n    return super.enable()\n  }\n\n  disable () {\n    if (this._handleInitialization) {\n      dc.unsubscribe('fastify.initialization', this._handleInitialization)\n      this._handleInitialization = undefined\n    }\n    return super.disable()\n  }\n\n  // We do not do patching in this instrumentation\n  init () {\n    return []\n  }\n\n  plugin () {\n    const instrumentation = this\n\n    FastifyInstrumentationPlugin[Symbol.for('skip-override')] = true\n    FastifyInstrumentationPlugin[Symbol.for('fastify.display-name')] = '@fastify/otel'\n    FastifyInstrumentationPlugin[Symbol.for('plugin-meta')] = {\n      fastify: SUPPORTED_VERSIONS,\n      name: '@fastify/otel',\n    }\n\n    return FastifyInstrumentationPlugin\n\n    function FastifyInstrumentationPlugin (instance, opts, done) {\n      instance.decorate(kInstrumentation, instrumentation)\n      // addHook and notfoundHandler are essentially inherited from the prototype\n      // what is important is to bound it to the right instance\n      instance.decorate(kAddHookOriginal, instance.addHook)\n      instance.decorate(kSetNotFoundOriginal, instance.setNotFoundHandler)\n      instance.decorateRequest('opentelemetry', function openetelemetry () {\n        const ctx = this[kRequestContext]\n        const span = this[kRequestSpan]\n\n        return {\n          enabled: this.routeOptions.config?.otel !== false,\n          span,\n          tracer: instrumentation.tracer,\n          context: ctx,\n          inject: (carrier, setter) => {\n            return propagation.inject(ctx, carrier, setter)\n          },\n          extract: (carrier, getter) => {\n            return propagation.extract(ctx, carrier, getter)\n          }\n        }\n      })\n      instance.decorateRequest(kRequestSpan, null)\n      instance.decorateRequest(kRequestContext, null)\n\n      instance.addHook('onRoute', function otelWireRoute (routeOptions) {\n        if (instrumentation[kIgnorePaths]?.(routeOptions) === true) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it matches the ignore path`\n          )\n          return\n        }\n\n        if (routeOptions.config?.otel === false) {\n          instrumentation.logger.debug(\n            `Ignoring route instrumentation ${routeOptions.method} ${routeOptions.url} because it is disabled`\n          )\n\n          return\n        }\n\n        for (const hook of FASTIFY_HOOKS) {\n          if (routeOptions[hook] != null) {\n            const handlerLike = routeOptions[hook]\n\n            if (typeof handlerLike === 'function') {\n              routeOptions[hook] = handlerWrapper(handlerLike, hook, {\n                [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                [ATTR_HTTP_ROUTE]: routeOptions.url,\n                [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                  handlerLike.name?.length > 0\n                    ? handlerLike.name\n                    : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n              })\n            } else if (Array.isArray(handlerLike)) {\n              const wrappedHandlers = []\n\n              for (const handler of handlerLike) {\n                wrappedHandlers.push(\n                  handlerWrapper(handler, hook, {\n                    [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route -> ${hook}`,\n                    [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.ROUTE,\n                    [ATTR_HTTP_ROUTE]: routeOptions.url,\n                    [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                      handler.name?.length > 0\n                        ? handler.name\n                        : ANONYMOUS_FUNCTION_NAME\n                  })\n                )\n              }\n\n              routeOptions[hook] = wrappedHandlers\n            }\n          }\n        }\n\n        // We always want to add the onSend hook to the route to be executed last\n        if (routeOptions.onSend != null) {\n          routeOptions.onSend = Array.isArray(routeOptions.onSend)\n            ? [...routeOptions.onSend, finalizeResponseSpanHook]\n            : [routeOptions.onSend, finalizeResponseSpanHook]\n        } else {\n          routeOptions.onSend = finalizeResponseSpanHook\n        }\n\n        // We always want to add the onError hook to the route to be executed last\n        if (routeOptions.onError != null) {\n          routeOptions.onError = Array.isArray(routeOptions.onError)\n            ? [...routeOptions.onError, recordErrorInSpanHook]\n            : [routeOptions.onError, recordErrorInSpanHook]\n        } else {\n          routeOptions.onError = recordErrorInSpanHook\n        }\n\n        routeOptions.handler = handlerWrapper(routeOptions.handler, 'handler', {\n          [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - route-handler`,\n          [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.HANDLER,\n          [ATTR_HTTP_ROUTE]: routeOptions.url,\n          [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n            routeOptions.handler.name.length > 0\n              ? routeOptions.handler.name\n              : ANONYMOUS_FUNCTION_NAME\n        })\n      })\n\n      instance.addHook('onRequest', function startRequestSpanHook (request, _reply, hookDone) {\n        if (\n          this[kInstrumentation].isEnabled() === false ||\n          request.routeOptions.config?.otel === false\n        ) {\n          return hookDone()\n        }\n\n        if (this[kInstrumentation][kIgnorePaths]?.({\n          url: request.url,\n          method: request.method,\n        }) === true) {\n          this[kInstrumentation].logger.debug(\n            `Ignoring request ${request.method} ${request.url} because it matches the ignore path`\n          )\n          return hookDone()\n        }\n\n        let ctx = context.active()\n\n        if (trace.getSpan(ctx) == null) {\n          ctx = propagation.extract(ctx, request.headers)\n        }\n\n        const rpcMetadata = getRPCMetadata(ctx)\n\n        if (\n          request.routeOptions.url != null &&\n          rpcMetadata?.type === RPCType.HTTP\n        ) {\n          rpcMetadata.route = request.routeOptions.url\n        }\n\n        const attributes = {\n          [ATTRIBUTE_NAMES.ROOT]: '@fastify/otel',\n          [ATTR_HTTP_REQUEST_METHOD]: request.method,\n          [ATTR_URL_PATH]: request.url\n        }\n\n        if (request.routeOptions.url != null) {\n          attributes[ATTR_HTTP_ROUTE] = request.routeOptions.url\n        }\n\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = this[kInstrumentation].tracer.startSpan('request', {\n          attributes\n        }, ctx)\n\n        try {\n          this[kInstrumentation]._requestHook?.(span, request)\n        } catch (err) {\n          this[kInstrumentation].logger.error({ err }, 'requestHook threw')\n        }\n\n        request[kRequestContext] = trace.setSpan(ctx, span)\n        request[kRequestSpan] = span\n\n        context.with(request[kRequestContext], () => {\n          hookDone()\n        })\n      })\n\n      // onResponse is the last hook to be executed, only added for 404 handlers\n      instance.addHook('onResponse', function finalizeNotFoundSpanHook (request, reply, hookDone) {\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setStatus({\n            code: SpanStatusCode.OK,\n            message: 'OK'\n          })\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: 404\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone()\n      })\n\n      instance.addHook = addHookPatched\n      instance.setNotFoundHandler = setNotFoundHandlerPatched\n\n      done()\n\n      function finalizeResponseSpanHook (request, reply, payload, hookDone) {\n        /** @type {import('@opentelemetry/api').Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          if (reply.statusCode < 500) {\n            span.setStatus({\n              code: SpanStatusCode.OK,\n              message: 'OK'\n            })\n          }\n\n          span.setAttributes({\n            [ATTR_HTTP_RESPONSE_STATUS_CODE]: reply.statusCode\n          })\n          span.end()\n        }\n\n        request[kRequestSpan] = null\n\n        hookDone(null, payload)\n      }\n\n      function recordErrorInSpanHook (request, reply, error, hookDone) {\n        /** @type {Span} */\n        const span = request[kRequestSpan]\n\n        if (span != null) {\n          span.setStatus({\n            code: SpanStatusCode.ERROR,\n            message: error.message\n          })\n          if (instrumentation[kRecordExceptions] !== false) {\n            span.recordException(error)\n          }\n        }\n\n        hookDone()\n      }\n\n      function addHookPatched (name, hook) {\n        const addHookOriginal = this[kAddHookOriginal]\n\n        if (FASTIFY_HOOKS.includes(name)) {\n          return addHookOriginal.call(\n            this,\n            name,\n            handlerWrapper(hook, name, {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - ${name}`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hook.name?.length > 0\n                  ? hook.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          )\n        } else {\n          return addHookOriginal.call(this, name, hook)\n        }\n      }\n\n      function setNotFoundHandlerPatched (hooks, handler) {\n        const setNotFoundHandlerOriginal = this[kSetNotFoundOriginal]\n        if (typeof hooks === 'function') {\n          handler = handlerWrapper(hooks, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              hooks.name?.length > 0\n                ? hooks.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, handler)\n        } else {\n          if (hooks.preValidation != null) {\n            hooks.preValidation = handlerWrapper(hooks.preValidation, 'notFoundHandler - preValidation', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preValidation`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preValidation.name?.length > 0\n                  ? hooks.preValidation.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          if (hooks.preHandler != null) {\n            hooks.preHandler = handlerWrapper(hooks.preHandler, 'notFoundHandler - preHandler', {\n              [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler - preHandler`,\n              [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n              [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n                hooks.preHandler.name?.length > 0\n                  ? hooks.preHandler.name\n                  : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n            })\n          }\n\n          handler = handlerWrapper(handler, 'notFoundHandler', {\n            [ATTRIBUTE_NAMES.HOOK_NAME]: `${this.pluginName} - not-found-handler`,\n            [ATTRIBUTE_NAMES.FASTIFY_TYPE]: HOOK_TYPES.INSTANCE,\n            [ATTRIBUTE_NAMES.HOOK_CALLBACK_NAME]:\n              handler.name?.length > 0\n                ? handler.name\n                : ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n          })\n          setNotFoundHandlerOriginal.call(this, hooks, handler)\n        }\n      }\n\n      function handlerWrapper (handler, hookName, spanAttributes = {}) {\n        return function handlerWrapped (...args) {\n          /** @type {FastifyOtelInstrumentation} */\n          const instrumentation = this[kInstrumentation]\n          const [request] = args\n\n          if (instrumentation.isEnabled() === false || request.routeOptions.config?.otel === false) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it is disabled`\n            )\n            return handler.call(this, ...args)\n          }\n\n          if (instrumentation[kIgnorePaths]?.({\n            url: request.url,\n            method: request.method,\n          }) === true) {\n            instrumentation.logger.debug(\n              `Ignoring route instrumentation ${request.routeOptions.method} ${request.routeOptions.url} because it matches the ignore path`\n            )\n            return handler.call(this, ...args)\n          }\n\n          /* c8 ignore next */\n          const ctx = request[kRequestContext] ?? context.active()\n          const handlerName = handler.name?.length > 0\n            ? handler.name\n            : this.pluginName /* c8 ignore next */ ?? ANONYMOUS_FUNCTION_NAME /* c8 ignore next */\n\n          const span = instrumentation.tracer.startSpan(\n            `${hookName} - ${handlerName}`,\n            {\n              attributes: spanAttributes\n            },\n            ctx\n          )\n\n          if (instrumentation._lifecycleHook != null) {\n            try {\n              instrumentation._lifecycleHook(span, {\n                hookName,\n                request,\n                handler: handlerName\n              })\n            } catch (err) {\n              instrumentation.logger.error({ err }, 'Execution of lifecycleHook failed')\n            }\n          }\n\n          return context.with(\n            trace.setSpan(ctx, span),\n            function () {\n              try {\n                const res = handler.call(this, ...args)\n\n                if (typeof res?.then === 'function') {\n                  return res.then(\n                    result => {\n                      span.end()\n                      return result\n                    },\n                    error => {\n                      span.setStatus({\n                        code: SpanStatusCode.ERROR,\n                        message: error.message\n                      })\n                      if (instrumentation[kRecordExceptions] !== false) {\n                        span.recordException(error)\n                      }\n                      span.end()\n                      return Promise.reject(error)\n                    }\n                  )\n                }\n\n                span.end()\n                return res\n              } catch (error) {\n                span.setStatus({\n                  code: SpanStatusCode.ERROR,\n                  message: error.message\n                })\n                if (instrumentation[kRecordExceptions] !== false) {\n                  span.recordException(error)\n                }\n                span.end()\n                throw error\n              }\n            },\n            this\n          )\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = FastifyOtelInstrumentation\nmodule.exports.FastifyOtelInstrumentation = FastifyOtelInstrumentation\n",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanNames = exports.TokenKind = exports.AllowedOperationTypes = void 0;\nvar AllowedOperationTypes;\n(function (AllowedOperationTypes) {\n    AllowedOperationTypes[\"QUERY\"] = \"query\";\n    AllowedOperationTypes[\"MUTATION\"] = \"mutation\";\n    AllowedOperationTypes[\"SUBSCRIPTION\"] = \"subscription\";\n})(AllowedOperationTypes = exports.AllowedOperationTypes || (exports.AllowedOperationTypes = {}));\nvar TokenKind;\n(function (TokenKind) {\n    TokenKind[\"SOF\"] = \"\";\n    TokenKind[\"EOF\"] = \"\";\n    TokenKind[\"BANG\"] = \"!\";\n    TokenKind[\"DOLLAR\"] = \"$\";\n    TokenKind[\"AMP\"] = \"&\";\n    TokenKind[\"PAREN_L\"] = \"(\";\n    TokenKind[\"PAREN_R\"] = \")\";\n    TokenKind[\"SPREAD\"] = \"...\";\n    TokenKind[\"COLON\"] = \":\";\n    TokenKind[\"EQUALS\"] = \"=\";\n    TokenKind[\"AT\"] = \"@\";\n    TokenKind[\"BRACKET_L\"] = \"[\";\n    TokenKind[\"BRACKET_R\"] = \"]\";\n    TokenKind[\"BRACE_L\"] = \"{\";\n    TokenKind[\"PIPE\"] = \"|\";\n    TokenKind[\"BRACE_R\"] = \"}\";\n    TokenKind[\"NAME\"] = \"Name\";\n    TokenKind[\"INT\"] = \"Int\";\n    TokenKind[\"FLOAT\"] = \"Float\";\n    TokenKind[\"STRING\"] = \"String\";\n    TokenKind[\"BLOCK_STRING\"] = \"BlockString\";\n    TokenKind[\"COMMENT\"] = \"Comment\";\n})(TokenKind = exports.TokenKind || (exports.TokenKind = {}));\nvar SpanNames;\n(function (SpanNames) {\n    SpanNames[\"EXECUTE\"] = \"graphql.execute\";\n    SpanNames[\"PARSE\"] = \"graphql.parse\";\n    SpanNames[\"RESOLVE\"] = \"graphql.resolve\";\n    SpanNames[\"VALIDATE\"] = \"graphql.validate\";\n    SpanNames[\"SCHEMA_VALIDATE\"] = \"graphql.validateSchema\";\n    SpanNames[\"SCHEMA_PARSE\"] = \"graphql.parseSchema\";\n})(SpanNames = exports.SpanNames || (exports.SpanNames = {}));\n//# sourceMappingURL=enum.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"SOURCE\"] = \"graphql.source\";\n    AttributeNames[\"FIELD_NAME\"] = \"graphql.field.name\";\n    AttributeNames[\"FIELD_PATH\"] = \"graphql.field.path\";\n    AttributeNames[\"FIELD_TYPE\"] = \"graphql.field.type\";\n    AttributeNames[\"PARENT_NAME\"] = \"graphql.parent.name\";\n    AttributeNames[\"OPERATION_TYPE\"] = \"graphql.operation.type\";\n    AttributeNames[\"OPERATION_NAME\"] = \"graphql.operation.name\";\n    AttributeNames[\"VARIABLES\"] = \"graphql.variables.\";\n    AttributeNames[\"ERROR_VALIDATION_NAME\"] = \"graphql.validation.error\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OTEL_GRAPHQL_DATA_SYMBOL = exports.OTEL_PATCHED_SYMBOL = void 0;\nexports.OTEL_PATCHED_SYMBOL = Symbol.for('opentelemetry.patched');\nexports.OTEL_GRAPHQL_DATA_SYMBOL = Symbol.for('opentelemetry.graphql_data');\n//# sourceMappingURL=symbols.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OPERATION_NOT_SUPPORTED = void 0;\nconst symbols_1 = require(\"./symbols\");\nexports.OPERATION_NOT_SUPPORTED = 'Operation$operationName$not' + ' supported';\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapFieldResolver = exports.wrapFields = exports.getSourceFromLocation = exports.getOperation = exports.endSpan = exports.addSpanSource = exports.addInputVariableAttributes = exports.isPromise = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst enum_1 = require(\"./enum\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst symbols_1 = require(\"./symbols\");\nconst OPERATION_VALUES = Object.values(enum_1.AllowedOperationTypes);\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts\nconst isPromise = (value) => {\n    return typeof value?.then === 'function';\n};\nexports.isPromise = isPromise;\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isObjectLike.ts\nconst isObjectLike = (value) => {\n    return typeof value == 'object' && value !== null;\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction addInputVariableAttribute(span, key, variable) {\n    if (Array.isArray(variable)) {\n        variable.forEach((value, idx) => {\n            addInputVariableAttribute(span, `${key}.${idx}`, value);\n        });\n    }\n    else if (variable instanceof Object) {\n        Object.entries(variable).forEach(([nestedKey, value]) => {\n            addInputVariableAttribute(span, `${key}.${nestedKey}`, value);\n        });\n    }\n    else {\n        span.setAttribute(`${AttributeNames_1.AttributeNames.VARIABLES}${String(key)}`, variable);\n    }\n}\nfunction addInputVariableAttributes(span, variableValues) {\n    Object.entries(variableValues).forEach(([key, value]) => {\n        addInputVariableAttribute(span, key, value);\n    });\n}\nexports.addInputVariableAttributes = addInputVariableAttributes;\nfunction addSpanSource(span, loc, allowValues, start, end) {\n    const source = getSourceFromLocation(loc, allowValues, start, end);\n    span.setAttribute(AttributeNames_1.AttributeNames.SOURCE, source);\n}\nexports.addSpanSource = addSpanSource;\nfunction createFieldIfNotExists(tracer, getConfig, contextValue, info, path) {\n    let field = getField(contextValue, path);\n    if (field) {\n        return { field, spanAdded: false };\n    }\n    const config = getConfig();\n    const parentSpan = config.flatResolveSpans\n        ? getRootSpan(contextValue)\n        : getParentFieldSpan(contextValue, path);\n    field = {\n        span: createResolverSpan(tracer, getConfig, contextValue, info, path, parentSpan),\n    };\n    addField(contextValue, path, field);\n    return { field, spanAdded: true };\n}\nfunction createResolverSpan(tracer, getConfig, contextValue, info, path, parentSpan) {\n    const attributes = {\n        [AttributeNames_1.AttributeNames.FIELD_NAME]: info.fieldName,\n        [AttributeNames_1.AttributeNames.FIELD_PATH]: path.join('.'),\n        [AttributeNames_1.AttributeNames.FIELD_TYPE]: info.returnType.toString(),\n        [AttributeNames_1.AttributeNames.PARENT_NAME]: info.parentType.name,\n    };\n    const span = tracer.startSpan(`${enum_1.SpanNames.RESOLVE} ${attributes[AttributeNames_1.AttributeNames.FIELD_PATH]}`, {\n        attributes,\n    }, parentSpan ? api.trace.setSpan(api.context.active(), parentSpan) : undefined);\n    const document = contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].source;\n    const fieldNode = info.fieldNodes.find(fieldNode => fieldNode.kind === 'Field');\n    if (fieldNode) {\n        addSpanSource(span, document.loc, getConfig().allowValues, fieldNode.loc?.start, fieldNode.loc?.end);\n    }\n    return span;\n}\nfunction endSpan(span, error) {\n    if (error) {\n        span.recordException(error);\n    }\n    span.end();\n}\nexports.endSpan = endSpan;\nfunction getOperation(document, operationName) {\n    if (!document || !Array.isArray(document.definitions)) {\n        return undefined;\n    }\n    if (operationName) {\n        return document.definitions\n            .filter(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1)\n            .find(definition => operationName === definition?.name?.value);\n    }\n    else {\n        return document.definitions.find(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1);\n    }\n}\nexports.getOperation = getOperation;\nfunction addField(contextValue, path, field) {\n    return (contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] =\n        field);\n}\nfunction getField(contextValue, path) {\n    return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')];\n}\nfunction getParentFieldSpan(contextValue, path) {\n    for (let i = path.length - 1; i > 0; i--) {\n        const field = getField(contextValue, path.slice(0, i));\n        if (field) {\n            return field.span;\n        }\n    }\n    return getRootSpan(contextValue);\n}\nfunction getRootSpan(contextValue) {\n    return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].span;\n}\nfunction pathToArray(mergeItems, path) {\n    const flattened = [];\n    let curr = path;\n    while (curr) {\n        let key = curr.key;\n        if (mergeItems && typeof key === 'number') {\n            key = '*';\n        }\n        flattened.push(String(key));\n        curr = curr.prev;\n    }\n    return flattened.reverse();\n}\nfunction repeatBreak(i) {\n    return repeatChar('\\n', i);\n}\nfunction repeatSpace(i) {\n    return repeatChar(' ', i);\n}\nfunction repeatChar(char, to) {\n    let text = '';\n    for (let i = 0; i < to; i++) {\n        text += char;\n    }\n    return text;\n}\nconst KindsToBeRemoved = [\n    enum_1.TokenKind.FLOAT,\n    enum_1.TokenKind.STRING,\n    enum_1.TokenKind.INT,\n    enum_1.TokenKind.BLOCK_STRING,\n];\nfunction getSourceFromLocation(loc, allowValues = false, inputStart, inputEnd) {\n    let source = '';\n    if (loc?.startToken) {\n        const start = typeof inputStart === 'number' ? inputStart : loc.start;\n        const end = typeof inputEnd === 'number' ? inputEnd : loc.end;\n        let next = loc.startToken.next;\n        let previousLine = 1;\n        while (next) {\n            if (next.start < start) {\n                next = next.next;\n                previousLine = next?.line;\n                continue;\n            }\n            if (next.end > end) {\n                next = next.next;\n                previousLine = next?.line;\n                continue;\n            }\n            let value = next.value || next.kind;\n            let space = '';\n            if (!allowValues && KindsToBeRemoved.indexOf(next.kind) >= 0) {\n                // value = repeatChar('*', value.length);\n                value = '*';\n            }\n            if (next.kind === enum_1.TokenKind.STRING) {\n                value = `\"${value}\"`;\n            }\n            if (next.kind === enum_1.TokenKind.EOF) {\n                value = '';\n            }\n            if (next.line > previousLine) {\n                source += repeatBreak(next.line - previousLine);\n                previousLine = next.line;\n                space = repeatSpace(next.column - 1);\n            }\n            else {\n                if (next.line === next.prev?.line) {\n                    space = repeatSpace(next.start - (next.prev?.end || 0));\n                }\n            }\n            source += space + value;\n            if (next) {\n                next = next.next;\n            }\n        }\n    }\n    return source;\n}\nexports.getSourceFromLocation = getSourceFromLocation;\nfunction wrapFields(type, tracer, getConfig) {\n    if (!type || type[symbols_1.OTEL_PATCHED_SYMBOL]) {\n        return;\n    }\n    const fields = type.getFields();\n    type[symbols_1.OTEL_PATCHED_SYMBOL] = true;\n    Object.keys(fields).forEach(key => {\n        const field = fields[key];\n        if (!field) {\n            return;\n        }\n        if (field.resolve) {\n            field.resolve = wrapFieldResolver(tracer, getConfig, field.resolve);\n        }\n        if (field.type) {\n            const unwrappedTypes = unwrapType(field.type);\n            for (const unwrappedType of unwrappedTypes) {\n                wrapFields(unwrappedType, tracer, getConfig);\n            }\n        }\n    });\n}\nexports.wrapFields = wrapFields;\nfunction unwrapType(type) {\n    // unwrap wrapping types (non-nullable and list types)\n    if ('ofType' in type) {\n        return unwrapType(type.ofType);\n    }\n    // unwrap union types\n    if (isGraphQLUnionType(type)) {\n        return type.getTypes();\n    }\n    // return object types\n    if (isGraphQLObjectType(type)) {\n        return [type];\n    }\n    return [];\n}\nfunction isGraphQLUnionType(type) {\n    return 'getTypes' in type && typeof type.getTypes === 'function';\n}\nfunction isGraphQLObjectType(type) {\n    return 'getFields' in type && typeof type.getFields === 'function';\n}\nconst handleResolveSpanError = (resolveSpan, err, shouldEndSpan) => {\n    if (!shouldEndSpan) {\n        return;\n    }\n    resolveSpan.recordException(err);\n    resolveSpan.setStatus({\n        code: api.SpanStatusCode.ERROR,\n        message: err.message,\n    });\n    resolveSpan.end();\n};\nconst handleResolveSpanSuccess = (resolveSpan, shouldEndSpan) => {\n    if (!shouldEndSpan) {\n        return;\n    }\n    resolveSpan.end();\n};\nfunction wrapFieldResolver(tracer, getConfig, fieldResolver, isDefaultResolver = false) {\n    if (wrappedFieldResolver[symbols_1.OTEL_PATCHED_SYMBOL] ||\n        typeof fieldResolver !== 'function') {\n        return fieldResolver;\n    }\n    function wrappedFieldResolver(source, args, contextValue, info) {\n        if (!fieldResolver) {\n            return undefined;\n        }\n        const config = getConfig();\n        // follows what graphql is doing to decide if this is a trivial resolver\n        // for which we don't need to create a resolve span\n        if (config.ignoreTrivialResolveSpans &&\n            isDefaultResolver &&\n            (isObjectLike(source) || typeof source === 'function')) {\n            const property = source[info.fieldName];\n            // a function execution is not trivial and should be recorder.\n            // property which is not a function is just a value and we don't want a \"resolve\" span for it\n            if (typeof property !== 'function') {\n                return fieldResolver.call(this, source, args, contextValue, info);\n            }\n        }\n        if (!contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL]) {\n            return fieldResolver.call(this, source, args, contextValue, info);\n        }\n        const path = pathToArray(config.mergeItems, info && info.path);\n        const depth = path.filter((item) => typeof item === 'string').length;\n        let span;\n        let shouldEndSpan = false;\n        if (config.depth >= 0 && config.depth < depth) {\n            span = getParentFieldSpan(contextValue, path);\n        }\n        else {\n            const { field, spanAdded } = createFieldIfNotExists(tracer, getConfig, contextValue, info, path);\n            span = field.span;\n            shouldEndSpan = spanAdded;\n        }\n        return api.context.with(api.trace.setSpan(api.context.active(), span), () => {\n            try {\n                const res = fieldResolver.call(this, source, args, contextValue, info);\n                if ((0, exports.isPromise)(res)) {\n                    return res.then((r) => {\n                        handleResolveSpanSuccess(span, shouldEndSpan);\n                        return r;\n                    }, (err) => {\n                        handleResolveSpanError(span, err, shouldEndSpan);\n                        throw err;\n                    });\n                }\n                else {\n                    handleResolveSpanSuccess(span, shouldEndSpan);\n                    return res;\n                }\n            }\n            catch (err) {\n                handleResolveSpanError(span, err, shouldEndSpan);\n                throw err;\n            }\n        });\n    }\n    wrappedFieldResolver[symbols_1.OTEL_PATCHED_SYMBOL] = true;\n    return wrappedFieldResolver;\n}\nexports.wrapFieldResolver = wrapFieldResolver;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-graphql';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GraphQLInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst enum_1 = require(\"./enum\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst symbols_1 = require(\"./symbols\");\nconst internal_types_1 = require(\"./internal-types\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst DEFAULT_CONFIG = {\n    mergeItems: false,\n    depth: -1,\n    allowValues: false,\n    ignoreResolveSpans: false,\n};\nconst supportedVersions = ['>=14.0.0 <17'];\nclass GraphQLInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n    }\n    setConfig(config = {}) {\n        super.setConfig({ ...DEFAULT_CONFIG, ...config });\n    }\n    init() {\n        const module = new instrumentation_1.InstrumentationNodeModuleDefinition('graphql', supportedVersions);\n        module.files.push(this._addPatchingExecute());\n        module.files.push(this._addPatchingParser());\n        module.files.push(this._addPatchingValidate());\n        return module;\n    }\n    _addPatchingExecute() {\n        return new instrumentation_1.InstrumentationNodeModuleFile('graphql/execution/execute.js', supportedVersions, \n        // cannot make it work with appropriate type as execute function has 2\n        //types and/cannot import function but only types\n        (moduleExports) => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports.execute)) {\n                this._unwrap(moduleExports, 'execute');\n            }\n            this._wrap(moduleExports, 'execute', this._patchExecute(moduleExports.defaultFieldResolver));\n            return moduleExports;\n        }, moduleExports => {\n            if (moduleExports) {\n                this._unwrap(moduleExports, 'execute');\n            }\n        });\n    }\n    _addPatchingParser() {\n        return new instrumentation_1.InstrumentationNodeModuleFile('graphql/language/parser.js', supportedVersions, (moduleExports) => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports.parse)) {\n                this._unwrap(moduleExports, 'parse');\n            }\n            this._wrap(moduleExports, 'parse', this._patchParse());\n            return moduleExports;\n        }, (moduleExports) => {\n            if (moduleExports) {\n                this._unwrap(moduleExports, 'parse');\n            }\n        });\n    }\n    _addPatchingValidate() {\n        return new instrumentation_1.InstrumentationNodeModuleFile('graphql/validation/validate.js', supportedVersions, moduleExports => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports.validate)) {\n                this._unwrap(moduleExports, 'validate');\n            }\n            this._wrap(moduleExports, 'validate', this._patchValidate());\n            return moduleExports;\n        }, moduleExports => {\n            if (moduleExports) {\n                this._unwrap(moduleExports, 'validate');\n            }\n        });\n    }\n    _patchExecute(defaultFieldResolved) {\n        const instrumentation = this;\n        return function execute(original) {\n            return function patchExecute() {\n                let processedArgs;\n                // case when apollo server is used for example\n                if (arguments.length >= 2) {\n                    const args = arguments;\n                    processedArgs = instrumentation._wrapExecuteArgs(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], defaultFieldResolved);\n                }\n                else {\n                    const args = arguments[0];\n                    processedArgs = instrumentation._wrapExecuteArgs(args.schema, args.document, args.rootValue, args.contextValue, args.variableValues, args.operationName, args.fieldResolver, args.typeResolver, defaultFieldResolved);\n                }\n                const operation = (0, utils_1.getOperation)(processedArgs.document, processedArgs.operationName);\n                const span = instrumentation._createExecuteSpan(operation, processedArgs);\n                processedArgs.contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL] = {\n                    source: processedArgs.document\n                        ? processedArgs.document ||\n                            processedArgs.document[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL]\n                        : undefined,\n                    span,\n                    fields: {},\n                };\n                return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                    return (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                        return original.apply(this, [\n                            processedArgs,\n                        ]);\n                    }, (err, result) => {\n                        instrumentation._handleExecutionResult(span, err, result);\n                    });\n                });\n            };\n        };\n    }\n    _handleExecutionResult(span, err, result) {\n        const config = this.getConfig();\n        if (result === undefined || err) {\n            (0, utils_1.endSpan)(span, err);\n            return;\n        }\n        if ((0, utils_1.isPromise)(result)) {\n            result.then(resultData => {\n                if (typeof config.responseHook !== 'function') {\n                    (0, utils_1.endSpan)(span);\n                    return;\n                }\n                this._executeResponseHook(span, resultData);\n            }, error => {\n                (0, utils_1.endSpan)(span, error);\n            });\n        }\n        else {\n            if (typeof config.responseHook !== 'function') {\n                (0, utils_1.endSpan)(span);\n                return;\n            }\n            this._executeResponseHook(span, result);\n        }\n    }\n    _executeResponseHook(span, result) {\n        const { responseHook } = this.getConfig();\n        if (!responseHook) {\n            return;\n        }\n        (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n            responseHook(span, result);\n        }, err => {\n            if (err) {\n                this._diag.error('Error running response hook', err);\n            }\n            (0, utils_1.endSpan)(span, undefined);\n        }, true);\n    }\n    _patchParse() {\n        const instrumentation = this;\n        return function parse(original) {\n            return function patchParse(source, options) {\n                return instrumentation._parse(this, original, source, options);\n            };\n        };\n    }\n    _patchValidate() {\n        const instrumentation = this;\n        return function validate(original) {\n            return function patchValidate(schema, documentAST, rules, options, typeInfo) {\n                return instrumentation._validate(this, original, schema, documentAST, rules, typeInfo, options);\n            };\n        };\n    }\n    _parse(obj, original, source, options) {\n        const config = this.getConfig();\n        const span = this.tracer.startSpan(enum_1.SpanNames.PARSE);\n        return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n            return (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                return original.call(obj, source, options);\n            }, (err, result) => {\n                if (result) {\n                    const operation = (0, utils_1.getOperation)(result);\n                    if (!operation) {\n                        span.updateName(enum_1.SpanNames.SCHEMA_PARSE);\n                    }\n                    else if (result.loc) {\n                        (0, utils_1.addSpanSource)(span, result.loc, config.allowValues);\n                    }\n                }\n                (0, utils_1.endSpan)(span, err);\n            });\n        });\n    }\n    _validate(obj, original, schema, documentAST, rules, typeInfo, options) {\n        const span = this.tracer.startSpan(enum_1.SpanNames.VALIDATE, {});\n        return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n            return (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                return original.call(obj, schema, documentAST, rules, options, typeInfo);\n            }, (err, errors) => {\n                if (!documentAST.loc) {\n                    span.updateName(enum_1.SpanNames.SCHEMA_VALIDATE);\n                }\n                if (errors && errors.length) {\n                    span.recordException({\n                        name: AttributeNames_1.AttributeNames.ERROR_VALIDATION_NAME,\n                        message: JSON.stringify(errors),\n                    });\n                }\n                (0, utils_1.endSpan)(span, err);\n            });\n        });\n    }\n    _createExecuteSpan(operation, processedArgs) {\n        const config = this.getConfig();\n        const span = this.tracer.startSpan(enum_1.SpanNames.EXECUTE, {});\n        if (operation) {\n            const { operation: operationType, name: nameNode } = operation;\n            span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_TYPE, operationType);\n            const operationName = nameNode?.value;\n            // https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/instrumentation/graphql/\n            // > The span name MUST be of the format   provided that graphql.operation.type and graphql.operation.name are available.\n            // > If graphql.operation.name is not available, the span SHOULD be named .\n            if (operationName) {\n                span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_NAME, operationName);\n                span.updateName(`${operationType} ${operationName}`);\n            }\n            else {\n                span.updateName(operationType);\n            }\n        }\n        else {\n            let operationName = ' ';\n            if (processedArgs.operationName) {\n                operationName = ` \"${processedArgs.operationName}\" `;\n            }\n            operationName = internal_types_1.OPERATION_NOT_SUPPORTED.replace('$operationName$', operationName);\n            span.setAttribute(AttributeNames_1.AttributeNames.OPERATION_NAME, operationName);\n        }\n        if (processedArgs.document?.loc) {\n            (0, utils_1.addSpanSource)(span, processedArgs.document.loc, config.allowValues);\n        }\n        if (processedArgs.variableValues && config.allowValues) {\n            (0, utils_1.addInputVariableAttributes)(span, processedArgs.variableValues);\n        }\n        return span;\n    }\n    _wrapExecuteArgs(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver, defaultFieldResolved) {\n        if (!contextValue) {\n            contextValue = {};\n        }\n        if (contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL] ||\n            this.getConfig().ignoreResolveSpans) {\n            return {\n                schema,\n                document,\n                rootValue,\n                contextValue,\n                variableValues,\n                operationName,\n                fieldResolver,\n                typeResolver,\n            };\n        }\n        const isUsingDefaultResolver = fieldResolver == null;\n        // follows graphql implementation here:\n        // https://github.com/graphql/graphql-js/blob/0b7daed9811731362c71900e12e5ea0d1ecc7f1f/src/execution/execute.ts#L494\n        const fieldResolverForExecute = fieldResolver ?? defaultFieldResolved;\n        fieldResolver = (0, utils_1.wrapFieldResolver)(this.tracer, () => this.getConfig(), fieldResolverForExecute, isUsingDefaultResolver);\n        if (schema) {\n            (0, utils_1.wrapFields)(schema.getQueryType(), this.tracer, () => this.getConfig());\n            (0, utils_1.wrapFields)(schema.getMutationType(), this.tracer, () => this.getConfig());\n        }\n        return {\n            schema,\n            document,\n            rootValue,\n            contextValue,\n            variableValues,\n            operationName,\n            fieldResolver,\n            typeResolver,\n        };\n    }\n}\nexports.GraphQLInstrumentation = GraphQLInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GraphQLInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"GraphQLInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.GraphQLInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors, Aspecto\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENT_LISTENERS_SET = void 0;\nexports.EVENT_LISTENERS_SET = Symbol('opentelemetry.instrumentation.kafkajs.eventListenersSet');\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferTextMapGetter = void 0;\n/*\nsame as open telemetry's `defaultTextMapGetter`,\nbut also handle case where header is buffer,\nadding toString() to make sure string is returned\n*/\nexports.bufferTextMapGetter = {\n    get(carrier, key) {\n        if (!carrier) {\n            return undefined;\n        }\n        const keys = Object.keys(carrier);\n        for (const carrierKey of keys) {\n            if (carrierKey === key || carrierKey.toLowerCase() === key) {\n                return carrier[carrierKey]?.toString();\n            }\n        }\n        return undefined;\n    },\n    keys(carrier) {\n        return carrier ? Object.keys(carrier) : [];\n    },\n};\n//# sourceMappingURL=propagator.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_MESSAGING_PROCESS_DURATION = exports.METRIC_MESSAGING_CLIENT_SENT_MESSAGES = exports.METRIC_MESSAGING_CLIENT_OPERATION_DURATION = exports.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = exports.MESSAGING_SYSTEM_VALUE_KAFKA = exports.MESSAGING_OPERATION_TYPE_VALUE_SEND = exports.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = exports.MESSAGING_OPERATION_TYPE_VALUE_PROCESS = exports.ATTR_MESSAGING_SYSTEM = exports.ATTR_MESSAGING_OPERATION_TYPE = exports.ATTR_MESSAGING_OPERATION_NAME = exports.ATTR_MESSAGING_KAFKA_OFFSET = exports.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = exports.ATTR_MESSAGING_KAFKA_MESSAGE_KEY = exports.ATTR_MESSAGING_DESTINATION_PARTITION_ID = exports.ATTR_MESSAGING_DESTINATION_NAME = exports.ATTR_MESSAGING_BATCH_MESSAGE_COUNT = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The number of messages sent, received, or processed in the scope of the batching operation.\n *\n * @example 0\n * @example 1\n * @example 2\n *\n * @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.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_BATCH_MESSAGE_COUNT = 'messaging.batch.message_count';\n/**\n * The message destination name\n *\n * @example MyQueue\n * @example MyTopic\n *\n * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If\n * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_DESTINATION_NAME = 'messaging.destination.name';\n/**\n * The identifier of the partition messages are sent to or received from, unique within the `messaging.destination.name`.\n *\n * @example \"1\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_DESTINATION_PARTITION_ID = 'messaging.destination.partition.id';\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from `messaging.message.id` in that they're not unique. If the key is `null`, the attribute **MUST NOT** be set.\n *\n * @example \"myKey\"\n *\n * @note If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message.key';\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE = 'messaging.kafka.message.tombstone';\n/**\n * The offset of a record in the corresponding Kafka partition.\n *\n * @example 42\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_KAFKA_OFFSET = 'messaging.kafka.offset';\n/**\n * The system-specific name of the messaging operation.\n *\n * @example ack\n * @example nack\n * @example send\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_OPERATION_NAME = 'messaging.operation.name';\n/**\n * A string identifying the type of the messaging operation.\n *\n * @note If a custom value is used, it **MUST** be of low cardinality.\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_OPERATION_TYPE = 'messaging.operation.type';\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_SYSTEM = 'messaging.system';\n/**\n * Enum value \"process\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexports.MESSAGING_OPERATION_TYPE_VALUE_PROCESS = 'process';\n/**\n * Enum value \"receive\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexports.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE = 'receive';\n/**\n * Enum value \"send\" for attribute {@link ATTR_MESSAGING_OPERATION_TYPE}.\n */\nexports.MESSAGING_OPERATION_TYPE_VALUE_SEND = 'send';\n/**\n * Enum value \"kafka\" for attribute {@link ATTR_MESSAGING_SYSTEM}.\n */\nexports.MESSAGING_SYSTEM_VALUE_KAFKA = 'kafka';\n/**\n * Number of messages that were delivered to the application.\n *\n * @note Records the number of messages pulled from the broker or number of messages dispatched to the application in push-based scenarios.\n * The metric **SHOULD** be reported once per message delivery. For example, if receiving and processing operations are both instrumented for a single message delivery, this counter is incremented when the message is received and not reported when it is processed.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES = 'messaging.client.consumed.messages';\n/**\n * Duration of messaging operation initiated by a producer or consumer client.\n *\n * @note This metric **SHOULD NOT** be used to report processing duration - processing duration is reported in `messaging.process.duration` metric.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_MESSAGING_CLIENT_OPERATION_DURATION = 'messaging.client.operation.duration';\n/**\n * Number of messages producer attempted to send to the broker.\n *\n * @note This metric **MUST NOT** count messages that were created but haven't yet been sent.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_MESSAGING_CLIENT_SENT_MESSAGES = 'messaging.client.sent.messages';\n/**\n * Duration of processing operation.\n *\n * @note This metric **MUST** be reported for operations with `messaging.operation.type` that matches `process`.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_MESSAGING_PROCESS_DURATION = 'messaging.process.duration';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.22.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-kafkajs';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors, Aspecto\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KafkaJsInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst internal_types_1 = require(\"./internal-types\");\nconst propagator_1 = require(\"./propagator\");\nconst semconv_1 = require(\"./semconv\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nfunction prepareCounter(meter, value, attributes) {\n    return (errorType) => {\n        meter.add(value, {\n            ...attributes,\n            ...(errorType ? { [semantic_conventions_1.ATTR_ERROR_TYPE]: errorType } : {}),\n        });\n    };\n}\nfunction prepareDurationHistogram(meter, value, attributes) {\n    return (errorType) => {\n        meter.record((Date.now() - value) / 1000, {\n            ...attributes,\n            ...(errorType ? { [semantic_conventions_1.ATTR_ERROR_TYPE]: errorType } : {}),\n        });\n    };\n}\nconst HISTOGRAM_BUCKET_BOUNDARIES = [\n    0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10,\n];\nclass KafkaJsInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    _updateMetricInstruments() {\n        this._clientDuration = this.meter.createHistogram(semconv_1.METRIC_MESSAGING_CLIENT_OPERATION_DURATION, { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } });\n        this._sentMessages = this.meter.createCounter(semconv_1.METRIC_MESSAGING_CLIENT_SENT_MESSAGES);\n        this._consumedMessages = this.meter.createCounter(semconv_1.METRIC_MESSAGING_CLIENT_CONSUMED_MESSAGES);\n        this._processDuration = this.meter.createHistogram(semconv_1.METRIC_MESSAGING_PROCESS_DURATION, { advice: { explicitBucketBoundaries: HISTOGRAM_BUCKET_BOUNDARIES } });\n    }\n    init() {\n        const unpatch = (moduleExports) => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.Kafka?.prototype.producer)) {\n                this._unwrap(moduleExports.Kafka.prototype, 'producer');\n            }\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.Kafka?.prototype.consumer)) {\n                this._unwrap(moduleExports.Kafka.prototype, 'consumer');\n            }\n        };\n        const module = new instrumentation_1.InstrumentationNodeModuleDefinition('kafkajs', ['>=0.3.0 <3'], (moduleExports) => {\n            unpatch(moduleExports);\n            this._wrap(moduleExports?.Kafka?.prototype, 'producer', this._getProducerPatch());\n            this._wrap(moduleExports?.Kafka?.prototype, 'consumer', this._getConsumerPatch());\n            return moduleExports;\n        }, unpatch);\n        return module;\n    }\n    _getConsumerPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function consumer(...args) {\n                const newConsumer = original.apply(this, args);\n                if ((0, instrumentation_1.isWrapped)(newConsumer.run)) {\n                    instrumentation._unwrap(newConsumer, 'run');\n                }\n                instrumentation._wrap(newConsumer, 'run', instrumentation._getConsumerRunPatch());\n                instrumentation._setKafkaEventListeners(newConsumer);\n                return newConsumer;\n            };\n        };\n    }\n    _setKafkaEventListeners(kafkaObj) {\n        if (kafkaObj[internal_types_1.EVENT_LISTENERS_SET])\n            return;\n        // The REQUEST Consumer event was added in kafkajs@1.5.0.\n        if (kafkaObj.events?.REQUEST) {\n            kafkaObj.on(kafkaObj.events.REQUEST, this._recordClientDurationMetric.bind(this));\n        }\n        kafkaObj[internal_types_1.EVENT_LISTENERS_SET] = true;\n    }\n    _recordClientDurationMetric(event) {\n        const [address, port] = event.payload.broker.split(':');\n        this._clientDuration.record(event.payload.duration / 1000, {\n            [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n            [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: `${event.payload.apiName}`,\n            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: address,\n            [semantic_conventions_1.ATTR_SERVER_PORT]: Number.parseInt(port, 10),\n        });\n    }\n    _getProducerPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function consumer(...args) {\n                const newProducer = original.apply(this, args);\n                if ((0, instrumentation_1.isWrapped)(newProducer.sendBatch)) {\n                    instrumentation._unwrap(newProducer, 'sendBatch');\n                }\n                instrumentation._wrap(newProducer, 'sendBatch', instrumentation._getSendBatchPatch());\n                if ((0, instrumentation_1.isWrapped)(newProducer.send)) {\n                    instrumentation._unwrap(newProducer, 'send');\n                }\n                instrumentation._wrap(newProducer, 'send', instrumentation._getSendPatch());\n                if ((0, instrumentation_1.isWrapped)(newProducer.transaction)) {\n                    instrumentation._unwrap(newProducer, 'transaction');\n                }\n                instrumentation._wrap(newProducer, 'transaction', instrumentation._getProducerTransactionPatch());\n                instrumentation._setKafkaEventListeners(newProducer);\n                return newProducer;\n            };\n        };\n    }\n    _getConsumerRunPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function run(...args) {\n                const config = args[0];\n                if (config?.eachMessage) {\n                    if ((0, instrumentation_1.isWrapped)(config.eachMessage)) {\n                        instrumentation._unwrap(config, 'eachMessage');\n                    }\n                    instrumentation._wrap(config, 'eachMessage', instrumentation._getConsumerEachMessagePatch());\n                }\n                if (config?.eachBatch) {\n                    if ((0, instrumentation_1.isWrapped)(config.eachBatch)) {\n                        instrumentation._unwrap(config, 'eachBatch');\n                    }\n                    instrumentation._wrap(config, 'eachBatch', instrumentation._getConsumerEachBatchPatch());\n                }\n                return original.call(this, config);\n            };\n        };\n    }\n    _getConsumerEachMessagePatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function eachMessage(...args) {\n                const payload = args[0];\n                const propagatedContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, payload.message.headers, propagator_1.bufferTextMapGetter);\n                const span = instrumentation._startConsumerSpan({\n                    topic: payload.topic,\n                    message: payload.message,\n                    operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n                    ctx: propagatedContext,\n                    attributes: {\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition),\n                    },\n                });\n                const pendingMetrics = [\n                    prepareDurationHistogram(instrumentation._processDuration, Date.now(), {\n                        [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                        [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition),\n                    }),\n                    prepareCounter(instrumentation._consumedMessages, 1, {\n                        [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                        [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.topic,\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.partition),\n                    }),\n                ];\n                const eachMessagePromise = api_1.context.with(api_1.trace.setSpan(propagatedContext, span), () => {\n                    return original.apply(this, args);\n                });\n                return instrumentation._endSpansOnPromise([span], pendingMetrics, eachMessagePromise);\n            };\n        };\n    }\n    _getConsumerEachBatchPatch() {\n        return (original) => {\n            const instrumentation = this;\n            return function eachBatch(...args) {\n                const payload = args[0];\n                // https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#topic-with-multiple-consumers\n                const receivingSpan = instrumentation._startConsumerSpan({\n                    topic: payload.batch.topic,\n                    message: undefined,\n                    operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE,\n                    ctx: api_1.ROOT_CONTEXT,\n                    attributes: {\n                        [semconv_1.ATTR_MESSAGING_BATCH_MESSAGE_COUNT]: payload.batch.messages.length,\n                        [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition),\n                    },\n                });\n                return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), receivingSpan), () => {\n                    const startTime = Date.now();\n                    const spans = [];\n                    const pendingMetrics = [\n                        prepareCounter(instrumentation._consumedMessages, payload.batch.messages.length, {\n                            [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                            [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition),\n                        }),\n                    ];\n                    payload.batch.messages.forEach(message => {\n                        const propagatedContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, message.headers, propagator_1.bufferTextMapGetter);\n                        const spanContext = api_1.trace\n                            .getSpan(propagatedContext)\n                            ?.spanContext();\n                        let origSpanLink;\n                        if (spanContext) {\n                            origSpanLink = {\n                                context: spanContext,\n                            };\n                        }\n                        spans.push(instrumentation._startConsumerSpan({\n                            topic: payload.batch.topic,\n                            message,\n                            operationType: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_PROCESS,\n                            link: origSpanLink,\n                            attributes: {\n                                [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition),\n                            },\n                        }));\n                        pendingMetrics.push(prepareDurationHistogram(instrumentation._processDuration, startTime, {\n                            [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                            [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'process',\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: payload.batch.topic,\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(payload.batch.partition),\n                        }));\n                    });\n                    const batchMessagePromise = original.apply(this, args);\n                    spans.unshift(receivingSpan);\n                    return instrumentation._endSpansOnPromise(spans, pendingMetrics, batchMessagePromise);\n                });\n            };\n        };\n    }\n    _getProducerTransactionPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function transaction(...args) {\n                const transactionSpan = instrumentation.tracer.startSpan('transaction');\n                const transactionPromise = original.apply(this, args);\n                transactionPromise\n                    .then((transaction) => {\n                    const originalSend = transaction.send;\n                    transaction.send = function send(...args) {\n                        return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), transactionSpan), () => {\n                            const patched = instrumentation._getSendPatch()(originalSend);\n                            return patched.apply(this, args).catch(err => {\n                                transactionSpan.setStatus({\n                                    code: api_1.SpanStatusCode.ERROR,\n                                    message: err?.message,\n                                });\n                                transactionSpan.recordException(err);\n                                throw err;\n                            });\n                        });\n                    };\n                    const originalSendBatch = transaction.sendBatch;\n                    transaction.sendBatch = function sendBatch(...args) {\n                        return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), transactionSpan), () => {\n                            const patched = instrumentation._getSendBatchPatch()(originalSendBatch);\n                            return patched.apply(this, args).catch(err => {\n                                transactionSpan.setStatus({\n                                    code: api_1.SpanStatusCode.ERROR,\n                                    message: err?.message,\n                                });\n                                transactionSpan.recordException(err);\n                                throw err;\n                            });\n                        });\n                    };\n                    const originalCommit = transaction.commit;\n                    transaction.commit = function commit(...args) {\n                        const originCommitPromise = originalCommit\n                            .apply(this, args)\n                            .then(() => {\n                            transactionSpan.setStatus({ code: api_1.SpanStatusCode.OK });\n                        });\n                        return instrumentation._endSpansOnPromise([transactionSpan], [], originCommitPromise);\n                    };\n                    const originalAbort = transaction.abort;\n                    transaction.abort = function abort(...args) {\n                        const originAbortPromise = originalAbort.apply(this, args);\n                        return instrumentation._endSpansOnPromise([transactionSpan], [], originAbortPromise);\n                    };\n                })\n                    .catch(err => {\n                    transactionSpan.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: err?.message,\n                    });\n                    transactionSpan.recordException(err);\n                    transactionSpan.end();\n                });\n                return transactionPromise;\n            };\n        };\n    }\n    _getSendBatchPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function sendBatch(...args) {\n                const batch = args[0];\n                const messages = batch.topicMessages || [];\n                const spans = [];\n                const pendingMetrics = [];\n                messages.forEach(topicMessage => {\n                    topicMessage.messages.forEach(message => {\n                        spans.push(instrumentation._startProducerSpan(topicMessage.topic, message));\n                        pendingMetrics.push(prepareCounter(instrumentation._sentMessages, 1, {\n                            [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                            [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topicMessage.topic,\n                            ...(message.partition !== undefined\n                                ? {\n                                    [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(message.partition),\n                                }\n                                : {}),\n                        }));\n                    });\n                });\n                const origSendResult = original.apply(this, args);\n                return instrumentation._endSpansOnPromise(spans, pendingMetrics, origSendResult);\n            };\n        };\n    }\n    _getSendPatch() {\n        const instrumentation = this;\n        return (original) => {\n            return function send(...args) {\n                const record = args[0];\n                const spans = record.messages.map(message => {\n                    return instrumentation._startProducerSpan(record.topic, message);\n                });\n                const pendingMetrics = record.messages.map(m => prepareCounter(instrumentation._sentMessages, 1, {\n                    [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                    [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                    [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: record.topic,\n                    ...(m.partition !== undefined\n                        ? {\n                            [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: String(m.partition),\n                        }\n                        : {}),\n                }));\n                const origSendResult = original.apply(this, args);\n                return instrumentation._endSpansOnPromise(spans, pendingMetrics, origSendResult);\n            };\n        };\n    }\n    _endSpansOnPromise(spans, pendingMetrics, sendPromise) {\n        return Promise.resolve(sendPromise)\n            .then(result => {\n            pendingMetrics.forEach(m => m());\n            return result;\n        })\n            .catch(reason => {\n            let errorMessage;\n            let errorType = semantic_conventions_1.ERROR_TYPE_VALUE_OTHER;\n            if (typeof reason === 'string' || reason === undefined) {\n                errorMessage = reason;\n            }\n            else if (typeof reason === 'object' &&\n                Object.prototype.hasOwnProperty.call(reason, 'message')) {\n                errorMessage = reason.message;\n                errorType = reason.constructor.name;\n            }\n            pendingMetrics.forEach(m => m(errorType));\n            spans.forEach(span => {\n                span.setAttribute(semantic_conventions_1.ATTR_ERROR_TYPE, errorType);\n                span.setStatus({\n                    code: api_1.SpanStatusCode.ERROR,\n                    message: errorMessage,\n                });\n            });\n            throw reason;\n        })\n            .finally(() => {\n            spans.forEach(span => span.end());\n        });\n    }\n    _startConsumerSpan({ topic, message, operationType, ctx, link, attributes, }) {\n        const operationName = operationType === semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n            ? 'poll' // for batch processing spans\n            : operationType; // for individual message processing spans\n        const span = this.tracer.startSpan(`${operationName} ${topic}`, {\n            kind: operationType === semconv_1.MESSAGING_OPERATION_TYPE_VALUE_RECEIVE\n                ? api_1.SpanKind.CLIENT\n                : api_1.SpanKind.CONSUMER,\n            attributes: {\n                ...attributes,\n                [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topic,\n                [semconv_1.ATTR_MESSAGING_OPERATION_TYPE]: operationType,\n                [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: operationName,\n                [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message?.key\n                    ? String(message.key)\n                    : undefined,\n                [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: message?.key && message.value === null ? true : undefined,\n                [semconv_1.ATTR_MESSAGING_KAFKA_OFFSET]: message?.offset,\n            },\n            links: link ? [link] : [],\n        }, ctx);\n        const { consumerHook } = this.getConfig();\n        if (consumerHook && message) {\n            (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumerHook(span, { topic, message }), e => {\n                if (e)\n                    this._diag.error('consumerHook error', e);\n            }, true);\n        }\n        return span;\n    }\n    _startProducerSpan(topic, message) {\n        const span = this.tracer.startSpan(`send ${topic}`, {\n            kind: api_1.SpanKind.PRODUCER,\n            attributes: {\n                [semconv_1.ATTR_MESSAGING_SYSTEM]: semconv_1.MESSAGING_SYSTEM_VALUE_KAFKA,\n                [semconv_1.ATTR_MESSAGING_DESTINATION_NAME]: topic,\n                [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: message.key\n                    ? String(message.key)\n                    : undefined,\n                [semconv_1.ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: message.key && message.value === null ? true : undefined,\n                [semconv_1.ATTR_MESSAGING_DESTINATION_PARTITION_ID]: message.partition !== undefined\n                    ? String(message.partition)\n                    : undefined,\n                [semconv_1.ATTR_MESSAGING_OPERATION_NAME]: 'send',\n                [semconv_1.ATTR_MESSAGING_OPERATION_TYPE]: semconv_1.MESSAGING_OPERATION_TYPE_VALUE_SEND,\n            },\n        });\n        message.headers = message.headers ?? {};\n        api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), message.headers);\n        const { producerHook } = this.getConfig();\n        if (producerHook) {\n            (0, instrumentation_1.safeExecuteInTheMiddle)(() => producerHook(span, { topic, message }), e => {\n                if (e)\n                    this._diag.error('producerHook error', e);\n            }, true);\n        }\n        return span;\n    }\n}\nexports.KafkaJsInstrumentation = KafkaJsInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors, Aspecto\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KafkaJsInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"KafkaJsInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.KafkaJsInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.57.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-lru-memoizer';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LruMemoizerInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nclass LruMemoizerInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('lru-memoizer', ['>=1.3 <3'], moduleExports => {\n                // moduleExports is a function which receives an options object,\n                // and returns a \"memoizer\" function upon invocation.\n                // We want to patch this \"memoizer's\" internal function\n                const asyncMemoizer = function () {\n                    // This following function is invoked every time the user wants to get a (possible) memoized value\n                    // We replace it with another function in which we bind the current context to the last argument (callback)\n                    const origMemoizer = moduleExports.apply(this, arguments);\n                    return function () {\n                        const modifiedArguments = [...arguments];\n                        // last argument is the callback\n                        const origCallback = modifiedArguments.pop();\n                        const callbackWithContext = typeof origCallback === 'function'\n                            ? api_1.context.bind(api_1.context.active(), origCallback)\n                            : origCallback;\n                        modifiedArguments.push(callbackWithContext);\n                        return origMemoizer.apply(this, modifiedArguments);\n                    };\n                };\n                // sync function preserves context, but we still need to export it\n                // as the lru-memoizer package does\n                asyncMemoizer.sync = moduleExports.sync;\n                return asyncMemoizer;\n            }, undefined // no need to disable as this instrumentation does not create any spans\n            ),\n        ];\n    }\n}\nexports.LruMemoizerInstrumentation = LruMemoizerInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LruMemoizerInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"LruMemoizerInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.LruMemoizerInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = exports.DB_SYSTEM_VALUE_MONGODB = exports.DB_SYSTEM_NAME_VALUE_MONGODB = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_OPERATION = exports.ATTR_DB_NAME = exports.ATTR_DB_MONGODB_COLLECTION = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexports.ATTR_DB_OPERATION = 'db.operation';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb';\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MongoDB\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_MONGODB = 'mongodb';\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongodbCommandType = void 0;\nvar MongodbCommandType;\n(function (MongodbCommandType) {\n    MongodbCommandType[\"CREATE_INDEXES\"] = \"createIndexes\";\n    MongodbCommandType[\"FIND_AND_MODIFY\"] = \"findAndModify\";\n    MongodbCommandType[\"IS_MASTER\"] = \"isMaster\";\n    MongodbCommandType[\"COUNT\"] = \"count\";\n    MongodbCommandType[\"AGGREGATE\"] = \"aggregate\";\n    MongodbCommandType[\"UNKNOWN\"] = \"unknown\";\n})(MongodbCommandType = exports.MongodbCommandType || (exports.MongodbCommandType = {}));\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.66.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mongodb';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongoDBInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst internal_types_1 = require(\"./internal-types\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst DEFAULT_CONFIG = {\n    requireParentSpan: true,\n};\n/** mongodb instrumentation plugin for OpenTelemetry */\nclass MongoDBInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig({ ...DEFAULT_CONFIG, ...config });\n    }\n    _updateMetricInstruments() {\n        this._connectionsUsage = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTIONS_USAGE, {\n            description: 'The number of connections that are currently in state described by the state attribute.',\n            unit: '{connection}',\n        });\n    }\n    /**\n     * Convenience function for updating the `db.client.connections.usage` metric.\n     * The name \"count\" comes from the eventual replacement for this metric per\n     * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n     */\n    _connCountAdd(n, poolName, state) {\n        this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n    }\n    init() {\n        const { v3PatchConnection: v3PatchConnection, v3UnpatchConnection: v3UnpatchConnection, } = this._getV3ConnectionPatches();\n        const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n        const { v4PatchConnectionCallback, v4PatchConnectionPromise, v4UnpatchConnection, } = this._getV4ConnectionPatches();\n        const { v4PatchConnectionPool, v4UnpatchConnectionPool } = this._getV4ConnectionPoolPatches();\n        const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('mongodb', ['>=3.3.0 <4'], undefined, undefined, [\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/core/wireprotocol/index.js', ['>=3.3.0 <4'], v3PatchConnection, v3UnpatchConnection),\n            ]),\n            new instrumentation_1.InstrumentationNodeModuleDefinition('mongodb', ['>=4.0.0 <8'], undefined, undefined, [\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection.js', ['>=4.0.0 <6.4'], v4PatchConnectionCallback, v4UnpatchConnection),\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection.js', ['>=6.4.0 <8'], v4PatchConnectionPromise, v4UnpatchConnection),\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connection_pool.js', ['>=4.0.0 <6.4'], v4PatchConnectionPool, v4UnpatchConnectionPool),\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/cmap/connect.js', ['>=4.0.0 <8'], v4PatchConnect, v4UnpatchConnect),\n                new instrumentation_1.InstrumentationNodeModuleFile('mongodb/lib/sessions.js', ['>=4.0.0 <8'], v4PatchSessions, v4UnpatchSessions),\n            ]),\n        ];\n    }\n    _getV3ConnectionPatches() {\n        return {\n            v3PatchConnection: (moduleExports) => {\n                // patch insert operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.insert)) {\n                    this._unwrap(moduleExports, 'insert');\n                }\n                this._wrap(moduleExports, 'insert', this._getV3PatchOperation('insert'));\n                // patch remove operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.remove)) {\n                    this._unwrap(moduleExports, 'remove');\n                }\n                this._wrap(moduleExports, 'remove', this._getV3PatchOperation('remove'));\n                // patch update operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.update)) {\n                    this._unwrap(moduleExports, 'update');\n                }\n                this._wrap(moduleExports, 'update', this._getV3PatchOperation('update'));\n                // patch other command\n                if ((0, instrumentation_1.isWrapped)(moduleExports.command)) {\n                    this._unwrap(moduleExports, 'command');\n                }\n                this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n                // patch query\n                if ((0, instrumentation_1.isWrapped)(moduleExports.query)) {\n                    this._unwrap(moduleExports, 'query');\n                }\n                this._wrap(moduleExports, 'query', this._getV3PatchFind());\n                // patch get more operation on cursor\n                if ((0, instrumentation_1.isWrapped)(moduleExports.getMore)) {\n                    this._unwrap(moduleExports, 'getMore');\n                }\n                this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n                return moduleExports;\n            },\n            v3UnpatchConnection: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports, 'insert');\n                this._unwrap(moduleExports, 'remove');\n                this._unwrap(moduleExports, 'update');\n                this._unwrap(moduleExports, 'command');\n                this._unwrap(moduleExports, 'query');\n                this._unwrap(moduleExports, 'getMore');\n            },\n        };\n    }\n    _getV4SessionsPatches() {\n        return {\n            v4PatchSessions: (moduleExports) => {\n                if ((0, instrumentation_1.isWrapped)(moduleExports.acquire)) {\n                    this._unwrap(moduleExports, 'acquire');\n                }\n                this._wrap(moduleExports.ServerSessionPool.prototype, 'acquire', this._getV4AcquireCommand());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.release)) {\n                    this._unwrap(moduleExports, 'release');\n                }\n                this._wrap(moduleExports.ServerSessionPool.prototype, 'release', this._getV4ReleaseCommand());\n                return moduleExports;\n            },\n            v4UnpatchSessions: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                if ((0, instrumentation_1.isWrapped)(moduleExports.acquire)) {\n                    this._unwrap(moduleExports, 'acquire');\n                }\n                if ((0, instrumentation_1.isWrapped)(moduleExports.release)) {\n                    this._unwrap(moduleExports, 'release');\n                }\n            },\n        };\n    }\n    _getV4AcquireCommand() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchAcquire() {\n                const nSessionsBeforeAcquire = this.sessions.length;\n                const session = original.call(this);\n                const nSessionsAfterAcquire = this.sessions.length;\n                if (nSessionsBeforeAcquire === nSessionsAfterAcquire) {\n                    //no session in the pool. a new session was created and used\n                    instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n                }\n                else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) {\n                    //a session was already in the pool. remove it from the pool and use it.\n                    instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n                    instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n                }\n                return session;\n            };\n        };\n    }\n    _getV4ReleaseCommand() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchRelease(session) {\n                const cmdPromise = original.call(this, session);\n                instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n                instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n                return cmdPromise;\n            };\n        };\n    }\n    _getV4ConnectionPoolPatches() {\n        return {\n            v4PatchConnectionPool: (moduleExports) => {\n                const poolPrototype = moduleExports.ConnectionPool.prototype;\n                if ((0, instrumentation_1.isWrapped)(poolPrototype.checkOut)) {\n                    this._unwrap(poolPrototype, 'checkOut');\n                }\n                this._wrap(poolPrototype, 'checkOut', this._getV4ConnectionPoolCheckOut());\n                return moduleExports;\n            },\n            v4UnpatchConnectionPool: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n            },\n        };\n    }\n    _getV4ConnectPatches() {\n        return {\n            v4PatchConnect: (moduleExports) => {\n                if ((0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n                    this._unwrap(moduleExports, 'connect');\n                }\n                this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n                return moduleExports;\n            },\n            v4UnpatchConnect: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports, 'connect');\n            },\n        };\n    }\n    // This patch will become unnecessary once\n    // https://jira.mongodb.org/browse/NODE-5639 is done.\n    _getV4ConnectionPoolCheckOut() {\n        return (original) => {\n            return function patchedCheckout(callback) {\n                const patchedCallback = api_1.context.bind(api_1.context.active(), callback);\n                return original.call(this, patchedCallback);\n            };\n        };\n    }\n    _getV4ConnectCommand() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedConnect(options, callback) {\n                // from v6.4 `connect` method only accepts an options param and returns a promise\n                // with the connection\n                if (original.length === 1) {\n                    const result = original.call(this, options);\n                    if (result && typeof result.then === 'function') {\n                        result.then(() => instrumentation.setPoolName(options), \n                        // this handler is set to pass the lint rules\n                        () => undefined);\n                    }\n                    return result;\n                }\n                // Earlier versions expects a callback param and return void\n                const patchedCallback = function (err, conn) {\n                    if (err || !conn) {\n                        callback(err, conn);\n                        return;\n                    }\n                    instrumentation.setPoolName(options);\n                    callback(err, conn);\n                };\n                return original.call(this, options, patchedCallback);\n            };\n        };\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _getV4ConnectionPatches() {\n        return {\n            v4PatchConnectionCallback: (moduleExports) => {\n                // patch insert operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.Connection.prototype.command)) {\n                    this._unwrap(moduleExports.Connection.prototype, 'command');\n                }\n                this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandCallback());\n                return moduleExports;\n            },\n            v4PatchConnectionPromise: (moduleExports) => {\n                // patch insert operation\n                if ((0, instrumentation_1.isWrapped)(moduleExports.Connection.prototype.command)) {\n                    this._unwrap(moduleExports.Connection.prototype, 'command');\n                }\n                this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandPromise());\n                return moduleExports;\n            },\n            v4UnpatchConnection: (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports.Connection.prototype, 'command');\n            },\n        };\n    }\n    /** Creates spans for common operations */\n    _getV3PatchOperation(operationName) {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedServerCommand(server, ns, ops, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = typeof options === 'function' ? options : callback;\n                if (skipInstrumentation ||\n                    typeof resultHandler !== 'function' ||\n                    typeof ops !== 'object') {\n                    if (typeof options === 'function') {\n                        return original.call(this, server, ns, ops, options);\n                    }\n                    else {\n                        return original.call(this, server, ns, ops, options, callback);\n                    }\n                }\n                const attributes = instrumentation._getV3SpanAttributes(ns, server, \n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                ops[0], operationName);\n                const spanName = instrumentation._spanNameFromAttrs(attributes);\n                const span = instrumentation.tracer.startSpan(spanName, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n                // handle when options is the callback to send the correct number of args\n                if (typeof options === 'function') {\n                    return original.call(this, server, ns, ops, patchedCallback);\n                }\n                else {\n                    return original.call(this, server, ns, ops, options, patchedCallback);\n                }\n            };\n        };\n    }\n    /** Creates spans for command operation */\n    _getV3PatchCommand() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedServerCommand(server, ns, cmd, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = typeof options === 'function' ? options : callback;\n                if (skipInstrumentation ||\n                    typeof resultHandler !== 'function' ||\n                    typeof cmd !== 'object') {\n                    if (typeof options === 'function') {\n                        return original.call(this, server, ns, cmd, options);\n                    }\n                    else {\n                        return original.call(this, server, ns, cmd, options, callback);\n                    }\n                }\n                const commandType = MongoDBInstrumentation._getCommandType(cmd);\n                const operationName = commandType === internal_types_1.MongodbCommandType.UNKNOWN ? undefined : commandType;\n                const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, operationName);\n                const spanName = instrumentation._spanNameFromAttrs(attributes);\n                const span = instrumentation.tracer.startSpan(spanName, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n                // handle when options is the callback to send the correct number of args\n                if (typeof options === 'function') {\n                    return original.call(this, server, ns, cmd, patchedCallback);\n                }\n                else {\n                    return original.call(this, server, ns, cmd, options, patchedCallback);\n                }\n            };\n        };\n    }\n    /** Creates spans for command operation */\n    _getV4PatchCommandCallback() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedV4ServerCommand(ns, cmd, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = callback;\n                const commandType = Object.keys(cmd)[0];\n                if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n                    return original.call(this, ns, cmd, options, callback);\n                }\n                let span = undefined;\n                if (!skipInstrumentation) {\n                    const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n                    const spanName = instrumentation._spanNameFromAttrs(attributes);\n                    span = instrumentation.tracer.startSpan(spanName, {\n                        kind: api_1.SpanKind.CLIENT,\n                        attributes,\n                    });\n                }\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\n                return original.call(this, ns, cmd, options, patchedCallback);\n            };\n        };\n    }\n    _getV4PatchCommandPromise() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedV4ServerCommand(...args) {\n                const [ns, cmd] = args;\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const commandType = Object.keys(cmd)[0];\n                const resultHandler = () => undefined;\n                if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n                    return original.apply(this, args);\n                }\n                let span = undefined;\n                if (!skipInstrumentation) {\n                    const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n                    const spanName = instrumentation._spanNameFromAttrs(attributes);\n                    span = instrumentation.tracer.startSpan(spanName, {\n                        kind: api_1.SpanKind.CLIENT,\n                        attributes,\n                    });\n                }\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\n                const result = original.apply(this, args);\n                result.then((res) => patchedCallback(null, res), (err) => patchedCallback(err));\n                return result;\n            };\n        };\n    }\n    /** Creates spans for find operation */\n    _getV3PatchFind() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedServerCommand(server, ns, cmd, cursorState, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = typeof options === 'function' ? options : callback;\n                if (skipInstrumentation ||\n                    typeof resultHandler !== 'function' ||\n                    typeof cmd !== 'object') {\n                    if (typeof options === 'function') {\n                        return original.call(this, server, ns, cmd, cursorState, options);\n                    }\n                    else {\n                        return original.call(this, server, ns, cmd, cursorState, options, callback);\n                    }\n                }\n                const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, 'find');\n                const spanName = instrumentation._spanNameFromAttrs(attributes);\n                const span = instrumentation.tracer.startSpan(spanName, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n                // handle when options is the callback to send the correct number of args\n                if (typeof options === 'function') {\n                    return original.call(this, server, ns, cmd, cursorState, patchedCallback);\n                }\n                else {\n                    return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);\n                }\n            };\n        };\n    }\n    /** Creates spans for find operation */\n    _getV3PatchCursor() {\n        const instrumentation = this;\n        return (original) => {\n            return function patchedServerCommand(server, ns, cursorState, batchSize, options, callback) {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n                const resultHandler = typeof options === 'function' ? options : callback;\n                if (skipInstrumentation || typeof resultHandler !== 'function') {\n                    if (typeof options === 'function') {\n                        return original.call(this, server, ns, cursorState, batchSize, options);\n                    }\n                    else {\n                        return original.call(this, server, ns, cursorState, batchSize, options, callback);\n                    }\n                }\n                const attributes = instrumentation._getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore');\n                const spanName = instrumentation._spanNameFromAttrs(attributes);\n                const span = instrumentation.tracer.startSpan(spanName, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const patchedCallback = instrumentation._patchEnd(span, resultHandler);\n                // handle when options is the callback to send the correct number of args\n                if (typeof options === 'function') {\n                    return original.call(this, server, ns, cursorState, batchSize, patchedCallback);\n                }\n                else {\n                    return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);\n                }\n            };\n        };\n    }\n    /**\n     * Get the mongodb command type from the object.\n     * @param command Internal mongodb command object\n     */\n    static _getCommandType(command) {\n        if (command.createIndexes !== undefined) {\n            return internal_types_1.MongodbCommandType.CREATE_INDEXES;\n        }\n        else if (command.findandmodify !== undefined) {\n            return internal_types_1.MongodbCommandType.FIND_AND_MODIFY;\n        }\n        else if (command.ismaster !== undefined) {\n            return internal_types_1.MongodbCommandType.IS_MASTER;\n        }\n        else if (command.count !== undefined) {\n            return internal_types_1.MongodbCommandType.COUNT;\n        }\n        else if (command.aggregate !== undefined) {\n            return internal_types_1.MongodbCommandType.AGGREGATE;\n        }\n        else {\n            return internal_types_1.MongodbCommandType.UNKNOWN;\n        }\n    }\n    /**\n     * Determine a span's attributes by fetching related metadata from the context\n     * @param connectionCtx mongodb internal connection context\n     * @param ns mongodb namespace\n     * @param command mongodb internal representation of a command\n     */\n    _getV4SpanAttributes(connectionCtx, ns, command, operation) {\n        let host, port;\n        if (connectionCtx) {\n            const hostParts = typeof connectionCtx.address === 'string'\n                ? connectionCtx.address.split(':')\n                : '';\n            if (hostParts.length === 2) {\n                host = hostParts[0];\n                port = hostParts[1];\n            }\n        }\n        // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n        let commandObj;\n        if (command?.documents && command.documents[0]) {\n            commandObj = command.documents[0];\n        }\n        else if (command?.cursors) {\n            commandObj = command.cursors;\n        }\n        else {\n            commandObj = command;\n        }\n        return this._getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);\n    }\n    /**\n     * Determine a span's attributes by fetching related metadata from the context\n     * @param ns mongodb namespace\n     * @param topology mongodb internal representation of the network topology\n     * @param command mongodb internal representation of a command\n     */\n    _getV3SpanAttributes(ns, topology, command, operation) {\n        // Extract host/port info.\n        let host;\n        let port;\n        if (topology && topology.s) {\n            host = topology.s.options?.host ?? topology.s.host;\n            port = (topology.s.options?.port ?? topology.s.port)?.toString();\n            if (host == null || port == null) {\n                const address = topology.description?.address;\n                if (address) {\n                    const addressSegments = address.split(':');\n                    host = addressSegments[0];\n                    port = addressSegments[1];\n                }\n            }\n        }\n        // The namespace is a combination of the database name and the name of the\n        // collection or index, like so: [database-name].[collection-or-index-name].\n        // It could be a string or an instance of MongoDBNamespace, as such we\n        // always coerce to a string to extract db and collection.\n        const [dbName, dbCollection] = ns.toString().split('.');\n        // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n        const commandObj = command?.query ?? command?.q ?? command;\n        return this._getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);\n    }\n    _getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation) {\n        const attributes = {};\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n            attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MONGODB;\n            attributes[semconv_1.ATTR_DB_NAME] = dbName;\n            attributes[semconv_1.ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n            attributes[semconv_1.ATTR_DB_OPERATION] = operation;\n            attributes[semconv_1.ATTR_DB_CONNECTION_STRING] =\n                `mongodb://${host}:${port}/${dbName}`;\n        }\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB;\n            attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = dbName;\n            attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = operation;\n            attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = dbCollection;\n        }\n        if (host && port) {\n            if (this._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_NET_PEER_NAME] = host;\n            }\n            if (this._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n            }\n            const portNumber = parseInt(port, 10);\n            if (!isNaN(portNumber)) {\n                if (this._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_NET_PEER_PORT] = portNumber;\n                }\n                if (this._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber;\n                }\n            }\n        }\n        if (commandObj) {\n            const { dbStatementSerializer: configDbStatementSerializer } = this.getConfig();\n            const dbStatementSerializer = typeof configDbStatementSerializer === 'function'\n                ? configDbStatementSerializer\n                : this._defaultDbStatementSerializer.bind(this);\n            (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                const query = dbStatementSerializer(commandObj);\n                if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = query;\n                }\n                if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = query;\n                }\n            }, err => {\n                if (err) {\n                    this._diag.error('Error running dbStatementSerializer hook', err);\n                }\n            }, true);\n        }\n        return attributes;\n    }\n    _spanNameFromAttrs(attributes) {\n        let spanName;\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n            spanName =\n                [\n                    attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME],\n                    attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME],\n                ]\n                    .filter(attr => attr)\n                    .join(' ') || semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB;\n        }\n        else {\n            spanName = `mongodb.${attributes[semconv_1.ATTR_DB_OPERATION] || 'command'}`;\n        }\n        return spanName;\n    }\n    _getDefaultDbStatementReplacer() {\n        const seen = new WeakSet();\n        return (_key, value) => {\n            // undefined, boolean, number, bigint, string, symbol, function || null\n            if (typeof value !== 'object' || !value)\n                return '?';\n            // objects (including arrays)\n            if (seen.has(value))\n                return '[Circular]';\n            seen.add(value);\n            return value;\n        };\n    }\n    _defaultDbStatementSerializer(commandObj) {\n        const { enhancedDatabaseReporting } = this.getConfig();\n        if (enhancedDatabaseReporting) {\n            return JSON.stringify(commandObj);\n        }\n        return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n    }\n    /**\n     * Triggers the response hook in case it is defined.\n     * @param span The span to add the results to.\n     * @param result The command result\n     */\n    _handleExecutionResult(span, result) {\n        const { responseHook } = this.getConfig();\n        if (typeof responseHook === 'function') {\n            (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                responseHook(span, { data: result });\n            }, err => {\n                if (err) {\n                    this._diag.error('Error running response hook', err);\n                }\n            }, true);\n        }\n    }\n    /**\n     * Ends a created span.\n     * @param span The created span to end.\n     * @param resultHandler A callback function.\n     * @param connectionId: The connection ID of the Command response.\n     */\n    _patchEnd(span, resultHandler, connectionId, commandType) {\n        // mongodb is using \"tick\" when calling a callback, this way the context\n        // in final callback (resultHandler) is lost\n        const activeContext = api_1.context.active();\n        const instrumentation = this;\n        let spanEnded = false;\n        return function patchedEnd(...args) {\n            if (!spanEnded) {\n                spanEnded = true;\n                const error = args[0];\n                if (span) {\n                    if (error instanceof Error) {\n                        span.setStatus({\n                            code: api_1.SpanStatusCode.ERROR,\n                            message: error.message,\n                        });\n                    }\n                    else {\n                        const result = args[1];\n                        instrumentation._handleExecutionResult(span, result);\n                    }\n                    span.end();\n                }\n                if (commandType === 'endSessions') {\n                    instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n                }\n            }\n            return api_1.context.with(activeContext, () => {\n                return resultHandler.apply(this, args);\n            });\n        };\n    }\n    setPoolName(options) {\n        const host = options.hostAddress?.host;\n        const port = options.hostAddress?.port;\n        const database = options.dbName;\n        const poolName = `mongodb://${host}:${port}/${database}`;\n        this._poolName = poolName;\n    }\n    _checkSkipInstrumentation(currentSpan) {\n        const requireParentSpan = this.getConfig().requireParentSpan;\n        const hasNoParentSpan = currentSpan === undefined;\n        return requireParentSpan === true && hasNoParentSpan;\n    }\n}\nexports.MongoDBInstrumentation = MongoDBInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongodbCommandType = void 0;\nvar MongodbCommandType;\n(function (MongodbCommandType) {\n    MongodbCommandType[\"CREATE_INDEXES\"] = \"createIndexes\";\n    MongodbCommandType[\"FIND_AND_MODIFY\"] = \"findAndModify\";\n    MongodbCommandType[\"IS_MASTER\"] = \"isMaster\";\n    MongodbCommandType[\"COUNT\"] = \"count\";\n    MongodbCommandType[\"UNKNOWN\"] = \"unknown\";\n})(MongodbCommandType = exports.MongodbCommandType || (exports.MongodbCommandType = {}));\n//# sourceMappingURL=types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongodbCommandType = exports.MongoDBInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"MongoDBInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.MongoDBInstrumentation; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"MongodbCommandType\", { enumerable: true, get: function () { return types_1.MongodbCommandType; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_OPERATION = exports.ATTR_DB_NAME = exports.ATTR_DB_MONGODB_COLLECTION = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexports.ATTR_DB_OPERATION = 'db.operation';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.handleCallbackResponse = exports.handlePromiseResponse = exports.getAttributesFromCollection = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semconv_1 = require(\"./semconv\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nfunction getAttributesFromCollection(collection, dbSemconvStability, netSemconvStability) {\n    const attrs = {};\n    if (dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n        attrs[semconv_1.ATTR_DB_MONGODB_COLLECTION] = collection.name;\n        attrs[semconv_1.ATTR_DB_NAME] = collection.conn.name;\n        attrs[semconv_1.ATTR_DB_USER] = collection.conn.user;\n    }\n    if (dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attrs[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = collection.name;\n        attrs[semantic_conventions_1.ATTR_DB_NAMESPACE] = collection.conn.name;\n        // db.user has no stable replacement\n    }\n    if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n        attrs[semconv_1.ATTR_NET_PEER_NAME] = collection.conn.host;\n        attrs[semconv_1.ATTR_NET_PEER_PORT] = collection.conn.port;\n    }\n    if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attrs[semantic_conventions_1.ATTR_SERVER_ADDRESS] = collection.conn.host;\n        attrs[semantic_conventions_1.ATTR_SERVER_PORT] = collection.conn.port;\n    }\n    return attrs;\n}\nexports.getAttributesFromCollection = getAttributesFromCollection;\nfunction setErrorStatus(span, error = {}) {\n    span.recordException(error);\n    span.setStatus({\n        code: api_1.SpanStatusCode.ERROR,\n        message: `${error.message} ${error.code ? `\\nMongoose Error Code: ${error.code}` : ''}`,\n    });\n}\nfunction applyResponseHook(span, response, responseHook, moduleVersion = undefined) {\n    if (!responseHook) {\n        return;\n    }\n    (0, instrumentation_1.safeExecuteInTheMiddle)(() => responseHook(span, { moduleVersion, response }), e => {\n        if (e) {\n            api_1.diag.error('mongoose instrumentation: responseHook error', e);\n        }\n    }, true);\n}\nfunction handlePromiseResponse(execResponse, span, responseHook, moduleVersion = undefined) {\n    if (!(execResponse instanceof Promise)) {\n        applyResponseHook(span, execResponse, responseHook, moduleVersion);\n        span.end();\n        return execResponse;\n    }\n    return execResponse\n        .then(response => {\n        applyResponseHook(span, response, responseHook, moduleVersion);\n        return response;\n    })\n        .catch(err => {\n        setErrorStatus(span, err);\n        throw err;\n    })\n        .finally(() => span.end());\n}\nexports.handlePromiseResponse = handlePromiseResponse;\nfunction handleCallbackResponse(callback, exec, originalThis, span, args, responseHook, moduleVersion = undefined) {\n    let callbackArgumentIndex = 0;\n    if (args.length === 2) {\n        callbackArgumentIndex = 1;\n    }\n    else if (args.length === 3) {\n        callbackArgumentIndex = 2;\n    }\n    args[callbackArgumentIndex] = (err, response) => {\n        if (err) {\n            setErrorStatus(span, err);\n        }\n        else {\n            applyResponseHook(span, response, responseHook, moduleVersion);\n        }\n        span.end();\n        return callback(err, response);\n    };\n    return exec.apply(originalThis, args);\n}\nexports.handleCallbackResponse = handleCallbackResponse;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.59.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongooseInstrumentation = exports._ALREADY_INSTRUMENTED = exports._STORED_PARENT_SPAN = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst utils_1 = require(\"./utils\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst semconv_1 = require(\"./semconv\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst contextCaptureFunctionsCommon = [\n    'deleteOne',\n    'deleteMany',\n    'find',\n    'findOne',\n    'estimatedDocumentCount',\n    'countDocuments',\n    'distinct',\n    'where',\n    '$where',\n    'findOneAndUpdate',\n    'findOneAndDelete',\n    'findOneAndReplace',\n];\nconst contextCaptureFunctions6 = [\n    'remove',\n    'count',\n    'findOneAndRemove',\n    ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions7 = [\n    'count',\n    'findOneAndRemove',\n    ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\nfunction getContextCaptureFunctions(moduleVersion) {\n    /* istanbul ignore next */\n    if (!moduleVersion) {\n        return contextCaptureFunctionsCommon;\n    }\n    else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n        return contextCaptureFunctions6;\n    }\n    else if (moduleVersion.startsWith('7.')) {\n        return contextCaptureFunctions7;\n    }\n    else {\n        return contextCaptureFunctions8;\n    }\n}\nfunction instrumentRemove(moduleVersion) {\n    return ((moduleVersion &&\n        (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) ||\n        false);\n}\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion) {\n    if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n        return false;\n    }\n    const minor = parseInt(moduleVersion.split('.')[1], 10);\n    return minor >= 21;\n}\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexports._STORED_PARENT_SPAN = Symbol('stored-parent-span');\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexports._ALREADY_INSTRUMENTED = Symbol('already-instrumented');\nclass MongooseInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        const module = new instrumentation_1.InstrumentationNodeModuleDefinition('mongoose', ['>=5.9.7 <10'], this.patch.bind(this), this.unpatch.bind(this));\n        return module;\n    }\n    patch(module, moduleVersion) {\n        const moduleExports = module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save', moduleVersion));\n        // mongoose applies this code on module require:\n        // Model.prototype.$save = Model.prototype.save;\n        // which captures the save function before it is patched.\n        // so we need to apply the same logic after instrumenting the save function.\n        moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n        if (instrumentRemove(moduleVersion)) {\n            this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove', moduleVersion));\n        }\n        // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n        //\n        // See https://github.com/Automattic/mongoose/blob/7dbda12dca1bd7adb9e270d7de8ac5229606ce72/lib/document.js#L861.\n        // - `this` is a Query object\n        // - the update happens in a pre-hook that gets called when Query.exec() is already running.\n        // - when we instrument Query.exec(), we don't have access to the options yet as they get set during Query.exec() only.\n        //\n        // Unfortunately, after Query.exec() is finished, the options are left modified by the library, so just delaying\n        // attaching the attributes after the span is done is not an option. Therefore, we patch Model methods\n        // and grab the data directly where the user provides it.\n        //\n        // ref: https://github.com/Automattic/mongoose/pull/15908 (introduced this behavior)\n        if (needsDocumentMethodPatch(moduleVersion)) {\n            this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne', moduleVersion));\n            this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne', moduleVersion));\n        }\n        this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec(moduleVersion));\n        this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec(moduleVersion));\n        const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n        contextCaptureFunctions.forEach((funcName) => {\n            this._wrap(moduleExports.Query.prototype, funcName, this.patchAndCaptureSpanContext(funcName));\n        });\n        this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n        this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany', moduleVersion));\n        this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite', moduleVersion));\n        return moduleExports;\n    }\n    unpatch(module, moduleVersion) {\n        const moduleExports = module[Symbol.toStringTag] === 'Module'\n            ? module.default // ESM\n            : module; // CommonJS\n        const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n        this._unwrap(moduleExports.Model.prototype, 'save');\n        // revert the patch for $save which we applied by aliasing it to patched `save`\n        moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n        if (instrumentRemove(moduleVersion)) {\n            this._unwrap(moduleExports.Model.prototype, 'remove');\n        }\n        if (needsDocumentMethodPatch(moduleVersion)) {\n            this._unwrap(moduleExports.Model.prototype, 'updateOne');\n            this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n        }\n        this._unwrap(moduleExports.Query.prototype, 'exec');\n        this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n        contextCaptureFunctions.forEach((funcName) => {\n            this._unwrap(moduleExports.Query.prototype, funcName);\n        });\n        this._unwrap(moduleExports.Model, 'aggregate');\n        this._unwrap(moduleExports.Model, 'insertMany');\n        this._unwrap(moduleExports.Model, 'bulkWrite');\n    }\n    patchAggregateExec(moduleVersion) {\n        const self = this;\n        return (originalAggregate) => {\n            return function exec(callback) {\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return originalAggregate.apply(this, arguments);\n                }\n                const parentSpan = this[exports._STORED_PARENT_SPAN];\n                const attributes = {};\n                const { dbStatementSerializer } = self.getConfig();\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer('aggregate', {\n                        options: this.options,\n                        aggregatePipeline: this._pipeline,\n                    });\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', attributes, parentSpan);\n                return self._handleResponse(span, originalAggregate, this, arguments, callback, moduleVersion);\n            };\n        };\n    }\n    patchQueryExec(moduleVersion) {\n        const self = this;\n        return (originalExec) => {\n            return function exec(callback) {\n                // Skip if already instrumented by document instance method patch\n                if (this[exports._ALREADY_INSTRUMENTED]) {\n                    return originalExec.apply(this, arguments);\n                }\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return originalExec.apply(this, arguments);\n                }\n                const parentSpan = this[exports._STORED_PARENT_SPAN];\n                const attributes = {};\n                const { dbStatementSerializer } = self.getConfig();\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer(this.op, {\n                        // Use public API methods (getFilter/getOptions) for better compatibility\n                        condition: this.getFilter?.() ?? this._conditions,\n                        updates: this._update,\n                        options: this.getOptions?.() ?? this.options,\n                        fields: this._fields,\n                    });\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, attributes, parentSpan);\n                return self._handleResponse(span, originalExec, this, arguments, callback, moduleVersion);\n            };\n        };\n    }\n    patchOnModelMethods(op, moduleVersion) {\n        const self = this;\n        return (originalOnModelFunction) => {\n            return function method(options, callback) {\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return originalOnModelFunction.apply(this, arguments);\n                }\n                const serializePayload = { document: this };\n                if (options && !(options instanceof Function)) {\n                    serializePayload.options = options;\n                }\n                const attributes = {};\n                const { dbStatementSerializer } = self.getConfig();\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer(op, serializePayload);\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes);\n                if (options instanceof Function) {\n                    callback = options;\n                    options = undefined;\n                }\n                return self._handleResponse(span, originalOnModelFunction, this, arguments, callback, moduleVersion);\n            };\n        };\n    }\n    // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n    _patchDocumentUpdateMethods(op, moduleVersion) {\n        const self = this;\n        return (originalMethod) => {\n            return function method(update, options, callback) {\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return originalMethod.apply(this, arguments);\n                }\n                // determine actual callback since different argument patterns are allowed\n                let actualCallback = callback;\n                let actualUpdate = update;\n                let actualOptions = options;\n                if (typeof update === 'function') {\n                    actualCallback = update;\n                    actualUpdate = undefined;\n                    actualOptions = undefined;\n                }\n                else if (typeof options === 'function') {\n                    actualCallback = options;\n                    actualOptions = undefined;\n                }\n                const attributes = {};\n                const dbStatementSerializer = self.getConfig().dbStatementSerializer;\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer(op, {\n                        // Document instance methods automatically use the document's _id as filter\n                        condition: { _id: this._id },\n                        updates: actualUpdate,\n                        options: actualOptions,\n                    });\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes);\n                const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback, moduleVersion);\n                // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n                if (result && typeof result === 'object') {\n                    result[exports._ALREADY_INSTRUMENTED] = true;\n                }\n                return result;\n            };\n        };\n    }\n    patchModelStatic(op, moduleVersion) {\n        const self = this;\n        return (original) => {\n            return function patchedStatic(docsOrOps, options, callback) {\n                if (self.getConfig().requireParentSpan &&\n                    api_1.trace.getSpan(api_1.context.active()) === undefined) {\n                    return original.apply(this, arguments);\n                }\n                if (typeof options === 'function') {\n                    callback = options;\n                    options = undefined;\n                }\n                const serializePayload = {};\n                switch (op) {\n                    case 'insertMany':\n                        serializePayload.documents = docsOrOps;\n                        break;\n                    case 'bulkWrite':\n                        serializePayload.operations = docsOrOps;\n                        break;\n                    default:\n                        serializePayload.document = docsOrOps;\n                        break;\n                }\n                if (options !== undefined) {\n                    serializePayload.options = options;\n                }\n                const attributes = {};\n                const { dbStatementSerializer } = self.getConfig();\n                if (dbStatementSerializer) {\n                    const statement = dbStatementSerializer(op, serializePayload);\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                        attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n                    }\n                    if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n                    }\n                }\n                const span = self._startSpan(this.collection, this.modelName, op, attributes);\n                return self._handleResponse(span, original, this, arguments, callback, moduleVersion);\n            };\n        };\n    }\n    // we want to capture the otel span on the object which is calling exec.\n    // in the special case of aggregate, we need have no function to path\n    // on the Aggregate object to capture the context on, so we patch\n    // the aggregate of Model, and set the context on the Aggregate object\n    patchModelAggregate() {\n        const self = this;\n        return (original) => {\n            return function captureSpanContext() {\n                const currentSpan = api_1.trace.getSpan(api_1.context.active());\n                const aggregate = self._callOriginalFunction(() => original.apply(this, arguments));\n                if (aggregate)\n                    aggregate[exports._STORED_PARENT_SPAN] = currentSpan;\n                return aggregate;\n            };\n        };\n    }\n    patchAndCaptureSpanContext(funcName) {\n        const self = this;\n        return (original) => {\n            return function captureSpanContext() {\n                this[exports._STORED_PARENT_SPAN] = api_1.trace.getSpan(api_1.context.active());\n                return self._callOriginalFunction(() => original.apply(this, arguments));\n            };\n        };\n    }\n    _startSpan(collection, modelName, operation, attributes, parentSpan) {\n        const finalAttributes = {\n            ...attributes,\n            ...(0, utils_1.getAttributesFromCollection)(collection, this._dbSemconvStability, this._netSemconvStability),\n        };\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n            finalAttributes[semconv_1.ATTR_DB_OPERATION] = operation;\n            finalAttributes[semconv_1.ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility\n        }\n        if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            finalAttributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = operation;\n            finalAttributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name\n        }\n        const spanName = this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE\n            ? `${operation} ${collection.name}`\n            : `mongoose.${modelName}.${operation}`;\n        return this.tracer.startSpan(spanName, {\n            kind: api_1.SpanKind.CLIENT,\n            attributes: finalAttributes,\n        }, parentSpan ? api_1.trace.setSpan(api_1.context.active(), parentSpan) : undefined);\n    }\n    _handleResponse(span, exec, originalThis, args, callback, moduleVersion = undefined) {\n        const self = this;\n        if (callback instanceof Function) {\n            return self._callOriginalFunction(() => (0, utils_1.handleCallbackResponse)(callback, exec, originalThis, span, args, self.getConfig().responseHook, moduleVersion));\n        }\n        else {\n            const response = self._callOriginalFunction(() => exec.apply(originalThis, args));\n            return (0, utils_1.handlePromiseResponse)(response, span, self.getConfig().responseHook, moduleVersion);\n        }\n    }\n    _callOriginalFunction(originalFunction) {\n        if (this.getConfig().suppressInternalInstrumentation) {\n            return api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), originalFunction);\n        }\n        else {\n            return originalFunction();\n        }\n    }\n}\nexports.MongooseInstrumentation = MongooseInstrumentation;\n//# sourceMappingURL=mongoose.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MongooseInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar mongoose_1 = require(\"./mongoose\");\nObject.defineProperty(exports, \"MongooseInstrumentation\", { enumerable: true, get: function () { return mongoose_1.MongooseInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = exports.DB_SYSTEM_VALUE_MYSQL = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_MYSQL = 'mysql';\n/**\n * Deprecated, use `db.client.connection.count` instead.\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.client.connection.count`.\n */\nexports.METRIC_DB_CLIENT_CONNECTIONS_USAGE = 'db.client.connections.usage';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Mysql specific attributes not covered by semantic conventions\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"MYSQL_VALUES\"] = \"db.mysql.values\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPoolNameOld = exports.arrayStringifyHelper = exports.getSpanName = exports.getDbValues = exports.getDbQueryText = exports.getJDBCString = exports.getConfig = void 0;\nfunction getConfig(config) {\n    const { host, port, database, user } = (config && config.connectionConfig) || config || {};\n    return { host, port, database, user };\n}\nexports.getConfig = getConfig;\nfunction getJDBCString(host, port, database) {\n    let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n    if (typeof port === 'number') {\n        jdbcString += `:${port}`;\n    }\n    if (typeof database === 'string') {\n        jdbcString += `/${database}`;\n    }\n    return jdbcString;\n}\nexports.getJDBCString = getJDBCString;\n/**\n * @returns the database query being executed.\n */\nfunction getDbQueryText(query) {\n    if (typeof query === 'string') {\n        return query;\n    }\n    else {\n        return query.sql;\n    }\n}\nexports.getDbQueryText = getDbQueryText;\nfunction getDbValues(query, values) {\n    if (typeof query === 'string') {\n        return arrayStringifyHelper(values);\n    }\n    else {\n        // According to https://github.com/mysqljs/mysql#performing-queries\n        // The values argument will override the values in the option object.\n        return arrayStringifyHelper(values || query.values);\n    }\n}\nexports.getDbValues = getDbValues;\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * TODO: revisit span name based on https://github.com/open-telemetry/semantic-conventions/blob/v1.33.0/docs/database/database-spans.md#name\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nfunction getSpanName(query) {\n    const rawQuery = typeof query === 'object' ? query.sql : query;\n    // Extract the SQL verb\n    const firstSpace = rawQuery?.indexOf(' ');\n    if (typeof firstSpace === 'number' && firstSpace !== -1) {\n        return rawQuery?.substring(0, firstSpace);\n    }\n    return rawQuery;\n}\nexports.getSpanName = getSpanName;\nfunction arrayStringifyHelper(arr) {\n    if (arr)\n        return `[${arr.toString()}]`;\n    return '';\n}\nexports.arrayStringifyHelper = arrayStringifyHelper;\nfunction getPoolNameOld(pool) {\n    const c = pool.config.connectionConfig;\n    let poolName = '';\n    poolName += c.host ? `host: '${c.host}', ` : '';\n    poolName += c.port ? `port: ${c.port}, ` : '';\n    poolName += c.database ? `database: '${c.database}', ` : '';\n    poolName += c.user ? `user: '${c.user}'` : '';\n    if (!c.user) {\n        poolName = poolName.substring(0, poolName.length - 2); //omit last comma\n    }\n    return poolName.trim();\n}\nexports.getPoolNameOld = getPoolNameOld;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.59.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mysql';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MySQLInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst AttributeNames_1 = require(\"./AttributeNames\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nclass MySQLInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    _updateMetricInstruments() {\n        this._connectionsUsageOld = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTIONS_USAGE, {\n            description: 'The number of connections that are currently in state described by the state attribute.',\n            unit: '{connection}',\n        });\n    }\n    /**\n     * Convenience function for updating the `db.client.connections.usage` metric.\n     * The name \"count\" comes from the eventually replacement for this metric per\n     * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n     */\n    _connCountAdd(n, poolNameOld, state) {\n        this._connectionsUsageOld?.add(n, { state, name: poolNameOld });\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('mysql', ['>=2.0.0 <3'], (moduleExports) => {\n                if ((0, instrumentation_1.isWrapped)(moduleExports.createConnection)) {\n                    this._unwrap(moduleExports, 'createConnection');\n                }\n                this._wrap(moduleExports, 'createConnection', this._patchCreateConnection());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.createPool)) {\n                    this._unwrap(moduleExports, 'createPool');\n                }\n                this._wrap(moduleExports, 'createPool', this._patchCreatePool());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.createPoolCluster)) {\n                    this._unwrap(moduleExports, 'createPoolCluster');\n                }\n                this._wrap(moduleExports, 'createPoolCluster', this._patchCreatePoolCluster());\n                return moduleExports;\n            }, (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports, 'createConnection');\n                this._unwrap(moduleExports, 'createPool');\n                this._unwrap(moduleExports, 'createPoolCluster');\n            }),\n        ];\n    }\n    // global export function\n    _patchCreateConnection() {\n        return (originalCreateConnection) => {\n            const thisPlugin = this;\n            return function createConnection(_connectionUri) {\n                const originalResult = originalCreateConnection(...arguments);\n                // This is unwrapped on next call after unpatch\n                thisPlugin._wrap(originalResult, 'query', thisPlugin._patchQuery(originalResult));\n                return originalResult;\n            };\n        };\n    }\n    // global export function\n    _patchCreatePool() {\n        return (originalCreatePool) => {\n            const thisPlugin = this;\n            return function createPool(_config) {\n                const pool = originalCreatePool(...arguments);\n                thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n                thisPlugin._wrap(pool, 'getConnection', thisPlugin._patchGetConnection(pool));\n                thisPlugin._wrap(pool, 'end', thisPlugin._patchPoolEnd(pool));\n                thisPlugin._setPoolCallbacks(pool, '');\n                return pool;\n            };\n        };\n    }\n    _patchPoolEnd(pool) {\n        return (originalPoolEnd) => {\n            const thisPlugin = this;\n            return function end(callback) {\n                const nAll = pool._allConnections.length;\n                const nFree = pool._freeConnections.length;\n                const nUsed = nAll - nFree;\n                const poolNameOld = (0, utils_1.getPoolNameOld)(pool);\n                thisPlugin._connCountAdd(-nUsed, poolNameOld, 'used');\n                thisPlugin._connCountAdd(-nFree, poolNameOld, 'idle');\n                originalPoolEnd.apply(pool, arguments);\n            };\n        };\n    }\n    // global export function\n    _patchCreatePoolCluster() {\n        return (originalCreatePoolCluster) => {\n            const thisPlugin = this;\n            return function createPool(_config) {\n                const cluster = originalCreatePoolCluster(...arguments);\n                // This is unwrapped on next call after unpatch\n                thisPlugin._wrap(cluster, 'getConnection', thisPlugin._patchGetConnection(cluster));\n                thisPlugin._wrap(cluster, 'add', thisPlugin._patchAdd(cluster));\n                return cluster;\n            };\n        };\n    }\n    _patchAdd(cluster) {\n        return (originalAdd) => {\n            const thisPlugin = this;\n            return function add(id, config) {\n                // Unwrap if unpatch has been called\n                if (!thisPlugin['_enabled']) {\n                    thisPlugin._unwrap(cluster, 'add');\n                    return originalAdd.apply(cluster, arguments);\n                }\n                originalAdd.apply(cluster, arguments);\n                const nodes = cluster['_nodes'];\n                if (nodes) {\n                    const nodeId = typeof id === 'object'\n                        ? 'CLUSTER::' + cluster._lastId\n                        : String(id);\n                    const pool = nodes[nodeId].pool;\n                    thisPlugin._setPoolCallbacks(pool, id);\n                }\n            };\n        };\n    }\n    // method on cluster or pool\n    _patchGetConnection(pool) {\n        return (originalGetConnection) => {\n            const thisPlugin = this;\n            return function getConnection(arg1, arg2, arg3) {\n                // Unwrap if unpatch has been called\n                if (!thisPlugin['_enabled']) {\n                    thisPlugin._unwrap(pool, 'getConnection');\n                    return originalGetConnection.apply(pool, arguments);\n                }\n                if (arguments.length === 1 && typeof arg1 === 'function') {\n                    const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg1);\n                    return originalGetConnection.call(pool, patchFn);\n                }\n                if (arguments.length === 2 && typeof arg2 === 'function') {\n                    const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg2);\n                    return originalGetConnection.call(pool, arg1, patchFn);\n                }\n                if (arguments.length === 3 && typeof arg3 === 'function') {\n                    const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg3);\n                    return originalGetConnection.call(pool, arg1, arg2, patchFn);\n                }\n                return originalGetConnection.apply(pool, arguments);\n            };\n        };\n    }\n    _getConnectionCallbackPatchFn(cb) {\n        const thisPlugin = this;\n        const activeContext = api_1.context.active();\n        return function (err, connection) {\n            if (connection) {\n                // this is the callback passed into a query\n                // no need to unwrap\n                if (!(0, instrumentation_1.isWrapped)(connection.query)) {\n                    thisPlugin._wrap(connection, 'query', thisPlugin._patchQuery(connection));\n                }\n            }\n            if (typeof cb === 'function') {\n                api_1.context.with(activeContext, cb, this, err, connection);\n            }\n        };\n    }\n    _patchQuery(connection) {\n        return (originalQuery) => {\n            const thisPlugin = this;\n            return function query(query, _valuesOrCallback, _callback) {\n                if (!thisPlugin['_enabled']) {\n                    thisPlugin._unwrap(connection, 'query');\n                    return originalQuery.apply(connection, arguments);\n                }\n                const attributes = {};\n                const { host, port, database, user } = (0, utils_1.getConfig)(connection.config);\n                const portNumber = parseInt(port, 10);\n                const dbQueryText = (0, utils_1.getDbQueryText)(query);\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MYSQL;\n                    attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = (0, utils_1.getJDBCString)(host, port, database);\n                    attributes[semconv_1.ATTR_DB_NAME] = database;\n                    attributes[semconv_1.ATTR_DB_USER] = user;\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText;\n                }\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MYSQL;\n                    attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = database;\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText;\n                }\n                if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_NET_PEER_NAME] = host;\n                    if (!isNaN(portNumber)) {\n                        attributes[semconv_1.ATTR_NET_PEER_PORT] = portNumber;\n                    }\n                }\n                if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n                    if (!isNaN(portNumber)) {\n                        attributes[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber;\n                    }\n                }\n                const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(query), {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                if (thisPlugin.getConfig().enhancedDatabaseReporting) {\n                    let values;\n                    if (Array.isArray(_valuesOrCallback)) {\n                        values = _valuesOrCallback;\n                    }\n                    else if (arguments[2]) {\n                        values = [_valuesOrCallback];\n                    }\n                    span.setAttribute(AttributeNames_1.AttributeNames.MYSQL_VALUES, (0, utils_1.getDbValues)(query, values));\n                }\n                const cbIndex = Array.from(arguments).findIndex(arg => typeof arg === 'function');\n                const parentContext = api_1.context.active();\n                if (cbIndex === -1) {\n                    const streamableQuery = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                        return originalQuery.apply(connection, arguments);\n                    });\n                    api_1.context.bind(parentContext, streamableQuery);\n                    return streamableQuery\n                        .on('error', err => span.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: err.message,\n                    }))\n                        .on('end', () => {\n                        span.end();\n                    });\n                }\n                else {\n                    thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, parentContext));\n                    return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                        return originalQuery.apply(connection, arguments);\n                    });\n                }\n            };\n        };\n    }\n    _patchCallbackQuery(span, parentContext) {\n        return (originalCallback) => {\n            return function (err, results, fields) {\n                if (err) {\n                    span.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: err.message,\n                    });\n                }\n                span.end();\n                return api_1.context.with(parentContext, () => originalCallback(...arguments));\n            };\n        };\n    }\n    _setPoolCallbacks(pool, id) {\n        const poolNameOld = id || (0, utils_1.getPoolNameOld)(pool);\n        pool.on('connection', _connection => {\n            this._connCountAdd(1, poolNameOld, 'idle');\n        });\n        pool.on('acquire', _connection => {\n            this._connCountAdd(-1, poolNameOld, 'idle');\n            this._connCountAdd(1, poolNameOld, 'used');\n        });\n        pool.on('release', _connection => {\n            this._connCountAdd(1, poolNameOld, 'idle');\n            this._connCountAdd(-1, poolNameOld, 'used');\n        });\n    }\n}\nexports.MySQLInstrumentation = MySQLInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MySQLInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"MySQLInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.MySQLInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_VALUE_MYSQL = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_MYSQL = 'mysql';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addSqlCommenterComment = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\n// NOTE: This function currently is returning false-positives\n// in cases where comment characters appear in string literals\n// (\"SELECT '-- not a comment';\" would return true, although has no comment)\nfunction hasValidSqlComment(query) {\n    const indexOpeningDashDashComment = query.indexOf('--');\n    if (indexOpeningDashDashComment >= 0) {\n        return true;\n    }\n    const indexOpeningSlashComment = query.indexOf('/*');\n    if (indexOpeningSlashComment < 0) {\n        return false;\n    }\n    const indexClosingSlashComment = query.indexOf('*/');\n    return indexOpeningDashDashComment < indexClosingSlashComment;\n}\n// sqlcommenter specification (https://google.github.io/sqlcommenter/spec/#value-serialization)\n// expects us to URL encode based on the RFC 3986 spec (https://en.wikipedia.org/wiki/Percent-encoding),\n// but encodeURIComponent does not handle some characters correctly (! ' ( ) *),\n// which means we need special handling for this\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\nfunction fixedEncodeURIComponent(str) {\n    return encodeURIComponent(str).replace(/[!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);\n}\nfunction addSqlCommenterComment(span, query) {\n    if (typeof query !== 'string' || query.length === 0) {\n        return query;\n    }\n    // As per sqlcommenter spec we shall not add a comment if there already is a comment\n    // in the query\n    if (hasValidSqlComment(query)) {\n        return query;\n    }\n    const propagator = new core_1.W3CTraceContextPropagator();\n    const headers = {};\n    propagator.inject(api_1.trace.setSpan(api_1.ROOT_CONTEXT, span), headers, api_1.defaultTextMapSetter);\n    // sqlcommenter spec requires keys in the comment to be sorted lexicographically\n    const sortedKeys = Object.keys(headers).sort();\n    if (sortedKeys.length === 0) {\n        return query;\n    }\n    const commentString = sortedKeys\n        .map(key => {\n        const encodedValue = fixedEncodeURIComponent(headers[key]);\n        return `${key}='${encodedValue}'`;\n    })\n        .join(',');\n    return `${query} /*${commentString}*/`;\n}\nexports.addSqlCommenterComment = addSqlCommenterComment;\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getConnectionPrototypeToInstrument = exports.once = exports.getSpanName = exports.getQueryText = exports.getConnectionAttributes = void 0;\nconst semconv_1 = require(\"./semconv\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\n/**\n * Get an Attributes map from a mysql connection config object\n *\n * @param config ConnectionConfig\n */\nfunction getConnectionAttributes(config, dbSemconvStability, netSemconvStability) {\n    const { host, port, database, user } = getConfig(config);\n    const attrs = {};\n    if (dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n        attrs[semconv_1.ATTR_DB_CONNECTION_STRING] = getJDBCString(host, port, database);\n        attrs[semconv_1.ATTR_DB_NAME] = database;\n        attrs[semconv_1.ATTR_DB_USER] = user;\n    }\n    if (dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attrs[semantic_conventions_1.ATTR_DB_NAMESPACE] = database;\n    }\n    const portNumber = parseInt(port, 10);\n    if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n        attrs[semconv_1.ATTR_NET_PEER_NAME] = host;\n        if (!isNaN(portNumber)) {\n            attrs[semconv_1.ATTR_NET_PEER_PORT] = portNumber;\n        }\n    }\n    if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attrs[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n        if (!isNaN(portNumber)) {\n            attrs[semantic_conventions_1.ATTR_SERVER_PORT] = portNumber;\n        }\n    }\n    return attrs;\n}\nexports.getConnectionAttributes = getConnectionAttributes;\nfunction getConfig(config) {\n    const { host, port, database, user } = (config && config.connectionConfig) || config || {};\n    return { host, port, database, user };\n}\nfunction getJDBCString(host, port, database) {\n    let jdbcString = `jdbc:mysql://${host || 'localhost'}`;\n    if (typeof port === 'number') {\n        jdbcString += `:${port}`;\n    }\n    if (typeof database === 'string') {\n        jdbcString += `/${database}`;\n    }\n    return jdbcString;\n}\n/**\n * Conjures up the value for the db.query.text attribute by formatting a SQL query.\n */\nfunction getQueryText(query, format, values, maskStatement = false, maskStatementHook = defaultMaskingHook) {\n    const [querySql, queryValues] = typeof query === 'string'\n        ? [query, values]\n        : [query.sql, hasValues(query) ? values || query.values : values];\n    try {\n        if (maskStatement) {\n            return maskStatementHook(querySql);\n        }\n        else if (format && queryValues) {\n            return format(querySql, queryValues);\n        }\n        else {\n            return querySql;\n        }\n    }\n    catch (e) {\n        return 'Could not determine the query due to an error in masking or formatting';\n    }\n}\nexports.getQueryText = getQueryText;\n/**\n * Replaces numeric values and quoted strings in the query with placeholders ('?').\n *\n * - `\\b\\d+\\b`: Matches whole numbers (integers) and replaces them with '?'.\n * - `([\"'])(?:(?=(\\\\?))\\2.)*?\\1`:\n *   - Matches quoted strings (both single `'` and double `\"` quotes).\n *   - Uses a lookahead `(?=(\\\\?))` to detect an optional backslash without consuming it immediately.\n *   - Captures the optional backslash `\\2` and ensures escaped quotes inside the string are handled correctly.\n *   - Ensures that only complete quoted strings are replaced with '?'.\n *\n * This prevents accidental replacement of escaped quotes within strings and ensures that the\n * query structure remains intact while masking sensitive data.\n */\nfunction defaultMaskingHook(query) {\n    return query\n        .replace(/\\b\\d+\\b/g, '?')\n        .replace(/([\"'])(?:(?=(\\\\?))\\2.)*?\\1/g, '?');\n}\nfunction hasValues(obj) {\n    return 'values' in obj;\n}\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns SQL statement without variable arguments or SQL verb\n */\nfunction getSpanName(query) {\n    const rawQuery = typeof query === 'object' ? query.sql : query;\n    // Extract the SQL verb\n    const firstSpace = rawQuery?.indexOf(' ');\n    if (typeof firstSpace === 'number' && firstSpace !== -1) {\n        return rawQuery?.substring(0, firstSpace);\n    }\n    return rawQuery;\n}\nexports.getSpanName = getSpanName;\nconst once = (fn) => {\n    let called = false;\n    return (...args) => {\n        if (called)\n            return;\n        called = true;\n        return fn(...args);\n    };\n};\nexports.once = once;\nfunction getConnectionPrototypeToInstrument(connection) {\n    const connectionPrototype = connection.prototype;\n    const basePrototype = Object.getPrototypeOf(connectionPrototype);\n    // mysql2@3.11.5 included a refactoring, where most code was moved out of the `Connection` class and into a shared base\n    // so we need to instrument that instead, see https://github.com/sidorares/node-mysql2/pull/3081\n    // This checks if the functions we're instrumenting are there on the base - we cannot use the presence of a base\n    // prototype since EventEmitter is the base for mysql2@<=3.11.4\n    if (typeof basePrototype?.query === 'function' &&\n        typeof basePrototype?.execute === 'function') {\n        return basePrototype;\n    }\n    // otherwise instrument the connection directly.\n    return connectionPrototype;\n}\nexports.getConnectionPrototypeToInstrument = getConnectionPrototypeToInstrument;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.59.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mysql2';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MySQL2Instrumentation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semconv_1 = require(\"./semconv\");\nconst sql_common_1 = require(\"@opentelemetry/sql-common\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst supportedVersions = ['>=1.4.2 <4'];\nclass MySQL2Instrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        let format;\n        function setFormatFunction(moduleExports) {\n            if (!format && moduleExports.format) {\n                format = moduleExports.format;\n            }\n        }\n        const patch = (ConnectionPrototype) => {\n            if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.query)) {\n                this._unwrap(ConnectionPrototype, 'query');\n            }\n            this._wrap(ConnectionPrototype, 'query', this._patchQuery(format, false));\n            if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.execute)) {\n                this._unwrap(ConnectionPrototype, 'execute');\n            }\n            this._wrap(ConnectionPrototype, 'execute', this._patchQuery(format, true));\n        };\n        const unpatch = (ConnectionPrototype) => {\n            this._unwrap(ConnectionPrototype, 'query');\n            this._unwrap(ConnectionPrototype, 'execute');\n        };\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('mysql2', supportedVersions, (moduleExports) => {\n                setFormatFunction(moduleExports);\n                return moduleExports;\n            }, () => { }, [\n                new instrumentation_1.InstrumentationNodeModuleFile('mysql2/promise.js', supportedVersions, (moduleExports) => {\n                    setFormatFunction(moduleExports);\n                    return moduleExports;\n                }, () => { }),\n                new instrumentation_1.InstrumentationNodeModuleFile('mysql2/lib/connection.js', supportedVersions, (moduleExports) => {\n                    const ConnectionPrototype = (0, utils_1.getConnectionPrototypeToInstrument)(moduleExports);\n                    patch(ConnectionPrototype);\n                    return moduleExports;\n                }, (moduleExports) => {\n                    if (moduleExports === undefined)\n                        return;\n                    const ConnectionPrototype = (0, utils_1.getConnectionPrototypeToInstrument)(moduleExports);\n                    unpatch(ConnectionPrototype);\n                }),\n            ]),\n        ];\n    }\n    _patchQuery(format, isPrepared) {\n        return (originalQuery) => {\n            const thisPlugin = this;\n            return function query(query, _valuesOrCallback, _callback) {\n                let values;\n                if (Array.isArray(_valuesOrCallback)) {\n                    values = _valuesOrCallback;\n                }\n                else if (arguments[2]) {\n                    values = [_valuesOrCallback];\n                }\n                const { maskStatement, maskStatementHook, responseHook } = thisPlugin.getConfig();\n                const attributes = (0, utils_1.getConnectionAttributes)(this.config, thisPlugin._dbSemconvStability, thisPlugin._netSemconvStability);\n                const dbQueryText = (0, utils_1.getQueryText)(query, format, values, maskStatement, maskStatementHook);\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MYSQL;\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText;\n                }\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MYSQL;\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText;\n                }\n                const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(query), {\n                    kind: api.SpanKind.CLIENT,\n                    attributes,\n                });\n                if (!isPrepared &&\n                    thisPlugin.getConfig().addSqlCommenterCommentToQueries) {\n                    arguments[0] = query =\n                        typeof query === 'string'\n                            ? (0, sql_common_1.addSqlCommenterComment)(span, query)\n                            : Object.assign(query, {\n                                sql: (0, sql_common_1.addSqlCommenterComment)(span, query.sql),\n                            });\n                }\n                const endSpan = (0, utils_1.once)((err, results) => {\n                    if (err) {\n                        span.setStatus({\n                            code: api.SpanStatusCode.ERROR,\n                            message: err.message,\n                        });\n                    }\n                    else {\n                        if (typeof responseHook === 'function') {\n                            (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                                responseHook(span, {\n                                    queryResults: results,\n                                });\n                            }, err => {\n                                if (err) {\n                                    thisPlugin._diag.warn('Failed executing responseHook', err);\n                                }\n                            }, true);\n                        }\n                    }\n                    span.end();\n                });\n                if (arguments.length === 1) {\n                    if (typeof query.onResult === 'function') {\n                        thisPlugin._wrap(query, 'onResult', thisPlugin._patchCallbackQuery(endSpan));\n                    }\n                    const streamableQuery = originalQuery.apply(this, arguments);\n                    // `end` in mysql behaves similarly to `result` in mysql2.\n                    streamableQuery\n                        .once('error', err => {\n                        endSpan(err);\n                    })\n                        .once('result', results => {\n                        endSpan(undefined, results);\n                    });\n                    return streamableQuery;\n                }\n                if (typeof arguments[1] === 'function') {\n                    thisPlugin._wrap(arguments, 1, thisPlugin._patchCallbackQuery(endSpan));\n                }\n                else if (typeof arguments[2] === 'function') {\n                    thisPlugin._wrap(arguments, 2, thisPlugin._patchCallbackQuery(endSpan));\n                }\n                return originalQuery.apply(this, arguments);\n            };\n        };\n    }\n    _patchCallbackQuery(endSpan) {\n        return (originalCallback) => {\n            return function (err, results, fields) {\n                endSpan(err, results);\n                return originalCallback(...arguments);\n            };\n        };\n    }\n}\nexports.MySQL2Instrumentation = MySQL2Instrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MySQL2Instrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"MySQL2Instrumentation\", { enumerable: true, get: function () { return instrumentation_1.MySQL2Instrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_VALUE_REDIS = exports.DB_SYSTEM_NAME_VALUE_REDIS = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_REDIS = 'redis';\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_REDIS = 'redis';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.endSpan = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst endSpan = (span, err) => {\n    if (err) {\n        span.recordException(err);\n        span.setStatus({\n            code: api_1.SpanStatusCode.ERROR,\n            message: err.message,\n        });\n    }\n    span.end();\n};\nexports.endSpan = endSpan;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultDbStatementSerializer = void 0;\n/**\n * List of regexes and the number of arguments that should be serialized for matching commands.\n * For example, HSET should serialize which key and field it's operating on, but not its value.\n * Setting the subset to -1 will serialize all arguments.\n * Commands without a match will have their first argument serialized.\n *\n * Refer to https://redis.io/commands/ for the full list.\n */\nconst serializationSubsets = [\n    {\n        regex: /^ECHO/i,\n        args: 0,\n    },\n    {\n        regex: /^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,\n        args: 1,\n    },\n    {\n        regex: /^(HSET|HMSET|LSET|LINSERT)/i,\n        args: 2,\n    },\n    {\n        regex: /^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,\n        args: -1,\n    },\n];\n/**\n * Given the redis command name and arguments, return a combination of the\n * command name + the allowed arguments according to `serializationSubsets`.\n * @param cmdName The redis command name\n * @param cmdArgs The redis command arguments\n * @returns a combination of the command name + args according to `serializationSubsets`.\n */\nconst defaultDbStatementSerializer = (cmdName, cmdArgs) => {\n    if (Array.isArray(cmdArgs) && cmdArgs.length) {\n        const nArgsToSerialize = serializationSubsets.find(({ regex }) => {\n            return regex.test(cmdName);\n        })?.args ?? 0;\n        const argsToSerialize = nArgsToSerialize >= 0 ? cmdArgs.slice(0, nArgsToSerialize) : cmdArgs;\n        if (cmdArgs.length > argsToSerialize.length) {\n            argsToSerialize.push(`[${cmdArgs.length - nArgsToSerialize} other arguments]`);\n        }\n        return `${cmdName} ${argsToSerialize.join(' ')}`;\n    }\n    return cmdName;\n};\nexports.defaultDbStatementSerializer = defaultDbStatementSerializer;\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-ioredis';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IORedisInstrumentation = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst instrumentation_2 = require(\"@opentelemetry/instrumentation\");\nconst utils_1 = require(\"./utils\");\nconst redis_common_1 = require(\"@opentelemetry/redis-common\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst DEFAULT_CONFIG = {\n    requireParentSpan: true,\n};\nclass IORedisInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config });\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig({ ...DEFAULT_CONFIG, ...config });\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('ioredis', ['>=2.0.0 <6'], (module, moduleVersion) => {\n                const moduleExports = module[Symbol.toStringTag] === 'Module'\n                    ? module.default // ESM\n                    : module; // CommonJS\n                if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.sendCommand)) {\n                    this._unwrap(moduleExports.prototype, 'sendCommand');\n                }\n                this._wrap(moduleExports.prototype, 'sendCommand', this._patchSendCommand(moduleVersion));\n                if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n                    this._unwrap(moduleExports.prototype, 'connect');\n                }\n                this._wrap(moduleExports.prototype, 'connect', this._patchConnection());\n                return module;\n            }, module => {\n                if (module === undefined)\n                    return;\n                const moduleExports = module[Symbol.toStringTag] === 'Module'\n                    ? module.default // ESM\n                    : module; // CommonJS\n                this._unwrap(moduleExports.prototype, 'sendCommand');\n                this._unwrap(moduleExports.prototype, 'connect');\n            }),\n        ];\n    }\n    /**\n     * Patch send command internal to trace requests\n     */\n    _patchSendCommand(moduleVersion) {\n        return (original) => {\n            return this._traceSendCommand(original, moduleVersion);\n        };\n    }\n    _patchConnection() {\n        return (original) => {\n            return this._traceConnection(original);\n        };\n    }\n    _traceSendCommand(original, moduleVersion) {\n        const instrumentation = this;\n        return function (cmd) {\n            if (arguments.length < 1 || typeof cmd !== 'object') {\n                return original.apply(this, arguments);\n            }\n            const config = instrumentation.getConfig();\n            const dbStatementSerializer = config.dbStatementSerializer || redis_common_1.defaultDbStatementSerializer;\n            const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;\n            if (config.requireParentSpan === true && hasNoParentSpan) {\n                return original.apply(this, arguments);\n            }\n            const attributes = {};\n            const { host, port } = this.options;\n            const dbQueryText = dbStatementSerializer(cmd.name, cmd.args);\n            if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_REDIS;\n                attributes[semconv_1.ATTR_DB_STATEMENT] = dbQueryText;\n                attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n            }\n            if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_REDIS;\n                attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbQueryText;\n            }\n            if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_NET_PEER_NAME] = host;\n                attributes[semconv_1.ATTR_NET_PEER_PORT] = port;\n            }\n            if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n                attributes[semantic_conventions_1.ATTR_SERVER_PORT] = port;\n            }\n            const span = instrumentation.tracer.startSpan(cmd.name, {\n                kind: api_1.SpanKind.CLIENT,\n                attributes,\n            });\n            const { requestHook } = config;\n            if (requestHook) {\n                (0, instrumentation_2.safeExecuteInTheMiddle)(() => requestHook(span, {\n                    moduleVersion,\n                    cmdName: cmd.name,\n                    cmdArgs: cmd.args,\n                }), e => {\n                    if (e) {\n                        api_1.diag.error('ioredis instrumentation: request hook failed', e);\n                    }\n                }, true);\n            }\n            try {\n                const result = original.apply(this, arguments);\n                const origResolve = cmd.resolve;\n                /* eslint-disable @typescript-eslint/no-explicit-any */\n                cmd.resolve = function (result) {\n                    (0, instrumentation_2.safeExecuteInTheMiddle)(() => config.responseHook?.(span, cmd.name, cmd.args, result), e => {\n                        if (e) {\n                            api_1.diag.error('ioredis instrumentation: response hook failed', e);\n                        }\n                    }, true);\n                    (0, utils_1.endSpan)(span, null);\n                    origResolve(result);\n                };\n                const origReject = cmd.reject;\n                cmd.reject = function (err) {\n                    (0, utils_1.endSpan)(span, err);\n                    origReject(err);\n                };\n                return result;\n            }\n            catch (error) {\n                (0, utils_1.endSpan)(span, error);\n                throw error;\n            }\n        };\n    }\n    _traceConnection(original) {\n        const instrumentation = this;\n        return function () {\n            const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;\n            if (instrumentation.getConfig().requireParentSpan === true &&\n                hasNoParentSpan) {\n                return original.apply(this, arguments);\n            }\n            const attributes = {};\n            const { host, port } = this.options;\n            if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_REDIS;\n                attributes[semconv_1.ATTR_DB_STATEMENT] = 'connect';\n                attributes[semconv_1.ATTR_DB_CONNECTION_STRING] = `redis://${host}:${port}`;\n            }\n            if (instrumentation._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_REDIS;\n                attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = 'connect';\n            }\n            if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                attributes[semconv_1.ATTR_NET_PEER_NAME] = host;\n                attributes[semconv_1.ATTR_NET_PEER_PORT] = port;\n            }\n            if (instrumentation._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = host;\n                attributes[semantic_conventions_1.ATTR_SERVER_PORT] = port;\n            }\n            const span = instrumentation.tracer.startSpan('connect', {\n                kind: api_1.SpanKind.CLIENT,\n                attributes,\n            });\n            try {\n                const client = original.apply(this, arguments);\n                (0, utils_1.endSpan)(span, null);\n                return client;\n            }\n            catch (error) {\n                (0, utils_1.endSpan)(span, error);\n                throw error;\n            }\n        };\n    }\n}\nexports.IORedisInstrumentation = IORedisInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IORedisInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"IORedisInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.IORedisInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-redis';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTracedCreateStreamTrace = exports.getTracedCreateClient = exports.endSpan = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst endSpan = (span, err) => {\n    if (err) {\n        span.setStatus({\n            code: api_1.SpanStatusCode.ERROR,\n            message: err.message,\n        });\n    }\n    span.end();\n};\nexports.endSpan = endSpan;\nconst getTracedCreateClient = (original) => {\n    return function createClientTrace() {\n        const client = original.apply(this, arguments);\n        return api_1.context.bind(api_1.context.active(), client);\n    };\n};\nexports.getTracedCreateClient = getTracedCreateClient;\nconst getTracedCreateStreamTrace = (original) => {\n    return function create_stream_trace() {\n        if (!Object.prototype.hasOwnProperty.call(this, 'stream')) {\n            Object.defineProperty(this, 'stream', {\n                get() {\n                    return this._patched_redis_stream;\n                },\n                set(val) {\n                    api_1.context.bind(api_1.context.active(), val);\n                    this._patched_redis_stream = val;\n                },\n            });\n        }\n        return original.apply(this, arguments);\n    };\n};\nexports.getTracedCreateStreamTrace = getTracedCreateStreamTrace;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_VALUE_REDIS = exports.DB_SYSTEM_NAME_VALUE_REDIS = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_CONNECTION_STRING = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Redis](https://redis.io/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_REDIS = 'redis';\n/**\n * Enum value \"redis\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Redis\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_REDIS = 'redis';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisInstrumentationV2_V3 = void 0;\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"../version\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../semconv\");\nconst redis_common_1 = require(\"@opentelemetry/redis-common\");\nclass RedisInstrumentationV2_V3 extends instrumentation_1.InstrumentationBase {\n    static COMPONENT = 'redis';\n    _semconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._semconvStability = config.semconvStability\n            ? config.semconvStability\n            : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig(config);\n        this._semconvStability = config.semconvStability\n            ? config.semconvStability\n            : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('redis', ['>=2.6.0 <4'], moduleExports => {\n                if ((0, instrumentation_1.isWrapped)(moduleExports.RedisClient.prototype['internal_send_command'])) {\n                    this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command');\n                }\n                this._wrap(moduleExports.RedisClient.prototype, 'internal_send_command', this._getPatchInternalSendCommand());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.RedisClient.prototype['create_stream'])) {\n                    this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n                }\n                this._wrap(moduleExports.RedisClient.prototype, 'create_stream', this._getPatchCreateStream());\n                if ((0, instrumentation_1.isWrapped)(moduleExports.createClient)) {\n                    this._unwrap(moduleExports, 'createClient');\n                }\n                this._wrap(moduleExports, 'createClient', this._getPatchCreateClient());\n                return moduleExports;\n            }, moduleExports => {\n                if (moduleExports === undefined)\n                    return;\n                this._unwrap(moduleExports.RedisClient.prototype, 'internal_send_command');\n                this._unwrap(moduleExports.RedisClient.prototype, 'create_stream');\n                this._unwrap(moduleExports, 'createClient');\n            }),\n        ];\n    }\n    /**\n     * Patch internal_send_command(...) to trace requests\n     */\n    _getPatchInternalSendCommand() {\n        const instrumentation = this;\n        return function internal_send_command(original) {\n            return function internal_send_command_trace(cmd) {\n                // Versions of redis (2.4+) use a single options object\n                // instead of named arguments\n                if (arguments.length !== 1 || typeof cmd !== 'object') {\n                    // We don't know how to trace this call, so don't start/stop a span\n                    return original.apply(this, arguments);\n                }\n                const config = instrumentation.getConfig();\n                const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;\n                if (config.requireParentSpan === true && hasNoParentSpan) {\n                    return original.apply(this, arguments);\n                }\n                const dbStatementSerializer = config?.dbStatementSerializer || redis_common_1.defaultDbStatementSerializer;\n                const attributes = {};\n                if (instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) {\n                    Object.assign(attributes, {\n                        [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_REDIS,\n                        [semconv_1.ATTR_DB_STATEMENT]: dbStatementSerializer(cmd.command, cmd.args),\n                    });\n                }\n                if (instrumentation._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    Object.assign(attributes, {\n                        [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semconv_1.DB_SYSTEM_NAME_VALUE_REDIS,\n                        [semantic_conventions_1.ATTR_DB_OPERATION_NAME]: cmd.command,\n                        [semantic_conventions_1.ATTR_DB_QUERY_TEXT]: dbStatementSerializer(cmd.command, cmd.args),\n                    });\n                }\n                const span = instrumentation.tracer.startSpan(`${RedisInstrumentationV2_V3.COMPONENT}-${cmd.command}`, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                // Set attributes for not explicitly typed RedisPluginClientTypes\n                if (this.connection_options) {\n                    const connectionAttributes = {};\n                    if (instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) {\n                        Object.assign(connectionAttributes, {\n                            [semconv_1.ATTR_NET_PEER_NAME]: this.connection_options.host,\n                            [semconv_1.ATTR_NET_PEER_PORT]: this.connection_options.port,\n                        });\n                    }\n                    if (instrumentation._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n                        Object.assign(connectionAttributes, {\n                            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: this.connection_options.host,\n                            [semantic_conventions_1.ATTR_SERVER_PORT]: this.connection_options.port,\n                        });\n                    }\n                    span.setAttributes(connectionAttributes);\n                }\n                if (this.address &&\n                    instrumentation._semconvStability & instrumentation_1.SemconvStability.OLD) {\n                    span.setAttribute(semconv_1.ATTR_DB_CONNECTION_STRING, `redis://${this.address}`);\n                }\n                const originalCallback = arguments[0].callback;\n                if (originalCallback) {\n                    const originalContext = api_1.context.active();\n                    arguments[0].callback = function callback(err, reply) {\n                        if (config?.responseHook) {\n                            const responseHook = config.responseHook;\n                            (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                                responseHook(span, cmd.command, cmd.args, reply);\n                            }, err => {\n                                if (err) {\n                                    instrumentation._diag.error('Error executing responseHook', err);\n                                }\n                            }, true);\n                        }\n                        (0, utils_1.endSpan)(span, err);\n                        return api_1.context.with(originalContext, originalCallback, this, ...arguments);\n                    };\n                }\n                try {\n                    // Span will be ended in callback\n                    return original.apply(this, arguments);\n                }\n                catch (rethrow) {\n                    (0, utils_1.endSpan)(span, rethrow);\n                    throw rethrow; // rethrow after ending span\n                }\n            };\n        };\n    }\n    _getPatchCreateClient() {\n        return function createClient(original) {\n            return (0, utils_1.getTracedCreateClient)(original);\n        };\n    }\n    _getPatchCreateStream() {\n        return function createReadStream(original) {\n            return (0, utils_1.getTracedCreateStreamTrace)(original);\n        };\n    }\n}\nexports.RedisInstrumentationV2_V3 = RedisInstrumentationV2_V3;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getClientAttributes = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../semconv\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nfunction getClientAttributes(diag, options, semconvStability) {\n    const attributes = {};\n    if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n        Object.assign(attributes, {\n            [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_REDIS,\n            [semconv_1.ATTR_NET_PEER_NAME]: options?.socket?.host,\n            [semconv_1.ATTR_NET_PEER_PORT]: options?.socket?.port,\n            [semconv_1.ATTR_DB_CONNECTION_STRING]: removeCredentialsFromDBConnectionStringAttribute(diag, options?.url),\n        });\n    }\n    if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n        Object.assign(attributes, {\n            [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semconv_1.DB_SYSTEM_NAME_VALUE_REDIS,\n            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: options?.socket?.host,\n            [semantic_conventions_1.ATTR_SERVER_PORT]: options?.socket?.port,\n        });\n    }\n    return attributes;\n}\nexports.getClientAttributes = getClientAttributes;\n/**\n * removeCredentialsFromDBConnectionStringAttribute removes basic auth from url and user_pwd from query string\n *\n * Examples:\n *   redis://user:pass@localhost:6379/mydb => redis://localhost:6379/mydb\n *   redis://localhost:6379?db=mydb&user_pwd=pass => redis://localhost:6379?db=mydb\n */\nfunction removeCredentialsFromDBConnectionStringAttribute(diag, url) {\n    if (typeof url !== 'string' || !url) {\n        return;\n    }\n    try {\n        const u = new URL(url);\n        u.searchParams.delete('user_pwd');\n        u.username = '';\n        u.password = '';\n        return u.href;\n    }\n    catch (err) {\n        diag.error('failed to sanitize redis connection url', err);\n    }\n    return;\n}\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisInstrumentationV4_V5 = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst utils_1 = require(\"./utils\");\nconst redis_common_1 = require(\"@opentelemetry/redis-common\");\n/** @knipignore */\nconst version_1 = require(\"../version\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"../semconv\");\nconst OTEL_OPEN_SPANS = Symbol('opentelemetry.instrumentation.redis.open_spans');\nconst MULTI_COMMAND_OPTIONS = Symbol('opentelemetry.instrumentation.redis.multi_command_options');\nclass RedisInstrumentationV4_V5 extends instrumentation_1.InstrumentationBase {\n    static COMPONENT = 'redis';\n    _semconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._semconvStability = config.semconvStability\n            ? config.semconvStability\n            : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig(config);\n        this._semconvStability = config.semconvStability\n            ? config.semconvStability\n            : (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        // @node-redis/client is a new package introduced and consumed by 'redis 4.0.x'\n        // on redis@4.1.0 it was changed to @redis/client.\n        // we will instrument both packages\n        return [\n            this._getInstrumentationNodeModuleDefinition('@redis/client'),\n            this._getInstrumentationNodeModuleDefinition('@node-redis/client'),\n        ];\n    }\n    _getInstrumentationNodeModuleDefinition(basePackageName) {\n        const commanderModuleFile = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/commander.js`, ['^1.0.0'], (moduleExports, moduleVersion) => {\n            const transformCommandArguments = moduleExports.transformCommandArguments;\n            if (!transformCommandArguments) {\n                this._diag.error('internal instrumentation error, missing transformCommandArguments function');\n                return moduleExports;\n            }\n            // function name and signature changed in redis 4.1.0 from 'extendWithCommands' to 'attachCommands'\n            // the matching internal package names starts with 1.0.x (for redis 4.0.x)\n            const functionToPatch = moduleVersion?.startsWith('1.0.')\n                ? 'extendWithCommands'\n                : 'attachCommands';\n            // this is the function that extend a redis client with a list of commands.\n            // the function patches the commandExecutor to record a span\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.[functionToPatch])) {\n                this._unwrap(moduleExports, functionToPatch);\n            }\n            this._wrap(moduleExports, functionToPatch, this._getPatchExtendWithCommands(transformCommandArguments));\n            return moduleExports;\n        }, (moduleExports) => {\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.extendWithCommands)) {\n                this._unwrap(moduleExports, 'extendWithCommands');\n            }\n            if ((0, instrumentation_1.isWrapped)(moduleExports?.attachCommands)) {\n                this._unwrap(moduleExports, 'attachCommands');\n            }\n        });\n        const multiCommanderModule = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/client/multi-command.js`, ['^1.0.0', '^5.0.0'], (moduleExports) => {\n            const redisClientMultiCommandPrototype = moduleExports?.default?.prototype;\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.exec)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'exec');\n            }\n            this._wrap(redisClientMultiCommandPrototype, 'exec', this._getPatchMultiCommandsExec(false));\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.execAsPipeline)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'execAsPipeline');\n            }\n            this._wrap(redisClientMultiCommandPrototype, 'execAsPipeline', this._getPatchMultiCommandsExec(true));\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.addCommand)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n            }\n            this._wrap(redisClientMultiCommandPrototype, 'addCommand', this._getPatchMultiCommandsAddCommand());\n            return moduleExports;\n        }, (moduleExports) => {\n            const redisClientMultiCommandPrototype = moduleExports?.default?.prototype;\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.exec)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'exec');\n            }\n            if ((0, instrumentation_1.isWrapped)(redisClientMultiCommandPrototype?.addCommand)) {\n                this._unwrap(redisClientMultiCommandPrototype, 'addCommand');\n            }\n        });\n        const clientIndexModule = new instrumentation_1.InstrumentationNodeModuleFile(`${basePackageName}/dist/lib/client/index.js`, ['^1.0.0', '^5.0.0'], (moduleExports) => {\n            const redisClientPrototype = moduleExports?.default?.prototype;\n            // In some @redis/client versions 'multi' is a method. In later\n            // versions, as of https://github.com/redis/node-redis/pull/2324,\n            // 'MULTI' is a method and 'multi' is a property defined in the\n            // constructor that points to 'MULTI', and therefore it will not\n            // be defined on the prototype.\n            if (redisClientPrototype?.multi) {\n                if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.multi)) {\n                    this._unwrap(redisClientPrototype, 'multi');\n                }\n                this._wrap(redisClientPrototype, 'multi', this._getPatchRedisClientMulti());\n            }\n            if (redisClientPrototype?.MULTI) {\n                if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.MULTI)) {\n                    this._unwrap(redisClientPrototype, 'MULTI');\n                }\n                this._wrap(redisClientPrototype, 'MULTI', this._getPatchRedisClientMulti());\n            }\n            if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.sendCommand)) {\n                this._unwrap(redisClientPrototype, 'sendCommand');\n            }\n            this._wrap(redisClientPrototype, 'sendCommand', this._getPatchRedisClientSendCommand());\n            this._wrap(redisClientPrototype, 'connect', this._getPatchedClientConnect());\n            return moduleExports;\n        }, (moduleExports) => {\n            const redisClientPrototype = moduleExports?.default?.prototype;\n            if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.multi)) {\n                this._unwrap(redisClientPrototype, 'multi');\n            }\n            if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.MULTI)) {\n                this._unwrap(redisClientPrototype, 'MULTI');\n            }\n            if ((0, instrumentation_1.isWrapped)(redisClientPrototype?.sendCommand)) {\n                this._unwrap(redisClientPrototype, 'sendCommand');\n            }\n        });\n        return new instrumentation_1.InstrumentationNodeModuleDefinition(basePackageName, ['^1.0.0', '^5.0.0'], (moduleExports) => {\n            return moduleExports;\n        }, () => { }, [commanderModuleFile, multiCommanderModule, clientIndexModule]);\n    }\n    // serves both for redis 4.0.x where function name is extendWithCommands\n    // and redis ^4.1.0 where function name is attachCommands\n    _getPatchExtendWithCommands(transformCommandArguments) {\n        const plugin = this;\n        return function extendWithCommandsPatchWrapper(original) {\n            return function extendWithCommandsPatch(config) {\n                if (config?.BaseClass?.name !== 'RedisClient') {\n                    return original.apply(this, arguments);\n                }\n                const origExecutor = config.executor;\n                config.executor = function (command, args) {\n                    const redisCommandArguments = transformCommandArguments(command, args).args;\n                    return plugin._traceClientCommand(origExecutor, this, arguments, redisCommandArguments);\n                };\n                return original.apply(this, arguments);\n            };\n        };\n    }\n    _getPatchMultiCommandsExec(isPipeline) {\n        const plugin = this;\n        return function execPatchWrapper(original) {\n            return function execPatch() {\n                const execRes = original.apply(this, arguments);\n                if (typeof execRes?.then !== 'function') {\n                    plugin._diag.error('non-promise result when patching exec/execAsPipeline');\n                    return execRes;\n                }\n                return execRes\n                    .then((redisRes) => {\n                    const openSpans = this[OTEL_OPEN_SPANS];\n                    plugin._endSpansWithRedisReplies(openSpans, redisRes, isPipeline);\n                    return redisRes;\n                })\n                    .catch((err) => {\n                    const openSpans = this[OTEL_OPEN_SPANS];\n                    if (!openSpans) {\n                        plugin._diag.error('cannot find open spans to end for multi/pipeline');\n                    }\n                    else {\n                        const replies = err.constructor.name === 'MultiErrorReply'\n                            ? err.replies\n                            : new Array(openSpans.length).fill(err);\n                        plugin._endSpansWithRedisReplies(openSpans, replies, isPipeline);\n                    }\n                    return Promise.reject(err);\n                });\n            };\n        };\n    }\n    _getPatchMultiCommandsAddCommand() {\n        const plugin = this;\n        return function addCommandWrapper(original) {\n            return function addCommandPatch(args) {\n                return plugin._traceClientCommand(original, this, arguments, args);\n            };\n        };\n    }\n    _getPatchRedisClientMulti() {\n        return function multiPatchWrapper(original) {\n            return function multiPatch() {\n                const multiRes = original.apply(this, arguments);\n                multiRes[MULTI_COMMAND_OPTIONS] = this.options;\n                return multiRes;\n            };\n        };\n    }\n    _getPatchRedisClientSendCommand() {\n        const plugin = this;\n        return function sendCommandWrapper(original) {\n            return function sendCommandPatch(args) {\n                return plugin._traceClientCommand(original, this, arguments, args);\n            };\n        };\n    }\n    _getPatchedClientConnect() {\n        const plugin = this;\n        return function connectWrapper(original) {\n            return function patchedConnect() {\n                const options = this.options;\n                const attributes = (0, utils_1.getClientAttributes)(plugin._diag, options, plugin._semconvStability);\n                const span = plugin.tracer.startSpan(`${RedisInstrumentationV4_V5.COMPONENT}-connect`, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes,\n                });\n                const res = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                    return original.apply(this);\n                });\n                return res\n                    .then((result) => {\n                    span.end();\n                    return result;\n                })\n                    .catch((error) => {\n                    span.recordException(error);\n                    span.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: error.message,\n                    });\n                    span.end();\n                    return Promise.reject(error);\n                });\n            };\n        };\n    }\n    _traceClientCommand(origFunction, origThis, origArguments, redisCommandArguments) {\n        const hasNoParentSpan = api_1.trace.getSpan(api_1.context.active()) === undefined;\n        if (hasNoParentSpan && this.getConfig().requireParentSpan) {\n            return origFunction.apply(origThis, origArguments);\n        }\n        const clientOptions = origThis.options || origThis[MULTI_COMMAND_OPTIONS];\n        const commandName = redisCommandArguments[0]; // types also allows it to be a Buffer, but in practice it only string\n        const commandArgs = redisCommandArguments.slice(1);\n        const dbStatementSerializer = this.getConfig().dbStatementSerializer || redis_common_1.defaultDbStatementSerializer;\n        const attributes = (0, utils_1.getClientAttributes)(this._diag, clientOptions, this._semconvStability);\n        if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n            attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = commandName;\n        }\n        try {\n            const dbStatement = dbStatementSerializer(commandName, commandArgs);\n            if (dbStatement != null) {\n                if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = dbStatement;\n                }\n                if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = dbStatement;\n                }\n            }\n        }\n        catch (e) {\n            this._diag.error('dbStatementSerializer throw an exception', e, {\n                commandName,\n            });\n        }\n        const span = this.tracer.startSpan(`${RedisInstrumentationV4_V5.COMPONENT}-${commandName}`, {\n            kind: api_1.SpanKind.CLIENT,\n            attributes,\n        });\n        const res = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n            return origFunction.apply(origThis, origArguments);\n        });\n        if (typeof res?.then === 'function') {\n            res.then((redisRes) => {\n                this._endSpanWithResponse(span, commandName, commandArgs, redisRes, undefined);\n            }, (err) => {\n                this._endSpanWithResponse(span, commandName, commandArgs, null, err);\n            });\n        }\n        else {\n            const redisClientMultiCommand = res;\n            redisClientMultiCommand[OTEL_OPEN_SPANS] =\n                redisClientMultiCommand[OTEL_OPEN_SPANS] || [];\n            redisClientMultiCommand[OTEL_OPEN_SPANS].push({\n                span,\n                commandName,\n                commandArgs,\n            });\n        }\n        return res;\n    }\n    _endSpansWithRedisReplies(openSpans, replies, isPipeline = false) {\n        if (!openSpans) {\n            return this._diag.error('cannot find open spans to end for redis multi/pipeline');\n        }\n        if (replies.length !== openSpans.length) {\n            return this._diag.error('number of multi command spans does not match response from redis');\n        }\n        // Determine a single operation name for the batch of commands.\n        // If all commands are identical, include the command name (e.g., \"MULTI SET\").\n        // Otherwise, use a generic \"MULTI\" or \"PIPELINE\" label for the span.\n        const allCommands = openSpans.map(s => s.commandName);\n        const allSameCommand = allCommands.every(cmd => cmd === allCommands[0]);\n        const operationName = allSameCommand\n            ? (isPipeline ? 'PIPELINE ' : 'MULTI ') + allCommands[0]\n            : isPipeline\n                ? 'PIPELINE'\n                : 'MULTI';\n        for (let i = 0; i < openSpans.length; i++) {\n            const { span, commandArgs } = openSpans[i];\n            const currCommandRes = replies[i];\n            const [res, err] = currCommandRes instanceof Error\n                ? [null, currCommandRes]\n                : [currCommandRes, undefined];\n            if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n                span.setAttribute(semantic_conventions_1.ATTR_DB_OPERATION_NAME, operationName);\n            }\n            this._endSpanWithResponse(span, allCommands[i], commandArgs, res, err);\n        }\n    }\n    _endSpanWithResponse(span, commandName, commandArgs, response, error) {\n        const { responseHook } = this.getConfig();\n        if (!error && responseHook) {\n            try {\n                responseHook(span, commandName, commandArgs, response);\n            }\n            catch (err) {\n                this._diag.error('responseHook throw an exception', err);\n            }\n        }\n        if (error) {\n            span.recordException(error);\n            span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error?.message });\n        }\n        span.end();\n    }\n}\nexports.RedisInstrumentationV4_V5 = RedisInstrumentationV4_V5;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst instrumentation_2 = require(\"./v2-v3/instrumentation\");\nconst instrumentation_3 = require(\"./v4-v5/instrumentation\");\nconst DEFAULT_CONFIG = {\n    requireParentSpan: false,\n};\n// Wrapper RedisInstrumentation that address all supported versions\nclass RedisInstrumentation extends instrumentation_1.InstrumentationBase {\n    instrumentationV2_V3;\n    instrumentationV4_V5;\n    // this is used to bypass a flaw in the base class constructor, which is calling\n    // member functions before the constructor has a chance to fully initialize the member variables.\n    initialized = false;\n    constructor(config = {}) {\n        const resolvedConfig = { ...DEFAULT_CONFIG, ...config };\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, resolvedConfig);\n        this.instrumentationV2_V3 = new instrumentation_2.RedisInstrumentationV2_V3(this.getConfig());\n        this.instrumentationV4_V5 = new instrumentation_3.RedisInstrumentationV4_V5(this.getConfig());\n        this.initialized = true;\n    }\n    setConfig(config = {}) {\n        const newConfig = { ...DEFAULT_CONFIG, ...config };\n        super.setConfig(newConfig);\n        if (!this.initialized) {\n            return;\n        }\n        this.instrumentationV2_V3.setConfig(newConfig);\n        this.instrumentationV4_V5.setConfig(newConfig);\n    }\n    init() { }\n    // Return underlying modules, as consumers (like https://github.com/DrewCorlin/opentelemetry-node-bundler-plugins) may\n    // expect them to be populated without knowing that this module wraps 2 instrumentations\n    getModuleDefinitions() {\n        return [\n            ...this.instrumentationV2_V3.getModuleDefinitions(),\n            ...this.instrumentationV4_V5.getModuleDefinitions(),\n        ];\n    }\n    setTracerProvider(tracerProvider) {\n        super.setTracerProvider(tracerProvider);\n        if (!this.initialized) {\n            return;\n        }\n        this.instrumentationV2_V3.setTracerProvider(tracerProvider);\n        this.instrumentationV4_V5.setTracerProvider(tracerProvider);\n    }\n    enable() {\n        super.enable();\n        if (!this.initialized) {\n            return;\n        }\n        this.instrumentationV2_V3.enable();\n        this.instrumentationV4_V5.enable();\n    }\n    disable() {\n        super.disable();\n        if (!this.initialized) {\n            return;\n        }\n        this.instrumentationV2_V3.disable();\n        this.instrumentationV4_V5.disable();\n    }\n}\nexports.RedisInstrumentation = RedisInstrumentation;\n//# sourceMappingURL=redis.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisInstrumentation = void 0;\nvar redis_1 = require(\"./redis\");\nObject.defineProperty(exports, \"RedisInstrumentation\", { enumerable: true, get: function () { return redis_1.RedisInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENT_LISTENERS_SET = void 0;\nexports.EVENT_LISTENERS_SET = Symbol('opentelemetry.instrumentation.pg.eventListenersSet');\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Postgresql specific attributes not covered by semantic conventions\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"PG_VALUES\"] = \"db.postgresql.values\";\n    AttributeNames[\"PG_PLAN\"] = \"db.postgresql.plan\";\n    AttributeNames[\"IDLE_TIMEOUT_MILLIS\"] = \"db.postgresql.idle.timeout.millis\";\n    AttributeNames[\"MAX_CLIENT\"] = \"db.postgresql.max.client\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = exports.METRIC_DB_CLIENT_CONNECTION_COUNT = exports.DB_SYSTEM_VALUE_POSTGRESQL = exports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = exports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = exports.ATTR_DB_CONNECTION_STRING = exports.ATTR_DB_CLIENT_CONNECTION_STATE = exports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * 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.\n *\n * @example myDataSource\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name';\n/**\n * The state of a connection in the pool\n *\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state';\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle';\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used';\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexports.DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql';\n/**\n * The number of connections that are currently in state described by the `state` attribute\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count';\n/**\n * The number of current pending requests for an open connection\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Contains span names produced by instrumentation\nvar SpanNames;\n(function (SpanNames) {\n    SpanNames[\"QUERY_PREFIX\"] = \"pg.query\";\n    SpanNames[\"CONNECT\"] = \"pg.connect\";\n    SpanNames[\"POOL_CONNECT\"] = \"pg-pool.connect\";\n})(SpanNames = exports.SpanNames || (exports.SpanNames = {}));\n//# sourceMappingURL=SpanNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizedErrorMessage = exports.isObjectWithTextString = exports.getErrorMessage = exports.patchClientConnectCallback = exports.patchCallbackPGPool = exports.updateCounter = exports.getPoolName = exports.patchCallback = exports.handleExecutionResult = exports.handleConfigQuery = exports.shouldSkipInstrumentation = exports.getSemanticAttributesFromPoolConnection = exports.getSemanticAttributesFromConnection = exports.getConnectionString = exports.parseAndMaskConnectionString = exports.parseNormalizedOperationName = exports.getQuerySpanName = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst SpanNames_1 = require(\"./enums/SpanNames\");\n/**\n * Helper function to get a low cardinality span name from whatever info we have\n * about the query.\n *\n * This is tricky, because we don't have most of the information (table name,\n * operation name, etc) the spec recommends using to build a low-cardinality\n * value w/o parsing. So, we use db.name and assume that, if the query's a named\n * prepared statement, those `name` values will be low cardinality. If we don't\n * have a named prepared statement, we try to parse an operation (despite the\n * spec's warnings).\n *\n * @params dbName The name of the db against which this query is being issued,\n *   which could be missing if no db name was given at the time that the\n *   connection was established.\n * @params queryConfig Information we have about the query being issued, typed\n *   to reflect only the validation we've actually done on the args to\n *   `client.query()`. This will be undefined if `client.query()` was called\n *   with invalid arguments.\n */\nfunction getQuerySpanName(dbName, queryConfig) {\n    // NB: when the query config is invalid, we omit the dbName too, so that\n    // someone (or some tool) reading the span name doesn't misinterpret the\n    // dbName as being a prepared statement or sql commit name.\n    if (!queryConfig)\n        return SpanNames_1.SpanNames.QUERY_PREFIX;\n    // Either the name of a prepared statement; or an attempted parse\n    // of the SQL command, normalized to uppercase; or unknown.\n    const command = typeof queryConfig.name === 'string' && queryConfig.name\n        ? queryConfig.name\n        : parseNormalizedOperationName(queryConfig.text);\n    return `${SpanNames_1.SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`;\n}\nexports.getQuerySpanName = getQuerySpanName;\nfunction parseNormalizedOperationName(queryText) {\n    // Trim the query text to handle leading/trailing whitespace\n    const trimmedQuery = queryText.trim();\n    const indexOfFirstSpace = trimmedQuery.indexOf(' ');\n    let sqlCommand = indexOfFirstSpace === -1\n        ? trimmedQuery\n        : trimmedQuery.slice(0, indexOfFirstSpace);\n    sqlCommand = sqlCommand.toUpperCase();\n    // Handle query text being \"COMMIT;\", which has an extra semicolon before the space.\n    return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand;\n}\nexports.parseNormalizedOperationName = parseNormalizedOperationName;\nfunction parseAndMaskConnectionString(connectionString) {\n    try {\n        // Parse the connection string\n        const url = new URL(connectionString);\n        // Remove all auth information (username and password)\n        url.username = '';\n        url.password = '';\n        return url.toString();\n    }\n    catch (e) {\n        // If parsing fails, return a generic connection string\n        return 'postgresql://localhost:5432/';\n    }\n}\nexports.parseAndMaskConnectionString = parseAndMaskConnectionString;\nfunction getConnectionString(params) {\n    if ('connectionString' in params && params.connectionString) {\n        return parseAndMaskConnectionString(params.connectionString);\n    }\n    const host = params.host || 'localhost';\n    const port = params.port || 5432;\n    const database = params.database || '';\n    return `postgresql://${host}:${port}/${database}`;\n}\nexports.getConnectionString = getConnectionString;\nfunction getPort(port) {\n    // Port may be NaN as parseInt() is used on the value, passing null will result in NaN being parsed.\n    // https://github.com/brianc/node-postgres/blob/2a8efbee09a284be12748ed3962bc9b816965e36/packages/pg/lib/connection-parameters.js#L66\n    if (Number.isInteger(port)) {\n        return port;\n    }\n    // Unable to find the default used in pg code, so falling back to 'undefined'.\n    return undefined;\n}\nfunction getSemanticAttributesFromConnection(params, semconvStability) {\n    let attributes = {};\n    if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n        attributes = {\n            ...attributes,\n            [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n            [semconv_1.ATTR_DB_NAME]: params.database,\n            [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n            [semconv_1.ATTR_DB_USER]: params.user,\n            [semconv_1.ATTR_NET_PEER_NAME]: params.host,\n            [semconv_1.ATTR_NET_PEER_PORT]: getPort(params.port),\n        };\n    }\n    if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attributes = {\n            ...attributes,\n            [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n            [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace,\n            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: params.host,\n            [semantic_conventions_1.ATTR_SERVER_PORT]: getPort(params.port),\n        };\n    }\n    return attributes;\n}\nexports.getSemanticAttributesFromConnection = getSemanticAttributesFromConnection;\nfunction getSemanticAttributesFromPoolConnection(params, semconvStability) {\n    let url;\n    try {\n        url = params.connectionString\n            ? new URL(params.connectionString)\n            : undefined;\n    }\n    catch (e) {\n        url = undefined;\n    }\n    let attributes = {\n        [AttributeNames_1.AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis,\n        [AttributeNames_1.AttributeNames.MAX_CLIENT]: params.maxClient,\n    };\n    if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n        attributes = {\n            ...attributes,\n            [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n            [semconv_1.ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database,\n            [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n            [semconv_1.ATTR_NET_PEER_NAME]: url?.hostname ?? params.host,\n            [semconv_1.ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port),\n            [semconv_1.ATTR_DB_USER]: url?.username ?? params.user,\n        };\n    }\n    if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n        attributes = {\n            ...attributes,\n            [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n            [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace,\n            [semantic_conventions_1.ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host,\n            [semantic_conventions_1.ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port),\n        };\n    }\n    return attributes;\n}\nexports.getSemanticAttributesFromPoolConnection = getSemanticAttributesFromPoolConnection;\nfunction shouldSkipInstrumentation(instrumentationConfig) {\n    return (instrumentationConfig.requireParentSpan === true &&\n        api_1.trace.getSpan(api_1.context.active()) === undefined);\n}\nexports.shouldSkipInstrumentation = shouldSkipInstrumentation;\n// Create a span from our normalized queryConfig object,\n// or return a basic span if no queryConfig was given/could be created.\nfunction handleConfigQuery(tracer, instrumentationConfig, semconvStability, queryConfig) {\n    // Create child span.\n    const { connectionParameters } = this;\n    const dbName = connectionParameters.database;\n    const spanName = getQuerySpanName(dbName, queryConfig);\n    const span = tracer.startSpan(spanName, {\n        kind: api_1.SpanKind.CLIENT,\n        attributes: getSemanticAttributesFromConnection(connectionParameters, semconvStability),\n    });\n    if (!queryConfig) {\n        return span;\n    }\n    // Set attributes\n    if (queryConfig.text) {\n        if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n            span.setAttribute(semconv_1.ATTR_DB_STATEMENT, queryConfig.text);\n        }\n        if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n            span.setAttribute(semantic_conventions_1.ATTR_DB_QUERY_TEXT, queryConfig.text);\n        }\n    }\n    if (instrumentationConfig.enhancedDatabaseReporting &&\n        Array.isArray(queryConfig.values)) {\n        try {\n            const convertedValues = queryConfig.values.map(value => {\n                if (value == null) {\n                    return 'null';\n                }\n                else if (value instanceof Buffer) {\n                    return value.toString();\n                }\n                else if (typeof value === 'object') {\n                    if (typeof value.toPostgres === 'function') {\n                        return value.toPostgres();\n                    }\n                    return JSON.stringify(value);\n                }\n                else {\n                    //string, number\n                    return value.toString();\n                }\n            });\n            span.setAttribute(AttributeNames_1.AttributeNames.PG_VALUES, convertedValues);\n        }\n        catch (e) {\n            api_1.diag.error('failed to stringify ', queryConfig.values, e);\n        }\n    }\n    // Set plan name attribute, if present\n    if (typeof queryConfig.name === 'string') {\n        span.setAttribute(AttributeNames_1.AttributeNames.PG_PLAN, queryConfig.name);\n    }\n    return span;\n}\nexports.handleConfigQuery = handleConfigQuery;\nfunction handleExecutionResult(config, span, pgResult) {\n    if (typeof config.responseHook === 'function') {\n        (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n            config.responseHook(span, {\n                data: pgResult,\n            });\n        }, err => {\n            if (err) {\n                api_1.diag.error('Error running response hook', err);\n            }\n        }, true);\n    }\n}\nexports.handleExecutionResult = handleExecutionResult;\nfunction patchCallback(instrumentationConfig, span, cb, attributes, recordDuration) {\n    return function patchedCallback(err, res) {\n        if (err) {\n            if (Object.prototype.hasOwnProperty.call(err, 'code')) {\n                attributes[semantic_conventions_1.ATTR_ERROR_TYPE] = err['code'];\n            }\n            if (err instanceof Error) {\n                span.recordException(sanitizedErrorMessage(err));\n            }\n            span.setStatus({\n                code: api_1.SpanStatusCode.ERROR,\n                message: err.message,\n            });\n        }\n        else {\n            handleExecutionResult(instrumentationConfig, span, res);\n        }\n        recordDuration();\n        span.end();\n        cb.call(this, err, res);\n    };\n}\nexports.patchCallback = patchCallback;\nfunction getPoolName(pool) {\n    let poolName = '';\n    poolName += (pool?.host ? `${pool.host}` : 'unknown_host') + ':';\n    poolName += (pool?.port ? `${pool.port}` : 'unknown_port') + '/';\n    poolName += pool?.database ? `${pool.database}` : 'unknown_database';\n    return poolName.trim();\n}\nexports.getPoolName = getPoolName;\nfunction updateCounter(poolName, pool, connectionCount, connectionPendingRequests, latestCounter) {\n    const all = pool.totalCount;\n    const pending = pool.waitingCount;\n    const idle = pool.idleCount;\n    const used = all - idle;\n    connectionCount.add(used - latestCounter.used, {\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n    });\n    connectionCount.add(idle - latestCounter.idle, {\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n    });\n    connectionPendingRequests.add(pending - latestCounter.pending, {\n        [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n    });\n    return { used: used, idle: idle, pending: pending };\n}\nexports.updateCounter = updateCounter;\nfunction patchCallbackPGPool(span, cb) {\n    return function patchedCallback(err, res, done) {\n        if (err) {\n            if (err instanceof Error) {\n                span.recordException(sanitizedErrorMessage(err));\n            }\n            span.setStatus({\n                code: api_1.SpanStatusCode.ERROR,\n                message: err.message,\n            });\n        }\n        span.end();\n        cb.call(this, err, res, done);\n    };\n}\nexports.patchCallbackPGPool = patchCallbackPGPool;\nfunction patchClientConnectCallback(span, cb) {\n    return function patchedClientConnectCallback(err) {\n        if (err) {\n            if (err instanceof Error) {\n                span.recordException(sanitizedErrorMessage(err));\n            }\n            span.setStatus({\n                code: api_1.SpanStatusCode.ERROR,\n                message: err.message,\n            });\n        }\n        span.end();\n        cb.apply(this, arguments);\n    };\n}\nexports.patchClientConnectCallback = patchClientConnectCallback;\n/**\n * Attempt to get a message string from a thrown value, while being quite\n * defensive, to recognize the fact that, in JS, any kind of value (even\n * primitives) can be thrown.\n */\nfunction getErrorMessage(e) {\n    return typeof e === 'object' && e !== null && 'message' in e\n        ? String(e.message)\n        : undefined;\n}\nexports.getErrorMessage = getErrorMessage;\nfunction isObjectWithTextString(it) {\n    return (typeof it === 'object' &&\n        typeof it?.text === 'string');\n}\nexports.isObjectWithTextString = isObjectWithTextString;\n/**\n * Generates a sanitized message for the error.\n * Only includes the error type and PostgreSQL error code, omitting any sensitive details.\n */\nfunction sanitizedErrorMessage(error) {\n    const name = error?.name ?? 'PostgreSQLError';\n    const code = error?.code ?? 'UNKNOWN';\n    return `PostgreSQL error of type '${name}' occurred (code: ${code})`;\n}\nexports.sanitizedErrorMessage = sanitizedErrorMessage;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.65.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-pg';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PgInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst internal_types_1 = require(\"./internal-types\");\nconst utils = require(\"./utils\");\nconst sql_common_1 = require(\"@opentelemetry/sql-common\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst SpanNames_1 = require(\"./enums/SpanNames\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nfunction extractModuleExports(module) {\n    return module[Symbol.toStringTag] === 'Module'\n        ? module.default // ESM\n        : module; // CommonJS\n}\nclass PgInstrumentation extends instrumentation_1.InstrumentationBase {\n    // Pool events connect, acquire, release and remove can be called\n    // multiple times without changing the values of total, idle and waiting\n    // connections. The _connectionsCounter is used to keep track of latest\n    // values and only update the metrics _connectionsCount and _connectionPendingRequests\n    // when the value change.\n    _connectionsCounter = {\n        used: 0,\n        idle: 0,\n        pending: 0,\n    };\n    _semconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    _updateMetricInstruments() {\n        this._operationDuration = this.meter.createHistogram(semantic_conventions_1.METRIC_DB_CLIENT_OPERATION_DURATION, {\n            description: 'Duration of database client operations.',\n            unit: 's',\n            valueType: api_1.ValueType.DOUBLE,\n            advice: {\n                explicitBucketBoundaries: [\n                    0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10,\n                ],\n            },\n        });\n        this._connectionsCounter = {\n            idle: 0,\n            pending: 0,\n            used: 0,\n        };\n        this._connectionsCount = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTION_COUNT, {\n            description: 'The number of connections that are currently in state described by the state attribute.',\n            unit: '{connection}',\n        });\n        this._connectionPendingRequests = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, {\n            description: 'The number of current pending requests for an open connection.',\n            unit: '{connection}',\n        });\n    }\n    init() {\n        const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9'];\n        const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4'];\n        const modulePgNativeClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/native/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this));\n        const modulePgClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this));\n        const modulePG = new instrumentation_1.InstrumentationNodeModuleDefinition('pg', SUPPORTED_PG_VERSIONS, (module) => {\n            const moduleExports = extractModuleExports(module);\n            this._patchPgClient(moduleExports.Client);\n            return module;\n        }, (module) => {\n            const moduleExports = extractModuleExports(module);\n            this._unpatchPgClient(moduleExports.Client);\n            return module;\n        }, [modulePgClient, modulePgNativeClient]);\n        const modulePGPool = new instrumentation_1.InstrumentationNodeModuleDefinition('pg-pool', SUPPORTED_PG_POOL_VERSIONS, (module) => {\n            const moduleExports = extractModuleExports(module);\n            if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n                this._unwrap(moduleExports.prototype, 'connect');\n            }\n            this._wrap(moduleExports.prototype, 'connect', this._getPoolConnectPatch());\n            return moduleExports;\n        }, (module) => {\n            const moduleExports = extractModuleExports(module);\n            if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n                this._unwrap(moduleExports.prototype, 'connect');\n            }\n        });\n        return [modulePG, modulePGPool];\n    }\n    _patchPgClient(module) {\n        if (!module) {\n            return;\n        }\n        const moduleExports = extractModuleExports(module);\n        if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) {\n            this._unwrap(moduleExports.prototype, 'query');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n            this._unwrap(moduleExports.prototype, 'connect');\n        }\n        this._wrap(moduleExports.prototype, 'query', this._getClientQueryPatch());\n        this._wrap(moduleExports.prototype, 'connect', this._getClientConnectPatch());\n        return module;\n    }\n    _unpatchPgClient(module) {\n        const moduleExports = extractModuleExports(module);\n        if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) {\n            this._unwrap(moduleExports.prototype, 'query');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n            this._unwrap(moduleExports.prototype, 'connect');\n        }\n        return module;\n    }\n    _getClientConnectPatch() {\n        const plugin = this;\n        return (original) => {\n            return function connect(callback) {\n                const config = plugin.getConfig();\n                if (utils.shouldSkipInstrumentation(config) ||\n                    config.ignoreConnectSpans) {\n                    return original.call(this, callback);\n                }\n                const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.CONNECT, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes: utils.getSemanticAttributesFromConnection(this, plugin._semconvStability),\n                });\n                if (callback) {\n                    const parentSpan = api_1.trace.getSpan(api_1.context.active());\n                    callback = utils.patchClientConnectCallback(span, callback);\n                    if (parentSpan) {\n                        callback = api_1.context.bind(api_1.context.active(), callback);\n                    }\n                }\n                const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                    return original.call(this, callback);\n                });\n                return handleConnectResult(span, connectResult);\n            };\n        };\n    }\n    recordOperationDuration(attributes, startTime) {\n        const metricsAttributes = {};\n        const keysToCopy = [\n            semantic_conventions_1.ATTR_DB_NAMESPACE,\n            semantic_conventions_1.ATTR_ERROR_TYPE,\n            semantic_conventions_1.ATTR_SERVER_PORT,\n            semantic_conventions_1.ATTR_SERVER_ADDRESS,\n            semantic_conventions_1.ATTR_DB_OPERATION_NAME,\n        ];\n        if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n            keysToCopy.push(semconv_1.ATTR_DB_SYSTEM);\n        }\n        if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n            keysToCopy.push(semantic_conventions_1.ATTR_DB_SYSTEM_NAME);\n        }\n        keysToCopy.forEach(key => {\n            if (key in attributes) {\n                metricsAttributes[key] = attributes[key];\n            }\n        });\n        const durationSeconds = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())) / 1000;\n        this._operationDuration.record(durationSeconds, metricsAttributes);\n    }\n    _getClientQueryPatch() {\n        const plugin = this;\n        return (original) => {\n            this._diag.debug('Patching pg.Client.prototype.query');\n            return function query(...args) {\n                if (utils.shouldSkipInstrumentation(plugin.getConfig())) {\n                    return original.apply(this, args);\n                }\n                const startTime = (0, core_1.hrTime)();\n                // client.query(text, cb?), client.query(text, values, cb?), and\n                // client.query(configObj, cb?) are all valid signatures. We construct\n                // a queryConfig obj from all (valid) signatures to build the span in a\n                // unified way. We verify that we at least have query text, and code\n                // defensively when dealing with `queryConfig` after that (to handle all\n                // the other invalid cases, like a non-array for values being provided).\n                // The type casts here reflect only what we've actually validated.\n                const arg0 = args[0];\n                const firstArgIsString = typeof arg0 === 'string';\n                const firstArgIsQueryObjectWithText = utils.isObjectWithTextString(arg0);\n                // TODO: remove the `as ...` casts below when the TS version is upgraded.\n                // Newer TS versions will use the result of firstArgIsQueryObjectWithText\n                // to properly narrow arg0, but TS 4.3.5 does not.\n                const queryConfig = firstArgIsString\n                    ? {\n                        text: arg0,\n                        values: Array.isArray(args[1]) ? args[1] : undefined,\n                    }\n                    : firstArgIsQueryObjectWithText\n                        ? {\n                            ...arg0,\n                            name: arg0.name,\n                            text: arg0.text,\n                            values: arg0.values ??\n                                (Array.isArray(args[1]) ? args[1] : undefined),\n                        }\n                        : undefined;\n                const attributes = {\n                    [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n                    [semantic_conventions_1.ATTR_DB_NAMESPACE]: this.database,\n                    [semantic_conventions_1.ATTR_SERVER_PORT]: this.connectionParameters.port,\n                    [semantic_conventions_1.ATTR_SERVER_ADDRESS]: this.connectionParameters.host,\n                };\n                if (queryConfig?.text) {\n                    attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] =\n                        utils.parseNormalizedOperationName(queryConfig?.text);\n                }\n                const recordDuration = () => {\n                    plugin.recordOperationDuration(attributes, startTime);\n                };\n                const instrumentationConfig = plugin.getConfig();\n                const span = utils.handleConfigQuery.call(this, plugin.tracer, instrumentationConfig, plugin._semconvStability, queryConfig);\n                // Modify query text w/ a tracing comment before invoking original for\n                // tracing, but only if args[0] has one of our expected shapes.\n                if (instrumentationConfig.addSqlCommenterCommentToQueries) {\n                    if (firstArgIsString) {\n                        args[0] = (0, sql_common_1.addSqlCommenterComment)(span, arg0);\n                    }\n                    else if (firstArgIsQueryObjectWithText && !('name' in arg0)) {\n                        // In the case of a query object, we need to ensure there's no name field\n                        // as this indicates a prepared query, where the comment would remain the same\n                        // for every invocation and contain an outdated trace context.\n                        args[0] = {\n                            ...arg0,\n                            text: (0, sql_common_1.addSqlCommenterComment)(span, arg0.text),\n                        };\n                    }\n                }\n                // Bind callback (if any) to parent span (if any)\n                if (args.length > 0) {\n                    const parentSpan = api_1.trace.getSpan(api_1.context.active());\n                    if (typeof args[args.length - 1] === 'function') {\n                        // Patch ParameterQuery callback\n                        args[args.length - 1] = utils.patchCallback(instrumentationConfig, span, args[args.length - 1], // nb: not type safe.\n                        attributes, recordDuration);\n                        // If a parent span exists, bind the callback\n                        if (parentSpan) {\n                            args[args.length - 1] = api_1.context.bind(api_1.context.active(), args[args.length - 1]);\n                        }\n                    }\n                    else if (typeof queryConfig?.callback === 'function') {\n                        // Patch ConfigQuery callback\n                        let callback = utils.patchCallback(plugin.getConfig(), span, queryConfig.callback, // nb: not type safe.\n                        attributes, recordDuration);\n                        // If a parent span existed, bind the callback\n                        if (parentSpan) {\n                            callback = api_1.context.bind(api_1.context.active(), callback);\n                        }\n                        args[0].callback = callback;\n                    }\n                }\n                const { requestHook } = instrumentationConfig;\n                if (typeof requestHook === 'function' && queryConfig) {\n                    (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n                        // pick keys to expose explicitly, so we're not leaking pg package\n                        // internals that are subject to change\n                        const { database, host, port, user } = this.connectionParameters;\n                        const connection = { database, host, port, user };\n                        requestHook(span, {\n                            connection,\n                            query: {\n                                text: queryConfig.text,\n                                // nb: if `client.query` is called with illegal arguments\n                                // (e.g., if `queryConfig.values` is passed explicitly, but a\n                                // non-array is given), then the type casts will be wrong. But\n                                // we leave it up to the queryHook to handle that, and we\n                                // catch and swallow any errors it throws. The other options\n                                // are all worse. E.g., we could leave `queryConfig.values`\n                                // and `queryConfig.name` as `unknown`, but then the hook body\n                                // would be forced to validate (or cast) them before using\n                                // them, which seems incredibly cumbersome given that these\n                                // casts will be correct 99.9% of the time -- and pg.query\n                                // will immediately throw during development in the other .1%\n                                // of cases. Alternatively, we could simply skip calling the\n                                // hook when `values` or `name` don't have the expected type,\n                                // but that would add unnecessary validation overhead to every\n                                // hook invocation and possibly be even more confusing/unexpected.\n                                values: queryConfig.values,\n                                name: queryConfig.name,\n                            },\n                        });\n                    }, err => {\n                        if (err) {\n                            plugin._diag.error('Error running query hook', err);\n                        }\n                    }, true);\n                }\n                let result;\n                try {\n                    result = original.apply(this, args);\n                }\n                catch (e) {\n                    if (e instanceof Error) {\n                        span.recordException(utils.sanitizedErrorMessage(e));\n                    }\n                    span.setStatus({\n                        code: api_1.SpanStatusCode.ERROR,\n                        message: utils.getErrorMessage(e),\n                    });\n                    span.end();\n                    throw e;\n                }\n                // Bind promise to parent span and end the span\n                if (result instanceof Promise) {\n                    return result\n                        .then((result) => {\n                        // Return a pass-along promise which ends the span and then goes to user's orig resolvers\n                        return new Promise(resolve => {\n                            utils.handleExecutionResult(plugin.getConfig(), span, result);\n                            recordDuration();\n                            span.end();\n                            resolve(result);\n                        });\n                    })\n                        .catch((error) => {\n                        return new Promise((_, reject) => {\n                            if (error instanceof Error) {\n                                span.recordException(utils.sanitizedErrorMessage(error));\n                            }\n                            span.setStatus({\n                                code: api_1.SpanStatusCode.ERROR,\n                                message: error.message,\n                            });\n                            recordDuration();\n                            span.end();\n                            reject(error);\n                        });\n                    });\n                }\n                // else returns void\n                return result; // void\n            };\n        };\n    }\n    _setPoolConnectEventListeners(pgPool) {\n        if (pgPool[internal_types_1.EVENT_LISTENERS_SET])\n            return;\n        const poolName = utils.getPoolName(pgPool.options);\n        pgPool.on('connect', () => {\n            this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n        });\n        pgPool.on('acquire', () => {\n            this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n        });\n        pgPool.on('remove', () => {\n            this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n        });\n        pgPool.on('release', () => {\n            this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n        });\n        pgPool[internal_types_1.EVENT_LISTENERS_SET] = true;\n    }\n    _getPoolConnectPatch() {\n        const plugin = this;\n        return (originalConnect) => {\n            return function connect(callback) {\n                const config = plugin.getConfig();\n                if (utils.shouldSkipInstrumentation(config)) {\n                    return originalConnect.call(this, callback);\n                }\n                // Still set up event listeners for metrics even when skipping spans\n                plugin._setPoolConnectEventListeners(this);\n                if (config.ignoreConnectSpans) {\n                    return originalConnect.call(this, callback);\n                }\n                // setup span\n                const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.POOL_CONNECT, {\n                    kind: api_1.SpanKind.CLIENT,\n                    attributes: utils.getSemanticAttributesFromPoolConnection(this.options, plugin._semconvStability),\n                });\n                if (callback) {\n                    const parentSpan = api_1.trace.getSpan(api_1.context.active());\n                    callback = utils.patchCallbackPGPool(span, callback);\n                    // If a parent span exists, bind the callback\n                    if (parentSpan) {\n                        callback = api_1.context.bind(api_1.context.active(), callback);\n                    }\n                }\n                const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n                    return originalConnect.call(this, callback);\n                });\n                return handleConnectResult(span, connectResult);\n            };\n        };\n    }\n}\nexports.PgInstrumentation = PgInstrumentation;\nfunction handleConnectResult(span, connectResult) {\n    if (!(connectResult instanceof Promise)) {\n        return connectResult;\n    }\n    const connectResultPromise = connectResult;\n    return api_1.context.bind(api_1.context.active(), connectResultPromise\n        .then(result => {\n        span.end();\n        return result;\n    })\n        .catch((error) => {\n        if (error instanceof Error) {\n            span.recordException(utils.sanitizedErrorMessage(error));\n        }\n        span.setStatus({\n            code: api_1.SpanStatusCode.ERROR,\n            message: utils.getErrorMessage(error),\n        });\n        span.end();\n        return Promise.reject(error);\n    }));\n}\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = exports.PgInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"PgInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.PgInstrumentation; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeverityNumber = void 0;\nvar SeverityNumber;\n(function (SeverityNumber) {\n    SeverityNumber[SeverityNumber[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n    SeverityNumber[SeverityNumber[\"TRACE\"] = 1] = \"TRACE\";\n    SeverityNumber[SeverityNumber[\"TRACE2\"] = 2] = \"TRACE2\";\n    SeverityNumber[SeverityNumber[\"TRACE3\"] = 3] = \"TRACE3\";\n    SeverityNumber[SeverityNumber[\"TRACE4\"] = 4] = \"TRACE4\";\n    SeverityNumber[SeverityNumber[\"DEBUG\"] = 5] = \"DEBUG\";\n    SeverityNumber[SeverityNumber[\"DEBUG2\"] = 6] = \"DEBUG2\";\n    SeverityNumber[SeverityNumber[\"DEBUG3\"] = 7] = \"DEBUG3\";\n    SeverityNumber[SeverityNumber[\"DEBUG4\"] = 8] = \"DEBUG4\";\n    SeverityNumber[SeverityNumber[\"INFO\"] = 9] = \"INFO\";\n    SeverityNumber[SeverityNumber[\"INFO2\"] = 10] = \"INFO2\";\n    SeverityNumber[SeverityNumber[\"INFO3\"] = 11] = \"INFO3\";\n    SeverityNumber[SeverityNumber[\"INFO4\"] = 12] = \"INFO4\";\n    SeverityNumber[SeverityNumber[\"WARN\"] = 13] = \"WARN\";\n    SeverityNumber[SeverityNumber[\"WARN2\"] = 14] = \"WARN2\";\n    SeverityNumber[SeverityNumber[\"WARN3\"] = 15] = \"WARN3\";\n    SeverityNumber[SeverityNumber[\"WARN4\"] = 16] = \"WARN4\";\n    SeverityNumber[SeverityNumber[\"ERROR\"] = 17] = \"ERROR\";\n    SeverityNumber[SeverityNumber[\"ERROR2\"] = 18] = \"ERROR2\";\n    SeverityNumber[SeverityNumber[\"ERROR3\"] = 19] = \"ERROR3\";\n    SeverityNumber[SeverityNumber[\"ERROR4\"] = 20] = \"ERROR4\";\n    SeverityNumber[SeverityNumber[\"FATAL\"] = 21] = \"FATAL\";\n    SeverityNumber[SeverityNumber[\"FATAL2\"] = 22] = \"FATAL2\";\n    SeverityNumber[SeverityNumber[\"FATAL3\"] = 23] = \"FATAL3\";\n    SeverityNumber[SeverityNumber[\"FATAL4\"] = 24] = \"FATAL4\";\n})(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {}));\n//# sourceMappingURL=LogRecord.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER = exports.NoopLogger = void 0;\nclass NoopLogger {\n    emit(_logRecord) { }\n}\nexports.NoopLogger = NoopLogger;\nexports.NOOP_LOGGER = new NoopLogger();\n//# sourceMappingURL=NoopLogger.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass NoopLoggerProvider {\n    getLogger(_name, _version, _options) {\n        return new NoopLogger_1.NoopLogger();\n    }\n}\nexports.NoopLoggerProvider = NoopLoggerProvider;\nexports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider();\n//# sourceMappingURL=NoopLoggerProvider.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLogger = void 0;\nconst NoopLogger_1 = require(\"./NoopLogger\");\nclass ProxyLogger {\n    constructor(_provider, name, version, options) {\n        this._provider = _provider;\n        this.name = name;\n        this.version = version;\n        this.options = options;\n    }\n    /**\n     * Emit a log record. This method should only be used by log appenders.\n     *\n     * @param logRecord\n     */\n    emit(logRecord) {\n        this._getLogger().emit(logRecord);\n    }\n    /**\n     * Try to get a logger from the proxy logger provider.\n     * If the proxy logger provider has no delegate, return a noop logger.\n     */\n    _getLogger() {\n        if (this._delegate) {\n            return this._delegate;\n        }\n        const logger = this._provider._getDelegateLogger(this.name, this.version, this.options);\n        if (!logger) {\n            return NoopLogger_1.NOOP_LOGGER;\n        }\n        this._delegate = logger;\n        return this._delegate;\n    }\n}\nexports.ProxyLogger = ProxyLogger;\n//# sourceMappingURL=ProxyLogger.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyLoggerProvider = void 0;\nconst NoopLoggerProvider_1 = require(\"./NoopLoggerProvider\");\nconst ProxyLogger_1 = require(\"./ProxyLogger\");\nclass ProxyLoggerProvider {\n    getLogger(name, version, options) {\n        var _a;\n        return ((_a = this._getDelegateLogger(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyLogger_1.ProxyLogger(this, name, version, options));\n    }\n    /**\n     * Get the delegate logger provider.\n     * Used by tests only.\n     * @internal\n     */\n    _getDelegate() {\n        var _a;\n        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER;\n    }\n    /**\n     * Set the delegate logger provider\n     * @internal\n     */\n    _setDelegate(delegate) {\n        this._delegate = delegate;\n    }\n    /**\n     * @internal\n     */\n    _getDelegateLogger(name, version, options) {\n        var _a;\n        return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getLogger(name, version, options);\n    }\n}\nexports.ProxyLoggerProvider = ProxyLoggerProvider;\n//# sourceMappingURL=ProxyLoggerProvider.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\nvar globalThis_1 = require(\"./globalThis\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return globalThis_1._globalThis; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"_globalThis\", { enumerable: true, get: function () { return node_1._globalThis; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = void 0;\nconst platform_1 = require(\"../platform\");\nexports.GLOBAL_LOGS_API_KEY = Symbol.for('io.opentelemetry.js.api.logs');\nexports._global = platform_1._globalThis;\n/**\n * Make a function which accepts a version integer and returns the instance of an API if the version\n * is compatible, or a fallback version (usually NOOP) if it is not.\n *\n * @param requiredVersion Backwards compatibility version which is required to return the instance\n * @param instance Instance which should be returned if the required version is compatible\n * @param fallback Fallback instance, usually NOOP, which will be returned if the required version is not compatible\n */\nfunction makeGetter(requiredVersion, instance, fallback) {\n    return (version) => version === requiredVersion ? instance : fallback;\n}\nexports.makeGetter = makeGetter;\n/**\n * A number which should be incremented each time a backwards incompatible\n * change is made to the API. This number is used when an API package\n * attempts to access the global API to ensure it is getting a compatible\n * version. If the global API is not compatible with the API package\n * attempting to get it, a NOOP API implementation will be returned.\n */\nexports.API_BACKWARDS_COMPATIBILITY_VERSION = 1;\n//# sourceMappingURL=global-utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogsAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopLoggerProvider_1 = require(\"../NoopLoggerProvider\");\nconst ProxyLoggerProvider_1 = require(\"../ProxyLoggerProvider\");\nclass LogsAPI {\n    constructor() {\n        this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n    }\n    static getInstance() {\n        if (!this._instance) {\n            this._instance = new LogsAPI();\n        }\n        return this._instance;\n    }\n    setGlobalLoggerProvider(provider) {\n        if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) {\n            return this.getLoggerProvider();\n        }\n        global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY] = (0, global_utils_1.makeGetter)(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER);\n        this._proxyLoggerProvider._setDelegate(provider);\n        return provider;\n    }\n    /**\n     * Returns the global logger provider.\n     *\n     * @returns LoggerProvider\n     */\n    getLoggerProvider() {\n        var _a, _b;\n        return ((_b = (_a = global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) === null || _a === void 0 ? void 0 : _a.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== void 0 ? _b : this._proxyLoggerProvider);\n    }\n    /**\n     * Returns a logger from the global logger provider.\n     *\n     * @returns Logger\n     */\n    getLogger(name, version, options) {\n        return this.getLoggerProvider().getLogger(name, version, options);\n    }\n    /** Remove the global logger provider */\n    disable() {\n        delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY];\n        this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider();\n    }\n}\nexports.LogsAPI = LogsAPI;\n//# sourceMappingURL=logs.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logs = exports.ProxyLoggerProvider = exports.ProxyLogger = exports.NoopLoggerProvider = exports.NOOP_LOGGER_PROVIDER = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = void 0;\nvar LogRecord_1 = require(\"./types/LogRecord\");\nObject.defineProperty(exports, \"SeverityNumber\", { enumerable: true, get: function () { return LogRecord_1.SeverityNumber; } });\nvar NoopLogger_1 = require(\"./NoopLogger\");\nObject.defineProperty(exports, \"NOOP_LOGGER\", { enumerable: true, get: function () { return NoopLogger_1.NOOP_LOGGER; } });\nObject.defineProperty(exports, \"NoopLogger\", { enumerable: true, get: function () { return NoopLogger_1.NoopLogger; } });\nvar NoopLoggerProvider_1 = require(\"./NoopLoggerProvider\");\nObject.defineProperty(exports, \"NOOP_LOGGER_PROVIDER\", { enumerable: true, get: function () { return NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER; } });\nObject.defineProperty(exports, \"NoopLoggerProvider\", { enumerable: true, get: function () { return NoopLoggerProvider_1.NoopLoggerProvider; } });\nvar ProxyLogger_1 = require(\"./ProxyLogger\");\nObject.defineProperty(exports, \"ProxyLogger\", { enumerable: true, get: function () { return ProxyLogger_1.ProxyLogger; } });\nvar ProxyLoggerProvider_1 = require(\"./ProxyLoggerProvider\");\nObject.defineProperty(exports, \"ProxyLoggerProvider\", { enumerable: true, get: function () { return ProxyLoggerProvider_1.ProxyLoggerProvider; } });\nconst logs_1 = require(\"./api/logs\");\nexports.logs = logs_1.LogsAPI.getInstance();\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.disableInstrumentations = exports.enableInstrumentations = void 0;\n/**\n * Enable instrumentations\n * @param instrumentations\n * @param tracerProvider\n * @param meterProvider\n */\nfunction enableInstrumentations(instrumentations, tracerProvider, meterProvider, loggerProvider) {\n    for (let i = 0, j = instrumentations.length; i < j; i++) {\n        const instrumentation = instrumentations[i];\n        if (tracerProvider) {\n            instrumentation.setTracerProvider(tracerProvider);\n        }\n        if (meterProvider) {\n            instrumentation.setMeterProvider(meterProvider);\n        }\n        if (loggerProvider && instrumentation.setLoggerProvider) {\n            instrumentation.setLoggerProvider(loggerProvider);\n        }\n        // instrumentations have been already enabled during creation\n        // so enable only if user prevented that by setting enabled to false\n        // this is to prevent double enabling but when calling register all\n        // instrumentations should be now enabled\n        if (!instrumentation.getConfig().enabled) {\n            instrumentation.enable();\n        }\n    }\n}\nexports.enableInstrumentations = enableInstrumentations;\n/**\n * Disable instrumentations\n * @param instrumentations\n */\nfunction disableInstrumentations(instrumentations) {\n    instrumentations.forEach(instrumentation => instrumentation.disable());\n}\nexports.disableInstrumentations = disableInstrumentations;\n//# sourceMappingURL=autoLoaderUtils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerInstrumentations = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst autoLoaderUtils_1 = require(\"./autoLoaderUtils\");\n/**\n * It will register instrumentations and plugins\n * @param options\n * @return returns function to unload instrumentation and plugins that were\n *   registered\n */\nfunction registerInstrumentations(options) {\n    const tracerProvider = options.tracerProvider || api_1.trace.getTracerProvider();\n    const meterProvider = options.meterProvider || api_1.metrics.getMeterProvider();\n    const loggerProvider = options.loggerProvider || api_logs_1.logs.getLoggerProvider();\n    const instrumentations = options.instrumentations?.flat() ?? [];\n    (0, autoLoaderUtils_1.enableInstrumentations)(instrumentations, tracerProvider, meterProvider, loggerProvider);\n    return () => {\n        (0, autoLoaderUtils_1.disableInstrumentations)(instrumentations);\n    };\n}\nexports.registerInstrumentations = registerInstrumentations;\n//# sourceMappingURL=autoLoader.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.satisfies = void 0;\n// This is a custom semantic versioning implementation compatible with the\n// `satisfies(version, range, options?)` function from the `semver` npm package;\n// with the exception that the `loose` option is not supported.\n//\n// The motivation for the custom semver implementation is that\n// `semver` package has some initialization delay (lots of RegExp init and compile)\n// and this leads to coldstart overhead for the OTEL Lambda Node.js layer.\n// Hence, we have implemented lightweight version of it internally with required functionalities.\nconst api_1 = require(\"@opentelemetry/api\");\nconst VERSION_REGEXP = /^(?:v)?(?(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*)\\.(?0|[1-9]\\d*))(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst RANGE_REGEXP = /^(?<|>|=|==|<=|>=|~|\\^|~>)?\\s*(?:v)?(?(?x|X|\\*|0|[1-9]\\d*)(?:\\.(?x|X|\\*|0|[1-9]\\d*))?(?:\\.(?x|X|\\*|0|[1-9]\\d*))?)(?:-(?(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nconst operatorResMap = {\n    '>': [1],\n    '>=': [0, 1],\n    '=': [0],\n    '<=': [-1, 0],\n    '<': [-1],\n    '!=': [-1, 1],\n};\n/**\n * Checks given version whether it satisfies given range expression.\n * @param version the [version](https://github.com/npm/node-semver#versions) to be checked\n * @param range   the [range](https://github.com/npm/node-semver#ranges) expression for version check\n * @param options options to configure semver satisfy check\n */\nfunction satisfies(version, range, options) {\n    // Strict semver format check\n    if (!_validateVersion(version)) {\n        api_1.diag.error(`Invalid version: ${version}`);\n        return false;\n    }\n    // If range is empty, satisfy check succeeds regardless what version is\n    if (!range) {\n        return true;\n    }\n    // Cleanup range\n    range = range.replace(/([<>=~^]+)\\s+/g, '$1');\n    // Parse version\n    const parsedVersion = _parseVersion(version);\n    if (!parsedVersion) {\n        return false;\n    }\n    const allParsedRanges = [];\n    // Check given version whether it satisfies given range expression\n    const checkResult = _doSatisfies(parsedVersion, range, allParsedRanges, options);\n    // If check result is OK,\n    // do another final check for pre-release, if pre-release check is included by option\n    if (checkResult && !options?.includePrerelease) {\n        return _doPreleaseCheck(parsedVersion, allParsedRanges);\n    }\n    return checkResult;\n}\nexports.satisfies = satisfies;\nfunction _validateVersion(version) {\n    return typeof version === 'string' && VERSION_REGEXP.test(version);\n}\nfunction _doSatisfies(parsedVersion, range, allParsedRanges, options) {\n    if (range.includes('||')) {\n        // A version matches a range if and only if\n        // every comparator in at least one of the ||-separated comparator sets is satisfied by the version\n        const ranges = range.trim().split('||');\n        for (const r of ranges) {\n            if (_checkRange(parsedVersion, r, allParsedRanges, options)) {\n                return true;\n            }\n        }\n        return false;\n    }\n    else if (range.includes(' - ')) {\n        // Hyphen ranges: https://github.com/npm/node-semver#hyphen-ranges-xyz---abc\n        range = replaceHyphen(range, options);\n    }\n    else if (range.includes(' ')) {\n        // Multiple separated ranges and all needs to be satisfied for success\n        const ranges = range\n            .trim()\n            .replace(/\\s{2,}/g, ' ')\n            .split(' ');\n        for (const r of ranges) {\n            if (!_checkRange(parsedVersion, r, allParsedRanges, options)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    // Check given parsed version with given range\n    return _checkRange(parsedVersion, range, allParsedRanges, options);\n}\nfunction _checkRange(parsedVersion, range, allParsedRanges, options) {\n    range = _normalizeRange(range, options);\n    if (range.includes(' ')) {\n        // If there are multiple ranges separated, satisfy each of them\n        return _doSatisfies(parsedVersion, range, allParsedRanges, options);\n    }\n    else {\n        // Validate and parse range\n        const parsedRange = _parseRange(range);\n        allParsedRanges.push(parsedRange);\n        // Check parsed version by parsed range\n        return _satisfies(parsedVersion, parsedRange);\n    }\n}\nfunction _satisfies(parsedVersion, parsedRange) {\n    // If range is invalid, satisfy check fails (no error throw)\n    if (parsedRange.invalid) {\n        return false;\n    }\n    // If range is empty or wildcard, satisfy check succeeds regardless what version is\n    if (!parsedRange.version || _isWildcard(parsedRange.version)) {\n        return true;\n    }\n    // Compare version segment first\n    let comparisonResult = _compareVersionSegments(parsedVersion.versionSegments || [], parsedRange.versionSegments || []);\n    // If versions segments are equal, compare by pre-release segments\n    if (comparisonResult === 0) {\n        const versionPrereleaseSegments = parsedVersion.prereleaseSegments || [];\n        const rangePrereleaseSegments = parsedRange.prereleaseSegments || [];\n        if (!versionPrereleaseSegments.length && !rangePrereleaseSegments.length) {\n            comparisonResult = 0;\n        }\n        else if (!versionPrereleaseSegments.length &&\n            rangePrereleaseSegments.length) {\n            comparisonResult = 1;\n        }\n        else if (versionPrereleaseSegments.length &&\n            !rangePrereleaseSegments.length) {\n            comparisonResult = -1;\n        }\n        else {\n            comparisonResult = _compareVersionSegments(versionPrereleaseSegments, rangePrereleaseSegments);\n        }\n    }\n    // Resolve check result according to comparison operator\n    return operatorResMap[parsedRange.op]?.includes(comparisonResult);\n}\nfunction _doPreleaseCheck(parsedVersion, allParsedRanges) {\n    if (parsedVersion.prerelease) {\n        return allParsedRanges.some(r => r.prerelease && r.version === parsedVersion.version);\n    }\n    return true;\n}\nfunction _normalizeRange(range, options) {\n    range = range.trim();\n    range = replaceCaret(range, options);\n    range = replaceTilde(range);\n    range = replaceXRange(range, options);\n    range = range.trim();\n    return range;\n}\nfunction isX(id) {\n    return !id || id.toLowerCase() === 'x' || id === '*';\n}\nfunction _parseVersion(versionString) {\n    const match = versionString.match(VERSION_REGEXP);\n    if (!match) {\n        api_1.diag.error(`Invalid version: ${versionString}`);\n        return undefined;\n    }\n    const version = match.groups.version;\n    const prerelease = match.groups.prerelease;\n    const build = match.groups.build;\n    const versionSegments = version.split('.');\n    const prereleaseSegments = prerelease?.split('.');\n    return {\n        op: undefined,\n        version,\n        versionSegments,\n        versionSegmentCount: versionSegments.length,\n        prerelease,\n        prereleaseSegments,\n        prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n        build,\n    };\n}\nfunction _parseRange(rangeString) {\n    if (!rangeString) {\n        return {};\n    }\n    const match = rangeString.match(RANGE_REGEXP);\n    if (!match) {\n        api_1.diag.error(`Invalid range: ${rangeString}`);\n        return {\n            invalid: true,\n        };\n    }\n    let op = match.groups.op;\n    const version = match.groups.version;\n    const prerelease = match.groups.prerelease;\n    const build = match.groups.build;\n    const versionSegments = version.split('.');\n    const prereleaseSegments = prerelease?.split('.');\n    if (op === '==') {\n        op = '=';\n    }\n    return {\n        op: op || '=',\n        version,\n        versionSegments,\n        versionSegmentCount: versionSegments.length,\n        prerelease,\n        prereleaseSegments,\n        prereleaseSegmentCount: prereleaseSegments ? prereleaseSegments.length : 0,\n        build,\n    };\n}\nfunction _isWildcard(s) {\n    return s === '*' || s === 'x' || s === 'X';\n}\nfunction _parseVersionString(v) {\n    const n = parseInt(v, 10);\n    return isNaN(n) ? v : n;\n}\nfunction _normalizeVersionType(a, b) {\n    if (typeof a === typeof b) {\n        if (typeof a === 'number') {\n            return [a, b];\n        }\n        else if (typeof a === 'string') {\n            return [a, b];\n        }\n        else {\n            throw new Error('Version segments can only be strings or numbers');\n        }\n    }\n    else {\n        return [String(a), String(b)];\n    }\n}\nfunction _compareVersionStrings(v1, v2) {\n    if (_isWildcard(v1) || _isWildcard(v2)) {\n        return 0;\n    }\n    const [parsedV1, parsedV2] = _normalizeVersionType(_parseVersionString(v1), _parseVersionString(v2));\n    if (parsedV1 > parsedV2) {\n        return 1;\n    }\n    else if (parsedV1 < parsedV2) {\n        return -1;\n    }\n    return 0;\n}\nfunction _compareVersionSegments(v1, v2) {\n    for (let i = 0; i < Math.max(v1.length, v2.length); i++) {\n        const res = _compareVersionStrings(v1[i] || '0', v2[i] || '0');\n        if (res !== 0) {\n            return res;\n        }\n    }\n    return 0;\n}\n////////////////////////////////////////////////////////////////////////////////\n// The rest of this file is adapted from portions of https://github.com/npm/node-semver/tree/868d4bb\n// License:\n/*\n * The ISC License\n *\n * Copyright (c) Isaac Z. Schlueter and Contributors\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR\n * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]';\nconst NUMERICIDENTIFIER = '0|[1-9]\\\\d*';\nconst NONNUMERICIDENTIFIER = `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`;\nconst GTLT = '((?:<|>)?=?)';\nconst PRERELEASEIDENTIFIER = `(?:${NUMERICIDENTIFIER}|${NONNUMERICIDENTIFIER})`;\nconst PRERELEASE = `(?:-(${PRERELEASEIDENTIFIER}(?:\\\\.${PRERELEASEIDENTIFIER})*))`;\nconst BUILDIDENTIFIER = `${LETTERDASHNUMBER}+`;\nconst BUILD = `(?:\\\\+(${BUILDIDENTIFIER}(?:\\\\.${BUILDIDENTIFIER})*))`;\nconst XRANGEIDENTIFIER = `${NUMERICIDENTIFIER}|x|X|\\\\*`;\nconst XRANGEPLAIN = `[v=\\\\s]*(${XRANGEIDENTIFIER})` +\n    `(?:\\\\.(${XRANGEIDENTIFIER})` +\n    `(?:\\\\.(${XRANGEIDENTIFIER})` +\n    `(?:${PRERELEASE})?${BUILD}?` +\n    `)?)?`;\nconst XRANGE = `^${GTLT}\\\\s*${XRANGEPLAIN}$`;\nconst XRANGE_REGEXP = new RegExp(XRANGE);\nconst HYPHENRANGE = `^\\\\s*(${XRANGEPLAIN})` + `\\\\s+-\\\\s+` + `(${XRANGEPLAIN})` + `\\\\s*$`;\nconst HYPHENRANGE_REGEXP = new RegExp(HYPHENRANGE);\nconst LONETILDE = '(?:~>?)';\nconst TILDE = `^${LONETILDE}${XRANGEPLAIN}$`;\nconst TILDE_REGEXP = new RegExp(TILDE);\nconst LONECARET = '(?:\\\\^)';\nconst CARET = `^${LONECARET}${XRANGEPLAIN}$`;\nconst CARET_REGEXP = new RegExp(CARET);\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L285\n//\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nfunction replaceTilde(comp) {\n    const r = TILDE_REGEXP;\n    return comp.replace(r, (_, M, m, p, pr) => {\n        let ret;\n        if (isX(M)) {\n            ret = '';\n        }\n        else if (isX(m)) {\n            ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;\n        }\n        else if (isX(p)) {\n            // ~1.2 == >=1.2.0 <1.3.0-0\n            ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;\n        }\n        else if (pr) {\n            ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n        }\n        else {\n            // ~1.2.3 == >=1.2.3 <1.3.0-0\n            ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;\n        }\n        return ret;\n    });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L329\n//\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nfunction replaceCaret(comp, options) {\n    const r = CARET_REGEXP;\n    const z = options?.includePrerelease ? '-0' : '';\n    return comp.replace(r, (_, M, m, p, pr) => {\n        let ret;\n        if (isX(M)) {\n            ret = '';\n        }\n        else if (isX(m)) {\n            ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;\n        }\n        else if (isX(p)) {\n            if (M === '0') {\n                ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;\n            }\n            else {\n                ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;\n            }\n        }\n        else if (pr) {\n            if (M === '0') {\n                if (m === '0') {\n                    ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;\n                }\n                else {\n                    ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;\n                }\n            }\n            else {\n                ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;\n            }\n        }\n        else {\n            if (M === '0') {\n                if (m === '0') {\n                    ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;\n                }\n                else {\n                    ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;\n                }\n            }\n            else {\n                ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;\n            }\n        }\n        return ret;\n    });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L390\nfunction replaceXRange(comp, options) {\n    const r = XRANGE_REGEXP;\n    return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n        const xM = isX(M);\n        const xm = xM || isX(m);\n        const xp = xm || isX(p);\n        const anyX = xp;\n        if (gtlt === '=' && anyX) {\n            gtlt = '';\n        }\n        // if we're including prereleases in the match, then we need\n        // to fix this to -0, the lowest possible prerelease value\n        pr = options?.includePrerelease ? '-0' : '';\n        if (xM) {\n            if (gtlt === '>' || gtlt === '<') {\n                // nothing is allowed\n                ret = '<0.0.0-0';\n            }\n            else {\n                // nothing is forbidden\n                ret = '*';\n            }\n        }\n        else if (gtlt && anyX) {\n            // we know patch is an x, because we have any x at all.\n            // replace X with 0\n            if (xm) {\n                m = 0;\n            }\n            p = 0;\n            if (gtlt === '>') {\n                // >1 => >=2.0.0\n                // >1.2 => >=1.3.0\n                gtlt = '>=';\n                if (xm) {\n                    M = +M + 1;\n                    m = 0;\n                    p = 0;\n                }\n                else {\n                    m = +m + 1;\n                    p = 0;\n                }\n            }\n            else if (gtlt === '<=') {\n                // <=0.7.x is actually <0.8.0, since any 0.7.x should\n                // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n                gtlt = '<';\n                if (xm) {\n                    M = +M + 1;\n                }\n                else {\n                    m = +m + 1;\n                }\n            }\n            if (gtlt === '<') {\n                pr = '-0';\n            }\n            ret = `${gtlt + M}.${m}.${p}${pr}`;\n        }\n        else if (xm) {\n            ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;\n        }\n        else if (xp) {\n            ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;\n        }\n        return ret;\n    });\n}\n// Borrowed from https://github.com/npm/node-semver/blob/868d4bbe3d318c52544f38d5f9977a1103e924c2/classes/range.js#L488\n//\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nfunction replaceHyphen(comp, options) {\n    const r = HYPHENRANGE_REGEXP;\n    return comp.replace(r, (_, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {\n        if (isX(fM)) {\n            from = '';\n        }\n        else if (isX(fm)) {\n            from = `>=${fM}.0.0${options?.includePrerelease ? '-0' : ''}`;\n        }\n        else if (isX(fp)) {\n            from = `>=${fM}.${fm}.0${options?.includePrerelease ? '-0' : ''}`;\n        }\n        else if (fpr) {\n            from = `>=${from}`;\n        }\n        else {\n            from = `>=${from}${options?.includePrerelease ? '-0' : ''}`;\n        }\n        if (isX(tM)) {\n            to = '';\n        }\n        else if (isX(tm)) {\n            to = `<${+tM + 1}.0.0-0`;\n        }\n        else if (isX(tp)) {\n            to = `<${tM}.${+tm + 1}.0-0`;\n        }\n        else if (tpr) {\n            to = `<=${tM}.${tm}.${tp}-${tpr}`;\n        }\n        else if (options?.includePrerelease) {\n            to = `<${tM}.${tm}.${+tp + 1}-0`;\n        }\n        else {\n            to = `<=${to}`;\n        }\n        return `${from} ${to}`.trim();\n    });\n}\n//# sourceMappingURL=semver.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massUnwrap = exports.unwrap = exports.massWrap = exports.wrap = void 0;\n// Default to complaining loudly when things don't go according to plan.\n// eslint-disable-next-line no-console\nlet logger = console.error.bind(console);\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty(obj, name, value) {\n    const enumerable = !!obj[name] &&\n        Object.prototype.propertyIsEnumerable.call(obj, name);\n    Object.defineProperty(obj, name, {\n        configurable: true,\n        enumerable,\n        writable: true,\n        value,\n    });\n}\nconst wrap = (nodule, name, wrapper) => {\n    if (!nodule || !nodule[name]) {\n        logger('no original function ' + String(name) + ' to wrap');\n        return;\n    }\n    if (!wrapper) {\n        logger('no wrapper function');\n        logger(new Error().stack);\n        return;\n    }\n    const original = nodule[name];\n    if (typeof original !== 'function' || typeof wrapper !== 'function') {\n        logger('original object and wrapper must be functions');\n        return;\n    }\n    const wrapped = wrapper(original, name);\n    defineProperty(wrapped, '__original', original);\n    defineProperty(wrapped, '__unwrap', () => {\n        if (nodule[name] === wrapped) {\n            defineProperty(nodule, name, original);\n        }\n    });\n    defineProperty(wrapped, '__wrapped', true);\n    defineProperty(nodule, name, wrapped);\n    return wrapped;\n};\nexports.wrap = wrap;\nconst massWrap = (nodules, names, wrapper) => {\n    if (!nodules) {\n        logger('must provide one or more modules to patch');\n        logger(new Error().stack);\n        return;\n    }\n    else if (!Array.isArray(nodules)) {\n        nodules = [nodules];\n    }\n    if (!(names && Array.isArray(names))) {\n        logger('must provide one or more functions to wrap on modules');\n        return;\n    }\n    nodules.forEach(nodule => {\n        names.forEach(name => {\n            (0, exports.wrap)(nodule, name, wrapper);\n        });\n    });\n};\nexports.massWrap = massWrap;\nconst unwrap = (nodule, name) => {\n    if (!nodule || !nodule[name]) {\n        logger('no function to unwrap.');\n        logger(new Error().stack);\n        return;\n    }\n    const wrapped = nodule[name];\n    if (!wrapped.__unwrap) {\n        logger('no original to unwrap to -- has ' +\n            String(name) +\n            ' already been unwrapped?');\n    }\n    else {\n        wrapped.__unwrap();\n        return;\n    }\n};\nexports.unwrap = unwrap;\nconst massUnwrap = (nodules, names) => {\n    if (!nodules) {\n        logger('must provide one or more modules to patch');\n        logger(new Error().stack);\n        return;\n    }\n    else if (!Array.isArray(nodules)) {\n        nodules = [nodules];\n    }\n    if (!(names && Array.isArray(names))) {\n        logger('must provide one or more functions to unwrap on modules');\n        return;\n    }\n    nodules.forEach(nodule => {\n        names.forEach(name => {\n            (0, exports.unwrap)(nodule, name);\n        });\n    });\n};\nexports.massUnwrap = massUnwrap;\nfunction shimmer(options) {\n    if (options && options.logger) {\n        if (typeof options.logger !== 'function') {\n            logger(\"new logger isn't a function, not replacing\");\n        }\n        else {\n            logger = options.logger;\n        }\n    }\n}\nexports.default = shimmer;\nshimmer.wrap = exports.wrap;\nshimmer.massWrap = exports.massWrap;\nshimmer.unwrap = exports.unwrap;\nshimmer.massUnwrap = exports.massUnwrap;\n//# sourceMappingURL=shimmer.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationAbstract = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst api_logs_1 = require(\"@opentelemetry/api-logs\");\nconst shimmer = require(\"./shimmer\");\n/**\n * Base abstract internal class for instrumenting node and web plugins\n */\nclass InstrumentationAbstract {\n    instrumentationName;\n    instrumentationVersion;\n    _config = {};\n    _tracer;\n    _meter;\n    _logger;\n    _diag;\n    constructor(instrumentationName, instrumentationVersion, config) {\n        this.instrumentationName = instrumentationName;\n        this.instrumentationVersion = instrumentationVersion;\n        this.setConfig(config);\n        this._diag = api_1.diag.createComponentLogger({\n            namespace: instrumentationName,\n        });\n        this._tracer = api_1.trace.getTracer(instrumentationName, instrumentationVersion);\n        this._meter = api_1.metrics.getMeter(instrumentationName, instrumentationVersion);\n        this._logger = api_logs_1.logs.getLogger(instrumentationName, instrumentationVersion);\n        this._updateMetricInstruments();\n    }\n    /* Api to wrap instrumented method */\n    _wrap = shimmer.wrap;\n    /* Api to unwrap instrumented methods */\n    _unwrap = shimmer.unwrap;\n    /* Api to mass wrap instrumented method */\n    _massWrap = shimmer.massWrap;\n    /* Api to mass unwrap instrumented methods */\n    _massUnwrap = shimmer.massUnwrap;\n    /* Returns meter */\n    get meter() {\n        return this._meter;\n    }\n    /**\n     * Sets MeterProvider to this plugin\n     * @param meterProvider\n     */\n    setMeterProvider(meterProvider) {\n        this._meter = meterProvider.getMeter(this.instrumentationName, this.instrumentationVersion);\n        this._updateMetricInstruments();\n    }\n    /* Returns logger */\n    get logger() {\n        return this._logger;\n    }\n    /**\n     * Sets LoggerProvider to this plugin\n     * @param loggerProvider\n     */\n    setLoggerProvider(loggerProvider) {\n        this._logger = loggerProvider.getLogger(this.instrumentationName, this.instrumentationVersion);\n    }\n    /**\n     * @experimental\n     *\n     * Get module definitions defined by {@link init}.\n     * This can be used for experimental compile-time instrumentation.\n     *\n     * @returns an array of {@link InstrumentationModuleDefinition}\n     */\n    getModuleDefinitions() {\n        const initResult = this.init() ?? [];\n        if (!Array.isArray(initResult)) {\n            return [initResult];\n        }\n        return initResult;\n    }\n    /**\n     * Sets the new metric instruments with the current Meter.\n     */\n    _updateMetricInstruments() {\n        return;\n    }\n    /* Returns InstrumentationConfig */\n    getConfig() {\n        return this._config;\n    }\n    /**\n     * Sets InstrumentationConfig to this plugin\n     * @param config\n     */\n    setConfig(config) {\n        // copy config first level properties to ensure they are immutable.\n        // nested properties are not copied, thus are mutable from the outside.\n        this._config = {\n            enabled: true,\n            ...config,\n        };\n    }\n    /**\n     * Sets TraceProvider to this plugin\n     * @param tracerProvider\n     */\n    setTracerProvider(tracerProvider) {\n        this._tracer = tracerProvider.getTracer(this.instrumentationName, this.instrumentationVersion);\n    }\n    /* Returns tracer */\n    get tracer() {\n        return this._tracer;\n    }\n    /**\n     * Execute span customization hook, if configured, and log any errors.\n     * Any semantics of the trigger and info are defined by the specific instrumentation.\n     * @param hookHandler The optional hook handler which the user has configured via instrumentation config\n     * @param triggerName The name of the trigger for executing the hook for logging purposes\n     * @param span The span to which the hook should be applied\n     * @param info The info object to be passed to the hook, with useful data the hook may use\n     */\n    _runSpanCustomizationHook(hookHandler, triggerName, span, info) {\n        if (!hookHandler) {\n            return;\n        }\n        try {\n            hookHandler(span, info);\n        }\n        catch (e) {\n            this._diag.error(`Error running span customization hook due to exception in handler`, { triggerName }, e);\n        }\n    }\n}\nexports.InstrumentationAbstract = InstrumentationAbstract;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModuleNameTrie = exports.ModuleNameSeparator = void 0;\nexports.ModuleNameSeparator = '/';\n/**\n * Node in a `ModuleNameTrie`\n */\nclass ModuleNameTrieNode {\n    hooks = [];\n    children = new Map();\n}\n/**\n * Trie containing nodes that represent a part of a module name (i.e. the parts separated by forward slash)\n */\nclass ModuleNameTrie {\n    _trie = new ModuleNameTrieNode();\n    _counter = 0;\n    /**\n     * Insert a module hook into the trie\n     *\n     * @param {Hooked} hook Hook\n     */\n    insert(hook) {\n        let trieNode = this._trie;\n        for (const moduleNamePart of hook.moduleName.split(exports.ModuleNameSeparator)) {\n            let nextNode = trieNode.children.get(moduleNamePart);\n            if (!nextNode) {\n                nextNode = new ModuleNameTrieNode();\n                trieNode.children.set(moduleNamePart, nextNode);\n            }\n            trieNode = nextNode;\n        }\n        trieNode.hooks.push({ hook, insertedId: this._counter++ });\n    }\n    /**\n     * Search for matching hooks in the trie\n     *\n     * @param {string} moduleName Module name\n     * @param {boolean} maintainInsertionOrder Whether to return the results in insertion order\n     * @param {boolean} fullOnly Whether to return only full matches\n     * @returns {Hooked[]} Matching hooks\n     */\n    search(moduleName, { maintainInsertionOrder, fullOnly } = {}) {\n        let trieNode = this._trie;\n        const results = [];\n        let foundFull = true;\n        for (const moduleNamePart of moduleName.split(exports.ModuleNameSeparator)) {\n            const nextNode = trieNode.children.get(moduleNamePart);\n            if (!nextNode) {\n                foundFull = false;\n                break;\n            }\n            if (!fullOnly) {\n                results.push(...nextNode.hooks);\n            }\n            trieNode = nextNode;\n        }\n        if (fullOnly && foundFull) {\n            results.push(...trieNode.hooks);\n        }\n        if (results.length === 0) {\n            return [];\n        }\n        if (results.length === 1) {\n            return [results[0].hook];\n        }\n        if (maintainInsertionOrder) {\n            results.sort((a, b) => a.insertedId - b.insertedId);\n        }\n        return results.map(({ hook }) => hook);\n    }\n}\nexports.ModuleNameTrie = ModuleNameTrie;\n//# sourceMappingURL=ModuleNameTrie.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequireInTheMiddleSingleton = void 0;\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst path = require(\"path\");\nconst ModuleNameTrie_1 = require(\"./ModuleNameTrie\");\n/**\n * Whether Mocha is running in this process\n * Inspired by https://github.com/AndreasPizsa/detect-mocha\n *\n * @type {boolean}\n */\nconst isMocha = [\n    'afterEach',\n    'after',\n    'beforeEach',\n    'before',\n    'describe',\n    'it',\n].every(fn => {\n    // @ts-expect-error TS7053: Element implicitly has an 'any' type\n    return typeof global[fn] === 'function';\n});\n/**\n * Singleton class for `require-in-the-middle`\n * Allows instrumentation plugins to patch modules with only a single `require` patch\n * WARNING: Because this class will create its own `require-in-the-middle` (RITM) instance,\n * we should minimize the number of new instances of this class.\n * Multiple instances of `@opentelemetry/instrumentation` (e.g. multiple versions) in a single process\n * will result in multiple instances of RITM, which will have an impact\n * on the performance of instrumentation hooks being applied.\n */\nclass RequireInTheMiddleSingleton {\n    _moduleNameTrie = new ModuleNameTrie_1.ModuleNameTrie();\n    static _instance;\n    constructor() {\n        this._initialize();\n    }\n    _initialize() {\n        new require_in_the_middle_1.Hook(\n        // Intercept all `require` calls; we will filter the matching ones below\n        null, { internals: true }, (exports, name, basedir) => {\n            // For internal files on Windows, `name` will use backslash as the path separator\n            const normalizedModuleName = normalizePathSeparators(name);\n            const matches = this._moduleNameTrie.search(normalizedModuleName, {\n                maintainInsertionOrder: true,\n                // For core modules (e.g. `fs`), do not match on sub-paths (e.g. `fs/promises').\n                // This matches the behavior of `require-in-the-middle`.\n                // `basedir` is always `undefined` for core modules.\n                fullOnly: basedir === undefined,\n            });\n            for (const { onRequire } of matches) {\n                exports = onRequire(exports, name, basedir);\n            }\n            return exports;\n        });\n    }\n    /**\n     * Register a hook with `require-in-the-middle`\n     *\n     * @param {string} moduleName Module name\n     * @param {OnRequireFn} onRequire Hook function\n     * @returns {Hooked} Registered hook\n     */\n    register(moduleName, onRequire) {\n        const hooked = { moduleName, onRequire };\n        this._moduleNameTrie.insert(hooked);\n        return hooked;\n    }\n    /**\n     * Get the `RequireInTheMiddleSingleton` singleton\n     *\n     * @returns {RequireInTheMiddleSingleton} Singleton of `RequireInTheMiddleSingleton`\n     */\n    static getInstance() {\n        // Mocha runs all test suites in the same process\n        // This prevents test suites from sharing a singleton\n        if (isMocha)\n            return new RequireInTheMiddleSingleton();\n        return (this._instance =\n            this._instance ?? new RequireInTheMiddleSingleton());\n    }\n}\nexports.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton;\n/**\n * Normalize the path separators to forward slash in a module name or path\n *\n * @param {string} moduleNameOrPath Module name or path\n * @returns {string} Normalized module name or path\n */\nfunction normalizePathSeparators(moduleNameOrPath) {\n    return path.sep !== ModuleNameTrie_1.ModuleNameSeparator\n        ? moduleNameOrPath.split(path.sep).join(ModuleNameTrie_1.ModuleNameSeparator)\n        : moduleNameOrPath;\n}\n//# sourceMappingURL=RequireInTheMiddleSingleton.js.map",
+    "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst importHooks = [] // TODO should this be a Set?\nconst setters = new WeakMap()\nconst getters = new WeakMap()\nconst specifiers = new Map()\nconst toHook = []\n\nconst proxyHandler = {\n  set (target, name, value) {\n    const set = setters.get(target)\n    const setter = set && set[name]\n    if (typeof setter === 'function') {\n      return setter(value)\n    }\n    // If a module doesn't export the property being assigned (e.g. no default\n    // export), there is no setter to call. Don't crash userland code.\n    return true\n  },\n\n  get (target, name) {\n    if (name === Symbol.toStringTag) {\n      return 'Module'\n    }\n\n    const getter = getters.get(target)[name]\n\n    if (typeof getter === 'function') {\n      return getter()\n    }\n  },\n\n  defineProperty (target, property, descriptor) {\n    if ((!('value' in descriptor))) {\n      throw new Error('Getters/setters are not supported for exports property descriptors.')\n    }\n\n    const set = setters.get(target)\n    const setter = set && set[property]\n    if (typeof setter === 'function') {\n      return setter(descriptor.value)\n    }\n    return true\n  }\n}\n\nfunction register (name, namespace, set, get, specifier) {\n  specifiers.set(name, specifier)\n  setters.set(namespace, set)\n  getters.set(namespace, get)\n  const proxy = new Proxy(namespace, proxyHandler)\n  importHooks.forEach(hook => hook(name, proxy, specifier))\n  toHook.push([name, proxy, specifier])\n}\n\nexports.register = register\nexports.importHooks = importHooks\nexports.specifiers = specifiers\nexports.toHook = toHook\n",
+    "// Unless explicitly stated otherwise all files in this repository are licensed under the Apache 2.0 License.\n//\n// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2021 Datadog, Inc.\n\nconst path = require('path')\nconst moduleDetailsFromPath = require('module-details-from-path')\nconst { fileURLToPath } = require('url')\nconst { MessageChannel } = require('worker_threads')\n\nlet { isBuiltin } = require('module')\nif (!isBuiltin) {\n  isBuiltin = () => true\n}\n\nconst {\n  importHooks,\n  specifiers,\n  toHook\n} = require('./lib/register')\n\nfunction addHook (hook) {\n  importHooks.push(hook)\n  toHook.forEach(([name, namespace, specifier]) => hook(name, namespace, specifier))\n}\n\nfunction removeHook (hook) {\n  const index = importHooks.indexOf(hook)\n  if (index > -1) {\n    importHooks.splice(index, 1)\n  }\n}\n\nfunction callHookFn (hookFn, namespace, name, baseDir) {\n  const newDefault = hookFn(namespace, name, baseDir)\n  if (newDefault && newDefault !== namespace) {\n    // Only ESM modules that actually export `default` can have it reassigned.\n    // Some hooks return a value unconditionally; avoid crashing when the module\n    // has no default export (see issue #188).\n    if ('default' in namespace) {\n      namespace.default = newDefault\n    }\n  }\n}\n\nlet sendModulesToLoader\n\n/**\n * EXPERIMENTAL\n * This feature is experimental and may change in minor versions.\n * **NOTE** This feature is incompatible with the {internals: true} Hook option.\n *\n * Creates a message channel with a port that can be used to add hooks to the\n * list of exclusively included modules.\n *\n * This can be used to only wrap modules that are Hook'ed, however modules need\n * to be hooked before they are imported.\n *\n * ```ts\n * import { register } from 'module'\n * import { Hook, createAddHookMessageChannel } from 'import-in-the-middle'\n *\n * const { registerOptions, waitForAllMessagesAcknowledged } = createAddHookMessageChannel()\n *\n * register('import-in-the-middle/hook.mjs', import.meta.url, registerOptions)\n *\n * Hook(['fs'], (exported, name, baseDir) => {\n *   // Instrument the fs module\n * })\n *\n * // Ensure that the loader has acknowledged all the modules\n * // before we allow execution to continue\n * await waitForAllMessagesAcknowledged()\n * ```\n */\nfunction createAddHookMessageChannel () {\n  const { port1, port2 } = new MessageChannel()\n  let pendingAckCount = 0\n  let resolveFn\n\n  sendModulesToLoader = (modules) => {\n    pendingAckCount++\n    port1.postMessage(modules)\n  }\n\n  port1.on('message', () => {\n    pendingAckCount--\n\n    if (resolveFn && pendingAckCount <= 0) {\n      resolveFn()\n    }\n  }).unref()\n\n  function waitForAllMessagesAcknowledged () {\n    // This timer is to prevent the process from exiting with code 13:\n    // 13: Unsettled Top-Level Await.\n    const timer = setInterval(() => { }, 1000)\n    const promise = new Promise((resolve) => {\n      resolveFn = resolve\n    }).then(() => { clearInterval(timer) })\n\n    if (pendingAckCount === 0) {\n      resolveFn()\n    }\n\n    return promise\n  }\n\n  const addHookMessagePort = port2\n  const registerOptions = { data: { addHookMessagePort, include: [] }, transferList: [addHookMessagePort] }\n\n  return { registerOptions, addHookMessagePort, waitForAllMessagesAcknowledged }\n}\n\nfunction Hook (modules, options, hookFn) {\n  if ((this instanceof Hook) === false) return new Hook(modules, options, hookFn)\n  if (typeof modules === 'function') {\n    hookFn = modules\n    modules = null\n    options = null\n  } else if (typeof options === 'function') {\n    hookFn = options\n    options = null\n  }\n  const internals = options ? options.internals === true : false\n\n  if (sendModulesToLoader && Array.isArray(modules)) {\n    sendModulesToLoader(modules)\n  }\n\n  this._iitmHook = (name, namespace, specifier) => {\n    const loadUrl = name\n    const isNodeUrl = loadUrl.startsWith('node:')\n    let filePath, baseDir\n\n    if (isNodeUrl) {\n      // Normalize builtin module name to *not* have 'node:' prefix, unless\n      // required, as it is for 'node:test' and some others.  `module.isBuiltin`\n      // is available in all Node.js versions that have node:-only modules.\n      const unprefixed = name.slice(5)\n      if (isBuiltin(unprefixed)) {\n        name = unprefixed\n      }\n    } else if (loadUrl.startsWith('file://')) {\n      const stackTraceLimit = Error.stackTraceLimit\n      Error.stackTraceLimit = 0\n      try {\n        filePath = fileURLToPath(name)\n        name = filePath\n      } catch (e) {}\n      Error.stackTraceLimit = stackTraceLimit\n\n      if (filePath) {\n        const details = moduleDetailsFromPath(filePath)\n        if (details) {\n          name = details.name\n          baseDir = details.basedir\n        }\n      }\n    }\n\n    if (modules) {\n      for (const matchArg of modules) {\n        if (filePath && matchArg === filePath) {\n          // abspath match\n          callHookFn(hookFn, namespace, filePath, undefined)\n        } else if (matchArg === name) {\n          if (!baseDir) {\n            // built-in module (or unexpected non file:// name?)\n            callHookFn(hookFn, namespace, name, baseDir)\n          } else if (baseDir.endsWith(specifiers.get(loadUrl))) {\n            // An import of the top-level module (e.g. `import 'ioredis'`).\n            // Note: Slight behaviour difference from RITM. RITM uses\n            // `require.resolve(name)` to see if filename is the module\n            // main file, which will catch `require('ioredis/built/index.js')`.\n            // The check here will not catch `import 'ioredis/built/index.js'`.\n            callHookFn(hookFn, namespace, name, baseDir)\n          } else if (internals) {\n            const internalPath = name + path.sep + path.relative(baseDir, filePath)\n            callHookFn(hookFn, namespace, internalPath, baseDir)\n          }\n        } else if (matchArg === specifier) {\n          callHookFn(hookFn, namespace, specifier, baseDir)\n        }\n      }\n    } else {\n      callHookFn(hookFn, namespace, name, baseDir)\n    }\n  }\n\n  addHook(this._iitmHook)\n}\n\nHook.prototype.unhook = function () {\n  removeHook(this._iitmHook)\n}\n\nmodule.exports = Hook\nmodule.exports.Hook = Hook\nmodule.exports.addHook = addHook\nmodule.exports.removeHook = removeHook\nmodule.exports.createAddHookMessageChannel = createAddHookMessageChannel\n",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapped = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = void 0;\n/**\n * function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nfunction safeExecuteInTheMiddle(execute, onFinish, preventThrowingError) {\n    let error;\n    let result;\n    try {\n        result = execute();\n    }\n    catch (e) {\n        error = e;\n    }\n    finally {\n        onFinish(error, result);\n        if (error && !preventThrowingError) {\n            // eslint-disable-next-line no-unsafe-finally\n            throw error;\n        }\n        // eslint-disable-next-line no-unsafe-finally\n        return result;\n    }\n}\nexports.safeExecuteInTheMiddle = safeExecuteInTheMiddle;\n/**\n * Async function to execute patched function and being able to catch errors\n * @param execute - function to be executed\n * @param onFinish - callback to run when execute finishes\n */\nasync function safeExecuteInTheMiddleAsync(execute, onFinish, preventThrowingError) {\n    let error;\n    let result;\n    try {\n        result = await execute();\n    }\n    catch (e) {\n        error = e;\n    }\n    finally {\n        onFinish(error, result);\n        if (error && !preventThrowingError) {\n            // eslint-disable-next-line no-unsafe-finally\n            throw error;\n        }\n        // eslint-disable-next-line no-unsafe-finally\n        return result;\n    }\n}\nexports.safeExecuteInTheMiddleAsync = safeExecuteInTheMiddleAsync;\n/**\n * Checks if certain function has been already wrapped\n * @param func\n */\nfunction isWrapped(func) {\n    return (typeof func === 'function' &&\n        typeof func.__original === 'function' &&\n        typeof func.__unwrap === 'function' &&\n        func.__wrapped === true);\n}\nexports.isWrapped = isWrapped;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationBase = void 0;\nconst path = require(\"path\");\nconst util_1 = require(\"util\");\nconst semver_1 = require(\"../../semver\");\nconst shimmer_1 = require(\"../../shimmer\");\nconst instrumentation_1 = require(\"../../instrumentation\");\nconst RequireInTheMiddleSingleton_1 = require(\"./RequireInTheMiddleSingleton\");\nconst import_in_the_middle_1 = require(\"import-in-the-middle\");\nconst api_1 = require(\"@opentelemetry/api\");\nconst require_in_the_middle_1 = require(\"require-in-the-middle\");\nconst fs_1 = require(\"fs\");\nconst utils_1 = require(\"../../utils\");\n/**\n * Base abstract class for instrumenting node plugins\n */\nclass InstrumentationBase extends instrumentation_1.InstrumentationAbstract {\n    _modules;\n    _hooks = [];\n    _requireInTheMiddleSingleton = RequireInTheMiddleSingleton_1.RequireInTheMiddleSingleton.getInstance();\n    _enabled = false;\n    constructor(instrumentationName, instrumentationVersion, config) {\n        super(instrumentationName, instrumentationVersion, config);\n        let modules = this.init();\n        if (modules && !Array.isArray(modules)) {\n            modules = [modules];\n        }\n        this._modules = modules || [];\n        if (this._config.enabled) {\n            this.enable();\n        }\n    }\n    _wrap = (moduleExports, name, wrapper) => {\n        if ((0, utils_1.isWrapped)(moduleExports[name])) {\n            this._unwrap(moduleExports, name);\n        }\n        if (!util_1.types.isProxy(moduleExports)) {\n            return (0, shimmer_1.wrap)(moduleExports, name, wrapper);\n        }\n        else {\n            const wrapped = (0, shimmer_1.wrap)(Object.assign({}, moduleExports), name, wrapper);\n            Object.defineProperty(moduleExports, name, {\n                value: wrapped,\n            });\n            return wrapped;\n        }\n    };\n    _unwrap = (moduleExports, name) => {\n        if (!util_1.types.isProxy(moduleExports)) {\n            return (0, shimmer_1.unwrap)(moduleExports, name);\n        }\n        else {\n            return Object.defineProperty(moduleExports, name, {\n                value: moduleExports[name],\n            });\n        }\n    };\n    _massWrap = (moduleExportsArray, names, wrapper) => {\n        if (!moduleExportsArray) {\n            api_1.diag.error('must provide one or more modules to patch');\n            return;\n        }\n        else if (!Array.isArray(moduleExportsArray)) {\n            moduleExportsArray = [moduleExportsArray];\n        }\n        if (!(names && Array.isArray(names))) {\n            api_1.diag.error('must provide one or more functions to wrap on modules');\n            return;\n        }\n        moduleExportsArray.forEach(moduleExports => {\n            names.forEach(name => {\n                this._wrap(moduleExports, name, wrapper);\n            });\n        });\n    };\n    _massUnwrap = (moduleExportsArray, names) => {\n        if (!moduleExportsArray) {\n            api_1.diag.error('must provide one or more modules to patch');\n            return;\n        }\n        else if (!Array.isArray(moduleExportsArray)) {\n            moduleExportsArray = [moduleExportsArray];\n        }\n        if (!(names && Array.isArray(names))) {\n            api_1.diag.error('must provide one or more functions to wrap on modules');\n            return;\n        }\n        moduleExportsArray.forEach(moduleExports => {\n            names.forEach(name => {\n                this._unwrap(moduleExports, name);\n            });\n        });\n    };\n    _warnOnPreloadedModules() {\n        this._modules.forEach((module) => {\n            const { name } = module;\n            try {\n                const resolvedModule = require.resolve(name);\n                if (require.cache[resolvedModule]) {\n                    // Module is already cached, which means the instrumentation hook might not work\n                    this._diag.warn(`Module ${name} has been loaded before ${this.instrumentationName} so it might not work, please initialize it before requiring ${name}`);\n                }\n            }\n            catch {\n                // Module isn't available, we can simply skip\n            }\n        });\n    }\n    _extractPackageVersion(baseDir) {\n        try {\n            const json = (0, fs_1.readFileSync)(path.join(baseDir, 'package.json'), {\n                encoding: 'utf8',\n            });\n            const version = JSON.parse(json).version;\n            return typeof version === 'string' ? version : undefined;\n        }\n        catch {\n            api_1.diag.warn('Failed extracting version', baseDir);\n        }\n        return undefined;\n    }\n    _onRequire(module, exports, name, baseDir) {\n        if (!baseDir) {\n            if (typeof module.patch === 'function') {\n                module.moduleExports = exports;\n                if (this._enabled) {\n                    this._diag.debug('Applying instrumentation patch for nodejs core module on require hook', {\n                        module: module.name,\n                    });\n                    return module.patch(exports);\n                }\n            }\n            return exports;\n        }\n        const version = this._extractPackageVersion(baseDir);\n        module.moduleVersion = version;\n        if (module.name === name) {\n            // main module\n            if (isSupported(module.supportedVersions, version, module.includePrerelease)) {\n                if (typeof module.patch === 'function') {\n                    module.moduleExports = exports;\n                    if (this._enabled) {\n                        this._diag.debug('Applying instrumentation patch for module on require hook', {\n                            module: module.name,\n                            version: module.moduleVersion,\n                            baseDir,\n                        });\n                        return module.patch(exports, module.moduleVersion);\n                    }\n                }\n            }\n            return exports;\n        }\n        // internal file\n        const files = module.files ?? [];\n        const normalizedName = path.normalize(name);\n        const supportedFileInstrumentations = files\n            .filter(f => f.name === normalizedName)\n            .filter(f => isSupported(f.supportedVersions, version, module.includePrerelease));\n        return supportedFileInstrumentations.reduce((patchedExports, file) => {\n            file.moduleExports = patchedExports;\n            if (this._enabled) {\n                this._diag.debug('Applying instrumentation patch for nodejs module file on require hook', {\n                    module: module.name,\n                    version: module.moduleVersion,\n                    fileName: file.name,\n                    baseDir,\n                });\n                // patch signature is not typed, so we cast it assuming it's correct\n                return file.patch(patchedExports, module.moduleVersion);\n            }\n            return patchedExports;\n        }, exports);\n    }\n    enable() {\n        if (this._enabled) {\n            return;\n        }\n        this._enabled = true;\n        // already hooked, just call patch again\n        if (this._hooks.length > 0) {\n            for (const module of this._modules) {\n                if (typeof module.patch === 'function' && module.moduleExports) {\n                    this._diag.debug('Applying instrumentation patch for nodejs module on instrumentation enabled', {\n                        module: module.name,\n                        version: module.moduleVersion,\n                    });\n                    module.patch(module.moduleExports, module.moduleVersion);\n                }\n                for (const file of module.files) {\n                    if (file.moduleExports) {\n                        this._diag.debug('Applying instrumentation patch for nodejs module file on instrumentation enabled', {\n                            module: module.name,\n                            version: module.moduleVersion,\n                            fileName: file.name,\n                        });\n                        file.patch(file.moduleExports, module.moduleVersion);\n                    }\n                }\n            }\n            return;\n        }\n        this._warnOnPreloadedModules();\n        for (const module of this._modules) {\n            const hookFn = (exports, name, baseDir) => {\n                if (!baseDir && path.isAbsolute(name)) {\n                    const parsedPath = path.parse(name);\n                    name = parsedPath.name;\n                    baseDir = parsedPath.dir;\n                }\n                return this._onRequire(module, exports, name, baseDir);\n            };\n            const onRequire = (exports, name, baseDir) => {\n                return this._onRequire(module, exports, name, baseDir);\n            };\n            // `RequireInTheMiddleSingleton` does not support absolute paths.\n            // For an absolute paths, we must create a separate instance of the\n            // require-in-the-middle `Hook`.\n            const hook = path.isAbsolute(module.name)\n                ? new require_in_the_middle_1.Hook([module.name], { internals: true }, onRequire)\n                : this._requireInTheMiddleSingleton.register(module.name, onRequire);\n            this._hooks.push(hook);\n            const esmHook = new import_in_the_middle_1.Hook([module.name], { internals: false }, hookFn);\n            this._hooks.push(esmHook);\n        }\n    }\n    disable() {\n        if (!this._enabled) {\n            return;\n        }\n        this._enabled = false;\n        for (const module of this._modules) {\n            if (typeof module.unpatch === 'function' && module.moduleExports) {\n                this._diag.debug('Removing instrumentation patch for nodejs module on instrumentation disabled', {\n                    module: module.name,\n                    version: module.moduleVersion,\n                });\n                module.unpatch(module.moduleExports, module.moduleVersion);\n            }\n            for (const file of module.files) {\n                if (file.moduleExports) {\n                    this._diag.debug('Removing instrumentation patch for nodejs module file on instrumentation disabled', {\n                        module: module.name,\n                        version: module.moduleVersion,\n                        fileName: file.name,\n                    });\n                    file.unpatch(file.moduleExports, module.moduleVersion);\n                }\n            }\n        }\n    }\n    isEnabled() {\n        return this._enabled;\n    }\n}\nexports.InstrumentationBase = InstrumentationBase;\nfunction isSupported(supportedVersions, version, includePrerelease) {\n    if (typeof version === 'undefined') {\n        // If we don't have the version, accept the wildcard case only\n        return supportedVersions.includes('*');\n    }\n    return supportedVersions.some(supportedVersion => {\n        return (0, semver_1.satisfies)(version, supportedVersion, { includePrerelease });\n    });\n}\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nvar path_1 = require(\"path\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return path_1.normalize; } });\n//# sourceMappingURL=normalize.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return instrumentation_1.InstrumentationBase; } });\nvar normalize_1 = require(\"./normalize\");\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return normalize_1.normalize; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = exports.InstrumentationBase = void 0;\nvar node_1 = require(\"./node\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return node_1.InstrumentationBase; } });\nObject.defineProperty(exports, \"normalize\", { enumerable: true, get: function () { return node_1.normalize; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleDefinition = void 0;\nclass InstrumentationNodeModuleDefinition {\n    name;\n    supportedVersions;\n    patch;\n    unpatch;\n    files;\n    constructor(name, supportedVersions, \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    patch, \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    unpatch, files) {\n        this.name = name;\n        this.supportedVersions = supportedVersions;\n        this.patch = patch;\n        this.unpatch = unpatch;\n        this.files = files || [];\n    }\n}\nexports.InstrumentationNodeModuleDefinition = InstrumentationNodeModuleDefinition;\n//# sourceMappingURL=instrumentationNodeModuleDefinition.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstrumentationNodeModuleFile = void 0;\nconst index_1 = require(\"./platform/index\");\nclass InstrumentationNodeModuleFile {\n    supportedVersions;\n    patch;\n    unpatch;\n    name;\n    constructor(name, supportedVersions, \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    patch, \n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    unpatch) {\n        this.supportedVersions = supportedVersions;\n        this.patch = patch;\n        this.unpatch = unpatch;\n        this.name = (0, index_1.normalize)(name);\n    }\n}\nexports.InstrumentationNodeModuleFile = InstrumentationNodeModuleFile;\n//# sourceMappingURL=instrumentationNodeModuleFile.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = void 0;\nvar SemconvStability;\n(function (SemconvStability) {\n    /** Emit only stable semantic conventions. */\n    SemconvStability[SemconvStability[\"STABLE\"] = 1] = \"STABLE\";\n    /** Emit only old semantic conventions. */\n    SemconvStability[SemconvStability[\"OLD\"] = 2] = \"OLD\";\n    /** Emit both stable and old semantic conventions. */\n    SemconvStability[SemconvStability[\"DUPLICATE\"] = 3] = \"DUPLICATE\";\n})(SemconvStability = exports.SemconvStability || (exports.SemconvStability = {}));\n/**\n * Determine the appropriate semconv stability for the given namespace.\n *\n * This will parse the given string of comma-separated values (often\n * `process.env.OTEL_SEMCONV_STABILITY_OPT_IN`) looking for the `${namespace}`\n * or `${namespace}/dup` tokens. This is a pattern defined by a number of\n * non-normative semconv documents.\n *\n * For example:\n * - namespace 'http': https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/\n * - namespace 'database': https://opentelemetry.io/docs/specs/semconv/non-normative/database-migration/\n * - namespace 'k8s': https://opentelemetry.io/docs/specs/semconv/non-normative/k8s-migration/\n *\n * Usage:\n *\n *  import {SemconvStability, semconvStabilityFromStr} from '@opentelemetry/instrumentation';\n *\n *  export class FooInstrumentation extends InstrumentationBase {\n *    private _semconvStability: SemconvStability;\n *    constructor(config: FooInstrumentationConfig = {}) {\n *      super('@opentelemetry/instrumentation-foo', VERSION, config);\n *\n *      // When supporting the OTEL_SEMCONV_STABILITY_OPT_IN envvar\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        process.env.OTEL_SEMCONV_STABILITY_OPT_IN\n *      );\n *\n *      // or when supporting a `semconvStabilityOptIn` config option (e.g. for\n *      // the web where there are no envvars).\n *      this._semconvStability = semconvStabilityFromStr(\n *        'http',\n *        config?.semconvStabilityOptIn\n *      );\n *    }\n *  }\n *\n *  // Then, to apply semconv, use the following or similar:\n *  if (this._semconvStability & SemconvStability.OLD) {\n *    // ...\n *  }\n *  if (this._semconvStability & SemconvStability.STABLE) {\n *    // ...\n *  }\n *\n */\nfunction semconvStabilityFromStr(namespace, str) {\n    let semconvStability = SemconvStability.OLD;\n    // The same parsing of `str` as `getStringListFromEnv` from the core pkg.\n    const entries = str\n        ?.split(',')\n        .map(v => v.trim())\n        .filter(s => s !== '');\n    for (const entry of entries ?? []) {\n        if (entry.toLowerCase() === namespace + '/dup') {\n            // DUPLICATE takes highest precedence.\n            semconvStability = SemconvStability.DUPLICATE;\n            break;\n        }\n        else if (entry.toLowerCase() === namespace) {\n            semconvStability = SemconvStability.STABLE;\n        }\n    }\n    return semconvStability;\n}\nexports.semconvStabilityFromStr = semconvStabilityFromStr;\n//# sourceMappingURL=semconvStability.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.semconvStabilityFromStr = exports.SemconvStability = exports.safeExecuteInTheMiddleAsync = exports.safeExecuteInTheMiddle = exports.isWrapped = exports.InstrumentationNodeModuleFile = exports.InstrumentationNodeModuleDefinition = exports.InstrumentationBase = exports.registerInstrumentations = void 0;\nvar autoLoader_1 = require(\"./autoLoader\");\nObject.defineProperty(exports, \"registerInstrumentations\", { enumerable: true, get: function () { return autoLoader_1.registerInstrumentations; } });\nvar index_1 = require(\"./platform/index\");\nObject.defineProperty(exports, \"InstrumentationBase\", { enumerable: true, get: function () { return index_1.InstrumentationBase; } });\nvar instrumentationNodeModuleDefinition_1 = require(\"./instrumentationNodeModuleDefinition\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleDefinition\", { enumerable: true, get: function () { return instrumentationNodeModuleDefinition_1.InstrumentationNodeModuleDefinition; } });\nvar instrumentationNodeModuleFile_1 = require(\"./instrumentationNodeModuleFile\");\nObject.defineProperty(exports, \"InstrumentationNodeModuleFile\", { enumerable: true, get: function () { return instrumentationNodeModuleFile_1.InstrumentationNodeModuleFile; } });\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"isWrapped\", { enumerable: true, get: function () { return utils_1.isWrapped; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddle\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddle; } });\nObject.defineProperty(exports, \"safeExecuteInTheMiddleAsync\", { enumerable: true, get: function () { return utils_1.safeExecuteInTheMiddleAsync; } });\nvar semconvStability_1 = require(\"./semconvStability\");\nObject.defineProperty(exports, \"SemconvStability\", { enumerable: true, get: function () { return semconvStability_1.SemconvStability; } });\nObject.defineProperty(exports, \"semconvStabilityFromStr\", { enumerable: true, get: function () { return semconvStability_1.semconvStabilityFromStr; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.59.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-hapi';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HapiLifecycleMethodNames = exports.HapiLayerType = exports.handlerPatched = exports.HapiComponentName = void 0;\nexports.HapiComponentName = '@hapi/hapi';\n/**\n * This symbol is used to mark a Hapi route handler or server extension handler as\n * already patched, since its possible to use these handlers multiple times\n * i.e. when allowing multiple versions of one plugin, or when registering a plugin\n * multiple times on different servers.\n */\nexports.handlerPatched = Symbol('hapi-handler-patched');\nexports.HapiLayerType = {\n    ROUTER: 'router',\n    PLUGIN: 'plugin',\n    EXT: 'server.ext',\n};\nexports.HapiLifecycleMethodNames = new Set([\n    'onPreAuth',\n    'onCredentials',\n    'onPostAuth',\n    'onPreHandler',\n    'onPostHandler',\n    'onPreResponse',\n    'onRequest',\n]);\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_HTTP_METHOD = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `http.request.method` instead.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `http.request.method`.\n */\nexports.ATTR_HTTP_METHOD = 'http.method';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"HAPI_TYPE\"] = \"hapi.type\";\n    AttributeNames[\"PLUGIN_NAME\"] = \"hapi.plugin.name\";\n    AttributeNames[\"EXT_TYPE\"] = \"server.ext.type\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPluginFromInput = exports.getExtMetadata = exports.getRouteMetadata = exports.isPatchableExtMethod = exports.isDirectExtInput = exports.isLifecycleExtEventObj = exports.isLifecycleExtType = exports.getPluginName = void 0;\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst internal_types_1 = require(\"./internal-types\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nfunction getPluginName(plugin) {\n    if (plugin.name) {\n        return plugin.name;\n    }\n    else {\n        return plugin.pkg.name;\n    }\n}\nexports.getPluginName = getPluginName;\nconst isLifecycleExtType = (variableToCheck) => {\n    return (typeof variableToCheck === 'string' &&\n        internal_types_1.HapiLifecycleMethodNames.has(variableToCheck));\n};\nexports.isLifecycleExtType = isLifecycleExtType;\nconst isLifecycleExtEventObj = (variableToCheck) => {\n    const event = variableToCheck?.type;\n    return event !== undefined && (0, exports.isLifecycleExtType)(event);\n};\nexports.isLifecycleExtEventObj = isLifecycleExtEventObj;\nconst isDirectExtInput = (variableToCheck) => {\n    return (Array.isArray(variableToCheck) &&\n        variableToCheck.length <= 3 &&\n        (0, exports.isLifecycleExtType)(variableToCheck[0]) &&\n        typeof variableToCheck[1] === 'function');\n};\nexports.isDirectExtInput = isDirectExtInput;\nconst isPatchableExtMethod = (variableToCheck) => {\n    return !Array.isArray(variableToCheck);\n};\nexports.isPatchableExtMethod = isPatchableExtMethod;\nconst getRouteMetadata = (route, semconvStability, pluginName) => {\n    const attributes = {\n        [semantic_conventions_1.ATTR_HTTP_ROUTE]: route.path,\n    };\n    if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n        attributes[semconv_1.ATTR_HTTP_METHOD] = route.method;\n    }\n    if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n        // Note: This currently does *not* normalize the method name to uppercase\n        // and conditionally include `http.request.method.original` as described\n        // at https://opentelemetry.io/docs/specs/semconv/http/http-spans/\n        // These attributes are for a *hapi* span, and not the parent HTTP span,\n        // so the HTTP span guidance doesn't strictly apply.\n        attributes[semantic_conventions_1.ATTR_HTTP_REQUEST_METHOD] = route.method;\n    }\n    let name;\n    if (pluginName) {\n        attributes[AttributeNames_1.AttributeNames.HAPI_TYPE] = internal_types_1.HapiLayerType.PLUGIN;\n        attributes[AttributeNames_1.AttributeNames.PLUGIN_NAME] = pluginName;\n        name = `${pluginName}: route - ${route.path}`;\n    }\n    else {\n        attributes[AttributeNames_1.AttributeNames.HAPI_TYPE] = internal_types_1.HapiLayerType.ROUTER;\n        name = `route - ${route.path}`;\n    }\n    return { attributes, name };\n};\nexports.getRouteMetadata = getRouteMetadata;\nconst getExtMetadata = (extPoint, pluginName) => {\n    if (pluginName) {\n        return {\n            attributes: {\n                [AttributeNames_1.AttributeNames.EXT_TYPE]: extPoint,\n                [AttributeNames_1.AttributeNames.HAPI_TYPE]: internal_types_1.HapiLayerType.EXT,\n                [AttributeNames_1.AttributeNames.PLUGIN_NAME]: pluginName,\n            },\n            name: `${pluginName}: ext - ${extPoint}`,\n        };\n    }\n    return {\n        attributes: {\n            [AttributeNames_1.AttributeNames.EXT_TYPE]: extPoint,\n            [AttributeNames_1.AttributeNames.HAPI_TYPE]: internal_types_1.HapiLayerType.EXT,\n        },\n        name: `ext - ${extPoint}`,\n    };\n};\nexports.getExtMetadata = getExtMetadata;\nconst getPluginFromInput = (pluginObj) => {\n    if ('plugin' in pluginObj) {\n        if ('plugin' in pluginObj.plugin) {\n            return pluginObj.plugin.plugin;\n        }\n        return pluginObj.plugin;\n    }\n    return pluginObj;\n};\nexports.getPluginFromInput = getPluginFromInput;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HapiInstrumentation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst internal_types_1 = require(\"./internal-types\");\nconst utils_1 = require(\"./utils\");\n/** Hapi instrumentation for OpenTelemetry */\nclass HapiInstrumentation extends instrumentation_1.InstrumentationBase {\n    _semconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        return new instrumentation_1.InstrumentationNodeModuleDefinition(internal_types_1.HapiComponentName, ['>=17.0.0 <22'], (module) => {\n            const moduleExports = module[Symbol.toStringTag] === 'Module' ? module.default : module;\n            if (!(0, instrumentation_1.isWrapped)(moduleExports.server)) {\n                this._wrap(moduleExports, 'server', this._getServerPatch.bind(this));\n            }\n            if (!(0, instrumentation_1.isWrapped)(moduleExports.Server)) {\n                this._wrap(moduleExports, 'Server', this._getServerPatch.bind(this));\n            }\n            return moduleExports;\n        }, (module) => {\n            const moduleExports = module[Symbol.toStringTag] === 'Module' ? module.default : module;\n            this._massUnwrap([moduleExports], ['server', 'Server']);\n        });\n    }\n    /**\n     * Patches the Hapi.server and Hapi.Server functions in order to instrument\n     * the server.route, server.ext, and server.register functions via calls to the\n     * @function _getServerRoutePatch, @function _getServerExtPatch, and\n     * @function _getServerRegisterPatch functions\n     * @param original - the original Hapi Server creation function\n     */\n    _getServerPatch(original) {\n        const instrumentation = this;\n        const self = this;\n        return function server(opts) {\n            const newServer = original.apply(this, [opts]);\n            self._wrap(newServer, 'route', originalRouter => {\n                return instrumentation._getServerRoutePatch.bind(instrumentation)(originalRouter);\n            });\n            // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n            // function, which requires supporting a variety of different parameters\n            // as extension inputs\n            self._wrap(newServer, 'ext', originalExtHandler => {\n                return instrumentation._getServerExtPatch.bind(instrumentation)(\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                originalExtHandler);\n            });\n            // Casting as any is necessary here due to multiple overloads on the Hapi.Server.register\n            // function, which requires supporting a variety of different types of Plugin inputs\n            self._wrap(newServer, 'register', \n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            instrumentation._getServerRegisterPatch.bind(instrumentation));\n            return newServer;\n        };\n    }\n    /**\n     * Patches the plugin register function used by the Hapi Server. This function\n     * goes through each plugin that is being registered and adds instrumentation\n     * via a call to the @function _wrapRegisterHandler function.\n     * @param {RegisterFunction} original - the original register function which\n     * registers each plugin on the server\n     */\n    _getServerRegisterPatch(original) {\n        const instrumentation = this;\n        return function register(pluginInput, options) {\n            if (Array.isArray(pluginInput)) {\n                for (const pluginObj of pluginInput) {\n                    const plugin = (0, utils_1.getPluginFromInput)(pluginObj);\n                    instrumentation._wrapRegisterHandler(plugin);\n                }\n            }\n            else {\n                const plugin = (0, utils_1.getPluginFromInput)(pluginInput);\n                instrumentation._wrapRegisterHandler(plugin);\n            }\n            return original.apply(this, [pluginInput, options]);\n        };\n    }\n    /**\n     * Patches the Server.ext function which adds extension methods to the specified\n     * point along the request lifecycle. This function accepts the full range of\n     * accepted input into the standard Hapi `server.ext` function. For each extension,\n     * it adds instrumentation to the handler via a call to the @function _wrapExtMethods\n     * function.\n     * @param original - the original ext function which adds the extension method to the server\n     * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n     * for adding this server extension. Else, signifies that the extension was added directly\n     */\n    _getServerExtPatch(original, pluginName) {\n        const instrumentation = this;\n        return function ext(...args) {\n            if (Array.isArray(args[0])) {\n                const eventsList = args[0];\n                for (let i = 0; i < eventsList.length; i++) {\n                    const eventObj = eventsList[i];\n                    if ((0, utils_1.isLifecycleExtType)(eventObj.type)) {\n                        const lifecycleEventObj = eventObj;\n                        const handler = instrumentation._wrapExtMethods(lifecycleEventObj.method, eventObj.type, pluginName);\n                        lifecycleEventObj.method = handler;\n                        eventsList[i] = lifecycleEventObj;\n                    }\n                }\n                return original.apply(this, args);\n            }\n            else if ((0, utils_1.isDirectExtInput)(args)) {\n                const extInput = args;\n                const method = extInput[1];\n                const handler = instrumentation._wrapExtMethods(method, extInput[0], pluginName);\n                return original.apply(this, [extInput[0], handler, extInput[2]]);\n            }\n            else if ((0, utils_1.isLifecycleExtEventObj)(args[0])) {\n                const lifecycleEventObj = args[0];\n                const handler = instrumentation._wrapExtMethods(lifecycleEventObj.method, lifecycleEventObj.type, pluginName);\n                lifecycleEventObj.method = handler;\n                return original.call(this, lifecycleEventObj);\n            }\n            return original.apply(this, args);\n        };\n    }\n    /**\n     * Patches the Server.route function. This function accepts either one or an array\n     * of Hapi.ServerRoute objects and adds instrumentation on each route via a call to\n     * the @function _wrapRouteHandler function.\n     * @param {HapiServerRouteInputMethod} original - the original route function which adds\n     * the route to the server\n     * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n     * for adding this server route. Else, signifies that the route was added directly\n     */\n    _getServerRoutePatch(original, pluginName) {\n        const instrumentation = this;\n        return function route(route) {\n            if (Array.isArray(route)) {\n                for (let i = 0; i < route.length; i++) {\n                    const newRoute = instrumentation._wrapRouteHandler.call(instrumentation, route[i], pluginName);\n                    route[i] = newRoute;\n                }\n            }\n            else {\n                route = instrumentation._wrapRouteHandler.call(instrumentation, route, pluginName);\n            }\n            return original.apply(this, [route]);\n        };\n    }\n    /**\n     * Wraps newly registered plugins to add instrumentation to the plugin's clone of\n     * the original server. Specifically, wraps the server.route and server.ext functions\n     * via calls to @function _getServerRoutePatch and @function _getServerExtPatch\n     * @param {Hapi.Plugin} plugin - the new plugin which is being instrumented\n     */\n    _wrapRegisterHandler(plugin) {\n        const instrumentation = this;\n        const pluginName = (0, utils_1.getPluginName)(plugin);\n        const oldRegister = plugin.register;\n        const self = this;\n        const newRegisterHandler = function (server, options) {\n            self._wrap(server, 'route', original => {\n                return instrumentation._getServerRoutePatch.bind(instrumentation)(original, pluginName);\n            });\n            // Casting as any is necessary here due to multiple overloads on the Hapi.ext\n            // function, which requires supporting a variety of different parameters\n            // as extension inputs\n            self._wrap(server, 'ext', originalExtHandler => {\n                return instrumentation._getServerExtPatch.bind(instrumentation)(\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                originalExtHandler, pluginName);\n            });\n            return oldRegister.call(this, server, options);\n        };\n        plugin.register = newRegisterHandler;\n    }\n    /**\n     * Wraps request extension methods to add instrumentation to each new extension handler.\n     * Patches each individual extension in order to create the\n     * span and propagate context. It does not create spans when there is no parent span.\n     * @param {PatchableExtMethod | PatchableExtMethod[]} method - the request extension\n     * handler which is being instrumented\n     * @param {Hapi.ServerRequestExtType} extPoint - the point in the Hapi request lifecycle\n     * which this extension targets\n     * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n     * for adding this server route. Else, signifies that the route was added directly\n     */\n    _wrapExtMethods(method, extPoint, pluginName) {\n        const instrumentation = this;\n        if (method instanceof Array) {\n            for (let i = 0; i < method.length; i++) {\n                method[i] = instrumentation._wrapExtMethods(method[i], extPoint);\n            }\n            return method;\n        }\n        else if ((0, utils_1.isPatchableExtMethod)(method)) {\n            if (method[internal_types_1.handlerPatched] === true)\n                return method;\n            method[internal_types_1.handlerPatched] = true;\n            const newHandler = async function (...params) {\n                if (api.trace.getSpan(api.context.active()) === undefined) {\n                    return await method.apply(this, params);\n                }\n                const metadata = (0, utils_1.getExtMetadata)(extPoint, pluginName);\n                const span = instrumentation.tracer.startSpan(metadata.name, {\n                    attributes: metadata.attributes,\n                });\n                try {\n                    return await api.context.with(api.trace.setSpan(api.context.active(), span), method, undefined, ...params);\n                }\n                catch (err) {\n                    span.recordException(err);\n                    span.setStatus({\n                        code: api.SpanStatusCode.ERROR,\n                        message: err.message,\n                    });\n                    throw err;\n                }\n                finally {\n                    span.end();\n                }\n            };\n            return newHandler;\n        }\n        return method;\n    }\n    /**\n     * Patches each individual route handler method in order to create the\n     * span and propagate context. It does not create spans when there is no parent span.\n     * @param {PatchableServerRoute} route - the route handler which is being instrumented\n     * @param {string} [pluginName] - if present, represents the name of the plugin responsible\n     * for adding this server route. Else, signifies that the route was added directly\n     */\n    _wrapRouteHandler(route, pluginName) {\n        const instrumentation = this;\n        if (route[internal_types_1.handlerPatched] === true)\n            return route;\n        route[internal_types_1.handlerPatched] = true;\n        const wrapHandler = oldHandler => {\n            return async function (...params) {\n                if (api.trace.getSpan(api.context.active()) === undefined) {\n                    return await oldHandler.call(this, ...params);\n                }\n                const rpcMetadata = (0, core_1.getRPCMetadata)(api.context.active());\n                if (rpcMetadata?.type === core_1.RPCType.HTTP) {\n                    rpcMetadata.route = route.path;\n                }\n                const metadata = (0, utils_1.getRouteMetadata)(route, instrumentation._semconvStability, pluginName);\n                const span = instrumentation.tracer.startSpan(metadata.name, {\n                    attributes: metadata.attributes,\n                });\n                try {\n                    return await api.context.with(api.trace.setSpan(api.context.active(), span), () => oldHandler.call(this, ...params));\n                }\n                catch (err) {\n                    span.recordException(err);\n                    span.setStatus({\n                        code: api.SpanStatusCode.ERROR,\n                        message: err.message,\n                    });\n                    throw err;\n                }\n                finally {\n                    span.end();\n                }\n            };\n        };\n        if (typeof route.handler === 'function') {\n            route.handler = wrapHandler(route.handler);\n        }\n        else if (typeof route.options === 'function') {\n            const oldOptions = route.options;\n            route.options = function (server) {\n                const options = oldOptions(server);\n                if (typeof options.handler === 'function') {\n                    options.handler = wrapHandler(options.handler);\n                }\n                return options;\n            };\n        }\n        else if (typeof route.options?.handler === 'function') {\n            route.options.handler = wrapHandler(route.options.handler);\n        }\n        return route;\n    }\n}\nexports.HapiInstrumentation = HapiInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = exports.HapiInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"HapiInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.HapiInstrumentation; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KoaLayerType = void 0;\nvar KoaLayerType;\n(function (KoaLayerType) {\n    KoaLayerType[\"ROUTER\"] = \"router\";\n    KoaLayerType[\"MIDDLEWARE\"] = \"middleware\";\n})(KoaLayerType = exports.KoaLayerType || (exports.KoaLayerType = {}));\n//# sourceMappingURL=types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.61.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-koa';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AttributeNames = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"KOA_TYPE\"] = \"koa.type\";\n    AttributeNames[\"KOA_NAME\"] = \"koa.name\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isLayerIgnored = exports.getMiddlewareMetadata = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst types_1 = require(\"./types\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst getMiddlewareMetadata = (context, layer, isRouter, layerPath) => {\n    if (isRouter) {\n        return {\n            attributes: {\n                [AttributeNames_1.AttributeNames.KOA_NAME]: layerPath?.toString(),\n                [AttributeNames_1.AttributeNames.KOA_TYPE]: types_1.KoaLayerType.ROUTER,\n                [semantic_conventions_1.ATTR_HTTP_ROUTE]: layerPath?.toString(),\n            },\n            name: context._matchedRouteName || `router - ${layerPath}`,\n        };\n    }\n    else {\n        return {\n            attributes: {\n                [AttributeNames_1.AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n                [AttributeNames_1.AttributeNames.KOA_TYPE]: types_1.KoaLayerType.MIDDLEWARE,\n            },\n            name: `middleware - ${layer.name}`,\n        };\n    }\n};\nexports.getMiddlewareMetadata = getMiddlewareMetadata;\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n *     occurred\n */\nconst isLayerIgnored = (type, config) => {\n    return !!(Array.isArray(config?.ignoreLayersType) &&\n        config?.ignoreLayersType?.includes(type));\n};\nexports.isLayerIgnored = isLayerIgnored;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.kLayerPatched = void 0;\n/**\n * This symbol is used to mark a Koa layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexports.kLayerPatched = Symbol('koa-layer-patched');\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KoaInstrumentation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst types_1 = require(\"./types\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst utils_1 = require(\"./utils\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst internal_types_1 = require(\"./internal-types\");\n/** Koa instrumentation for OpenTelemetry */\nclass KoaInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    init() {\n        return new instrumentation_1.InstrumentationNodeModuleDefinition('koa', ['>=2.0.0 <4'], (module) => {\n            const moduleExports = module[Symbol.toStringTag] === 'Module'\n                ? module.default // ESM\n                : module; // CommonJS\n            if (moduleExports == null) {\n                return moduleExports;\n            }\n            if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.use)) {\n                this._unwrap(moduleExports.prototype, 'use');\n            }\n            this._wrap(moduleExports.prototype, 'use', this._getKoaUsePatch.bind(this));\n            return module;\n        }, (module) => {\n            const moduleExports = module[Symbol.toStringTag] === 'Module'\n                ? module.default // ESM\n                : module; // CommonJS\n            if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.use)) {\n                this._unwrap(moduleExports.prototype, 'use');\n            }\n        });\n    }\n    /**\n     * Patches the Koa.use function in order to instrument each original\n     * middleware layer which is introduced\n     * @param {KoaMiddleware} middleware - the original middleware function\n     */\n    _getKoaUsePatch(original) {\n        const plugin = this;\n        return function use(middlewareFunction) {\n            let patchedFunction;\n            if (middlewareFunction.router) {\n                patchedFunction = plugin._patchRouterDispatch(middlewareFunction);\n            }\n            else {\n                patchedFunction = plugin._patchLayer(middlewareFunction, false);\n            }\n            return original.apply(this, [patchedFunction]);\n        };\n    }\n    /**\n     * Patches the dispatch function used by @koa/router. This function\n     * goes through each routed middleware and adds instrumentation via a call\n     * to the @function _patchLayer function.\n     * @param {KoaMiddleware} dispatchLayer - the original dispatch function which dispatches\n     * routed middleware\n     */\n    _patchRouterDispatch(dispatchLayer) {\n        api.diag.debug('Patching @koa/router dispatch');\n        const router = dispatchLayer.router;\n        const routesStack = router?.stack ?? [];\n        for (const pathLayer of routesStack) {\n            const path = pathLayer.path;\n            // Type cast needed: router.stack comes from @types/koa@2.x but we use @types/koa@3.x\n            // See internal-types.ts for full explanation\n            const pathStack = pathLayer.stack;\n            for (let j = 0; j < pathStack.length; j++) {\n                const routedMiddleware = pathStack[j];\n                pathStack[j] = this._patchLayer(routedMiddleware, true, path);\n            }\n        }\n        return dispatchLayer;\n    }\n    /**\n     * Patches each individual @param middlewareLayer function in order to create the\n     * span and propagate context. It does not create spans when there is no parent span.\n     * @param {KoaMiddleware} middlewareLayer - the original middleware function.\n     * @param {boolean} isRouter - tracks whether the original middleware function\n     * was dispatched by the router originally\n     * @param {string?} layerPath - if present, provides additional data from the\n     * router about the routed path which the middleware is attached to\n     */\n    _patchLayer(middlewareLayer, isRouter, layerPath) {\n        const layerType = isRouter ? types_1.KoaLayerType.ROUTER : types_1.KoaLayerType.MIDDLEWARE;\n        // Skip patching layer if its ignored in the config\n        if (middlewareLayer[internal_types_1.kLayerPatched] === true ||\n            (0, utils_1.isLayerIgnored)(layerType, this.getConfig()))\n            return middlewareLayer;\n        if (middlewareLayer.constructor.name === 'GeneratorFunction' ||\n            middlewareLayer.constructor.name === 'AsyncGeneratorFunction') {\n            api.diag.debug('ignoring generator-based Koa middleware layer');\n            return middlewareLayer;\n        }\n        middlewareLayer[internal_types_1.kLayerPatched] = true;\n        api.diag.debug('patching Koa middleware layer');\n        return async (context, next) => {\n            const parent = api.trace.getSpan(api.context.active());\n            if (parent === undefined) {\n                return middlewareLayer(context, next);\n            }\n            const metadata = (0, utils_1.getMiddlewareMetadata)(context, middlewareLayer, isRouter, layerPath);\n            const span = this.tracer.startSpan(metadata.name, {\n                attributes: metadata.attributes,\n            });\n            const rpcMetadata = (0, core_1.getRPCMetadata)(api.context.active());\n            if (rpcMetadata?.type === core_1.RPCType.HTTP && context._matchedRoute) {\n                rpcMetadata.route = context._matchedRoute.toString();\n            }\n            const { requestHook } = this.getConfig();\n            if (requestHook) {\n                (0, instrumentation_1.safeExecuteInTheMiddle)(() => requestHook(span, {\n                    context,\n                    middlewareLayer,\n                    layerType,\n                }), e => {\n                    if (e) {\n                        api.diag.error('koa instrumentation: request hook failed', e);\n                    }\n                }, true);\n            }\n            const newContext = api.trace.setSpan(api.context.active(), span);\n            return api.context.with(newContext, async () => {\n                try {\n                    return await middlewareLayer(context, next);\n                }\n                catch (err) {\n                    span.recordException(err);\n                    throw err;\n                }\n                finally {\n                    span.end();\n                }\n            });\n        };\n    }\n}\nexports.KoaInstrumentation = KoaInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KoaLayerType = exports.AttributeNames = exports.KoaInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"KoaInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.KoaInstrumentation; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"KoaLayerType\", { enumerable: true, get: function () { return types_1.KoaLayerType; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectNames = exports.ConnectTypes = exports.AttributeNames = void 0;\nvar AttributeNames;\n(function (AttributeNames) {\n    AttributeNames[\"CONNECT_TYPE\"] = \"connect.type\";\n    AttributeNames[\"CONNECT_NAME\"] = \"connect.name\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\nvar ConnectTypes;\n(function (ConnectTypes) {\n    ConnectTypes[\"MIDDLEWARE\"] = \"middleware\";\n    ConnectTypes[\"REQUEST_HANDLER\"] = \"request_handler\";\n})(ConnectTypes = exports.ConnectTypes || (exports.ConnectTypes = {}));\nvar ConnectNames;\n(function (ConnectNames) {\n    ConnectNames[\"MIDDLEWARE\"] = \"middleware\";\n    ConnectNames[\"REQUEST_HANDLER\"] = \"request handler\";\n})(ConnectNames = exports.ConnectNames || (exports.ConnectNames = {}));\n//# sourceMappingURL=AttributeNames.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.56.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-connect';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._LAYERS_STORE_PROPERTY = void 0;\nexports._LAYERS_STORE_PROPERTY = Symbol('opentelemetry.instrumentation-connect.request-route-stack');\n//# sourceMappingURL=internal-types.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateRoute = exports.replaceCurrentStackRoute = exports.addNewStackLayer = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst internal_types_1 = require(\"./internal-types\");\nconst addNewStackLayer = (request) => {\n    if (Array.isArray(request[internal_types_1._LAYERS_STORE_PROPERTY]) === false) {\n        Object.defineProperty(request, internal_types_1._LAYERS_STORE_PROPERTY, {\n            enumerable: false,\n            value: [],\n        });\n    }\n    request[internal_types_1._LAYERS_STORE_PROPERTY].push('/');\n    const stackLength = request[internal_types_1._LAYERS_STORE_PROPERTY].length;\n    return () => {\n        if (stackLength === request[internal_types_1._LAYERS_STORE_PROPERTY].length) {\n            request[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n        }\n        else {\n            api_1.diag.warn('Connect: Trying to pop the stack multiple time');\n        }\n    };\n};\nexports.addNewStackLayer = addNewStackLayer;\nconst replaceCurrentStackRoute = (request, newRoute) => {\n    if (newRoute) {\n        request[internal_types_1._LAYERS_STORE_PROPERTY].splice(-1, 1, newRoute);\n    }\n};\nexports.replaceCurrentStackRoute = replaceCurrentStackRoute;\n// generate route from existing stack on request object.\n// splash between stack layer will be deduped\n// [\"/first/\", \"/second\", \"/third/\"] => /first/second/third/\nconst generateRoute = (request) => {\n    return request[internal_types_1._LAYERS_STORE_PROPERTY].reduce((acc, sub) => acc.replace(/\\/+$/, '') + sub);\n};\nexports.generateRoute = generateRoute;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectInstrumentation = exports.ANONYMOUS_NAME = void 0;\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst AttributeNames_1 = require(\"./enums/AttributeNames\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst utils_1 = require(\"./utils\");\nexports.ANONYMOUS_NAME = 'anonymous';\n/** Connect instrumentation for OpenTelemetry */\nclass ConnectInstrumentation extends instrumentation_1.InstrumentationBase {\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition('connect', ['>=3.0.0 <4'], moduleExports => {\n                return this._patchConstructor(moduleExports);\n            }),\n        ];\n    }\n    _patchApp(patchedApp) {\n        if (!(0, instrumentation_1.isWrapped)(patchedApp.use)) {\n            this._wrap(patchedApp, 'use', this._patchUse.bind(this));\n        }\n        if (!(0, instrumentation_1.isWrapped)(patchedApp.handle)) {\n            this._wrap(patchedApp, 'handle', this._patchHandle.bind(this));\n        }\n    }\n    _patchConstructor(original) {\n        const instrumentation = this;\n        return function (...args) {\n            const app = original.apply(this, args);\n            instrumentation._patchApp(app);\n            return app;\n        };\n    }\n    _patchNext(next, finishSpan) {\n        return function nextFunction(err) {\n            const result = next.apply(this, [err]);\n            finishSpan();\n            return result;\n        };\n    }\n    _startSpan(routeName, middleWare) {\n        let connectType;\n        let connectName;\n        let connectTypeName;\n        if (routeName) {\n            connectType = AttributeNames_1.ConnectTypes.REQUEST_HANDLER;\n            connectTypeName = AttributeNames_1.ConnectNames.REQUEST_HANDLER;\n            connectName = routeName;\n        }\n        else {\n            connectType = AttributeNames_1.ConnectTypes.MIDDLEWARE;\n            connectTypeName = AttributeNames_1.ConnectNames.MIDDLEWARE;\n            connectName = middleWare.name || exports.ANONYMOUS_NAME;\n        }\n        const spanName = `${connectTypeName} - ${connectName}`;\n        const options = {\n            attributes: {\n                [semantic_conventions_1.ATTR_HTTP_ROUTE]: routeName.length > 0 ? routeName : '/',\n                [AttributeNames_1.AttributeNames.CONNECT_TYPE]: connectType,\n                [AttributeNames_1.AttributeNames.CONNECT_NAME]: connectName,\n            },\n        };\n        return this.tracer.startSpan(spanName, options);\n    }\n    _patchMiddleware(routeName, middleWare) {\n        const instrumentation = this;\n        const isErrorMiddleware = middleWare.length === 4;\n        function patchedMiddleware() {\n            if (!instrumentation.isEnabled()) {\n                return middleWare.apply(this, arguments);\n            }\n            const [reqArgIdx, resArgIdx, nextArgIdx] = isErrorMiddleware\n                ? [1, 2, 3]\n                : [0, 1, 2];\n            const req = arguments[reqArgIdx];\n            const res = arguments[resArgIdx];\n            const next = arguments[nextArgIdx];\n            (0, utils_1.replaceCurrentStackRoute)(req, routeName);\n            const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active());\n            if (routeName && rpcMetadata?.type === core_1.RPCType.HTTP) {\n                rpcMetadata.route = (0, utils_1.generateRoute)(req);\n            }\n            let spanName = '';\n            if (routeName) {\n                spanName = `request handler - ${routeName}`;\n            }\n            else {\n                spanName = `middleware - ${middleWare.name || exports.ANONYMOUS_NAME}`;\n            }\n            const span = instrumentation._startSpan(routeName, middleWare);\n            instrumentation._diag.debug('start span', spanName);\n            let spanFinished = false;\n            function finishSpan() {\n                if (!spanFinished) {\n                    spanFinished = true;\n                    instrumentation._diag.debug(`finishing span ${span.name}`);\n                    span.end();\n                }\n                else {\n                    instrumentation._diag.debug(`span ${span.name} - already finished`);\n                }\n                res.removeListener('close', finishSpan);\n            }\n            res.addListener('close', finishSpan);\n            arguments[nextArgIdx] = instrumentation._patchNext(next, finishSpan);\n            return middleWare.apply(this, arguments);\n        }\n        Object.defineProperty(patchedMiddleware, 'length', {\n            value: middleWare.length,\n            writable: false,\n            configurable: true,\n        });\n        return patchedMiddleware;\n    }\n    _patchUse(original) {\n        const instrumentation = this;\n        return function (...args) {\n            const middleWare = args[args.length - 1];\n            const routeName = (args[args.length - 2] || '');\n            args[args.length - 1] = instrumentation._patchMiddleware(routeName, middleWare);\n            return original.apply(this, args);\n        };\n    }\n    _patchHandle(original) {\n        const instrumentation = this;\n        return function () {\n            const [reqIdx, outIdx] = [0, 2];\n            const req = arguments[reqIdx];\n            const out = arguments[outIdx];\n            const completeStack = (0, utils_1.addNewStackLayer)(req);\n            if (typeof out === 'function') {\n                arguments[outIdx] = instrumentation._patchOut(out, completeStack);\n            }\n            return original.apply(this, arguments);\n        };\n    }\n    _patchOut(out, completeStack) {\n        return function nextFunction(...args) {\n            completeStack();\n            return Reflect.apply(out, this, args);\n        };\n    }\n}\nexports.ConnectInstrumentation = ConnectInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectTypes = exports.ConnectNames = exports.AttributeNames = exports.ANONYMOUS_NAME = exports.ConnectInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"ConnectInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.ConnectInstrumentation; } });\nObject.defineProperty(exports, \"ANONYMOUS_NAME\", { enumerable: true, get: function () { return instrumentation_1.ANONYMOUS_NAME; } });\nvar AttributeNames_1 = require(\"./enums/AttributeNames\");\nObject.defineProperty(exports, \"AttributeNames\", { enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } });\nObject.defineProperty(exports, \"ConnectNames\", { enumerable: true, get: function () { return AttributeNames_1.ConnectNames; } });\nObject.defineProperty(exports, \"ConnectTypes\", { enumerable: true, get: function () { return AttributeNames_1.ConnectTypes; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DB_SYSTEM_VALUE_MSSQL = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_SQL_TABLE = exports.ATTR_DB_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`, but only if not extracting the value from `db.query.text`.\n */\nexports.ATTR_DB_SQL_TABLE = 'db.sql.table';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mssql\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Microsoft SQL Server\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_VALUE_MSSQL = 'mssql';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.once = exports.getSpanName = void 0;\n/**\n * The span name SHOULD be set to a low cardinality value\n * representing the statement executed on the database.\n *\n * @returns Operation executed on Tedious Connection. Does not map to SQL statement in any way.\n */\nfunction getSpanName(operation, db, sql, bulkLoadTable) {\n    if (operation === 'execBulkLoad' && bulkLoadTable && db) {\n        return `${operation} ${bulkLoadTable} ${db}`;\n    }\n    if (operation === 'callProcedure') {\n        // `sql` refers to procedure name with `callProcedure`\n        if (db) {\n            return `${operation} ${sql} ${db}`;\n        }\n        return `${operation} ${sql}`;\n    }\n    // do not use `sql` in general case because of high-cardinality\n    if (db) {\n        return `${operation} ${db}`;\n    }\n    return `${operation}`;\n}\nexports.getSpanName = getSpanName;\nconst once = (fn) => {\n    let called = false;\n    return (...args) => {\n        if (called)\n            return;\n        called = true;\n        return fn(...args);\n    };\n};\nexports.once = once;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.32.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-tedious';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TediousInstrumentation = exports.INJECTED_CTX = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst events_1 = require(\"events\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst CURRENT_DATABASE = Symbol('opentelemetry.instrumentation-tedious.current-database');\nexports.INJECTED_CTX = Symbol('opentelemetry.instrumentation-tedious.context-info-injected');\nconst PATCHED_METHODS = [\n    'callProcedure',\n    'execSql',\n    'execSqlBatch',\n    'execBulkLoad',\n    'prepare',\n    'execute',\n];\nfunction setDatabase(databaseName) {\n    Object.defineProperty(this, CURRENT_DATABASE, {\n        value: databaseName,\n        writable: true,\n    });\n}\nclass TediousInstrumentation extends instrumentation_1.InstrumentationBase {\n    static COMPONENT = 'tedious';\n    _netSemconvStability;\n    _dbSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n        this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition(TediousInstrumentation.COMPONENT, ['>=1.11.0 <20'], (moduleExports) => {\n                const ConnectionPrototype = moduleExports.Connection.prototype;\n                for (const method of PATCHED_METHODS) {\n                    if ((0, instrumentation_1.isWrapped)(ConnectionPrototype[method])) {\n                        this._unwrap(ConnectionPrototype, method);\n                    }\n                    this._wrap(ConnectionPrototype, method, this._patchQuery(method, moduleExports));\n                }\n                if ((0, instrumentation_1.isWrapped)(ConnectionPrototype.connect)) {\n                    this._unwrap(ConnectionPrototype, 'connect');\n                }\n                this._wrap(ConnectionPrototype, 'connect', this._patchConnect);\n                return moduleExports;\n            }, (moduleExports) => {\n                if (moduleExports === undefined)\n                    return;\n                const ConnectionPrototype = moduleExports.Connection.prototype;\n                for (const method of PATCHED_METHODS) {\n                    this._unwrap(ConnectionPrototype, method);\n                }\n                this._unwrap(ConnectionPrototype, 'connect');\n            }),\n        ];\n    }\n    _patchConnect(original) {\n        return function patchedConnect() {\n            setDatabase.call(this, this.config?.options?.database);\n            // remove the listener first in case it's already added\n            this.removeListener('databaseChange', setDatabase);\n            this.on('databaseChange', setDatabase);\n            this.once('end', () => {\n                this.removeListener('databaseChange', setDatabase);\n            });\n            return original.apply(this, arguments);\n        };\n    }\n    _buildTraceparent(span) {\n        const sc = span.spanContext();\n        return `00-${sc.traceId}-${sc.spanId}-0${Number(sc.traceFlags || api.TraceFlags.NONE).toString(16)}`;\n    }\n    /**\n     * Fire a one-off `SET CONTEXT_INFO @opentelemetry_traceparent` on the same\n     * connection. Marks the request with INJECTED_CTX so our patch skips it.\n     */\n    _injectContextInfo(connection, tediousModule, traceparent) {\n        return new Promise(resolve => {\n            try {\n                const sql = 'set context_info @opentelemetry_traceparent';\n                const req = new tediousModule.Request(sql, (_err) => {\n                    resolve();\n                });\n                Object.defineProperty(req, exports.INJECTED_CTX, { value: true });\n                const buf = Buffer.from(traceparent, 'utf8');\n                req.addParameter('opentelemetry_traceparent', tediousModule.TYPES.VarBinary, buf, { length: buf.length });\n                connection.execSql(req);\n            }\n            catch {\n                resolve();\n            }\n        });\n    }\n    _shouldInjectFor(operation) {\n        return (operation === 'execSql' ||\n            operation === 'execSqlBatch' ||\n            operation === 'callProcedure' ||\n            operation === 'execute');\n    }\n    _patchQuery(operation, tediousModule) {\n        return (originalMethod) => {\n            const thisPlugin = this;\n            function patchedMethod(request) {\n                // Skip our own injected request\n                if (request?.[exports.INJECTED_CTX]) {\n                    return originalMethod.apply(this, arguments);\n                }\n                if (!(request instanceof events_1.EventEmitter)) {\n                    thisPlugin._diag.warn(`Unexpected invocation of patched ${operation} method. Span not recorded`);\n                    return originalMethod.apply(this, arguments);\n                }\n                let procCount = 0;\n                let statementCount = 0;\n                const incrementStatementCount = () => statementCount++;\n                const incrementProcCount = () => procCount++;\n                const databaseName = this[CURRENT_DATABASE];\n                const sql = (request => {\n                    // Required for <11.0.9\n                    if (request.sqlTextOrProcedure === 'sp_prepare' &&\n                        request.parametersByName?.stmt?.value) {\n                        return request.parametersByName.stmt.value;\n                    }\n                    return request.sqlTextOrProcedure;\n                })(request);\n                const attributes = {};\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_DB_SYSTEM] = semconv_1.DB_SYSTEM_VALUE_MSSQL;\n                    attributes[semconv_1.ATTR_DB_NAME] = databaseName;\n                    // >=4 uses `authentication` object; older versions just userName and password pair\n                    attributes[semconv_1.ATTR_DB_USER] =\n                        this.config?.userName ??\n                            this.config?.authentication?.options?.userName;\n                    attributes[semconv_1.ATTR_DB_STATEMENT] = sql;\n                    attributes[semconv_1.ATTR_DB_SQL_TABLE] = request.table;\n                }\n                if (thisPlugin._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    // The OTel spec for \"db.namespace\" discusses handling for connection\n                    // to MSSQL \"named instances\". This isn't currently supported.\n                    //    https://opentelemetry.io/docs/specs/semconv/database/sql-server/#:~:text=%5B1%5D%20db%2Enamespace\n                    attributes[semantic_conventions_1.ATTR_DB_NAMESPACE] = databaseName;\n                    attributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] =\n                        semantic_conventions_1.DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER;\n                    attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = sql;\n                    attributes[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = request.table;\n                    // See https://opentelemetry.io/docs/specs/semconv/database/sql-server/#spans\n                    // TODO(3290): can `db.response.status_code` be added?\n                    // TODO(3290): is `operation` correct for `db.operation.name`\n                    // TODO(3290): can `db.query.summary` reliably be calculated?\n                    // TODO(3290): `db.stored_procedure.name`\n                }\n                if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                    attributes[semconv_1.ATTR_NET_PEER_NAME] = this.config?.server;\n                    attributes[semconv_1.ATTR_NET_PEER_PORT] = this.config?.options?.port;\n                }\n                if (thisPlugin._netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                    attributes[semantic_conventions_1.ATTR_SERVER_ADDRESS] = this.config?.server;\n                    attributes[semantic_conventions_1.ATTR_SERVER_PORT] = this.config?.options?.port;\n                }\n                const span = thisPlugin.tracer.startSpan((0, utils_1.getSpanName)(operation, databaseName, sql, request.table), {\n                    kind: api.SpanKind.CLIENT,\n                    attributes,\n                });\n                const endSpan = (0, utils_1.once)((err) => {\n                    request.removeListener('done', incrementStatementCount);\n                    request.removeListener('doneInProc', incrementStatementCount);\n                    request.removeListener('doneProc', incrementProcCount);\n                    request.removeListener('error', endSpan);\n                    this.removeListener('end', endSpan);\n                    span.setAttribute('tedious.procedure_count', procCount);\n                    span.setAttribute('tedious.statement_count', statementCount);\n                    if (err) {\n                        span.setStatus({\n                            code: api.SpanStatusCode.ERROR,\n                            message: err.message,\n                        });\n                        // TODO(3290): set `error.type` attribute?\n                    }\n                    span.end();\n                });\n                request.on('done', incrementStatementCount);\n                request.on('doneInProc', incrementStatementCount);\n                request.on('doneProc', incrementProcCount);\n                request.once('error', endSpan);\n                this.on('end', endSpan);\n                if (typeof request.callback === 'function') {\n                    thisPlugin._wrap(request, 'callback', thisPlugin._patchCallbackQuery(endSpan));\n                }\n                else {\n                    thisPlugin._diag.error('Expected request.callback to be a function');\n                }\n                const runUserRequest = () => {\n                    return api.context.with(api.trace.setSpan(api.context.active(), span), originalMethod, this, ...arguments);\n                };\n                const cfg = thisPlugin.getConfig();\n                const shouldInject = cfg.enableTraceContextPropagation &&\n                    thisPlugin._shouldInjectFor(operation);\n                if (!shouldInject)\n                    return runUserRequest();\n                const traceparent = thisPlugin._buildTraceparent(span);\n                void thisPlugin\n                    ._injectContextInfo(this, tediousModule, traceparent)\n                    .finally(runUserRequest);\n            }\n            Object.defineProperty(patchedMethod, 'length', {\n                value: originalMethod.length,\n                writable: false,\n            });\n            return patchedMethod;\n        };\n    }\n    _patchCallbackQuery(endSpan) {\n        return (originalCallback) => {\n            return function (err, rowCount, rows) {\n                endSpan(err);\n                return originalCallback.apply(this, arguments);\n            };\n        };\n    }\n}\nexports.TediousInstrumentation = TediousInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TediousInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"TediousInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.TediousInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.56.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-generic-pool';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericPoolInstrumentation = void 0;\nconst api = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst MODULE_NAME = 'generic-pool';\nclass GenericPoolInstrumentation extends instrumentation_1.InstrumentationBase {\n    // only used for v2 - v2.3)\n    _isDisabled = false;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n    }\n    init() {\n        return [\n            new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=3.0.0 <4'], moduleExports => {\n                const Pool = moduleExports.Pool;\n                if ((0, instrumentation_1.isWrapped)(Pool.prototype.acquire)) {\n                    this._unwrap(Pool.prototype, 'acquire');\n                }\n                this._wrap(Pool.prototype, 'acquire', this._acquirePatcher.bind(this));\n                return moduleExports;\n            }, moduleExports => {\n                const Pool = moduleExports.Pool;\n                this._unwrap(Pool.prototype, 'acquire');\n                return moduleExports;\n            }),\n            new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=2.4.0 <3'], moduleExports => {\n                const Pool = moduleExports.Pool;\n                if ((0, instrumentation_1.isWrapped)(Pool.prototype.acquire)) {\n                    this._unwrap(Pool.prototype, 'acquire');\n                }\n                this._wrap(Pool.prototype, 'acquire', this._acquireWithCallbacksPatcher.bind(this));\n                return moduleExports;\n            }, moduleExports => {\n                const Pool = moduleExports.Pool;\n                this._unwrap(Pool.prototype, 'acquire');\n                return moduleExports;\n            }),\n            new instrumentation_1.InstrumentationNodeModuleDefinition(MODULE_NAME, ['>=2.0.0 <2.4'], moduleExports => {\n                this._isDisabled = false;\n                if ((0, instrumentation_1.isWrapped)(moduleExports.Pool)) {\n                    this._unwrap(moduleExports, 'Pool');\n                }\n                this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n                return moduleExports;\n            }, moduleExports => {\n                // since the object is created on the fly every time, we need to use\n                // a boolean switch here to disable the instrumentation\n                this._isDisabled = true;\n                return moduleExports;\n            }),\n        ];\n    }\n    _acquirePatcher(original) {\n        const instrumentation = this;\n        return function wrapped_acquire(...args) {\n            const parent = api.context.active();\n            const span = instrumentation.tracer.startSpan('generic-pool.acquire', {}, parent);\n            return api.context.with(api.trace.setSpan(parent, span), () => {\n                return original.call(this, ...args).then(value => {\n                    span.end();\n                    return value;\n                }, err => {\n                    span.recordException(err);\n                    span.end();\n                    throw err;\n                });\n            });\n        };\n    }\n    _poolWrapper(original) {\n        const instrumentation = this;\n        return function wrapped_pool() {\n            const pool = original.apply(this, arguments);\n            instrumentation._wrap(pool, 'acquire', instrumentation._acquireWithCallbacksPatcher.bind(instrumentation));\n            return pool;\n        };\n    }\n    _acquireWithCallbacksPatcher(original) {\n        const instrumentation = this;\n        return function wrapped_acquire(cb, priority) {\n            // only used for v2 - v2.3\n            if (instrumentation._isDisabled) {\n                return original.call(this, cb, priority);\n            }\n            const parent = api.context.active();\n            const span = instrumentation.tracer.startSpan('generic-pool.acquire', {}, parent);\n            return api.context.with(api.trace.setSpan(parent, span), () => {\n                original.call(this, (err, client) => {\n                    span.end();\n                    // Not checking whether cb is a function because\n                    // the original code doesn't do that either.\n                    if (cb) {\n                        return cb(err, client);\n                    }\n                }, priority);\n            });\n        };\n    }\n}\nexports.GenericPoolInstrumentation = GenericPoolInstrumentation;\n//# sourceMappingURL=instrumentation.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GenericPoolInstrumentation = void 0;\nvar instrumentation_1 = require(\"./instrumentation\");\nObject.defineProperty(exports, \"GenericPoolInstrumentation\", { enumerable: true, get: function () { return instrumentation_1.GenericPoolInstrumentation; } });\n//# sourceMappingURL=index.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_MESSAGING_SYSTEM = exports.ATTR_MESSAGING_OPERATION = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `messaging.operation.type` instead.\n *\n * @example publish\n * @example create\n * @example process\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `messaging.operation.type`.\n */\nexports.ATTR_MESSAGING_OPERATION = 'messaging.operation';\n/**\n * The messaging system as identified by the client instrumentation.\n *\n * @note The actual messaging system may differ from the one known by the client. For example, when using Kafka client libraries to communicate with Azure Event Hubs, the `messaging.system` is set to `kafka` based on the instrumentation's best knowledge.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_MESSAGING_SYSTEM = 'messaging.system';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n//# sourceMappingURL=semconv.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ATTR_MESSAGING_CONVERSATION_ID = exports.OLD_ATTR_MESSAGING_MESSAGE_ID = exports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = exports.ATTR_MESSAGING_URL = exports.ATTR_MESSAGING_PROTOCOL_VERSION = exports.ATTR_MESSAGING_PROTOCOL = exports.MESSAGING_OPERATION_VALUE_PROCESS = exports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = exports.ATTR_MESSAGING_DESTINATION_KIND = exports.ATTR_MESSAGING_DESTINATION = void 0;\n/*\n * This file contains constants for values that where replaced/removed from\n * Semantic Conventions long enough ago that they do not have `ATTR_*`\n * constants in the `@opentelemetry/semantic-conventions` package. Eventually\n * it is expected that this instrumention will be updated to emit telemetry\n * using modern Semantic Conventions, dropping the need for the constants in\n * this file.\n */\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_DESTINATION = 'messaging.destination';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.ATTR_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is "send", this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.MESSAGING_OPERATION_VALUE_PROCESS = 'process';\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexports.ATTR_MESSAGING_PROTOCOL = 'messaging.protocol';\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexports.ATTR_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexports.ATTR_MESSAGING_URL = 'messaging.url';\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexports.MESSAGING_DESTINATION_KIND_VALUE_TOPIC = 'topic';\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n *\n * Note: changing to `ATTR_MESSAGING_MESSAGE_ID` means a change in value from `messaging.message_id` to `messaging.message.id`.\n */\nexports.OLD_ATTR_MESSAGING_MESSAGE_ID = 'messaging.message_id';\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexports.ATTR_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\n//# sourceMappingURL=semconv-obsolete.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_CONFIG = exports.EndOperation = void 0;\nvar EndOperation;\n(function (EndOperation) {\n    EndOperation[\"AutoAck\"] = \"auto ack\";\n    EndOperation[\"Ack\"] = \"ack\";\n    EndOperation[\"AckAll\"] = \"ackAll\";\n    EndOperation[\"Reject\"] = \"reject\";\n    EndOperation[\"Nack\"] = \"nack\";\n    EndOperation[\"NackAll\"] = \"nackAll\";\n    EndOperation[\"ChannelClosed\"] = \"channel closed\";\n    EndOperation[\"ChannelError\"] = \"channel error\";\n    EndOperation[\"InstrumentationTimeout\"] = \"instrumentation timeout\";\n})(EndOperation = exports.EndOperation || (exports.EndOperation = {}));\nexports.DEFAULT_CONFIG = {\n    consumeTimeoutMs: 1000 * 60,\n    useLinksForConsume: false,\n};\n//# sourceMappingURL=types.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isConfirmChannelTracing = exports.unmarkConfirmChannelTracing = exports.markConfirmChannelTracing = exports.getConnectionAttributesFromUrl = exports.getConnectionAttributesFromServer = exports.normalizeExchange = exports.CONNECTION_ATTRIBUTES = exports.CHANNEL_CONSUME_TIMEOUT_TIMER = exports.CHANNEL_SPANS_NOT_ENDED = exports.MESSAGE_STORED_SPAN = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semantic_conventions_1 = require(\"@opentelemetry/semantic-conventions\");\nconst semconv_1 = require(\"./semconv\");\nconst semconv_obsolete_1 = require(\"../src/semconv-obsolete\");\nexports.MESSAGE_STORED_SPAN = Symbol('opentelemetry.amqplib.message.stored-span');\nexports.CHANNEL_SPANS_NOT_ENDED = Symbol('opentelemetry.amqplib.channel.spans-not-ended');\nexports.CHANNEL_CONSUME_TIMEOUT_TIMER = Symbol('opentelemetry.amqplib.channel.consumer-timeout-timer');\nexports.CONNECTION_ATTRIBUTES = Symbol('opentelemetry.amqplib.connection.attributes');\nconst IS_CONFIRM_CHANNEL_CONTEXT_KEY = (0, api_1.createContextKey)('opentelemetry.amqplib.channel.is-confirm-channel');\nconst normalizeExchange = (exchangeName) => exchangeName !== '' ? exchangeName : '';\nexports.normalizeExchange = normalizeExchange;\nconst censorPassword = (url) => {\n    return url.replace(/:[^:@/]*@/, ':***@');\n};\nconst getPort = (portFromUrl, resolvedProtocol) => {\n    // we are using the resolved protocol which is upper case\n    // this code mimic the behavior of the amqplib which is used to set connection params\n    return portFromUrl || (resolvedProtocol === 'AMQP' ? 5672 : 5671);\n};\nconst getProtocol = (protocolFromUrl) => {\n    const resolvedProtocol = protocolFromUrl || 'amqp';\n    // the substring removed the ':' part of the protocol ('amqp:' -> 'amqp')\n    const noEndingColon = resolvedProtocol.endsWith(':')\n        ? resolvedProtocol.substring(0, resolvedProtocol.length - 1)\n        : resolvedProtocol;\n    // upper cases to match spec\n    return noEndingColon.toUpperCase();\n};\nconst getHostname = (hostnameFromUrl) => {\n    // if user supplies empty hostname, it gets forwarded to 'net' package which default it to localhost.\n    // https://nodejs.org/docs/latest-v12.x/api/net.html#net_socket_connect_options_connectlistener\n    return hostnameFromUrl || 'localhost';\n};\nconst extractConnectionAttributeOrLog = (url, attributeKey, attributeValue, nameForLog) => {\n    if (attributeValue) {\n        return { [attributeKey]: attributeValue };\n    }\n    else {\n        api_1.diag.error(`amqplib instrumentation: could not extract connection attribute ${nameForLog} from user supplied url`, {\n            url,\n        });\n        return {};\n    }\n};\nconst getConnectionAttributesFromServer = (conn) => {\n    const product = conn.serverProperties.product?.toLowerCase?.();\n    if (product) {\n        return {\n            [semconv_1.ATTR_MESSAGING_SYSTEM]: product,\n        };\n    }\n    else {\n        return {};\n    }\n};\nexports.getConnectionAttributesFromServer = getConnectionAttributesFromServer;\nconst getConnectionAttributesFromUrl = (url, netSemconvStability) => {\n    const attributes = {\n        [semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library\n    };\n    url = url || 'amqp://localhost';\n    if (typeof url === 'object') {\n        const connectOptions = url;\n        const protocol = getProtocol(connectOptions?.protocol);\n        Object.assign(attributes, {\n            ...extractConnectionAttributeOrLog(url, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'),\n        });\n        const hostname = getHostname(connectOptions?.hostname);\n        if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n            Object.assign(attributes, {\n                ...extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'),\n            });\n        }\n        if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            Object.assign(attributes, {\n                ...extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'),\n            });\n        }\n        const port = getPort(connectOptions.port, protocol);\n        if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n            Object.assign(attributes, extractConnectionAttributeOrLog(url, semconv_1.ATTR_NET_PEER_PORT, port, 'port'));\n        }\n        if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n            Object.assign(attributes, extractConnectionAttributeOrLog(url, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port'));\n        }\n    }\n    else {\n        const censoredUrl = censorPassword(url);\n        attributes[semconv_obsolete_1.ATTR_MESSAGING_URL] = censoredUrl;\n        try {\n            const urlParts = new URL(censoredUrl);\n            const protocol = getProtocol(urlParts.protocol);\n            Object.assign(attributes, {\n                ...extractConnectionAttributeOrLog(censoredUrl, semconv_obsolete_1.ATTR_MESSAGING_PROTOCOL, protocol, 'protocol'),\n            });\n            const hostname = getHostname(urlParts.hostname);\n            if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                Object.assign(attributes, {\n                    ...extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_NAME, hostname, 'hostname'),\n                });\n            }\n            if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                Object.assign(attributes, {\n                    ...extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_ADDRESS, hostname, 'hostname'),\n                });\n            }\n            const port = getPort(urlParts.port ? parseInt(urlParts.port) : undefined, protocol);\n            if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n                Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semconv_1.ATTR_NET_PEER_PORT, port, 'port'));\n            }\n            if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n                Object.assign(attributes, extractConnectionAttributeOrLog(censoredUrl, semantic_conventions_1.ATTR_SERVER_PORT, port, 'port'));\n            }\n        }\n        catch (err) {\n            api_1.diag.error('amqplib instrumentation: error while extracting connection details from connection url', {\n                censoredUrl,\n                err,\n            });\n        }\n    }\n    return attributes;\n};\nexports.getConnectionAttributesFromUrl = getConnectionAttributesFromUrl;\nconst markConfirmChannelTracing = (context) => {\n    return context.setValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY, true);\n};\nexports.markConfirmChannelTracing = markConfirmChannelTracing;\nconst unmarkConfirmChannelTracing = (context) => {\n    return context.deleteValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY);\n};\nexports.unmarkConfirmChannelTracing = unmarkConfirmChannelTracing;\nconst isConfirmChannelTracing = (context) => {\n    return context.getValue(IS_CONFIRM_CHANNEL_CONTEXT_KEY) === true;\n};\nexports.isConfirmChannelTracing = isConfirmChannelTracing;\n//# sourceMappingURL=utils.js.map",
+    "\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.60.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-amqplib';\n//# sourceMappingURL=version.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AmqplibInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = require(\"@opentelemetry/api\");\nconst core_1 = require(\"@opentelemetry/core\");\nconst instrumentation_1 = require(\"@opentelemetry/instrumentation\");\nconst semconv_1 = require(\"./semconv\");\nconst semconv_obsolete_1 = require(\"../src/semconv-obsolete\");\nconst types_1 = require(\"./types\");\nconst utils_1 = require(\"./utils\");\n/** @knipignore */\nconst version_1 = require(\"./version\");\nconst supportedVersions = ['>=0.5.5 <1'];\nclass AmqplibInstrumentation extends instrumentation_1.InstrumentationBase {\n    _netSemconvStability;\n    constructor(config = {}) {\n        super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, { ...types_1.DEFAULT_CONFIG, ...config });\n        this._setSemconvStabilityFromEnv();\n    }\n    // Used for testing.\n    _setSemconvStabilityFromEnv() {\n        this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n    }\n    setConfig(config = {}) {\n        super.setConfig({ ...types_1.DEFAULT_CONFIG, ...config });\n    }\n    init() {\n        const channelModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/channel_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this));\n        const callbackModelModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/callback_model.js', supportedVersions, this.patchChannelModel.bind(this), this.unpatchChannelModel.bind(this));\n        const connectModuleFile = new instrumentation_1.InstrumentationNodeModuleFile('amqplib/lib/connect.js', supportedVersions, this.patchConnect.bind(this), this.unpatchConnect.bind(this));\n        const module = new instrumentation_1.InstrumentationNodeModuleDefinition('amqplib', supportedVersions, undefined, undefined, [channelModelModuleFile, connectModuleFile, callbackModelModuleFile]);\n        return module;\n    }\n    patchConnect(moduleExports) {\n        moduleExports = this.unpatchConnect(moduleExports);\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n            this._wrap(moduleExports, 'connect', this.getConnectPatch.bind(this));\n        }\n        return moduleExports;\n    }\n    unpatchConnect(moduleExports) {\n        if ((0, instrumentation_1.isWrapped)(moduleExports.connect)) {\n            this._unwrap(moduleExports, 'connect');\n        }\n        return moduleExports;\n    }\n    patchChannelModel(moduleExports, moduleVersion) {\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) {\n            this._wrap(moduleExports.Channel.prototype, 'publish', this.getPublishPatch.bind(this, moduleVersion));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) {\n            this._wrap(moduleExports.Channel.prototype, 'consume', this.getConsumePatch.bind(this, moduleVersion));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) {\n            this._wrap(moduleExports.Channel.prototype, 'ack', this.getAckPatch.bind(this, false, types_1.EndOperation.Ack));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) {\n            this._wrap(moduleExports.Channel.prototype, 'nack', this.getAckPatch.bind(this, true, types_1.EndOperation.Nack));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) {\n            this._wrap(moduleExports.Channel.prototype, 'reject', this.getAckPatch.bind(this, true, types_1.EndOperation.Reject));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) {\n            this._wrap(moduleExports.Channel.prototype, 'ackAll', this.getAckAllPatch.bind(this, false, types_1.EndOperation.AckAll));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) {\n            this._wrap(moduleExports.Channel.prototype, 'nackAll', this.getAckAllPatch.bind(this, true, types_1.EndOperation.NackAll));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) {\n            this._wrap(moduleExports.Channel.prototype, 'emit', this.getChannelEmitPatch.bind(this));\n        }\n        if (!(0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) {\n            this._wrap(moduleExports.ConfirmChannel.prototype, 'publish', this.getConfirmedPublishPatch.bind(this, moduleVersion));\n        }\n        return moduleExports;\n    }\n    unpatchChannelModel(moduleExports) {\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.publish)) {\n            this._unwrap(moduleExports.Channel.prototype, 'publish');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.consume)) {\n            this._unwrap(moduleExports.Channel.prototype, 'consume');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ack)) {\n            this._unwrap(moduleExports.Channel.prototype, 'ack');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nack)) {\n            this._unwrap(moduleExports.Channel.prototype, 'nack');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.reject)) {\n            this._unwrap(moduleExports.Channel.prototype, 'reject');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.ackAll)) {\n            this._unwrap(moduleExports.Channel.prototype, 'ackAll');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.nackAll)) {\n            this._unwrap(moduleExports.Channel.prototype, 'nackAll');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.Channel.prototype.emit)) {\n            this._unwrap(moduleExports.Channel.prototype, 'emit');\n        }\n        if ((0, instrumentation_1.isWrapped)(moduleExports.ConfirmChannel.prototype.publish)) {\n            this._unwrap(moduleExports.ConfirmChannel.prototype, 'publish');\n        }\n        return moduleExports;\n    }\n    getConnectPatch(original) {\n        const self = this;\n        return function patchedConnect(url, socketOptions, openCallback) {\n            return original.call(this, url, socketOptions, function (err, conn) {\n                if (err == null) {\n                    const urlAttributes = (0, utils_1.getConnectionAttributesFromUrl)(url, self._netSemconvStability);\n                    const serverAttributes = (0, utils_1.getConnectionAttributesFromServer)(conn);\n                    conn[utils_1.CONNECTION_ATTRIBUTES] = {\n                        ...urlAttributes,\n                        ...serverAttributes,\n                    };\n                }\n                openCallback.apply(this, arguments);\n            });\n        };\n    }\n    getChannelEmitPatch(original) {\n        const self = this;\n        return function emit(eventName) {\n            if (eventName === 'close') {\n                self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelClosed, undefined);\n                const activeTimer = this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER];\n                if (activeTimer) {\n                    clearInterval(activeTimer);\n                }\n                this[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = undefined;\n            }\n            else if (eventName === 'error') {\n                self.endAllSpansOnChannel(this, true, types_1.EndOperation.ChannelError, undefined);\n            }\n            return original.apply(this, arguments);\n        };\n    }\n    getAckAllPatch(isRejected, endOperation, original) {\n        const self = this;\n        return function ackAll(requeueOrEmpty) {\n            self.endAllSpansOnChannel(this, isRejected, endOperation, requeueOrEmpty);\n            return original.apply(this, arguments);\n        };\n    }\n    getAckPatch(isRejected, endOperation, original) {\n        const self = this;\n        return function ack(message, allUpToOrRequeue, requeue) {\n            const channel = this;\n            // we use this patch in reject function as well, but it has different signature\n            const requeueResolved = endOperation === types_1.EndOperation.Reject ? allUpToOrRequeue : requeue;\n            const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n            const msgIndex = spansNotEnded.findIndex(msgDetails => msgDetails.msg === message);\n            if (msgIndex < 0) {\n                // should not happen in happy flow\n                // but possible if user is calling the api function ack twice with same message\n                self.endConsumerSpan(message, isRejected, endOperation, requeueResolved);\n            }\n            else if (endOperation !== types_1.EndOperation.Reject && allUpToOrRequeue) {\n                for (let i = 0; i <= msgIndex; i++) {\n                    self.endConsumerSpan(spansNotEnded[i].msg, isRejected, endOperation, requeueResolved);\n                }\n                spansNotEnded.splice(0, msgIndex + 1);\n            }\n            else {\n                self.endConsumerSpan(message, isRejected, endOperation, requeueResolved);\n                spansNotEnded.splice(msgIndex, 1);\n            }\n            return original.apply(this, arguments);\n        };\n    }\n    getConsumePatch(moduleVersion, original) {\n        const self = this;\n        return function consume(queue, onMessage, options) {\n            const channel = this;\n            if (!Object.prototype.hasOwnProperty.call(channel, utils_1.CHANNEL_SPANS_NOT_ENDED)) {\n                const { consumeTimeoutMs } = self.getConfig();\n                if (consumeTimeoutMs) {\n                    const timer = setInterval(() => {\n                        self.checkConsumeTimeoutOnChannel(channel);\n                    }, consumeTimeoutMs);\n                    timer.unref();\n                    channel[utils_1.CHANNEL_CONSUME_TIMEOUT_TIMER] = timer;\n                }\n                channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = [];\n            }\n            const patchedOnMessage = function (msg) {\n                // msg is expected to be null for signaling consumer cancel notification\n                // https://www.rabbitmq.com/consumer-cancel.html\n                // in this case, we do not start a span, as this is not a real message.\n                if (!msg) {\n                    return onMessage.call(this, msg);\n                }\n                const headers = msg.properties.headers ?? {};\n                let parentContext = api_1.propagation.extract(api_1.ROOT_CONTEXT, headers);\n                const exchange = msg.fields?.exchange;\n                let links;\n                if (self._config.useLinksForConsume) {\n                    const parentSpanContext = parentContext\n                        ? api_1.trace.getSpan(parentContext)?.spanContext()\n                        : undefined;\n                    parentContext = undefined;\n                    if (parentSpanContext) {\n                        links = [\n                            {\n                                context: parentSpanContext,\n                            },\n                        ];\n                    }\n                }\n                const span = self.tracer.startSpan(`${queue} process`, {\n                    kind: api_1.SpanKind.CONSUMER,\n                    attributes: {\n                        ...channel?.connection?.[utils_1.CONNECTION_ATTRIBUTES],\n                        [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange,\n                        [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n                        [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey,\n                        [semconv_1.ATTR_MESSAGING_OPERATION]: semconv_obsolete_1.MESSAGING_OPERATION_VALUE_PROCESS,\n                        [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: msg?.properties.messageId,\n                        [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId,\n                    },\n                    links,\n                }, parentContext);\n                const { consumeHook } = self.getConfig();\n                if (consumeHook) {\n                    (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeHook(span, { moduleVersion, msg }), e => {\n                        if (e) {\n                            api_1.diag.error('amqplib instrumentation: consumerHook error', e);\n                        }\n                    }, true);\n                }\n                if (!options?.noAck) {\n                    // store the message on the channel so we can close the span on ackAll etc\n                    channel[utils_1.CHANNEL_SPANS_NOT_ENDED].push({\n                        msg,\n                        timeOfConsume: (0, core_1.hrTime)(),\n                    });\n                    // store the span on the message, so we can end it when user call 'ack' on it\n                    msg[utils_1.MESSAGE_STORED_SPAN] = span;\n                }\n                const setContext = parentContext\n                    ? parentContext\n                    : api_1.ROOT_CONTEXT;\n                api_1.context.with(api_1.trace.setSpan(setContext, span), () => {\n                    onMessage.call(this, msg);\n                });\n                if (options?.noAck) {\n                    self.callConsumeEndHook(span, msg, false, types_1.EndOperation.AutoAck);\n                    span.end();\n                }\n            };\n            arguments[1] = patchedOnMessage;\n            return original.apply(this, arguments);\n        };\n    }\n    getConfirmedPublishPatch(moduleVersion, original) {\n        const self = this;\n        return function confirmedPublish(exchange, routingKey, content, options, callback) {\n            const channel = this;\n            const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options);\n            const { publishHook } = self.getConfig();\n            if (publishHook) {\n                (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, {\n                    moduleVersion,\n                    exchange,\n                    routingKey,\n                    content,\n                    options: modifiedOptions,\n                    isConfirmChannel: true,\n                }), e => {\n                    if (e) {\n                        api_1.diag.error('amqplib instrumentation: publishHook error', e);\n                    }\n                }, true);\n            }\n            const patchedOnConfirm = function (err, ok) {\n                try {\n                    callback?.call(this, err, ok);\n                }\n                finally {\n                    const { publishConfirmHook } = self.getConfig();\n                    if (publishConfirmHook) {\n                        (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishConfirmHook(span, {\n                            moduleVersion,\n                            exchange,\n                            routingKey,\n                            content,\n                            options,\n                            isConfirmChannel: true,\n                            confirmError: err,\n                        }), e => {\n                            if (e) {\n                                api_1.diag.error('amqplib instrumentation: publishConfirmHook error', e);\n                            }\n                        }, true);\n                    }\n                    if (err) {\n                        span.setStatus({\n                            code: api_1.SpanStatusCode.ERROR,\n                            message: \"message confirmation has been nack'ed\",\n                        });\n                    }\n                    span.end();\n                }\n            };\n            // calling confirm channel publish function is storing the message in queue and registering the callback for broker confirm.\n            // span ends in the patched callback.\n            const markedContext = (0, utils_1.markConfirmChannelTracing)(api_1.context.active());\n            const argumentsCopy = [...arguments];\n            argumentsCopy[3] = modifiedOptions;\n            argumentsCopy[4] = api_1.context.bind((0, utils_1.unmarkConfirmChannelTracing)(api_1.trace.setSpan(markedContext, span)), patchedOnConfirm);\n            return api_1.context.with(markedContext, original.bind(this, ...argumentsCopy));\n        };\n    }\n    getPublishPatch(moduleVersion, original) {\n        const self = this;\n        return function publish(exchange, routingKey, content, options) {\n            if ((0, utils_1.isConfirmChannelTracing)(api_1.context.active())) {\n                // work already done\n                return original.apply(this, arguments);\n            }\n            else {\n                const channel = this;\n                const { span, modifiedOptions } = self.createPublishSpan(self, exchange, routingKey, channel, options);\n                const { publishHook } = self.getConfig();\n                if (publishHook) {\n                    (0, instrumentation_1.safeExecuteInTheMiddle)(() => publishHook(span, {\n                        moduleVersion,\n                        exchange,\n                        routingKey,\n                        content,\n                        options: modifiedOptions,\n                        isConfirmChannel: false,\n                    }), e => {\n                        if (e) {\n                            api_1.diag.error('amqplib instrumentation: publishHook error', e);\n                        }\n                    }, true);\n                }\n                // calling normal channel publish function is only storing the message in queue.\n                // it does not send it and waits for an ack, so the span duration is expected to be very short.\n                const argumentsCopy = [...arguments];\n                argumentsCopy[3] = modifiedOptions;\n                const originalRes = original.apply(this, argumentsCopy);\n                span.end();\n                return originalRes;\n            }\n        };\n    }\n    createPublishSpan(self, exchange, routingKey, channel, options) {\n        const normalizedExchange = (0, utils_1.normalizeExchange)(exchange);\n        const span = self.tracer.startSpan(`publish ${normalizedExchange}`, {\n            kind: api_1.SpanKind.PRODUCER,\n            attributes: {\n                ...channel.connection[utils_1.CONNECTION_ATTRIBUTES],\n                [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION]: exchange,\n                [semconv_obsolete_1.ATTR_MESSAGING_DESTINATION_KIND]: semconv_obsolete_1.MESSAGING_DESTINATION_KIND_VALUE_TOPIC,\n                [semconv_obsolete_1.ATTR_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey,\n                [semconv_obsolete_1.OLD_ATTR_MESSAGING_MESSAGE_ID]: options?.messageId,\n                [semconv_obsolete_1.ATTR_MESSAGING_CONVERSATION_ID]: options?.correlationId,\n            },\n        });\n        const modifiedOptions = options ?? {};\n        modifiedOptions.headers = modifiedOptions.headers ?? {};\n        api_1.propagation.inject(api_1.trace.setSpan(api_1.context.active(), span), modifiedOptions.headers);\n        return { span, modifiedOptions };\n    }\n    endConsumerSpan(message, isRejected, operation, requeue) {\n        const storedSpan = message[utils_1.MESSAGE_STORED_SPAN];\n        if (!storedSpan)\n            return;\n        if (isRejected !== false) {\n            storedSpan.setStatus({\n                code: api_1.SpanStatusCode.ERROR,\n                message: operation !== types_1.EndOperation.ChannelClosed &&\n                    operation !== types_1.EndOperation.ChannelError\n                    ? `${operation} called on message${requeue === true\n                        ? ' with requeue'\n                        : requeue === false\n                            ? ' without requeue'\n                            : ''}`\n                    : operation,\n            });\n        }\n        this.callConsumeEndHook(storedSpan, message, isRejected, operation);\n        storedSpan.end();\n        message[utils_1.MESSAGE_STORED_SPAN] = undefined;\n    }\n    endAllSpansOnChannel(channel, isRejected, operation, requeue) {\n        const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n        spansNotEnded.forEach(msgDetails => {\n            this.endConsumerSpan(msgDetails.msg, isRejected, operation, requeue);\n        });\n        channel[utils_1.CHANNEL_SPANS_NOT_ENDED] = [];\n    }\n    callConsumeEndHook(span, msg, rejected, endOperation) {\n        const { consumeEndHook } = this.getConfig();\n        if (!consumeEndHook)\n            return;\n        (0, instrumentation_1.safeExecuteInTheMiddle)(() => consumeEndHook(span, { msg, rejected, endOperation }), e => {\n            if (e) {\n                api_1.diag.error('amqplib instrumentation: consumerEndHook error', e);\n            }\n        }, true);\n    }\n    checkConsumeTimeoutOnChannel(channel) {\n        const currentTime = (0, core_1.hrTime)();\n        const spansNotEnded = channel[utils_1.CHANNEL_SPANS_NOT_ENDED] ?? [];\n        let i;\n        const { consumeTimeoutMs } = this.getConfig();\n        for (i = 0; i < spansNotEnded.length; i++) {\n            const currMessage = spansNotEnded[i];\n            const timeFromConsume = (0, core_1.hrTimeDuration)(currMessage.timeOfConsume, currentTime);\n            if ((0, core_1.hrTimeToMilliseconds)(timeFromConsume) < consumeTimeoutMs) {\n                break;\n            }\n            this.endConsumerSpan(currMessage.msg, null, types_1.EndOperation.InstrumentationTimeout, true);\n        }\n        spansNotEnded.splice(0, i);\n    }\n}\nexports.AmqplibInstrumentation = AmqplibInstrumentation;\n//# sourceMappingURL=amqplib.js.map",
+    "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EndOperation = exports.DEFAULT_CONFIG = exports.AmqplibInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar amqplib_1 = require(\"./amqplib\");\nObject.defineProperty(exports, \"AmqplibInstrumentation\", { enumerable: true, get: function () { return amqplib_1.AmqplibInstrumentation; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"DEFAULT_CONFIG\", { enumerable: true, get: function () { return types_1.DEFAULT_CONFIG; } });\nObject.defineProperty(exports, \"EndOperation\", { enumerable: true, get: function () { return types_1.EndOperation; } });\n//# sourceMappingURL=index.js.map",
+    "import { diag } from '@opentelemetry/api';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport { defineIntegration, getClient, hasSpansEnabled, stripDataUrlContent, SEMANTIC_ATTRIBUTE_URL_FULL } from '@sentry/core';\nimport { NODE_VERSION, generateInstrumentOnce, SentryHttpInstrumentation, httpServerIntegration, httpServerSpansIntegration, getRequestUrl, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Http';\n\nconst INSTRUMENTATION_NAME = '@opentelemetry_sentry-patched/instrumentation-http';\n\n// The `http.client.request.created` diagnostics channel, needed for trace propagation,\n// was added in Node 22.12.0 (backported from 23.2.0). Earlier 22.x versions don't have it.\nconst FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL =\n  (NODE_VERSION.major === 22 && NODE_VERSION.minor >= 12) ||\n  (NODE_VERSION.major === 23 && NODE_VERSION.minor >= 2) ||\n  NODE_VERSION.major >= 24;\n\nconst instrumentSentryHttp = generateInstrumentOnce(\n  `${INTEGRATION_NAME}.sentry`,\n  options => {\n    return new SentryHttpInstrumentation(options);\n  },\n);\n\nconst instrumentOtelHttp = generateInstrumentOnce(INTEGRATION_NAME, config => {\n  const instrumentation = new HttpInstrumentation({\n    ...config,\n    // This is hard-coded and can never be overridden by the user\n    disableIncomingRequestInstrumentation: true,\n  });\n\n  // We want to update the logger namespace so we can better identify what is happening here\n  try {\n    instrumentation['_diag'] = diag.createComponentLogger({\n      namespace: INSTRUMENTATION_NAME,\n    });\n    // @ts-expect-error We are writing a read-only property here...\n    instrumentation.instrumentationName = INSTRUMENTATION_NAME;\n  } catch {\n    // ignore errors here...\n  }\n\n  // The OTel HttpInstrumentation (>=0.213.0) has a guard (`_httpPatched`/`_httpsPatched`)\n  // that prevents patching `http`/`https` when loaded by both CJS `require()` and ESM `import`.\n  // In environments like AWS Lambda, the runtime loads `http` via CJS first (for the Runtime API),\n  // and then the user's ESM handler imports `node:http`. The guard blocks ESM patching after CJS,\n  // which breaks HTTP spans for ESM handlers. We disable this guard to allow both to be patched.\n  // TODO(andrei): Remove once https://github.com/open-telemetry/opentelemetry-js/issues/6489 is fixed.\n  try {\n    const noopDescriptor = { get: () => false, set: () => {} };\n    Object.defineProperty(instrumentation, '_httpPatched', noopDescriptor);\n    Object.defineProperty(instrumentation, '_httpsPatched', noopDescriptor);\n  } catch {\n    // ignore errors here...\n  }\n\n  return instrumentation;\n});\n\n/** Exported only for tests. */\nfunction _shouldUseOtelHttpInstrumentation(\n  options,\n  clientOptions = {},\n) {\n  // If `spans` is passed in, it takes precedence\n  // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n  if (typeof options.spans === 'boolean') {\n    return options.spans;\n  }\n\n  if (clientOptions.skipOpenTelemetrySetup) {\n    return false;\n  }\n\n  // IMPORTANT: We only disable span instrumentation when spans are not enabled _and_ we are on a Node version\n  // that fully supports the necessary diagnostics channels for trace propagation\n  if (!hasSpansEnabled(clientOptions) && FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL) {\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs and spans for outgoing HTTP requests which will be attached to the currently active span.\n */\nconst httpIntegration = defineIntegration((options = {}) => {\n  const spans = options.spans ?? true;\n  const disableIncomingRequestSpans = options.disableIncomingRequestSpans;\n\n  const serverOptions = {\n    sessions: options.trackIncomingRequestsAsSessions,\n    sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n    ignoreRequestBody: options.ignoreIncomingRequestBody,\n    maxRequestBodySize: options.maxIncomingRequestBodySize,\n  } ;\n\n  const serverSpansOptions = {\n    ignoreIncomingRequests: options.ignoreIncomingRequests,\n    ignoreStaticAssets: options.ignoreStaticAssets,\n    ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n    instrumentation: options.instrumentation,\n    onSpanCreated: options.incomingRequestSpanHook,\n  } ;\n\n  const server = httpServerIntegration(serverOptions);\n  const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n  const enableServerSpans = spans && !disableIncomingRequestSpans;\n\n  return {\n    name: INTEGRATION_NAME,\n    setup(client) {\n      const clientOptions = client.getOptions();\n\n      if (enableServerSpans && hasSpansEnabled(clientOptions)) {\n        serverSpans.setup(client);\n      }\n    },\n    setupOnce() {\n      const clientOptions = (getClient()?.getOptions() || {}) ;\n      const useOtelHttpInstrumentation = _shouldUseOtelHttpInstrumentation(options, clientOptions);\n\n      server.setupOnce();\n\n      const sentryHttpInstrumentationOptions = {\n        breadcrumbs: options.breadcrumbs,\n        propagateTraceInOutgoingRequests:\n          typeof options.tracePropagation === 'boolean'\n            ? options.tracePropagation\n            : FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL || !useOtelHttpInstrumentation,\n        createSpansForOutgoingRequests: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n        spans: options.spans,\n        ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n        outgoingRequestHook: (span, request) => {\n          // Sanitize data URLs to prevent long base64 strings in span attributes\n          const url = getRequestUrl(request);\n          if (url.startsWith('data:')) {\n            const sanitizedUrl = stripDataUrlContent(url);\n            span.setAttribute('http.url', sanitizedUrl);\n            span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n            span.updateName(`${request.method || 'GET'} ${sanitizedUrl}`);\n          }\n\n          options.instrumentation?.requestHook?.(span, request);\n        },\n        outgoingResponseHook: options.instrumentation?.responseHook,\n        outgoingRequestApplyCustomAttributes: options.instrumentation?.applyCustomAttributesOnSpan,\n      } ;\n\n      // This is Sentry-specific instrumentation for outgoing request breadcrumbs & trace propagation\n      instrumentSentryHttp(sentryHttpInstrumentationOptions);\n\n      // This is the \"regular\" OTEL instrumentation that emits outgoing request spans\n      if (useOtelHttpInstrumentation) {\n        const instrumentationConfig = getConfigWithDefaults(options);\n        instrumentOtelHttp(instrumentationConfig);\n      }\n    },\n    processEvent(event) {\n      // Note: We always run this, even if spans are disabled\n      // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n      return serverSpans.processEvent(event);\n    },\n  };\n});\n\nfunction getConfigWithDefaults(options = {}) {\n  const instrumentationConfig = {\n    // This is handled by the SentryHttpInstrumentation on Node 22+\n    disableOutgoingRequestInstrumentation: FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL,\n\n    ignoreOutgoingRequestHook: request => {\n      const url = getRequestUrl(request);\n\n      if (!url) {\n        return false;\n      }\n\n      const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n      if (_ignoreOutgoingRequests?.(url, request)) {\n        return true;\n      }\n\n      return false;\n    },\n\n    requireParentforOutgoingSpans: false,\n    requestHook: (span, req) => {\n      addOriginToSpan(span, 'auto.http.otel.http');\n\n      // Sanitize data URLs to prevent long base64 strings in span attributes\n      const url = getRequestUrl(req );\n      if (url.startsWith('data:')) {\n        const sanitizedUrl = stripDataUrlContent(url);\n        span.setAttribute('http.url', sanitizedUrl);\n        span.setAttribute(SEMANTIC_ATTRIBUTE_URL_FULL, sanitizedUrl);\n        span.updateName(`${(req ).method || 'GET'} ${sanitizedUrl}`);\n      }\n\n      options.instrumentation?.requestHook?.(span, req);\n    },\n    responseHook: (span, res) => {\n      options.instrumentation?.responseHook?.(span, res);\n    },\n    applyCustomAttributesOnSpan: (\n      span,\n      request,\n      response,\n    ) => {\n      options.instrumentation?.applyCustomAttributesOnSpan?.(span, request, response);\n    },\n  } ;\n\n  return instrumentationConfig;\n}\n\nexport { _shouldUseOtelHttpInstrumentation, httpIntegration, instrumentOtelHttp, instrumentSentryHttp };\n//# sourceMappingURL=http.js.map\n",
+    "/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n",
+    "// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n  switch (objectToString.call(wat)) {\n    case '[object Error]':\n    case '[object Exception]':\n    case '[object DOMException]':\n    case '[object WebAssembly.Exception]':\n      return true;\n    default:\n      return isInstanceOf(wat, Error);\n  }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n  return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n  return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n  return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n  return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n  return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given string is parameterized\n * {@link isParameterizedString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isParameterizedString(wat) {\n  return (\n    typeof wat === 'object' &&\n    wat !== null &&\n    '__sentry_template_string__' in wat &&\n    '__sentry_template_values__' in wat\n  );\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n  return wat === null || isParameterizedString(wat) || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal, or a class instance.\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n  return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n  return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n  return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n  return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n  return Boolean(wat?.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n  return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\n// TODO: fix in v11, convert any to unknown\n// export function isInstanceOf(wat: unknown, base: { new (...args: any[]): T }): wat is T {\nfunction isInstanceOf(wat, base) {\n  try {\n    return wat instanceof base;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel or a VNode.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isVueViewModel(wat) {\n  // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n  // We also need to check for __v_isVNode because Vue 3 component render instances have an internal __v_isVNode property.\n  return !!(\n    typeof wat === 'object' &&\n    wat !== null &&\n    ((wat ).__isVue || (wat )._isVue || (wat ).__v_isVNode)\n  );\n}\n\n/**\n * Checks whether the given parameter is a Standard Web API Request instance.\n *\n * Returns false if Request is not available in the current runtime.\n */\nfunction isRequest(request) {\n  return typeof Request !== 'undefined' && isInstanceOf(request, Request);\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isRequest, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n",
+    "/** Internal global with common properties and Sentry extensions  */\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ = globalThis ;\n\nexport { GLOBAL_OBJ };\n//# sourceMappingURL=worldwide.js.map\n",
+    "import { isString } from './is.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(\n  elem,\n  options = {},\n) {\n  if (!elem) {\n    return '';\n  }\n\n  // try/catch both:\n  // - accessing event.target (see getsentry/raven-js#838, #768)\n  // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n  // - can throw an exception in some circumstances.\n  try {\n    let currentElem = elem ;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs);\n      // bail out if\n      // - nextStr is the 'html' element\n      // - the length of the string that would be created exceeds maxStringLength\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n        break;\n      }\n\n      out.push(nextStr);\n\n      len += nextStr.length;\n      currentElem = currentElem.parentNode;\n    }\n\n    return out.reverse().join(separator);\n  } catch {\n    return '';\n  }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n  const elem = el\n\n;\n\n  const out = [];\n\n  if (!elem?.tagName) {\n    return '';\n  }\n\n  // @ts-expect-error WINDOW has HTMLElement\n  if (WINDOW.HTMLElement) {\n    // If using the component name annotation plugin, this value may be available on the DOM node\n    if (elem instanceof HTMLElement && elem.dataset) {\n      if (elem.dataset['sentryComponent']) {\n        return elem.dataset['sentryComponent'];\n      }\n      if (elem.dataset['sentryElement']) {\n        return elem.dataset['sentryElement'];\n      }\n    }\n  }\n\n  out.push(elem.tagName.toLowerCase());\n\n  // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n  const keyAttrPairs = keyAttrs?.length\n    ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n    : null;\n\n  if (keyAttrPairs?.length) {\n    keyAttrPairs.forEach(keyAttrPair => {\n      out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n    });\n  } else {\n    if (elem.id) {\n      out.push(`#${elem.id}`);\n    }\n\n    const className = elem.className;\n    if (className && isString(className)) {\n      const classes = className.split(/\\s+/);\n      for (const c of classes) {\n        out.push(`.${c}`);\n      }\n    }\n  }\n  for (const k of ['aria-label', 'type', 'name', 'title', 'alt']) {\n    const attr = elem.getAttribute(k);\n    if (attr) {\n      out.push(`[${k}=\"${attr}\"]`);\n    }\n  }\n\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n  try {\n    return WINDOW.document.location.href;\n  } catch {\n    return '';\n  }\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nfunction getComponentName(elem) {\n  // @ts-expect-error WINDOW has HTMLElement\n  if (!WINDOW.HTMLElement) {\n    return null;\n  }\n\n  let currentElem = elem ;\n  const MAX_TRAVERSE_HEIGHT = 5;\n  for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n    if (!currentElem) {\n      return null;\n    }\n\n    if (currentElem instanceof HTMLElement) {\n      if (currentElem.dataset['sentryComponent']) {\n        return currentElem.dataset['sentryComponent'];\n      }\n      if (currentElem.dataset['sentryElement']) {\n        return currentElem.dataset['sentryElement'];\n      }\n    }\n\n    currentElem = currentElem.parentNode;\n  }\n\n  return null;\n}\n\nexport { getComponentName, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n",
+    "// This is a magic string replaced by rollup\n\nconst SDK_VERSION = \"10.46.0\" ;\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n",
+    "import { SDK_VERSION } from './utils/version.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\n/**\n * An object that contains globally accessible properties and maintains a scope stack.\n * @hidden\n */\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n  // This ensures a Sentry carrier exists\n  getSentryCarrier(GLOBAL_OBJ);\n  return GLOBAL_OBJ;\n}\n\n/** Will either get the existing sentry carrier, or create a new one. */\nfunction getSentryCarrier(carrier) {\n  const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n\n  // For now: First SDK that sets the .version property wins\n  __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n\n  // Intentionally populating and returning the version of \"this\" SDK instance\n  // rather than what's set in .version so that \"this\" SDK always gets its carrier\n  return (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__[]` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(\n  name,\n  creator,\n  obj = GLOBAL_OBJ,\n) {\n  const __SENTRY__ = (obj.__SENTRY__ = obj.__SENTRY__ || {});\n  const carrier = (__SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {});\n  // Note: We do not want to set `carrier.version` here, as this may be called before any `init` is called, e.g. for the default scopes\n  return carrier[name] || (carrier[name] = creator());\n}\n\nexport { getGlobalSingleton, getMainCarrier, getSentryCarrier };\n//# sourceMappingURL=carrier.js.map\n",
+    "import { getGlobalSingleton } from '../carrier.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst CONSOLE_LEVELS = [\n  'debug',\n  'info',\n  'warn',\n  'error',\n  'log',\n  'assert',\n  'trace',\n] ;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nconst originalConsoleMethods\n\n = {};\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const console = GLOBAL_OBJ.console;\n  const wrappedFuncs = {};\n\n  const wrappedLevels = Object.keys(originalConsoleMethods) ;\n\n  // Restore all wrapped console methods\n  wrappedLevels.forEach(level => {\n    const originalConsoleMethod = originalConsoleMethods[level];\n    wrappedFuncs[level] = console[level] ;\n    console[level] = originalConsoleMethod ;\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    wrappedLevels.forEach(level => {\n      console[level] = wrappedFuncs[level] ;\n    });\n  }\n}\n\nfunction enable() {\n  _getLoggerSettings().enabled = true;\n}\n\nfunction disable() {\n  _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled() {\n  return _getLoggerSettings().enabled;\n}\n\nfunction log(...args) {\n  _maybeLog('log', ...args);\n}\n\nfunction warn(...args) {\n  _maybeLog('warn', ...args);\n}\n\nfunction error(...args) {\n  _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level, ...args) {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n\n  if (isEnabled()) {\n    consoleSandbox(() => {\n      GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n    });\n  }\n}\n\nfunction _getLoggerSettings() {\n  if (!DEBUG_BUILD) {\n    return { enabled: false };\n  }\n\n  return getGlobalSingleton('loggerSettings', () => ({ enabled: false }));\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n */\nconst debug = {\n  /** Enable logging. */\n  enable,\n  /** Disable logging. */\n  disable,\n  /** Check if logging is enabled. */\n  isEnabled,\n  /** Log a message. */\n  log,\n  /** Log a warning. */\n  warn,\n  /** Log an error. */\n  error,\n} ;\n\nexport { CONSOLE_LEVELS, consoleSandbox, debug, originalConsoleMethods };\n//# sourceMappingURL=debug-logger.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { htmlTreeAsString } from './browser.js';\nimport { debug } from './debug-logger.js';\nimport { isError, isEvent, isInstanceOf, isPrimitive, isElement } from './is.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * If the method on the passed object is not a function, the wrapper will not be applied.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n  if (!(name in source)) {\n    return;\n  }\n\n  // explicitly casting to unknown because we don't know the type of the method initially at all\n  const original = source[name] ;\n\n  if (typeof original !== 'function') {\n    return;\n  }\n\n  const wrapped = replacementFactory(original) ;\n\n  // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n  // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n  if (typeof wrapped === 'function') {\n    markFunctionWrapped(wrapped, original);\n  }\n\n  try {\n    source[name] = wrapped;\n  } catch {\n    DEBUG_BUILD && debug.log(`Failed to replace method \"${name}\" in object`, source);\n  }\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n  try {\n    Object.defineProperty(obj, name, {\n      // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n      value,\n      writable: true,\n      configurable: true,\n    });\n  } catch {\n    DEBUG_BUILD && debug.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n  }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n  try {\n    const proto = original.prototype || {};\n    wrapped.prototype = original.prototype = proto;\n    addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n  } catch {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available.  See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction getOriginalFunction(func) {\n  return func.__sentry_original__;\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argument itself, when value is neither an Event nor\n *  an Error.\n */\nfunction convertToPlainObject(value)\n\n {\n  if (isError(value)) {\n    return {\n      message: value.message,\n      name: value.name,\n      stack: value.stack,\n      ...getOwnProperties(value),\n    };\n  } else if (isEvent(value)) {\n    const newObj\n\n = {\n      type: value.type,\n      target: serializeEventTarget(value.target),\n      currentTarget: serializeEventTarget(value.currentTarget),\n      ...getOwnProperties(value),\n    };\n\n    if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n      newObj.detail = value.detail;\n    }\n\n    return newObj;\n  } else {\n    return value;\n  }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n  try {\n    return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n  } catch {\n    return '';\n  }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n  if (typeof obj === 'object' && obj !== null) {\n    return Object.fromEntries(Object.entries(obj));\n  }\n  return {};\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception) {\n  const keys = Object.keys(convertToPlainObject(exception));\n  keys.sort();\n\n  return !keys[0] ? '[object has no keys]' : keys.join(', ');\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n *\n * @deprecated This function is no longer used by the SDK and will be removed in a future major version.\n */\nfunction dropUndefinedKeys(inputValue) {\n  // This map keeps track of what already visited nodes map to.\n  // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n  // references as the input object.\n  const memoizationMap = new Map();\n\n  // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n  return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n  // Early return for primitive values\n  if (inputValue === null || typeof inputValue !== 'object') {\n    return inputValue;\n  }\n\n  // Check memo map first for all object types\n  const memoVal = memoizationMap.get(inputValue);\n  if (memoVal !== undefined) {\n    return memoVal ;\n  }\n\n  // handle arrays\n  if (Array.isArray(inputValue)) {\n    const returnValue = [];\n    // Store mapping to handle circular references\n    memoizationMap.set(inputValue, returnValue);\n\n    inputValue.forEach(value => {\n      returnValue.push(_dropUndefinedKeys(value, memoizationMap));\n    });\n\n    return returnValue ;\n  }\n\n  if (isPojo(inputValue)) {\n    const returnValue = {};\n    // Store mapping to handle circular references\n    memoizationMap.set(inputValue, returnValue);\n\n    const keys = Object.keys(inputValue);\n\n    keys.forEach(key => {\n      const val = inputValue[key];\n      if (val !== undefined) {\n        returnValue[key] = _dropUndefinedKeys(val, memoizationMap);\n      }\n    });\n\n    return returnValue ;\n  }\n\n  // For other object types, return as is\n  return inputValue;\n}\n\nfunction isPojo(input) {\n  // Plain objects have Object as constructor or no constructor\n  const constructor = (input ).constructor;\n  return constructor === Object || constructor === undefined;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n  let objectified;\n  switch (true) {\n    // this will catch both undefined and null\n    case wat == undefined:\n      objectified = new String(wat);\n      break;\n\n    // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n    // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n    // an object in order to wrap it.\n    case typeof wat === 'symbol' || typeof wat === 'bigint':\n      objectified = Object(wat);\n      break;\n\n    // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n    case isPrimitive(wat):\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n      objectified = new (wat ).constructor(wat);\n      break;\n\n    // by process of elimination, at this point we know that `wat` must already be an object\n    default:\n      objectified = wat;\n      break;\n  }\n  return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify };\n//# sourceMappingURL=object.js.map\n",
+    "import { addNonEnumerableProperty } from '../utils/object.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\n/** Wrap a scope with a WeakRef if available, falling back to a direct scope. */\nfunction wrapScopeWithWeakRef(scope) {\n  try {\n    // @ts-expect-error - WeakRef is not available in all environments\n    const WeakRefClass = GLOBAL_OBJ.WeakRef;\n    if (typeof WeakRefClass === 'function') {\n      return new WeakRefClass(scope);\n    }\n  } catch {\n    // WeakRef not available or failed to create\n    // We'll fall back to a direct scope\n  }\n\n  return scope;\n}\n\n/** Try to unwrap a scope from a potential WeakRef wrapper. */\nfunction unwrapScopeFromWeakRef(scopeRef) {\n  if (!scopeRef) {\n    return undefined;\n  }\n\n  if (typeof scopeRef === 'object' && 'deref' in scopeRef && typeof scopeRef.deref === 'function') {\n    try {\n      return scopeRef.deref();\n    } catch {\n      return undefined;\n    }\n  }\n\n  // Fallback to a direct scope\n  return scopeRef ;\n}\n\n/** Store the scope & isolation scope for a span, which can the be used when it is finished. */\nfunction setCapturedScopesOnSpan(span, scope, isolationScope) {\n  if (span) {\n    addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, wrapScopeWithWeakRef(isolationScope));\n    // We don't wrap the scope with a WeakRef here because webkit aggressively garbage collects\n    // and scopes are not held in memory for long periods of time.\n    addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n  }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n * If WeakRef was used and scopes have been garbage collected, returns undefined for those scopes.\n */\nfunction getCapturedScopesOnSpan(span) {\n  const spanWithScopes = span ;\n\n  return {\n    scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n    isolationScope: unwrapScopeFromWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD]),\n  };\n}\n\nexport { getCapturedScopesOnSpan, setCapturedScopesOnSpan };\n//# sourceMappingURL=utils.js.map\n",
+    "const SPAN_STATUS_UNSET = 0;\nconst SPAN_STATUS_OK = 1;\nconst SPAN_STATUS_ERROR = 2;\n\n/**\n * Converts a HTTP status code into a sentry status with a message.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or internal_error.\n */\n// https://develop.sentry.dev/sdk/event-payloads/span/\nfunction getSpanStatusFromHttpCode(httpStatus) {\n  if (httpStatus < 400 && httpStatus >= 100) {\n    return { code: SPAN_STATUS_OK };\n  }\n\n  if (httpStatus >= 400 && httpStatus < 500) {\n    switch (httpStatus) {\n      case 401:\n        return { code: SPAN_STATUS_ERROR, message: 'unauthenticated' };\n      case 403:\n        return { code: SPAN_STATUS_ERROR, message: 'permission_denied' };\n      case 404:\n        return { code: SPAN_STATUS_ERROR, message: 'not_found' };\n      case 409:\n        return { code: SPAN_STATUS_ERROR, message: 'already_exists' };\n      case 413:\n        return { code: SPAN_STATUS_ERROR, message: 'failed_precondition' };\n      case 429:\n        return { code: SPAN_STATUS_ERROR, message: 'resource_exhausted' };\n      case 499:\n        return { code: SPAN_STATUS_ERROR, message: 'cancelled' };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: 'invalid_argument' };\n    }\n  }\n\n  if (httpStatus >= 500 && httpStatus < 600) {\n    switch (httpStatus) {\n      case 501:\n        return { code: SPAN_STATUS_ERROR, message: 'unimplemented' };\n      case 503:\n        return { code: SPAN_STATUS_ERROR, message: 'unavailable' };\n      case 504:\n        return { code: SPAN_STATUS_ERROR, message: 'deadline_exceeded' };\n      default:\n        return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n    }\n  }\n\n  return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n}\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nfunction setHttpStatus(span, httpStatus) {\n  span.setAttribute('http.response.status_code', httpStatus);\n\n  const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n  if (spanStatus.message !== 'unknown_error') {\n    span.setStatus(spanStatus);\n  }\n}\n\nexport { SPAN_STATUS_ERROR, SPAN_STATUS_OK, SPAN_STATUS_UNSET, getSpanStatusFromHttpCode, setHttpStatus };\n//# sourceMappingURL=spanstatus.js.map\n",
+    "import { GLOBAL_OBJ } from './worldwide.js';\n\n// undefined = not yet resolved, null = no runner found, function = runner found\nlet RESOLVED_RUNNER;\n\n/**\n * Simple wrapper that allows SDKs to *secretly* set context wrapper to generate safe random IDs in cache components contexts\n */\nfunction withRandomSafeContext(cb) {\n  // Skips future symbol lookups if we've already resolved (or attempted to resolve) the runner once\n  if (RESOLVED_RUNNER !== undefined) {\n    return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb();\n  }\n\n  const sym = Symbol.for('__SENTRY_SAFE_RANDOM_ID_WRAPPER__');\n  const globalWithSymbol = GLOBAL_OBJ;\n\n  if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === 'function') {\n    RESOLVED_RUNNER = globalWithSymbol[sym];\n    return RESOLVED_RUNNER(cb);\n  }\n\n  RESOLVED_RUNNER = null;\n  return cb();\n}\n\n/**\n * Identical to Math.random() but wrapped in withRandomSafeContext\n * to ensure safe random number generation in certain contexts (e.g., Next.js Cache Components).\n */\nfunction safeMathRandom() {\n  return withRandomSafeContext(() => Math.random());\n}\n\n/**\n * Identical to Date.now() but wrapped in withRandomSafeContext\n * to ensure safe time value generation in certain contexts (e.g., Next.js Cache Components).\n */\nfunction safeDateNow() {\n  return withRandomSafeContext(() => Date.now());\n}\n\nexport { safeDateNow, safeMathRandom, withRandomSafeContext };\n//# sourceMappingURL=randomSafeContext.js.map\n",
+    "const STACKTRACE_FRAME_LIMIT = 50;\nconst UNKNOWN_FUNCTION = '?';\n// Used to sanitize webpack (error: *) wrapped stack errors\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n  const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n  return (stack, skipFirstLines = 0, framesToPop = 0) => {\n    const frames = [];\n    const lines = stack.split('\\n');\n\n    for (let i = skipFirstLines; i < lines.length; i++) {\n      let line = lines[i] ;\n      // Truncate lines over 1kb because many of the regular expressions use\n      // backtracking which results in run time that increases exponentially\n      // with input size. Huge strings can result in hangs/Denial of Service:\n      // https://github.com/getsentry/sentry-javascript/issues/2286\n      if (line.length > 1024) {\n        line = line.slice(0, 1024);\n      }\n\n      // https://github.com/getsentry/sentry-javascript/issues/5459\n      // Remove webpack (error: *) wrappers\n      const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n\n      // https://github.com/getsentry/sentry-javascript/issues/7813\n      // Skip Error: lines\n      if (cleanedLine.match(/\\S*Error: /)) {\n        continue;\n      }\n\n      for (const parser of sortedParsers) {\n        const frame = parser(cleanedLine);\n\n        if (frame) {\n          frames.push(frame);\n          break;\n        }\n      }\n\n      if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n        break;\n      }\n    }\n\n    return stripSentryFramesAndReverse(frames.slice(framesToPop));\n  };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n  if (Array.isArray(stackParser)) {\n    return createStackParser(...stackParser);\n  }\n  return stackParser;\n}\n\n/**\n * Removes Sentry frames from the top and bottom of the stack if present and enforces a limit of max number of frames.\n * Assumes stack input is ordered from top to bottom and returns the reverse representation so call site of the\n * function that caused the crash is the last frame in the array.\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n  if (!stack.length) {\n    return [];\n  }\n\n  const localStack = Array.from(stack);\n\n  // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n  if (/sentryWrapped/.test(getLastStackFrame(localStack).function || '')) {\n    localStack.pop();\n  }\n\n  // Reversing in the middle of the procedure allows us to just pop the values off the stack\n  localStack.reverse();\n\n  // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n  if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n    localStack.pop();\n\n    // When using synthetic events, we will have a 2 levels deep stack, as `new Error('Sentry syntheticException')`\n    // is produced within the scope itself, making it:\n    //\n    //   Sentry.captureException()\n    //   scope.captureException()\n    //\n    // instead of just the top `Sentry` call itself.\n    // This forces us to possibly strip an additional frame in the exact same was as above.\n    if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || '')) {\n      localStack.pop();\n    }\n  }\n\n  return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map(frame => ({\n    ...frame,\n    filename: frame.filename || getLastStackFrame(localStack).filename,\n    function: frame.function || UNKNOWN_FUNCTION,\n  }));\n}\n\nfunction getLastStackFrame(arr) {\n  return arr[arr.length - 1] || {};\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n  try {\n    if (!fn || typeof fn !== 'function') {\n      return defaultFunctionName;\n    }\n    return fn.name || defaultFunctionName;\n  } catch {\n    // Just accessing custom props in some Selenium environments\n    // can cause a \"Permission denied\" exception (see raven-js#495).\n    return defaultFunctionName;\n  }\n}\n\n/**\n * Get's stack frames from an event without needing to check for undefined properties.\n */\nfunction getFramesFromEvent(event) {\n  const exception = event.exception;\n\n  if (exception) {\n    const frames = [];\n    try {\n      // @ts-expect-error Object could be undefined\n      exception.values.forEach(value => {\n        // @ts-expect-error Value could be undefined\n        if (value.stacktrace.frames) {\n          // @ts-expect-error Value could be undefined\n          frames.push(...value.stacktrace.frames);\n        }\n      });\n      return frames;\n    } catch {\n      return undefined;\n    }\n  }\n  return undefined;\n}\n\n/**\n * Get the internal name of an internal Vue value, to represent it in a stacktrace.\n *\n * @param value The value to get the internal name of.\n */\nfunction getVueInternalName(value) {\n  // Check if it's a VNode (has __v_isVNode) or a component instance (has _isVue/__isVue)\n  const isVNode = '__v_isVNode' in value && value.__v_isVNode;\n\n  return isVNode ? '[VueVNode]' : '[VueViewModel]';\n}\n\n/**\n * Normalizes stack line paths by removing file:// prefix and leading slashes for Windows paths\n */\nfunction normalizeStackTracePath(path) {\n  let filename = path?.startsWith('file://') ? path.slice(7) : path;\n  // If it's a Windows path, trim the leading slash so that `/C:/foo` becomes `C:/foo`\n  if (filename?.match(/\\/[A-Z]:/)) {\n    filename = filename.slice(1);\n  }\n  return filename;\n}\n\nexport { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, getVueInternalName, normalizeStackTracePath, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n",
+    "import { isString, isRegExp, isVueViewModel } from './is.js';\nimport { getVueInternalName } from './stacktrace.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n  if (typeof str !== 'string' || max === 0) {\n    return str;\n  }\n  return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n  let newLine = line;\n  const lineLength = newLine.length;\n  if (lineLength <= 150) {\n    return newLine;\n  }\n  if (colno > lineLength) {\n    // eslint-disable-next-line no-param-reassign\n    colno = lineLength;\n  }\n\n  let start = Math.max(colno - 60, 0);\n  if (start < 5) {\n    start = 0;\n  }\n\n  let end = Math.min(start + 140, lineLength);\n  if (end > lineLength - 5) {\n    end = lineLength;\n  }\n  if (end === lineLength) {\n    start = Math.max(end - 140, 0);\n  }\n\n  newLine = newLine.slice(start, end);\n  if (start > 0) {\n    newLine = `'{snip} ${newLine}`;\n  }\n  if (end < lineLength) {\n    newLine += ' {snip}';\n  }\n\n  return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n  if (!Array.isArray(input)) {\n    return '';\n  }\n\n  const output = [];\n  // eslint-disable-next-line typescript/prefer-for-of\n  for (let i = 0; i < input.length; i++) {\n    const value = input[i];\n    try {\n      // This is a hack to fix a Vue3-specific bug that causes an infinite loop of\n      // console warnings. This happens when a Vue template is rendered with\n      // an undeclared variable, which we try to stringify, ultimately causing\n      // Vue to issue another warning which repeats indefinitely.\n      // see: https://github.com/getsentry/sentry-javascript/pull/8981\n      if (isVueViewModel(value)) {\n        output.push(getVueInternalName(value));\n      } else {\n        output.push(String(value));\n      }\n    } catch {\n      output.push('[value cannot be serialized]');\n    }\n  }\n\n  return output.join(delimiter);\n}\n\n/**\n * Checks if the given value matches a regex or string\n *\n * @param value The string to test\n * @param pattern Either a regex or a string against which `value` will be matched\n * @param requireExactStringMatch If true, `value` must match `pattern` exactly. If false, `value` will match\n * `pattern` if it contains `pattern`. Only applies to string-type patterns.\n */\nfunction isMatchingPattern(\n  value,\n  pattern,\n  requireExactStringMatch = false,\n) {\n  if (!isString(value)) {\n    return false;\n  }\n\n  if (isRegExp(pattern)) {\n    return pattern.test(value);\n  }\n  if (isString(pattern)) {\n    return requireExactStringMatch ? value === pattern : value.includes(pattern);\n  }\n\n  return false;\n}\n\n/**\n * Test the given string against an array of strings and regexes. By default, string matching is done on a\n * substring-inclusion basis rather than a strict equality basis\n *\n * @param testString The string to test\n * @param patterns The patterns against which to test the string\n * @param requireExactStringMatch If true, `testString` must match one of the given string patterns exactly in order to\n * count. If false, `testString` will match a string pattern if it contains that pattern.\n * @returns\n */\nfunction stringMatchesSomePattern(\n  testString,\n  patterns = [],\n  requireExactStringMatch = false,\n) {\n  return patterns.some(pattern => isMatchingPattern(testString, pattern, requireExactStringMatch));\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n",
+    "import { addNonEnumerableProperty } from './object.js';\nimport { withRandomSafeContext, safeMathRandom } from './randomSafeContext.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nfunction getCrypto() {\n  const gbl = GLOBAL_OBJ ;\n  return gbl.crypto || gbl.msCrypto;\n}\n\nlet emptyUuid;\n\nfunction getRandomByte() {\n  return safeMathRandom() * 16;\n}\n\n/**\n * UUID4 generator\n * @param crypto Object that provides the crypto API.\n * @returns string Generated UUID4.\n */\nfunction uuid4(crypto = getCrypto()) {\n  try {\n    if (crypto?.randomUUID) {\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      return withRandomSafeContext(() => crypto.randomUUID()).replace(/-/g, '');\n    }\n  } catch {\n    // some runtimes can crash invoking crypto\n    // https://github.com/getsentry/sentry-javascript/issues/8935\n  }\n\n  if (!emptyUuid) {\n    // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n    // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n    emptyUuid = ([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11;\n  }\n\n  return emptyUuid.replace(/[018]/g, c =>\n    // eslint-disable-next-line no-bitwise\n    ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n  );\n}\n\nfunction getFirstException(event) {\n  return event.exception?.values?.[0];\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n  const { message, event_id: eventId } = event;\n  if (message) {\n    return message;\n  }\n\n  const firstException = getFirstException(event);\n  if (firstException) {\n    if (firstException.type && firstException.value) {\n      return `${firstException.type}: ${firstException.value}`;\n    }\n    return firstException.type || firstException.value || eventId || '';\n  }\n  return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n  const exception = (event.exception = event.exception || {});\n  const values = (exception.values = exception.values || []);\n  const firstException = (values[0] = values[0] || {});\n  if (!firstException.value) {\n    firstException.value = value || '';\n  }\n  if (!firstException.type) {\n    firstException.type = type || 'Error';\n  }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n  const firstException = getFirstException(event);\n  if (!firstException) {\n    return;\n  }\n\n  const defaultMechanism = { type: 'generic', handled: true };\n  const currentMechanism = firstException.mechanism;\n  firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n  if (newMechanism && 'data' in newMechanism) {\n    const mergedData = { ...currentMechanism?.data, ...newMechanism.data };\n    firstException.mechanism.data = mergedData;\n  }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n  /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\nfunction _parseInt(input) {\n  return parseInt(input || '', 10);\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n  const match = input.match(SEMVER_REGEXP) || [];\n  const major = _parseInt(match[1]);\n  const minor = _parseInt(match[2]);\n  const patch = _parseInt(match[3]);\n  return {\n    buildmetadata: match[5],\n    major: isNaN(major) ? undefined : major,\n    minor: isNaN(minor) ? undefined : minor,\n    patch: isNaN(patch) ? undefined : patch,\n    prerelease: match[4],\n  };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n  // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n  if (frame.lineno === undefined) {\n    return;\n  }\n\n  const maxLines = lines.length;\n  const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n  frame.pre_context = lines\n    .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n    .map((line) => snipLine(line, 0));\n\n  // We guard here to ensure this is not larger than the existing number of lines\n  const lineIndex = Math.min(maxLines - 1, sourceLine);\n\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  frame.context_line = snipLine(lines[lineIndex], frame.colno || 0);\n\n  frame.post_context = lines\n    .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n    .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n  if (isAlreadyCaptured(exception)) {\n    return true;\n  }\n\n  try {\n    // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n    // `ExtraErrorData` integration\n    addNonEnumerableProperty(exception , '__sentry_captured__', true);\n  } catch {\n    // `exception` is a primitive, so we can't mark it seen\n  }\n\n  return false;\n}\n\n/**\n * Checks whether we've already captured the given exception (note: not an identical exception - the very object).\n * It is considered already captured if it has the `__sentry_captured__` property set to `true`.\n *\n * @internal Only considered for internal usage\n */\nfunction isAlreadyCaptured(exception) {\n  try {\n    return (exception ).__sentry_captured__;\n  } catch {} // eslint-disable-line no-empty\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, isAlreadyCaptured, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n",
+    "import { safeDateNow, withRandomSafeContext } from './randomSafeContext.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst ONE_SECOND_IN_MS = 1000;\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nfunction dateTimestampInSeconds() {\n  return safeDateNow() / ONE_SECOND_IN_MS;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction createUnixTimestampInSecondsFunc() {\n  const { performance } = GLOBAL_OBJ ;\n  // Some browser and environments don't have a performance or timeOrigin, so we fallback to\n  // using Date.now() to compute the starting time.\n  if (!performance?.now || !performance.timeOrigin) {\n    return dateTimestampInSeconds;\n  }\n\n  const timeOrigin = performance.timeOrigin;\n\n  // performance.now() is a monotonic clock, which means it starts at 0 when the process begins. To get the current\n  // wall clock time (actual UNIX timestamp), we need to add the starting time origin and the current time elapsed.\n  //\n  // TODO: This does not account for the case where the monotonic clock that powers performance.now() drifts from the\n  // wall clock time, which causes the returned timestamp to be inaccurate. We should investigate how to detect and\n  // correct for this.\n  // See: https://github.com/getsentry/sentry-javascript/issues/2590\n  // See: https://github.com/mdn/content/issues/4713\n  // See: https://dev.to/noamr/when-a-millisecond-is-not-a-millisecond-3h6\n  return () => {\n    return (timeOrigin + withRandomSafeContext(() => performance.now())) / ONE_SECOND_IN_MS;\n  };\n}\n\nlet _cachedTimestampInSeconds;\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nfunction timestampInSeconds() {\n  // We store this in a closure so that we don't have to create a new function every time this is called.\n  const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc());\n  return func();\n}\n\n/**\n * Cached result of getBrowserTimeOrigin.\n */\nlet cachedTimeOrigin = null;\n\n/**\n * Gets the time origin and the mode used to determine it.\n *\n * Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n * performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n * data as reliable if they are within a reasonable threshold of the current time.\n *\n * TODO: move to `@sentry/browser-utils` package.\n */\nfunction getBrowserTimeOrigin() {\n  const { performance } = GLOBAL_OBJ ;\n  if (!performance?.now) {\n    return undefined;\n  }\n\n  const threshold = 300000; // 5 minutes in milliseconds\n  const performanceNow = withRandomSafeContext(() => performance.now());\n  const dateNow = safeDateNow();\n\n  const timeOrigin = performance.timeOrigin;\n  if (typeof timeOrigin === 'number') {\n    const timeOriginDelta = Math.abs(timeOrigin + performanceNow - dateNow);\n    if (timeOriginDelta < threshold) {\n      return timeOrigin;\n    }\n  }\n\n  // TODO: Remove all code related to `performance.timing.navigationStart` once we drop support for Safari 14.\n  // `performance.timeSince` is available in Safari 15.\n  // see: https://caniuse.com/mdn-api_performance_timeorigin\n\n  // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n  // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n  // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n  // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n  // Date API.\n  // eslint-disable-next-line deprecation/deprecation\n  const navigationStart = performance.timing?.navigationStart;\n  if (typeof navigationStart === 'number') {\n    const navigationStartDelta = Math.abs(navigationStart + performanceNow - dateNow);\n    if (navigationStartDelta < threshold) {\n      return navigationStart;\n    }\n  }\n\n  // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to subtracting\n  // `performance.now()` from `Date.now()`.\n  return dateNow - performanceNow;\n}\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nfunction browserPerformanceTimeOrigin() {\n  if (cachedTimeOrigin === null) {\n    cachedTimeOrigin = getBrowserTimeOrigin();\n  }\n\n  return cachedTimeOrigin;\n}\n\nexport { browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds };\n//# sourceMappingURL=time.js.map\n",
+    "import { uuid4 } from './utils/misc.js';\nimport { timestampInSeconds } from './utils/time.js';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n  // Both timestamp and started are in seconds since the UNIX epoch.\n  const startingTime = timestampInSeconds();\n\n  const session = {\n    sid: uuid4(),\n    init: true,\n    timestamp: startingTime,\n    started: startingTime,\n    duration: 0,\n    status: 'ok',\n    errors: 0,\n    ignoreDuration: false,\n    toJSON: () => sessionToJSON(session),\n  };\n\n  if (context) {\n    updateSession(session, context);\n  }\n\n  return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see Client.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n  if (context.user) {\n    if (!session.ipAddress && context.user.ip_address) {\n      session.ipAddress = context.user.ip_address;\n    }\n\n    if (!session.did && !context.did) {\n      session.did = context.user.id || context.user.email || context.user.username;\n    }\n  }\n\n  session.timestamp = context.timestamp || timestampInSeconds();\n\n  if (context.abnormal_mechanism) {\n    session.abnormal_mechanism = context.abnormal_mechanism;\n  }\n\n  if (context.ignoreDuration) {\n    session.ignoreDuration = context.ignoreDuration;\n  }\n  if (context.sid) {\n    // Good enough uuid validation. — Kamil\n    session.sid = context.sid.length === 32 ? context.sid : uuid4();\n  }\n  if (context.init !== undefined) {\n    session.init = context.init;\n  }\n  if (!session.did && context.did) {\n    session.did = `${context.did}`;\n  }\n  if (typeof context.started === 'number') {\n    session.started = context.started;\n  }\n  if (session.ignoreDuration) {\n    session.duration = undefined;\n  } else if (typeof context.duration === 'number') {\n    session.duration = context.duration;\n  } else {\n    const duration = session.timestamp - session.started;\n    session.duration = duration >= 0 ? duration : 0;\n  }\n  if (context.release) {\n    session.release = context.release;\n  }\n  if (context.environment) {\n    session.environment = context.environment;\n  }\n  if (!session.ipAddress && context.ipAddress) {\n    session.ipAddress = context.ipAddress;\n  }\n  if (!session.userAgent && context.userAgent) {\n    session.userAgent = context.userAgent;\n  }\n  if (typeof context.errors === 'number') {\n    session.errors = context.errors;\n  }\n  if (context.status) {\n    session.status = context.status;\n  }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n *               this function will keep the previously set status, unless it was `'ok'` in which case\n *               it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n  let context = {};\n  if (status) {\n    context = { status };\n  } else if (session.status === 'ok') {\n    context = { status: 'exited' };\n  }\n\n  updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n  return {\n    sid: `${session.sid}`,\n    init: session.init,\n    // Make sure that sec is converted to ms for date constructor\n    started: new Date(session.started * 1000).toISOString(),\n    timestamp: new Date(session.timestamp * 1000).toISOString(),\n    status: session.status,\n    errors: session.errors,\n    did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n    duration: session.duration,\n    abnormal_mechanism: session.abnormal_mechanism,\n    attrs: {\n      release: session.release,\n      environment: session.environment,\n      ip_address: session.ipAddress,\n      user_agent: session.userAgent,\n    },\n  };\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n",
+    "/**\n * Shallow merge two objects.\n * Does not mutate the passed in objects.\n * Undefined/empty values in the merge object will overwrite existing values.\n *\n * By default, this merges 2 levels deep.\n */\nfunction merge(initialObj, mergeObj, levels = 2) {\n  // If the merge value is not an object, or we have no merge levels left,\n  // we just set the value to the merge value\n  if (!mergeObj || typeof mergeObj !== 'object' || levels <= 0) {\n    return mergeObj;\n  }\n\n  // If the merge object is an empty object, and the initial object is not undefined, we return the initial object\n  if (initialObj && Object.keys(mergeObj).length === 0) {\n    return initialObj;\n  }\n\n  // Clone object\n  const output = { ...initialObj };\n\n  // Merge values into output, resursively\n  for (const key in mergeObj) {\n    if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n      output[key] = merge(output[key], mergeObj[key], levels - 1);\n    }\n  }\n\n  return output;\n}\n\nexport { merge };\n//# sourceMappingURL=merge.js.map\n",
+    "import { uuid4 } from './misc.js';\n\n/**\n * Generate a random, valid trace ID.\n */\nfunction generateTraceId() {\n  return uuid4();\n}\n\n/**\n * Generate a random, valid span ID.\n */\nfunction generateSpanId() {\n  return uuid4().substring(16);\n}\n\nexport { generateSpanId, generateTraceId };\n//# sourceMappingURL=propagationContext.js.map\n",
+    "import { addNonEnumerableProperty } from './object.js';\n\nconst SCOPE_SPAN_FIELD = '_sentrySpan';\n\n/**\n * Set the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _setSpanForScope(scope, span) {\n  if (span) {\n    addNonEnumerableProperty(scope , SCOPE_SPAN_FIELD, span);\n  } else {\n    // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n    delete (scope )[SCOPE_SPAN_FIELD];\n  }\n}\n\n/**\n * Get the active span for a given scope.\n * NOTE: This should NOT be used directly, but is only used internally by the trace methods.\n */\nfunction _getSpanForScope(scope) {\n  return scope[SCOPE_SPAN_FIELD];\n}\n\nexport { _getSpanForScope, _setSpanForScope };\n//# sourceMappingURL=spanOnScope.js.map\n",
+    "import { DEBUG_BUILD } from './debug-build.js';\nimport { updateSession } from './session.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isPlainObject } from './utils/is.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4 } from './utils/misc.js';\nimport { generateTraceId } from './utils/propagationContext.js';\nimport { safeMathRandom } from './utils/randomSafeContext.js';\nimport { _setSpanForScope, _getSpanForScope } from './utils/spanOnScope.js';\nimport { truncate } from './utils/string.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * A context to be used for capturing an event.\n * This can either be a Scope, or a partial ScopeContext,\n * or a callback that receives the current scope and returns a new scope to use.\n */\n\n/**\n * Holds additional event information.\n */\nclass Scope {\n  /** Flag if notifying is happening. */\n\n  /** Callback for client to receive scope changes. */\n\n  /** Callback list that will be called during event processing. */\n\n  /** Array of breadcrumbs. */\n\n  /** User */\n\n  /** Tags */\n\n  /** Attributes */\n\n  /** Extra */\n\n  /** Contexts */\n\n  /** Attachments */\n\n  /** Propagation Context for distributed tracing */\n\n  /**\n   * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n   * sent to Sentry\n   */\n\n  /** Fingerprint */\n\n  /** Severity */\n\n  /**\n   * Transaction Name\n   *\n   * IMPORTANT: The transaction name on the scope has nothing to do with root spans/transaction objects.\n   * It's purpose is to assign a transaction to the scope that's added to non-transaction events.\n   */\n\n  /** Session */\n\n  /** The client on this scope */\n\n  /** Contains the last event id of a captured event.  */\n\n  /** Conversation ID */\n\n  // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n   constructor() {\n    this._notifyingListeners = false;\n    this._scopeListeners = [];\n    this._eventProcessors = [];\n    this._breadcrumbs = [];\n    this._attachments = [];\n    this._user = {};\n    this._tags = {};\n    this._attributes = {};\n    this._extra = {};\n    this._contexts = {};\n    this._sdkProcessingMetadata = {};\n    this._propagationContext = {\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom(),\n    };\n  }\n\n  /**\n   * Clone all data from this scope into a new scope.\n   */\n   clone() {\n    const newScope = new Scope();\n    newScope._breadcrumbs = [...this._breadcrumbs];\n    newScope._tags = { ...this._tags };\n    newScope._attributes = { ...this._attributes };\n    newScope._extra = { ...this._extra };\n    newScope._contexts = { ...this._contexts };\n    if (this._contexts.flags) {\n      // We need to copy the `values` array so insertions on a cloned scope\n      // won't affect the original array.\n      newScope._contexts.flags = {\n        values: [...this._contexts.flags.values],\n      };\n    }\n\n    newScope._user = this._user;\n    newScope._level = this._level;\n    newScope._session = this._session;\n    newScope._transactionName = this._transactionName;\n    newScope._fingerprint = this._fingerprint;\n    newScope._eventProcessors = [...this._eventProcessors];\n    newScope._attachments = [...this._attachments];\n    newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n    newScope._propagationContext = { ...this._propagationContext };\n    newScope._client = this._client;\n    newScope._lastEventId = this._lastEventId;\n    newScope._conversationId = this._conversationId;\n\n    _setSpanForScope(newScope, _getSpanForScope(this));\n\n    return newScope;\n  }\n\n  /**\n   * Update the client assigned to this scope.\n   * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client,\n   * as well as manually created scopes.\n   */\n   setClient(client) {\n    this._client = client;\n  }\n\n  /**\n   * Set the ID of the last captured error event.\n   * This is generally only captured on the isolation scope.\n   */\n   setLastEventId(lastEventId) {\n    this._lastEventId = lastEventId;\n  }\n\n  /**\n   * Get the client assigned to this scope.\n   */\n   getClient() {\n    return this._client ;\n  }\n\n  /**\n   * Get the ID of the last captured error event.\n   * This is generally only available on the isolation scope.\n   */\n   lastEventId() {\n    return this._lastEventId;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   addScopeListener(callback) {\n    this._scopeListeners.push(callback);\n  }\n\n  /**\n   * Add an event processor that will be called before an event is sent.\n   */\n   addEventProcessor(callback) {\n    this._eventProcessors.push(callback);\n    return this;\n  }\n\n  /**\n   * Set the user for this scope.\n   * Set to `null` to unset the user.\n   */\n   setUser(user) {\n    // If null is passed we want to unset everything, but still define keys,\n    // so that later down in the pipeline any existing values are cleared.\n    this._user = user || {\n      email: undefined,\n      id: undefined,\n      ip_address: undefined,\n      username: undefined,\n    };\n\n    if (this._session) {\n      updateSession(this._session, { user });\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Get the user from this scope.\n   */\n   getUser() {\n    return this._user;\n  }\n\n  /**\n   * Set the conversation ID for this scope.\n   * Set to `null` to unset the conversation ID.\n   */\n   setConversationId(conversationId) {\n    this._conversationId = conversationId || undefined;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set an object that will be merged into existing tags on the scope,\n   * and will be sent as tags data with the event.\n   */\n   setTags(tags) {\n    this._tags = {\n      ...this._tags,\n      ...tags,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set a single tag that will be sent as tags data with the event.\n   */\n   setTag(key, value) {\n    return this.setTags({ [key]: value });\n  }\n\n  /**\n   * Sets attributes onto the scope.\n   *\n   * These attributes are currently applied to logs and metrics.\n   * In the future, they will also be applied to spans.\n   *\n   * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n   * more complex attribute types. We'll add this support in the future but already specify the wider type to\n   * avoid a breaking change in the future.\n   *\n   * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or\n   * an object with a `value` and an optional `unit` (if applicable to your attribute).\n   *\n   * @example\n   * ```typescript\n   * scope.setAttributes({\n   *   is_admin: true,\n   *   payment_selection: 'credit_card',\n   *   render_duration: { value: 'render_duration', unit: 'ms' },\n   * });\n   * ```\n   */\n   setAttributes(newAttributes) {\n    this._attributes = {\n      ...this._attributes,\n      ...newAttributes,\n    };\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets an attribute onto the scope.\n   *\n   * These attributes are currently applied to logs and metrics.\n   * In the future, they will also be applied to spans.\n   *\n   * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n   * more complex attribute types. We'll add this support in the future but already specify the wider type to\n   * avoid a breaking change in the future.\n   *\n   * @param key - The attribute key.\n   * @param value - the attribute value. You can either pass in a raw value, or an attribute\n   * object with a `value` and an optional `unit` (if applicable to your attribute).\n   *\n   * @example\n   * ```typescript\n   * scope.setAttribute('is_admin', true);\n   * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' });\n   * ```\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n   setAttribute(\n    key,\n    value,\n  ) {\n    return this.setAttributes({ [key]: value });\n  }\n\n  /**\n   * Removes the attribute with the given key from the scope.\n   *\n   * @param key - The attribute key.\n   *\n   * @example\n   * ```typescript\n   * scope.removeAttribute('is_admin');\n   * ```\n   */\n   removeAttribute(key) {\n    if (key in this._attributes) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._attributes[key];\n      this._notifyScopeListeners();\n    }\n    return this;\n  }\n\n  /**\n   * Set an object that will be merged into existing extra on the scope,\n   * and will be sent as extra data with the event.\n   */\n   setExtras(extras) {\n    this._extra = {\n      ...this._extra,\n      ...extras,\n    };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set a single key:value extra entry that will be sent as extra data with the event.\n   */\n   setExtra(key, extra) {\n    this._extra = { ...this._extra, [key]: extra };\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the fingerprint on the scope to send with the events.\n   * @param {string[]} fingerprint Fingerprint to group events in Sentry.\n   */\n   setFingerprint(fingerprint) {\n    this._fingerprint = fingerprint;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the level on the scope for future events.\n   */\n   setLevel(level) {\n    this._level = level;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets the transaction name on the scope so that the name of e.g. taken server route or\n   * the page location is attached to future events.\n   *\n   * IMPORTANT: Calling this function does NOT change the name of the currently active\n   * root span. If you want to change the name of the active root span, use\n   * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n   *\n   * By default, the SDK updates the scope's transaction name automatically on sensible\n   * occasions, such as a page navigation or when handling a new request on the server.\n   */\n   setTransactionName(name) {\n    this._transactionName = name;\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Sets context data with the given name.\n   * Data passed as context will be normalized. You can also pass `null` to unset the context.\n   * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key.\n   */\n   setContext(key, context) {\n    if (context === null) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._contexts[key];\n    } else {\n      this._contexts[key] = context;\n    }\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Set the session for the scope.\n   */\n   setSession(session) {\n    if (!session) {\n      delete this._session;\n    } else {\n      this._session = session;\n    }\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Get the session from the scope.\n   */\n   getSession() {\n    return this._session;\n  }\n\n  /**\n   * Updates the scope with provided data. Can work in three variations:\n   * - plain object containing updatable attributes\n   * - Scope instance that'll extract the attributes from\n   * - callback function that'll receive the current scope as an argument and allow for modifications\n   */\n   update(captureContext) {\n    if (!captureContext) {\n      return this;\n    }\n\n    const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext;\n\n    const scopeInstance =\n      scopeToMerge instanceof Scope\n        ? scopeToMerge.getScopeData()\n        : isPlainObject(scopeToMerge)\n          ? (captureContext )\n          : undefined;\n\n    const {\n      tags,\n      attributes,\n      extra,\n      user,\n      contexts,\n      level,\n      fingerprint = [],\n      propagationContext,\n      conversationId,\n    } = scopeInstance || {};\n\n    this._tags = { ...this._tags, ...tags };\n    this._attributes = { ...this._attributes, ...attributes };\n    this._extra = { ...this._extra, ...extra };\n    this._contexts = { ...this._contexts, ...contexts };\n\n    if (user && Object.keys(user).length) {\n      this._user = user;\n    }\n\n    if (level) {\n      this._level = level;\n    }\n\n    if (fingerprint.length) {\n      this._fingerprint = fingerprint;\n    }\n\n    if (propagationContext) {\n      this._propagationContext = propagationContext;\n    }\n\n    if (conversationId) {\n      this._conversationId = conversationId;\n    }\n\n    return this;\n  }\n\n  /**\n   * Clears the current scope and resets its properties.\n   * Note: The client will not be cleared.\n   */\n   clear() {\n    // client is not cleared here on purpose!\n    this._breadcrumbs = [];\n    this._tags = {};\n    this._attributes = {};\n    this._extra = {};\n    this._user = {};\n    this._contexts = {};\n    this._level = undefined;\n    this._transactionName = undefined;\n    this._fingerprint = undefined;\n    this._session = undefined;\n    this._conversationId = undefined;\n    _setSpanForScope(this, undefined);\n    this._attachments = [];\n    this.setPropagationContext({\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom(),\n    });\n\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Adds a breadcrumb to the scope.\n   * By default, the last 100 breadcrumbs are kept.\n   */\n   addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n    const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n    // No data has been changed, so don't notify scope listeners\n    if (maxCrumbs <= 0) {\n      return this;\n    }\n\n    const mergedBreadcrumb = {\n      timestamp: dateTimestampInSeconds(),\n      ...breadcrumb,\n      // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory\n      message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message,\n    };\n\n    this._breadcrumbs.push(mergedBreadcrumb);\n    if (this._breadcrumbs.length > maxCrumbs) {\n      this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n      this._client?.recordDroppedEvent('buffer_overflow', 'log_item');\n    }\n\n    this._notifyScopeListeners();\n\n    return this;\n  }\n\n  /**\n   * Get the last breadcrumb of the scope.\n   */\n   getLastBreadcrumb() {\n    return this._breadcrumbs[this._breadcrumbs.length - 1];\n  }\n\n  /**\n   * Clear all breadcrumbs from the scope.\n   */\n   clearBreadcrumbs() {\n    this._breadcrumbs = [];\n    this._notifyScopeListeners();\n    return this;\n  }\n\n  /**\n   * Add an attachment to the scope.\n   */\n   addAttachment(attachment) {\n    this._attachments.push(attachment);\n    return this;\n  }\n\n  /**\n   * Clear all attachments from the scope.\n   */\n   clearAttachments() {\n    this._attachments = [];\n    return this;\n  }\n\n  /**\n   * Get the data of this scope, which should be applied to an event during processing.\n   */\n   getScopeData() {\n    return {\n      breadcrumbs: this._breadcrumbs,\n      attachments: this._attachments,\n      contexts: this._contexts,\n      tags: this._tags,\n      attributes: this._attributes,\n      extra: this._extra,\n      user: this._user,\n      level: this._level,\n      fingerprint: this._fingerprint || [],\n      eventProcessors: this._eventProcessors,\n      propagationContext: this._propagationContext,\n      sdkProcessingMetadata: this._sdkProcessingMetadata,\n      transactionName: this._transactionName,\n      span: _getSpanForScope(this),\n      conversationId: this._conversationId,\n    };\n  }\n\n  /**\n   * Add data which will be accessible during event processing but won't get sent to Sentry.\n   */\n   setSDKProcessingMetadata(newData) {\n    this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n    return this;\n  }\n\n  /**\n   * Add propagation context to the scope, used for distributed tracing\n   */\n   setPropagationContext(context) {\n    this._propagationContext = context;\n    return this;\n  }\n\n  /**\n   * Get propagation context from the scope, used for distributed tracing\n   */\n   getPropagationContext() {\n    return this._propagationContext;\n  }\n\n  /**\n   * Capture an exception for this scope.\n   *\n   * @returns {string} The id of the captured Sentry event.\n   */\n   captureException(exception, hint) {\n    const eventId = hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture exception!');\n      return eventId;\n    }\n\n    const syntheticException = new Error('Sentry syntheticException');\n\n    this._client.captureException(\n      exception,\n      {\n        originalException: exception,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Capture a message for this scope.\n   *\n   * @returns {string} The id of the captured message.\n   */\n   captureMessage(message, level, hint) {\n    const eventId = hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture message!');\n      return eventId;\n    }\n\n    const syntheticException = hint?.syntheticException ?? new Error(message);\n\n    this._client.captureMessage(\n      message,\n      level,\n      {\n        originalException: message,\n        syntheticException,\n        ...hint,\n        event_id: eventId,\n      },\n      this,\n    );\n\n    return eventId;\n  }\n\n  /**\n   * Capture a Sentry event for this scope.\n   *\n   * @returns {string} The id of the captured event.\n   */\n   captureEvent(event, hint) {\n    const eventId = event.event_id || hint?.event_id || uuid4();\n\n    if (!this._client) {\n      DEBUG_BUILD && debug.warn('No client configured on scope - will not capture event!');\n      return eventId;\n    }\n\n    this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n\n    return eventId;\n  }\n\n  /**\n   * This will be called on every set call.\n   */\n   _notifyScopeListeners() {\n    // We need this check for this._notifyingListeners to be able to work on scope during updates\n    // If this check is not here we'll produce endless recursion when something is done with the scope\n    // during the callback.\n    if (!this._notifyingListeners) {\n      this._notifyingListeners = true;\n      this._scopeListeners.forEach(callback => {\n        callback(this);\n      });\n      this._notifyingListeners = false;\n    }\n  }\n}\n\nexport { Scope };\n//# sourceMappingURL=scope.js.map\n",
+    "import { getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\n\n/** Get the default current scope. */\nfunction getDefaultCurrentScope() {\n  return getGlobalSingleton('defaultCurrentScope', () => new Scope());\n}\n\n/** Get the default isolation scope. */\nfunction getDefaultIsolationScope() {\n  return getGlobalSingleton('defaultIsolationScope', () => new Scope());\n}\n\nexport { getDefaultCurrentScope, getDefaultIsolationScope };\n//# sourceMappingURL=defaultScopes.js.map\n",
+    "const isActualPromise = (p) =>\n  p instanceof Promise && !(p )[kChainedCopy];\n\nconst kChainedCopy = Symbol('chained PromiseLike');\n\n/**\n * Copy the properties from a decorated promiselike object onto its chained\n * actual promise.\n */\nconst chainAndCopyPromiseLike = (\n  original,\n  onSuccess,\n  onError,\n) => {\n  const chained = original.then(\n    value => {\n      onSuccess(value);\n      return value;\n    },\n    err => {\n      onError(err);\n      throw err;\n    },\n  ) ;\n\n  // if we're just dealing with \"normal\" Promise objects, return the chain\n  return isActualPromise(chained) && isActualPromise(original) ? chained : copyProps(original, chained);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst copyProps = (original, chained) => {\n  let mutated = false;\n  //oxlint-disable-next-line guard-for-in\n  for (const key in original) {\n    if (key in chained) continue;\n    mutated = true;\n    const value = original[key];\n    if (typeof value === 'function') {\n      Object.defineProperty(chained, key, {\n        value: (...args) => value.apply(original, args),\n        enumerable: true,\n        configurable: true,\n        writable: true,\n      });\n    } else {\n      (chained )[key] = value;\n    }\n  }\n\n  if (mutated) Object.assign(chained, { [kChainedCopy]: true });\n  return chained;\n};\n\nexport { chainAndCopyPromiseLike };\n//# sourceMappingURL=chain-and-copy-promiselike.js.map\n",
+    "import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes.js';\nimport { Scope } from '../scope.js';\nimport { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike.js';\nimport { isThenable } from '../utils/is.js';\nimport { getMainCarrier, getSentryCarrier } from '../carrier.js';\n\n/**\n * This is an object that holds a stack of scopes.\n */\nclass AsyncContextStack {\n\n   constructor(scope, isolationScope) {\n    let assignedScope;\n    if (!scope) {\n      assignedScope = new Scope();\n    } else {\n      assignedScope = scope;\n    }\n\n    let assignedIsolationScope;\n    if (!isolationScope) {\n      assignedIsolationScope = new Scope();\n    } else {\n      assignedIsolationScope = isolationScope;\n    }\n\n    // scope stack for domains or the process\n    this._stack = [{ scope: assignedScope }];\n    this._isolationScope = assignedIsolationScope;\n  }\n\n  /**\n   * Fork a scope for the stack.\n   */\n   withScope(callback) {\n    const scope = this._pushScope();\n\n    let maybePromiseResult;\n    try {\n      maybePromiseResult = callback(scope);\n    } catch (e) {\n      this._popScope();\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      return chainAndCopyPromiseLike(\n        maybePromiseResult ,\n        () => this._popScope(),\n        () => this._popScope(),\n      ) ;\n    }\n\n    this._popScope();\n    return maybePromiseResult;\n  }\n\n  /**\n   * Get the client of the stack.\n   */\n   getClient() {\n    return this.getStackTop().client ;\n  }\n\n  /**\n   * Returns the scope of the top stack.\n   */\n   getScope() {\n    return this.getStackTop().scope;\n  }\n\n  /**\n   * Get the isolation scope for the stack.\n   */\n   getIsolationScope() {\n    return this._isolationScope;\n  }\n\n  /**\n   * Returns the topmost scope layer in the order domain > local > process.\n   */\n   getStackTop() {\n    return this._stack[this._stack.length - 1] ;\n  }\n\n  /**\n   * Push a scope to the stack.\n   */\n   _pushScope() {\n    // We want to clone the content of prev scope\n    const scope = this.getScope().clone();\n    this._stack.push({\n      client: this.getClient(),\n      scope,\n    });\n    return scope;\n  }\n\n  /**\n   * Pop a scope from the stack.\n   */\n   _popScope() {\n    if (this._stack.length <= 1) return false;\n    return !!this._stack.pop();\n  }\n}\n\n/**\n * Get the global async context stack.\n * This will be removed during the v8 cycle and is only here to make migration easier.\n */\nfunction getAsyncContextStack() {\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n\n  return (sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope()));\n}\n\nfunction withScope(callback) {\n  return getAsyncContextStack().withScope(callback);\n}\n\nfunction withSetScope(scope, callback) {\n  const stack = getAsyncContextStack();\n  return stack.withScope(() => {\n    stack.getStackTop().scope = scope;\n    return callback(scope);\n  });\n}\n\nfunction withIsolationScope(callback) {\n  return getAsyncContextStack().withScope(() => {\n    return callback(getAsyncContextStack().getIsolationScope());\n  });\n}\n\n/**\n * Get the stack-based async context strategy.\n */\nfunction getStackAsyncContextStrategy() {\n  return {\n    withIsolationScope,\n    withScope,\n    withSetScope,\n    withSetIsolationScope: (_isolationScope, callback) => {\n      return withIsolationScope(callback);\n    },\n    getCurrentScope: () => getAsyncContextStack().getScope(),\n    getIsolationScope: () => getAsyncContextStack().getIsolationScope(),\n  };\n}\n\nexport { AsyncContextStack, getStackAsyncContextStrategy };\n//# sourceMappingURL=stackStrategy.js.map\n",
+    "import { getMainCarrier, getSentryCarrier } from '../carrier.js';\nimport { getStackAsyncContextStrategy } from './stackStrategy.js';\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n  // Get main carrier (global for every environment)\n  const registry = getMainCarrier();\n  const sentry = getSentryCarrier(registry);\n  sentry.acs = strategy;\n}\n\n/**\n * Get the current async context strategy.\n * If none has been setup, the default will be used.\n */\nfunction getAsyncContextStrategy(carrier) {\n  const sentry = getSentryCarrier(carrier);\n\n  if (sentry.acs) {\n    return sentry.acs;\n  }\n\n  // Otherwise, use the default one (stack)\n  return getStackAsyncContextStrategy();\n}\n\nexport { getAsyncContextStrategy, setAsyncContextStrategy };\n//# sourceMappingURL=index.js.map\n",
+    "import { getAsyncContextStrategy } from './asyncContext/index.js';\nimport { getMainCarrier, getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\nimport { generateSpanId } from './utils/propagationContext.js';\n\n/**\n * Get the currently active scope.\n */\nfunction getCurrentScope() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getCurrentScope();\n}\n\n/**\n * Get the currently active isolation scope.\n * The isolation scope is active for the current execution context.\n */\nfunction getIsolationScope() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  return acs.getIsolationScope();\n}\n\n/**\n * Get the global scope.\n * This scope is applied to _all_ events.\n */\nfunction getGlobalScope() {\n  return getGlobalSingleton('globalScope', () => new Scope());\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n */\n\n/**\n * Either creates a new active scope, or sets the given scope as active scope in the given callback.\n */\nfunction withScope(\n  ...rest\n) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [scope, callback] = rest;\n\n    if (!scope) {\n      return acs.withScope(callback);\n    }\n\n    return acs.withSetScope(scope, callback);\n  }\n\n  return acs.withScope(rest[0]);\n}\n\n/**\n * Attempts to fork the current isolation scope and the current scope based on the current async context strategy. If no\n * async context strategy is set, the isolation scope and the current scope will not be forked (this is currently the\n * case, for example, in the browser).\n *\n * Usage of this function in environments without async context strategy is discouraged and may lead to unexpected behaviour.\n *\n * This function is intended for Sentry SDK and SDK integration development. It is not recommended to be used in \"normal\"\n * applications directly because it comes with pitfalls. Use at your own risk!\n */\n\n/**\n * Either creates a new active isolation scope, or sets the given isolation scope as active scope in the given callback.\n */\nfunction withIsolationScope(\n  ...rest\n\n) {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n\n  // If a scope is defined, we want to make this the active scope instead of the default one\n  if (rest.length === 2) {\n    const [isolationScope, callback] = rest;\n\n    if (!isolationScope) {\n      return acs.withIsolationScope(callback);\n    }\n\n    return acs.withSetIsolationScope(isolationScope, callback);\n  }\n\n  return acs.withIsolationScope(rest[0]);\n}\n\n/**\n * Get the currently active client.\n */\nfunction getClient() {\n  return getCurrentScope().getClient();\n}\n\n/**\n * Get a trace context for the given scope.\n */\nfunction getTraceContextFromScope(scope) {\n  const propagationContext = scope.getPropagationContext();\n\n  const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n\n  const traceContext = {\n    trace_id: traceId,\n    span_id: propagationSpanId || generateSpanId(),\n  };\n\n  if (parentSpanId) {\n    traceContext.parent_span_id = parentSpanId;\n  }\n\n  return traceContext;\n}\n\nexport { getClient, getCurrentScope, getGlobalScope, getIsolationScope, getTraceContextFromScope, withIsolationScope, withScope };\n//# sourceMappingURL=currentScopes.js.map\n",
+    "/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Attributes that holds the sample rate that was locally applied to a span.\n * If this attribute is not defined, it means that the span inherited a sampling decision.\n *\n * NOTE: Is only defined on root spans.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Attribute holding the sample rate of the previous trace.\n * This is used to sample consistently across subsequent traces in the browser SDK.\n *\n * Note: Only defined on root spans, if opted into consistent sampling\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = 'sentry.previous_trace_sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/** The reason why an idle span finished. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason';\n\n/** The unit of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = 'sentry.measurement_unit';\n\n/** The value of a measurement, which may be stored as a TimedEvent. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = 'sentry.measurement_value';\n\n/**\n * A custom span name set by users guaranteed to be taken over any automatically\n * inferred name. This attribute is removed before the span is sent.\n *\n * @internal only meant for internal SDK usage\n * @hidden\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = 'sentry.custom_span_name';\n\n/**\n * The id of the profile that this span occurred in.\n */\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = 'sentry.profile_id';\n\nconst SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = 'sentry.exclusive_time';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_HIT = 'cache.hit';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_KEY = 'cache.key';\n\nconst SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = 'cache.item_size';\n\n/** TODO: Remove these once we update to latest semantic conventions */\nconst SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = 'http.request.method';\nconst SEMANTIC_ATTRIBUTE_URL_FULL = 'url.full';\n\n/**\n * A span link attribute to mark the link as a special span link.\n *\n * Known values:\n * - `previous_trace`: The span links to the frontend root span of the previous trace.\n * - `next_trace`: The span links to the frontend root span of the next trace. (Not set by the SDK)\n *\n * Other values may be set as appropriate.\n * @see https://develop.sentry.dev/sdk/telemetry/traces/span-links/#link-types\n */\nconst SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = 'sentry.link.type';\n\n/**\n * =============================================================================\n * GEN AI ATTRIBUTES\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n * =============================================================================\n */\n\n/**\n * The conversation ID for linking messages across API calls.\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nconst GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\nexport { GEN_AI_CONVERSATION_ID_ATTRIBUTE, SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE };\n//# sourceMappingURL=semanticAttributes.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isString } from './is.js';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nfunction baggageHeaderToDynamicSamplingContext(\n  // Very liberal definition of what any incoming header might look like\n  baggageHeader,\n) {\n  const baggageObject = parseBaggageHeader(baggageHeader);\n\n  if (!baggageObject) {\n    return undefined;\n  }\n\n  // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n  const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n    if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n      const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n      acc[nonPrefixedKey] = value;\n    }\n    return acc;\n  }, {});\n\n  // Only return a dynamic sampling context object if there are keys in it.\n  // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n  if (Object.keys(dynamicSamplingContext).length > 0) {\n    return dynamicSamplingContext ;\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nfunction dynamicSamplingContextToSentryBaggageHeader(\n  // this also takes undefined for convenience and bundle size in other places\n  dynamicSamplingContext,\n) {\n  if (!dynamicSamplingContext) {\n    return undefined;\n  }\n\n  // Prefix all DSC keys with \"sentry-\" and put them into a new object\n  const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n    (acc, [dscKey, dscValue]) => {\n      if (dscValue) {\n        acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n      }\n      return acc;\n    },\n    {},\n  );\n\n  return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nfunction parseBaggageHeader(\n  baggageHeader,\n) {\n  if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n    return undefined;\n  }\n\n  if (Array.isArray(baggageHeader)) {\n    // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n    return baggageHeader.reduce((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      Object.entries(currBaggageObject).forEach(([key, value]) => {\n        acc[key] = value;\n      });\n      return acc;\n    }, {});\n  }\n\n  return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader) {\n  return baggageHeader\n    .split(',')\n    .map(baggageEntry => {\n      const eqIdx = baggageEntry.indexOf('=');\n      if (eqIdx === -1) {\n        // Likely an invalid entry\n        return [];\n      }\n      const key = baggageEntry.slice(0, eqIdx);\n      const value = baggageEntry.slice(eqIdx + 1);\n      return [key, value].map(keyOrValue => {\n        try {\n          return decodeURIComponent(keyOrValue.trim());\n        } catch {\n          // We ignore errors here, e.g. if the value cannot be URL decoded.\n          // This will then be skipped in the next step\n          return;\n        }\n      });\n    })\n    .reduce((acc, [key, value]) => {\n      if (key && value) {\n        acc[key] = value;\n      }\n      return acc;\n    }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nfunction objectToBaggageHeader(object) {\n  if (Object.keys(object).length === 0) {\n    // An empty baggage header is not spec compliant: We return undefined.\n    return undefined;\n  }\n\n  return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n    const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n    const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n    if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n        );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, '');\n}\n\nexport { MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, objectToBaggageHeader, parseBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n",
+    "import { chainAndCopyPromiseLike } from './chain-and-copy-promiselike.js';\nimport { isThenable } from './is.js';\n\n/* eslint-disable */\n// Vendor \"Awaited\" in to be TS 3.8 compatible\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nfunction handleCallbackErrors\n\n(\n  fn,\n  onError,\n  onFinally = () => {},\n  onSuccess = () => {},\n) {\n  let maybePromiseResult;\n  try {\n    maybePromiseResult = fn();\n  } catch (e) {\n    onError(e);\n    onFinally();\n    throw e;\n  }\n\n  return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally, onSuccess);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n *\n * For thenable objects with extra methods (like jQuery's jqXHR),\n * this function preserves those methods by wrapping the original thenable in a Proxy\n * that intercepts .then() calls to apply error handling while forwarding all other\n * properties to the original object.\n * This allows code like `startSpan(() => $.ajax(...)).abort()` to work correctly.\n */\nfunction maybeHandlePromiseRejection(\n  value,\n  onError,\n  onFinally,\n  onSuccess,\n) {\n  if (isThenable(value)) {\n    return chainAndCopyPromiseLike(\n      value ,\n      result => {\n        onFinally();\n        onSuccess(result );\n      },\n      err => {\n        onError(err);\n        onFinally();\n      },\n    ) ;\n  }\n  // Non-thenable value - call callbacks immediately and return as-is\n  onFinally();\n  onSuccess(value);\n  return value;\n}\n\nexport { handleCallbackErrors };\n//# sourceMappingURL=handleCallbackErrors.js.map\n",
+    "import { getClient } from '../currentScopes.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if span recording is currently enabled.\n *\n * Spans are recorded when at least one of `tracesSampleRate` and `tracesSampler`\n * is defined in the SDK config. This function does not make any assumption about\n * sampling decisions, it only checks if the SDK is configured to record spans.\n *\n * Important: This function only determines if span recording is enabled. Trace\n * continuation and propagation is separately controlled and not covered by this function.\n * If this function returns `false`, traces can still be propagated (which is what\n * we refer to by \"Tracing without Performance\")\n * @see https://develop.sentry.dev/sdk/telemetry/traces/tracing-without-performance/\n *\n * @param maybeOptions An SDK options object to be passed to this function.\n * If this option is not provided, the function will use the current client's options.\n */\nfunction hasSpansEnabled(\n  maybeOptions,\n) {\n  if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n    return false;\n  }\n\n  const options = maybeOptions || getClient()?.getOptions();\n  return (\n    !!options &&\n    // Note: This check is `!= null`, meaning \"nullish\". `0` is not \"nullish\", `undefined` and `null` are. (This comment was brought to you by 15 minutes of questioning life)\n    (options.tracesSampleRate != null || !!options.tracesSampler)\n  );\n}\n\nexport { hasSpansEnabled };\n//# sourceMappingURL=hasSpansEnabled.js.map\n",
+    "/**\n * Parse a sample rate from a given value.\n * This will either return a boolean or number sample rate, if the sample rate is valid (between 0 and 1).\n * If a string is passed, we try to convert it to a number.\n *\n * Any invalid sample rate will return `undefined`.\n */\nfunction parseSampleRate(sampleRate) {\n  if (typeof sampleRate === 'boolean') {\n    return Number(sampleRate);\n  }\n\n  const rate = typeof sampleRate === 'string' ? parseFloat(sampleRate) : sampleRate;\n  if (typeof rate !== 'number' || isNaN(rate) || rate < 0 || rate > 1) {\n    return undefined;\n  }\n\n  return rate;\n}\n\nexport { parseSampleRate };\n//# sourceMappingURL=parseSampleRate.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { consoleSandbox, debug } from './debug-logger.js';\n\n/** Regular expression used to extract org ID from a DSN host. */\nconst ORG_ID_REGEX = /^o(\\d+)\\./;\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)((?:\\[[:.%\\w]+\\]|[\\w.-]+))(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n  return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n  const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n  return (\n    `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n    `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n  );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nfunction dsnFromString(str) {\n  const match = DSN_REGEX.exec(str);\n\n  if (!match) {\n    // This should be logged to the console\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.error(`Invalid Sentry Dsn: ${str}`);\n    });\n    return undefined;\n  }\n\n  const [protocol, publicKey, pass = '', host = '', port = '', lastPath = ''] = match.slice(1);\n  let path = '';\n  let projectId = lastPath;\n\n  const split = projectId.split('/');\n  if (split.length > 1) {\n    path = split.slice(0, -1).join('/');\n    projectId = split.pop() ;\n  }\n\n  if (projectId) {\n    const projectMatch = projectId.match(/^\\d+/);\n    if (projectMatch) {\n      projectId = projectMatch[0];\n    }\n  }\n\n  return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n  return {\n    protocol: components.protocol,\n    publicKey: components.publicKey || '',\n    pass: components.pass || '',\n    host: components.host,\n    port: components.port || '',\n    path: components.path || '',\n    projectId: components.projectId,\n  };\n}\n\nfunction validateDsn(dsn) {\n  if (!DEBUG_BUILD) {\n    return true;\n  }\n\n  const { port, projectId, protocol } = dsn;\n\n  const requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n  const hasMissingRequiredComponent = requiredComponents.find(component => {\n    if (!dsn[component]) {\n      debug.error(`Invalid Sentry Dsn: ${component} missing`);\n      return true;\n    }\n    return false;\n  });\n\n  if (hasMissingRequiredComponent) {\n    return false;\n  }\n\n  if (!projectId.match(/^\\d+$/)) {\n    debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n    return false;\n  }\n\n  if (!isValidProtocol(protocol)) {\n    debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n    return false;\n  }\n\n  if (port && isNaN(parseInt(port, 10))) {\n    debug.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n    return false;\n  }\n\n  return true;\n}\n\n/**\n * Extract the org ID from a DSN host.\n *\n * @param host The host from a DSN\n * @returns The org ID if found, undefined otherwise\n */\nfunction extractOrgIdFromDsnHost(host) {\n  const match = host.match(ORG_ID_REGEX);\n\n  return match?.[1];\n}\n\n/**\n *  Returns the organization ID of the client.\n *\n *  The organization ID is extracted from the DSN. If the client options include a `orgId`, this will always take precedence.\n */\nfunction extractOrgIdFromClient(client) {\n  const options = client.getOptions();\n\n  const { host } = client.getDsn() || {};\n\n  let org_id;\n\n  if (options.orgId) {\n    org_id = String(options.orgId);\n  } else if (host) {\n    org_id = extractOrgIdFromDsnHost(host);\n  }\n\n  return org_id;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nfunction makeDsn(from) {\n  const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n  if (!components || !validateDsn(components)) {\n    return undefined;\n  }\n  return components;\n}\n\nexport { dsnFromString, dsnToString, extractOrgIdFromClient, extractOrgIdFromDsnHost, makeDsn };\n//# sourceMappingURL=dsn.js.map\n",
+    "import { debug } from './debug-logger.js';\nimport { baggageHeaderToDynamicSamplingContext } from './baggage.js';\nimport { extractOrgIdFromClient } from './dsn.js';\nimport { parseSampleRate } from './parseSampleRate.js';\nimport { generateTraceId, generateSpanId } from './propagationContext.js';\nimport { safeMathRandom } from './randomSafeContext.js';\n\n// oxlint-disable-next-line sdk/no-regexp-constructor -- RegExp is used for readability here\nconst TRACEPARENT_REGEXP = new RegExp(\n  '^[ \\\\t]*' + // whitespace\n    '([0-9a-f]{32})?' + // trace_id\n    '-?([0-9a-f]{16})?' + // span_id\n    '-?([01])?' + // sampled\n    '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * This is terrible naming but the function has nothing to do with the W3C traceparent header.\n * It can only parse the `sentry-trace` header and extract the \"trace parent\" data.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n  if (!traceparent) {\n    return undefined;\n  }\n\n  const matches = traceparent.match(TRACEPARENT_REGEXP);\n  if (!matches) {\n    return undefined;\n  }\n\n  let parentSampled;\n  if (matches[3] === '1') {\n    parentSampled = true;\n  } else if (matches[3] === '0') {\n    parentSampled = false;\n  }\n\n  return {\n    traceId: matches[1],\n    parentSampled,\n    parentSpanId: matches[2],\n  };\n}\n\n/**\n * Create a propagation context from incoming headers or\n * creates a minimal new one if the headers are undefined.\n */\nfunction propagationContextFromHeaders(\n  sentryTrace,\n  baggage,\n) {\n  const traceparentData = extractTraceparentData(sentryTrace);\n  const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggage);\n\n  if (!traceparentData?.traceId) {\n    return {\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom(),\n    };\n  }\n\n  const sampleRand = getSampleRandFromTraceparentAndDsc(traceparentData, dynamicSamplingContext);\n\n  // The sample_rand on the DSC needs to be generated based on traceparent + baggage.\n  if (dynamicSamplingContext) {\n    dynamicSamplingContext.sample_rand = sampleRand.toString();\n  }\n\n  const { traceId, parentSpanId, parentSampled } = traceparentData;\n\n  return {\n    traceId,\n    parentSpanId,\n    sampled: parentSampled,\n    dsc: dynamicSamplingContext || {}, // If we have traceparent data but no DSC it means we are not head of trace and we must freeze it\n    sampleRand,\n  };\n}\n\n/**\n * Create sentry-trace header from span context values.\n */\nfunction generateSentryTraceHeader(\n  traceId = generateTraceId(),\n  spanId = generateSpanId(),\n  sampled,\n) {\n  let sampledString = '';\n  if (sampled !== undefined) {\n    sampledString = sampled ? '-1' : '-0';\n  }\n  return `${traceId}-${spanId}${sampledString}`;\n}\n\n/**\n * Creates a W3C traceparent header from the given trace and span ids.\n */\nfunction generateTraceparentHeader(\n  traceId = generateTraceId(),\n  spanId = generateSpanId(),\n  sampled,\n) {\n  return `00-${traceId}-${spanId}-${sampled ? '01' : '00'}`;\n}\n\n/**\n * Given any combination of an incoming trace, generate a sample rand based on its defined semantics.\n *\n * Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n */\nfunction getSampleRandFromTraceparentAndDsc(\n  traceparentData,\n  dsc,\n) {\n  // When there is an incoming sample rand use it.\n  const parsedSampleRand = parseSampleRate(dsc?.sample_rand);\n  if (parsedSampleRand !== undefined) {\n    return parsedSampleRand;\n  }\n\n  // Otherwise, if there is an incoming sampling decision + sample rate, generate a sample rand that would lead to the same sampling decision.\n  const parsedSampleRate = parseSampleRate(dsc?.sample_rate);\n  if (parsedSampleRate && traceparentData?.parentSampled !== undefined) {\n    return traceparentData.parentSampled\n      ? // Returns a sample rand with positive sampling decision [0, sampleRate)\n        safeMathRandom() * parsedSampleRate\n      : // Returns a sample rand with negative sampling decision [sampleRate, 1)\n        parsedSampleRate + safeMathRandom() * (1 - parsedSampleRate);\n  } else {\n    // If nothing applies, return a random sample rand.\n    return safeMathRandom();\n  }\n}\n\n/**\n * Determines whether a new trace should be continued based on the provided baggage org ID and the client's `strictTraceContinuation` option.\n * If the trace should not be continued, a new trace will be started.\n *\n * The result is dependent on the `strictTraceContinuation` option in the client.\n * See https://develop.sentry.dev/sdk/telemetry/traces/#stricttracecontinuation\n */\nfunction shouldContinueTrace(client, baggageOrgId) {\n  const clientOrgId = extractOrgIdFromClient(client);\n\n  // Case: baggage orgID and Client orgID don't match - always start new trace\n  if (baggageOrgId && clientOrgId && baggageOrgId !== clientOrgId) {\n    debug.log(\n      `Won't continue trace because org IDs don't match (incoming baggage: ${baggageOrgId}, SDK options: ${clientOrgId})`,\n    );\n    return false;\n  }\n\n  const strictTraceContinuation = client.getOptions().strictTraceContinuation || false; // default for `strictTraceContinuation` is `false`\n\n  if (strictTraceContinuation) {\n    // With strict continuation enabled, don't continue trace if:\n    // - Baggage has orgID, but Client doesn't have one\n    // - Client has orgID, but baggage doesn't have one\n    if ((baggageOrgId && !clientOrgId) || (!baggageOrgId && clientOrgId)) {\n      debug.log(\n        `Starting a new trace because strict trace continuation is enabled but one org ID is missing (incoming baggage: ${baggageOrgId}, Sentry client: ${clientOrgId})`,\n      );\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, generateTraceparentHeader, propagationContextFromHeaders, shouldContinueTrace };\n//# sourceMappingURL=tracing.js.map\n",
+    "import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getCurrentScope } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { SPAN_STATUS_UNSET, SPAN_STATUS_OK } from '../tracing/spanstatus.js';\nimport { getCapturedScopesOnSpan } from '../tracing/utils.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { generateSpanId } from './propagationContext.js';\nimport { timestampInSeconds } from './time.js';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js';\nimport { consoleSandbox } from './debug-logger.js';\nimport { _getSpanForScope } from './spanOnScope.js';\n\n// These are aligned with OpenTelemetry trace flags\nconst TRACE_FLAG_NONE = 0x0;\nconst TRACE_FLAG_SAMPLED = 0x1;\n\nlet hasShownSpanDropWarning = false;\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in an event.\n * By default, this will only include trace_id, span_id & parent_span_id.\n * If `includeAllData` is true, it will also include data, op, status & origin.\n */\nfunction spanToTransactionTraceContext(span) {\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n  const { data, op, parent_span_id, status, origin, links } = spanToJSON(span);\n\n  return {\n    parent_span_id,\n    span_id,\n    trace_id,\n    data,\n    op,\n    status,\n    origin,\n    links,\n  };\n}\n\n/**\n * Convert a span to a trace context, which can be sent as the `trace` context in a non-transaction event.\n */\nfunction spanToTraceContext(span) {\n  const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n\n  // If the span is remote, we use a random/virtual span as span_id to the trace context,\n  // and the remote span as parent_span_id\n  const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n  const scope = getCapturedScopesOnSpan(span).scope;\n\n  const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId;\n\n  return {\n    parent_span_id,\n    span_id,\n    trace_id,\n  };\n}\n\n/**\n * Convert a Span to a Sentry trace header.\n */\nfunction spanToTraceHeader(span) {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateSentryTraceHeader(traceId, spanId, sampled);\n}\n\n/**\n * Convert a Span to a W3C traceparent header.\n */\nfunction spanToTraceparentHeader(span) {\n  const { traceId, spanId } = span.spanContext();\n  const sampled = spanIsSampled(span);\n  return generateTraceparentHeader(traceId, spanId, sampled);\n}\n\n/**\n *  Converts the span links array to a flattened version to be sent within an envelope.\n *\n *  If the links array is empty, it returns `undefined` so the empty value can be dropped before it's sent.\n */\nfunction convertSpanLinksForEnvelope(links) {\n  if (links && links.length > 0) {\n    return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({\n      span_id: spanId,\n      trace_id: traceId,\n      sampled: traceFlags === TRACE_FLAG_SAMPLED,\n      attributes,\n      ...restContext,\n    }));\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Convert a span time input into a timestamp in seconds.\n */\nfunction spanTimeInputToSeconds(input) {\n  if (typeof input === 'number') {\n    return ensureTimestampInSeconds(input);\n  }\n\n  if (Array.isArray(input)) {\n    // See {@link HrTime} for the array-based time format\n    return input[0] + input[1] / 1e9;\n  }\n\n  if (input instanceof Date) {\n    return ensureTimestampInSeconds(input.getTime());\n  }\n\n  return timestampInSeconds();\n}\n\n/**\n * Converts a timestamp to second, if it was in milliseconds, or keeps it as second.\n */\nfunction ensureTimestampInSeconds(timestamp) {\n  const isMs = timestamp > 9999999999;\n  return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Convert a span to a JSON representation.\n */\n// Note: Because of this, we currently have a circular type dependency (which we opted out of in package.json).\n// This is not avoidable as we need `spanToJSON` in `spanUtils.ts`, which in turn is needed by `span.ts` for backwards compatibility.\n// And `spanToJSON` needs the Span class from `span.ts` to check here.\nfunction spanToJSON(span) {\n  if (spanIsSentrySpan(span)) {\n    return span.getSpanJSON();\n  }\n\n  const { spanId: span_id, traceId: trace_id } = span.spanContext();\n\n  // Handle a span from @opentelemetry/sdk-base-trace's `Span` class\n  if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n    const { attributes, startTime, name, endTime, status, links } = span;\n\n    // In preparation for the next major of OpenTelemetry, we want to support\n    // looking up the parent span id according to the new API\n    // In OTel v1, the parent span id is accessed as `parentSpanId`\n    // In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n    const parentSpanId =\n      'parentSpanId' in span\n        ? span.parentSpanId\n        : 'parentSpanContext' in span\n          ? (span.parentSpanContext )?.spanId\n          : undefined;\n\n    return {\n      span_id,\n      trace_id,\n      data: attributes,\n      description: name,\n      parent_span_id: parentSpanId,\n      start_timestamp: spanTimeInputToSeconds(startTime),\n      // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n      timestamp: spanTimeInputToSeconds(endTime) || undefined,\n      status: getStatusMessage(status),\n      op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n      origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n      links: convertSpanLinksForEnvelope(links),\n    };\n  }\n\n  // Finally, at least we have `spanContext()`....\n  // This should not actually happen in reality, but we need to handle it for type safety.\n  return {\n    span_id,\n    trace_id,\n    start_timestamp: 0,\n    data: {},\n  };\n}\n\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span) {\n  const castSpan = span ;\n  return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\n\n/** Exported only for tests. */\n\n/**\n * Sadly, due to circular dependency checks we cannot actually import the Span class here and check for instanceof.\n * :( So instead we approximate this by checking if it has the `getSpanJSON` method.\n */\nfunction spanIsSentrySpan(span) {\n  return typeof (span ).getSpanJSON === 'function';\n}\n\n/**\n * Returns true if a span is sampled.\n * In most cases, you should just use `span.isRecording()` instead.\n * However, this has a slightly different semantic, as it also returns false if the span is finished.\n * So in the case where this distinction is important, use this method.\n */\nfunction spanIsSampled(span) {\n  // We align our trace flags with the ones OpenTelemetry use\n  // So we also check for sampled the same way they do.\n  const { traceFlags } = span.spanContext();\n  return traceFlags === TRACE_FLAG_SAMPLED;\n}\n\n/** Get the status message to use for a JSON representation of a span. */\nfunction getStatusMessage(status) {\n  if (!status || status.code === SPAN_STATUS_UNSET) {\n    return undefined;\n  }\n\n  if (status.code === SPAN_STATUS_OK) {\n    return 'ok';\n  }\n\n  return status.message || 'internal_error';\n}\n\nconst CHILD_SPANS_FIELD = '_sentryChildSpans';\nconst ROOT_SPAN_FIELD = '_sentryRootSpan';\n\n/**\n * Adds an opaque child span reference to a span.\n */\nfunction addChildSpanToSpan(span, childSpan) {\n  // We store the root span reference on the child span\n  // We need this for `getRootSpan()` to work\n  const rootSpan = span[ROOT_SPAN_FIELD] || span;\n  addNonEnumerableProperty(childSpan , ROOT_SPAN_FIELD, rootSpan);\n\n  // We store a list of child spans on the parent span\n  // We need this for `getSpanDescendants()` to work\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].add(childSpan);\n  } else {\n    addNonEnumerableProperty(span, CHILD_SPANS_FIELD, new Set([childSpan]));\n  }\n}\n\n/** This is only used internally by Idle Spans. */\nfunction removeChildSpanFromSpan(span, childSpan) {\n  if (span[CHILD_SPANS_FIELD]) {\n    span[CHILD_SPANS_FIELD].delete(childSpan);\n  }\n}\n\n/**\n * Returns an array of the given span and all of its descendants.\n */\nfunction getSpanDescendants(span) {\n  const resultSet = new Set();\n\n  function addSpanChildren(span) {\n    // This exit condition is required to not infinitely loop in case of a circular dependency.\n    if (resultSet.has(span)) {\n      return;\n      // We want to ignore unsampled spans (e.g. non recording spans)\n    } else if (spanIsSampled(span)) {\n      resultSet.add(span);\n      const childSpans = span[CHILD_SPANS_FIELD] ? Array.from(span[CHILD_SPANS_FIELD]) : [];\n      for (const childSpan of childSpans) {\n        addSpanChildren(childSpan);\n      }\n    }\n  }\n\n  addSpanChildren(span);\n\n  return Array.from(resultSet);\n}\n\n/**\n * Returns the root span of a given span.\n */\nfunction getRootSpan(span) {\n  return span[ROOT_SPAN_FIELD] || span;\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.getActiveSpan) {\n    return acs.getActiveSpan();\n  }\n\n  return _getSpanForScope(getCurrentScope());\n}\n\n/**\n * Logs a warning once if `beforeSendSpan` is used to drop spans.\n */\nfunction showSpanDropWarning() {\n  if (!hasShownSpanDropWarning) {\n    consoleSandbox(() => {\n      // eslint-disable-next-line no-console\n      console.warn(\n        '[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.',\n      );\n    });\n    hasShownSpanDropWarning = true;\n  }\n}\n\n/**\n * Updates the name of the given span and ensures that the span name is not\n * overwritten by the Sentry SDK.\n *\n * Use this function instead of `span.updateName()` if you want to make sure that\n * your name is kept. For some spans, for example root `http.server` spans the\n * Sentry SDK would otherwise overwrite the span name with a high-quality name\n * it infers when the span ends.\n *\n * Use this function in server code or when your span is started on the server\n * and on the client (browser). If you only update a span name on the client,\n * you can also use `span.updateName()` the SDK does not overwrite the name.\n *\n * @param span - The span to update the name of.\n * @param name - The name to set on the span.\n */\nfunction updateSpanName(span, name) {\n  span.updateName(name);\n  span.setAttributes({\n    [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n    [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name,\n  });\n}\n\nexport { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, addChildSpanToSpan, convertSpanLinksForEnvelope, getActiveSpan, getRootSpan, getSpanDescendants, getStatusMessage, removeChildSpanFromSpan, showSpanDropWarning, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToTraceContext, spanToTraceHeader, spanToTraceparentHeader, spanToTransactionTraceContext, updateSpanName };\n//# sourceMappingURL=spanUtils.js.map\n",
+    "const DEFAULT_ENVIRONMENT = 'production';\nconst DEV_ENVIRONMENT = 'development';\n\nexport { DEFAULT_ENVIRONMENT, DEV_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n",
+    "import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getClient } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage.js';\nimport { extractOrgIdFromClient } from '../utils/dsn.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { addNonEnumerableProperty } from '../utils/object.js';\nimport { getRootSpan, spanToJSON, spanIsSampled } from '../utils/spanUtils.js';\nimport { getCapturedScopesOnSpan } from './utils.js';\n\n/**\n * If you change this value, also update the terser plugin config to\n * avoid minification of the object property!\n */\nconst FROZEN_DSC_FIELD = '_frozenDsc';\n\n/**\n * Freeze the given DSC on the given span.\n */\nfunction freezeDscOnSpan(span, dsc) {\n  const spanWithMaybeDsc = span ;\n  addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\n\n/**\n * Creates a dynamic sampling context from a client.\n *\n * Dispatches the `createDsc` lifecycle hook as a side effect.\n */\nfunction getDynamicSamplingContextFromClient(trace_id, client) {\n  const options = client.getOptions();\n\n  const { publicKey: public_key } = client.getDsn() || {};\n\n  // Instead of conditionally adding non-undefined values, we add them and then remove them if needed\n  // otherwise, the order of baggage entries changes, which \"breaks\" a bunch of tests etc.\n  const dsc = {\n    environment: options.environment || DEFAULT_ENVIRONMENT,\n    release: options.release,\n    public_key,\n    trace_id,\n    org_id: extractOrgIdFromClient(client),\n  };\n\n  client.emit('createDsc', dsc);\n\n  return dsc;\n}\n\n/**\n * Get the dynamic sampling context for the currently active scopes.\n */\nfunction getDynamicSamplingContextFromScope(client, scope) {\n  const propagationContext = scope.getPropagationContext();\n  return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\n\n/**\n * Creates a dynamic sampling context from a span (and client and scope)\n *\n * @param span the span from which a few values like the root span name and sample rate are extracted.\n *\n * @returns a dynamic sampling context\n */\nfunction getDynamicSamplingContextFromSpan(span) {\n  const client = getClient();\n  if (!client) {\n    return {};\n  }\n\n  const rootSpan = getRootSpan(span);\n  const rootSpanJson = spanToJSON(rootSpan);\n  const rootSpanAttributes = rootSpanJson.data;\n  const traceState = rootSpan.spanContext().traceState;\n\n  // The span sample rate that was locally applied to the root span should also always be applied to the DSC, even if the DSC is frozen.\n  // This is so that the downstream traces/services can use parentSampleRate in their `tracesSampler` to make consistent sampling decisions across the entire trace.\n  const rootSpanSampleRate =\n    traceState?.get('sentry.sample_rate') ??\n    rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ??\n    rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE];\n\n  function applyLocalSampleRateToDsc(dsc) {\n    if (typeof rootSpanSampleRate === 'number' || typeof rootSpanSampleRate === 'string') {\n      dsc.sample_rate = `${rootSpanSampleRate}`;\n    }\n    return dsc;\n  }\n\n  // For core implementation, we freeze the DSC onto the span as a non-enumerable property\n  const frozenDsc = (rootSpan )[FROZEN_DSC_FIELD];\n  if (frozenDsc) {\n    return applyLocalSampleRateToDsc(frozenDsc);\n  }\n\n  // For OpenTelemetry, we freeze the DSC on the trace state\n  const traceStateDsc = traceState?.get('sentry.dsc');\n\n  // If the span has a DSC, we want it to take precedence\n  const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n\n  if (dscOnTraceState) {\n    return applyLocalSampleRateToDsc(dscOnTraceState);\n  }\n\n  // Else, we generate it from the span\n  const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n\n  // We don't want to have a transaction name in the DSC if the source is \"url\" because URLs might contain PII\n  const source = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n  // after JSON conversion, txn.name becomes jsonSpan.description\n  const name = rootSpanJson.description;\n  if (source !== 'url' && name) {\n    dsc.transaction = name;\n  }\n\n  // How can we even land here with hasSpansEnabled() returning false?\n  // Otel creates a Non-recording span in Tracing Without Performance mode when handling incoming requests\n  // So we end up with an active span that is not sampled (neither positively nor negatively)\n  if (hasSpansEnabled()) {\n    dsc.sampled = String(spanIsSampled(rootSpan));\n    dsc.sample_rand =\n      // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans\n      // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span\n      traceState?.get('sentry.sample_rand') ??\n      // On all other platforms we can actually get the scopes from a root span (we use this as a fallback)\n      getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString();\n  }\n\n  applyLocalSampleRateToDsc(dsc);\n\n  client.emit('createDsc', dsc, rootSpan);\n\n  return dsc;\n}\n\n/**\n * Convert a Span to a baggage header.\n */\nfunction spanToBaggageHeader(span) {\n  const dsc = getDynamicSamplingContextFromSpan(span);\n  return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n\nexport { freezeDscOnSpan, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { spanToJSON, getRootSpan, spanIsSampled } from '../utils/spanUtils.js';\n\n/**\n * Print a log message for a started span.\n */\nfunction logSpanStart(span) {\n  if (!DEBUG_BUILD) return;\n\n  const { description = '< unknown name >', op = '< unknown op >', parent_span_id: parentSpanId } = spanToJSON(span);\n  const { spanId } = span.spanContext();\n\n  const sampled = spanIsSampled(span);\n  const rootSpan = getRootSpan(span);\n  const isRootSpan = rootSpan === span;\n\n  const header = `[Tracing] Starting ${sampled ? 'sampled' : 'unsampled'} ${isRootSpan ? 'root ' : ''}span`;\n\n  const infoParts = [`op: ${op}`, `name: ${description}`, `ID: ${spanId}`];\n\n  if (parentSpanId) {\n    infoParts.push(`parent ID: ${parentSpanId}`);\n  }\n\n  if (!isRootSpan) {\n    const { op, description } = spanToJSON(rootSpan);\n    infoParts.push(`root ID: ${rootSpan.spanContext().spanId}`);\n    if (op) {\n      infoParts.push(`root op: ${op}`);\n    }\n    if (description) {\n      infoParts.push(`root description: ${description}`);\n    }\n  }\n\n  debug.log(`${header}\n  ${infoParts.join('\\n  ')}`);\n}\n\n/**\n * Print a log message for an ended span.\n */\nfunction logSpanEnd(span) {\n  if (!DEBUG_BUILD) return;\n\n  const { description = '< unknown name >', op = '< unknown op >' } = spanToJSON(span);\n  const { spanId } = span.spanContext();\n  const rootSpan = getRootSpan(span);\n  const isRootSpan = rootSpan === span;\n\n  const msg = `[Tracing] Finishing \"${op}\" ${isRootSpan ? 'root ' : ''}span \"${description}\" with ID ${spanId}`;\n  debug.log(msg);\n}\n\nexport { logSpanEnd, logSpanStart };\n//# sourceMappingURL=logSpans.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { parseSampleRate } from '../utils/parseSampleRate.js';\n\n/**\n * Makes a sampling decision for the given options.\n *\n * Called every time a root span is created. Only root spans which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n */\nfunction sampleSpan(\n  options,\n  samplingContext,\n  sampleRand,\n) {\n  // nothing to do if span recording is not enabled\n  if (!hasSpansEnabled(options)) {\n    return [false];\n  }\n\n  let localSampleRateWasApplied = undefined;\n\n  // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n  // work; prefer the hook if so\n  let sampleRate;\n  if (typeof options.tracesSampler === 'function') {\n    sampleRate = options.tracesSampler({\n      ...samplingContext,\n      inheritOrSampleWith: fallbackSampleRate => {\n        // If we have an incoming parent sample rate, we'll just use that one.\n        // The sampling decision will be inherited because of the sample_rand that was generated when the trace reached the incoming boundaries of the SDK.\n        if (typeof samplingContext.parentSampleRate === 'number') {\n          return samplingContext.parentSampleRate;\n        }\n\n        // Fallback if parent sample rate is not on the incoming trace (e.g. if there is no baggage)\n        // This is to provide backwards compatibility if there are incoming traces from older SDKs that don't send a parent sample rate or a sample rand. In these cases we just want to force either a sampling decision on the downstream traces via the sample rate.\n        if (typeof samplingContext.parentSampled === 'boolean') {\n          return Number(samplingContext.parentSampled);\n        }\n\n        return fallbackSampleRate;\n      },\n    });\n    localSampleRateWasApplied = true;\n  } else if (samplingContext.parentSampled !== undefined) {\n    sampleRate = samplingContext.parentSampled;\n  } else if (typeof options.tracesSampleRate !== 'undefined') {\n    sampleRate = options.tracesSampleRate;\n    localSampleRateWasApplied = true;\n  }\n\n  // Since this is coming from the user (or from a function provided by the user), who knows what we might get.\n  // (The only valid values are booleans or numbers between 0 and 1.)\n  const parsedSampleRate = parseSampleRate(sampleRate);\n\n  if (parsedSampleRate === undefined) {\n    DEBUG_BUILD &&\n      debug.warn(\n        `[Tracing] Discarding root span because of invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n          sampleRate,\n        )} of type ${JSON.stringify(typeof sampleRate)}.`,\n      );\n    return [false];\n  }\n\n  // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n  if (!parsedSampleRate) {\n    DEBUG_BUILD &&\n      debug.log(\n        `[Tracing] Discarding transaction because ${\n          typeof options.tracesSampler === 'function'\n            ? 'tracesSampler returned 0 or false'\n            : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n        }`,\n      );\n    return [false, parsedSampleRate, localSampleRateWasApplied];\n  }\n\n  // We always compare the sample rand for the current execution context against the chosen sample rate.\n  // Read more: https://develop.sentry.dev/sdk/telemetry/traces/#propagated-random-value\n  const shouldSample = sampleRand < parsedSampleRate;\n\n  // if we're not going to keep it, we're done\n  if (!shouldSample) {\n    DEBUG_BUILD &&\n      debug.log(\n        `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n          sampleRate,\n        )})`,\n      );\n  }\n\n  return [shouldSample, parsedSampleRate, localSampleRateWasApplied];\n}\n\nexport { sampleSpan };\n//# sourceMappingURL=sampling.js.map\n",
+    "import { generateTraceId, generateSpanId } from '../utils/propagationContext.js';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils.js';\n\n/**\n * A Sentry Span that is non-recording, meaning it will not be sent to Sentry.\n */\nclass SentryNonRecordingSpan  {\n\n   constructor(spanContext = {}) {\n    this._traceId = spanContext.traceId || generateTraceId();\n    this._spanId = spanContext.spanId || generateSpanId();\n  }\n\n  /** @inheritdoc */\n   spanContext() {\n    return {\n      spanId: this._spanId,\n      traceId: this._traceId,\n      traceFlags: TRACE_FLAG_NONE,\n    };\n  }\n\n  /** @inheritdoc */\n   end(_timestamp) {}\n\n  /** @inheritdoc */\n   setAttribute(_key, _value) {\n    return this;\n  }\n\n  /** @inheritdoc */\n   setAttributes(_values) {\n    return this;\n  }\n\n  /** @inheritdoc */\n   setStatus(_status) {\n    return this;\n  }\n\n  /** @inheritdoc */\n   updateName(_name) {\n    return this;\n  }\n\n  /** @inheritdoc */\n   isRecording() {\n    return false;\n  }\n\n  /** @inheritdoc */\n   addEvent(\n    _name,\n    _attributesOrStartTime,\n    _startTime,\n  ) {\n    return this;\n  }\n\n  /** @inheritDoc */\n   addLink(_link) {\n    return this;\n  }\n\n  /** @inheritDoc */\n   addLinks(_links) {\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but we need it for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n   recordException(_exception, _time) {\n    // noop\n  }\n}\n\nexport { SentryNonRecordingSpan };\n//# sourceMappingURL=sentryNonRecordingSpan.js.map\n",
+    "import { isVueViewModel, isSyntheticEvent } from './is.js';\nimport { convertToPlainObject } from './object.js';\nimport { getVueInternalName, getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normalized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction normalize(input, depth = 100, maxProperties = +Infinity) {\n  try {\n    // since we're at the outermost level, we don't provide a key\n    return visit('', input, depth, maxProperties);\n  } catch (err) {\n    return { ERROR: `**non-serializable** (${err})` };\n  }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object,\n  // Default Node.js REPL depth\n  depth = 3,\n  // 100kB, as 200kB is max payload size, so half sounds reasonable\n  maxSize = 100 * 1024,\n) {\n  const normalized = normalize(object, depth);\n\n  if (jsonSize(normalized) > maxSize) {\n    return normalizeToSize(object, depth - 1, maxSize);\n  }\n\n  return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n  key,\n  value,\n  depth = +Infinity,\n  maxProperties = +Infinity,\n  memo = memoBuilder(),\n) {\n  const [memoize, unmemoize] = memo;\n\n  // Get the simple cases out of the way first\n  if (\n    value == null || // this matches null and undefined -> eqeq not eqeqeq\n    ['boolean', 'string'].includes(typeof value) ||\n    (typeof value === 'number' && Number.isFinite(value))\n  ) {\n    return value ;\n  }\n\n  const stringified = stringifyValue(key, value);\n\n  // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n  // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n  if (!stringified.startsWith('[object ')) {\n    return stringified;\n  }\n\n  // From here on, we can assert that `value` is either an object or an array.\n\n  // Do not normalize objects that we know have already been normalized. As a general rule, the\n  // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n  // have already been normalized.\n  if ((value )['__sentry_skip_normalization__']) {\n    return value ;\n  }\n\n  // We can set `__sentry_override_normalization_depth__` on an object to ensure that from there\n  // We keep a certain amount of depth.\n  // This should be used sparingly, e.g. we use it for the redux integration to ensure we get a certain amount of state.\n  const remainingDepth =\n    typeof (value )['__sentry_override_normalization_depth__'] === 'number'\n      ? ((value )['__sentry_override_normalization_depth__'] )\n      : depth;\n\n  // We're also done if we've reached the max depth\n  if (remainingDepth === 0) {\n    // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n    return stringified.replace('object ', '');\n  }\n\n  // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n  if (memoize(value)) {\n    return '[Circular ~]';\n  }\n\n  // If the value has a `toJSON` method, we call it to extract more information\n  const valueWithToJSON = value ;\n  if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n    try {\n      const jsonValue = valueWithToJSON.toJSON();\n      // We need to normalize the return value of `.toJSON()` in case it has circular references\n      return visit('', jsonValue, remainingDepth - 1, maxProperties, memo);\n    } catch {\n      // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n    }\n  }\n\n  // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n  // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n  // property/entry, and keep track of the number of items we add to it.\n  const normalized = (Array.isArray(value) ? [] : {}) ;\n  let numAdded = 0;\n\n  // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n  // properties are non-enumerable and otherwise would get missed.\n  const visitable = convertToPlainObject(value );\n\n  for (const visitKey in visitable) {\n    // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n    if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n      continue;\n    }\n\n    if (numAdded >= maxProperties) {\n      normalized[visitKey] = '[MaxProperties ~]';\n      break;\n    }\n\n    // Recursively visit all the child nodes\n    const visitValue = visitable[visitKey];\n    normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n\n    numAdded++;\n  }\n\n  // Once we've visited all the branches, remove the parent from memo storage\n  unmemoize(value);\n\n  // Return accumulated values\n  return normalized;\n}\n\n/* eslint-disable complexity */\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n  key,\n  // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n  // our internal use, it'll do\n  value,\n) {\n  try {\n    if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n      return '[Domain]';\n    }\n\n    if (key === 'domainEmitter') {\n      return '[DomainEmitter]';\n    }\n\n    // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n    // which won't throw if they are not present.\n\n    if (typeof global !== 'undefined' && value === global) {\n      return '[Global]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window !== 'undefined' && value === window) {\n      return '[Window]';\n    }\n\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof document !== 'undefined' && value === document) {\n      return '[Document]';\n    }\n\n    if (isVueViewModel(value)) {\n      return getVueInternalName(value);\n    }\n\n    // React's SyntheticEvent thingy\n    if (isSyntheticEvent(value)) {\n      return '[SyntheticEvent]';\n    }\n\n    if (typeof value === 'number' && !Number.isFinite(value)) {\n      return `[${value}]`;\n    }\n\n    if (typeof value === 'function') {\n      return `[Function: ${getFunctionName(value)}]`;\n    }\n\n    if (typeof value === 'symbol') {\n      return `[${String(value)}]`;\n    }\n\n    // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n    if (typeof value === 'bigint') {\n      return `[BigInt: ${String(value)}]`;\n    }\n\n    // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n    // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n    // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n    // we can make sure that only plain objects come out that way.\n    const objName = getConstructorName(value);\n\n    // Handle HTML Elements\n    if (/^HTML(\\w*)Element$/.test(objName)) {\n      return `[HTMLElement: ${objName}]`;\n    }\n\n    return `[object ${objName}]`;\n  } catch (err) {\n    return `**non-serializable** (${err})`;\n  }\n}\n/* eslint-enable complexity */\n\nfunction getConstructorName(value) {\n  const prototype = Object.getPrototypeOf(value);\n\n  return prototype?.constructor ? prototype.constructor.name : 'null prototype';\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n  // eslint-disable-next-line no-bitwise\n  return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value) {\n  return utf8Length(JSON.stringify(value));\n}\n\n/**\n * Normalizes URLs in exceptions and stacktraces to a base path so Sentry can fingerprint\n * across platforms and working directory.\n *\n * @param url The URL to be normalized.\n * @param basePath The application base path.\n * @returns The normalized URL.\n */\nfunction normalizeUrlToBase(url, basePath) {\n  const escapedBase = basePath\n    // Backslash to forward\n    .replace(/\\\\/g, '/')\n    // Escape RegExp special characters\n    .replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n\n  let newUrl = url;\n  try {\n    newUrl = decodeURI(url);\n  } catch {\n    // Sometime this breaks\n  }\n  return (\n    newUrl\n      .replace(/\\\\/g, '/')\n      .replace(/webpack:\\/?/g, '') // Remove intermediate base path\n      // oxlint-disable-next-line sdk/no-regexp-constructor\n      .replace(new RegExp(`(file://)?/*${escapedBase}/*`, 'ig'), 'app:///')\n  );\n}\n\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n  const inner = new WeakSet();\n  function memoize(obj) {\n    if (inner.has(obj)) {\n      return true;\n    }\n    inner.add(obj);\n    return false;\n  }\n\n  function unmemoize(obj) {\n    inner.delete(obj);\n  }\n  return [memoize, unmemoize];\n}\n\nexport { normalize, normalizeToSize, normalizeUrlToBase };\n//# sourceMappingURL=normalize.js.map\n",
+    "import { getSentryCarrier } from '../carrier.js';\nimport { dsnToString } from './dsn.js';\nimport { normalize } from './normalize.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n  return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n  const [headers, items] = envelope;\n  return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nfunction forEachEnvelopeItem(\n  envelope,\n  callback,\n) {\n  const envelopeItems = envelope[1];\n\n  for (const envelopeItem of envelopeItems) {\n    const envelopeItemType = envelopeItem[0].type;\n    const result = callback(envelopeItem, envelopeItemType);\n\n    if (result) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nfunction envelopeContainsItemType(envelope, types) {\n  return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8 array.\n */\nfunction encodeUTF8(input) {\n  const carrier = getSentryCarrier(GLOBAL_OBJ);\n  return carrier.encodePolyfill ? carrier.encodePolyfill(input) : new TextEncoder().encode(input);\n}\n\n/**\n * Decode a UTF8 array to string.\n */\nfunction decodeUTF8(input) {\n  const carrier = getSentryCarrier(GLOBAL_OBJ);\n  return carrier.decodePolyfill ? carrier.decodePolyfill(input) : new TextDecoder().decode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope) {\n  const [envHeaders, items] = envelope;\n  // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n  let parts = JSON.stringify(envHeaders);\n\n  function append(next) {\n    if (typeof parts === 'string') {\n      parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts), next];\n    } else {\n      parts.push(typeof next === 'string' ? encodeUTF8(next) : next);\n    }\n  }\n\n  for (const item of items) {\n    const [itemHeaders, payload] = item;\n\n    append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n    if (typeof payload === 'string' || payload instanceof Uint8Array) {\n      append(payload);\n    } else {\n      let stringifiedPayload;\n      try {\n        stringifiedPayload = JSON.stringify(payload);\n      } catch {\n        // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.stringify()` still\n        // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n        // performance impact but in this case a performance hit is better than throwing.\n        stringifiedPayload = JSON.stringify(normalize(payload));\n      }\n      append(stringifiedPayload);\n    }\n  }\n\n  return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n  const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n  const merged = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const buffer of buffers) {\n    merged.set(buffer, offset);\n    offset += buffer.length;\n  }\n\n  return merged;\n}\n\n/**\n * Parses an envelope\n */\nfunction parseEnvelope(env) {\n  let buffer = typeof env === 'string' ? encodeUTF8(env) : env;\n\n  function readBinary(length) {\n    const bin = buffer.subarray(0, length);\n    // Replace the buffer with the remaining data excluding trailing newline\n    buffer = buffer.subarray(length + 1);\n    return bin;\n  }\n\n  function readJson() {\n    let i = buffer.indexOf(0xa);\n    // If we couldn't find a newline, we must have found the end of the buffer\n    if (i < 0) {\n      i = buffer.length;\n    }\n\n    return JSON.parse(decodeUTF8(readBinary(i))) ;\n  }\n\n  const envelopeHeader = readJson();\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  const items = [];\n\n  while (buffer.length) {\n    const itemHeader = readJson();\n    const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n    items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n  }\n\n  return [envelopeHeader, items];\n}\n\n/**\n * Creates envelope item for a single span\n */\nfunction createSpanEnvelopeItem(spanJson) {\n  const spanHeaders = {\n    type: 'span',\n  };\n\n  return [spanHeaders, spanJson];\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(attachment) {\n  const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data) : attachment.data;\n\n  return [\n    {\n      type: 'attachment',\n      length: buffer.length,\n      filename: attachment.filename,\n      content_type: attachment.contentType,\n      attachment_type: attachment.attachmentType,\n    },\n    buffer,\n  ];\n}\n\n// Map of envelope item types to data categories where the category differs from the type.\n// Types that map to themselves (session, attachment, transaction, profile, feedback, span, metric) fall through.\nconst DATA_CATEGORY_OVERRIDES = {\n  sessions: 'session',\n  event: 'error',\n  client_report: 'internal',\n  user_report: 'default',\n  profile_chunk: 'profile',\n  replay_event: 'replay',\n  replay_recording: 'replay',\n  check_in: 'monitor',\n  raw_security: 'security',\n  log: 'log_item',\n  trace_metric: 'metric',\n};\n\nfunction _isOverriddenType(type) {\n  return type in DATA_CATEGORY_OVERRIDES;\n}\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n  return _isOverriddenType(type) ? DATA_CATEGORY_OVERRIDES[type] : type;\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nfunction getSdkMetadataForEnvelopeHeader(metadataOrEvent) {\n  if (!metadataOrEvent?.sdk) {\n    return;\n  }\n  const { name, version } = metadataOrEvent.sdk;\n  return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nfunction createEventEnvelopeHeaders(\n  event,\n  sdkInfo,\n  tunnel,\n  dsn,\n) {\n  const dynamicSamplingContext = event.sdkProcessingMetadata?.dynamicSamplingContext;\n  return {\n    event_id: event.event_id ,\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n    ...(dynamicSamplingContext && {\n      trace: dynamicSamplingContext,\n    }),\n  };\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, createEventEnvelopeHeaders, createSpanEnvelopeItem, envelopeContainsItemType, envelopeItemTypeToDataCategory, forEachEnvelopeItem, getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isMatchingPattern } from './string.js';\n\nfunction logIgnoredSpan(droppedSpan) {\n  debug.log(`Ignoring span ${droppedSpan.op} - ${droppedSpan.description} because it matches \\`ignoreSpans\\`.`);\n}\n\n/**\n * Check if a span should be ignored based on the ignoreSpans configuration.\n */\nfunction shouldIgnoreSpan(\n  span,\n  ignoreSpans,\n) {\n  if (!ignoreSpans?.length || !span.description) {\n    return false;\n  }\n\n  for (const pattern of ignoreSpans) {\n    if (isStringOrRegExp(pattern)) {\n      if (isMatchingPattern(span.description, pattern)) {\n        DEBUG_BUILD && logIgnoredSpan(span);\n        return true;\n      }\n      continue;\n    }\n\n    if (!pattern.name && !pattern.op) {\n      continue;\n    }\n\n    const nameMatches = pattern.name ? isMatchingPattern(span.description, pattern.name) : true;\n    const opMatches = pattern.op ? span.op && isMatchingPattern(span.op, pattern.op) : true;\n\n    // This check here is only correct because we can guarantee that we ran `isMatchingPattern`\n    // for at least one of `nameMatches` and `opMatches`. So in contrary to how this looks,\n    // not both op and name actually have to match. This is the most efficient way to check\n    // for all combinations of name and op patterns.\n    if (nameMatches && opMatches) {\n      DEBUG_BUILD && logIgnoredSpan(span);\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Takes a list of spans, and a span that was dropped, and re-parents the child spans of the dropped span to the parent of the dropped span, if possible.\n * This mutates the spans array in place!\n */\nfunction reparentChildSpans(spans, dropSpan) {\n  const droppedSpanParentId = dropSpan.parent_span_id;\n  const droppedSpanId = dropSpan.span_id;\n\n  // This should generally not happen, as we do not apply this on root spans\n  // but to be safe, we just bail in this case\n  if (!droppedSpanParentId) {\n    return;\n  }\n\n  for (const span of spans) {\n    if (span.parent_span_id === droppedSpanId) {\n      span.parent_span_id = droppedSpanParentId;\n    }\n  }\n}\n\nfunction isStringOrRegExp(value) {\n  return typeof value === 'string' || value instanceof RegExp;\n}\n\nexport { reparentChildSpans, shouldIgnoreSpan };\n//# sourceMappingURL=should-ignore-span.js.map\n",
+    "import { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext.js';\nimport { dsnToString } from './utils/dsn.js';\nimport { getSdkMetadataForEnvelopeHeader, createEventEnvelopeHeaders, createEnvelope, createSpanEnvelopeItem } from './utils/envelope.js';\nimport { shouldIgnoreSpan } from './utils/should-ignore-span.js';\nimport { spanToJSON, showSpanDropWarning } from './utils/spanUtils.js';\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n *\n * @internal, exported only for testing\n **/\nfunction _enhanceEventWithSdkInfo(event, newSdkInfo) {\n  if (!newSdkInfo) {\n    return event;\n  }\n\n  const eventSdkInfo = event.sdk || {};\n\n  event.sdk = {\n    ...eventSdkInfo,\n    name: eventSdkInfo.name || newSdkInfo.name,\n    version: eventSdkInfo.version || newSdkInfo.version,\n    integrations: [...(event.sdk?.integrations || []), ...(newSdkInfo.integrations || [])],\n    packages: [...(event.sdk?.packages || []), ...(newSdkInfo.packages || [])],\n    settings:\n      event.sdk?.settings || newSdkInfo.settings\n        ? {\n            ...event.sdk?.settings,\n            ...newSdkInfo.settings,\n          }\n        : undefined,\n  };\n\n  return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n  session,\n  dsn,\n  metadata,\n  tunnel,\n) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n  const envelopeHeaders = {\n    sent_at: new Date().toISOString(),\n    ...(sdkInfo && { sdk: sdkInfo }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const envelopeItem =\n    'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session.toJSON()];\n\n  return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n  event,\n  dsn,\n  metadata,\n  tunnel,\n) {\n  const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n\n  /*\n    Note: Due to TS, event.type may be `replay_event`, theoretically.\n    In practice, we never call `createEventEnvelope` with `replay_event` type,\n    and we'd have to adjust a looot of types to make this work properly.\n    We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)\n    So the safe choice is to really guard against the replay_event type here.\n  */\n  const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';\n\n  _enhanceEventWithSdkInfo(event, metadata?.sdk);\n\n  const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n  // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n  // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n  // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n  // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n  delete event.sdkProcessingMetadata;\n\n  const eventItem = [{ type: eventType }, event];\n  return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/**\n * Create envelope from Span item.\n *\n * Takes an optional client and runs spans through `beforeSendSpan` if available.\n */\nfunction createSpanEnvelope(spans, client) {\n  function dscHasRequiredProps(dsc) {\n    return !!dsc.trace_id && !!dsc.public_key;\n  }\n\n  // For the moment we'll obtain the DSC from the first span in the array\n  // This might need to be changed if we permit sending multiple spans from\n  // different segments in one envelope\n  const dsc = getDynamicSamplingContextFromSpan(spans[0]);\n\n  const dsn = client?.getDsn();\n  const tunnel = client?.getOptions().tunnel;\n\n  const headers = {\n    sent_at: new Date().toISOString(),\n    ...(dscHasRequiredProps(dsc) && { trace: dsc }),\n    ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n  };\n\n  const { beforeSendSpan, ignoreSpans } = client?.getOptions() || {};\n\n  const filteredSpans = ignoreSpans?.length\n    ? spans.filter(span => !shouldIgnoreSpan(spanToJSON(span), ignoreSpans))\n    : spans;\n  const droppedSpans = spans.length - filteredSpans.length;\n\n  if (droppedSpans) {\n    client?.recordDroppedEvent('before_send', 'span', droppedSpans);\n  }\n\n  const convertToSpanJSON = beforeSendSpan\n    ? (span) => {\n        const spanJson = spanToJSON(span);\n        const processedSpan = beforeSendSpan(spanJson);\n\n        if (!processedSpan) {\n          showSpanDropWarning();\n          return spanJson;\n        }\n\n        return processedSpan;\n      }\n    : spanToJSON;\n\n  const items = [];\n  for (const span of filteredSpans) {\n    const spanJson = convertToSpanJSON(span);\n    if (spanJson) {\n      items.push(createSpanEnvelopeItem(spanJson));\n    }\n  }\n\n  return createEnvelope(headers, items);\n}\n\nexport { _enhanceEventWithSdkInfo, createEventEnvelope, createSessionEnvelope, createSpanEnvelope };\n//# sourceMappingURL=envelope.js.map\n",
+    "import { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE } from '../semanticAttributes.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getRootSpan, getActiveSpan } from '../utils/spanUtils.js';\n\n/**\n * Adds a measurement to the active transaction on the current global scope. You can optionally pass in a different span\n * as the 4th parameter.\n */\nfunction setMeasurement(name, value, unit, activeSpan = getActiveSpan()) {\n  const rootSpan = activeSpan && getRootSpan(activeSpan);\n\n  if (rootSpan) {\n    DEBUG_BUILD && debug.log(`[Measurement] Setting measurement on root span: ${name} = ${value} ${unit}`);\n    rootSpan.addEvent(name, {\n      [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE]: value,\n      [SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT]: unit ,\n    });\n  }\n}\n\n/**\n * Convert timed events to measurements.\n */\nfunction timedEventsToMeasurements(events) {\n  if (!events || events.length === 0) {\n    return undefined;\n  }\n\n  const measurements = {};\n  events.forEach(event => {\n    const attributes = event.attributes || {};\n    const unit = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT] ;\n    const value = attributes[SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE] ;\n\n    if (typeof unit === 'string' && typeof value === 'number') {\n      measurements[event.name] = { value, unit };\n    }\n  });\n\n  return measurements;\n}\n\nexport { setMeasurement, timedEventsToMeasurements };\n//# sourceMappingURL=measurement.js.map\n",
+    "import { getClient, getCurrentScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { createSpanEnvelope } from '../envelope.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME } from '../semanticAttributes.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { generateTraceId, generateSpanId } from '../utils/propagationContext.js';\nimport { TRACE_FLAG_SAMPLED, TRACE_FLAG_NONE, spanTimeInputToSeconds, convertSpanLinksForEnvelope, getRootSpan, getStatusMessage, spanToJSON, getSpanDescendants, spanToTransactionTraceContext } from '../utils/spanUtils.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext.js';\nimport { logSpanEnd } from './logSpans.js';\nimport { timedEventsToMeasurements } from './measurement.js';\nimport { getCapturedScopesOnSpan } from './utils.js';\n\nconst MAX_SPAN_COUNT = 1000;\n\n/**\n * Span contains all data about a span\n */\nclass SentrySpan  {\n\n  /** Epoch timestamp in seconds when the span started. */\n\n  /** Epoch timestamp in seconds when the span ended. */\n\n  /** Internal keeper of the status */\n\n  /** The timed events added to this span. */\n\n  /** if true, treat span as a standalone span (not part of a transaction) */\n\n  /**\n   * You should never call the constructor manually, always use `Sentry.startSpan()`\n   * or other span methods.\n   * @internal\n   * @hideconstructor\n   * @hidden\n   */\n   constructor(spanContext = {}) {\n    this._traceId = spanContext.traceId || generateTraceId();\n    this._spanId = spanContext.spanId || generateSpanId();\n    this._startTime = spanContext.startTimestamp || timestampInSeconds();\n    this._links = spanContext.links;\n\n    this._attributes = {};\n    this.setAttributes({\n      [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual',\n      [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n      ...spanContext.attributes,\n    });\n\n    this._name = spanContext.name;\n\n    if (spanContext.parentSpanId) {\n      this._parentSpanId = spanContext.parentSpanId;\n    }\n    // We want to include booleans as well here\n    if ('sampled' in spanContext) {\n      this._sampled = spanContext.sampled;\n    }\n    if (spanContext.endTimestamp) {\n      this._endTime = spanContext.endTimestamp;\n    }\n\n    this._events = [];\n\n    this._isStandaloneSpan = spanContext.isStandalone;\n\n    // If the span is already ended, ensure we finalize the span immediately\n    if (this._endTime) {\n      this._onSpanEnded();\n    }\n  }\n\n  /** @inheritDoc */\n   addLink(link) {\n    if (this._links) {\n      this._links.push(link);\n    } else {\n      this._links = [link];\n    }\n    return this;\n  }\n\n  /** @inheritDoc */\n   addLinks(links) {\n    if (this._links) {\n      this._links.push(...links);\n    } else {\n      this._links = links;\n    }\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but it is needed for being compliant with the OTEL Span interface.\n   *\n   * @hidden\n   * @internal\n   */\n   recordException(_exception, _time) {\n    // noop\n  }\n\n  /** @inheritdoc */\n   spanContext() {\n    const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n    return {\n      spanId,\n      traceId,\n      traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n    };\n  }\n\n  /** @inheritdoc */\n   setAttribute(key, value) {\n    if (value === undefined) {\n      // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n      delete this._attributes[key];\n    } else {\n      this._attributes[key] = value;\n    }\n\n    return this;\n  }\n\n  /** @inheritdoc */\n   setAttributes(attributes) {\n    Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n    return this;\n  }\n\n  /**\n   * This should generally not be used,\n   * but we need it for browser tracing where we want to adjust the start time afterwards.\n   * USE THIS WITH CAUTION!\n   *\n   * @hidden\n   * @internal\n   */\n   updateStartTime(timeInput) {\n    this._startTime = spanTimeInputToSeconds(timeInput);\n  }\n\n  /**\n   * @inheritDoc\n   */\n   setStatus(value) {\n    this._status = value;\n    return this;\n  }\n\n  /**\n   * @inheritDoc\n   */\n   updateName(name) {\n    this._name = name;\n    this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'custom');\n    return this;\n  }\n\n  /** @inheritdoc */\n   end(endTimestamp) {\n    // If already ended, skip\n    if (this._endTime) {\n      return;\n    }\n\n    this._endTime = spanTimeInputToSeconds(endTimestamp);\n    logSpanEnd(this);\n\n    this._onSpanEnded();\n  }\n\n  /**\n   * Get JSON representation of this span.\n   *\n   * @hidden\n   * @internal This method is purely for internal purposes and should not be used outside\n   * of SDK code. If you need to get a JSON representation of a span,\n   * use `spanToJSON(span)` instead.\n   */\n   getSpanJSON() {\n    return {\n      data: this._attributes,\n      description: this._name,\n      op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n      parent_span_id: this._parentSpanId,\n      span_id: this._spanId,\n      start_timestamp: this._startTime,\n      status: getStatusMessage(this._status),\n      timestamp: this._endTime,\n      trace_id: this._traceId,\n      origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n      profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] ,\n      exclusive_time: this._attributes[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] ,\n      measurements: timedEventsToMeasurements(this._events),\n      is_segment: (this._isStandaloneSpan && getRootSpan(this) === this) || undefined,\n      segment_id: this._isStandaloneSpan ? getRootSpan(this).spanContext().spanId : undefined,\n      links: convertSpanLinksForEnvelope(this._links),\n    };\n  }\n\n  /** @inheritdoc */\n   isRecording() {\n    return !this._endTime && !!this._sampled;\n  }\n\n  /**\n   * @inheritdoc\n   */\n   addEvent(\n    name,\n    attributesOrStartTime,\n    startTime,\n  ) {\n    DEBUG_BUILD && debug.log('[Tracing] Adding an event to span:', name);\n\n    const time = isSpanTimeInput(attributesOrStartTime) ? attributesOrStartTime : startTime || timestampInSeconds();\n    const attributes = isSpanTimeInput(attributesOrStartTime) ? {} : attributesOrStartTime || {};\n\n    const event = {\n      name,\n      time: spanTimeInputToSeconds(time),\n      attributes,\n    };\n\n    this._events.push(event);\n\n    return this;\n  }\n\n  /**\n   * This method should generally not be used,\n   * but for now we need a way to publicly check if the `_isStandaloneSpan` flag is set.\n   * USE THIS WITH CAUTION!\n   * @internal\n   * @hidden\n   * @experimental\n   */\n   isStandaloneSpan() {\n    return !!this._isStandaloneSpan;\n  }\n\n  /** Emit `spanEnd` when the span is ended. */\n   _onSpanEnded() {\n    const client = getClient();\n    if (client) {\n      client.emit('spanEnd', this);\n    }\n\n    // A segment span is basically the root span of a local span tree.\n    // So for now, this is either what we previously refer to as the root span,\n    // or a standalone span.\n    const isSegmentSpan = this._isStandaloneSpan || this === getRootSpan(this);\n\n    if (!isSegmentSpan) {\n      return;\n    }\n\n    // if this is a standalone span, we send it immediately\n    if (this._isStandaloneSpan) {\n      if (this._sampled) {\n        sendSpanEnvelope(createSpanEnvelope([this], client));\n      } else {\n        DEBUG_BUILD &&\n          debug.log('[Tracing] Discarding standalone span because its trace was not chosen to be sampled.');\n        if (client) {\n          client.recordDroppedEvent('sample_rate', 'span');\n        }\n      }\n      return;\n    }\n\n    const transactionEvent = this._convertSpanToTransaction();\n    if (transactionEvent) {\n      const scope = getCapturedScopesOnSpan(this).scope || getCurrentScope();\n      scope.captureEvent(transactionEvent);\n    }\n  }\n\n  /**\n   * Finish the transaction & prepare the event to send to Sentry.\n   */\n   _convertSpanToTransaction() {\n    // We can only convert finished spans\n    if (!isFullFinishedSpan(spanToJSON(this))) {\n      return undefined;\n    }\n\n    if (!this._name) {\n      DEBUG_BUILD && debug.warn('Transaction has no name, falling back to ``.');\n      this._name = '';\n    }\n\n    const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n    const normalizedRequest = capturedSpanScope?.getScopeData().sdkProcessingMetadata?.normalizedRequest;\n\n    if (this._sampled !== true) {\n      return undefined;\n    }\n\n    // The transaction span itself as well as any potential standalone spans should be filtered out\n    const finishedSpans = getSpanDescendants(this).filter(span => span !== this && !isStandaloneSpan(span));\n\n    const spans = finishedSpans.map(span => spanToJSON(span)).filter(isFullFinishedSpan);\n\n    const source = this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n    // remove internal root span attributes we don't need to send.\n    /* eslint-disable @typescript-eslint/no-dynamic-delete */\n    delete this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n    spans.forEach(span => {\n      delete span.data[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n    });\n    // eslint-enabled-next-line @typescript-eslint/no-dynamic-delete\n\n    const transaction = {\n      contexts: {\n        trace: spanToTransactionTraceContext(this),\n      },\n      spans:\n        // spans.sort() mutates the array, but `spans` is already a copy so we can safely do this here\n        // we do not use spans anymore after this point\n        spans.length > MAX_SPAN_COUNT\n          ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n          : spans,\n      start_timestamp: this._startTime,\n      timestamp: this._endTime,\n      transaction: this._name,\n      type: 'transaction',\n      sdkProcessingMetadata: {\n        capturedSpanScope,\n        capturedSpanIsolationScope,\n        dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n      },\n      request: normalizedRequest,\n      ...(source && {\n        transaction_info: {\n          source,\n        },\n      }),\n    };\n\n    const measurements = timedEventsToMeasurements(this._events);\n    const hasMeasurements = measurements && Object.keys(measurements).length;\n\n    if (hasMeasurements) {\n      DEBUG_BUILD &&\n        debug.log(\n          '[Measurements] Adding measurements to transaction event',\n          JSON.stringify(measurements, undefined, 2),\n        );\n      transaction.measurements = measurements;\n    }\n\n    return transaction;\n  }\n}\n\nfunction isSpanTimeInput(value) {\n  return (value && typeof value === 'number') || value instanceof Date || Array.isArray(value);\n}\n\n// We want to filter out any incomplete SpanJSON objects\nfunction isFullFinishedSpan(input) {\n  return !!input.start_timestamp && !!input.timestamp && !!input.span_id && !!input.trace_id;\n}\n\n/** `SentrySpan`s can be sent as a standalone span rather than belonging to a transaction */\nfunction isStandaloneSpan(span) {\n  return span instanceof SentrySpan && span.isStandaloneSpan();\n}\n\n/**\n * Sends a `SpanEnvelope`.\n *\n * Note: If the envelope's spans are dropped, e.g. via `beforeSendSpan`,\n * the envelope will not be sent either.\n */\nfunction sendSpanEnvelope(envelope) {\n  const client = getClient();\n  if (!client) {\n    return;\n  }\n\n  const spanItems = envelope[1];\n  if (!spanItems || spanItems.length === 0) {\n    client.recordDroppedEvent('before_send', 'span');\n    return;\n  }\n\n  // sendEnvelope should not throw\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  client.sendEnvelope(envelope);\n}\n\nexport { SentrySpan };\n//# sourceMappingURL=sentrySpan.js.map\n",
+    "import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getClient, withScope, getCurrentScope, getIsolationScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext } from '../utils/baggage.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { parseSampleRate } from '../utils/parseSampleRate.js';\nimport { generateTraceId } from '../utils/propagationContext.js';\nimport { safeMathRandom } from '../utils/randomSafeContext.js';\nimport { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope.js';\nimport { spanTimeInputToSeconds, getRootSpan, addChildSpanToSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils.js';\nimport { shouldContinueTrace, propagationContextFromHeaders } from '../utils/tracing.js';\nimport { getDynamicSamplingContextFromSpan, freezeDscOnSpan } from './dynamicSamplingContext.js';\nimport { logSpanStart } from './logSpans.js';\nimport { sampleSpan } from './sampling.js';\nimport { SentryNonRecordingSpan } from './sentryNonRecordingSpan.js';\nimport { SentrySpan } from './sentrySpan.js';\nimport { SPAN_STATUS_ERROR } from './spanstatus.js';\nimport { setCapturedScopesOnSpan } from './utils.js';\n\n/* eslint-disable max-lines */\n\n\nconst SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startSpan(options, callback) {\n  const acs = getAcs();\n  if (acs.startSpan) {\n    return acs.startSpan(options, callback);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n  // We still need to fork a potentially passed scope, as we set the active span on it\n  // and we need to ensure that it is cleaned up properly once the span ends.\n  const customForkedScope = customScope?.clone();\n\n  return withScope(customForkedScope, () => {\n    // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n    const wrapper = getActiveSpanWrapper(customParentSpan);\n\n    return wrapper(() => {\n      const scope = getCurrentScope();\n      const parentSpan = getParentSpan(scope, customParentSpan);\n\n      const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n      const activeSpan = shouldSkipSpan\n        ? new SentryNonRecordingSpan()\n        : createChildOrRootSpan({\n            parentSpan,\n            spanArguments,\n            forceTransaction,\n            scope,\n          });\n\n      _setSpanForScope(scope, activeSpan);\n\n      return handleCallbackErrors(\n        () => callback(activeSpan),\n        () => {\n          // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n          const { status } = spanToJSON(activeSpan);\n          if (activeSpan.isRecording() && (!status || status === 'ok')) {\n            activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n          }\n        },\n        () => {\n          activeSpan.end();\n        },\n      );\n    });\n  });\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. Use `span.end()` to end the span.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startSpanManual(options, callback) {\n  const acs = getAcs();\n  if (acs.startSpanManual) {\n    return acs.startSpanManual(options, callback);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan, scope: customScope } = options;\n\n  const customForkedScope = customScope?.clone();\n\n  return withScope(customForkedScope, () => {\n    // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n    const wrapper = getActiveSpanWrapper(customParentSpan);\n\n    return wrapper(() => {\n      const scope = getCurrentScope();\n      const parentSpan = getParentSpan(scope, customParentSpan);\n\n      const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n      const activeSpan = shouldSkipSpan\n        ? new SentryNonRecordingSpan()\n        : createChildOrRootSpan({\n            parentSpan,\n            spanArguments,\n            forceTransaction,\n            scope,\n          });\n\n      _setSpanForScope(scope, activeSpan);\n\n      return handleCallbackErrors(\n        // We pass the `finish` function to the callback, so the user can finish the span manually\n        // this is mainly here for historic purposes because previously, we instructed users to call\n        // `finish` instead of `span.end()` to also clean up the scope. Nowadays, calling `span.end()`\n        // or `finish` has the same effect and we simply leave it here to avoid breaking user code.\n        () => callback(activeSpan, () => activeSpan.end()),\n        () => {\n          // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n          const { status } = spanToJSON(activeSpan);\n          if (activeSpan.isRecording() && (!status || status === 'ok')) {\n            activeSpan.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n          }\n        },\n      );\n    });\n  });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startInactiveSpan(options) {\n  const acs = getAcs();\n  if (acs.startInactiveSpan) {\n    return acs.startInactiveSpan(options);\n  }\n\n  const spanArguments = parseSentrySpanArguments(options);\n  const { forceTransaction, parentSpan: customParentSpan } = options;\n\n  // If `options.scope` is defined, we use this as as a wrapper,\n  // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n  const wrapper = options.scope\n    ? (callback) => withScope(options.scope, callback)\n    : customParentSpan !== undefined\n      ? (callback) => withActiveSpan(customParentSpan, callback)\n      : (callback) => callback();\n\n  return wrapper(() => {\n    const scope = getCurrentScope();\n    const parentSpan = getParentSpan(scope, customParentSpan);\n\n    const shouldSkipSpan = options.onlyIfParent && !parentSpan;\n\n    if (shouldSkipSpan) {\n      return new SentryNonRecordingSpan();\n    }\n\n    return createChildOrRootSpan({\n      parentSpan,\n      spanArguments,\n      forceTransaction,\n      scope,\n    });\n  });\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n */\nconst continueTrace = (\n  options\n\n,\n  callback,\n) => {\n  const carrier = getMainCarrier();\n  const acs = getAsyncContextStrategy(carrier);\n  if (acs.continueTrace) {\n    return acs.continueTrace(options, callback);\n  }\n\n  const { sentryTrace, baggage } = options;\n\n  const client = getClient();\n  const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n  if (client && !shouldContinueTrace(client, incomingDsc?.org_id)) {\n    return startNewTrace(callback);\n  }\n\n  return withScope(scope => {\n    const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n    scope.setPropagationContext(propagationContext);\n    _setSpanForScope(scope, undefined);\n    return callback();\n  });\n};\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will not be attached to a parent span.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nfunction withActiveSpan(span, callback) {\n  const acs = getAcs();\n  if (acs.withActiveSpan) {\n    return acs.withActiveSpan(span, callback);\n  }\n\n  return withScope(scope => {\n    _setSpanForScope(scope, span || undefined);\n    return callback(scope);\n  });\n}\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nfunction suppressTracing(callback) {\n  const acs = getAcs();\n\n  if (acs.suppressTracing) {\n    return acs.suppressTracing(callback);\n  }\n\n  return withScope(scope => {\n    // Note: We do not wait for the callback to finish before we reset the metadata\n    // the reason for this is that otherwise, in the browser this can lead to very weird behavior\n    // as there is only a single top scope, if the callback takes longer to finish,\n    // other, unrelated spans may also be suppressed, which we do not want\n    // so instead, we only suppress tracing synchronoysly in the browser\n    scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: true });\n    const res = callback();\n    scope.setSDKProcessingMetadata({ [SUPPRESS_TRACING_KEY]: undefined });\n    return res;\n  });\n}\n\n/**\n * Starts a new trace for the duration of the provided callback. Spans started within the\n * callback will be part of the new trace instead of a potentially previously started trace.\n *\n * Important: Only use this function if you want to override the default trace lifetime and\n * propagation mechanism of the SDK for the duration and scope of the provided callback.\n * The newly created trace will also be the root of a new distributed trace, for example if\n * you make http requests within the callback.\n * This function might be useful if the operation you want to instrument should not be part\n * of a potentially ongoing trace.\n *\n * Default behavior:\n * - Server-side: A new trace is started for each incoming request.\n * - Browser: A new trace is started for each page our route. Navigating to a new route\n *            or page will automatically create a new trace.\n */\nfunction startNewTrace(callback) {\n  return withScope(scope => {\n    scope.setPropagationContext({\n      traceId: generateTraceId(),\n      sampleRand: safeMathRandom(),\n    });\n    DEBUG_BUILD && debug.log(`Starting a new trace with id ${scope.getPropagationContext().traceId}`);\n    return withActiveSpan(null, callback);\n  });\n}\n\nfunction createChildOrRootSpan({\n  parentSpan,\n  spanArguments,\n  forceTransaction,\n  scope,\n}\n\n) {\n  if (!hasSpansEnabled()) {\n    const span = new SentryNonRecordingSpan();\n\n    // If this is a root span, we ensure to freeze a DSC\n    // So we can have at least partial data here\n    if (forceTransaction || !parentSpan) {\n      const dsc = {\n        sampled: 'false',\n        sample_rate: '0',\n        transaction: spanArguments.name,\n        ...getDynamicSamplingContextFromSpan(span),\n      } ;\n      freezeDscOnSpan(span, dsc);\n    }\n\n    return span;\n  }\n\n  const isolationScope = getIsolationScope();\n\n  let span;\n  if (parentSpan && !forceTransaction) {\n    span = _startChildSpan(parentSpan, scope, spanArguments);\n    addChildSpanToSpan(parentSpan, span);\n  } else if (parentSpan) {\n    // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n    const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n    const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n    const parentSampled = spanIsSampled(parentSpan);\n\n    span = _startRootSpan(\n      {\n        traceId,\n        parentSpanId,\n        ...spanArguments,\n      },\n      scope,\n      parentSampled,\n    );\n\n    freezeDscOnSpan(span, dsc);\n  } else {\n    const {\n      traceId,\n      dsc,\n      parentSpanId,\n      sampled: parentSampled,\n    } = {\n      ...isolationScope.getPropagationContext(),\n      ...scope.getPropagationContext(),\n    };\n\n    span = _startRootSpan(\n      {\n        traceId,\n        parentSpanId,\n        ...spanArguments,\n      },\n      scope,\n      parentSampled,\n    );\n\n    if (dsc) {\n      freezeDscOnSpan(span, dsc);\n    }\n  }\n\n  logSpanStart(span);\n\n  setCapturedScopesOnSpan(span, scope, isolationScope);\n\n  return span;\n}\n\n/**\n * This converts StartSpanOptions to SentrySpanArguments.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n */\nfunction parseSentrySpanArguments(options) {\n  const exp = options.experimental || {};\n  const initialCtx = {\n    isStandalone: exp.standalone,\n    ...options,\n  };\n\n  if (options.startTime) {\n    const ctx = { ...initialCtx };\n    ctx.startTimestamp = spanTimeInputToSeconds(options.startTime);\n    delete ctx.startTime;\n    return ctx;\n  }\n\n  return initialCtx;\n}\n\nfunction getAcs() {\n  const carrier = getMainCarrier();\n  return getAsyncContextStrategy(carrier);\n}\n\nfunction _startRootSpan(spanArguments, scope, parentSampled) {\n  const client = getClient();\n  const options = client?.getOptions() || {};\n\n  const { name = '' } = spanArguments;\n\n  const mutableSpanSamplingData = { spanAttributes: { ...spanArguments.attributes }, spanName: name, parentSampled };\n\n  // we don't care about the decision for the moment; this is just a placeholder\n  client?.emit('beforeSampling', mutableSpanSamplingData, { decision: false });\n\n  // If hook consumers override the parentSampled flag, we will use that value instead of the actual one\n  const finalParentSampled = mutableSpanSamplingData.parentSampled ?? parentSampled;\n  const finalAttributes = mutableSpanSamplingData.spanAttributes;\n\n  const currentPropagationContext = scope.getPropagationContext();\n  const [sampled, sampleRate, localSampleRateWasApplied] = scope.getScopeData().sdkProcessingMetadata[\n    SUPPRESS_TRACING_KEY\n  ]\n    ? [false]\n    : sampleSpan(\n        options,\n        {\n          name,\n          parentSampled: finalParentSampled,\n          attributes: finalAttributes,\n          parentSampleRate: parseSampleRate(currentPropagationContext.dsc?.sample_rate),\n        },\n        currentPropagationContext.sampleRand,\n      );\n\n  const rootSpan = new SentrySpan({\n    ...spanArguments,\n    attributes: {\n      [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'custom',\n      [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]:\n        sampleRate !== undefined && localSampleRateWasApplied ? sampleRate : undefined,\n      ...finalAttributes,\n    },\n    sampled,\n  });\n\n  if (!sampled && client) {\n    DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n    client.recordDroppedEvent('sample_rate', 'transaction');\n  }\n\n  if (client) {\n    client.emit('spanStart', rootSpan);\n  }\n\n  return rootSpan;\n}\n\n/**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * This inherits the sampling decision from the parent span.\n */\nfunction _startChildSpan(parentSpan, scope, spanArguments) {\n  const { spanId, traceId } = parentSpan.spanContext();\n  const sampled = scope.getScopeData().sdkProcessingMetadata[SUPPRESS_TRACING_KEY] ? false : spanIsSampled(parentSpan);\n\n  const childSpan = sampled\n    ? new SentrySpan({\n        ...spanArguments,\n        parentSpanId: spanId,\n        traceId,\n        sampled,\n      })\n    : new SentryNonRecordingSpan({ traceId });\n\n  addChildSpanToSpan(parentSpan, childSpan);\n\n  const client = getClient();\n  if (client) {\n    client.emit('spanStart', childSpan);\n    // If it has an endTimestamp, it's already ended\n    if (spanArguments.endTimestamp) {\n      client.emit('spanEnd', childSpan);\n    }\n  }\n\n  return childSpan;\n}\n\nfunction getParentSpan(scope, customParentSpan) {\n  // always use the passed in span directly\n  if (customParentSpan) {\n    return customParentSpan ;\n  }\n\n  // This is different from `undefined` as it means the user explicitly wants no parent span\n  if (customParentSpan === null) {\n    return undefined;\n  }\n\n  const span = _getSpanForScope(scope) ;\n\n  if (!span) {\n    return undefined;\n  }\n\n  const client = getClient();\n  const options = client ? client.getOptions() : {};\n  if (options.parentSpanIsAlwaysRootSpan) {\n    return getRootSpan(span) ;\n  }\n\n  return span;\n}\n\nfunction getActiveSpanWrapper(parentSpan) {\n  return parentSpan !== undefined\n    ? (callback) => {\n        return withActiveSpan(parentSpan, callback);\n      }\n    : (callback) => callback();\n}\n\nexport { continueTrace, startInactiveSpan, startNewTrace, startSpan, startSpanManual, suppressTracing, withActiveSpan };\n//# sourceMappingURL=trace.js.map\n",
+    "import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/** SyncPromise internal states */\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n  return new SyncPromise(resolve => {\n    resolve(value);\n  });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n  return new SyncPromise((_, reject) => {\n    reject(reason);\n  });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n\n   constructor(executor) {\n    this._state = STATE_PENDING;\n    this._handlers = [];\n\n    this._runExecutor(executor);\n  }\n\n  /** @inheritdoc */\n   then(\n    onfulfilled,\n    onrejected,\n  ) {\n    return new SyncPromise((resolve, reject) => {\n      this._handlers.push([\n        false,\n        result => {\n          if (!onfulfilled) {\n            // TODO: ¯\\_(ツ)_/¯\n            // TODO: FIXME\n            resolve(result );\n          } else {\n            try {\n              resolve(onfulfilled(result));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n        reason => {\n          if (!onrejected) {\n            reject(reason);\n          } else {\n            try {\n              resolve(onrejected(reason));\n            } catch (e) {\n              reject(e);\n            }\n          }\n        },\n      ]);\n      this._executeHandlers();\n    });\n  }\n\n  /** @inheritdoc */\n   catch(\n    onrejected,\n  ) {\n    return this.then(val => val, onrejected);\n  }\n\n  /** @inheritdoc */\n   finally(onfinally) {\n    return new SyncPromise((resolve, reject) => {\n      let val;\n      let isRejected;\n\n      return this.then(\n        value => {\n          isRejected = false;\n          val = value;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n        reason => {\n          isRejected = true;\n          val = reason;\n          if (onfinally) {\n            onfinally();\n          }\n        },\n      ).then(() => {\n        if (isRejected) {\n          reject(val);\n          return;\n        }\n\n        resolve(val );\n      });\n    });\n  }\n\n  /** Excute the resolve/reject handlers. */\n   _executeHandlers() {\n    if (this._state === STATE_PENDING) {\n      return;\n    }\n\n    const cachedHandlers = this._handlers.slice();\n    this._handlers = [];\n\n    cachedHandlers.forEach(handler => {\n      if (handler[0]) {\n        return;\n      }\n\n      if (this._state === STATE_RESOLVED) {\n        handler[1](this._value );\n      }\n\n      if (this._state === STATE_REJECTED) {\n        handler[2](this._value);\n      }\n\n      handler[0] = true;\n    });\n  }\n\n  /** Run the executor for the SyncPromise. */\n   _runExecutor(executor) {\n    const setResult = (state, value) => {\n      if (this._state !== STATE_PENDING) {\n        return;\n      }\n\n      if (isThenable(value)) {\n        void (value ).then(resolve, reject);\n        return;\n      }\n\n      this._state = state;\n      this._value = value;\n\n      this._executeHandlers();\n    };\n\n    const resolve = (value) => {\n      setResult(STATE_RESOLVED, value);\n    };\n\n    const reject = (reason) => {\n      setResult(STATE_REJECTED, reason);\n    };\n\n    try {\n      executor(resolve, reject);\n    } catch (e) {\n      reject(e);\n    }\n  }\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n",
+    "import { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { resolvedSyncPromise, rejectedSyncPromise } from './utils/syncpromise.js';\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nfunction notifyEventProcessors(\n  processors,\n  event,\n  hint,\n  index = 0,\n) {\n  try {\n    const result = _notifyEventProcessors(event, hint, processors, index);\n    return isThenable(result) ? result : resolvedSyncPromise(result);\n  } catch (error) {\n    return rejectedSyncPromise(error);\n  }\n}\n\nfunction _notifyEventProcessors(\n  event,\n  hint,\n  processors,\n  index,\n) {\n  const processor = processors[index];\n\n  if (!event || !processor) {\n    return event;\n  }\n\n  const result = processor({ ...event }, hint);\n\n  DEBUG_BUILD && result === null && debug.log(`Event processor \"${processor.id || '?'}\" dropped event`);\n\n  if (isThenable(result)) {\n    return result.then(final => _notifyEventProcessors(final, hint, processors, index + 1));\n  }\n\n  return _notifyEventProcessors(result, hint, processors, index + 1);\n}\n\nexport { notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n",
+    "import { normalizeStackTracePath } from './stacktrace.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nlet parsedStackResults;\nlet lastSentryKeysCount;\nlet lastNativeKeysCount;\nlet cachedFilenameDebugIds;\n\n/**\n * Returns a map of filenames to debug identifiers.\n * Supports both proprietary _sentryDebugIds and native _debugIds (e.g., from Vercel) formats.\n */\nfunction getFilenameToDebugIdMap(stackParser) {\n  const sentryDebugIdMap = GLOBAL_OBJ._sentryDebugIds;\n  const nativeDebugIdMap = GLOBAL_OBJ._debugIds;\n\n  if (!sentryDebugIdMap && !nativeDebugIdMap) {\n    return {};\n  }\n\n  const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : [];\n  const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : [];\n\n  // If the count of registered globals hasn't changed since the last call, we\n  // can just return the cached result.\n  if (\n    cachedFilenameDebugIds &&\n    sentryDebugIdKeys.length === lastSentryKeysCount &&\n    nativeDebugIdKeys.length === lastNativeKeysCount\n  ) {\n    return cachedFilenameDebugIds;\n  }\n\n  lastSentryKeysCount = sentryDebugIdKeys.length;\n  lastNativeKeysCount = nativeDebugIdKeys.length;\n\n  // Build a map of filename -> debug_id from both sources\n  cachedFilenameDebugIds = {};\n\n  if (!parsedStackResults) {\n    parsedStackResults = {};\n  }\n\n  const processDebugIds = (debugIdKeys, debugIdMap) => {\n    for (const key of debugIdKeys) {\n      const debugId = debugIdMap[key];\n      const result = parsedStackResults?.[key];\n\n      if (result && cachedFilenameDebugIds && debugId) {\n        // Use cached filename but update with current debug ID\n        cachedFilenameDebugIds[result[0]] = debugId;\n        // Update cached result with new debug ID\n        if (parsedStackResults) {\n          parsedStackResults[key] = [result[0], debugId];\n        }\n      } else if (debugId) {\n        const parsedStack = stackParser(key);\n\n        for (let i = parsedStack.length - 1; i >= 0; i--) {\n          const stackFrame = parsedStack[i];\n          const filename = stackFrame?.filename;\n\n          if (filename && cachedFilenameDebugIds && parsedStackResults) {\n            cachedFilenameDebugIds[filename] = debugId;\n            parsedStackResults[key] = [filename, debugId];\n            break;\n          }\n        }\n      }\n    }\n  };\n\n  if (sentryDebugIdMap) {\n    processDebugIds(sentryDebugIdKeys, sentryDebugIdMap);\n  }\n\n  // Native _debugIds will override _sentryDebugIds if same file\n  if (nativeDebugIdMap) {\n    processDebugIds(nativeDebugIdKeys, nativeDebugIdMap);\n  }\n\n  return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nfunction getDebugImagesForResources(\n  stackParser,\n  resource_paths,\n) {\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n  if (!filenameDebugIdMap) {\n    return [];\n  }\n\n  const images = [];\n  for (const path of resource_paths) {\n    const normalizedPath = normalizeStackTracePath(path);\n    if (normalizedPath && filenameDebugIdMap[normalizedPath]) {\n      images.push({\n        type: 'sourcemap',\n        code_file: path,\n        debug_id: filenameDebugIdMap[normalizedPath],\n      });\n    }\n  }\n\n  return images;\n}\n\nexport { getDebugImagesForResources, getFilenameToDebugIdMap };\n//# sourceMappingURL=debug-ids.js.map\n",
+    "import { getGlobalScope } from '../currentScopes.js';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { merge } from './merge.js';\nimport { spanToTraceContext, getRootSpan, spanToJSON } from './spanUtils.js';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nfunction applyScopeDataToEvent(event, data) {\n  const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n  // Apply general data\n  applyDataToEvent(event, data);\n\n  // We want to set the trace context for normal events only if there isn't already\n  // a trace context on the event. There is a product feature in place where we link\n  // errors with transaction and it relies on that.\n  if (span) {\n    applySpanToEvent(event, span);\n  }\n\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nfunction mergeScopeData(data, mergeData) {\n  const {\n    extra,\n    tags,\n    attributes,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    transactionName,\n    span,\n  } = mergeData;\n\n  mergeAndOverwriteScopeData(data, 'extra', extra);\n  mergeAndOverwriteScopeData(data, 'tags', tags);\n  mergeAndOverwriteScopeData(data, 'attributes', attributes);\n  mergeAndOverwriteScopeData(data, 'user', user);\n  mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n  data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    data.transactionName = transactionName;\n  }\n\n  if (span) {\n    data.span = span;\n  }\n\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nfunction mergeAndOverwriteScopeData\n\n(data, prop, mergeVal) {\n  data[prop] = merge(data[prop], mergeVal, 1);\n}\n\n/**\n * Get the scope data for the current scope after merging with the\n * global scope and isolation scope.\n *\n * @param currentScope - The current scope.\n * @returns The scope data.\n */\nfunction getCombinedScopeData(isolationScope, currentScope) {\n  const scopeData = getGlobalScope().getScopeData();\n  isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData());\n  currentScope && mergeScopeData(scopeData, currentScope.getScopeData());\n  return scopeData;\n}\n\nfunction applyDataToEvent(event, data) {\n  const { extra, tags, user, contexts, level, transactionName } = data;\n\n  if (Object.keys(extra).length) {\n    event.extra = { ...extra, ...event.extra };\n  }\n\n  if (Object.keys(tags).length) {\n    event.tags = { ...tags, ...event.tags };\n  }\n\n  if (Object.keys(user).length) {\n    event.user = { ...user, ...event.user };\n  }\n\n  if (Object.keys(contexts).length) {\n    event.contexts = { ...contexts, ...event.contexts };\n  }\n\n  if (level) {\n    event.level = level;\n  }\n\n  // transaction events get their `transaction` from the root span name\n  if (transactionName && event.type !== 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\nfunction applyBreadcrumbsToEvent(event, breadcrumbs) {\n  const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event, sdkProcessingMetadata) {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata,\n  };\n}\n\nfunction applySpanToEvent(event, span) {\n  event.contexts = {\n    trace: spanToTraceContext(span),\n    ...event.contexts,\n  };\n\n  event.sdkProcessingMetadata = {\n    dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n    ...event.sdkProcessingMetadata,\n  };\n\n  const rootSpan = getRootSpan(span);\n  const transactionName = spanToJSON(rootSpan).description;\n  if (transactionName && !event.transaction && event.type === 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event, fingerprint) {\n  // Make sure it's an array first and we actually have something in place\n  event.fingerprint = event.fingerprint\n    ? Array.isArray(event.fingerprint)\n      ? event.fingerprint\n      : [event.fingerprint]\n    : [];\n\n  // If we have something on the scope, then merge it with event\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n\n  // If we have no data at all, remove empty array default\n  if (!event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n\nexport { applyScopeDataToEvent, getCombinedScopeData, mergeAndOverwriteScopeData, mergeScopeData };\n//# sourceMappingURL=scopeData.js.map\n",
+    "import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { notifyEventProcessors } from '../eventProcessors.js';\nimport { Scope } from '../scope.js';\nimport { getFilenameToDebugIdMap } from './debug-ids.js';\nimport { uuid4, addExceptionMechanism } from './misc.js';\nimport { normalize } from './normalize.js';\nimport { getCombinedScopeData, applyScopeDataToEvent } from './scopeData.js';\nimport { truncate } from './string.js';\nimport { resolvedSyncPromise } from './syncpromise.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * This type makes sure that we get either a CaptureContext, OR an EventHint.\n * It does not allow mixing them, which could lead to unexpected outcomes, e.g. this is disallowed:\n * { user: { id: '123' }, mechanism: { handled: false } }\n */\n\n/**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n * @hidden\n */\nfunction prepareEvent(\n  options,\n  event,\n  hint,\n  scope,\n  client,\n  isolationScope,\n) {\n  const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = options;\n  const prepared = {\n    ...event,\n    event_id: event.event_id || hint.event_id || uuid4(),\n    timestamp: event.timestamp || dateTimestampInSeconds(),\n  };\n  const integrations = hint.integrations || options.integrations.map(i => i.name);\n\n  applyClientOptions(prepared, options);\n  applyIntegrationsMetadata(prepared, integrations);\n\n  if (client) {\n    client.emit('applyFrameMetadata', event);\n  }\n\n  // Only put debug IDs onto frames for error events.\n  if (event.type === undefined) {\n    applyDebugIds(prepared, options.stackParser);\n  }\n\n  // If we have scope given to us, use it as the base for further modifications.\n  // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n  const finalScope = getFinalScope(scope, hint.captureContext);\n\n  if (hint.mechanism) {\n    addExceptionMechanism(prepared, hint.mechanism);\n  }\n\n  const clientEventProcessors = client ? client.getEventProcessors() : [];\n\n  // This should be the last thing called, since we want that\n  // {@link Scope.addEventProcessor} gets the finished prepared event.\n  // Merge scope data together\n  const data = getCombinedScopeData(isolationScope, finalScope);\n\n  const attachments = [...(hint.attachments || []), ...data.attachments];\n  if (attachments.length) {\n    hint.attachments = attachments;\n  }\n\n  applyScopeDataToEvent(prepared, data);\n\n  const eventProcessors = [\n    ...clientEventProcessors,\n    // Run scope event processors _after_ all other processors\n    ...data.eventProcessors,\n  ];\n\n  // Skip event processors for internal exceptions to prevent recursion\n  // oxlint-disable-next-line typescript/prefer-optional-chain\n  const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n  const result = isInternalException\n    ? resolvedSyncPromise(prepared)\n    : notifyEventProcessors(eventProcessors, prepared, hint);\n\n  return result.then(evt => {\n    if (evt) {\n      // We apply the debug_meta field only after all event processors have ran, so that if any event processors modified\n      // file names (e.g.the RewriteFrames integration) the filename -> debug ID relationship isn't destroyed.\n      // This should not cause any PII issues, since we're only moving data that is already on the event and not adding\n      // any new data\n      applyDebugMeta(evt);\n    }\n\n    if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n      return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n    }\n    return evt;\n  });\n}\n\n/**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n *\n * Only exported for tests.\n *\n * @param event event instance to be enhanced\n */\nfunction applyClientOptions(event, options) {\n  const { environment, release, dist, maxValueLength } = options;\n\n  // empty strings do not make sense for environment, release, and dist\n  // so we handle them the same as if they were not provided\n  event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n\n  if (!event.release && release) {\n    event.release = release;\n  }\n\n  if (!event.dist && dist) {\n    event.dist = dist;\n  }\n\n  const request = event.request;\n  if (request?.url && maxValueLength) {\n    request.url = truncate(request.url, maxValueLength);\n  }\n\n  if (maxValueLength) {\n    event.exception?.values?.forEach(exception => {\n      if (exception.value) {\n        // Truncates error messages\n        exception.value = truncate(exception.value, maxValueLength);\n      }\n    });\n  }\n}\n\n/**\n * Puts debug IDs into the stack frames of an error event.\n */\nfunction applyDebugIds(event, stackParser) {\n  // Build a map of filename -> debug_id\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n  event.exception?.values?.forEach(exception => {\n    exception.stacktrace?.frames?.forEach(frame => {\n      if (frame.filename) {\n        frame.debug_id = filenameDebugIdMap[frame.filename];\n      }\n    });\n  });\n}\n\n/**\n * Moves debug IDs from the stack frames of an error event into the debug_meta field.\n */\nfunction applyDebugMeta(event) {\n  // Extract debug IDs and filenames from the stack frames on the event.\n  const filenameDebugIdMap = {};\n  event.exception?.values?.forEach(exception => {\n    exception.stacktrace?.frames?.forEach(frame => {\n      if (frame.debug_id) {\n        if (frame.abs_path) {\n          filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n        } else if (frame.filename) {\n          filenameDebugIdMap[frame.filename] = frame.debug_id;\n        }\n        delete frame.debug_id;\n      }\n    });\n  });\n\n  if (Object.keys(filenameDebugIdMap).length === 0) {\n    return;\n  }\n\n  // Fill debug_meta information\n  event.debug_meta = event.debug_meta || {};\n  event.debug_meta.images = event.debug_meta.images || [];\n  const images = event.debug_meta.images;\n  Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n    images.push({\n      type: 'sourcemap',\n      code_file: filename,\n      debug_id,\n    });\n  });\n}\n\n/**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\nfunction applyIntegrationsMetadata(event, integrationNames) {\n  if (integrationNames.length > 0) {\n    event.sdk = event.sdk || {};\n    event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationNames];\n  }\n}\n\n/**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\nfunction normalizeEvent(event, depth, maxBreadth) {\n  if (!event) {\n    return null;\n  }\n\n  const normalized = {\n    ...event,\n    ...(event.breadcrumbs && {\n      breadcrumbs: event.breadcrumbs.map(b => ({\n        ...b,\n        ...(b.data && {\n          data: normalize(b.data, depth, maxBreadth),\n        }),\n      })),\n    }),\n    ...(event.user && {\n      user: normalize(event.user, depth, maxBreadth),\n    }),\n    ...(event.contexts && {\n      contexts: normalize(event.contexts, depth, maxBreadth),\n    }),\n    ...(event.extra && {\n      extra: normalize(event.extra, depth, maxBreadth),\n    }),\n  };\n\n  // event.contexts.trace stores information about a Transaction. Similarly,\n  // event.spans[] stores information about child Spans. Given that a\n  // Transaction is conceptually a Span, normalization should apply to both\n  // Transactions and Spans consistently.\n  // For now the decision is to skip normalization of Transactions and Spans,\n  // so this block overwrites the normalized event to add back the original\n  // Transaction information prior to normalization.\n  if (event.contexts?.trace && normalized.contexts) {\n    normalized.contexts.trace = event.contexts.trace;\n\n    // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n    if (event.contexts.trace.data) {\n      normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n    }\n  }\n\n  // event.spans[].data may contain circular/dangerous data so we need to normalize it\n  if (event.spans) {\n    normalized.spans = event.spans.map(span => {\n      return {\n        ...span,\n        ...(span.data && {\n          data: normalize(span.data, depth, maxBreadth),\n        }),\n      };\n    });\n  }\n\n  // event.contexts.flags (FeatureFlagContext) stores context for our feature\n  // flag integrations. It has a greater nesting depth than our other typed\n  // Contexts, so we re-normalize with a fixed depth of 3 here. We do not want\n  // to skip this in case of conflicting, user-provided context.\n  if (event.contexts?.flags && normalized.contexts) {\n    normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n  }\n\n  return normalized;\n}\n\nfunction getFinalScope(scope, captureContext) {\n  if (!captureContext) {\n    return scope;\n  }\n\n  const finalScope = scope ? scope.clone() : new Scope();\n  finalScope.update(captureContext);\n  return finalScope;\n}\n\n/**\n * Parse either an `EventHint` directly, or convert a `CaptureContext` to an `EventHint`.\n * This is used to allow to update method signatures that used to accept a `CaptureContext` but should now accept an `EventHint`.\n */\nfunction parseEventHintOrCaptureContext(\n  hint,\n) {\n  if (!hint) {\n    return undefined;\n  }\n\n  // If you pass a Scope or `() => Scope` as CaptureContext, we just return this as captureContext\n  if (hintIsScopeOrFunction(hint)) {\n    return { captureContext: hint };\n  }\n\n  if (hintIsScopeContext(hint)) {\n    return {\n      captureContext: hint,\n    };\n  }\n\n  return hint;\n}\n\nfunction hintIsScopeOrFunction(hint) {\n  return hint instanceof Scope || typeof hint === 'function';\n}\n\nconst captureContextKeys = [\n  'user',\n  'level',\n  'extra',\n  'contexts',\n  'tags',\n  'fingerprint',\n  'propagationContext',\n] ;\n\nfunction hintIsScopeContext(hint) {\n  return Object.keys(hint).some(key => captureContextKeys.includes(key ));\n}\n\nexport { applyClientOptions, applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n",
+    "import { getIsolationScope, getCurrentScope, getClient, withIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\nimport { startNewTrace } from './tracing/trace.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { uuid4 } from './utils/misc.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\nimport { getCombinedScopeData } from './utils/scopeData.js';\nimport { timestampInSeconds } from './utils/time.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception The exception to capture.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured Sentry event.\n */\nfunction captureException(exception, hint) {\n  return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param captureContext Define the level of the message or pass in additional data to attach to the message.\n * @returns the id of the captured message.\n */\nfunction captureMessage(message, captureContext) {\n  // This is necessary to provide explicit scopes upgrade, without changing the original\n  // arity of the `captureMessage(message, level)` method.\n  const level = typeof captureContext === 'string' ? captureContext : undefined;\n  const hint = typeof captureContext !== 'string' ? { captureContext } : undefined;\n  return getCurrentScope().captureMessage(message, level, hint);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @param hint Optional additional data to attach to the Sentry event.\n * @returns the id of the captured event.\n */\nfunction captureEvent(event, hint) {\n  return getCurrentScope().captureEvent(event, hint);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\nfunction setContext(name, context) {\n  getIsolationScope().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n  getIsolationScope().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n  getIsolationScope().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n  getIsolationScope().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n  getIsolationScope().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n  getIsolationScope().setUser(user);\n}\n\n/**\n * Sets the conversation ID for the current isolation scope.\n *\n * @param conversationId The conversation ID to set. Pass `null` or `undefined` to unset the conversation ID.\n */\nfunction setConversationId(conversationId) {\n  getIsolationScope().setConversationId(conversationId);\n}\n\n/**\n * The last error event id of the isolation scope.\n *\n * Warning: This function really returns the last recorded error event id on the current\n * isolation scope. If you call this function after handling a certain error and another error\n * is captured in between, the last one is returned instead of the one you might expect.\n * Also, ids of events that were never sent to Sentry (for example because\n * they were dropped in `beforeSend`) could be returned.\n *\n * @returns The last event id of the isolation scope.\n */\nfunction lastEventId() {\n  return getIsolationScope().lastEventId();\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n  const scope = getCurrentScope();\n  const client = getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn('Cannot capture check-in. No client defined.');\n  } else if (!client.captureCheckIn) {\n    DEBUG_BUILD && debug.warn('Cannot capture check-in. Client does not support sending check-ins.');\n  } else {\n    return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n  }\n\n  return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param callback Callback to be monitored\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction withMonitor(\n  monitorSlug,\n  callback,\n  upsertMonitorConfig,\n) {\n  function runCallback() {\n    const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n    const now = timestampInSeconds();\n\n    function finishCheckIn(status) {\n      captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n    }\n    // Default behavior without isolateTrace\n    let maybePromiseResult;\n    try {\n      maybePromiseResult = callback();\n    } catch (e) {\n      finishCheckIn('error');\n      throw e;\n    }\n\n    if (isThenable(maybePromiseResult)) {\n      return maybePromiseResult.then(\n        r => {\n          finishCheckIn('ok');\n          return r;\n        },\n        e => {\n          finishCheckIn('error');\n          throw e;\n        },\n      ) ;\n    }\n    finishCheckIn('ok');\n\n    return maybePromiseResult;\n  }\n\n  return withIsolationScope(() => (upsertMonitorConfig?.isolateTrace ? startNewTrace(runCallback) : runCallback()));\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function flush(timeout) {\n  const client = getClient();\n  if (client) {\n    return client.flush(timeout);\n  }\n  DEBUG_BUILD && debug.warn('Cannot flush events. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function close(timeout) {\n  const client = getClient();\n  if (client) {\n    return client.close(timeout);\n  }\n  DEBUG_BUILD && debug.warn('Cannot flush events and disable SDK. No client defined.');\n  return Promise.resolve(false);\n}\n\n/**\n * Returns true if Sentry has been properly initialized.\n */\nfunction isInitialized() {\n  return !!getClient();\n}\n\n/** If the SDK is initialized & enabled. */\nfunction isEnabled() {\n  const client = getClient();\n  return client?.getOptions().enabled !== false && !!client?.getTransport();\n}\n\n/**\n * Add an event processor.\n * This will be added to the current isolation scope, ensuring any event that is processed in the current execution\n * context will have the processor applied.\n */\nfunction addEventProcessor(callback) {\n  getIsolationScope().addEventProcessor(callback);\n}\n\n/**\n * Start a session on the current isolation scope.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns the new active session\n */\nfunction startSession(context) {\n  const isolationScope = getIsolationScope();\n\n  const { user } = getCombinedScopeData(isolationScope, getCurrentScope());\n\n  // Will fetch userAgent if called from browser sdk\n  const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n  const session = makeSession({\n    user,\n    ...(userAgent && { userAgent }),\n    ...context,\n  });\n\n  // End existing session if there's one\n  const currentSession = isolationScope.getSession();\n  if (currentSession?.status === 'ok') {\n    updateSession(currentSession, { status: 'exited' });\n  }\n\n  endSession();\n\n  // Afterwards we set the new session on the scope\n  isolationScope.setSession(session);\n\n  return session;\n}\n\n/**\n * End the session on the current isolation scope.\n */\nfunction endSession() {\n  const isolationScope = getIsolationScope();\n  const currentScope = getCurrentScope();\n\n  const session = currentScope.getSession() || isolationScope.getSession();\n  if (session) {\n    closeSession(session);\n  }\n  _sendSessionUpdate();\n\n  // the session is over; take it off of the scope\n  isolationScope.setSession();\n}\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate() {\n  const isolationScope = getIsolationScope();\n  const client = getClient();\n  const session = isolationScope.getSession();\n  if (session && client) {\n    client.captureSession(session);\n  }\n}\n\n/**\n * Sends the current session on the scope to Sentry\n *\n * @param end If set the session will be marked as exited and removed from the scope.\n *            Defaults to `false`.\n */\nfunction captureSession(end = false) {\n  // both send the update and pull the session from the scope\n  if (end) {\n    endSession();\n    return;\n  }\n\n  // only send the update\n  _sendSessionUpdate();\n}\n\nexport { addEventProcessor, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, startSession, withMonitor };\n//# sourceMappingURL=exports.js.map\n",
+    "import { dsnToString } from './utils/dsn.js';\nimport { createEnvelope } from './utils/envelope.js';\n\n/**\n * Create envelope from check in item.\n */\nfunction createCheckInEnvelope(\n  checkIn,\n  dynamicSamplingContext,\n  metadata,\n  tunnel,\n  dsn,\n) {\n  const headers = {\n    sent_at: new Date().toISOString(),\n  };\n\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  if (dynamicSamplingContext) {\n    headers.trace = dynamicSamplingContext ;\n  }\n\n  const item = createCheckInEnvelopeItem(checkIn);\n  return createEnvelope(headers, [item]);\n}\n\nfunction createCheckInEnvelopeItem(checkIn) {\n  const checkInHeaders = {\n    type: 'check_in',\n  };\n  return [checkInHeaders, checkIn];\n}\n\nexport { createCheckInEnvelope };\n//# sourceMappingURL=checkin.js.map\n",
+    "import { makeDsn, dsnToString } from './utils/dsn.js';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n  const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n  const port = dsn.port ? `:${dsn.port}` : '';\n  return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n  return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n  const params = {\n    sentry_version: SENTRY_API_VERSION,\n  };\n\n  if (dsn.publicKey) {\n    // We send only the minimum set of required information. See\n    // https://github.com/getsentry/sentry-javascript/issues/2572.\n    params.sentry_key = dsn.publicKey;\n  }\n\n  if (sdkInfo) {\n    params.sentry_client = `${sdkInfo.name}/${sdkInfo.version}`;\n  }\n\n  return new URLSearchParams(params).toString();\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel, sdkInfo) {\n  return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(dsnLike, dialogOptions) {\n  const dsn = makeDsn(dsnLike);\n  if (!dsn) {\n    return '';\n  }\n\n  const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n  let encodedOptions = `dsn=${dsnToString(dsn)}`;\n  for (const key in dialogOptions) {\n    if (key === 'dsn') {\n      continue;\n    }\n\n    if (key === 'onClose') {\n      continue;\n    }\n\n    if (key === 'user') {\n      const user = dialogOptions.user;\n      if (!user) {\n        continue;\n      }\n      if (user.name) {\n        encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n      }\n      if (user.email) {\n        encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n      }\n    } else {\n      encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n    }\n  }\n\n  return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n",
+    "import { getClient } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\n\nconst installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * Remove duplicates from the given array, preferring the last instance of any duplicate. Not guaranteed to\n * preserve the order of integrations in the array.\n *\n * @private\n */\nfunction filterDuplicates(integrations) {\n  const integrationsByName = {};\n\n  integrations.forEach((currentInstance) => {\n    const { name } = currentInstance;\n\n    const existingInstance = integrationsByName[name];\n\n    // We want integrations later in the array to overwrite earlier ones of the same type, except that we never want a\n    // default instance to overwrite an existing user instance\n    if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) {\n      return;\n    }\n\n    integrationsByName[name] = currentInstance;\n  });\n\n  return Object.values(integrationsByName);\n}\n\n/** Gets integrations to install */\nfunction getIntegrationsToSetup(\n  options,\n) {\n  const defaultIntegrations = options.defaultIntegrations || [];\n  const userIntegrations = options.integrations;\n\n  // We flag default instances, so that later we can tell them apart from any user-created instances of the same class\n  defaultIntegrations.forEach((integration) => {\n    integration.isDefaultInstance = true;\n  });\n\n  let integrations;\n\n  if (Array.isArray(userIntegrations)) {\n    integrations = [...defaultIntegrations, ...userIntegrations];\n  } else if (typeof userIntegrations === 'function') {\n    const resolvedUserIntegrations = userIntegrations(defaultIntegrations);\n    integrations = Array.isArray(resolvedUserIntegrations) ? resolvedUserIntegrations : [resolvedUserIntegrations];\n  } else {\n    integrations = defaultIntegrations;\n  }\n\n  return filterDuplicates(integrations);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(client, integrations) {\n  const integrationIndex = {};\n\n  integrations.forEach((integration) => {\n    // guard against empty provided integrations\n    if (integration) {\n      setupIntegration(client, integration, integrationIndex);\n    }\n  });\n\n  return integrationIndex;\n}\n\n/**\n * Execute the `afterAllSetup` hooks of the given integrations.\n */\nfunction afterSetupIntegrations(client, integrations) {\n  for (const integration of integrations) {\n    // guard against empty provided integrations\n    if (integration?.afterAllSetup) {\n      integration.afterAllSetup(client);\n    }\n  }\n}\n\n/** Setup a single integration.  */\nfunction setupIntegration(client, integration, integrationIndex) {\n  if (integrationIndex[integration.name]) {\n    DEBUG_BUILD && debug.log(`Integration skipped because it was already installed: ${integration.name}`);\n    return;\n  }\n  integrationIndex[integration.name] = integration;\n\n  // `setupOnce` is only called the first time\n  if (!installedIntegrations.includes(integration.name) && typeof integration.setupOnce === 'function') {\n    integration.setupOnce();\n    installedIntegrations.push(integration.name);\n  }\n\n  // `setup` is run for each client\n  if (integration.setup && typeof integration.setup === 'function') {\n    integration.setup(client);\n  }\n\n  if (typeof integration.preprocessEvent === 'function') {\n    const callback = integration.preprocessEvent.bind(integration) ;\n    client.on('preprocessEvent', (event, hint) => callback(event, hint, client));\n  }\n\n  if (typeof integration.processEvent === 'function') {\n    const callback = integration.processEvent.bind(integration) ;\n\n    const processor = Object.assign((event, hint) => callback(event, hint, client), {\n      id: integration.name,\n    });\n\n    client.addEventProcessor(processor);\n  }\n\n  DEBUG_BUILD && debug.log(`Integration installed: ${integration.name}`);\n}\n\n/** Add an integration to the current scope's client. */\nfunction addIntegration(integration) {\n  const client = getClient();\n\n  if (!client) {\n    DEBUG_BUILD && debug.warn(`Cannot add integration \"${integration.name}\" because no SDK Client is available.`);\n    return;\n  }\n\n  client.addIntegration(integration);\n}\n\n/**\n * Define an integration function that can be used to create an integration instance.\n * Note that this by design hides the implementation details of the integration, as they are considered internal.\n */\nfunction defineIntegration(fn) {\n  return fn;\n}\n\nexport { addIntegration, afterSetupIntegrations, defineIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n",
+    "/**\n * Type-guard: The attribute object has the shape the official attribute object (value, type, unit).\n * https://develop.sentry.dev/sdk/telemetry/scopes/#setting-attributes\n */\nfunction isAttributeObject(maybeObj) {\n  return (\n    typeof maybeObj === 'object' &&\n    maybeObj != null &&\n    !Array.isArray(maybeObj) &&\n    Object.keys(maybeObj).includes('value')\n  );\n}\n\n/**\n * Converts an attribute value to a typed attribute value.\n *\n * For now, we intentionally only support primitive values and attribute objects with primitive values.\n * If @param useFallback is true, we stringify non-primitive values to a string attribute value. Otherwise\n * we return `undefined` for unsupported values.\n *\n * @param value - The value of the passed attribute.\n * @param useFallback - If true, unsupported values will be stringified to a string attribute value.\n *                      Defaults to false. In this case, `undefined` is returned for unsupported values.\n * @returns The typed attribute.\n */\nfunction attributeValueToTypedAttributeValue(\n  rawValue,\n  useFallback,\n) {\n  const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: undefined };\n  const attributeValue = getTypedAttributeValue(value);\n  const checkedUnit = unit && typeof unit === 'string' ? { unit } : {};\n  if (attributeValue) {\n    return { ...attributeValue, ...checkedUnit };\n  }\n\n  if (!useFallback || (useFallback === 'skip-undefined' && value === undefined)) {\n    return;\n  }\n\n  // Fallback: stringify the value\n  // TODO(v11): be smarter here and use String constructor if stringify fails\n  // (this is a breaking change for already existing attribute values)\n  let stringValue = '';\n  try {\n    stringValue = JSON.stringify(value) ?? '';\n  } catch {\n    // Do nothing\n  }\n  return {\n    value: stringValue,\n    type: 'string',\n    ...checkedUnit,\n  };\n}\n\n/**\n * Serializes raw attributes to typed attributes as expected in our envelopes.\n *\n * @param attributes The raw attributes to serialize.\n * @param fallback   If true, unsupported values will be stringified to a string attribute value.\n *                   Defaults to false. In this case, `undefined` is returned for unsupported values.\n *\n * @returns The serialized attributes.\n */\nfunction serializeAttributes(\n  attributes,\n  fallback = false,\n) {\n  const serializedAttributes = {};\n  for (const [key, value] of Object.entries(attributes ?? {})) {\n    const typedValue = attributeValueToTypedAttributeValue(value, fallback);\n    if (typedValue) {\n      serializedAttributes[key] = typedValue;\n    }\n  }\n  return serializedAttributes;\n}\n\n/**\n * NOTE: We intentionally do not return anything for non-primitive values:\n *  - array support will come in the future but if we stringify arrays now,\n *    sending arrays (unstringified) later will be a subtle breaking change.\n *  - Objects are not supported yet and product support is still TBD.\n *  - We still keep the type signature for TypedAttributeValue wider to avoid a\n *    breaking change once we add support for non-primitive values.\n *  - Once we go back to supporting arrays and stringifying all other values,\n *    we already implemented the serialization logic here:\n *    https://github.com/getsentry/sentry-javascript/pull/18165\n */\nfunction getTypedAttributeValue(value) {\n  const primitiveType =\n    typeof value === 'string'\n      ? 'string'\n      : typeof value === 'boolean'\n        ? 'boolean'\n        : typeof value === 'number' && !Number.isNaN(value)\n          ? Number.isInteger(value)\n            ? 'integer'\n            : 'double'\n          : null;\n  if (primitiveType) {\n    // @ts-expect-error - TS complains because {@link TypedAttributeValue} is strictly typed to\n    // avoid setting the wrong `type` on the attribute value.\n    // In this case, getPrimitiveType already does the check but TS doesn't know that.\n    // The \"clean\" alternative is to return an object per `typeof value` case\n    // but that would require more bundle size\n    // Therefore, we ignore it.\n    return { value, type: primitiveType };\n  }\n}\n\nexport { attributeValueToTypedAttributeValue, isAttributeObject, serializeAttributes };\n//# sourceMappingURL=attributes.js.map\n",
+    "const SEQUENCE_ATTR_KEY = 'sentry.timestamp.sequence';\n\nlet _sequenceNumber = 0;\nlet _previousTimestampMs;\n\n/**\n * Returns the `sentry.timestamp.sequence` attribute entry for a serialized telemetry item.\n *\n * The sequence number starts at 0 and increments by 1 for each item captured.\n * It resets to 0 when the current item's integer millisecond timestamp differs\n * from the previous item's integer millisecond timestamp.\n *\n * @param timestampInSeconds - The timestamp of the telemetry item in seconds.\n */\nfunction getSequenceAttribute(timestampInSeconds)\n\n {\n  const nowMs = Math.floor(timestampInSeconds * 1000);\n\n  if (_previousTimestampMs !== undefined && nowMs !== _previousTimestampMs) {\n    _sequenceNumber = 0;\n  }\n\n  const value = _sequenceNumber;\n  _sequenceNumber++;\n  _previousTimestampMs = nowMs;\n\n  return {\n    key: SEQUENCE_ATTR_KEY,\n    value: { value, type: 'integer' },\n  };\n}\n\nexport { getSequenceAttribute };\n//# sourceMappingURL=timestampSequence.js.map\n",
+    "import { withScope, getTraceContextFromScope } from '../currentScopes.js';\nimport { getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromScope } from '../tracing/dynamicSamplingContext.js';\nimport { getActiveSpan, spanToTraceContext } from './spanUtils.js';\n\n/** Extract trace information from scope */\nfunction _getTraceInfoFromScope(\n  client,\n  scope,\n) {\n  if (!scope) {\n    return [undefined, undefined];\n  }\n\n  return withScope(scope, () => {\n    const span = getActiveSpan();\n    const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n    const dynamicSamplingContext = span\n      ? getDynamicSamplingContextFromSpan(span)\n      : getDynamicSamplingContextFromScope(client, scope);\n    return [dynamicSamplingContext, traceContext];\n  });\n}\n\nexport { _getTraceInfoFromScope };\n//# sourceMappingURL=trace-info.js.map\n",
+    "import { dsnToString } from '../utils/dsn.js';\nimport { createEnvelope } from '../utils/envelope.js';\n\n/**\n * Creates a log container envelope item for a list of logs.\n *\n * @param items - The logs to include in the envelope.\n * @returns The created log container envelope item.\n */\nfunction createLogContainerEnvelopeItem(items) {\n  return [\n    {\n      type: 'log',\n      item_count: items.length,\n      content_type: 'application/vnd.sentry.items.log+json',\n    },\n    {\n      items,\n    },\n  ];\n}\n\n/**\n * Creates an envelope for a list of logs.\n *\n * Logs from multiple traces can be included in the same envelope.\n *\n * @param logs - The logs to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nfunction createLogEnvelope(\n  logs,\n  metadata,\n  tunnel,\n  dsn,\n) {\n  const headers = {};\n\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  return createEnvelope(headers, [createLogContainerEnvelopeItem(logs)]);\n}\n\nexport { createLogContainerEnvelopeItem, createLogEnvelope };\n//# sourceMappingURL=envelope.js.map\n",
+    "import { serializeAttributes } from '../attributes.js';\nimport { getGlobalSingleton } from '../carrier.js';\nimport { getClient, getIsolationScope, getCurrentScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { debug, consoleSandbox } from '../utils/debug-logger.js';\nimport { isParameterizedString } from '../utils/is.js';\nimport { getCombinedScopeData } from '../utils/scopeData.js';\nimport { _getSpanForScope } from '../utils/spanOnScope.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { getSequenceAttribute } from '../utils/timestampSequence.js';\nimport { _getTraceInfoFromScope } from '../utils/trace-info.js';\nimport { SEVERITY_TEXT_TO_SEVERITY_NUMBER } from './constants.js';\nimport { createLogEnvelope } from './envelope.js';\n\nconst MAX_LOG_BUFFER_SIZE = 100;\n\n/**\n * Sets a log attribute if the value exists and the attribute key is not already present.\n *\n * @param logAttributes - The log attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setLogAttribute(\n  logAttributes,\n  key,\n  value,\n  setEvenIfPresent = true,\n) {\n  if (value && (!logAttributes[key] || setEvenIfPresent)) {\n    logAttributes[key] = value;\n  }\n}\n\n/**\n * Captures a serialized log event and adds it to the log buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedLog - The serialized log event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureSerializedLog(client, serializedLog) {\n  const bufferMap = _getBufferMap();\n  const logBuffer = _INTERNAL_getLogBuffer(client);\n\n  if (logBuffer === undefined) {\n    bufferMap.set(client, [serializedLog]);\n  } else {\n    if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {\n      _INTERNAL_flushLogsBuffer(client, logBuffer);\n      bufferMap.set(client, [serializedLog]);\n    } else {\n      bufferMap.set(client, [...logBuffer, serializedLog]);\n    }\n  }\n}\n\n/**\n * Captures a log event and sends it to Sentry.\n *\n * @param log - The log event to capture.\n * @param scope - A scope. Uses the current scope if not provided.\n * @param client - A client. Uses the current client if not provided.\n * @param captureSerializedLog - A function to capture the serialized log.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureLog(\n  beforeLog,\n  currentScope = getCurrentScope(),\n  captureSerializedLog = _INTERNAL_captureSerializedLog,\n) {\n  const client = currentScope?.getClient() ?? getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn('No client available to capture log.');\n    return;\n  }\n\n  const { release, environment, enableLogs = false, beforeSendLog } = client.getOptions();\n  if (!enableLogs) {\n    DEBUG_BUILD && debug.warn('logging option not enabled, log will not be captured.');\n    return;\n  }\n\n  const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n\n  const processedLogAttributes = {\n    ...beforeLog.attributes,\n  };\n\n  const {\n    user: { id, email, username },\n    attributes: scopeAttributes = {},\n  } = getCombinedScopeData(getIsolationScope(), currentScope);\n\n  setLogAttribute(processedLogAttributes, 'user.id', id, false);\n  setLogAttribute(processedLogAttributes, 'user.email', email, false);\n  setLogAttribute(processedLogAttributes, 'user.name', username, false);\n\n  setLogAttribute(processedLogAttributes, 'sentry.release', release);\n  setLogAttribute(processedLogAttributes, 'sentry.environment', environment);\n\n  const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n  setLogAttribute(processedLogAttributes, 'sentry.sdk.name', name);\n  setLogAttribute(processedLogAttributes, 'sentry.sdk.version', version);\n\n  const replay = client.getIntegrationByName\n\n('Replay');\n\n  const replayId = replay?.getReplayId(true);\n  setLogAttribute(processedLogAttributes, 'sentry.replay_id', replayId);\n\n  if (replayId && replay?.getRecordingMode() === 'buffer') {\n    // We send this so we can identify cases where the replayId is attached but the replay itself might not have been sent to Sentry\n    setLogAttribute(processedLogAttributes, 'sentry._internal.replay_is_buffering', true);\n  }\n\n  const beforeLogMessage = beforeLog.message;\n  if (isParameterizedString(beforeLogMessage)) {\n    const { __sentry_template_string__, __sentry_template_values__ = [] } = beforeLogMessage;\n    if (__sentry_template_values__?.length) {\n      processedLogAttributes['sentry.message.template'] = __sentry_template_string__;\n    }\n    __sentry_template_values__.forEach((param, index) => {\n      processedLogAttributes[`sentry.message.parameter.${index}`] = param;\n    });\n  }\n\n  const span = _getSpanForScope(currentScope);\n  // Add the parent span ID to the log attributes for trace context\n  setLogAttribute(processedLogAttributes, 'sentry.trace.parent_span_id', span?.spanContext().spanId);\n\n  const processedLog = { ...beforeLog, attributes: processedLogAttributes };\n\n  client.emit('beforeCaptureLog', processedLog);\n\n  // We need to wrap this in `consoleSandbox` to avoid recursive calls to `beforeSendLog`\n  const log = beforeSendLog ? consoleSandbox(() => beforeSendLog(processedLog)) : processedLog;\n  if (!log) {\n    client.recordDroppedEvent('before_send', 'log_item', 1);\n    DEBUG_BUILD && debug.warn('beforeSendLog returned null, log will not be captured.');\n    return;\n  }\n\n  const { level, message, attributes: logAttributes = {}, severityNumber } = log;\n\n  const timestamp = timestampInSeconds();\n  const sequenceAttr = getSequenceAttribute(timestamp);\n\n  const serializedLog = {\n    timestamp,\n    level,\n    body: message,\n    trace_id: traceContext?.trace_id,\n    severity_number: severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER[level],\n    attributes: {\n      ...serializeAttributes(scopeAttributes),\n      ...serializeAttributes(logAttributes, true),\n      [sequenceAttr.key]: sequenceAttr.value,\n    },\n  };\n\n  captureSerializedLog(client, serializedLog);\n\n  client.emit('afterCaptureLog', log);\n}\n\n/**\n * Flushes the logs buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeLogBuffer - A log buffer. Uses the log buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_flushLogsBuffer(client, maybeLogBuffer) {\n  const logBuffer = maybeLogBuffer ?? _INTERNAL_getLogBuffer(client) ?? [];\n  if (logBuffer.length === 0) {\n    return;\n  }\n\n  const clientOptions = client.getOptions();\n  const envelope = createLogEnvelope(logBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n  // Clear the log buffer after envelopes have been constructed.\n  _getBufferMap().set(client, []);\n\n  client.emit('flushLogs');\n\n  // sendEnvelope should not throw\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the log buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the log buffer for.\n * @returns The log buffer for the given client.\n */\nfunction _INTERNAL_getLogBuffer(client) {\n  return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap() {\n  // The reference to the Client <> LogBuffer map is stored on the carrier to ensure it's always the same\n  return getGlobalSingleton('clientToLogBufferMap', () => new WeakMap());\n}\n\nexport { _INTERNAL_captureLog, _INTERNAL_captureSerializedLog, _INTERNAL_flushLogsBuffer, _INTERNAL_getLogBuffer };\n//# sourceMappingURL=internal.js.map\n",
+    "import { dsnToString } from '../utils/dsn.js';\nimport { createEnvelope } from '../utils/envelope.js';\n\n/**\n * Creates a metric container envelope item for a list of metrics.\n *\n * @param items - The metrics to include in the envelope.\n * @returns The created metric container envelope item.\n */\nfunction createMetricContainerEnvelopeItem(items) {\n  return [\n    {\n      type: 'trace_metric',\n      item_count: items.length,\n      content_type: 'application/vnd.sentry.items.trace-metric+json',\n    } ,\n    {\n      items,\n    },\n  ];\n}\n\n/**\n * Creates an envelope for a list of metrics.\n *\n * Metrics from multiple traces can be included in the same envelope.\n *\n * @param metrics - The metrics to include in the envelope.\n * @param metadata - The metadata to include in the envelope.\n * @param tunnel - The tunnel to include in the envelope.\n * @param dsn - The DSN to include in the envelope.\n * @returns The created envelope.\n */\nfunction createMetricEnvelope(\n  metrics,\n  metadata,\n  tunnel,\n  dsn,\n) {\n  const headers = {};\n\n  if (metadata?.sdk) {\n    headers.sdk = {\n      name: metadata.sdk.name,\n      version: metadata.sdk.version,\n    };\n  }\n\n  if (!!tunnel && !!dsn) {\n    headers.dsn = dsnToString(dsn);\n  }\n\n  return createEnvelope(headers, [createMetricContainerEnvelopeItem(metrics)]);\n}\n\nexport { createMetricContainerEnvelopeItem, createMetricEnvelope };\n//# sourceMappingURL=envelope.js.map\n",
+    "import { serializeAttributes } from '../attributes.js';\nimport { getGlobalSingleton } from '../carrier.js';\nimport { getCurrentScope, getClient, getIsolationScope } from '../currentScopes.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getCombinedScopeData } from '../utils/scopeData.js';\nimport { _getSpanForScope } from '../utils/spanOnScope.js';\nimport { timestampInSeconds } from '../utils/time.js';\nimport { getSequenceAttribute } from '../utils/timestampSequence.js';\nimport { _getTraceInfoFromScope } from '../utils/trace-info.js';\nimport { createMetricEnvelope } from './envelope.js';\n\nconst MAX_METRIC_BUFFER_SIZE = 1000;\n\n/**\n * Sets a metric attribute if the value exists and the attribute key is not already present.\n *\n * @param metricAttributes - The metric attributes object to modify.\n * @param key - The attribute key to set.\n * @param value - The value to set (only sets if truthy and key not present).\n * @param setEvenIfPresent - Whether to set the attribute if it is present. Defaults to true.\n */\nfunction setMetricAttribute(\n  metricAttributes,\n  key,\n  value,\n  setEvenIfPresent = true,\n) {\n  if (value && (setEvenIfPresent || !(key in metricAttributes))) {\n    metricAttributes[key] = value;\n  }\n}\n\n/**\n * Captures a serialized metric event and adds it to the metric buffer for the given client.\n *\n * @param client - A client. Uses the current client if not provided.\n * @param serializedMetric - The serialized metric event to capture.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureSerializedMetric(client, serializedMetric) {\n  const bufferMap = _getBufferMap();\n  const metricBuffer = _INTERNAL_getMetricBuffer(client);\n\n  if (metricBuffer === undefined) {\n    bufferMap.set(client, [serializedMetric]);\n  } else {\n    if (metricBuffer.length >= MAX_METRIC_BUFFER_SIZE) {\n      _INTERNAL_flushMetricsBuffer(client, metricBuffer);\n      bufferMap.set(client, [serializedMetric]);\n    } else {\n      bufferMap.set(client, [...metricBuffer, serializedMetric]);\n    }\n  }\n}\n\n/**\n * Options for capturing a metric internally.\n */\n\n/**\n * Enriches metric with all contextual attributes (user, SDK metadata, replay, etc.)\n */\nfunction _enrichMetricAttributes(beforeMetric, client, user) {\n  const { release, environment } = client.getOptions();\n\n  const processedMetricAttributes = {\n    ...beforeMetric.attributes,\n  };\n\n  // Add user attributes\n  setMetricAttribute(processedMetricAttributes, 'user.id', user.id, false);\n  setMetricAttribute(processedMetricAttributes, 'user.email', user.email, false);\n  setMetricAttribute(processedMetricAttributes, 'user.name', user.username, false);\n\n  // Add Sentry metadata\n  setMetricAttribute(processedMetricAttributes, 'sentry.release', release);\n  setMetricAttribute(processedMetricAttributes, 'sentry.environment', environment);\n\n  // Add SDK metadata\n  const { name, version } = client.getSdkMetadata()?.sdk ?? {};\n  setMetricAttribute(processedMetricAttributes, 'sentry.sdk.name', name);\n  setMetricAttribute(processedMetricAttributes, 'sentry.sdk.version', version);\n\n  // Add replay metadata\n  const replay = client.getIntegrationByName\n\n('Replay');\n\n  const replayId = replay?.getReplayId(true);\n  setMetricAttribute(processedMetricAttributes, 'sentry.replay_id', replayId);\n\n  if (replayId && replay?.getRecordingMode() === 'buffer') {\n    setMetricAttribute(processedMetricAttributes, 'sentry._internal.replay_is_buffering', true);\n  }\n\n  return {\n    ...beforeMetric,\n    attributes: processedMetricAttributes,\n  };\n}\n\n/**\n * Creates a serialized metric ready to be sent to Sentry.\n */\nfunction _buildSerializedMetric(\n  metric,\n  client,\n  currentScope,\n  scopeAttributes,\n) {\n  // Get trace context\n  const [, traceContext] = _getTraceInfoFromScope(client, currentScope);\n  const span = _getSpanForScope(currentScope);\n  const traceId = span ? span.spanContext().traceId : traceContext?.trace_id;\n  const spanId = span ? span.spanContext().spanId : undefined;\n\n  const timestamp = timestampInSeconds();\n  const sequenceAttr = getSequenceAttribute(timestamp);\n\n  return {\n    timestamp,\n    trace_id: traceId ?? '',\n    span_id: spanId,\n    name: metric.name,\n    type: metric.type,\n    unit: metric.unit,\n    value: metric.value,\n    attributes: {\n      ...serializeAttributes(scopeAttributes),\n      ...serializeAttributes(metric.attributes, 'skip-undefined'),\n      [sequenceAttr.key]: sequenceAttr.value,\n    },\n  };\n}\n\n/**\n * Captures a metric event and sends it to Sentry.\n *\n * @param metric - The metric event to capture.\n * @param options - Options for capturing the metric.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_captureMetric(beforeMetric, options) {\n  const currentScope = options?.scope ?? getCurrentScope();\n  const captureSerializedMetric = options?.captureSerializedMetric ?? _INTERNAL_captureSerializedMetric;\n  const client = currentScope?.getClient() ?? getClient();\n  if (!client) {\n    DEBUG_BUILD && debug.warn('No client available to capture metric.');\n    return;\n  }\n\n  const { _experiments, enableMetrics, beforeSendMetric } = client.getOptions();\n\n  // todo(v11): Remove the experimental flag\n  // eslint-disable-next-line deprecation/deprecation\n  const metricsEnabled = enableMetrics ?? _experiments?.enableMetrics ?? true;\n\n  if (!metricsEnabled) {\n    DEBUG_BUILD && debug.warn('metrics option not enabled, metric will not be captured.');\n    return;\n  }\n\n  // Enrich metric with contextual attributes\n  const { user, attributes: scopeAttributes } = getCombinedScopeData(getIsolationScope(), currentScope);\n  const enrichedMetric = _enrichMetricAttributes(beforeMetric, client, user);\n\n  client.emit('processMetric', enrichedMetric);\n\n  // todo(v11): Remove the experimental `beforeSendMetric`\n  // eslint-disable-next-line deprecation/deprecation\n  const beforeSendCallback = beforeSendMetric || _experiments?.beforeSendMetric;\n  const processedMetric = beforeSendCallback ? beforeSendCallback(enrichedMetric) : enrichedMetric;\n\n  if (!processedMetric) {\n    DEBUG_BUILD && debug.log('`beforeSendMetric` returned `null`, will not send metric.');\n    return;\n  }\n\n  const serializedMetric = _buildSerializedMetric(processedMetric, client, currentScope, scopeAttributes);\n\n  DEBUG_BUILD && debug.log('[Metric]', serializedMetric);\n\n  captureSerializedMetric(client, serializedMetric);\n\n  client.emit('afterCaptureMetric', processedMetric);\n}\n\n/**\n * Flushes the metrics buffer to Sentry.\n *\n * @param client - A client.\n * @param maybeMetricBuffer - A metric buffer. Uses the metric buffer for the given client if not provided.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n */\nfunction _INTERNAL_flushMetricsBuffer(client, maybeMetricBuffer) {\n  const metricBuffer = maybeMetricBuffer ?? _INTERNAL_getMetricBuffer(client) ?? [];\n  if (metricBuffer.length === 0) {\n    return;\n  }\n\n  const clientOptions = client.getOptions();\n  const envelope = createMetricEnvelope(metricBuffer, clientOptions._metadata, clientOptions.tunnel, client.getDsn());\n\n  // Clear the metric buffer after envelopes have been constructed.\n  _getBufferMap().set(client, []);\n\n  client.emit('flushMetrics');\n\n  // sendEnvelope should not throw\n  // eslint-disable-next-line @typescript-eslint/no-floating-promises\n  client.sendEnvelope(envelope);\n}\n\n/**\n * Returns the metric buffer for a given client.\n *\n * Exported for testing purposes.\n *\n * @param client - The client to get the metric buffer for.\n * @returns The metric buffer for the given client.\n */\nfunction _INTERNAL_getMetricBuffer(client) {\n  return _getBufferMap().get(client);\n}\n\nfunction _getBufferMap() {\n  // The reference to the Client <> MetricBuffer map is stored on the carrier to ensure it's always the same\n  return getGlobalSingleton('clientToMetricBufferMap', () => new WeakMap());\n}\n\nexport { _INTERNAL_captureMetric, _INTERNAL_captureSerializedMetric, _INTERNAL_flushMetricsBuffer, _INTERNAL_getMetricBuffer };\n//# sourceMappingURL=internal.js.map\n",
+    "/**\n * Calls `unref` on a timer, if the method is available on @param timer.\n *\n * `unref()` is used to allow processes to exit immediately, even if the timer\n * is still running and hasn't resolved yet.\n *\n * Use this in places where code can run on browser or server, since browsers\n * do not support `unref`.\n */\nfunction safeUnref(timer) {\n  if (typeof timer === 'object' && typeof timer.unref === 'function') {\n    timer.unref();\n  }\n  return timer;\n}\n\nexport { safeUnref };\n//# sourceMappingURL=timer.js.map\n",
+    "import { resolvedSyncPromise, rejectedSyncPromise } from './syncpromise.js';\nimport { safeUnref } from './timer.js';\n\nconst SENTRY_BUFFER_FULL_ERROR = Symbol.for('SentryBufferFullError');\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit = 100) {\n  const buffer = new Set();\n\n  function isReady() {\n    return buffer.size < limit;\n  }\n\n  /**\n   * Remove a promise from the queue.\n   *\n   * @param task Can be any PromiseLike\n   * @returns Removed promise.\n   */\n  function remove(task) {\n    buffer.delete(task);\n  }\n\n  /**\n   * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n   *\n   * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n   *        PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n   *        functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n   *        requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n   *        limit check.\n   * @returns The original promise.\n   */\n  function add(taskProducer) {\n    if (!isReady()) {\n      return rejectedSyncPromise(SENTRY_BUFFER_FULL_ERROR);\n    }\n\n    // start the task and add its promise to the queue\n    const task = taskProducer();\n    buffer.add(task);\n    void task.then(\n      () => remove(task),\n      () => remove(task),\n    );\n    return task;\n  }\n\n  /**\n   * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n   *\n   * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n   * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n   * `true`.\n   * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n   * `false` otherwise\n   */\n  function drain(timeout) {\n    if (!buffer.size) {\n      return resolvedSyncPromise(true);\n    }\n\n    // We want to resolve even if one of the promises rejects\n    const drainPromise = Promise.allSettled(Array.from(buffer)).then(() => true);\n\n    if (!timeout) {\n      return drainPromise;\n    }\n\n    const promises = [\n      drainPromise,\n      new Promise(resolve => safeUnref(setTimeout(() => resolve(false), timeout))),\n    ];\n\n    return Promise.race(promises);\n  }\n\n  return {\n    get $() {\n      return Array.from(buffer);\n    },\n    add,\n    drain,\n  };\n}\n\nexport { SENTRY_BUFFER_FULL_ERROR, makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n",
+    "import { safeDateNow } from './randomSafeContext.js';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nconst DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = safeDateNow()) {\n  const headerDelay = parseInt(`${header}`, 10);\n  if (!isNaN(headerDelay)) {\n    return headerDelay * 1000;\n  }\n\n  const headerDate = Date.parse(`${header}`);\n  if (!isNaN(headerDate)) {\n    return headerDate - now;\n  }\n\n  return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nfunction disabledUntil(limits, dataCategory) {\n  return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, dataCategory, now = safeDateNow()) {\n  return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nfunction updateRateLimits(\n  limits,\n  { statusCode, headers },\n  now = safeDateNow(),\n) {\n  const updatedRateLimits = {\n    ...limits,\n  };\n\n  // \"The name is case-insensitive.\"\n  // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n  const rateLimitHeader = headers?.['x-sentry-rate-limits'];\n  const retryAfterHeader = headers?.['retry-after'];\n\n  if (rateLimitHeader) {\n    /**\n     * rate limit headers are of the form\n     *     
,
,..\n * where each
is of the form\n * : : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5) ;\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { forEachEnvelopeItem, envelopeItemTypeToDataCategory, createEnvelope, serializeEnvelope, envelopeContainsItemType } from '../utils/envelope.js';\nimport { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from '../utils/promisebuffer.js';\nimport { isRateLimited, updateRateLimits } from '../utils/ratelimit.js';\n\nconst DEFAULT_TRANSPORT_BUFFER_SIZE = 64;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n) {\n let rateLimits = {};\n const flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n const filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', dataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return Promise.resolve({});\n }\n\n const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason) => {\n // Don't record outcomes for client reports - we don't want to create a feedback loop if client reports themselves fail to send\n if (envelopeContainsItemType(filteredEnvelope, ['client_report'])) {\n DEBUG_BUILD && debug.warn(`Dropping client report. Will not send outcomes (reason: ${reason}).`);\n return;\n }\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope) }).then(\n response => {\n // Handle 413 Content Too Large\n // Loss of envelope content is expected so we record a send_error client report\n // https://develop.sentry.dev/sdk/expected-features/#dealing-with-network-failures\n if (response.statusCode === 413) {\n DEBUG_BUILD &&\n debug.error(\n 'Sentry responded with status code 413. Envelope was discarded due to exceeding size limits.',\n );\n recordEnvelopeLoss('send_error');\n return response;\n }\n\n // We don't want to throw on NOK responses, but we want to at least log them\n if (\n DEBUG_BUILD &&\n response.statusCode !== undefined &&\n (response.statusCode < 200 || response.statusCode >= 300)\n ) {\n debug.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n DEBUG_BUILD && debug.error('Encountered error running transport request:', error);\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error === SENTRY_BUFFER_FULL_ERROR) {\n DEBUG_BUILD && debug.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return Promise.resolve({});\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n", + "import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n", + "/**\n * Get a list of possible event messages from a Sentry event.\n */\nfunction getPossibleEventMessages(event) {\n const possibleMessages = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n try {\n // @ts-expect-error Try catching to save bundle size\n const lastException = event.exception.values[event.exception.values.length - 1];\n if (lastException?.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n } catch {\n // ignore errors here\n }\n\n return possibleMessages;\n}\n\nexport { getPossibleEventMessages };\n//# sourceMappingURL=eventUtils.js.map\n", + "import { SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes.js';\n\n/**\n * Converts a transaction event to a span JSON object.\n */\nfunction convertTransactionEventToSpanJson(event) {\n const { trace_id, parent_span_id, span_id, status, origin, data, op } = event.contexts?.trace ?? {};\n\n return {\n data: data ?? {},\n description: event.transaction,\n op,\n parent_span_id,\n span_id: span_id ?? '',\n start_timestamp: event.start_timestamp ?? 0,\n status,\n timestamp: event.timestamp,\n trace_id: trace_id ?? '',\n origin,\n profile_id: data?.[SEMANTIC_ATTRIBUTE_PROFILE_ID] ,\n exclusive_time: data?.[SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME] ,\n measurements: event.measurements,\n is_segment: true,\n };\n}\n\n/**\n * Converts a span JSON object to a transaction event.\n */\nfunction convertSpanJsonToTransactionEvent(span) {\n return {\n type: 'transaction',\n timestamp: span.timestamp,\n start_timestamp: span.start_timestamp,\n transaction: span.description,\n contexts: {\n trace: {\n trace_id: span.trace_id,\n span_id: span.span_id,\n parent_span_id: span.parent_span_id,\n op: span.op,\n status: span.status,\n origin: span.origin,\n data: {\n ...span.data,\n ...(span.profile_id && { [SEMANTIC_ATTRIBUTE_PROFILE_ID]: span.profile_id }),\n ...(span.exclusive_time && { [SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME]: span.exclusive_time }),\n },\n },\n },\n measurements: span.measurements,\n };\n}\n\nexport { convertSpanJsonToTransactionEvent, convertTransactionEventToSpanJson };\n//# sourceMappingURL=transactionEvent.js.map\n", + "import { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { getTraceContextFromScope, getCurrentScope, getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegration, afterSetupIntegrations, setupIntegrations } from './integration.js';\nimport { _INTERNAL_flushLogsBuffer } from './logs/internal.js';\nimport { _INTERNAL_flushMetricsBuffer } from './metrics/internal.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext.js';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base.js';\nimport { createClientReportEnvelope } from './utils/clientreport.js';\nimport { debug } from './utils/debug-logger.js';\nimport { makeDsn, dsnToString } from './utils/dsn.js';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils/envelope.js';\nimport { getPossibleEventMessages } from './utils/eventUtils.js';\nimport { isParameterizedString, isPrimitive, isThenable, isPlainObject } from './utils/is.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4, checkOrSetAlreadyCaught } from './utils/misc.js';\nimport { parseSampleRate } from './utils/parseSampleRate.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\nimport { makePromiseBuffer, SENTRY_BUFFER_FULL_ERROR } from './utils/promisebuffer.js';\nimport { safeMathRandom } from './utils/randomSafeContext.js';\nimport { shouldIgnoreSpan, reparentChildSpans } from './utils/should-ignore-span.js';\nimport { showSpanDropWarning } from './utils/spanUtils.js';\nimport { rejectedSyncPromise } from './utils/syncpromise.js';\nimport { safeUnref } from './utils/timer.js';\nimport { convertTransactionEventToSpanJson, convertSpanJsonToTransactionEvent } from './utils/transactionEvent.js';\n\n/* eslint-disable max-lines */\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\nconst MISSING_RELEASE_FOR_SESSION_ERROR = 'Discarded session because of missing or non-string release';\n\nconst INTERNAL_ERROR_SYMBOL = Symbol.for('SentryInternalError');\nconst DO_NOT_SEND_EVENT_SYMBOL = Symbol.for('SentryDoNotSendEventError');\n\n// Default interval for flushing logs and metrics (5 seconds)\nconst DEFAULT_FLUSH_INTERVAL = 5000;\n\nfunction _makeInternalError(message) {\n return {\n message,\n [INTERNAL_ERROR_SYMBOL]: true,\n };\n}\n\nfunction _makeDoNotSendEventError(message) {\n return {\n message,\n [DO_NOT_SEND_EVENT_SYMBOL]: true,\n };\n}\n\nfunction _isInternalError(error) {\n return !!error && typeof error === 'object' && INTERNAL_ERROR_SYMBOL in error;\n}\n\nfunction _isDoNotSendEventError(error) {\n return !!error && typeof error === 'object' && DO_NOT_SEND_EVENT_SYMBOL in error;\n}\n\n/**\n * Sets up weight-based flushing for logs or metrics.\n * This helper function encapsulates the common pattern of:\n * 1. Tracking accumulated weight of items\n * 2. Flushing when weight exceeds threshold (800KB)\n * 3. Flushing after timeout period from the first item\n *\n * Uses closure variables to track weight and timeout state.\n */\nfunction setupWeightBasedFlushing\n\n(\n client,\n afterCaptureHook,\n flushHook,\n estimateSizeFn,\n flushFn,\n) {\n // Track weight and timeout in closure variables\n let weight = 0;\n let flushTimeout;\n let isTimerActive = false;\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(flushHook, () => {\n weight = 0;\n clearTimeout(flushTimeout);\n isTimerActive = false;\n });\n\n // @ts-expect-error - TypeScript can't narrow generic hook types to match specific overloads, but we know this is type-safe\n client.on(afterCaptureHook, (item) => {\n weight += estimateSizeFn(item);\n\n // We flush the buffer if it exceeds 0.8 MB\n // The weight is a rough estimate, so we flush way before the payload gets too big.\n if (weight >= 800000) {\n flushFn(client);\n } else if (!isTimerActive) {\n // Only start timer if one isn't already running.\n // This prevents flushing being delayed by items that arrive close to the timeout limit\n // and thus resetting the flushing timeout and delaying items being flushed.\n isTimerActive = true;\n // Use safeUnref so the timer doesn't prevent the process from exiting\n flushTimeout = safeUnref(\n setTimeout(() => {\n flushFn(client);\n // Note: isTimerActive is reset by the flushHook handler above, not here,\n // to avoid race conditions when new items arrive during the flush.\n }, DEFAULT_FLUSH_INTERVAL),\n );\n }\n });\n\n client.on('flush', () => {\n flushFn(client);\n });\n}\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link Client._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends Client {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass Client {\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n\n /** Number of calls being processed */\n\n /** Holds flushable */\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {\n this._options = options;\n this._integrations = {};\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n this._promiseBuffer = makePromiseBuffer(options.transportOptions?.bufferSize ?? DEFAULT_TRANSPORT_BUFFER_SIZE);\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && debug.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(\n this._dsn,\n options.tunnel,\n options._metadata ? options._metadata.sdk : undefined,\n );\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n\n // Backfill enableLogs option from _experiments.enableLogs\n // TODO(v11): Remove or change default value\n // eslint-disable-next-line deprecation/deprecation\n this._options.enableLogs = this._options.enableLogs ?? this._options._experiments?.enableLogs;\n\n // Setup log flushing with weight and timeout tracking\n if (this._options.enableLogs) {\n setupWeightBasedFlushing(this, 'afterCaptureLog', 'flushLogs', estimateLogSizeInBytes, _INTERNAL_flushLogsBuffer);\n }\n\n // todo(v11): Remove the experimental flag\n // eslint-disable-next-line deprecation/deprecation\n const enableMetrics = this._options.enableMetrics ?? this._options._experiments?.enableMetrics ?? true;\n\n // Setup metric flushing with weight and timeout tracking\n if (enableMetrics) {\n setupWeightBasedFlushing(\n this,\n 'afterCaptureMetric',\n 'flushMetrics',\n estimateMetricSizeInBytes,\n _INTERNAL_flushMetricsBuffer,\n );\n }\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * Unlike `captureException` exported from every SDK, this method requires that you pass it the current scope.\n */\n captureException(exception, hint, scope) {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n this._process(\n () =>\n this.eventFromException(exception, hintWithEventId)\n .then(event => this._captureEvent(event, hintWithEventId, scope))\n .then(res => res),\n 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * Unlike `captureMessage` exported from every SDK, this method requires that you pass it the current scope.\n */\n captureMessage(\n message,\n level,\n hint,\n currentScope,\n ) {\n const hintWithEventId = {\n event_id: uuid4(),\n ...hint,\n };\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n const isMessage = isPrimitive(message);\n const promisedEvent = isMessage\n ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n : this.eventFromException(message, hintWithEventId);\n\n this._process(\n () => promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)),\n isMessage ? 'unknown' : 'error',\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a manually created event and sends it to Sentry.\n *\n * Unlike `captureEvent` exported from every SDK, this method requires that you pass it the current scope.\n */\n captureEvent(event, hint, currentScope) {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (hint?.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && debug.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope;\n const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope;\n const dataCategory = getDataCategoryByType(event.type);\n\n this._process(\n () => this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope, capturedSpanIsolationScope),\n dataCategory,\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * Captures a session.\n */\n captureSession(session) {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n\n /**\n * Create a cron monitor check in and send it to Sentry. This method is not available on all clients.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n * @param scope An optional scope containing event metadata.\n * @returns A string representing the id of the check in.\n */\n\n /**\n * Get the current Dsn.\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * Get the current options.\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * Get the SDK metadata.\n * @see SdkMetadata\n */\n getSdkMetadata() {\n return this._options._metadata;\n }\n\n /**\n * Returns the transport that is used by the client.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * Wait for all events to be sent or the timeout to expire, whichever comes first.\n *\n * @param timeout Maximum time in ms the client should wait for events to be flushed. Omitting this parameter will\n * cause the client to wait until all events are sent before resolving the promise.\n * @returns A promise that will resolve with `true` if all events are sent before the timeout, or `false` if there are\n * still events in the queue when the timeout is reached.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async flush(timeout) {\n const transport = this._transport;\n if (!transport) {\n return true;\n }\n\n this.emit('flush');\n\n const clientFinished = await this._isClientDoneProcessing(timeout);\n const transportFlushed = await transport.flush(timeout);\n\n return clientFinished && transportFlushed;\n }\n\n /**\n * Flush the event queue and set the client to `enabled = false`. See {@link Client.flush}.\n *\n * @param {number} timeout Maximum time in ms the client should wait before shutting down. Omitting this parameter will cause\n * the client to wait until all events are sent before disabling itself.\n * @returns {Promise} A promise which resolves to `true` if the flush completes successfully before the timeout, or `false` if\n * it doesn't.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async close(timeout) {\n _INTERNAL_flushLogsBuffer(this);\n const result = await this.flush(timeout);\n this.getOptions().enabled = false;\n this.emit('close');\n return result;\n }\n\n /**\n * Get all installed event processors.\n */\n getEventProcessors() {\n return this._eventProcessors;\n }\n\n /**\n * Adds an event processor that applies to any event processed by this client.\n */\n addEventProcessor(eventProcessor) {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * Initialize this client.\n * Call this after the client was set on a scope.\n */\n init() {\n if (\n this._isEnabled() ||\n // Force integrations to be setup even if no DSN was set when we have\n // Spotlight enabled. This is particularly important for browser as we\n // don't support the `spotlight` option there and rely on the users\n // adding the `spotlightBrowserIntegration()` to their integrations which\n // wouldn't get initialized with the check below when there's no DSN set.\n this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n ) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns {Integration|undefined} The installed integration or `undefined` if no integration with that `name` was installed.\n */\n getIntegrationByName(integrationName) {\n return this._integrations[integrationName] ;\n }\n\n /**\n * Add an integration to the client.\n * This can be used to e.g. lazy load integrations.\n * In most cases, this should not be necessary,\n * and you're better off just passing the integrations via `integrations: []` at initialization time.\n * However, if you find the need to conditionally load & add an integration, you can use `addIntegration` to do so.\n */\n addIntegration(integration) {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * Send a fully prepared event to Sentry.\n */\n sendEvent(event, hint = {}) {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n }\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env).then(sendResponse => this.emit('afterSendEvent', event, sendResponse));\n }\n\n /**\n * Send a session or session aggregrates to Sentry.\n */\n sendSession(session) {\n // Backfill release and environment on session\n const { release: clientReleaseOption, environment: clientEnvironmentOption = DEFAULT_ENVIRONMENT } = this._options;\n if ('aggregates' in session) {\n const sessionAttrs = session.attrs || {};\n if (!sessionAttrs.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n sessionAttrs.release = sessionAttrs.release || clientReleaseOption;\n sessionAttrs.environment = sessionAttrs.environment || clientEnvironmentOption;\n session.attrs = sessionAttrs;\n } else {\n if (!session.release && !clientReleaseOption) {\n DEBUG_BUILD && debug.warn(MISSING_RELEASE_FOR_SESSION_ERROR);\n return;\n }\n session.release = session.release || clientReleaseOption;\n session.environment = session.environment || clientEnvironmentOption;\n }\n\n this.emit('beforeSendSession', session);\n\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env);\n }\n\n /**\n * Record on the client that an event got dropped (ie, an event that will not be sent to Sentry).\n */\n recordDroppedEvent(reason, category, count = 1) {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n DEBUG_BUILD && debug.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n /* eslint-disable @typescript-eslint/unified-signatures */\n /**\n * Register a callback for whenever a span is started.\n * Receives the span as argument.\n * @returns {() => void} A function that, when executed, removes the registered callback.\n */\n\n /**\n * Register a hook on this client.\n */\n on(hook, callback) {\n const hookCallbacks = (this._hooks[hook] = this._hooks[hook] || new Set());\n\n // Wrap the callback in a function so that registering the same callback instance multiple\n // times results in the callback being called multiple times.\n // @ts-expect-error - The `callback` type is correct and must be a function due to the\n // individual, specific overloads of this function.\n // eslint-disable-next-line @typescript-eslint/ban-types\n const uniqueCallback = (...args) => callback(...args);\n\n hookCallbacks.add(uniqueCallback);\n\n // This function returns a callback execution handler that, when invoked,\n // deregisters a callback. This is crucial for managing instances where callbacks\n // need to be unregistered to prevent self-referencing in callback closures,\n // ensuring proper garbage collection.\n return () => {\n hookCallbacks.delete(uniqueCallback);\n };\n }\n\n /** Fire a hook whenever a span starts. */\n\n /**\n * Emit a hook that was previously registered via `on()`.\n */\n emit(hook, ...rest) {\n const callbacks = this._hooks[hook];\n if (callbacks) {\n callbacks.forEach(callback => callback(...rest));\n }\n }\n\n /**\n * Send an envelope to Sentry.\n */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async sendEnvelope(envelope) {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n try {\n return await this._transport.send(envelope);\n } catch (reason) {\n DEBUG_BUILD && debug.error('Error while sending envelope:', reason);\n return {};\n }\n }\n\n DEBUG_BUILD && debug.error('Transport disabled');\n return {};\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * Subclasses should override this method to clean up their own resources.\n * After calling dispose(), the client should not be used anymore.\n */\n dispose() {\n // Base class has no cleanup logic - subclasses implement their own\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n _setupIntegrations() {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n // initially, set `crashed` based on the event level and update from exceptions if there are any later on\n let crashed = event.level === 'fatal';\n let errored = false;\n const exceptions = event.exception?.values;\n\n if (exceptions) {\n errored = true;\n // reset crashed to false if there are exceptions, to ensure `mechanism.handled` is respected.\n crashed = false;\n\n for (const ex of exceptions) {\n if (ex.mechanism?.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n async _isClientDoneProcessing(timeout) {\n let ticked = 0;\n\n while (!timeout || ticked < timeout) {\n await new Promise(resolve => setTimeout(resolve, 1));\n\n if (!this._numProcessing) {\n return true;\n }\n ticked++;\n }\n\n return false;\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._transport !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param currentScope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(\n event,\n hint,\n currentScope,\n isolationScope,\n ) {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations?.length) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n if (!event.type) {\n isolationScope.setLastEventId(event.event_id || hint.event_id);\n }\n\n return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n this.emit('postprocessEvent', evt, hint);\n\n evt.contexts = {\n trace: { ...evt.contexts?.trace, ...getTraceContextFromScope(currentScope) },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(\n event,\n hint = {},\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ) {\n if (DEBUG_BUILD && isErrorEvent(event)) {\n debug.log(`Captured error event \\`${getPossibleEventMessages(event)[0] || ''}\\``);\n }\n\n return this._processEvent(event, hint, currentScope, isolationScope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n if (_isDoNotSendEventError(reason)) {\n debug.log(reason.message);\n } else if (_isInternalError(reason)) {\n debug.warn(reason.message);\n } else {\n debug.warn(reason);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param currentScope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(\n event,\n hint,\n currentScope,\n isolationScope,\n ) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n if (isError && typeof parsedSampleRate === 'number' && safeMathRandom() > parsedSampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n _makeDoNotSendEventError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n const dataCategory = getDataCategoryByType(event.type);\n\n return this._prepareEvent(event, hint, currentScope, isolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory);\n throw _makeDoNotSendEventError('An event processor returned `null`, will not send event.');\n }\n\n const isInternalException = (hint.data )?.__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(this, options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw _makeDoNotSendEventError(`${beforeSendLabel} returned \\`null\\`, will not send event.`);\n }\n\n const session = currentScope.getSession() || isolationScope.getSession();\n if (isError && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore = processedEvent.sdkProcessingMetadata?.spanCountBeforeProcessing || 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (_isDoNotSendEventError(reason) || _isInternalError(reason)) {\n throw reason;\n }\n\n this.captureException(reason, {\n mechanism: {\n handled: false,\n type: 'internal',\n },\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw _makeInternalError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(taskProducer, dataCategory) {\n this._numProcessing++;\n\n void this._promiseBuffer.add(taskProducer).then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n\n if (reason === SENTRY_BUFFER_FULL_ERROR) {\n this.recordDroppedEvent('queue_overflow', dataCategory);\n }\n\n return reason;\n },\n );\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n DEBUG_BUILD && debug.log('Flushing outcomes...');\n\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && debug.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && debug.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && debug.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n }\n\n /**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n */\n\n}\n\nfunction getDataCategoryByType(type) {\n return type === 'replay_event' ? 'replay' : type || 'error';\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendLabel,\n) {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return event;\n },\n e => {\n throw _makeInternalError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw _makeInternalError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n client,\n options,\n event,\n hint,\n) {\n const { beforeSend, beforeSendTransaction, beforeSendSpan, ignoreSpans } = options;\n let processedEvent = event;\n\n if (isErrorEvent(processedEvent) && beforeSend) {\n return beforeSend(processedEvent, hint);\n }\n\n if (isTransactionEvent(processedEvent)) {\n // Avoid processing if we don't have to\n if (beforeSendSpan || ignoreSpans) {\n // 1. Process root span\n const rootSpanJson = convertTransactionEventToSpanJson(processedEvent);\n\n // 1.1 If the root span should be ignored, drop the whole transaction\n if (ignoreSpans?.length && shouldIgnoreSpan(rootSpanJson, ignoreSpans)) {\n // dropping the whole transaction!\n return null;\n }\n\n // 1.2 If a `beforeSendSpan` callback is defined, process the root span\n if (beforeSendSpan) {\n const processedRootSpanJson = beforeSendSpan(rootSpanJson);\n if (!processedRootSpanJson) {\n showSpanDropWarning();\n } else {\n // update event with processed root span values\n processedEvent = merge(event, convertSpanJsonToTransactionEvent(processedRootSpanJson));\n }\n }\n\n // 2. Process child spans\n if (processedEvent.spans) {\n const processedSpans = [];\n\n const initialSpans = processedEvent.spans;\n\n for (const span of initialSpans) {\n // 2.a If the child span should be ignored, reparent it to the root span\n if (ignoreSpans?.length && shouldIgnoreSpan(span, ignoreSpans)) {\n reparentChildSpans(initialSpans, span);\n continue;\n }\n\n // 2.b If a `beforeSendSpan` callback is defined, process the child span\n if (beforeSendSpan) {\n const processedSpan = beforeSendSpan(span);\n if (!processedSpan) {\n showSpanDropWarning();\n processedSpans.push(span);\n } else {\n processedSpans.push(processedSpan);\n }\n } else {\n processedSpans.push(span);\n }\n }\n\n const droppedSpans = processedEvent.spans.length - processedSpans.length;\n if (droppedSpans) {\n client.recordDroppedEvent('before_send', 'span', droppedSpans);\n }\n\n processedEvent.spans = processedSpans;\n }\n }\n\n if (beforeSendTransaction) {\n if (processedEvent.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = processedEvent.spans.length;\n processedEvent.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(processedEvent , hint);\n }\n }\n\n return processedEvent;\n}\n\nfunction isErrorEvent(event) {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\n/**\n * Estimate the size of a metric in bytes.\n *\n * @param metric - The metric to estimate the size of.\n * @returns The estimated size of the metric in bytes.\n */\nfunction estimateMetricSizeInBytes(metric) {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (metric.name) {\n weight += metric.name.length * 2;\n }\n\n // Add weight for number\n weight += 8;\n\n return weight + estimateAttributesSizeInBytes(metric.attributes);\n}\n\n/**\n * Estimate the size of a log in bytes.\n *\n * @param log - The log to estimate the size of.\n * @returns The estimated size of the log in bytes.\n */\nfunction estimateLogSizeInBytes(log) {\n let weight = 0;\n\n // Estimate byte size of 2 bytes per character. This is a rough estimate JS strings are stored as UTF-16.\n if (log.message) {\n weight += log.message.length * 2;\n }\n\n return weight + estimateAttributesSizeInBytes(log.attributes);\n}\n\n/**\n * Estimate the size of attributes in bytes.\n *\n * @param attributes - The attributes object to estimate the size of.\n * @returns The estimated size of the attributes in bytes.\n */\nfunction estimateAttributesSizeInBytes(attributes) {\n if (!attributes) {\n return 0;\n }\n\n let weight = 0;\n\n Object.values(attributes).forEach(value => {\n if (Array.isArray(value)) {\n weight += value.length * estimatePrimitiveSizeInBytes(value[0]);\n } else if (isPrimitive(value)) {\n weight += estimatePrimitiveSizeInBytes(value);\n } else {\n // For objects values, we estimate the size of the object as 100 bytes\n weight += 100;\n }\n });\n\n return weight;\n}\n\nfunction estimatePrimitiveSizeInBytes(value) {\n if (typeof value === 'string') {\n return value.length * 2;\n } else if (typeof value === 'number') {\n return 8;\n } else if (typeof value === 'boolean') {\n return 4;\n }\n\n return 0;\n}\n\nexport { Client };\n//# sourceMappingURL=client.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getFunctionName } from '../utils/stacktrace.js';\n\n// We keep the handlers globally\nconst handlers = {};\nconst instrumented = {};\n\n/** Add a handler function. */\nfunction addHandler(type, handler) {\n handlers[type] = handlers[type] || [];\n handlers[type].push(handler);\n}\n\n/**\n * Reset all instrumentation handlers.\n * This can be used by tests to ensure we have a clean slate of instrumentation handlers.\n */\nfunction resetInstrumentationHandlers() {\n Object.keys(handlers).forEach(key => {\n handlers[key ] = undefined;\n });\n}\n\n/** Maybe run an instrumentation function, unless it was already called. */\nfunction maybeInstrument(type, instrumentFn) {\n if (!instrumented[type]) {\n instrumented[type] = true;\n try {\n instrumentFn();\n } catch (e) {\n DEBUG_BUILD && debug.error(`Error while instrumenting ${type}`, e);\n }\n }\n}\n\n/** Trigger handlers for a given instrumentation type. */\nfunction triggerHandlers(type, data) {\n const typeHandlers = type && handlers[type];\n if (!typeHandlers) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n debug.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nexport { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers };\n//# sourceMappingURL=handlers.js.map\n", + "import { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnErrorHandler = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalErrorInstrumentationHandler(handler) {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError() {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n // Note: The reason we are doing window.onerror instead of window.addEventListener('error')\n // is that we are using this handler in the Loader Script, to handle buffered errors consistently\n GLOBAL_OBJ.onerror = function (\n msg,\n url,\n line,\n column,\n error,\n ) {\n const handlerData = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalErrorInstrumentationHandler };\n//# sourceMappingURL=globalError.js.map\n", + "import { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\nlet _oldOnUnhandledRejectionHandler = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addGlobalUnhandledRejectionInstrumentationHandler(\n handler,\n) {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n // Note: The reason we are doing window.onunhandledrejection instead of window.addEventListener('unhandledrejection')\n // is that we are using this handler in the Loader Script, to handle buffered rejections consistently\n GLOBAL_OBJ.onunhandledrejection = function (e) {\n const handlerData = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n\nexport { addGlobalUnhandledRejectionInstrumentationHandler };\n//# sourceMappingURL=globalUnhandledRejection.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { addGlobalErrorInstrumentationHandler } from '../instrument/globalError.js';\nimport { addGlobalUnhandledRejectionInstrumentationHandler } from '../instrument/globalUnhandledRejection.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getActiveSpan, getRootSpan } from '../utils/spanUtils.js';\nimport { SPAN_STATUS_ERROR } from './spanstatus.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Ensure that global errors automatically set the active span status.\n */\nfunction registerSpanErrorInstrumentation() {\n if (errorsInstrumented) {\n return;\n }\n\n /**\n * If an error or unhandled promise occurs, we mark the active root span as failed\n */\n function errorCallback() {\n const activeSpan = getActiveSpan();\n const rootSpan = activeSpan && getRootSpan(activeSpan);\n if (rootSpan) {\n const message = 'internal_error';\n DEBUG_BUILD && debug.log(`[Tracing] Root span: ${message} -> Global error occurred`);\n rootSpan.setStatus({ code: SPAN_STATUS_ERROR, message });\n }\n }\n\n // The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n // node.js default exit behaviour\n errorCallback.tag = 'sentry_tracingErrorCallback';\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\nexport { registerSpanErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n", + "/**\n * Takes the SDK metadata and adds the user-agent header to the transport options.\n * This ensures that the SDK sends the user-agent header with SDK name and version to\n * all requests made by the transport.\n *\n * @see https://develop.sentry.dev/sdk/overview/#user-agent\n */\nfunction addUserAgentToTransportHeaders(options) {\n const sdkMetadata = options._metadata?.sdk;\n const sdkUserAgent =\n sdkMetadata?.name && sdkMetadata?.version ? `${sdkMetadata?.name}/${sdkMetadata?.version}` : undefined;\n\n options.transportOptions = {\n ...options.transportOptions,\n headers: {\n ...(sdkUserAgent && { 'user-agent': sdkUserAgent }),\n ...options.transportOptions?.headers,\n },\n };\n}\n\nexport { addUserAgentToTransportHeaders };\n//# sourceMappingURL=userAgent.js.map\n", + "import { isParameterizedString, isError, isPlainObject, isErrorEvent } from './is.js';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc.js';\nimport { normalizeToSize } from './normalize.js';\nimport { extractExceptionKeysForMessage } from './object.js';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nfunction parseStackFrames(stackParser, error) {\n return stackParser(error.stack || '', 1);\n}\n\nfunction hasSentryFetchUrlHost(error) {\n return isError(error) && '__sentry_fetch_url_host__' in error && typeof error.__sentry_fetch_url_host__ === 'string';\n}\n\n/**\n * Enhances the error message with the hostname for better Sentry error reporting.\n * This allows third-party packages to still match on the original error message,\n * while Sentry gets the enhanced version with context.\n *\n * Only used internally\n * @hidden\n */\nfunction _enhanceErrorWithSentryInfo(error) {\n // If the error has a __sentry_fetch_url_host__ property (added by fetch instrumentation),\n // enhance the error message with the hostname.\n if (hasSentryFetchUrlHost(error)) {\n return `${error.message} (${error.__sentry_fetch_url_host__})`;\n }\n\n return error.message;\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nfunction exceptionFromError(stackParser, error) {\n const exception = {\n type: error.name || error.constructor.name,\n value: _enhanceErrorWithSentryInfo(error),\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj) {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (value instanceof Error) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nfunction getMessageForObject(exception) {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n }\n\n const keys = extractExceptionKeysForMessage(exception);\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as exception with message \\`${exception.message}\\``;\n }\n\n const className = getObjectClassName(exception);\n\n return `${\n className && className !== 'Object' ? `'${className}'` : 'Object'\n } captured as exception with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch {\n // ignore errors here\n }\n}\n\nfunction getException(\n client,\n mechanism,\n exception,\n hint,\n) {\n if (isError(exception)) {\n return [exception, undefined];\n }\n\n // Mutate this!\n mechanism.synthetic = true;\n\n if (isPlainObject(exception)) {\n const normalizeDepth = client?.getOptions().normalizeDepth;\n const extras = { ['__serialized__']: normalizeToSize(exception, normalizeDepth) };\n\n const errorFromProp = getErrorPropertyFromObject(exception);\n if (errorFromProp) {\n return [errorFromProp, extras];\n }\n\n const message = getMessageForObject(exception);\n const ex = hint?.syntheticException || new Error(message);\n ex.message = message;\n\n return [ex, extras];\n }\n\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n const ex = hint?.syntheticException || new Error(exception );\n ex.message = `${exception}`;\n\n return [ex, undefined];\n}\n\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nfunction eventFromUnknownInput(\n client,\n stackParser,\n exception,\n hint,\n) {\n const providedMechanism = hint?.data && (hint.data ).mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n const [ex, extras] = getException(client, mechanism, exception, hint);\n\n const event = {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint?.event_id,\n };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const event = {\n event_id: hint?.event_id,\n level,\n };\n\n if (attachStacktrace && hint?.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n addExceptionMechanism(event, { synthetic: true });\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nexport { _enhanceErrorWithSentryInfo, eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n", + "import { createCheckInEnvelope } from './checkin.js';\nimport { Client } from './client.js';\nimport { getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { registerSpanErrorInstrumentation } from './tracing/errors.js';\nimport { debug } from './utils/debug-logger.js';\nimport { uuid4 } from './utils/misc.js';\nimport { DEFAULT_TRANSPORT_BUFFER_SIZE } from './transports/base.js';\nimport { addUserAgentToTransportHeaders } from './transports/userAgent.js';\nimport { eventFromUnknownInput, eventFromMessage } from './utils/eventbuilder.js';\nimport { makePromiseBuffer } from './utils/promisebuffer.js';\nimport { resolvedSyncPromise } from './utils/syncpromise.js';\nimport { _getTraceInfoFromScope } from './utils/trace-info.js';\n\n/**\n * The Sentry Server Runtime Client SDK.\n */\nclass ServerRuntimeClient\n\n extends Client {\n /**\n * Creates a new Edge SDK instance.\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n // Server clients always support tracing\n registerSpanErrorInstrumentation();\n\n addUserAgentToTransportHeaders(options);\n\n super(options);\n\n this._setUpMetricsProcessing();\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n const event = eventFromUnknownInput(this, this._options.stackParser, exception, hint);\n event.level = 'error';\n\n return resolvedSyncPromise(event);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n level = 'info',\n hint,\n ) {\n return resolvedSyncPromise(\n eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace),\n );\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint, scope) {\n setCurrentRequestSessionErroredOrCrashed(hint);\n return super.captureException(exception, hint, scope);\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // If the event is of type Exception, then a request session should be captured\n const isException = !event.type && event.exception?.values && event.exception.values.length > 0;\n if (isException) {\n setCurrentRequestSessionErroredOrCrashed(hint);\n }\n\n return super.captureEvent(event, hint, scope);\n }\n\n /**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\n captureCheckIn(checkIn, monitorConfig, scope) {\n const id = 'checkInId' in checkIn && checkIn.checkInId ? checkIn.checkInId : uuid4();\n if (!this._isEnabled()) {\n DEBUG_BUILD && debug.warn('SDK not enabled, will not capture check-in.');\n return id;\n }\n\n const options = this.getOptions();\n const { release, environment, tunnel } = options;\n\n const serializedCheckIn = {\n check_in_id: id,\n monitor_slug: checkIn.monitorSlug,\n status: checkIn.status,\n release,\n environment,\n };\n\n if ('duration' in checkIn) {\n serializedCheckIn.duration = checkIn.duration;\n }\n\n if (monitorConfig) {\n serializedCheckIn.monitor_config = {\n schedule: monitorConfig.schedule,\n checkin_margin: monitorConfig.checkinMargin,\n max_runtime: monitorConfig.maxRuntime,\n timezone: monitorConfig.timezone,\n failure_issue_threshold: monitorConfig.failureIssueThreshold,\n recovery_threshold: monitorConfig.recoveryThreshold,\n };\n }\n\n const [dynamicSamplingContext, traceContext] = _getTraceInfoFromScope(this, scope);\n if (traceContext) {\n serializedCheckIn.contexts = {\n trace: traceContext,\n };\n }\n\n const envelope = createCheckInEnvelope(\n serializedCheckIn,\n dynamicSamplingContext,\n this.getSdkMetadata(),\n tunnel,\n this.getDsn(),\n );\n\n DEBUG_BUILD && debug.log('Sending checkin:', checkIn.monitorSlug, checkIn.status);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(envelope);\n\n return id;\n }\n\n /**\n * Disposes of the client and releases all resources.\n *\n * This method clears all internal state to allow the client to be garbage collected.\n * It clears hooks, event processors, integrations, transport, and other internal references.\n *\n * Call this method after flushing to allow the client to be garbage collected.\n * After calling dispose(), the client should not be used anymore.\n *\n * Subclasses should override this method to clean up their own resources and call `super.dispose()`.\n */\n dispose() {\n DEBUG_BUILD && debug.log('Disposing client...');\n\n for (const hookName of Object.keys(this._hooks)) {\n this._hooks[hookName]?.clear();\n }\n\n this._hooks = {};\n this._eventProcessors.length = 0;\n this._integrations = {};\n this._outcomes = {};\n (this )._transport = undefined;\n this._promiseBuffer = makePromiseBuffer(DEFAULT_TRANSPORT_BUFFER_SIZE);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(\n event,\n hint,\n currentScope,\n isolationScope,\n ) {\n if (this._options.platform) {\n event.platform = event.platform || this._options.platform;\n }\n\n if (this._options.runtime) {\n event.contexts = {\n ...event.contexts,\n runtime: event.contexts?.runtime || this._options.runtime,\n };\n }\n\n if (this._options.serverName) {\n event.server_name = event.server_name || this._options.serverName;\n }\n\n return super._prepareEvent(event, hint, currentScope, isolationScope);\n }\n\n /**\n * Process a server-side metric before it is captured.\n */\n _setUpMetricsProcessing() {\n this.on('processMetric', metric => {\n if (this._options.serverName) {\n metric.attributes = {\n 'server.address': this._options.serverName,\n ...metric.attributes,\n };\n }\n });\n }\n}\n\nfunction setCurrentRequestSessionErroredOrCrashed(eventHint) {\n const requestSession = getIsolationScope().getScopeData().sdkProcessingMetadata.requestSession;\n if (requestSession) {\n // We mutate instead of doing `setSdkProcessingMetadata` because the http integration stores away a particular\n // isolationScope. If that isolation scope is forked, setting the processing metadata here will not mutate the\n // original isolation scope that the http integration stored away.\n const isHandledException = eventHint?.mechanism?.handled ?? true;\n // A request session can go from \"errored\" -> \"crashed\" but not \"crashed\" -> \"errored\".\n // Crashed (unhandled exception) is worse than errored (handled exception).\n if (isHandledException && requestSession.status !== 'crashed') {\n requestSession.status = 'errored';\n } else if (!isHandledException) {\n requestSession.status = 'crashed';\n }\n }\n}\n\nexport { ServerRuntimeClient };\n//# sourceMappingURL=server-runtime-client.js.map\n", + "import { DEBUG_BUILD } from '../../debug-build.js';\nimport { debug } from '../debug-logger.js';\n\n/**\n * Registry tracking which AI provider modules should skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n */\nconst SKIPPED_AI_PROVIDERS = new Set();\n\n/**\n * Mark AI provider modules to skip instrumentation wrapping.\n *\n * This prevents duplicate spans when a higher-level integration (like LangChain)\n * already instruments AI providers at a higher abstraction level.\n *\n * @internal\n * @param modules - Array of npm module names to skip (e.g., '@anthropic-ai/sdk', 'openai')\n *\n * @example\n * ```typescript\n * // In LangChain integration\n * _INTERNAL_skipAiProviderWrapping(['@anthropic-ai/sdk', 'openai', '@google/generative-ai']);\n * ```\n */\nfunction _INTERNAL_skipAiProviderWrapping(modules) {\n modules.forEach(module => {\n SKIPPED_AI_PROVIDERS.add(module);\n DEBUG_BUILD && debug.log(`AI provider \"${module}\" wrapping will be skipped`);\n });\n}\n\n/**\n * Check if an AI provider module should skip instrumentation wrapping.\n *\n * @internal\n * @param module - The npm module name (e.g., '@anthropic-ai/sdk', 'openai')\n * @returns true if wrapping should be skipped\n *\n * @example\n * ```typescript\n * // In AI provider instrumentation\n * if (_INTERNAL_shouldSkipAiProviderWrapping('@anthropic-ai/sdk')) {\n * return Reflect.construct(Original, args); // Don't instrument\n * }\n * ```\n */\nfunction _INTERNAL_shouldSkipAiProviderWrapping(module) {\n return SKIPPED_AI_PROVIDERS.has(module);\n}\n\n/**\n * Clear all AI provider skip registrations.\n *\n * This is automatically called at the start of Sentry.init() to ensure a clean state\n * between different client initializations.\n *\n * @internal\n */\nfunction _INTERNAL_clearAiProviderSkips() {\n SKIPPED_AI_PROVIDERS.clear();\n DEBUG_BUILD && debug.log('Cleared AI provider skip registrations');\n}\n\nexport { _INTERNAL_clearAiProviderSkips, _INTERNAL_shouldSkipAiProviderWrapping, _INTERNAL_skipAiProviderWrapping };\n//# sourceMappingURL=providerSkip.js.map\n", + "const FALSY_ENV_VALUES = new Set(['false', 'f', 'n', 'no', 'off', '0']);\nconst TRUTHY_ENV_VALUES = new Set(['true', 't', 'y', 'yes', 'on', '1']);\n\n/**\n * A helper function which casts an ENV variable value to `true` or `false` using the constants defined above.\n * In strict mode, it may return `null` if the value doesn't match any of the predefined values.\n *\n * @param value The value of the env variable\n * @param options -- Only has `strict` key for now, which requires a strict match for `true` in TRUTHY_ENV_VALUES\n * @returns true/false if the lowercase value matches the predefined values above. If not, null in strict mode,\n * and Boolean(value) in loose mode.\n */\nfunction envToBool(value, options) {\n const normalized = String(value).toLowerCase();\n\n if (FALSY_ENV_VALUES.has(normalized)) {\n return false;\n }\n\n if (TRUTHY_ENV_VALUES.has(normalized)) {\n return true;\n }\n\n return options?.strict ? null : Boolean(value);\n}\n\nexport { FALSY_ENV_VALUES, TRUTHY_ENV_VALUES, envToBool };\n//# sourceMappingURL=envToBool.js.map\n", + "import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes.js';\n\n// Curious about `thismessage:/`? See: https://www.rfc-editor.org/rfc/rfc2557.html\n// > When the methods above do not yield an absolute URI, a base URL\n// > of \"thismessage:/\" MUST be employed. This base URL has been\n// > defined for the sole purpose of resolving relative references\n// > within a multipart/related structure when no other base URI is\n// > specified.\n//\n// We need to provide a base URL to `parseStringToURLObject` because the fetch API gives us a\n// relative URL sometimes.\n//\n// This is the only case where we need to provide a base URL to `parseStringToURLObject`\n// because the relative URL is not valid on its own.\nconst DEFAULT_BASE_URL = 'thismessage:/';\n\n/**\n * Checks if the URL object is relative\n *\n * @param url - The URL object to check\n * @returns True if the URL object is relative, false otherwise\n */\nfunction isURLObjectRelative(url) {\n return 'isRelative' in url;\n}\n\n/**\n * Parses string to a URL object\n *\n * @param url - The URL to parse\n * @returns The parsed URL object or undefined if the URL is invalid\n */\nfunction parseStringToURLObject(url, urlBase) {\n const isRelative = url.indexOf('://') <= 0 && url.indexOf('//') !== 0;\n const base = urlBase ?? (isRelative ? DEFAULT_BASE_URL : undefined);\n try {\n // Use `canParse` to short-circuit the URL constructor if it's not a valid URL\n // This is faster than trying to construct the URL and catching the error\n // Node 20+, Chrome 120+, Firefox 115+, Safari 17+\n if ('canParse' in URL && !(URL ).canParse(url, base)) {\n return undefined;\n }\n\n const fullUrlObject = new URL(url, base);\n if (isRelative) {\n // Because we used a fake base URL, we need to return a relative URL object.\n // We cannot return anything about the origin, host, etc. because it will refer to the fake base URL.\n return {\n isRelative,\n pathname: fullUrlObject.pathname,\n search: fullUrlObject.search,\n hash: fullUrlObject.hash,\n };\n }\n return fullUrlObject;\n } catch {\n // empty body\n }\n\n return undefined;\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlStringFromUrlObject(url) {\n if (isURLObjectRelative(url)) {\n return url.pathname;\n }\n\n const newUrl = new URL(url);\n newUrl.search = '';\n newUrl.hash = '';\n if (['80', '443'].includes(newUrl.port)) {\n newUrl.port = '';\n }\n if (newUrl.password) {\n newUrl.password = '%filtered%';\n }\n if (newUrl.username) {\n newUrl.username = '%filtered%';\n }\n\n return newUrl.toString();\n}\n\nfunction getHttpSpanNameFromUrlObject(\n urlObject,\n kind,\n request,\n routeName,\n) {\n const method = request?.method?.toUpperCase() ?? 'GET';\n const route = routeName\n ? routeName\n : urlObject\n ? kind === 'client'\n ? getSanitizedUrlStringFromUrlObject(urlObject)\n : urlObject.pathname\n : '/';\n\n return `${method} ${route}`;\n}\n\n/**\n * Takes a parsed URL object and returns a set of attributes for the span\n * that represents the HTTP request for that url. This is used for both server\n * and client http spans.\n *\n * Follows https://opentelemetry.io/docs/specs/semconv/http/.\n *\n * @param urlObject - see {@link parseStringToURLObject}\n * @param kind - The type of HTTP operation (server or client)\n * @param spanOrigin - The origin of the span\n * @param request - The request object, see {@link PartialRequest}\n * @param routeName - The name of the route, must be low cardinality\n * @returns The span name and attributes for the HTTP operation\n */\nfunction getHttpSpanDetailsFromUrlObject(\n urlObject,\n kind,\n spanOrigin,\n request,\n routeName,\n) {\n const attributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanOrigin,\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',\n };\n\n if (routeName) {\n // This is based on https://opentelemetry.io/docs/specs/semconv/http/http-spans/#name\n attributes[kind === 'server' ? 'http.route' : 'url.template'] = routeName;\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n\n if (request?.method) {\n attributes[SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD] = request.method.toUpperCase();\n }\n\n if (urlObject) {\n if (urlObject.search) {\n attributes['url.query'] = urlObject.search;\n }\n if (urlObject.hash) {\n attributes['url.fragment'] = urlObject.hash;\n }\n if (urlObject.pathname) {\n attributes['url.path'] = urlObject.pathname;\n if (urlObject.pathname === '/') {\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] = 'route';\n }\n }\n\n if (!isURLObjectRelative(urlObject)) {\n attributes[SEMANTIC_ATTRIBUTE_URL_FULL] = urlObject.href;\n if (urlObject.port) {\n attributes['url.port'] = urlObject.port;\n }\n if (urlObject.protocol) {\n attributes['url.scheme'] = urlObject.protocol;\n }\n if (urlObject.hostname) {\n attributes[kind === 'server' ? 'server.address' : 'url.domain'] = urlObject.hostname;\n }\n }\n }\n\n return [getHttpSpanNameFromUrlObject(urlObject, kind, request, routeName), attributes];\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url) {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n search: query,\n hash: fragment,\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n return (urlPath.split(/[?#]/, 1) )[0];\n}\n\n/**\n * Takes a URL object and returns a sanitized string which is safe to use as span name\n * see: https://develop.sentry.dev/sdk/data-handling/#structuring-data\n */\nfunction getSanitizedUrlString(url) {\n const { protocol, host, path } = url;\n\n const filteredHost =\n host\n // Always filter out authority\n ?.replace(/^.*@/, '[filtered]:[filtered]@')\n // Don't show standard :80 (http) and :443 (https) ports to reduce the noise\n // TODO: Use new URL global if it exists\n .replace(/(:80)$/, '')\n .replace(/(:443)$/, '') || '';\n\n return `${protocol ? `${protocol}://` : ''}${filteredHost}${path}`;\n}\n\n/**\n * Strips the content from a data URL, returning a placeholder with the MIME type.\n *\n * Data URLs can be very long (e.g. base64 encoded scripts for Web Workers),\n * with little valuable information, often leading to envelopes getting dropped due\n * to size limit violations. Therefore, we strip data URLs and replace them with a\n * placeholder.\n *\n * @param url - The URL to process\n * @param includeDataPrefix - If true, includes the first 10 characters of the data stream\n * for debugging (e.g., to identify magic bytes like WASM's AGFzbQ).\n * Defaults to true.\n * @returns For data URLs, returns a short format like `data:text/javascript;base64,SGVsbG8gV2... [truncated]`.\n * For non-data URLs, returns the original URL unchanged.\n */\nfunction stripDataUrlContent(url, includeDataPrefix = true) {\n if (url.startsWith('data:')) {\n // Match the MIME type (everything after 'data:' until the first ';' or ',')\n const match = url.match(/^data:([^;,]+)/);\n const mimeType = match ? match[1] : 'text/plain';\n const isBase64 = url.includes(';base64,');\n\n // Find where the actual data starts (after the comma)\n const dataStart = url.indexOf(',');\n let dataPrefix = '';\n if (includeDataPrefix && dataStart !== -1) {\n const data = url.slice(dataStart + 1);\n // Include first 10 chars of data to help identify content (e.g., magic bytes)\n dataPrefix = data.length > 10 ? `${data.slice(0, 10)}... [truncated]` : data;\n }\n\n return `data:${mimeType}${isBase64 ? ',base64' : ''}${dataPrefix ? `,${dataPrefix}` : ''}`;\n }\n return url;\n}\n\nexport { getHttpSpanDetailsFromUrlObject, getSanitizedUrlString, getSanitizedUrlStringFromUrlObject, isURLObjectRelative, parseStringToURLObject, parseUrl, stripDataUrlContent, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n", + "import { SDK_VERSION } from './version.js';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nfunction applySdkMetadata(options, name, names = [name], source = 'npm') {\n const sdk = ((options._metadata = options._metadata || {}).sdk = options._metadata.sdk || {});\n\n if (!sdk.name) {\n sdk.name = `sentry.javascript.${name}`;\n sdk.packages = names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n }));\n sdk.version = SDK_VERSION;\n }\n}\n\nexport { applySdkMetadata };\n//# sourceMappingURL=sdkMetadata.js.map\n", + "import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getClient, getCurrentScope } from '../currentScopes.js';\nimport { isEnabled } from '../exports.js';\nimport { debug } from './debug-logger.js';\nimport { getActiveSpan, spanToTraceHeader, spanToTraceparentHeader } from './spanUtils.js';\nimport { getDynamicSamplingContextFromSpan, getDynamicSamplingContextFromScope } from '../tracing/dynamicSamplingContext.js';\nimport { dynamicSamplingContextToSentryBaggageHeader } from './baggage.js';\nimport { TRACEPARENT_REGEXP, generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js';\n\n/**\n * Extracts trace propagation data from the current span or from the client's scope (via transaction or propagation\n * context) and serializes it to `sentry-trace` and `baggage` values. These values can be used to propagate\n * a trace via our tracing Http headers or Html `` tags.\n *\n * This function also applies some validation to the generated sentry-trace and baggage values to ensure that\n * only valid strings are returned.\n *\n * If (@param options.propagateTraceparent) is `true`, the function will also generate a `traceparent` value,\n * following the W3C traceparent header format.\n *\n * @returns an object with the tracing data values. The object keys are the name of the tracing key to be used as header\n * or meta tag name.\n */\nfunction getTraceData(\n options = {},\n) {\n const client = options.client || getClient();\n if (!isEnabled() || !client) {\n return {};\n }\n\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getTraceData) {\n return acs.getTraceData(options);\n }\n\n const scope = options.scope || getCurrentScope();\n const span = options.span || getActiveSpan();\n const sentryTrace = span ? spanToTraceHeader(span) : scopeToTraceHeader(scope);\n const dsc = span ? getDynamicSamplingContextFromSpan(span) : getDynamicSamplingContextFromScope(client, scope);\n const baggage = dynamicSamplingContextToSentryBaggageHeader(dsc);\n\n const isValidSentryTraceHeader = TRACEPARENT_REGEXP.test(sentryTrace);\n if (!isValidSentryTraceHeader) {\n debug.warn('Invalid sentry-trace data. Cannot generate trace data');\n return {};\n }\n\n const traceData = {\n 'sentry-trace': sentryTrace,\n baggage,\n };\n\n if (options.propagateTraceparent) {\n traceData.traceparent = span ? spanToTraceparentHeader(span) : scopeToTraceparentHeader(scope);\n }\n\n return traceData;\n}\n\n/**\n * Get a sentry-trace header value for the given scope.\n */\nfunction scopeToTraceHeader(scope) {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateSentryTraceHeader(traceId, propagationSpanId, sampled);\n}\n\nfunction scopeToTraceparentHeader(scope) {\n const { traceId, sampled, propagationSpanId } = scope.getPropagationContext();\n return generateTraceparentHeader(traceId, propagationSpanId, sampled);\n}\n\nexport { getTraceData };\n//# sourceMappingURL=traceData.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { stringMatchesSomePattern } from './string.js';\n\nconst NOT_PROPAGATED_MESSAGE =\n '[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:';\n\n/**\n * Check if a given URL should be propagated to or not.\n * If no url is defined, or no trace propagation targets are defined, this will always return `true`.\n * You can also optionally provide a decision map, to cache decisions and avoid repeated regex lookups.\n */\nfunction shouldPropagateTraceForUrl(\n url,\n tracePropagationTargets,\n decisionMap,\n) {\n if (typeof url !== 'string' || !tracePropagationTargets) {\n return true;\n }\n\n const cachedDecision = decisionMap?.get(url);\n if (cachedDecision !== undefined) {\n DEBUG_BUILD && !cachedDecision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return cachedDecision;\n }\n\n const decision = stringMatchesSomePattern(url, tracePropagationTargets);\n decisionMap?.set(url, decision);\n\n DEBUG_BUILD && !decision && debug.log(NOT_PROPAGATED_MESSAGE, url);\n return decision;\n}\n\nexport { shouldPropagateTraceForUrl };\n//# sourceMappingURL=tracePropagationTargets.js.map\n", + "/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nfunction debounce(func, wait, options) {\n let callbackReturnValue;\n\n let timerId;\n let maxTimerId;\n\n const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0;\n const setTimeoutImpl = options?.setTimeoutImpl || setTimeout;\n\n function invokeFunc() {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers() {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush() {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced() {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeoutImpl(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeoutImpl(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n\nexport { debounce };\n//# sourceMappingURL=debounce.js.map\n", + "/**\n * Transforms a `Headers` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into a simple key-value dict.\n * The header keys will be lower case: e.g. A \"Content-Type\" header will be stored as \"content-type\".\n */\nfunction winterCGHeadersToDict(winterCGHeaders) {\n const headers = {};\n try {\n winterCGHeaders.forEach((value, key) => {\n if (typeof value === 'string') {\n // We check that value is a string even though it might be redundant to make sure prototype pollution is not possible.\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Convert common request headers to a simple dictionary.\n */\nfunction headersToDict(reqHeaders) {\n const headers = Object.create(null);\n\n try {\n Object.entries(reqHeaders).forEach(([key, value]) => {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n });\n } catch {\n // just return the empty headers\n }\n\n return headers;\n}\n\n/**\n * Converts a `Request` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into the format that the `RequestData` integration understands.\n */\nfunction winterCGRequestToRequestData(req) {\n const headers = winterCGHeadersToDict(req.headers);\n\n return {\n method: req.method,\n url: req.url,\n query_string: extractQueryParamsFromUrl(req.url),\n headers,\n // TODO: Can we extract body data from the request?\n };\n}\n\n/**\n * Convert a HTTP request object to RequestEventData to be passed as normalizedRequest.\n * Instead of allowing `PolymorphicRequest` to be passed,\n * we want to be more specific and generally require a http.IncomingMessage-like object.\n */\nfunction httpRequestToRequestData(request\n\n) {\n const headers = request.headers || {};\n\n // Check for x-forwarded-host first, then fall back to host header\n const forwardedHost = typeof headers['x-forwarded-host'] === 'string' ? headers['x-forwarded-host'] : undefined;\n const host = forwardedHost || (typeof headers.host === 'string' ? headers.host : undefined);\n\n // Check for x-forwarded-proto first, then fall back to existing protocol detection\n const forwardedProto = typeof headers['x-forwarded-proto'] === 'string' ? headers['x-forwarded-proto'] : undefined;\n const protocol = forwardedProto || request.protocol || (request.socket?.encrypted ? 'https' : 'http');\n\n const url = request.url || '';\n\n const absoluteUrl = getAbsoluteUrl({\n url,\n host,\n protocol,\n });\n\n // This is non-standard, but may be sometimes set\n // It may be overwritten later by our own body handling\n const data = (request ).body || undefined;\n\n // This is non-standard, but may be set on e.g. Next.js or Express requests\n const cookies = (request ).cookies;\n\n return {\n url: absoluteUrl,\n method: request.method,\n query_string: extractQueryParamsFromUrl(url),\n headers: headersToDict(headers),\n cookies,\n data,\n };\n}\n\nfunction getAbsoluteUrl({\n url,\n protocol,\n host,\n}\n\n) {\n if (url?.startsWith('http')) {\n return url;\n }\n\n if (url && host) {\n return `${protocol}://${host}${url}`;\n }\n\n return undefined;\n}\n\nconst SENSITIVE_HEADER_SNIPPETS = [\n 'auth',\n 'token',\n 'secret',\n 'session', // for the user_session cookie\n 'password',\n 'passwd',\n 'pwd',\n 'key',\n 'jwt',\n 'bearer',\n 'sso',\n 'saml',\n 'csrf',\n 'xsrf',\n 'credentials',\n // Always treat cookie headers as sensitive in case individual key-value cookie pairs cannot properly be extracted\n 'set-cookie',\n 'cookie',\n];\n\nconst PII_HEADER_SNIPPETS = ['x-forwarded-', '-user'];\n\n/**\n * Converts incoming HTTP request or response headers to OpenTelemetry span attributes following semantic conventions.\n * Header names are converted to the format: http..header.\n * where is the header name in lowercase with dashes converted to underscores.\n *\n * @param lifecycle - The lifecycle of the headers, either 'request' or 'response'\n *\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-request-header\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#http-response-header\n *\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-request-header-key\n * @see https://getsentry.github.io/sentry-conventions/attributes/http/#http-response-header-key\n */\nfunction httpHeadersToSpanAttributes(\n headers,\n sendDefaultPii = false,\n lifecycle = 'request',\n) {\n const spanAttributes = {};\n\n try {\n Object.entries(headers).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n\n const lowerCasedHeaderKey = key.toLowerCase();\n const isCookieHeader = lowerCasedHeaderKey === 'cookie' || lowerCasedHeaderKey === 'set-cookie';\n\n if (isCookieHeader && typeof value === 'string' && value !== '') {\n // Set-Cookie: single cookie with attributes (\"name=value; HttpOnly; Secure\")\n // Cookie: multiple cookies separated by \"; \" (\"cookie1=value1; cookie2=value2\")\n const isSetCookie = lowerCasedHeaderKey === 'set-cookie';\n const semicolonIndex = value.indexOf(';');\n const cookieString = isSetCookie && semicolonIndex !== -1 ? value.substring(0, semicolonIndex) : value;\n const cookies = isSetCookie ? [cookieString] : cookieString.split('; ');\n\n for (const cookie of cookies) {\n // Split only at the first '=' to preserve '=' characters in cookie values\n const equalSignIndex = cookie.indexOf('=');\n const cookieKey = equalSignIndex !== -1 ? cookie.substring(0, equalSignIndex) : cookie;\n const cookieValue = equalSignIndex !== -1 ? cookie.substring(equalSignIndex + 1) : '';\n\n const lowerCasedCookieKey = cookieKey.toLowerCase();\n\n addSpanAttribute(\n spanAttributes,\n lowerCasedHeaderKey,\n lowerCasedCookieKey,\n cookieValue,\n sendDefaultPii,\n lifecycle,\n );\n }\n } else {\n addSpanAttribute(spanAttributes, lowerCasedHeaderKey, '', value, sendDefaultPii, lifecycle);\n }\n });\n } catch {\n // Return empty object if there's an error\n }\n\n return spanAttributes;\n}\n\nfunction normalizeAttributeKey(key) {\n return key.replace(/-/g, '_');\n}\n\nfunction addSpanAttribute(\n spanAttributes,\n headerKey,\n cookieKey,\n value,\n sendPii,\n lifecycle,\n) {\n const headerValue = handleHttpHeader(cookieKey || headerKey, value, sendPii);\n if (headerValue == null) {\n return;\n }\n\n const normalizedKey = `http.${lifecycle}.header.${normalizeAttributeKey(headerKey)}${cookieKey ? `.${normalizeAttributeKey(cookieKey)}` : ''}`;\n spanAttributes[normalizedKey] = headerValue;\n}\n\nfunction handleHttpHeader(\n lowerCasedKey,\n value,\n sendPii,\n) {\n const isSensitive = sendPii\n ? SENSITIVE_HEADER_SNIPPETS.some(snippet => lowerCasedKey.includes(snippet))\n : [...PII_HEADER_SNIPPETS, ...SENSITIVE_HEADER_SNIPPETS].some(snippet => lowerCasedKey.includes(snippet));\n\n if (isSensitive) {\n return '[Filtered]';\n } else if (Array.isArray(value)) {\n return value.map(v => (v != null ? String(v) : v)).join(';');\n } else if (typeof value === 'string') {\n return value;\n }\n\n return undefined;\n}\n\n/** Extract the query params from an URL. */\nfunction extractQueryParamsFromUrl(url) {\n // url is path and query string\n if (!url) {\n return;\n }\n\n try {\n // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and\n // hostname as the base. Since the point here is just to grab the query string, it doesn't matter what we use.\n const queryParams = new URL(url, 'http://s.io').search.slice(1);\n return queryParams.length ? queryParams : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport { extractQueryParamsFromUrl, headersToDict, httpHeadersToSpanAttributes, httpRequestToRequestData, winterCGHeadersToDict, winterCGRequestToRequestData };\n//# sourceMappingURL=request.js.map\n", + "import { getClient, getIsolationScope } from './currentScopes.js';\nimport { consoleSandbox } from './utils/debug-logger.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n */\nfunction addBreadcrumb(breadcrumb, hint) {\n const client = getClient();\n const isolationScope = getIsolationScope();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions();\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint))\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n isolationScope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n}\n\nexport { addBreadcrumb };\n//# sourceMappingURL=breadcrumbs.js.map\n", + "import { getClient } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { getOriginalFunction } from '../utils/object.js';\n\nlet originalFunctionToString;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n Function.prototype.toString = function ( ...args) {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() ) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) ;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nconst functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\nexport { functionToStringIntegration };\n//# sourceMappingURL=functiontostring.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { defineIntegration } from '../integration.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getPossibleEventMessages } from '../utils/eventUtils.js';\nimport { getEventDescription } from '../utils/misc.js';\nimport { stringMatchesSomePattern } from '../utils/string.js';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/, // The browser logs this when a ResizeObserver handler takes a bit longer. Usually this is not an actual issue though. It indicates slowness.\n /^Cannot redefine property: googletag$/, // This is thrown when google tag manager is used in combination with an ad blocker\n /^Can't find variable: gmo$/, // Error from Google Search App https://issuetracker.google.com/issues/396043331\n /^undefined is not an object \\(evaluating 'a\\.[A-Z]'\\)$/, // Random error that happens but not actionable or noticeable to end-users.\n /can't redefine non-configurable property \"solana\"/, // Probably a browser extension or custom browser (Brave) throwing this error\n /vv\\(\\)\\.getRestrictions is not a function/, // Error thrown by GTM, seemingly not affecting end-users\n /Can't find variable: _AutofillCallbackHandler/, // Unactionable error in instagram webview https://developers.facebook.com/community/threads/320013549791141/\n /Object Not Found Matching Id:\\d+, MethodName:simulateEvent/, // unactionable error from CEFSharp, a .NET library that embeds chromium in .NET apps\n /^Java exception was raised during method invocation$/, // error from Facebook Mobile browser (https://github.com/getsentry/sentry-javascript/issues/15065)\n];\n\n/** Options for the EventFilters integration */\n\nconst INTEGRATION_NAME = 'EventFilters';\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n */\nconst eventFiltersIntegration = defineIntegration((options = {}) => {\n let mergedOptions;\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n },\n processEvent(event, _hint, client) {\n if (!mergedOptions) {\n const clientOptions = client.getOptions();\n mergedOptions = _mergeOptions(options, clientOptions);\n }\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n});\n\n/**\n * An integration that filters out events (errors and transactions) based on:\n *\n * - (Errors) A curated list of known low-value or irrelevant errors (see {@link DEFAULT_IGNORE_ERRORS})\n * - (Errors) A list of error messages or urls/filenames passed in via\n * - Top level Sentry.init options (`ignoreErrors`, `denyUrls`, `allowUrls`)\n * - The same options passed to the integration directly via @param options\n * - (Transactions/Spans) A list of root span (transaction) names passed in via\n * - Top level Sentry.init option (`ignoreTransactions`)\n * - The same option passed to the integration directly via @param options\n *\n * Events filtered by this integration will not be sent to Sentry.\n *\n * @deprecated this integration was renamed and will be removed in a future major version.\n * Use `eventFiltersIntegration` instead.\n */\nconst inboundFiltersIntegration = defineIntegration(((options = {}) => {\n return {\n ...eventFiltersIntegration(options),\n name: 'InboundFilters',\n };\n}) );\n\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [...(internalOptions.ignoreTransactions || []), ...(clientOptions.ignoreTransactions || [])],\n };\n}\n\nfunction _shouldDropEvent(event, options) {\n if (!event.type) {\n // Filter errors\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isUselessError(event)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to not having an error message, error type or stacktrace.\\nEvent: ${getEventDescription(\n event,\n )}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n } else if (event.type === 'transaction') {\n // Filter transactions\n\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n debug.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n if (!ignoreErrors?.length) {\n return false;\n }\n\n return getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event, ignoreTransactions) {\n if (!ignoreTransactions?.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n if (!denyUrls?.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n if (!allowUrls?.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n // If there are linked exceptions or exception aggregates we only want to match against the top frame of the \"root\" (the main exception)\n // The root always comes last in linked exceptions\n const rootException = [...(event.exception?.values ?? [])]\n .reverse()\n .find(value => value.mechanism?.parent_id === undefined && value.stacktrace?.frames?.length);\n const frames = rootException?.stacktrace?.frames;\n return frames ? _getLastValidUrl(frames) : null;\n } catch {\n DEBUG_BUILD && debug.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nfunction _isUselessError(event) {\n // We only want to consider events for dropping that actually have recorded exception values.\n if (!event.exception?.values?.length) {\n return false;\n }\n\n return (\n // No top-level message\n !event.message &&\n // There are no exception values that have a stacktrace, a non-generic-Error type or value\n !event.exception.values.some(value => value.stacktrace || (value.type && value.type !== 'Error') || value.value)\n );\n}\n\nexport { eventFiltersIntegration, inboundFiltersIntegration };\n//# sourceMappingURL=eventFilters.js.map\n", + "import { isInstanceOf } from './is.js';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nfunction applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation,\n parser,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception?.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException ,\n key,\n event.exception.values,\n originalException,\n 0,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error,\n key,\n prevExceptions,\n exception,\n exceptionId,\n) {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, error[key] );\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key] ,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (isExceptionGroup(error)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId, error);\n const newException = exceptionFromErrorImplementation(parser, childError );\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError ,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction isExceptionGroup(error) {\n return Array.isArray(error.errors);\n}\n\nfunction applyExceptionGroupFieldsForParentException(\n exception,\n exceptionId,\n error,\n) {\n exception.mechanism = {\n handled: true,\n type: 'auto.core.linked_errors',\n ...(isExceptionGroup(error) && { is_exception_group: true }),\n ...exception.mechanism,\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception,\n source,\n exceptionId,\n parentId,\n) {\n exception.mechanism = {\n handled: true,\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\nexport { applyAggregateErrorsToEvent };\n//# sourceMappingURL=aggregate-errors.js.map\n", + "import { defineIntegration } from '../integration.js';\nimport { applyAggregateErrorsToEvent } from '../utils/aggregate-errors.js';\nimport { exceptionFromError } from '../utils/eventbuilder.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(exceptionFromError, options.stackParser, key, limit, event, hint);\n },\n };\n}) ;\n\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\nexport { linkedErrorsIntegration };\n//# sourceMappingURL=linkederrors.js.map\n", + "/**\n * This code was originally copied from the 'cookie` module at v0.5.0 and was simplified for our use case.\n * https://github.com/jshttp/cookie/blob/a0c84147aab6266bdb3996cf4062e93907c0b0fc/index.js\n * It had the following license:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Roman Shtylman \n * Copyright (c) 2015 Douglas Christopher Wilson \n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/**\n * Parses a cookie string\n */\nfunction parseCookie(str) {\n const obj = {};\n let index = 0;\n\n while (index < str.length) {\n const eqIdx = str.indexOf('=', index);\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break;\n }\n\n let endIdx = str.indexOf(';', index);\n\n if (endIdx === -1) {\n endIdx = str.length;\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1;\n continue;\n }\n\n const key = str.slice(index, eqIdx).trim();\n\n // only assign once\n if (undefined === obj[key]) {\n let val = str.slice(eqIdx + 1, endIdx).trim();\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1);\n }\n\n try {\n obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val;\n } catch {\n obj[key] = val;\n }\n }\n\n index = endIdx + 1;\n }\n\n return obj;\n}\n\nexport { parseCookie };\n//# sourceMappingURL=cookie.js.map\n", + "// Vendored / modified from @sergiodxa/remix-utils\n\n// https://github.com/sergiodxa/remix-utils/blob/02af80e12829a53696bfa8f3c2363975cf59f55e/src/server/get-client-ip-address.ts\n// MIT License\n\n// Copyright (c) 2021 Sergio Xalambrí\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// The headers to check, in priority order\nconst ipHeaderNames = [\n 'X-Client-IP',\n 'X-Forwarded-For',\n 'Fly-Client-IP',\n 'CF-Connecting-IP',\n 'Fastly-Client-Ip',\n 'True-Client-Ip',\n 'X-Real-IP',\n 'X-Cluster-Client-IP',\n 'X-Forwarded',\n 'Forwarded-For',\n 'Forwarded',\n 'X-Vercel-Forwarded-For',\n];\n\n/**\n * Get the IP address of the client sending a request.\n *\n * It receives a Request headers object and use it to get the\n * IP address from one of the following headers in order.\n *\n * If the IP address is valid, it will be returned. Otherwise, null will be\n * returned.\n *\n * If the header values contains more than one IP address, the first valid one\n * will be returned.\n */\nfunction getClientIPAddress(headers) {\n // Build a map of lowercase header names to their values for case-insensitive lookup\n // This is needed because headers from different sources may have different casings\n const lowerCaseHeaders = {};\n\n for (const key of Object.keys(headers)) {\n lowerCaseHeaders[key.toLowerCase()] = headers[key];\n }\n\n // This will end up being Array because of the various possible values a header\n // can take\n const headerValues = ipHeaderNames.map((headerName) => {\n const rawValue = lowerCaseHeaders[headerName.toLowerCase()];\n const value = Array.isArray(rawValue) ? rawValue.join(';') : rawValue;\n\n if (headerName === 'Forwarded') {\n return parseForwardedHeader(value);\n }\n\n return value?.split(',').map((v) => v.trim());\n });\n\n // Flatten the array and filter out any falsy entries\n const flattenedHeaderValues = headerValues.reduce((acc, val) => {\n if (!val) {\n return acc;\n }\n\n return acc.concat(val);\n }, []);\n\n // Find the first value which is a valid IP address, if any\n const ipAddress = flattenedHeaderValues.find(ip => ip !== null && isIP(ip));\n\n return ipAddress || null;\n}\n\nfunction parseForwardedHeader(value) {\n if (!value) {\n return null;\n }\n\n for (const part of value.split(';')) {\n if (part.startsWith('for=')) {\n return part.slice(4);\n }\n }\n\n return null;\n}\n\n//\n/**\n * Custom method instead of importing this from `net` package, as this only exists in node\n * Accepts:\n * 127.0.0.1\n * 192.168.1.1\n * 192.168.1.255\n * 255.255.255.255\n * 10.1.1.1\n * 0.0.0.0\n * 2b01:cb19:8350:ed00:d0dd:fa5b:de31:8be5\n *\n * Rejects:\n * 1.1.1.01\n * 30.168.1.255.1\n * 127.1\n * 192.168.1.256\n * -1.2.3.4\n * 1.1.1.1.\n * 3...3\n * 192.168.1.099\n */\nfunction isIP(str) {\n const regex =\n /(?:^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$)|(?:^(?:(?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|(?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/;\n return regex.test(str);\n}\n\nexport { getClientIPAddress, ipHeaderNames };\n//# sourceMappingURL=getIpAddress.js.map\n", + "import { defineIntegration } from '../integration.js';\nimport { parseCookie } from '../utils/cookie.js';\nimport { getClientIPAddress, ipHeaderNames } from '../vendor/getIpAddress.js';\n\n// TODO(v11): Change defaults based on `sendDefaultPii`\nconst DEFAULT_INCLUDE = {\n cookies: true,\n data: true,\n headers: true,\n query_string: true,\n url: true,\n};\n\nconst INTEGRATION_NAME = 'RequestData';\n\nconst _requestDataIntegration = ((options = {}) => {\n const include = {\n ...DEFAULT_INCLUDE,\n ...options.include,\n };\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event, _hint, client) {\n const { sdkProcessingMetadata = {} } = event;\n const { normalizedRequest, ipAddress } = sdkProcessingMetadata;\n\n const includeWithDefaultPiiApplied = {\n ...include,\n ip: include.ip ?? client.getOptions().sendDefaultPii,\n };\n\n if (normalizedRequest) {\n addNormalizedRequestDataToEvent(event, normalizedRequest, { ipAddress }, includeWithDefaultPiiApplied);\n }\n\n return event;\n },\n };\n}) ;\n\n/**\n * Add data about a request to an event. Primarily for use in Node-based SDKs, but included in `@sentry/core`\n * so it can be used in cross-platform SDKs like `@sentry/nextjs`.\n */\nconst requestDataIntegration = defineIntegration(_requestDataIntegration);\n\n/**\n * Add already normalized request data to an event.\n * This mutates the passed in event.\n */\nfunction addNormalizedRequestDataToEvent(\n event,\n req,\n // Data that should not go into `event.request` but is somehow related to requests\n additionalData,\n include,\n) {\n event.request = {\n ...event.request,\n ...extractNormalizedRequestData(req, include),\n };\n\n if (include.ip) {\n const ip = (req.headers && getClientIPAddress(req.headers)) || additionalData.ipAddress;\n if (ip) {\n event.user = {\n ...event.user,\n ip_address: ip,\n };\n }\n }\n}\n\nfunction extractNormalizedRequestData(\n normalizedRequest,\n include,\n) {\n const requestData = {};\n const headers = { ...normalizedRequest.headers };\n\n if (include.headers) {\n requestData.headers = headers;\n\n // Remove the Cookie header in case cookie data should not be included in the event\n if (!include.cookies) {\n delete (headers ).cookie;\n }\n\n // Remove IP headers in case IP data should not be included in the event\n if (!include.ip) {\n ipHeaderNames.forEach(ipHeaderName => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete (headers )[ipHeaderName];\n });\n }\n }\n\n requestData.method = normalizedRequest.method;\n\n if (include.url) {\n requestData.url = normalizedRequest.url;\n }\n\n if (include.cookies) {\n const cookies = normalizedRequest.cookies || (headers?.cookie ? parseCookie(headers.cookie) : undefined);\n requestData.cookies = cookies || {};\n }\n\n if (include.query_string) {\n requestData.query_string = normalizedRequest.query_string;\n }\n\n if (include.data) {\n requestData.data = normalizedRequest.data;\n }\n\n return requestData;\n}\n\nexport { requestDataIntegration };\n//# sourceMappingURL=requestdata.js.map\n", + "import { CONSOLE_LEVELS, originalConsoleMethods } from '../utils/debug-logger.js';\nimport { fill } from '../utils/object.js';\nimport { GLOBAL_OBJ } from '../utils/worldwide.js';\nimport { addHandler, maybeInstrument, triggerHandlers } from './handlers.js';\n\n/**\n * Add an instrumentation handler for when a console.xxx method is called.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addConsoleInstrumentationHandler(handler) {\n const type = 'console';\n addHandler(type, handler);\n maybeInstrument(type, instrumentConsole);\n}\n\nfunction instrumentConsole() {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in GLOBAL_OBJ.console)) {\n return;\n }\n\n fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod) {\n originalConsoleMethods[level] = originalConsoleMethod;\n\n return function (...args) {\n const handlerData = { args, level };\n triggerHandlers('console', handlerData);\n\n const log = originalConsoleMethods[level];\n log?.apply(GLOBAL_OBJ.console, args);\n };\n });\n });\n}\n\nexport { addConsoleInstrumentationHandler };\n//# sourceMappingURL=console.js.map\n", + "/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (\n level === 'warn' ? 'warning' : ['fatal', 'error', 'warning', 'log', 'info', 'debug'].includes(level) ? level : 'log'\n ) ;\n}\n\nexport { severityLevelFromString };\n//# sourceMappingURL=severity.js.map\n", + "// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js\n//\n// Copyright Joyent, Inc.and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/** JSDoc */\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n let up = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\S+:\\\\|\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^/\\\\]+?|)(\\.[^./\\\\]*|))(?:[/\\\\]*)$/;\n/** JSDoc */\nfunction splitPath(filename) {\n // Truncate files names greater than 1024 characters to avoid regex dos\n // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172\n const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename;\n const parts = splitPathRe.exec(truncated);\n return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nfunction resolve(...args) {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : '/';\n\n // Skip empty entries\n if (!path) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(\n resolvedPath.split('/').filter(p => !!p),\n !resolvedAbsolute,\n ).join('/');\n\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr) {\n let start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') {\n break;\n }\n }\n\n let end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') {\n break;\n }\n }\n\n if (start > end) {\n return [];\n }\n return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nfunction relative(from, to) {\n /* eslint-disable no-param-reassign */\n from = resolve(from).slice(1);\n to = resolve(to).slice(1);\n /* eslint-enable no-param-reassign */\n\n const fromParts = trim(from.split('/'));\n const toParts = trim(to.split('/'));\n\n const length = Math.min(fromParts.length, toParts.length);\n let samePartsLength = length;\n for (let i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n let outputParts = [];\n for (let i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nfunction normalizePath(path) {\n const isPathAbsolute = isAbsolute(path);\n const trailingSlash = path.slice(-1) === '/';\n\n // Normalize the path\n let normalizedPath = normalizeArray(\n path.split('/').filter(p => !!p),\n !isPathAbsolute,\n ).join('/');\n\n if (!normalizedPath && !isPathAbsolute) {\n normalizedPath = '.';\n }\n if (normalizedPath && trailingSlash) {\n normalizedPath += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nfunction isAbsolute(path) {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nfunction join(...args) {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nfunction dirname(path) {\n const result = splitPath(path);\n const root = result[0] || '';\n let dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.slice(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\n/** JSDoc */\nfunction basename(path, ext) {\n let f = splitPath(path)[2] || '';\n if (ext && f.slice(ext.length * -1) === ext) {\n f = f.slice(0, f.length - ext.length);\n }\n return f;\n}\n\nexport { basename, dirname, isAbsolute, join, normalizePath, relative, resolve };\n//# sourceMappingURL=path.js.map\n", + "import { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes.js';\nimport { debug } from '../utils/debug-logger.js';\nimport { getActiveSpan } from '../utils/spanUtils.js';\nimport { SPAN_STATUS_ERROR } from '../tracing/spanstatus.js';\nimport { startSpanManual } from '../tracing/trace.js';\n\n// Portable instrumentation for https://github.com/porsager/postgres\n// This can be used in any environment (Node.js, Cloudflare Workers, etc.)\n// without depending on OpenTelemetry module hooking.\n\n\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\nconst CONNECTION_CONTEXT_SYMBOL = Symbol('sentryPostgresConnectionContext');\n\n// Use the same Symbol.for() markers as the Node.js OTel instrumentation\n// so that both approaches recognize each other and prevent double-wrapping.\nconst INSTRUMENTED_MARKER = Symbol.for('sentry.instrumented.postgresjs');\n// Marker to track if a query was created from an instrumented sql instance.\n// This prevents double-spanning when both the wrapper and the Node.js Query.prototype\n// fallback patch are active simultaneously.\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\n/**\n * Instruments a postgres.js `sql` instance with Sentry tracing.\n *\n * This is a portable instrumentation function that works in any environment\n * (Node.js, Cloudflare Workers, etc.) without depending on OpenTelemetry.\n *\n * @example\n * ```javascript\n * import postgres from 'postgres';\n * import * as Sentry from '@sentry/cloudflare'; // or '@sentry/deno'\n *\n * const sql = Sentry.instrumentPostgresJsSql(\n * postgres({ host: 'localhost', database: 'mydb' })\n * );\n *\n * // All queries now create Sentry spans\n * await sql`SELECT * FROM users WHERE id = ${userId}`;\n * ```\n */\nfunction instrumentPostgresJsSql(sql, options) {\n if (!sql || typeof sql !== 'function') {\n DEBUG_BUILD && debug.warn('instrumentPostgresJsSql: provided value is not a valid postgres.js sql instance');\n return sql;\n }\n\n return _instrumentSqlInstance(sql, { requireParentSpan: true, ...options }) ;\n}\n\n/**\n * Instruments a sql instance by wrapping its query execution methods.\n */\nfunction _instrumentSqlInstance(\n sql,\n options,\n parentConnectionContext,\n) {\n // Check if already instrumented to prevent double-wrapping\n // Using Symbol.for() ensures the marker survives proxying\n if ((sql )[INSTRUMENTED_MARKER]) {\n return sql;\n }\n\n // Wrap the sql function to intercept query creation\n const proxiedSql = new Proxy(sql , {\n apply(target, thisArg, argumentsList) {\n const query = Reflect.apply(target, thisArg, argumentsList);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query , proxiedSql, options);\n }\n\n return query;\n },\n get(target, prop) {\n const original = (target )[prop];\n\n if (typeof prop !== 'string' || typeof original !== 'function') {\n return original;\n }\n\n // Wrap methods that return PendingQuery objects (unsafe, file)\n if (prop === 'unsafe' || prop === 'file') {\n return _wrapQueryMethod(original , target, proxiedSql, options);\n }\n\n // Wrap begin and reserve (not savepoint to avoid duplicate spans)\n if (prop === 'begin' || prop === 'reserve') {\n return _wrapCallbackMethod(original , target, proxiedSql, options);\n }\n\n return original;\n },\n });\n\n // Use provided parent context if available, otherwise extract from sql.options\n if (parentConnectionContext) {\n (proxiedSql )[CONNECTION_CONTEXT_SYMBOL] = parentConnectionContext;\n } else {\n _attachConnectionContext(sql, proxiedSql );\n }\n\n // Mark both the original and proxy as instrumented to prevent double-wrapping\n (sql )[INSTRUMENTED_MARKER] = true;\n (proxiedSql )[INSTRUMENTED_MARKER] = true;\n\n return proxiedSql;\n}\n\n/**\n * Wraps query-returning methods (unsafe, file) to ensure their queries are instrumented.\n */\nfunction _wrapQueryMethod(\n original,\n target,\n proxiedSql,\n options,\n) {\n return function ( ...args) {\n const query = Reflect.apply(original, target, args);\n\n if (query && typeof query === 'object' && 'handle' in query) {\n _wrapSingleQueryHandle(query , proxiedSql, options);\n }\n\n return query;\n };\n}\n\n/**\n * Wraps callback-based methods (begin, reserve) to recursively instrument Sql instances.\n * Note: These methods can also be used as tagged templates, which we pass through unchanged.\n *\n * Savepoint is not wrapped to avoid complex nested transaction instrumentation issues.\n * Queries within savepoint callbacks are still instrumented through the parent transaction's Sql instance.\n */\nfunction _wrapCallbackMethod(\n original,\n target,\n parentSqlInstance,\n options,\n) {\n return function ( ...args) {\n // Extract parent context to propagate to child instances\n const parentContext = (parentSqlInstance )[CONNECTION_CONTEXT_SYMBOL]\n\n;\n\n // Check if this is a callback-based call by verifying the last argument is a function\n const isCallbackBased = typeof args[args.length - 1] === 'function';\n\n if (!isCallbackBased) {\n // Not a callback-based call - could be tagged template or promise-based\n const result = Reflect.apply(original, target, args);\n // If result is a Promise (e.g., reserve() without callback), instrument the resolved Sql instance\n if (result && typeof (result ).then === 'function') {\n return (result ).then((sqlInstance) => {\n return _instrumentSqlInstance(sqlInstance, options, parentContext);\n });\n }\n return result;\n }\n\n // Callback-based call: wrap the callback to instrument the Sql instance\n const callback = (args.length === 1 ? args[0] : args[1]) ;\n const wrappedCallback = function (sqlInstance) {\n const instrumentedSql = _instrumentSqlInstance(sqlInstance, options, parentContext);\n return callback(instrumentedSql);\n };\n\n const newArgs = args.length === 1 ? [wrappedCallback] : [args[0], wrappedCallback];\n return Reflect.apply(original, target, newArgs);\n };\n}\n\n/**\n * Wraps a single query's handle method to create spans.\n */\nfunction _wrapSingleQueryHandle(\n query,\n sqlInstance,\n options,\n) {\n // Prevent double wrapping - check if the handle itself is already wrapped\n if ((query.handle )?.__sentryWrapped) {\n return;\n }\n\n // Mark this query as coming from an instrumented sql instance.\n // This prevents the Node.js Query.prototype fallback patch from double-spanning.\n (query )[QUERY_FROM_INSTRUMENTED_SQL] = true;\n\n const originalHandle = query.handle ;\n\n // IMPORTANT: We must replace the handle function directly, not use a Proxy,\n // because Query.then() internally calls this.handle(), which would bypass a Proxy wrapper.\n const wrappedHandle = async function ( ...args) {\n if (!_shouldCreateSpans(options)) {\n return originalHandle.apply(this, args);\n }\n\n const fullQuery = _reconstructQuery(query.strings);\n const sanitizedSqlQuery = _sanitizeSqlQuery(fullQuery);\n\n return startSpanManual(\n {\n name: sanitizedSqlQuery || 'postgresjs.query',\n op: 'db',\n },\n (span) => {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.postgresjs');\n\n span.setAttributes({\n 'db.system.name': 'postgres',\n 'db.query.text': sanitizedSqlQuery,\n });\n\n const connectionContext = sqlInstance\n ? ((sqlInstance )[CONNECTION_CONTEXT_SYMBOL]\n\n)\n : undefined;\n\n _setConnectionAttributes(span, connectionContext);\n\n if (options.requestHook) {\n try {\n options.requestHook(span, sanitizedSqlQuery, connectionContext);\n } catch (e) {\n span.setAttribute('sentry.hook.error', 'requestHook failed');\n DEBUG_BUILD && debug.error('Error in requestHook for PostgresJs instrumentation:', e);\n }\n }\n\n const queryWithCallbacks = this\n\n;\n\n queryWithCallbacks.resolve = new Proxy(queryWithCallbacks.resolve , {\n apply: (resolveTarget, resolveThisArg, resolveArgs) => {\n try {\n _setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n }\n\n return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n },\n });\n\n queryWithCallbacks.reject = new Proxy(queryWithCallbacks.reject , {\n apply: (rejectTarget, rejectThisArg, rejectArgs) => {\n try {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: rejectArgs?.[0]?.message || 'unknown_error',\n });\n\n span.setAttribute('db.response.status_code', rejectArgs?.[0]?.code || 'unknown');\n span.setAttribute('error.type', rejectArgs?.[0]?.name || 'unknown');\n\n _setOperationName(span, sanitizedSqlQuery);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n }\n return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n },\n });\n\n // Handle synchronous errors that might occur before promise is created\n try {\n return originalHandle.apply(this, args);\n } catch (e) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: e instanceof Error ? e.message : 'unknown_error',\n });\n span.end();\n throw e;\n }\n },\n );\n };\n\n (wrappedHandle ).__sentryWrapped = true;\n query.handle = wrappedHandle;\n}\n\n/**\n * Determines whether a span should be created based on the current context.\n * If `requireParentSpan` is set to true in the options, a span will\n * only be created if there is a parent span available.\n */\nfunction _shouldCreateSpans(options) {\n const hasParentSpan = getActiveSpan() !== undefined;\n return hasParentSpan || !options.requireParentSpan;\n}\n\n/**\n * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n *\n * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n * strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n * returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n *\n * @internal Exported for testing only\n */\nfunction _reconstructQuery(strings) {\n if (!strings?.length) {\n return undefined;\n }\n if (strings.length === 1) {\n return strings[0] || undefined;\n }\n // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n}\n\n/**\n * Sanitize SQL query as per the OTEL semantic conventions\n * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n *\n * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n *\n * @internal Exported for testing only\n */\nfunction _sanitizeSqlQuery(sqlQuery) {\n if (!sqlQuery) {\n return 'Unknown SQL Query';\n }\n\n return (\n sqlQuery\n // Remove comments first (they may contain newlines and extra spaces)\n .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n .replace(/;\\s*$/, '') // Remove trailing semicolons\n // Collapse whitespace to a single space (after removing comments)\n .replace(/\\s+/g, ' ')\n .trim() // Remove extra spaces and trim\n // Sanitize hex/binary literals before string literals\n .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n // Sanitize string literals (handles escaped quotes)\n .replace(/'(?:[^']|'')*'/g, '?')\n // Sanitize hex numbers\n .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n // Sanitize boolean literals\n .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n .replace(/(? {\n const levels = new Set(options.levels || CONSOLE_LEVELS);\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.has(level)) {\n return;\n }\n\n addConsoleBreadcrumb(level, args);\n });\n },\n };\n});\n\n/**\n * Capture a console breadcrumb.\n *\n * Exported just for tests.\n */\nfunction addConsoleBreadcrumb(level, args) {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: args,\n logger: 'console',\n },\n level: severityLevelFromString(level),\n message: formatConsoleArgs(args),\n };\n\n if (level === 'assert') {\n if (args[0] === false) {\n const assertionArgs = args.slice(1);\n breadcrumb.message =\n assertionArgs.length > 0 ? `Assertion failed: ${formatConsoleArgs(assertionArgs)}` : 'Assertion failed';\n breadcrumb.data.arguments = assertionArgs;\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: args,\n level,\n });\n}\n\nfunction formatConsoleArgs(values) {\n return 'util' in GLOBAL_OBJ && typeof (GLOBAL_OBJ ).util.format === 'function'\n ? (GLOBAL_OBJ ).util.format(...values)\n : safeJoin(values, ' ');\n}\n\nexport { addConsoleBreadcrumb, consoleIntegration };\n//# sourceMappingURL=console.js.map\n", + "import { getCurrentScope, getIsolationScope } from '../currentScopes.js';\nimport { defineIntegration } from '../integration.js';\nimport { GEN_AI_CONVERSATION_ID_ATTRIBUTE } from '../semanticAttributes.js';\n\nconst INTEGRATION_NAME = 'ConversationId';\n\nconst _conversationIdIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n client.on('spanStart', (span) => {\n const scopeData = getCurrentScope().getScopeData();\n const isolationScopeData = getIsolationScope().getScopeData();\n\n const conversationId = scopeData.conversationId || isolationScopeData.conversationId;\n\n if (conversationId) {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, conversationId);\n }\n });\n },\n };\n}) ;\n\n/**\n * Automatically applies conversation ID from scope to spans.\n *\n * This integration reads the conversation ID from the current or isolation scope\n * and applies it to spans when they start. This ensures the conversation ID is\n * available for all AI-related operations.\n */\nconst conversationIdIntegration = defineIntegration(_conversationIdIntegration);\n\nexport { conversationIdIntegration };\n//# sourceMappingURL=conversationId.js.map\n", + "import { _INTERNAL_captureMetric } from './internal.js';\n\n/**\n * Options for capturing a metric.\n */\n\n/**\n * Capture a metric with the given type, name, and value.\n *\n * @param type - The type of the metric.\n * @param name - The name of the metric.\n * @param value - The value of the metric.\n * @param options - Options for capturing the metric.\n */\nfunction captureMetric(type, name, value, options) {\n _INTERNAL_captureMetric(\n { type, name, value, unit: options?.unit, attributes: options?.attributes },\n { scope: options?.scope },\n );\n}\n\n/**\n * @summary Increment a counter metric.\n *\n * @param name - The name of the counter metric.\n * @param value - The value to increment by (defaults to 1).\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.count('api.requests', 1, {\n * attributes: {\n * endpoint: '/api/users',\n * method: 'GET',\n * status: 200\n * }\n * });\n * ```\n *\n * @example With custom value\n *\n * ```\n * Sentry.metrics.count('items.processed', 5, {\n * attributes: {\n * processor: 'batch-processor',\n * queue: 'high-priority'\n * }\n * });\n * ```\n */\nfunction count(name, value = 1, options) {\n captureMetric('counter', name, value, options);\n}\n\n/**\n * @summary Set a gauge metric to a specific value.\n *\n * @param name - The name of the gauge metric.\n * @param value - The current value of the gauge.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.gauge('memory.usage', 1024, {\n * unit: 'megabyte',\n * attributes: {\n * process: 'web-server',\n * region: 'us-east-1'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.gauge('active.connections', 42, {\n * attributes: {\n * server: 'api-1',\n * protocol: 'websocket'\n * }\n * });\n * ```\n */\nfunction gauge(name, value, options) {\n captureMetric('gauge', name, value, options);\n}\n\n/**\n * @summary Record a value in a distribution metric.\n *\n * @param name - The name of the distribution metric.\n * @param value - The value to record in the distribution.\n * @param options - Options for capturing the metric.\n *\n * @example\n *\n * ```\n * Sentry.metrics.distribution('task.duration', 500, {\n * unit: 'millisecond',\n * attributes: {\n * task: 'data-processing',\n * priority: 'high'\n * }\n * });\n * ```\n *\n * @example Without unit\n *\n * ```\n * Sentry.metrics.distribution('batch.size', 100, {\n * attributes: {\n * processor: 'batch-1',\n * type: 'async'\n * }\n * });\n * ```\n */\nfunction distribution(name, value, options) {\n captureMetric('distribution', name, value, options);\n}\n\nexport { count, distribution, gauge };\n//# sourceMappingURL=public-api.js.map\n", + "/**\n * OpenAI Integration Telemetry Attributes\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n */\n\n// =============================================================================\n// OPENTELEMETRY SEMANTIC CONVENTIONS FOR GENAI\n// =============================================================================\n\n/**\n * The input messages sent to the model\n */\nconst GEN_AI_PROMPT_ATTRIBUTE = 'gen_ai.prompt';\n\n/**\n * The Generative AI system being used\n * For OpenAI, this should always be \"openai\"\n */\nconst GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * The name of the model as requested\n * Examples: \"gpt-4\", \"gpt-3.5-turbo\"\n */\nconst GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Whether streaming was enabled for the request\n */\nconst GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream';\n\n/**\n * The temperature setting for the model request\n */\nconst GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * The maximum number of tokens requested\n */\nconst GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * The frequency penalty setting for the model request\n */\nconst GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * The presence penalty setting for the model request\n */\nconst GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * The top_p (nucleus sampling) setting for the model request\n */\nconst GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * The top_k setting for the model request\n */\nconst GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * The encoding format for the model request\n */\nconst GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE = 'gen_ai.request.encoding_format';\n\n/**\n * The dimensions for the model request\n */\nconst GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE = 'gen_ai.request.dimensions';\n\n/**\n * Array of reasons why the model stopped generating tokens\n */\nconst GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * The name of the model that generated the response\n */\nconst GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * The unique identifier for the response\n */\nconst GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * The reason why the model stopped generating tokens\n */\nconst GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE = 'gen_ai.response.stop_reason';\n\n/**\n * The number of tokens used in the prompt\n */\nconst GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * The number of tokens used in the response\n */\nconst GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n/**\n * The total number of tokens used (input + output)\n */\nconst GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens';\n\n/**\n * The operation name\n */\nconst GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';\n\n/**\n * Original length of messages array, used to indicate truncations had occured\n */\nconst GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'sentry.sdk_meta.gen_ai.input.messages.original_length';\n\n/**\n * The prompt messages\n * Only recorded when recordInputs is enabled\n */\nconst GEN_AI_INPUT_MESSAGES_ATTRIBUTE = 'gen_ai.input.messages';\n\n/**\n * The model's response messages including text and tool calls\n * Only recorded when recordOutputs is enabled\n * Format: stringified array of message objects with role, parts, and finish_reason\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-output-messages\n */\nconst GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE = 'gen_ai.output.messages';\n\n/**\n * The system instructions extracted from system messages\n * Only recorded when recordInputs is enabled\n * According to OpenTelemetry spec: https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-system-instructions\n */\nconst GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE = 'gen_ai.system_instructions';\n\n/**\n * The response text\n * Only recorded when recordOutputs is enabled\n */\nconst GEN_AI_RESPONSE_TEXT_ATTRIBUTE = 'gen_ai.response.text';\n\n/**\n * The available tools from incoming request\n * Only recorded when recordInputs is enabled\n */\nconst GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools';\n\n/**\n * Whether the response is a streaming response\n */\nconst GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = 'gen_ai.response.streaming';\n\n/**\n * The tool calls from the response\n * Only recorded when recordOutputs is enabled\n */\nconst GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls';\n\n/**\n * The agent name\n */\nconst GEN_AI_AGENT_NAME_ATTRIBUTE = 'gen_ai.agent.name';\n\n/**\n * The pipeline name\n */\nconst GEN_AI_PIPELINE_NAME_ATTRIBUTE = 'gen_ai.pipeline.name';\n\n/**\n * The conversation ID for linking messages across API calls\n * For OpenAI Assistants API: thread_id\n * For LangGraph: configurable.thread_id\n */\nconst GEN_AI_CONVERSATION_ID_ATTRIBUTE = 'gen_ai.conversation.id';\n\n/**\n * The number of cache creation input tokens used\n */\nconst GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_creation_input_tokens';\n\n/**\n * The number of cache read input tokens used\n */\nconst GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.cache_read_input_tokens';\n\n/**\n * The number of cache write input tokens used\n */\nconst GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE = 'gen_ai.usage.input_tokens.cache_write';\n\n/**\n * The number of cached input tokens that were used\n */\nconst GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE = 'gen_ai.usage.input_tokens.cached';\n\n/**\n * The span operation name for invoking an agent\n */\nconst GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE = 'gen_ai.invoke_agent';\n\n/**\n * The span operation name for generating text\n */\nconst GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_text';\n\n/**\n * The span operation name for streaming text\n */\nconst GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_text';\n\n/**\n * The span operation name for generating object\n */\nconst GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE = 'gen_ai.generate_object';\n\n/**\n * The span operation name for streaming object\n */\nconst GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE = 'gen_ai.stream_object';\n\n/**\n * The embeddings input\n * Only recorded when recordInputs is enabled\n */\nconst GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE = 'gen_ai.embeddings.input';\n\n/**\n * The span operation name for embedding\n */\nconst GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for embedding many\n */\nconst GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE = 'gen_ai.embeddings';\n\n/**\n * The span operation name for reranking\n */\nconst GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE = 'gen_ai.rerank';\n\n/**\n * The span operation name for executing a tool\n */\nconst GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE = 'gen_ai.execute_tool';\n\n/**\n * The tool name for tool call spans\n */\nconst GEN_AI_TOOL_NAME_ATTRIBUTE = 'gen_ai.tool.name';\n\n/**\n * The tool call ID\n */\nconst GEN_AI_TOOL_CALL_ID_ATTRIBUTE = 'gen_ai.tool.call.id';\n\n/**\n * The tool type (e.g., 'function')\n */\nconst GEN_AI_TOOL_TYPE_ATTRIBUTE = 'gen_ai.tool.type';\n\n/**\n * The tool input/arguments\n */\nconst GEN_AI_TOOL_INPUT_ATTRIBUTE = 'gen_ai.tool.input';\n\n/**\n * The tool output/result\n */\nconst GEN_AI_TOOL_OUTPUT_ATTRIBUTE = 'gen_ai.tool.output';\n\n/**\n * The description of the tool being used\n * @see https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-description\n */\nconst GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE = 'gen_ai.tool.description';\n\n// =============================================================================\n// OPENAI-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/**\n * The response ID from OpenAI\n */\nconst OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id';\n\n/**\n * The response model from OpenAI\n */\nconst OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model';\n\n/**\n * The response timestamp from OpenAI (ISO string)\n */\nconst OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp';\n\n/**\n * The number of completion tokens used\n */\nconst OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens';\n\n/**\n * The number of prompt tokens used\n */\nconst OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'openai.usage.prompt_tokens';\n\n// =============================================================================\n// OPENAI OPERATIONS\n// =============================================================================\n\n/**\n * OpenAI API operations following OpenTelemetry semantic conventions\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nconst OPENAI_OPERATIONS = {\n CHAT: 'chat',\n EMBEDDINGS: 'embeddings',\n} ;\n\n// =============================================================================\n// ANTHROPIC AI OPERATIONS\n// =============================================================================\n\n/**\n * The response timestamp from Anthropic AI (ISO string)\n */\nconst ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp';\n\nexport { ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE, GEN_AI_AGENT_NAME_ATTRIBUTE, GEN_AI_CONVERSATION_ID_ATTRIBUTE, GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE, GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE, GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE, GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE, GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE, GEN_AI_PIPELINE_NAME_ATTRIBUTE, GEN_AI_PROMPT_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE, GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_STREAM_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_TOP_K_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, GEN_AI_RESPONSE_STREAMING_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE, GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE, GEN_AI_TOOL_TYPE_ATTRIBUTE, GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, OPENAI_OPERATIONS, OPENAI_RESPONSE_ID_ATTRIBUTE, OPENAI_RESPONSE_MODEL_ATTRIBUTE, OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE, OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE };\n//# sourceMappingURL=gen-ai-attributes.js.map\n", + "// Global map to track tool call IDs to their corresponding span contexts.\n// This allows us to capture tool errors and link them to the correct span\n// without keeping full Span objects (and their potentially large attributes) alive.\nconst toolCallSpanContextMap = new Map();\n\n// Operation sets for efficient mapping to OpenTelemetry semantic convention values\nconst INVOKE_AGENT_OPS = new Set(['ai.generateText', 'ai.streamText', 'ai.generateObject', 'ai.streamObject']);\n\nconst GENERATE_CONTENT_OPS = new Set([\n 'ai.generateText.doGenerate',\n 'ai.streamText.doStream',\n 'ai.generateObject.doGenerate',\n 'ai.streamObject.doStream',\n]);\n\nconst EMBEDDINGS_OPS = new Set(['ai.embed.doEmbed', 'ai.embedMany.doEmbed']);\n\nconst RERANK_OPS = new Set(['ai.rerank.doRerank']);\n\nconst DO_SPAN_NAME_PREFIX = {\n 'ai.embed.doEmbed': 'embeddings',\n 'ai.embedMany.doEmbed': 'embeddings',\n 'ai.rerank.doRerank': 'rerank',\n};\n\nexport { DO_SPAN_NAME_PREFIX, EMBEDDINGS_OPS, GENERATE_CONTENT_OPS, INVOKE_AGENT_OPS, RERANK_OPS, toolCallSpanContextMap };\n//# sourceMappingURL=constants.js.map\n", + "/**\n * Inline media content source, with a potentially very large base64\n * blob or data: uri.\n */\n\n/**\n * Check if a content part is an OpenAI/Anthropic media source\n */\nfunction isContentMedia(part) {\n if (!part || typeof part !== 'object') return false;\n\n return (\n isContentMediaSource(part) ||\n hasInlineData(part) ||\n hasImageUrl(part) ||\n hasInputAudio(part) ||\n hasFileData(part) ||\n hasMediaTypeData(part) ||\n hasVercelFileData(part) ||\n hasVercelImageData(part) ||\n hasBlobOrBase64Type(part) ||\n hasB64Json(part) ||\n hasImageGenerationResult(part) ||\n hasDataUri(part)\n );\n}\n\nfunction hasImageUrl(part) {\n if (!('image_url' in part)) return false;\n if (typeof part.image_url === 'string') return part.image_url.startsWith('data:');\n return hasNestedImageUrl(part);\n}\n\nfunction hasNestedImageUrl(part) {\n return (\n 'image_url' in part &&\n !!part.image_url &&\n typeof part.image_url === 'object' &&\n 'url' in part.image_url &&\n typeof part.image_url.url === 'string' &&\n part.image_url.url.startsWith('data:')\n );\n}\n\nfunction isContentMediaSource(part) {\n return 'type' in part && typeof part.type === 'string' && 'source' in part && isContentMedia(part.source);\n}\n\nfunction hasInlineData(part) {\n return (\n 'inlineData' in part &&\n !!part.inlineData &&\n typeof part.inlineData === 'object' &&\n 'data' in part.inlineData &&\n typeof part.inlineData.data === 'string'\n );\n}\n\nfunction hasInputAudio(part) {\n return (\n 'type' in part &&\n part.type === 'input_audio' &&\n 'input_audio' in part &&\n !!part.input_audio &&\n typeof part.input_audio === 'object' &&\n 'data' in part.input_audio &&\n typeof part.input_audio.data === 'string'\n );\n}\n\nfunction hasFileData(part) {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'file' in part &&\n !!part.file &&\n typeof part.file === 'object' &&\n 'file_data' in part.file &&\n typeof part.file.file_data === 'string'\n );\n}\n\nfunction hasMediaTypeData(part) {\n return 'media_type' in part && typeof part.media_type === 'string' && 'data' in part;\n}\n\n/**\n * Check for Vercel AI SDK file format: { type: \"file\", mediaType: \"...\", data: \"...\" }\n * Only matches base64/binary data, not HTTP/HTTPS URLs (which should be preserved).\n */\nfunction hasVercelFileData(part) {\n return (\n 'type' in part &&\n part.type === 'file' &&\n 'mediaType' in part &&\n typeof part.mediaType === 'string' &&\n 'data' in part &&\n typeof part.data === 'string' &&\n // Only strip base64/binary data, not HTTP/HTTPS URLs which should be preserved as references\n !part.data.startsWith('http://') &&\n !part.data.startsWith('https://')\n );\n}\n\n/**\n * Check for Vercel AI SDK image format: { type: \"image\", image: \"base64...\", mimeType?: \"...\" }\n * Only matches base64/data URIs, not HTTP/HTTPS URLs (which should be preserved).\n * Note: mimeType is optional in Vercel AI SDK image parts.\n */\nfunction hasVercelImageData(part) {\n return (\n 'type' in part &&\n part.type === 'image' &&\n 'image' in part &&\n typeof part.image === 'string' &&\n // Only strip base64/data URIs, not HTTP/HTTPS URLs which should be preserved as references\n !part.image.startsWith('http://') &&\n !part.image.startsWith('https://')\n );\n}\n\nfunction hasBlobOrBase64Type(part) {\n return 'type' in part && (part.type === 'blob' || part.type === 'base64');\n}\n\nfunction hasB64Json(part) {\n return 'b64_json' in part;\n}\n\nfunction hasImageGenerationResult(part) {\n return 'type' in part && 'result' in part && part.type === 'image_generation';\n}\n\nfunction hasDataUri(part) {\n return 'uri' in part && typeof part.uri === 'string' && part.uri.startsWith('data:');\n}\n\nconst REMOVED_STRING = '[Blob substitute]';\n\nconst MEDIA_FIELDS = ['image_url', 'data', 'content', 'b64_json', 'result', 'uri', 'image'] ;\n\n/**\n * Replace inline binary data in a single media content part with a placeholder.\n */\nfunction stripInlineMediaFromSingleMessage(part) {\n const strip = { ...part };\n if (isContentMedia(strip.source)) {\n strip.source = stripInlineMediaFromSingleMessage(strip.source);\n }\n if (hasInlineData(part)) {\n strip.inlineData = { ...part.inlineData, data: REMOVED_STRING };\n }\n if (hasNestedImageUrl(part)) {\n strip.image_url = { ...part.image_url, url: REMOVED_STRING };\n }\n if (hasInputAudio(part)) {\n strip.input_audio = { ...part.input_audio, data: REMOVED_STRING };\n }\n if (hasFileData(part)) {\n strip.file = { ...part.file, file_data: REMOVED_STRING };\n }\n for (const field of MEDIA_FIELDS) {\n if (typeof strip[field] === 'string') strip[field] = REMOVED_STRING;\n }\n return strip;\n}\n\nexport { isContentMedia, stripInlineMediaFromSingleMessage };\n//# sourceMappingURL=mediaStripping.js.map\n", + "import { isContentMedia, stripInlineMediaFromSingleMessage } from './mediaStripping.js';\n\n/**\n * Default maximum size in bytes for GenAI messages.\n * Messages exceeding this limit will be truncated.\n */\nconst DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT = 20000;\n\n/**\n * Message format used by OpenAI and Anthropic APIs.\n */\n\n/**\n * Calculate the UTF-8 byte length of a string.\n */\nconst utf8Bytes = (text) => {\n return new TextEncoder().encode(text).length;\n};\n\n/**\n * Calculate the UTF-8 byte length of a value's JSON representation.\n */\nconst jsonBytes = (value) => {\n return utf8Bytes(JSON.stringify(value));\n};\n\n/**\n * Truncate a string to fit within maxBytes (inclusive) when encoded as UTF-8.\n * Uses binary search for efficiency with multi-byte characters.\n *\n * @param text - The string to truncate\n * @param maxBytes - Maximum byte length (inclusive, UTF-8 encoded)\n * @returns Truncated string whose UTF-8 byte length is at most maxBytes\n */\nfunction truncateTextByBytes(text, maxBytes) {\n if (utf8Bytes(text) <= maxBytes) {\n return text;\n }\n\n let low = 0;\n let high = text.length;\n let bestFit = '';\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = text.slice(0, mid);\n const byteSize = utf8Bytes(candidate);\n\n if (byteSize <= maxBytes) {\n bestFit = candidate;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n return bestFit;\n}\n\n/**\n * Extract text content from a message item.\n * Handles plain strings and objects with a text property.\n *\n * @returns The text content\n */\nfunction getItemText(item) {\n if (typeof item === 'string') {\n return item;\n }\n if ('text' in item && typeof item.text === 'string') {\n return item.text;\n }\n return '';\n}\n\n/**\n * Create a new item with updated text content while preserving the original structure.\n *\n * @param item - Original item (string or object)\n * @param text - New text content\n * @returns New item with updated text\n */\nfunction withItemText(item, text) {\n if (typeof item === 'string') {\n return text;\n }\n return { ...item, text };\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content format.\n */\nfunction isContentMessage(message) {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'content' in message &&\n typeof (message ).content === 'string'\n );\n}\n\n/**\n * Check if a message has the OpenAI/Anthropic content array format.\n */\nfunction isContentArrayMessage(message) {\n return message !== null && typeof message === 'object' && 'content' in message && Array.isArray(message.content);\n}\n\n/**\n * Check if a message has the Google GenAI parts format.\n */\nfunction isPartsMessage(message) {\n return (\n message !== null &&\n typeof message === 'object' &&\n 'parts' in message &&\n Array.isArray((message ).parts) &&\n (message ).parts.length > 0\n );\n}\n\n/**\n * Truncate a message with `content: string` format (OpenAI/Anthropic).\n *\n * @param message - Message with content property\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateContentMessage(message, maxBytes) {\n // Calculate overhead (message structure without content)\n const emptyMessage = { ...message, content: '' };\n const overhead = jsonBytes(emptyMessage);\n const availableForContent = maxBytes - overhead;\n\n if (availableForContent <= 0) {\n return [];\n }\n\n const truncatedContent = truncateTextByBytes(message.content, availableForContent);\n return [{ ...message, content: truncatedContent }];\n}\n\n/**\n * Extracts the array items and their key from an array-based message.\n * Returns `null` key if neither `parts` nor `content` is a valid array.\n */\nfunction getArrayItems(message)\n\n {\n if ('parts' in message && Array.isArray(message.parts)) {\n return { key: 'parts', items: message.parts };\n }\n if ('content' in message && Array.isArray(message.content)) {\n return { key: 'content', items: message.content };\n }\n return { key: null, items: [] };\n}\n\n/**\n * Truncate a message with an array-based format.\n * Handles both `parts: [...]` (Google GenAI) and `content: [...]` (OpenAI/Anthropic multimodal).\n * Keeps as many complete items as possible, only truncating the first item if needed.\n *\n * @param message - Message with parts or content array\n * @param maxBytes - Maximum byte limit\n * @returns Array with truncated message, or empty array if it doesn't fit\n */\nfunction truncateArrayMessage(message, maxBytes) {\n const { key, items } = getArrayItems(message);\n\n if (key === null || items.length === 0) {\n return [];\n }\n\n // Calculate overhead by creating empty text items\n const emptyItems = items.map(item => withItemText(item, ''));\n const overhead = jsonBytes({ ...message, [key]: emptyItems });\n let remainingBytes = maxBytes - overhead;\n\n if (remainingBytes <= 0) {\n return [];\n }\n\n // Include items until we run out of space\n const includedItems = [];\n\n for (const item of items) {\n const text = getItemText(item);\n const textSize = utf8Bytes(text);\n\n if (textSize <= remainingBytes) {\n // Item fits: include it as-is\n includedItems.push(item);\n remainingBytes -= textSize;\n } else if (includedItems.length === 0) {\n // First item doesn't fit: truncate it\n const truncated = truncateTextByBytes(text, remainingBytes);\n if (truncated) {\n includedItems.push(withItemText(item, truncated));\n }\n break;\n } else {\n // Subsequent item doesn't fit: stop here\n break;\n }\n }\n\n /* c8 ignore start\n * for type safety only, algorithm guarantees SOME text included */\n if (includedItems.length <= 0) {\n return [];\n } else {\n /* c8 ignore stop */\n return [{ ...message, [key]: includedItems }];\n }\n}\n\n/**\n * Truncate a single message to fit within maxBytes.\n *\n * Supports three message formats:\n * - OpenAI/Anthropic: `{ ..., content: string }`\n * - Vercel AI/OpenAI multimodal: `{ ..., content: Array<{type, text?, ...}> }`\n * - Google GenAI: `{ ..., parts: Array }`\n *\n * @param message - The message to truncate\n * @param maxBytes - Maximum byte limit for the message\n * @returns Array containing the truncated message, or empty array if truncation fails\n */\nfunction truncateSingleMessage(message, maxBytes) {\n if (!message) return [];\n\n // Handle plain strings (e.g., embeddings input)\n if (typeof message === 'string') {\n const truncated = truncateTextByBytes(message, maxBytes);\n return truncated ? [truncated] : [];\n }\n\n if (typeof message !== 'object') {\n return [];\n }\n\n if (isContentMessage(message)) {\n return truncateContentMessage(message, maxBytes);\n }\n\n if (isContentArrayMessage(message) || isPartsMessage(message)) {\n return truncateArrayMessage(message, maxBytes);\n }\n\n // Unknown message format: cannot truncate safely\n return [];\n}\n\n/**\n * Strip the inline media from message arrays.\n *\n * This returns a stripped message. We do NOT want to mutate the data in place,\n * because of course we still want the actual API/client to handle the media.\n */\nfunction stripInlineMediaFromMessages(messages) {\n const stripped = messages.map(message => {\n let newMessage = undefined;\n if (!!message && typeof message === 'object') {\n if (isContentArrayMessage(message)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromMessages(message.content),\n };\n } else if ('content' in message && isContentMedia(message.content)) {\n newMessage = {\n ...message,\n content: stripInlineMediaFromSingleMessage(message.content),\n };\n }\n if (isPartsMessage(message)) {\n newMessage = {\n // might have to strip content AND parts\n ...(newMessage ?? message),\n parts: stripInlineMediaFromMessages(message.parts),\n };\n }\n if (isContentMedia(newMessage)) {\n newMessage = stripInlineMediaFromSingleMessage(newMessage);\n } else if (isContentMedia(message)) {\n newMessage = stripInlineMediaFromSingleMessage(message);\n }\n }\n return newMessage ?? message;\n });\n return stripped;\n}\n\n/**\n * Truncate an array of messages to fit within a byte limit.\n *\n * Strategy:\n * - Always keeps only the last (newest) message\n * - Strips inline media from the message\n * - Truncates the message content if it exceeds the byte limit\n *\n * @param messages - Array of messages to truncate\n * @param maxBytes - Maximum total byte limit for the message\n * @returns Array containing only the last message (possibly truncated)\n *\n * @example\n * ```ts\n * const messages = [msg1, msg2, msg3, msg4]; // newest is msg4\n * const truncated = truncateMessagesByBytes(messages, 10000);\n * // Returns [msg4] (truncated if needed)\n * ```\n */\nfunction truncateMessagesByBytes(messages, maxBytes) {\n // Early return for empty or invalid input\n if (!Array.isArray(messages) || messages.length === 0) {\n return messages;\n }\n\n // The result is always a single-element array that callers wrap with\n // JSON.stringify([message]), so subtract the 2-byte array wrapper (\"[\" and \"]\")\n // to ensure the final serialized value stays under the limit.\n const effectiveMaxBytes = maxBytes - 2;\n\n // Always keep only the last message\n const lastMessage = messages[messages.length - 1];\n\n // Strip inline media from the single message\n const stripped = stripInlineMediaFromMessages([lastMessage]);\n const strippedMessage = stripped[0];\n\n // Check if it fits\n const messageBytes = jsonBytes(strippedMessage);\n if (messageBytes <= effectiveMaxBytes) {\n return stripped;\n }\n\n // Truncate the single message if needed\n return truncateSingleMessage(strippedMessage, effectiveMaxBytes);\n}\n\n/**\n * Truncate GenAI messages using the default byte limit.\n *\n * Convenience wrapper around `truncateMessagesByBytes` with the default limit.\n *\n * @param messages - Array of messages to truncate\n * @returns Truncated array of messages\n */\nfunction truncateGenAiMessages(messages) {\n return truncateMessagesByBytes(messages, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n\n/**\n * Truncate GenAI string input using the default byte limit.\n *\n * @param input - The string to truncate\n * @returns Truncated string\n */\nfunction truncateGenAiStringInput(input) {\n return truncateTextByBytes(input, DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT);\n}\n\nexport { DEFAULT_GEN_AI_MESSAGES_BYTE_LIMIT, truncateGenAiMessages, truncateGenAiStringInput };\n//# sourceMappingURL=messageTruncation.js.map\n", + "import { captureException } from '../../exports.js';\nimport { getClient } from '../../currentScopes.js';\nimport { isThenable } from '../../utils/is.js';\nimport { GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE } from './gen-ai-attributes.js';\nimport { truncateGenAiStringInput, truncateGenAiMessages } from './messageTruncation.js';\n\n/**\n * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.)\n */\n\n/**\n * Resolves AI recording options by falling back to the client's `sendDefaultPii` setting.\n * Precedence: explicit option > sendDefaultPii > false\n */\nfunction resolveAIRecordingOptions(options) {\n const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n return {\n ...options,\n recordInputs: options?.recordInputs ?? sendDefaultPii,\n recordOutputs: options?.recordOutputs ?? sendDefaultPii,\n } ;\n}\n\n/**\n * Maps AI method paths to OpenTelemetry semantic convention operation names\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction getFinalOperationName(methodPath) {\n if (methodPath.includes('messages')) {\n return 'chat';\n }\n if (methodPath.includes('completions')) {\n return 'text_completion';\n }\n // Google GenAI: models.generateContent* -> generate_content (actually generates AI responses)\n if (methodPath.includes('generateContent')) {\n return 'generate_content';\n }\n // Anthropic: models.get/retrieve -> models (metadata retrieval only)\n if (methodPath.includes('models')) {\n return 'models';\n }\n if (methodPath.includes('chat')) {\n return 'chat';\n }\n return methodPath.split('.').pop() || 'unknown';\n}\n\n/**\n * Get the span operation for AI methods\n * Following Sentry's convention: \"gen_ai.{operation_name}\"\n */\nfunction getSpanOperation(methodPath) {\n return `gen_ai.${getFinalOperationName(methodPath)}`;\n}\n\n/**\n * Build method path from current traversal\n */\nfunction buildMethodPath(currentPath, prop) {\n return currentPath ? `${currentPath}.${prop}` : prop;\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param cachedInputTokens - The number of cached input tokens\n * @param cachedOutputTokens - The number of cached output tokens\n */\nfunction setTokenUsageAttributes(\n span,\n promptTokens,\n completionTokens,\n cachedInputTokens,\n cachedOutputTokens,\n) {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (\n promptTokens !== undefined ||\n completionTokens !== undefined ||\n cachedInputTokens !== undefined ||\n cachedOutputTokens !== undefined\n ) {\n /**\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n const totalTokens =\n (promptTokens ?? 0) + (completionTokens ?? 0) + (cachedInputTokens ?? 0) + (cachedOutputTokens ?? 0);\n\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Get the truncated JSON string for a string or array of strings.\n *\n * @param value - The string or array of strings to truncate\n * @returns The truncated JSON string\n */\nfunction getTruncatedJsonString(value) {\n if (typeof value === 'string') {\n // Some values are already JSON strings, so we don't need to duplicate the JSON parsing\n return truncateGenAiStringInput(value);\n }\n if (Array.isArray(value)) {\n // truncateGenAiMessages returns an array of strings, so we need to stringify it\n const truncatedMessages = truncateGenAiMessages(value);\n return JSON.stringify(truncatedMessages);\n }\n // value is an object, so we need to stringify it\n return JSON.stringify(value);\n}\n\n/**\n * Extract system instructions from messages array.\n * Finds the first system message and formats it according to OpenTelemetry semantic conventions.\n *\n * @param messages - Array of messages to extract system instructions from\n * @returns systemInstructions (JSON string) and filteredMessages (without system message)\n */\nfunction extractSystemInstructions(messages)\n\n {\n if (!Array.isArray(messages)) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessageIndex = messages.findIndex(\n msg => msg && typeof msg === 'object' && 'role' in msg && (msg ).role === 'system',\n );\n\n if (systemMessageIndex === -1) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemMessage = messages[systemMessageIndex] ;\n const systemContent =\n typeof systemMessage.content === 'string'\n ? systemMessage.content\n : systemMessage.content !== undefined\n ? JSON.stringify(systemMessage.content)\n : undefined;\n\n if (!systemContent) {\n return { systemInstructions: undefined, filteredMessages: messages };\n }\n\n const systemInstructions = JSON.stringify([{ type: 'text', content: systemContent }]);\n const filteredMessages = [...messages.slice(0, systemMessageIndex), ...messages.slice(systemMessageIndex + 1)];\n\n return { systemInstructions, filteredMessages };\n}\n\n/**\n * Creates a wrapped version of .withResponse() that replaces the data field\n * with the instrumented result while preserving metadata (response, request_id).\n */\nasync function createWithResponseWrapper(\n originalWithResponse,\n instrumentedPromise,\n mechanismType,\n) {\n // Attach catch handler to originalWithResponse immediately to prevent unhandled rejection\n // If instrumentedPromise rejects first, we still need this handled\n const safeOriginalWithResponse = originalWithResponse.catch(error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: mechanismType,\n },\n });\n throw error;\n });\n\n const instrumentedResult = await instrumentedPromise;\n const originalWrapper = await safeOriginalWithResponse;\n\n // Combine instrumented result with original metadata\n if (originalWrapper && typeof originalWrapper === 'object' && 'data' in originalWrapper) {\n return {\n ...originalWrapper,\n data: instrumentedResult,\n };\n }\n return instrumentedResult;\n}\n\n/**\n * Wraps a promise-like object to preserve additional methods (like .withResponse())\n * that AI SDK clients (OpenAI, Anthropic) attach to their APIPromise return values.\n *\n * Standard Promise methods (.then, .catch, .finally) are routed to the instrumented\n * promise to preserve Sentry's span instrumentation, while custom SDK methods are\n * forwarded to the original promise to maintain the SDK's API surface.\n */\nfunction wrapPromiseWithMethods(\n originalPromiseLike,\n instrumentedPromise,\n mechanismType,\n) {\n // If the original result is not thenable, return the instrumented promise\n if (!isThenable(originalPromiseLike)) {\n return instrumentedPromise;\n }\n\n // Create a proxy that forwards Promise methods to instrumentedPromise\n // and preserves additional methods from the original result\n return new Proxy(originalPromiseLike, {\n get(target, prop) {\n // For standard Promise methods (.then, .catch, .finally, Symbol.toStringTag),\n // use instrumentedPromise to preserve Sentry instrumentation.\n // For custom methods (like .withResponse()), use the original target.\n const useInstrumentedPromise = prop in Promise.prototype || prop === Symbol.toStringTag;\n const source = useInstrumentedPromise ? instrumentedPromise : target;\n\n const value = Reflect.get(source, prop) ;\n\n // Special handling for .withResponse() to preserve instrumentation\n // .withResponse() returns { data: T, response: Response, request_id: string }\n if (prop === 'withResponse' && typeof value === 'function') {\n return function wrappedWithResponse() {\n const originalWithResponse = (value ).call(target);\n return createWithResponseWrapper(originalWithResponse, instrumentedPromise, mechanismType);\n };\n }\n\n return typeof value === 'function' ? value.bind(source) : value;\n },\n }) ;\n}\n\nexport { buildMethodPath, extractSystemInstructions, getFinalOperationName, getSpanOperation, getTruncatedJsonString, resolveAIRecordingOptions, setTokenUsageAttributes, wrapPromiseWithMethods };\n//# sourceMappingURL=utils.js.map\n", + "/* eslint-disable max-lines */\n/**\n * AI SDK Telemetry Attributes\n * Based on https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\n\n// =============================================================================\n// COMMON ATTRIBUTES\n// =============================================================================\n\n/**\n * Common attribute for operation name across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nconst OPERATION_NAME_ATTRIBUTE = 'operation.name';\n\n/**\n * Common attribute for AI operation ID across all functions and spans\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#collected-data\n */\nconst AI_OPERATION_ID_ATTRIBUTE = 'ai.operationId';\n\n// =============================================================================\n// SHARED ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n * `streamText` function - `ai.streamText` span\n *\n * The prompt that was used when calling the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamtext-function\n */\nconst AI_PROMPT_ATTRIBUTE = 'ai.prompt';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The JSON schema version of the schema that was passed into the function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nconst AI_SCHEMA_ATTRIBUTE = 'ai.schema';\n\n/**\n * `generateObject` function - `ai.generateObject` span\n * `streamObject` function - `ai.streamObject` span\n *\n * The object that was generated (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generateobject-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#streamobject-function\n */\nconst AI_RESPONSE_OBJECT_ATTRIBUTE = 'ai.response.object';\n\n/**\n * `embed` function - `ai.embed.doEmbed` span\n * `embedMany` function - `ai.embedMany` span\n *\n * The values that were passed into the function (array)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embed-function\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#embedmany-function\n */\nconst AI_VALUES_ATTRIBUTE = 'ai.values';\n\n// =============================================================================\n// GENERATETEXT FUNCTION - UNIQUE ATTRIBUTES\n// =============================================================================\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The text that was generated\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_RESPONSE_TEXT_ATTRIBUTE = 'ai.response.text';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The tool calls that were made as part of the generation (stringified JSON)\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'ai.response.toolCalls';\n\n/**\n * `generateText` function - `ai.generateText` span\n *\n * The reason why the generation finished\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_RESPONSE_FINISH_REASON_ATTRIBUTE = 'ai.response.finishReason';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * The messages that were passed into the provider\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_PROMPT_MESSAGES_ATTRIBUTE = 'ai.prompt.messages';\n\n/**\n * `generateText` function - `ai.generateText.doGenerate` span\n *\n * Array of stringified tool definitions\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#generatetext-function\n */\nconst AI_PROMPT_TOOLS_ATTRIBUTE = 'ai.prompt.tools';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The id of the model\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_MODEL_ID_ATTRIBUTE = 'ai.model.id';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * Provider specific metadata returned with the generation response\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE = 'ai.response.providerMetadata';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of cached input tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE = 'ai.usage.cachedInputTokens';\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The functionId that was set through `telemetry.functionId`\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE = 'ai.telemetry.functionId';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of completion tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'ai.usage.completionTokens';\n\n/**\n * Basic LLM span information\n * Multiple spans\n *\n * The number of prompt tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-llm-span-information\n */\nconst AI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'ai.usage.promptTokens';\n\n// =============================================================================\n// BASIC EMBEDDING SPAN INFORMATION\n// =============================================================================\n\n/**\n * Basic embedding span information\n * Embedding spans\n *\n * The number of tokens that were used\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#basic-embedding-span-information\n */\nconst AI_USAGE_TOKENS_ATTRIBUTE = 'ai.usage.tokens';\n\n// =============================================================================\n// TOOL CALL SPANS\n// =============================================================================\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The name of the tool\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nconst AI_TOOL_CALL_NAME_ATTRIBUTE = 'ai.toolCall.name';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The id of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nconst AI_TOOL_CALL_ID_ATTRIBUTE = 'ai.toolCall.id';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The parameters of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nconst AI_TOOL_CALL_ARGS_ATTRIBUTE = 'ai.toolCall.args';\n\n/**\n * Tool call spans\n * `ai.toolCall` span\n *\n * The result of the tool call\n * @see https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n */\nconst AI_TOOL_CALL_RESULT_ATTRIBUTE = 'ai.toolCall.result';\n\n// =============================================================================\n// PROVIDER METADATA\n// =============================================================================\n\n/**\n * OpenAI Provider Metadata\n * @see https://ai-sdk.dev/providers/ai-sdk-providers/openai\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/openai-chat-language-model.ts#L397-L416\n * @see https://github.com/vercel/ai/blob/65e042afde6aad4da9d7a62526ece839eb34f9a5/packages/openai/src/responses/openai-responses-language-model.ts#L377C7-L384\n */\n\nexport { AI_MODEL_ID_ATTRIBUTE, AI_OPERATION_ID_ATTRIBUTE, AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE, AI_PROMPT_TOOLS_ATTRIBUTE, AI_RESPONSE_FINISH_REASON_ATTRIBUTE, AI_RESPONSE_OBJECT_ATTRIBUTE, AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE, AI_RESPONSE_TEXT_ATTRIBUTE, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, AI_SCHEMA_ATTRIBUTE, AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE, AI_TOOL_CALL_ARGS_ATTRIBUTE, AI_TOOL_CALL_ID_ATTRIBUTE, AI_TOOL_CALL_NAME_ATTRIBUTE, AI_TOOL_CALL_RESULT_ATTRIBUTE, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, AI_USAGE_TOKENS_ATTRIBUTE, AI_VALUES_ATTRIBUTE, OPERATION_NAME_ATTRIBUTE };\n//# sourceMappingURL=vercel-ai-attributes.js.map\n", + "import { GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE, GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE, GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE, GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE, GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE, GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE, GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE, GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE, GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE, GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils.js';\nimport { toolCallSpanContextMap } from './constants.js';\nimport { AI_PROMPT_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE } from './vercel-ai-attributes.js';\n\n/**\n * Accumulates token data from a span to its parent in the token accumulator map.\n * This function extracts token usage from the current span and adds it to the\n * accumulated totals for its parent span.\n */\nfunction accumulateTokensForParent(span, tokenAccumulator) {\n const parentSpanId = span.parent_span_id;\n if (!parentSpanId) {\n return;\n }\n\n const inputTokens = span.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n const outputTokens = span.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE];\n\n if (typeof inputTokens === 'number' || typeof outputTokens === 'number') {\n const existing = tokenAccumulator.get(parentSpanId) || { inputTokens: 0, outputTokens: 0 };\n\n if (typeof inputTokens === 'number') {\n existing.inputTokens += inputTokens;\n }\n if (typeof outputTokens === 'number') {\n existing.outputTokens += outputTokens;\n }\n\n tokenAccumulator.set(parentSpanId, existing);\n }\n}\n\n/**\n * Applies accumulated token data to the `gen_ai.invoke_agent` span.\n * Only immediate children of the `gen_ai.invoke_agent` span are considered,\n * since aggregation will automatically occur for each parent span.\n */\nfunction applyAccumulatedTokens(\n spanOrTrace,\n tokenAccumulator,\n) {\n const accumulated = tokenAccumulator.get(spanOrTrace.span_id);\n if (!accumulated || !spanOrTrace.data) {\n return;\n }\n\n if (accumulated.inputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = accumulated.inputTokens;\n }\n if (accumulated.outputTokens > 0) {\n spanOrTrace.data[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = accumulated.outputTokens;\n }\n if (accumulated.inputTokens > 0 || accumulated.outputTokens > 0) {\n spanOrTrace.data['gen_ai.usage.total_tokens'] = accumulated.inputTokens + accumulated.outputTokens;\n }\n}\n\n/**\n * Builds a map of tool name -> description from all spans with available_tools.\n * This avoids O(n²) iteration and repeated JSON parsing.\n */\nfunction buildToolDescriptionMap(spans) {\n const toolDescriptions = new Map();\n\n for (const span of spans) {\n const availableTools = span.data[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE];\n if (typeof availableTools !== 'string') {\n continue;\n }\n try {\n const tools = JSON.parse(availableTools) ;\n for (const tool of tools) {\n if (tool.name && tool.description && !toolDescriptions.has(tool.name)) {\n toolDescriptions.set(tool.name, tool.description);\n }\n }\n } catch {\n // ignore parse errors\n }\n }\n\n return toolDescriptions;\n}\n\n/**\n * Applies tool descriptions and accumulated tokens to spans in a single pass.\n *\n * - For `gen_ai.execute_tool` spans: looks up tool description from\n * `gen_ai.request.available_tools` on sibling spans\n * - For `gen_ai.invoke_agent` spans: applies accumulated token data from children\n */\nfunction applyToolDescriptionsAndTokens(spans, tokenAccumulator) {\n // Build lookup map once to avoid O(n²) iteration and repeated JSON parsing\n const toolDescriptions = buildToolDescriptionMap(spans);\n\n for (const span of spans) {\n if (span.op === 'gen_ai.execute_tool') {\n const toolName = span.data[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (typeof toolName === 'string') {\n const description = toolDescriptions.get(toolName);\n if (description) {\n span.data[GEN_AI_TOOL_DESCRIPTION_ATTRIBUTE] = description;\n }\n }\n }\n\n if (span.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(span, tokenAccumulator);\n }\n }\n}\n\n/**\n * Get the span context associated with a tool call ID.\n */\nfunction _INTERNAL_getSpanContextForToolCallId(toolCallId) {\n return toolCallSpanContextMap.get(toolCallId);\n}\n\n/**\n * Clean up the span mapping for a tool call ID\n */\nfunction _INTERNAL_cleanupToolCallSpanContext(toolCallId) {\n toolCallSpanContextMap.delete(toolCallId);\n}\n\n/**\n * Convert an array of tool strings to a JSON string\n */\nfunction convertAvailableToolsToJsonString(tools) {\n const toolObjects = tools.map(tool => {\n if (typeof tool === 'string') {\n try {\n return JSON.parse(tool);\n } catch {\n return tool;\n }\n }\n return tool;\n });\n return JSON.stringify(toolObjects);\n}\n\n/**\n * Filter out invalid entries in messages array\n * @param input - The input array to filter\n * @returns The filtered array\n */\nfunction filterMessagesArray(input) {\n return input.filter(\n (m) =>\n !!m && typeof m === 'object' && 'role' in m && 'content' in m,\n );\n}\n\n/**\n * Normalize the user input (stringified object with prompt, system, messages) to messages array\n */\nfunction convertUserInputToMessagesFormat(userInput) {\n try {\n const p = JSON.parse(userInput);\n if (!!p && typeof p === 'object') {\n let { messages } = p;\n const { prompt, system } = p;\n const result = [];\n\n // prepend top-level system instruction if present\n if (typeof system === 'string') {\n result.push({ role: 'system', content: system });\n }\n\n // stringified messages array\n if (typeof messages === 'string') {\n try {\n messages = JSON.parse(messages);\n } catch {\n // ignore parse errors\n }\n }\n\n // messages array format: { messages: [...] }\n if (Array.isArray(messages)) {\n result.push(...filterMessagesArray(messages));\n return result;\n }\n\n // prompt array format: { prompt: [...] }\n if (Array.isArray(prompt)) {\n result.push(...filterMessagesArray(prompt));\n return result;\n }\n\n // prompt string format: { prompt: \"...\" }\n if (typeof prompt === 'string') {\n result.push({ role: 'user', content: prompt });\n }\n\n if (result.length > 0) {\n return result;\n }\n }\n // eslint-disable-next-line no-empty\n } catch {}\n return [];\n}\n\n/**\n * Generate a request.messages JSON array from the prompt field in the\n * invoke_agent op\n */\nfunction requestMessagesFromPrompt(span, attributes) {\n if (\n typeof attributes[AI_PROMPT_ATTRIBUTE] === 'string' &&\n !attributes[GEN_AI_INPUT_MESSAGES_ATTRIBUTE] &&\n !attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]\n ) {\n // No messages array is present, so we need to convert the prompt to the proper messages format\n // This is the case for ai.generateText spans\n // The ai.prompt attribute is a stringified object with prompt, system, messages attributes\n // The format of these is described in the vercel docs, for instance: https://ai-sdk.dev/docs/reference/ai-sdk-core/stream-object#parameters\n const userInput = attributes[AI_PROMPT_ATTRIBUTE];\n const messages = convertUserInputToMessagesFormat(userInput);\n if (messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n } else if (typeof attributes[AI_PROMPT_MESSAGES_ATTRIBUTE] === 'string') {\n // In this case we already get a properly formatted messages array, this is the preferred way to get the messages\n // This is the case for ai.generateText.doGenerate spans\n try {\n const messages = JSON.parse(attributes[AI_PROMPT_MESSAGES_ATTRIBUTE]);\n if (Array.isArray(messages)) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n const truncatedMessages = getTruncatedJsonString(filteredMessages);\n\n span.setAttributes({\n [AI_PROMPT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: truncatedMessages,\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n // eslint-disable-next-line no-empty\n } catch {}\n }\n}\n\n/**\n * Maps a Vercel AI span name to the corresponding Sentry op.\n */\nfunction getSpanOpFromName(name) {\n switch (name) {\n case 'ai.generateText':\n case 'ai.streamText':\n case 'ai.generateObject':\n case 'ai.streamObject':\n return GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE;\n case 'ai.generateText.doGenerate':\n return GEN_AI_GENERATE_TEXT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamText.doStream':\n return GEN_AI_STREAM_TEXT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.generateObject.doGenerate':\n return GEN_AI_GENERATE_OBJECT_DO_GENERATE_OPERATION_ATTRIBUTE;\n case 'ai.streamObject.doStream':\n return GEN_AI_STREAM_OBJECT_DO_STREAM_OPERATION_ATTRIBUTE;\n case 'ai.embed.doEmbed':\n return GEN_AI_EMBED_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.embedMany.doEmbed':\n return GEN_AI_EMBED_MANY_DO_EMBED_OPERATION_ATTRIBUTE;\n case 'ai.rerank.doRerank':\n return GEN_AI_RERANK_DO_RERANK_OPERATION_ATTRIBUTE;\n case 'ai.toolCall':\n return GEN_AI_EXECUTE_TOOL_OPERATION_ATTRIBUTE;\n default:\n if (name.startsWith('ai.stream')) {\n return 'ai.run';\n }\n return undefined;\n }\n}\n\nexport { _INTERNAL_cleanupToolCallSpanContext, _INTERNAL_getSpanContextForToolCallId, accumulateTokensForParent, applyAccumulatedTokens, applyToolDescriptionsAndTokens, convertAvailableToolsToJsonString, convertUserInputToMessagesFormat, getSpanOpFromName, requestMessagesFromPrompt };\n//# sourceMappingURL=utils.js.map\n", + "import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '../../semanticAttributes.js';\nimport { spanToJSON } from '../../utils/spanUtils.js';\nimport { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_TYPE_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { toolCallSpanContextMap, INVOKE_AGENT_OPS, GENERATE_CONTENT_OPS, DO_SPAN_NAME_PREFIX, EMBEDDINGS_OPS, RERANK_OPS } from './constants.js';\nimport { accumulateTokensForParent, applyToolDescriptionsAndTokens, applyAccumulatedTokens, requestMessagesFromPrompt, getSpanOpFromName, convertAvailableToolsToJsonString } from './utils.js';\nimport { AI_TOOL_CALL_NAME_ATTRIBUTE, AI_TOOL_CALL_ID_ATTRIBUTE, AI_OPERATION_ID_ATTRIBUTE, AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE, AI_MODEL_ID_ATTRIBUTE, AI_PROMPT_TOOLS_ATTRIBUTE, OPERATION_NAME_ATTRIBUTE, AI_VALUES_ATTRIBUTE, AI_RESPONSE_TEXT_ATTRIBUTE, AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, AI_RESPONSE_FINISH_REASON_ATTRIBUTE, AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, AI_USAGE_TOKENS_ATTRIBUTE, AI_PROMPT_MESSAGES_ATTRIBUTE, AI_RESPONSE_OBJECT_ATTRIBUTE, AI_TOOL_CALL_ARGS_ATTRIBUTE, AI_TOOL_CALL_RESULT_ATTRIBUTE, AI_SCHEMA_ATTRIBUTE } from './vercel-ai-attributes.js';\n\n/**\n * Maps Vercel AI SDK operation names to OpenTelemetry semantic convention values\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction mapVercelAiOperationName(operationName) {\n // Top-level pipeline operations map to invoke_agent\n if (INVOKE_AGENT_OPS.has(operationName)) {\n return 'invoke_agent';\n }\n // .do* operations are the actual LLM calls\n if (GENERATE_CONTENT_OPS.has(operationName)) {\n return 'generate_content';\n }\n if (EMBEDDINGS_OPS.has(operationName)) {\n return 'embeddings';\n }\n if (RERANK_OPS.has(operationName)) {\n return 'rerank';\n }\n if (operationName === 'ai.toolCall') {\n return 'execute_tool';\n }\n // Return the original value for unknown operations\n return operationName;\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n * This is supposed to be used in `client.on('spanStart', ...)\n */\nfunction onVercelAiSpanStart(span) {\n const { data: attributes, description: name } = spanToJSON(span);\n\n if (!name) {\n return;\n }\n\n // Tool call spans\n // https://ai-sdk.dev/docs/ai-sdk-core/telemetry#tool-call-spans\n if (attributes[AI_TOOL_CALL_NAME_ATTRIBUTE] && attributes[AI_TOOL_CALL_ID_ATTRIBUTE] && name === 'ai.toolCall') {\n processToolCallSpan(span, attributes);\n return;\n }\n\n // V6+ Check if this is a Vercel AI span by checking if the operation ID attribute is present.\n // V5+ Check if this is a Vercel AI span by name pattern.\n if (!attributes[AI_OPERATION_ID_ATTRIBUTE] && !name.startsWith('ai.')) {\n return;\n }\n\n processGenerateSpan(span, name, attributes);\n}\n\nfunction vercelAiEventProcessor(event) {\n if (event.type === 'transaction' && event.spans) {\n // Map to accumulate token data by parent span ID\n const tokenAccumulator = new Map();\n\n // First pass: process all spans and accumulate token data\n for (const span of event.spans) {\n processEndedVercelAiSpan(span);\n\n // Accumulate token data for parent spans\n accumulateTokensForParent(span, tokenAccumulator);\n }\n\n // Second pass: apply tool descriptions and accumulated tokens\n applyToolDescriptionsAndTokens(event.spans, tokenAccumulator);\n\n // Also apply to root when it is the invoke_agent pipeline\n const trace = event.contexts?.trace;\n if (trace?.op === 'gen_ai.invoke_agent') {\n applyAccumulatedTokens(trace, tokenAccumulator);\n }\n }\n\n return event;\n}\n\n/**\n * Tool call structure from Vercel AI SDK\n * Note: V5/V6 use 'input' for arguments, V4 and earlier use 'args'\n */\n\n/**\n * Normalize finish reason to match OpenTelemetry semantic conventions.\n * Valid values: \"stop\", \"length\", \"content_filter\", \"tool_call\", \"error\"\n *\n * Vercel AI SDK uses \"tool-calls\" (plural, with hyphen) which we map to \"tool_call\".\n */\nfunction normalizeFinishReason(finishReason) {\n if (typeof finishReason !== 'string') {\n return 'stop';\n }\n\n // Map Vercel AI SDK finish reasons to OpenTelemetry semantic convention values\n switch (finishReason) {\n case 'tool-calls':\n return 'tool_call';\n case 'stop':\n case 'length':\n case 'content_filter':\n case 'error':\n return finishReason;\n default:\n // For unknown values, return as-is (schema allows arbitrary strings)\n return finishReason;\n }\n}\n\n/**\n * Build gen_ai.output.messages from ai.response.text and/or ai.response.toolCalls\n *\n * Format follows OpenTelemetry semantic conventions:\n * [{\"role\": \"assistant\", \"parts\": [...], \"finish_reason\": \"stop\"}]\n *\n * Parts can be:\n * - {\"type\": \"text\", \"content\": \"...\"}\n * - {\"type\": \"tool_call\", \"id\": \"...\", \"name\": \"...\", \"arguments\": \"...\"}\n */\nfunction buildOutputMessages(attributes) {\n const responseText = attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n const responseToolCalls = attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n const finishReason = attributes[AI_RESPONSE_FINISH_REASON_ATTRIBUTE];\n\n // Skip if neither text nor tool calls are present\n if (responseText == null && responseToolCalls == null) {\n return;\n }\n\n const parts = [];\n\n // Add text part if present\n if (typeof responseText === 'string' && responseText.length > 0) {\n parts.push({\n type: 'text',\n content: responseText,\n });\n }\n\n // Add tool call parts if present\n if (responseToolCalls != null) {\n try {\n // Tool calls can be a string (JSON) or already parsed array\n const toolCalls =\n typeof responseToolCalls === 'string' ? JSON.parse(responseToolCalls) : responseToolCalls;\n\n if (Array.isArray(toolCalls)) {\n for (const toolCall of toolCalls) {\n // V5/V6 use 'input', V4 and earlier use 'args'\n const args = toolCall.input ?? toolCall.args;\n parts.push({\n type: 'tool_call',\n id: toolCall.toolCallId,\n name: toolCall.toolName,\n // Handle undefined args: JSON.stringify(undefined) returns undefined, not a string,\n // which would cause the property to be omitted from the final JSON output\n arguments: typeof args === 'string' ? args : JSON.stringify(args ?? {}),\n });\n }\n // Only delete tool calls attribute if we successfully processed them\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TOOL_CALLS_ATTRIBUTE];\n }\n } catch {\n // Ignore parsing errors - tool calls attribute is preserved\n }\n }\n\n // Only set output messages and delete text attribute if we have parts\n if (parts.length > 0) {\n const outputMessage = {\n role: 'assistant',\n parts,\n finish_reason: normalizeFinishReason(finishReason),\n };\n\n attributes[GEN_AI_OUTPUT_MESSAGES_ATTRIBUTE] = JSON.stringify([outputMessage]);\n\n // Remove the text attribute since it's now captured in gen_ai.output.messages\n // Note: tool calls attribute is deleted above only if successfully parsed\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[AI_RESPONSE_TEXT_ATTRIBUTE];\n }\n}\n\n/**\n * Post-process spans emitted by the Vercel AI SDK.\n */\nfunction processEndedVercelAiSpan(span) {\n const { data: attributes, origin } = span;\n\n if (origin !== 'auto.vercelai.otel') {\n return;\n }\n\n // The Vercel AI SDK sets span status to raw error message strings.\n // Any such value should be normalized to a SpanStatusType value. We pick internal_error as it is the most generic.\n if (span.status && span.status !== 'ok') {\n span.status = 'internal_error';\n }\n\n renameAttributeKey(attributes, AI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_PROMPT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, AI_USAGE_CACHED_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE);\n\n // Parent spans (ai.streamText, ai.streamObject, etc.) use inputTokens/outputTokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, 'ai.usage.inputTokens', GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n renameAttributeKey(attributes, 'ai.usage.outputTokens', GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE);\n\n // Embedding spans use ai.usage.tokens instead of promptTokens/completionTokens\n renameAttributeKey(attributes, AI_USAGE_TOKENS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE);\n\n // AI SDK uses avgOutputTokensPerSecond, map to our expected attribute name\n renameAttributeKey(attributes, 'ai.response.avgOutputTokensPerSecond', 'ai.response.avgCompletionTokensPerSecond');\n\n // Input tokens is the sum of prompt tokens and cached input tokens\n if (\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number' &&\n typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE] === 'number'\n ) {\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] =\n attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] + attributes[GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE];\n }\n\n // Compute total tokens from input + output (embeddings may only have input tokens)\n if (typeof attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] === 'number') {\n const outputTokens =\n typeof attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] === 'number'\n ? attributes[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]\n : 0;\n attributes[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = outputTokens + attributes[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE];\n }\n\n // Convert the available tools array to a JSON string\n if (attributes[AI_PROMPT_TOOLS_ATTRIBUTE] && Array.isArray(attributes[AI_PROMPT_TOOLS_ATTRIBUTE])) {\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] = convertAvailableToolsToJsonString(\n attributes[AI_PROMPT_TOOLS_ATTRIBUTE] ,\n );\n }\n\n // Rename AI SDK attributes to standardized gen_ai attributes\n // Map operation.name to OpenTelemetry semantic convention values\n if (attributes[OPERATION_NAME_ATTRIBUTE]) {\n const operationName = mapVercelAiOperationName(attributes[OPERATION_NAME_ATTRIBUTE] );\n attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE] = operationName;\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[OPERATION_NAME_ATTRIBUTE];\n }\n renameAttributeKey(attributes, AI_PROMPT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE);\n\n // Build gen_ai.output.messages from response text and/or tool calls\n // Note: buildOutputMessages also removes the source attributes when output is successfully generated\n buildOutputMessages(attributes);\n\n renameAttributeKey(attributes, AI_RESPONSE_OBJECT_ATTRIBUTE, 'gen_ai.response.object');\n renameAttributeKey(attributes, AI_PROMPT_TOOLS_ATTRIBUTE, 'gen_ai.request.available_tools');\n\n renameAttributeKey(attributes, AI_TOOL_CALL_ARGS_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_RESULT_ATTRIBUTE, GEN_AI_TOOL_OUTPUT_ATTRIBUTE);\n\n renameAttributeKey(attributes, AI_SCHEMA_ATTRIBUTE, 'gen_ai.request.schema');\n renameAttributeKey(attributes, AI_MODEL_ID_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE);\n\n // Map embedding input: ai.values → gen_ai.embeddings.input\n // Vercel AI SDK JSON-stringifies each value individually, so we parse each element back.\n // Single embed gets unwrapped to a plain value; batch embedMany stays as a JSON array.\n if (Array.isArray(attributes[AI_VALUES_ATTRIBUTE])) {\n const parsed = (attributes[AI_VALUES_ATTRIBUTE] ).map(v => {\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n });\n attributes[GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE] = parsed.length === 1 ? parsed[0] : JSON.stringify(parsed);\n }\n\n addProviderMetadataToAttributes(attributes);\n\n // Change attributes namespaced with `ai.X` to `vercel.ai.X`\n for (const key of Object.keys(attributes)) {\n if (key.startsWith('ai.')) {\n renameAttributeKey(attributes, key, `vercel.${key}`);\n }\n }\n}\n\n/**\n * Renames an attribute key in the provided attributes object if the old key exists.\n * This function safely handles null and undefined values.\n */\nfunction renameAttributeKey(attributes, oldKey, newKey) {\n if (attributes[oldKey] != null) {\n attributes[newKey] = attributes[oldKey];\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete attributes[oldKey];\n }\n}\n\nfunction processToolCallSpan(span, attributes) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'gen_ai.execute_tool');\n span.setAttribute(GEN_AI_OPERATION_NAME_ATTRIBUTE, 'execute_tool');\n renameAttributeKey(attributes, AI_TOOL_CALL_NAME_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE);\n renameAttributeKey(attributes, AI_TOOL_CALL_ID_ATTRIBUTE, GEN_AI_TOOL_CALL_ID_ATTRIBUTE);\n\n // Store the span context in our global map using the tool call ID.\n // This allows us to capture tool errors and link them to the correct span\n // without retaining the full Span object in memory.\n const toolCallId = attributes[GEN_AI_TOOL_CALL_ID_ATTRIBUTE];\n\n if (typeof toolCallId === 'string') {\n toolCallSpanContextMap.set(toolCallId, span.spanContext());\n }\n\n // https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/#gen-ai-tool-type\n if (!attributes[GEN_AI_TOOL_TYPE_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_TOOL_TYPE_ATTRIBUTE, 'function');\n }\n const toolName = attributes[GEN_AI_TOOL_NAME_ATTRIBUTE];\n if (toolName) {\n span.updateName(`execute_tool ${toolName}`);\n }\n}\n\nfunction processGenerateSpan(span, name, attributes) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.vercelai.otel');\n\n const nameWthoutAi = name.replace('ai.', '');\n span.setAttribute('ai.pipeline.name', nameWthoutAi);\n span.updateName(nameWthoutAi);\n\n const functionId = attributes[AI_TELEMETRY_FUNCTION_ID_ATTRIBUTE];\n if (functionId && typeof functionId === 'string') {\n span.setAttribute('gen_ai.function_id', functionId);\n }\n\n requestMessagesFromPrompt(span, attributes);\n\n if (attributes[AI_MODEL_ID_ATTRIBUTE] && !attributes[GEN_AI_RESPONSE_MODEL_ATTRIBUTE]) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, attributes[AI_MODEL_ID_ATTRIBUTE]);\n }\n span.setAttribute('ai.streaming', name.includes('stream'));\n\n // Set the op based on the span name\n const op = getSpanOpFromName(name);\n if (op) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n // For invoke_agent pipeline spans, use 'invoke_agent' as the description\n // to be consistent with other AI integrations (e.g. LangGraph)\n if (INVOKE_AGENT_OPS.has(name)) {\n if (functionId && typeof functionId === 'string') {\n span.updateName(`invoke_agent ${functionId}`);\n } else {\n span.updateName('invoke_agent');\n }\n return;\n }\n\n const modelId = attributes[AI_MODEL_ID_ATTRIBUTE];\n if (modelId) {\n const doSpanPrefix = GENERATE_CONTENT_OPS.has(name) ? 'generate_content' : DO_SPAN_NAME_PREFIX[name];\n if (doSpanPrefix) {\n span.updateName(`${doSpanPrefix} ${modelId}`);\n }\n }\n}\n\n/**\n * Add event processors to the given client to process Vercel AI spans.\n */\nfunction addVercelAiProcessors(client) {\n client.on('spanStart', onVercelAiSpanStart);\n // Note: We cannot do this on `spanEnd`, because the span cannot be mutated anymore at this point\n client.addEventProcessor(Object.assign(vercelAiEventProcessor, { id: 'VercelAiEventProcessor' }));\n}\n\nfunction addProviderMetadataToAttributes(attributes) {\n const providerMetadata = attributes[AI_RESPONSE_PROVIDER_METADATA_ATTRIBUTE] ;\n if (providerMetadata) {\n try {\n const providerMetadataObject = JSON.parse(providerMetadata) ;\n\n // Handle OpenAI metadata (v5 uses 'openai', v6 Azure Responses API uses 'azure')\n const openaiMetadata =\n providerMetadataObject.openai ?? providerMetadataObject.azure;\n if (openaiMetadata) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n openaiMetadata.cachedPromptTokens,\n );\n setAttributeIfDefined(attributes, 'gen_ai.usage.output_tokens.reasoning', openaiMetadata.reasoningTokens);\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_accepted',\n openaiMetadata.acceptedPredictionTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.output_tokens.prediction_rejected',\n openaiMetadata.rejectedPredictionTokens,\n );\n if (!attributes['gen_ai.conversation.id']) {\n setAttributeIfDefined(attributes, 'gen_ai.conversation.id', openaiMetadata.responseId);\n }\n }\n\n if (providerMetadataObject.anthropic) {\n const cachedInputTokens =\n providerMetadataObject.anthropic.usage?.cache_read_input_tokens ??\n providerMetadataObject.anthropic.cacheReadInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, cachedInputTokens);\n\n const cacheWriteInputTokens =\n providerMetadataObject.anthropic.usage?.cache_creation_input_tokens ??\n providerMetadataObject.anthropic.cacheCreationInputTokens;\n setAttributeIfDefined(attributes, GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, cacheWriteInputTokens);\n }\n\n if (providerMetadataObject.bedrock?.usage) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheReadInputTokens,\n );\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE,\n providerMetadataObject.bedrock.usage.cacheWriteInputTokens,\n );\n }\n\n if (providerMetadataObject.deepseek) {\n setAttributeIfDefined(\n attributes,\n GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE,\n providerMetadataObject.deepseek.promptCacheHitTokens,\n );\n setAttributeIfDefined(\n attributes,\n 'gen_ai.usage.input_tokens.cache_miss',\n providerMetadataObject.deepseek.promptCacheMissTokens,\n );\n }\n } catch {\n // Ignore\n }\n }\n}\n\n/**\n * Sets an attribute only if the value is not null or undefined.\n */\nfunction setAttributeIfDefined(attributes, key, value) {\n if (value != null) {\n attributes[key] = value;\n }\n}\n\nexport { addVercelAiProcessors };\n//# sourceMappingURL=index.js.map\n", + "const OPENAI_INTEGRATION_NAME = 'OpenAI';\n\n// https://platform.openai.com/docs/quickstart?api-mode=responses\n// https://platform.openai.com/docs/quickstart?api-mode=chat\n// https://platform.openai.com/docs/api-reference/conversations\nconst INSTRUMENTED_METHODS = [\n 'responses.create',\n 'chat.completions.create',\n 'embeddings.create',\n // Conversations API - for conversation state management\n // https://platform.openai.com/docs/guides/conversation-state\n 'conversations.create',\n] ;\nconst RESPONSES_TOOL_CALL_EVENT_TYPES = [\n 'response.output_item.added',\n 'response.function_call_arguments.delta',\n 'response.function_call_arguments.done',\n 'response.output_item.done',\n] ;\nconst RESPONSE_EVENT_TYPES = [\n 'response.created',\n 'response.in_progress',\n 'response.failed',\n 'response.completed',\n 'response.incomplete',\n 'response.queued',\n 'response.output_text.delta',\n ...RESPONSES_TOOL_CALL_EVENT_TYPES,\n] ;\n\nexport { INSTRUMENTED_METHODS, OPENAI_INTEGRATION_NAME, RESPONSES_TOOL_CALL_EVENT_TYPES, RESPONSE_EVENT_TYPES };\n//# sourceMappingURL=constants.js.map\n", + "import { OPENAI_OPERATIONS, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_STREAM_ATTRIBUTE, GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE, GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE, GEN_AI_CONVERSATION_ID_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, OPENAI_RESPONSE_ID_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, OPENAI_RESPONSE_MODEL_ATTRIBUTE, OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { INSTRUMENTED_METHODS } from './constants.js';\n\n/**\n * Maps OpenAI method paths to OpenTelemetry semantic convention operation names\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/#llm-request-spans\n */\nfunction getOperationName(methodPath) {\n if (methodPath.includes('chat.completions')) {\n return OPENAI_OPERATIONS.CHAT;\n }\n if (methodPath.includes('responses')) {\n return OPENAI_OPERATIONS.CHAT;\n }\n if (methodPath.includes('embeddings')) {\n return OPENAI_OPERATIONS.EMBEDDINGS;\n }\n if (methodPath.includes('conversations')) {\n return OPENAI_OPERATIONS.CHAT;\n }\n return methodPath.split('.').pop() || 'unknown';\n}\n\n/**\n * Get the span operation for OpenAI methods\n * Following Sentry's convention: \"gen_ai.{operation_name}\"\n */\nfunction getSpanOperation(methodPath) {\n return `gen_ai.${getOperationName(methodPath)}`;\n}\n\n/**\n * Check if a method path should be instrumented\n */\nfunction shouldInstrument(methodPath) {\n return INSTRUMENTED_METHODS.includes(methodPath );\n}\n\n/**\n * Check if response is a Chat Completion object\n */\nfunction isChatCompletionResponse(response) {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response ).object === 'chat.completion'\n );\n}\n\n/**\n * Check if response is a Responses API object\n */\nfunction isResponsesApiResponse(response) {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response ).object === 'response'\n );\n}\n\n/**\n * Check if response is an Embeddings API object\n */\nfunction isEmbeddingsResponse(response) {\n if (response === null || typeof response !== 'object' || !('object' in response)) {\n return false;\n }\n const responseObject = response ;\n return (\n responseObject.object === 'list' &&\n typeof responseObject.model === 'string' &&\n responseObject.model.toLowerCase().includes('embedding')\n );\n}\n\n/**\n * Check if response is a Conversations API object\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nfunction isConversationResponse(response) {\n return (\n response !== null &&\n typeof response === 'object' &&\n 'object' in response &&\n (response ).object === 'conversation'\n );\n}\n\n/**\n * Check if streaming event is from the Responses API\n */\nfunction isResponsesApiStreamEvent(event) {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'type' in event &&\n typeof (event ).type === 'string' &&\n ((event ).type ).startsWith('response.')\n );\n}\n\n/**\n * Check if streaming event is a chat completion chunk\n */\nfunction isChatCompletionChunk(event) {\n return (\n event !== null &&\n typeof event === 'object' &&\n 'object' in event &&\n (event ).object === 'chat.completion.chunk'\n );\n}\n\n/**\n * Add attributes for Chat Completion responses\n */\nfunction addChatCompletionAttributes(\n span,\n response,\n recordOutputs,\n) {\n setCommonResponseAttributes(span, response.id, response.model, response.created);\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.prompt_tokens,\n response.usage.completion_tokens,\n response.usage.total_tokens,\n );\n }\n if (Array.isArray(response.choices)) {\n const finishReasons = response.choices\n .map(choice => choice.finish_reason)\n .filter((reason) => reason !== null);\n if (finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(finishReasons),\n });\n }\n\n // Extract tool calls from all choices (only if recordOutputs is true)\n if (recordOutputs) {\n const toolCalls = response.choices\n .map(choice => choice.message?.tool_calls)\n .filter(calls => Array.isArray(calls) && calls.length > 0)\n .flat();\n\n if (toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Responses API responses\n */\nfunction addResponsesApiAttributes(span, response, recordOutputs) {\n setCommonResponseAttributes(span, response.id, response.model, response.created_at);\n if (response.status) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify([response.status]),\n });\n }\n if (response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.total_tokens,\n );\n }\n\n // Extract function calls from output (only if recordOutputs is true)\n if (recordOutputs) {\n const responseWithOutput = response ;\n if (Array.isArray(responseWithOutput.output) && responseWithOutput.output.length > 0) {\n // Filter for function_call type objects in the output array\n const functionCalls = responseWithOutput.output.filter(\n (item) =>\n // oxlint-disable-next-line typescript/prefer-optional-chain\n typeof item === 'object' && item !== null && (item ).type === 'function_call',\n );\n\n if (functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n }\n}\n\n/**\n * Add attributes for Embeddings API responses\n */\nfunction addEmbeddingsAttributes(span, response) {\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if (response.usage) {\n setTokenUsageAttributes(span, response.usage.prompt_tokens, undefined, response.usage.total_tokens);\n }\n}\n\n/**\n * Add attributes for Conversations API responses\n * @see https://platform.openai.com/docs/api-reference/conversations\n */\nfunction addConversationAttributes(span, response) {\n const { id, created_at } = response;\n\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n // The conversation id is used to link messages across API calls\n [GEN_AI_CONVERSATION_ID_ATTRIBUTE]: id,\n });\n\n if (created_at) {\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(created_at * 1000).toISOString(),\n });\n }\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param totalTokens - The number of total tokens\n */\nfunction setTokenUsageAttributes(\n span,\n promptTokens,\n completionTokens,\n totalTokens,\n) {\n if (promptTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE]: promptTokens,\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n });\n }\n if (completionTokens !== undefined) {\n span.setAttributes({\n [OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE]: completionTokens,\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n });\n }\n if (totalTokens !== undefined) {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n });\n }\n}\n\n/**\n * Set common response attributes\n * @param span - The span to add attributes to\n * @param id - The response id\n * @param model - The response model\n * @param timestamp - The response timestamp\n */\nfunction setCommonResponseAttributes(span, id, model, timestamp) {\n span.setAttributes({\n [OPENAI_RESPONSE_ID_ATTRIBUTE]: id,\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: id,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_MODEL_ATTRIBUTE]: model,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: model,\n });\n span.setAttributes({\n [OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(timestamp * 1000).toISOString(),\n });\n}\n\n/**\n * Extract conversation ID from request parameters\n * Supports both Conversations API and previous_response_id chaining\n * @see https://platform.openai.com/docs/guides/conversation-state\n */\nfunction extractConversationId(params) {\n // Conversations API: conversation parameter (e.g., \"conv_...\")\n if ('conversation' in params && typeof params.conversation === 'string') {\n return params.conversation;\n }\n // Responses chaining: previous_response_id links to parent response\n if ('previous_response_id' in params && typeof params.previous_response_id === 'string') {\n return params.previous_response_id;\n }\n return undefined;\n}\n\n/**\n * Extract request parameters including model settings and conversation context\n */\nfunction extractRequestParameters(params) {\n const attributes = {\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: params.model ?? 'unknown',\n };\n\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('frequency_penalty' in params) attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('presence_penalty' in params) attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = params.presence_penalty;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('encoding_format' in params) attributes[GEN_AI_REQUEST_ENCODING_FORMAT_ATTRIBUTE] = params.encoding_format;\n if ('dimensions' in params) attributes[GEN_AI_REQUEST_DIMENSIONS_ATTRIBUTE] = params.dimensions;\n\n // Capture conversation ID for linking messages across API calls\n const conversationId = extractConversationId(params);\n if (conversationId) {\n attributes[GEN_AI_CONVERSATION_ID_ATTRIBUTE] = conversationId;\n }\n\n return attributes;\n}\n\nexport { addChatCompletionAttributes, addConversationAttributes, addEmbeddingsAttributes, addResponsesApiAttributes, extractRequestParameters, getOperationName, getSpanOperation, isChatCompletionChunk, isChatCompletionResponse, isConversationResponse, isEmbeddingsResponse, isResponsesApiResponse, isResponsesApiStreamEvent, setCommonResponseAttributes, setTokenUsageAttributes, shouldInstrument };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { GEN_AI_RESPONSE_STREAMING_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { RESPONSE_EVENT_TYPES } from './constants.js';\nimport { isChatCompletionChunk, isResponsesApiStreamEvent, setCommonResponseAttributes, setTokenUsageAttributes } from './utils.js';\n\n/**\n * State object used to accumulate information from a stream of OpenAI events/chunks.\n */\n\n/**\n * Processes tool calls from a chat completion chunk delta.\n * Follows the pattern: accumulate by index, then convert to array at the end.\n *\n * @param toolCalls - Array of tool calls from the delta.\n * @param state - The current streaming state to update.\n *\n * @see https://platform.openai.com/docs/guides/function-calling#streaming\n */\nfunction processChatCompletionToolCalls(toolCalls, state) {\n for (const toolCall of toolCalls) {\n const index = toolCall.index;\n if (index === undefined || !toolCall.function) continue;\n\n // Initialize tool call if this is the first chunk for this index\n if (!(index in state.chatCompletionToolCalls)) {\n state.chatCompletionToolCalls[index] = {\n ...toolCall,\n function: {\n name: toolCall.function.name,\n arguments: toolCall.function.arguments || '',\n },\n };\n } else {\n // Accumulate function arguments from subsequent chunks\n const existingToolCall = state.chatCompletionToolCalls[index];\n if (toolCall.function.arguments && existingToolCall?.function) {\n existingToolCall.function.arguments += toolCall.function.arguments;\n }\n }\n }\n}\n\n/**\n * Processes a single OpenAI ChatCompletionChunk event, updating the streaming state.\n *\n * @param chunk - The ChatCompletionChunk event to process.\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n */\nfunction processChatCompletionChunk(chunk, state, recordOutputs) {\n state.responseId = chunk.id ?? state.responseId;\n state.responseModel = chunk.model ?? state.responseModel;\n state.responseTimestamp = chunk.created ?? state.responseTimestamp;\n\n if (chunk.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = chunk.usage.prompt_tokens;\n state.completionTokens = chunk.usage.completion_tokens;\n state.totalTokens = chunk.usage.total_tokens;\n }\n\n for (const choice of chunk.choices ?? []) {\n if (recordOutputs) {\n if (choice.delta?.content) {\n state.responseTexts.push(choice.delta.content);\n }\n\n // Handle tool calls from delta\n if (choice.delta?.tool_calls) {\n processChatCompletionToolCalls(choice.delta.tool_calls, state);\n }\n }\n if (choice.finish_reason) {\n state.finishReasons.push(choice.finish_reason);\n }\n }\n}\n\n/**\n * Processes a single OpenAI Responses API streaming event, updating the streaming state and span.\n *\n * @param streamEvent - The event to process (may be an error or unknown object).\n * @param state - The current streaming state to update.\n * @param recordOutputs - Whether to record output text fragments.\n * @param span - The span to update with error status if needed.\n */\nfunction processResponsesApiEvent(\n streamEvent,\n state,\n recordOutputs,\n span,\n) {\n if (!(streamEvent && typeof streamEvent === 'object')) {\n state.eventTypes.push('unknown:non-object');\n return;\n }\n if (streamEvent instanceof Error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(streamEvent, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream-response',\n },\n });\n return;\n }\n\n if (!('type' in streamEvent)) return;\n const event = streamEvent ;\n\n if (!RESPONSE_EVENT_TYPES.includes(event.type)) {\n state.eventTypes.push(event.type);\n return;\n }\n\n // Handle output text delta\n if (recordOutputs) {\n // Handle tool call events for Responses API\n if (event.type === 'response.output_item.done' && 'item' in event) {\n state.responsesApiToolCalls.push(event.item);\n }\n\n if (event.type === 'response.output_text.delta' && 'delta' in event && event.delta) {\n state.responseTexts.push(event.delta);\n return;\n }\n }\n\n if ('response' in event) {\n const { response } = event ;\n state.responseId = response.id ?? state.responseId;\n state.responseModel = response.model ?? state.responseModel;\n state.responseTimestamp = response.created_at ?? state.responseTimestamp;\n\n if (response.usage) {\n // For stream responses, the input tokens remain constant across all events in the stream.\n // Output tokens, however, are only finalized in the last event.\n // Since we can't guarantee that the last event will include usage data or even be a typed event,\n // we update the output token values on every event that includes them.\n // This ensures that output token usage is always set, even if the final event lacks it.\n state.promptTokens = response.usage.input_tokens;\n state.completionTokens = response.usage.output_tokens;\n state.totalTokens = response.usage.total_tokens;\n }\n\n if (response.status) {\n state.finishReasons.push(response.status);\n }\n\n if (recordOutputs && response.output_text) {\n state.responseTexts.push(response.output_text);\n }\n }\n}\n\n/**\n * Instruments a stream of OpenAI events, updating the provided span with relevant attributes and\n * optionally recording output text. This function yields each event from the input stream as it is processed.\n *\n * @template T - The type of events in the stream.\n * @param stream - The async iterable stream of events to instrument.\n * @param span - The span to add attributes to and to finish at the end of the stream.\n * @param recordOutputs - Whether to record output text fragments in the span.\n * @returns An async generator yielding each event from the input stream.\n */\nasync function* instrumentStream(\n stream,\n span,\n recordOutputs,\n) {\n const state = {\n eventTypes: [],\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n responseTimestamp: 0,\n promptTokens: undefined,\n completionTokens: undefined,\n totalTokens: undefined,\n chatCompletionToolCalls: {},\n responsesApiToolCalls: [],\n };\n\n try {\n for await (const event of stream) {\n if (isChatCompletionChunk(event)) {\n processChatCompletionChunk(event , state, recordOutputs);\n } else if (isResponsesApiStreamEvent(event)) {\n processResponsesApiEvent(event , state, recordOutputs, span);\n }\n yield event;\n }\n } finally {\n setCommonResponseAttributes(span, state.responseId, state.responseModel, state.responseTimestamp);\n setTokenUsageAttributes(span, state.promptTokens, state.completionTokens, state.totalTokens);\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls attribute if any were accumulated\n const chatCompletionToolCallsArray = Object.values(state.chatCompletionToolCalls);\n const allToolCalls = [...chatCompletionToolCallsArray, ...state.responsesApiToolCalls];\n\n if (allToolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(allToolCalls),\n });\n }\n\n span.end();\n }\n}\n\nexport { instrumentStream };\n//# sourceMappingURL=streaming.js.map\n", + "import { DEBUG_BUILD } from '../../debug-build.js';\nimport { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { debug } from '../../utils/debug-logger.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpanManual, startSpan } from '../trace.js';\nimport { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, OPENAI_OPERATIONS, GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { resolveAIRecordingOptions, wrapPromiseWithMethods, extractSystemInstructions, getTruncatedJsonString, buildMethodPath } from '../ai/utils.js';\nimport { instrumentStream } from './streaming.js';\nimport { shouldInstrument, getOperationName, getSpanOperation, extractRequestParameters, isChatCompletionResponse, addChatCompletionAttributes, isResponsesApiResponse, addResponsesApiAttributes, isEmbeddingsResponse, addEmbeddingsAttributes, isConversationResponse, addConversationAttributes } from './utils.js';\n\n/**\n * Extract available tools from request parameters\n */\nfunction extractAvailableTools(params) {\n const tools = Array.isArray(params.tools) ? params.tools : [];\n const hasWebSearchOptions = params.web_search_options && typeof params.web_search_options === 'object';\n const webSearchOptions = hasWebSearchOptions\n ? [{ type: 'web_search_options', ...(params.web_search_options ) }]\n : [];\n\n const availableTools = [...tools, ...webSearchOptions];\n if (availableTools.length === 0) {\n return undefined;\n }\n\n try {\n return JSON.stringify(availableTools);\n } catch (error) {\n DEBUG_BUILD && debug.error('Failed to serialize OpenAI tools:', error);\n return undefined;\n }\n}\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args, methodPath) {\n const attributes = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getOperationName(methodPath),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] ;\n\n const availableTools = extractAvailableTools(params);\n if (availableTools) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = availableTools;\n }\n\n Object.assign(attributes, extractRequestParameters(params));\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n\n return attributes;\n}\n\n/**\n * Add response attributes to spans\n * This supports Chat Completion, Responses API, Embeddings, and Conversations API responses\n */\nfunction addResponseAttributes(span, result, recordOutputs) {\n if (!result || typeof result !== 'object') return;\n\n const response = result ;\n\n if (isChatCompletionResponse(response)) {\n addChatCompletionAttributes(span, response, recordOutputs);\n if (recordOutputs && response.choices?.length) {\n const responseTexts = response.choices.map(choice => choice.message?.content || '');\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(responseTexts) });\n }\n } else if (isResponsesApiResponse(response)) {\n addResponsesApiAttributes(span, response, recordOutputs);\n if (recordOutputs && response.output_text) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.output_text });\n }\n } else if (isEmbeddingsResponse(response)) {\n addEmbeddingsAttributes(span, response);\n } else if (isConversationResponse(response)) {\n addConversationAttributes(span, response);\n }\n}\n\n// Extract and record AI request inputs, if present. This is intentionally separate from response attributes.\nfunction addRequestAttributes(span, params, operationName) {\n // Store embeddings input on a separate attribute and do not truncate it\n if (operationName === OPENAI_OPERATIONS.EMBEDDINGS && 'input' in params) {\n const input = params.input;\n\n // No input provided\n if (input == null) {\n return;\n }\n\n // Empty input string\n if (typeof input === 'string' && input.length === 0) {\n return;\n }\n\n // Empty array input\n if (Array.isArray(input) && input.length === 0) {\n return;\n }\n\n // Store strings as-is, arrays/objects as JSON\n span.setAttribute(GEN_AI_EMBEDDINGS_INPUT_ATTRIBUTE, typeof input === 'string' ? input : JSON.stringify(input));\n return;\n }\n\n const src = 'input' in params ? params.input : 'messages' in params ? params.messages : undefined;\n\n if (!src) {\n return;\n }\n\n if (Array.isArray(src) && src.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(src);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedInput = getTruncatedJsonString(filteredMessages);\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ATTRIBUTE, truncatedInput);\n\n if (Array.isArray(filteredMessages)) {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredMessages.length);\n } else {\n span.setAttribute(GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, 1);\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod,\n methodPath,\n context,\n options,\n) {\n return function instrumentedMethod(...args) {\n const requestAttributes = extractRequestAttributes(args, methodPath);\n const model = (requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ) || 'unknown';\n const operationName = getOperationName(methodPath);\n\n const params = args[0] ;\n const isStreamRequested = params && typeof params === 'object' && params.stream === true;\n\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes ,\n };\n\n if (isStreamRequested) {\n let originalResult;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span) => {\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n // Return async processing\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentStream(\n result ,\n span,\n options.recordOutputs ?? false,\n ) ;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai.stream',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n }\n\n // Non-streaming\n let originalResult;\n\n const instrumentedPromise = startSpan(spanConfig, (span) => {\n // Call synchronously to capture the promise\n originalResult = originalMethod.apply(context, args);\n\n if (options.recordInputs && params) {\n addRequestAttributes(span, params, operationName);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result, options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.openai',\n data: { function: methodPath },\n },\n });\n throw error;\n },\n );\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.openai');\n };\n}\n\n/**\n * Create a deep proxy for OpenAI client instrumentation\n */\nfunction createDeepProxy(target, currentPath = '', options) {\n return new Proxy(target, {\n get(obj, prop) {\n const value = (obj )[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n return instrumentMethod(value , methodPath, obj, options);\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n // which is required for accessing private class fields (e.g. #baseURL) in OpenAI SDK v5.\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) ;\n}\n\n/**\n * Instrument an OpenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n */\nfunction instrumentOpenAiClient(client, options) {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n\nexport { instrumentOpenAiClient };\n//# sourceMappingURL=index.js.map\n", + "const ANTHROPIC_AI_INTEGRATION_NAME = 'Anthropic_AI';\n\n// https://docs.anthropic.com/en/api/messages\n// https://docs.anthropic.com/en/api/models-list\nconst ANTHROPIC_AI_INSTRUMENTED_METHODS = [\n 'messages.create',\n 'messages.stream',\n 'messages.countTokens',\n 'models.get',\n 'completions.create',\n 'models.retrieve',\n 'beta.messages.create',\n] ;\n\nexport { ANTHROPIC_AI_INSTRUMENTED_METHODS, ANTHROPIC_AI_INTEGRATION_NAME };\n//# sourceMappingURL=constants.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { extractSystemInstructions, getTruncatedJsonString } from '../ai/utils.js';\nimport { ANTHROPIC_AI_INSTRUMENTED_METHODS } from './constants.js';\n\n/**\n * Check if a method path should be instrumented\n */\nfunction shouldInstrument(methodPath) {\n return ANTHROPIC_AI_INSTRUMENTED_METHODS.includes(methodPath );\n}\n\n/**\n * Set the messages and messages original length attributes.\n * Extracts system instructions before truncation.\n */\nfunction setMessagesAttribute(span, messages) {\n if (Array.isArray(messages) && messages.length === 0) {\n return;\n }\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttributes({\n [GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE]: systemInstructions,\n });\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 1;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(filteredMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n}\n\nconst ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS = {\n invalid_request_error: 'invalid_argument',\n authentication_error: 'unauthenticated',\n permission_error: 'permission_denied',\n not_found_error: 'not_found',\n request_too_large: 'failed_precondition',\n rate_limit_error: 'resource_exhausted',\n api_error: 'internal_error',\n overloaded_error: 'unavailable',\n};\n\n/**\n * Map an Anthropic API error type to a SpanStatusType value.\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nfunction mapAnthropicErrorToStatusMessage(errorType) {\n if (!errorType) {\n return 'internal_error';\n }\n return ANTHROPIC_ERROR_TYPE_TO_SPAN_STATUS[errorType] || 'internal_error';\n}\n\n/**\n * Capture error information from the response\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nfunction handleResponseError(span, response) {\n if (response.error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(response.error.type) });\n\n captureException(response.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n }\n}\n\n/**\n * Include the system prompt in the messages list, if available\n */\nfunction messagesFromParams(params) {\n const { system, messages, input } = params;\n\n const systemMessages = typeof system === 'string' ? [{ role: 'system', content: params.system }] : [];\n\n const inputParamMessages = Array.isArray(input) ? input : input != null ? [input] : undefined;\n\n const messagesParamMessages = Array.isArray(messages) ? messages : messages != null ? [messages] : [];\n\n const userMessages = inputParamMessages ?? messagesParamMessages;\n\n return [...systemMessages, ...userMessages];\n}\n\nexport { handleResponseError, mapAnthropicErrorToStatusMessage, messagesFromParams, setMessagesAttribute, shouldInstrument };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { GEN_AI_RESPONSE_STREAMING_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { setTokenUsageAttributes } from '../ai/utils.js';\nimport { mapAnthropicErrorToStatusMessage } from './utils.js';\n\n/**\n * State object used to accumulate information from a stream of Anthropic AI events.\n */\n\n/**\n * Checks if an event is an error event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n * @returns Whether an error occurred\n */\n\nfunction isErrorEvent(event, span) {\n if ('type' in event && typeof event.type === 'string') {\n // If the event is an error, set the span status and capture the error\n // These error events are not rejected by the API by default, but are sent as metadata of the response\n if (event.type === 'error') {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: mapAnthropicErrorToStatusMessage(event.error?.type) });\n captureException(event.error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.anthropic_error',\n },\n });\n return true;\n }\n }\n return false;\n}\n\n/**\n * Processes the message metadata of an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n */\n\nfunction handleMessageMetadata(event, state) {\n // The token counts shown in the usage field of the message_delta event are cumulative.\n // @see https://docs.anthropic.com/en/docs/build-with-claude/streaming#event-types\n if (event.type === 'message_delta' && event.usage) {\n if ('output_tokens' in event.usage && typeof event.usage.output_tokens === 'number') {\n state.completionTokens = event.usage.output_tokens;\n }\n }\n\n if (event.message) {\n const message = event.message;\n\n if (message.id) state.responseId = message.id;\n if (message.model) state.responseModel = message.model;\n if (message.stop_reason) state.finishReasons.push(message.stop_reason);\n\n if (message.usage) {\n if (typeof message.usage.input_tokens === 'number') state.promptTokens = message.usage.input_tokens;\n if (typeof message.usage.cache_creation_input_tokens === 'number')\n state.cacheCreationInputTokens = message.usage.cache_creation_input_tokens;\n if (typeof message.usage.cache_read_input_tokens === 'number')\n state.cacheReadInputTokens = message.usage.cache_read_input_tokens;\n }\n }\n}\n\n/**\n * Handle start of a content block (e.g., tool_use)\n */\nfunction handleContentBlockStart(event, state) {\n if (event.type !== 'content_block_start' || typeof event.index !== 'number' || !event.content_block) return;\n if (event.content_block.type === 'tool_use' || event.content_block.type === 'server_tool_use') {\n state.activeToolBlocks[event.index] = {\n id: event.content_block.id,\n name: event.content_block.name,\n inputJsonParts: [],\n };\n }\n}\n\n/**\n * Handle deltas of a content block, including input_json_delta for tool_use\n */\nfunction handleContentBlockDelta(\n event,\n state,\n recordOutputs,\n) {\n if (event.type !== 'content_block_delta' || !event.delta) return;\n\n // Accumulate tool_use input JSON deltas only when we have an index and an active tool block\n if (\n typeof event.index === 'number' &&\n 'partial_json' in event.delta &&\n typeof event.delta.partial_json === 'string'\n ) {\n const active = state.activeToolBlocks[event.index];\n if (active) {\n active.inputJsonParts.push(event.delta.partial_json);\n }\n }\n\n // Accumulate streamed response text regardless of index\n if (recordOutputs && typeof event.delta.text === 'string') {\n state.responseTexts.push(event.delta.text);\n }\n}\n\n/**\n * Handle stop of a content block; finalize tool_use entries\n */\nfunction handleContentBlockStop(event, state) {\n if (event.type !== 'content_block_stop' || typeof event.index !== 'number') return;\n\n const active = state.activeToolBlocks[event.index];\n if (!active) return;\n\n const raw = active.inputJsonParts.join('');\n let parsedInput;\n\n try {\n parsedInput = raw ? JSON.parse(raw) : {};\n } catch {\n parsedInput = { __unparsed: raw };\n }\n\n state.toolCalls.push({\n type: 'tool_use',\n id: active.id,\n name: active.name,\n input: parsedInput,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete state.activeToolBlocks[event.index];\n}\n\n/**\n * Processes an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processEvent(\n event,\n state,\n recordOutputs,\n span,\n) {\n if (!(event && typeof event === 'object')) {\n return;\n }\n\n const isError = isErrorEvent(event, span);\n if (isError) return;\n\n handleMessageMetadata(event, state);\n\n // Tool call events are sent via 3 separate events:\n // - content_block_start (start of the tool call)\n // - content_block_delta (delta aka input of the tool call)\n // - content_block_stop (end of the tool call)\n // We need to handle them all to capture the full tool call.\n handleContentBlockStart(event, state);\n handleContentBlockDelta(event, state, recordOutputs);\n handleContentBlockStop(event, state);\n}\n\n/**\n * Finalizes span attributes when stream processing completes\n */\nfunction finalizeStreamSpan(state, span, recordOutputs) {\n if (!span.isRecording()) {\n return;\n }\n\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n}\n\n/**\n * Instruments an async iterable stream of Anthropic events, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each event from the input stream unchanged.\n */\nasync function* instrumentAsyncIterableStream(\n stream,\n span,\n recordOutputs,\n) {\n const state = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n try {\n for await (const event of stream) {\n processEvent(event, state, recordOutputs, span);\n yield event;\n }\n } finally {\n // Set common response attributes if available\n if (state.responseId) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n });\n }\n if (state.responseModel) {\n span.setAttributes({\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n });\n }\n\n setTokenUsageAttributes(\n span,\n state.promptTokens,\n state.completionTokens,\n state.cacheCreationInputTokens,\n state.cacheReadInputTokens,\n );\n\n span.setAttributes({\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n });\n\n if (state.finishReasons.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n });\n }\n\n if (recordOutputs && state.responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n });\n }\n\n // Set tool calls if any were captured\n if (recordOutputs && state.toolCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n });\n }\n\n span.end();\n }\n}\n\n/**\n * Instruments a MessageStream by registering event handlers and preserving the original stream API.\n */\nfunction instrumentMessageStream(\n stream,\n span,\n recordOutputs,\n) {\n const state = {\n responseTexts: [],\n finishReasons: [],\n responseId: '',\n responseModel: '',\n promptTokens: undefined,\n completionTokens: undefined,\n cacheCreationInputTokens: undefined,\n cacheReadInputTokens: undefined,\n toolCalls: [],\n activeToolBlocks: {},\n };\n\n stream.on('streamEvent', (event) => {\n processEvent(event , state, recordOutputs, span);\n });\n\n // The event fired when a message is done being streamed by the API. Corresponds to the message_stop SSE event.\n // @see https://github.com/anthropics/anthropic-sdk-typescript/blob/d3be31f5a4e6ebb4c0a2f65dbb8f381ae73a9166/helpers.md?plain=1#L42-L44\n stream.on('message', () => {\n finalizeStreamSpan(state, span, recordOutputs);\n });\n\n stream.on('error', (error) => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic.stream_error',\n },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n });\n\n return stream;\n}\n\nexport { instrumentAsyncIterableStream, instrumentMessageStream };\n//# sourceMappingURL=streaming.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpan, startSpanManual } from '../trace.js';\nimport { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_REQUEST_STREAM_ATTRIBUTE, GEN_AI_REQUEST_TOP_K_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, GEN_AI_PROMPT_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { resolveAIRecordingOptions, getFinalOperationName, getSpanOperation, wrapPromiseWithMethods, setTokenUsageAttributes, buildMethodPath } from '../ai/utils.js';\nimport { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming.js';\nimport { shouldInstrument, messagesFromParams, setMessagesAttribute, handleResponseError } from './utils.js';\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args, methodPath) {\n const attributes = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getFinalOperationName(methodPath),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',\n };\n\n if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n const params = args[0] ;\n if (params.tools && Array.isArray(params.tools)) {\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(params.tools);\n }\n\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = params.model ?? 'unknown';\n if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n if ('top_k' in params) attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = params.top_k;\n if ('frequency_penalty' in params)\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n if ('max_tokens' in params) attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = params.max_tokens;\n } else {\n if (methodPath === 'models.retrieve' || methodPath === 'models.get') {\n // models.retrieve(model-id) and models.get(model-id)\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = args[0];\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n }\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n */\nfunction addPrivateRequestAttributes(span, params) {\n const messages = messagesFromParams(params);\n setMessagesAttribute(span, messages);\n\n if ('prompt' in params) {\n span.setAttributes({ [GEN_AI_PROMPT_ATTRIBUTE]: JSON.stringify(params.prompt) });\n }\n}\n\n/**\n * Add content attributes when recordOutputs is enabled\n */\nfunction addContentAttributes(span, response) {\n // Messages.create\n if ('content' in response) {\n if (Array.isArray(response.content)) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.content\n .map((item) => item.text)\n .filter(text => !!text)\n .join(''),\n });\n\n const toolCalls = [];\n\n for (const item of response.content) {\n if (item.type === 'tool_use' || item.type === 'server_tool_use') {\n toolCalls.push(item);\n }\n }\n if (toolCalls.length > 0) {\n span.setAttributes({ [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls) });\n }\n }\n }\n // Completions.create\n if ('completion' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.completion });\n }\n // Models.countTokens\n if ('input_tokens' in response) {\n span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(response.input_tokens) });\n }\n}\n\n/**\n * Add basic metadata attributes from the response\n */\nfunction addMetadataAttributes(span, response) {\n if ('id' in response && 'model' in response) {\n span.setAttributes({\n [GEN_AI_RESPONSE_ID_ATTRIBUTE]: response.id,\n [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n });\n\n if ('created' in response && typeof response.created === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created * 1000).toISOString(),\n });\n }\n if ('created_at' in response && typeof response.created_at === 'number') {\n span.setAttributes({\n [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created_at * 1000).toISOString(),\n });\n }\n\n if ('usage' in response && response.usage) {\n setTokenUsageAttributes(\n span,\n response.usage.input_tokens,\n response.usage.output_tokens,\n response.usage.cache_creation_input_tokens,\n response.usage.cache_read_input_tokens,\n );\n }\n }\n}\n\n/**\n * Add response attributes to spans\n */\nfunction addResponseAttributes(span, response, recordOutputs) {\n if (!response || typeof response !== 'object') return;\n\n // capture error, do not add attributes if error (they shouldn't exist)\n if ('type' in response && response.type === 'error') {\n handleResponseError(span, response);\n return;\n }\n\n // Private response attributes that are only recorded if recordOutputs is true.\n if (recordOutputs) {\n addContentAttributes(span, response);\n }\n\n // Add basic metadata attributes\n addMetadataAttributes(span, response);\n}\n\n/**\n * Handle common error catching and reporting for streaming requests\n */\nfunction handleStreamingError(error, span, methodPath) {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.anthropic', data: { function: methodPath } },\n });\n\n if (span.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n span.end();\n }\n throw error;\n}\n\n/**\n * Handle streaming cases with common logic\n */\nfunction handleStreamingRequest(\n originalMethod,\n target,\n context,\n args,\n requestAttributes,\n operationName,\n methodPath,\n params,\n options,\n isStreamRequested,\n isStreamingMethod,\n) {\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const spanConfig = {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes ,\n };\n\n // messages.stream() always returns a sync MessageStream, even with stream: true param\n if (isStreamRequested && !isStreamingMethod) {\n let originalResult;\n\n const instrumentedPromise = startSpanManual(spanConfig, (span) => {\n originalResult = originalMethod.apply(context, args) ;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return (async () => {\n try {\n const result = await originalResult;\n return instrumentAsyncIterableStream(\n result ,\n span,\n options.recordOutputs ?? false,\n ) ;\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n })();\n });\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n } else {\n return startSpanManual(spanConfig, span => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const messageStream = target.apply(context, args);\n return instrumentMessageStream(messageStream, span, options.recordOutputs ?? false);\n } catch (error) {\n return handleStreamingError(error, span, methodPath);\n }\n });\n }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod,\n methodPath,\n context,\n options,\n) {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args) {\n const requestAttributes = extractRequestAttributes(args, methodPath);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const operationName = getFinalOperationName(methodPath);\n\n const params = typeof args[0] === 'object' ? (args[0] ) : undefined;\n const isStreamRequested = Boolean(params?.stream);\n const isStreamingMethod = methodPath === 'messages.stream';\n\n if (isStreamRequested || isStreamingMethod) {\n return handleStreamingRequest(\n originalMethod,\n target,\n context,\n args,\n requestAttributes,\n operationName,\n methodPath,\n params,\n options,\n isStreamRequested,\n isStreamingMethod,\n );\n }\n\n let originalResult;\n\n const instrumentedPromise = startSpan(\n {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes ,\n },\n span => {\n originalResult = target.apply(context, args) ;\n\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return originalResult.then(\n result => {\n addResponseAttributes(span, result , options.recordOutputs);\n return result;\n },\n error => {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.anthropic',\n data: {\n function: methodPath,\n },\n },\n });\n throw error;\n },\n );\n },\n );\n\n return wrapPromiseWithMethods(originalResult, instrumentedPromise, 'auto.ai.anthropic');\n },\n }) ;\n}\n\n/**\n * Create a deep proxy for Anthropic AI client instrumentation\n */\nfunction createDeepProxy(target, currentPath = '', options) {\n return new Proxy(target, {\n get(obj, prop) {\n const value = (obj )[prop];\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n return instrumentMethod(value , methodPath, obj, options);\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context,\n return value.bind(obj);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n }) ;\n}\n\n/**\n * Instrument an Anthropic AI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends object\n * @param client - The Anthropic AI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n */\nfunction instrumentAnthropicAiClient(anthropicAiClient, options) {\n return createDeepProxy(anthropicAiClient, '', resolveAIRecordingOptions(options));\n}\n\nexport { instrumentAnthropicAiClient };\n//# sourceMappingURL=index.js.map\n", + "const GOOGLE_GENAI_INTEGRATION_NAME = 'Google_GenAI';\n\n// https://ai.google.dev/api/rest/v1/models/generateContent\n// https://ai.google.dev/api/rest/v1/chats/sendMessage\n// https://googleapis.github.io/js-genai/release_docs/classes/models.Models.html#generatecontentstream\n// https://googleapis.github.io/js-genai/release_docs/classes/chats.Chat.html#sendmessagestream\nconst GOOGLE_GENAI_INSTRUMENTED_METHODS = [\n 'models.generateContent',\n 'models.generateContentStream',\n 'chats.create',\n 'sendMessage',\n 'sendMessageStream',\n] ;\n\n// Constants for internal use\nconst GOOGLE_GENAI_SYSTEM_NAME = 'google_genai';\nconst CHATS_CREATE_METHOD = 'chats.create';\nconst CHAT_PATH = 'chat';\n\nexport { CHATS_CREATE_METHOD, CHAT_PATH, GOOGLE_GENAI_INSTRUMENTED_METHODS, GOOGLE_GENAI_INTEGRATION_NAME, GOOGLE_GENAI_SYSTEM_NAME };\n//# sourceMappingURL=constants.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { GEN_AI_RESPONSE_STREAMING_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\n\n/**\n * State object used to accumulate information from a stream of Google GenAI events.\n */\n\n/**\n * Checks if a response chunk contains an error\n * @param chunk - The response chunk to check\n * @param span - The span to update if error is found\n * @returns Whether an error occurred\n */\nfunction isErrorChunk(chunk, span) {\n const feedback = chunk?.promptFeedback;\n if (feedback?.blockReason) {\n const message = feedback.blockReasonMessage ?? feedback.blockReason;\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(`Content blocked: ${message}`, {\n mechanism: { handled: false, type: 'auto.ai.google_genai' },\n });\n return true;\n }\n return false;\n}\n\n/**\n * Processes response metadata from a chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n */\nfunction handleResponseMetadata(chunk, state) {\n if (typeof chunk.responseId === 'string') state.responseId = chunk.responseId;\n if (typeof chunk.modelVersion === 'string') state.responseModel = chunk.modelVersion;\n\n const usage = chunk.usageMetadata;\n if (usage) {\n if (typeof usage.promptTokenCount === 'number') state.promptTokens = usage.promptTokenCount;\n if (typeof usage.candidatesTokenCount === 'number') state.completionTokens = usage.candidatesTokenCount;\n if (typeof usage.totalTokenCount === 'number') state.totalTokens = usage.totalTokenCount;\n }\n}\n\n/**\n * Processes candidate content from a response chunk\n * @param chunk - The response chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n */\nfunction handleCandidateContent(chunk, state, recordOutputs) {\n if (Array.isArray(chunk.functionCalls)) {\n state.toolCalls.push(...chunk.functionCalls);\n }\n\n for (const candidate of chunk.candidates ?? []) {\n if (candidate?.finishReason && !state.finishReasons.includes(candidate.finishReason)) {\n state.finishReasons.push(candidate.finishReason);\n }\n\n for (const part of candidate?.content?.parts ?? []) {\n if (recordOutputs && part.text) state.responseTexts.push(part.text);\n if (part.functionCall) {\n state.toolCalls.push({\n type: 'function',\n id: part.functionCall.id,\n name: part.functionCall.name,\n arguments: part.functionCall.args,\n });\n }\n }\n }\n}\n\n/**\n * Processes a single chunk from the Google GenAI stream\n * @param chunk - The chunk to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processChunk(chunk, state, recordOutputs, span) {\n if (!chunk || isErrorChunk(chunk, span)) return;\n handleResponseMetadata(chunk, state);\n handleCandidateContent(chunk, state, recordOutputs);\n}\n\n/**\n * Instruments an async iterable stream of Google GenAI response chunks, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each chunk from the input stream unchanged.\n */\nasync function* instrumentStream(\n stream,\n span,\n recordOutputs,\n) {\n const state = {\n responseTexts: [],\n finishReasons: [],\n toolCalls: [],\n };\n\n try {\n for await (const chunk of stream) {\n processChunk(chunk, state, recordOutputs, span);\n yield chunk;\n }\n } finally {\n const attrs = {\n [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n };\n\n if (state.responseId) attrs[GEN_AI_RESPONSE_ID_ATTRIBUTE] = state.responseId;\n if (state.responseModel) attrs[GEN_AI_RESPONSE_MODEL_ATTRIBUTE] = state.responseModel;\n if (state.promptTokens !== undefined) attrs[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE] = state.promptTokens;\n if (state.completionTokens !== undefined) attrs[GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE] = state.completionTokens;\n if (state.totalTokens !== undefined) attrs[GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE] = state.totalTokens;\n\n if (state.finishReasons.length) {\n attrs[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE] = JSON.stringify(state.finishReasons);\n }\n if (recordOutputs && state.responseTexts.length) {\n attrs[GEN_AI_RESPONSE_TEXT_ATTRIBUTE] = state.responseTexts.join('');\n }\n if (recordOutputs && state.toolCalls.length) {\n attrs[GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE] = JSON.stringify(state.toolCalls);\n }\n\n span.setAttributes(attrs);\n span.end();\n }\n}\n\nexport { instrumentStream };\n//# sourceMappingURL=streaming.js.map\n", + "import { GOOGLE_GENAI_INSTRUMENTED_METHODS } from './constants.js';\n\n/**\n * Check if a method path should be instrumented\n */\nfunction shouldInstrument(methodPath) {\n // Check for exact matches first (like 'models.generateContent')\n if (GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodPath )) {\n return true;\n }\n\n // Check for method name matches (like 'sendMessage' from chat instances)\n const methodName = methodPath.split('.').pop();\n return GOOGLE_GENAI_INSTRUMENTED_METHODS.includes(methodName );\n}\n\n/**\n * Check if a method is a streaming method\n */\nfunction isStreamingMethod(methodPath) {\n return methodPath.includes('Stream');\n}\n\n// Copied from https://googleapis.github.io/js-genai/release_docs/index.html\n\n/**\n *\n */\nfunction contentUnionToMessages(content, role = 'user') {\n if (typeof content === 'string') {\n return [{ role, content }];\n }\n if (Array.isArray(content)) {\n return content.flatMap(content => contentUnionToMessages(content, role));\n }\n if (typeof content !== 'object' || !content) return [];\n if ('role' in content && typeof content.role === 'string') {\n return [content ];\n }\n if ('parts' in content) {\n return [{ ...content, role } ];\n }\n return [{ role, content }];\n}\n\nexport { contentUnionToMessages, isStreamingMethod, shouldInstrument };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpanManual, startSpan } from '../trace.js';\nimport { handleCallbackErrors } from '../../utils/handleCallbackErrors.js';\nimport { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_REQUEST_TOP_K_ATTRIBUTE, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { truncateGenAiMessages } from '../ai/messageTruncation.js';\nimport { resolveAIRecordingOptions, buildMethodPath, getFinalOperationName, getSpanOperation, extractSystemInstructions } from '../ai/utils.js';\nimport { CHATS_CREATE_METHOD, CHAT_PATH, GOOGLE_GENAI_SYSTEM_NAME } from './constants.js';\nimport { instrumentStream } from './streaming.js';\nimport { shouldInstrument, isStreamingMethod, contentUnionToMessages } from './utils.js';\n\n/**\n * Extract model from parameters or chat context object\n * For chat instances, the model is available on the chat object as 'model' (older versions) or 'modelVersion' (newer versions)\n */\nfunction extractModel(params, context) {\n if ('model' in params && typeof params.model === 'string') {\n return params.model;\n }\n\n // Try to get model from chat context object (chat instance has model property)\n if (context && typeof context === 'object') {\n const contextObj = context ;\n\n // Check for 'model' property (older versions, and streaming)\n if ('model' in contextObj && typeof contextObj.model === 'string') {\n return contextObj.model;\n }\n\n // Check for 'modelVersion' property (newer versions)\n if ('modelVersion' in contextObj && typeof contextObj.modelVersion === 'string') {\n return contextObj.modelVersion;\n }\n }\n\n return 'unknown';\n}\n\n/**\n * Extract generation config parameters\n */\nfunction extractConfigAttributes(config) {\n const attributes = {};\n\n if ('temperature' in config && typeof config.temperature === 'number') {\n attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = config.temperature;\n }\n if ('topP' in config && typeof config.topP === 'number') {\n attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = config.topP;\n }\n if ('topK' in config && typeof config.topK === 'number') {\n attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = config.topK;\n }\n if ('maxOutputTokens' in config && typeof config.maxOutputTokens === 'number') {\n attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = config.maxOutputTokens;\n }\n if ('frequencyPenalty' in config && typeof config.frequencyPenalty === 'number') {\n attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = config.frequencyPenalty;\n }\n if ('presencePenalty' in config && typeof config.presencePenalty === 'number') {\n attributes[GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE] = config.presencePenalty;\n }\n\n return attributes;\n}\n\n/**\n * Extract request attributes from method arguments\n * Builds the base attributes for span creation including system info, model, and config\n */\nfunction extractRequestAttributes(\n methodPath,\n params,\n context,\n) {\n const attributes = {\n [GEN_AI_SYSTEM_ATTRIBUTE]: GOOGLE_GENAI_SYSTEM_NAME,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getFinalOperationName(methodPath),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.google_genai',\n };\n\n if (params) {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel(params, context);\n\n // Extract generation config parameters\n if ('config' in params && typeof params.config === 'object' && params.config) {\n const config = params.config ;\n Object.assign(attributes, extractConfigAttributes(config));\n\n // Extract available tools from config\n if ('tools' in config && Array.isArray(config.tools)) {\n const functionDeclarations = config.tools.flatMap(\n (tool) => tool.functionDeclarations,\n );\n attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(functionDeclarations);\n }\n }\n } else {\n attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = extractModel({}, context);\n }\n\n return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n * Handles different parameter formats for different Google GenAI methods.\n */\nfunction addPrivateRequestAttributes(span, params) {\n const messages = [];\n\n // config.systemInstruction: ContentUnion\n if (\n 'config' in params &&\n params.config &&\n typeof params.config === 'object' &&\n 'systemInstruction' in params.config &&\n params.config.systemInstruction\n ) {\n messages.push(...contentUnionToMessages(params.config.systemInstruction , 'system'));\n }\n\n // For chats.create: history contains the conversation history\n if ('history' in params) {\n messages.push(...contentUnionToMessages(params.history , 'user'));\n }\n\n // For models.generateContent: ContentListUnion\n if ('contents' in params) {\n messages.push(...contentUnionToMessages(params.contents , 'user'));\n }\n\n // For chat.sendMessage: message can be PartListUnion\n if ('message' in params) {\n messages.push(...contentUnionToMessages(params.message , 'user'));\n }\n\n if (Array.isArray(messages) && messages.length) {\n const { systemInstructions, filteredMessages } = extractSystemInstructions(messages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncateGenAiMessages(filteredMessages )),\n });\n }\n}\n\n/**\n * Add response attributes from the Google GenAI response\n * @see https://github.com/googleapis/js-genai/blob/v1.19.0/src/types.ts#L2313\n */\nfunction addResponseAttributes(span, response, recordOutputs) {\n if (!response || typeof response !== 'object') return;\n\n if (response.modelVersion) {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, response.modelVersion);\n }\n\n // Add usage metadata if present\n if (response.usageMetadata && typeof response.usageMetadata === 'object') {\n const usage = response.usageMetadata;\n if (typeof usage.promptTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: usage.promptTokenCount,\n });\n }\n if (typeof usage.candidatesTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: usage.candidatesTokenCount,\n });\n }\n if (typeof usage.totalTokenCount === 'number') {\n span.setAttributes({\n [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: usage.totalTokenCount,\n });\n }\n }\n\n // Add response text if recordOutputs is enabled\n if (recordOutputs && Array.isArray(response.candidates) && response.candidates.length > 0) {\n const responseTexts = response.candidates\n .map((candidate) => {\n if (candidate.content?.parts && Array.isArray(candidate.content.parts)) {\n return candidate.content.parts\n .map((part) => (typeof part.text === 'string' ? part.text : ''))\n .filter((text) => text.length > 0)\n .join('');\n }\n return '';\n })\n .filter((text) => text.length > 0);\n\n if (responseTexts.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: responseTexts.join(''),\n });\n }\n }\n\n // Add tool calls if recordOutputs is enabled\n if (recordOutputs && response.functionCalls) {\n const functionCalls = response.functionCalls;\n if (Array.isArray(functionCalls) && functionCalls.length > 0) {\n span.setAttributes({\n [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(functionCalls),\n });\n }\n }\n}\n\n/**\n * Instrument any async or synchronous genai method with Sentry spans\n * Handles operations like models.generateContent and chat.sendMessage and chats.create\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod(\n originalMethod,\n methodPath,\n context,\n options,\n) {\n const isSyncCreate = methodPath === CHATS_CREATE_METHOD;\n\n return new Proxy(originalMethod, {\n apply(target, _, args) {\n const params = args[0] ;\n const requestAttributes = extractRequestAttributes(methodPath, params, context);\n const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n const operationName = getFinalOperationName(methodPath);\n\n // Check if this is a streaming method\n if (isStreamingMethod(methodPath)) {\n // Use startSpanManual for streaming methods to control span lifecycle\n return startSpanManual(\n {\n name: `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes,\n },\n async (span) => {\n try {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n const stream = await target.apply(context, args);\n return instrumentStream(stream, span, Boolean(options.recordOutputs)) ;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.google_genai',\n data: { function: methodPath },\n },\n });\n span.end();\n throw error;\n }\n },\n );\n }\n // Single span for both sync and async operations\n return startSpan(\n {\n name: isSyncCreate ? `${operationName} ${model} create` : `${operationName} ${model}`,\n op: getSpanOperation(methodPath),\n attributes: requestAttributes,\n },\n (span) => {\n if (options.recordInputs && params) {\n addPrivateRequestAttributes(span, params);\n }\n\n return handleCallbackErrors(\n () => target.apply(context, args),\n error => {\n captureException(error, {\n mechanism: { handled: false, type: 'auto.ai.google_genai', data: { function: methodPath } },\n });\n },\n () => {},\n result => {\n // Only add response attributes for content-producing methods, not for chats.create\n if (!isSyncCreate) {\n addResponseAttributes(span, result, options.recordOutputs);\n }\n },\n );\n },\n );\n },\n }) ;\n}\n\n/**\n * Create a deep proxy for Google GenAI client instrumentation\n * Recursively instruments methods and handles special cases like chats.create\n */\nfunction createDeepProxy(target, currentPath = '', options) {\n return new Proxy(target, {\n get: (t, prop, receiver) => {\n const value = Reflect.get(t, prop, receiver);\n const methodPath = buildMethodPath(currentPath, String(prop));\n\n if (typeof value === 'function' && shouldInstrument(methodPath)) {\n // Special case: chats.create is synchronous but needs both instrumentation AND result proxying\n if (methodPath === CHATS_CREATE_METHOD) {\n const instrumentedMethod = instrumentMethod(value , methodPath, t, options);\n return function instrumentedAndProxiedCreate(...args) {\n const result = instrumentedMethod(...args);\n // If the result is an object (like a chat instance), proxy it too\n if (result && typeof result === 'object') {\n return createDeepProxy(result, CHAT_PATH, options);\n }\n return result;\n };\n }\n\n return instrumentMethod(value , methodPath, t, options);\n }\n\n if (typeof value === 'function') {\n // Bind non-instrumented functions to preserve the original `this` context\n return value.bind(t);\n }\n\n if (value && typeof value === 'object') {\n return createDeepProxy(value, methodPath, options);\n }\n\n return value;\n },\n });\n}\n\n/**\n * Instrument a Google GenAI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends client object\n * @param client - The Google GenAI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n *\n * @example\n * ```typescript\n * import { GoogleGenAI } from '@google/genai';\n * import { instrumentGoogleGenAIClient } from '@sentry/core';\n *\n * const genAI = new GoogleGenAI({ apiKey: process.env.GOOGLE_GENAI_API_KEY });\n * const instrumentedClient = instrumentGoogleGenAIClient(genAI);\n *\n * // Now both chats.create and sendMessage will be instrumented\n * const chat = instrumentedClient.chats.create({ model: 'gemini-1.5-pro' });\n * const response = await chat.sendMessage({ message: 'Hello' });\n * ```\n */\nfunction instrumentGoogleGenAIClient(client, options) {\n return createDeepProxy(client, '', resolveAIRecordingOptions(options));\n}\n\nexport { extractModel, instrumentGoogleGenAIClient };\n//# sourceMappingURL=index.js.map\n", + "const LANGCHAIN_INTEGRATION_NAME = 'LangChain';\nconst LANGCHAIN_ORIGIN = 'auto.ai.langchain';\n\nconst ROLE_MAP = {\n human: 'user',\n ai: 'assistant',\n assistant: 'assistant',\n system: 'system',\n function: 'function',\n tool: 'tool',\n};\n\nexport { LANGCHAIN_INTEGRATION_NAME, LANGCHAIN_ORIGIN, ROLE_MAP };\n//# sourceMappingURL=constants.js.map\n", + "import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_SYSTEM_ATTRIBUTE, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, GEN_AI_REQUEST_STREAM_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_RESPONSE_ID_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { isContentMedia, stripInlineMediaFromSingleMessage } from '../ai/mediaStripping.js';\nimport { truncateGenAiMessages } from '../ai/messageTruncation.js';\nimport { extractSystemInstructions } from '../ai/utils.js';\nimport { LANGCHAIN_ORIGIN, ROLE_MAP } from './constants.js';\n\n/**\n * Assigns an attribute only when the value is neither `undefined` nor `null`.\n *\n * We keep this tiny helper because call sites are repetitive and easy to miswrite.\n * It also preserves falsy-but-valid values like `0` and `\"\"`.\n */\nconst setIfDefined = (target, key, value) => {\n if (value != null) target[key] = value ;\n};\n\n/**\n * Like `setIfDefined`, but converts the value with `Number()` and skips only when the\n * result is `NaN`. This ensures numeric 0 makes it through (unlike truthy checks).\n */\nconst setNumberIfDefined = (target, key, value) => {\n const n = Number(value);\n if (!Number.isNaN(n)) target[key] = n;\n};\n\n/**\n * Converts a value to a string. Avoids double-quoted JSON strings where a plain\n * string is desired, but still handles objects/arrays safely.\n */\nfunction asString(v) {\n if (typeof v === 'string') return v;\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\n/**\n * Converts message content to a string, stripping inline media (base64 images, audio, etc.)\n * from multimodal content before stringification so downstream media stripping can't miss it.\n *\n * @example\n * // String content passes through unchanged:\n * normalizeContent(\"Hello\") // => \"Hello\"\n *\n * // Multimodal array content — media is replaced with \"[Blob substitute]\" before JSON.stringify:\n * normalizeContent([\n * { type: \"text\", text: \"What color?\" },\n * { type: \"image_url\", image_url: { url: \"data:image/png;base64,iVBOR...\" } }\n * ])\n * // => '[{\"type\":\"text\",\"text\":\"What color?\"},{\"type\":\"image_url\",\"image_url\":{\"url\":\"[Blob substitute]\"}}]'\n *\n * // Without this, asString() would JSON.stringify the raw array and the base64 blob\n * // would end up in span attributes, since downstream stripping only works on objects.\n */\nfunction normalizeContent(v) {\n if (Array.isArray(v)) {\n try {\n const stripped = v.map(part =>\n part && typeof part === 'object' && isContentMedia(part) ? stripInlineMediaFromSingleMessage(part) : part,\n );\n return JSON.stringify(stripped);\n } catch {\n return String(v);\n }\n }\n return asString(v);\n}\n\n/**\n * Normalizes a single role token to our canonical set.\n *\n * @param role Incoming role value (free-form, any casing)\n * @returns Canonical role: 'user' | 'assistant' | 'system' | 'function' | 'tool' | \n */\nfunction normalizeMessageRole(role) {\n const normalized = role.toLowerCase();\n return ROLE_MAP[normalized] ?? normalized;\n}\n\n/**\n * Infers a role from a LangChain message constructor name.\n *\n * Checks for substrings like \"System\", \"Human\", \"AI\", etc.\n */\nfunction normalizeRoleNameFromCtor(name) {\n if (name.includes('System')) return 'system';\n if (name.includes('Human')) return 'user';\n if (name.includes('AI') || name.includes('Assistant')) return 'assistant';\n if (name.includes('Function')) return 'function';\n if (name.includes('Tool')) return 'tool';\n return 'user';\n}\n\n/**\n * Returns invocation params from a LangChain `tags` object.\n *\n * LangChain often passes runtime parameters (model, temperature, etc.) via the\n * `tags.invocation_params` bag. If `tags` is an array (LangChain sometimes uses\n * string tags), we return `undefined`.\n *\n * @param tags LangChain tags (string[] or record)\n * @returns The `invocation_params` object, if present\n */\nfunction getInvocationParams(tags) {\n if (!tags || Array.isArray(tags)) return undefined;\n return tags.invocation_params ;\n}\n\n/**\n * Normalizes a heterogeneous set of LangChain messages to `{ role, content }`.\n *\n * Why so many branches? LangChain messages can arrive in several shapes:\n * - Message classes with `_getType()` (most reliable)\n * - Classes with meaningful constructor names (e.g. `SystemMessage`)\n * - Plain objects with `type`, or `{ role, content }`\n * - Serialized format with `{ lc: 1, id: [...], kwargs: { content } }`\n * We preserve the prioritization to minimize behavioral drift.\n *\n * @param messages Mixed LangChain messages\n * @returns Array of normalized `{ role, content }`\n */\nfunction normalizeLangChainMessages(messages) {\n return messages.map(message => {\n // 1) Prefer _getType() when present\n const maybeGetType = (message )._getType;\n if (typeof maybeGetType === 'function') {\n const messageType = maybeGetType.call(message);\n return {\n role: normalizeMessageRole(messageType),\n content: normalizeContent(message.content),\n };\n }\n\n // 2) Serialized LangChain format (lc: 1) - check before constructor name\n // This is more reliable than constructor.name which can be lost during serialization\n if (message.lc === 1 && message.kwargs) {\n const id = message.id;\n const messageType = Array.isArray(id) && id.length > 0 ? id[id.length - 1] : '';\n const role = typeof messageType === 'string' ? normalizeRoleNameFromCtor(messageType) : 'user';\n\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.kwargs?.content),\n };\n }\n\n // 3) Then objects with `type`\n if (message.type) {\n const role = String(message.type).toLowerCase();\n return {\n role: normalizeMessageRole(role),\n content: normalizeContent(message.content),\n };\n }\n\n // 4) Then objects with `{ role, content }` - check before constructor name\n // Plain objects have constructor.name=\"Object\" which would incorrectly default to \"user\"\n if (message.role) {\n return {\n role: normalizeMessageRole(String(message.role)),\n content: normalizeContent(message.content),\n };\n }\n\n // 5) Then try constructor name (SystemMessage / HumanMessage / ...)\n // Only use this if we haven't matched a more specific case\n const ctor = (message ).constructor?.name;\n if (ctor && ctor !== 'Object') {\n return {\n role: normalizeMessageRole(normalizeRoleNameFromCtor(ctor)),\n content: normalizeContent(message.content),\n };\n }\n\n // 6) Fallback: treat as user text\n return {\n role: 'user',\n content: normalizeContent(message.content),\n };\n });\n}\n\n/**\n * Extracts request attributes common to both LLM and ChatModel invocations.\n *\n * Source precedence:\n * 1) `invocationParams` (highest)\n * 2) `langSmithMetadata`\n *\n * Numeric values are set even when 0 (e.g. `temperature: 0`), but skipped if `NaN`.\n */\nfunction extractCommonRequestAttributes(\n serialized,\n invocationParams,\n langSmithMetadata,\n) {\n const attrs = {};\n\n // Get kwargs if available (from constructor type)\n const kwargs = 'kwargs' in serialized ? serialized.kwargs : undefined;\n\n const temperature = invocationParams?.temperature ?? langSmithMetadata?.ls_temperature ?? kwargs?.temperature;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE, temperature);\n\n const maxTokens = invocationParams?.max_tokens ?? langSmithMetadata?.ls_max_tokens ?? kwargs?.max_tokens;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE, maxTokens);\n\n const topP = invocationParams?.top_p ?? kwargs?.top_p;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_TOP_P_ATTRIBUTE, topP);\n\n const frequencyPenalty = invocationParams?.frequency_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE, frequencyPenalty);\n\n const presencePenalty = invocationParams?.presence_penalty;\n setNumberIfDefined(attrs, GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE, presencePenalty);\n\n // LangChain uses `stream`. We only set the attribute if the key actually exists\n // (some callbacks report `false` even on streamed requests, this stems from LangChain's callback handler).\n if (invocationParams && 'stream' in invocationParams) {\n setIfDefined(attrs, GEN_AI_REQUEST_STREAM_ATTRIBUTE, Boolean(invocationParams.stream));\n }\n\n return attrs;\n}\n\n/**\n * Small helper to assemble boilerplate attributes shared by both request extractors.\n * Always uses 'chat' as the operation type for all LLM and chat model operations.\n */\nfunction baseRequestAttributes(\n system,\n modelName,\n serialized,\n invocationParams,\n langSmithMetadata,\n) {\n return {\n [GEN_AI_SYSTEM_ATTRIBUTE]: asString(system ?? 'langchain'),\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'chat',\n [GEN_AI_REQUEST_MODEL_ATTRIBUTE]: asString(modelName),\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n ...extractCommonRequestAttributes(serialized, invocationParams, langSmithMetadata),\n };\n}\n\n/**\n * Extracts attributes for plain LLM invocations (string prompts).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain LLM operations are treated as chat operations.\n * - When `recordInputs` is true, string prompts are wrapped into `{role:\"user\"}`\n * messages to align with the chat schema used elsewhere.\n */\nfunction extractLLMRequestAttributes(\n llm,\n prompts,\n recordInputs,\n invocationParams,\n langSmithMetadata,\n) {\n const system = langSmithMetadata?.ls_provider;\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(prompts) && prompts.length > 0) {\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, prompts.length);\n const messages = prompts.map(p => ({ role: 'user', content: p }));\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(messages));\n }\n\n return attrs;\n}\n\n/**\n * Extracts attributes for ChatModel invocations (array-of-arrays of messages).\n *\n * - Operation is tagged as `chat` following OpenTelemetry semantic conventions.\n * LangChain chat model operations are chat operations.\n * - We flatten LangChain's `LangChainMessage[][]` and normalize shapes into a\n * consistent `{ role, content }` array when `recordInputs` is true.\n * - Provider system value falls back to `serialized.id?.[2]`.\n */\nfunction extractChatModelRequestAttributes(\n llm,\n langChainMessages,\n recordInputs,\n invocationParams,\n langSmithMetadata,\n) {\n const system = langSmithMetadata?.ls_provider ?? llm.id?.[2];\n const modelName = invocationParams?.model ?? langSmithMetadata?.ls_model_name ?? 'unknown';\n\n const attrs = baseRequestAttributes(system, modelName, llm, invocationParams, langSmithMetadata);\n\n if (recordInputs && Array.isArray(langChainMessages) && langChainMessages.length > 0) {\n const normalized = normalizeLangChainMessages(langChainMessages.flat());\n\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalized);\n\n if (systemInstructions) {\n setIfDefined(attrs, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, filteredLength);\n\n const truncated = truncateGenAiMessages(filteredMessages );\n setIfDefined(attrs, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, asString(truncated));\n }\n\n return attrs;\n}\n\n/**\n * Scans generations for Anthropic-style `tool_use` items and records them.\n *\n * LangChain represents some provider messages (e.g., Anthropic) with a `message.content`\n * array that may include objects `{ type: 'tool_use', ... }`. We collect and attach\n * them as a JSON array on `gen_ai.response.tool_calls` for downstream consumers.\n */\nfunction addToolCallsAttributes(generations, attrs) {\n const toolCalls = [];\n const flatGenerations = generations.flat();\n\n for (const gen of flatGenerations) {\n const content = gen.message?.content;\n if (Array.isArray(content)) {\n for (const item of content) {\n const t = item ;\n if (t.type === 'tool_use') toolCalls.push(t);\n }\n }\n }\n\n if (toolCalls.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, asString(toolCalls));\n }\n}\n\n/**\n * Adds token usage attributes, supporting both OpenAI (`tokenUsage`) and Anthropic (`usage`) formats.\n * - Preserve zero values (0 tokens) by avoiding truthy checks.\n * - Compute a total for Anthropic when not explicitly provided.\n * - Include cache token metrics when present.\n */\nfunction addTokenUsageAttributes(\n llmOutput,\n attrs,\n) {\n if (!llmOutput) return;\n\n const tokenUsage = llmOutput.tokenUsage\n\n;\n const anthropicUsage = llmOutput.usage\n\n;\n\n if (tokenUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, tokenUsage.promptTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, tokenUsage.completionTokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, tokenUsage.totalTokens);\n } else if (anthropicUsage) {\n setNumberIfDefined(attrs, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.input_tokens);\n setNumberIfDefined(attrs, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, anthropicUsage.output_tokens);\n\n // Compute total when not provided by the provider.\n const input = Number(anthropicUsage.input_tokens);\n const output = Number(anthropicUsage.output_tokens);\n const total = (Number.isNaN(input) ? 0 : input) + (Number.isNaN(output) ? 0 : output);\n if (total > 0) setNumberIfDefined(attrs, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, total);\n\n // Extra Anthropic cache metrics (present only when caching is enabled)\n if (anthropicUsage.cache_creation_input_tokens !== undefined)\n setNumberIfDefined(\n attrs,\n GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS_ATTRIBUTE,\n anthropicUsage.cache_creation_input_tokens,\n );\n if (anthropicUsage.cache_read_input_tokens !== undefined)\n setNumberIfDefined(attrs, GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS_ATTRIBUTE, anthropicUsage.cache_read_input_tokens);\n }\n}\n\n/**\n * Extracts response-related attributes based on a `LangChainLLMResult`.\n *\n * - Records finish reasons when present on generations (e.g., OpenAI)\n * - When `recordOutputs` is true, captures textual response content and any\n * tool calls.\n * - Also propagates model name (`model_name` or `model`), response `id`, and\n * `stop_reason` (for providers that use it).\n */\nfunction extractLlmResponseAttributes(\n llmResult,\n recordOutputs,\n) {\n if (!llmResult) return;\n\n const attrs = {};\n\n if (Array.isArray(llmResult.generations)) {\n const finishReasons = llmResult.generations\n .flat()\n .map(g => {\n // v1 uses generationInfo.finish_reason\n if (g.generationInfo?.finish_reason) {\n return g.generationInfo.finish_reason;\n }\n // v0.3+ uses generation_info.finish_reason\n if (g.generation_info?.finish_reason) {\n return g.generation_info.finish_reason;\n }\n return null;\n })\n .filter((r) => typeof r === 'string');\n\n if (finishReasons.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, asString(finishReasons));\n }\n\n // Tool calls metadata (names, IDs) are not PII, so capture them regardless of recordOutputs\n addToolCallsAttributes(llmResult.generations , attrs);\n\n if (recordOutputs) {\n const texts = llmResult.generations\n .flat()\n .map(gen => gen.text ?? gen.message?.content)\n .filter(t => typeof t === 'string');\n\n if (texts.length > 0) {\n setIfDefined(attrs, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, asString(texts));\n }\n }\n }\n\n addTokenUsageAttributes(llmResult.llmOutput, attrs);\n\n const llmOutput = llmResult.llmOutput;\n\n // Extract from v1 generations structure if available\n const firstGeneration = llmResult.generations?.[0]?.[0];\n const v1Message = firstGeneration?.message;\n\n // Provider model identifier: `model_name` (OpenAI-style) or `model` (others)\n // v1 stores this in message.response_metadata.model_name\n const modelName = llmOutput?.model_name ?? llmOutput?.model ?? v1Message?.response_metadata?.model_name;\n if (modelName) setIfDefined(attrs, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, modelName);\n\n // Response ID: v1 stores this in message.id\n const responseId = llmOutput?.id ?? v1Message?.id;\n if (responseId) {\n setIfDefined(attrs, GEN_AI_RESPONSE_ID_ATTRIBUTE, responseId);\n }\n\n // Stop reason: v1 stores this in message.response_metadata.finish_reason\n const stopReason = llmOutput?.stop_reason ?? v1Message?.response_metadata?.finish_reason;\n if (stopReason) {\n setIfDefined(attrs, GEN_AI_RESPONSE_STOP_REASON_ATTRIBUTE, asString(stopReason));\n }\n\n return attrs;\n}\n\nexport { extractChatModelRequestAttributes, extractLLMRequestAttributes, extractLlmResponseAttributes, getInvocationParams, normalizeLangChainMessages };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpanManual } from '../trace.js';\nimport { GEN_AI_TOOL_OUTPUT_ATTRIBUTE, GEN_AI_REQUEST_MODEL_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_TOOL_NAME_ATTRIBUTE, GEN_AI_TOOL_INPUT_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { resolveAIRecordingOptions } from '../ai/utils.js';\nimport { LANGCHAIN_ORIGIN } from './constants.js';\nimport { extractLlmResponseAttributes, getInvocationParams, extractChatModelRequestAttributes, extractLLMRequestAttributes } from './utils.js';\n\n/**\n * Creates a Sentry callback handler for LangChain\n * Returns a plain object that LangChain will call via duck-typing\n *\n * This is a stateful handler that tracks spans across multiple LangChain executions.\n */\nfunction createLangChainCallbackHandler(options = {}) {\n const { recordInputs, recordOutputs } = resolveAIRecordingOptions(options);\n\n // Internal state - single instance tracks all spans\n const spanMap = new Map();\n\n /**\n * Exit a span and clean up\n */\n const exitSpan = (runId) => {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.end();\n spanMap.delete(runId);\n }\n };\n\n /**\n * Handler for LLM Start\n * This handler will be called by LangChain's callback handler when an LLM event is detected.\n */\n const handler = {\n // Required LangChain BaseCallbackHandler properties\n lc_serializable: false,\n lc_namespace: ['langchain_core', 'callbacks', 'sentry'],\n lc_secrets: undefined,\n lc_attributes: undefined,\n lc_aliases: undefined,\n lc_serializable_keys: undefined,\n lc_id: ['langchain_core', 'callbacks', 'sentry'],\n lc_kwargs: {},\n name: 'SentryCallbackHandler',\n\n // BaseCallbackHandlerInput boolean flags\n ignoreLLM: false,\n ignoreChain: false,\n ignoreAgent: false,\n ignoreRetriever: false,\n ignoreCustomEvent: false,\n raiseError: false,\n awaitHandlers: true,\n\n handleLLMStart(\n llm,\n prompts,\n runId,\n _parentRunId,\n _extraParams,\n tags,\n metadata,\n _runName,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractLLMRequestAttributes(\n llm ,\n prompts,\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chat Model Start Handler\n handleChatModelStart(\n llm,\n messages,\n runId,\n _parentRunId,\n _extraParams,\n tags,\n metadata,\n _runName,\n ) {\n const invocationParams = getInvocationParams(tags);\n const attributes = extractChatModelRequestAttributes(\n llm ,\n messages ,\n recordInputs,\n invocationParams,\n metadata,\n );\n const modelName = attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE];\n const operationName = attributes[GEN_AI_OPERATION_NAME_ATTRIBUTE];\n\n startSpanManual(\n {\n name: `${operationName} ${modelName}`,\n op: 'gen_ai.chat',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.chat',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // LLM End Handler - note: handleLLMEnd with capital LLM (used by both LLMs and chat models!)\n handleLLMEnd(\n output,\n runId,\n _parentRunId,\n _tags,\n _extraParams,\n ) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n const attributes = extractLlmResponseAttributes(output , recordOutputs);\n if (attributes) {\n span.setAttributes(attributes);\n }\n exitSpan(runId);\n }\n },\n\n // LLM Error Handler - note: handleLLMError with capital LLM\n handleLLMError(error, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.llm_error_handler`,\n },\n });\n },\n\n // Chain Start Handler\n handleChainStart(\n chain,\n inputs,\n runId,\n _parentRunId,\n _tags,\n _metadata,\n _runType,\n runName,\n ) {\n const chainName = runName || chain.name || 'unknown_chain';\n const attributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',\n 'langchain.chain.name': chainName,\n };\n\n // Add inputs if recordInputs is enabled\n if (recordInputs) {\n attributes['langchain.chain.inputs'] = JSON.stringify(inputs);\n }\n\n startSpanManual(\n {\n name: `chain ${chainName}`,\n op: 'gen_ai.invoke_agent',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.invoke_agent',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Chain End Handler\n handleChainEnd(outputs, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add outputs if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n 'langchain.chain.outputs': JSON.stringify(outputs),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Chain Error Handler\n handleChainError(error, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.chain_error_handler`,\n },\n });\n },\n\n // Tool Start Handler\n handleToolStart(tool, input, runId, _parentRunId) {\n const toolName = tool.name || 'unknown_tool';\n const attributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGCHAIN_ORIGIN,\n [GEN_AI_TOOL_NAME_ATTRIBUTE]: toolName,\n };\n\n // Add input if recordInputs is enabled\n if (recordInputs) {\n attributes[GEN_AI_TOOL_INPUT_ATTRIBUTE] = input;\n }\n\n startSpanManual(\n {\n name: `execute_tool ${toolName}`,\n op: 'gen_ai.execute_tool',\n attributes: {\n ...attributes,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.execute_tool',\n },\n },\n span => {\n spanMap.set(runId, span);\n return span;\n },\n );\n },\n\n // Tool End Handler\n handleToolEnd(output, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n // Add output if recordOutputs is enabled\n if (recordOutputs) {\n span.setAttributes({\n [GEN_AI_TOOL_OUTPUT_ATTRIBUTE]: JSON.stringify(output),\n });\n }\n exitSpan(runId);\n }\n },\n\n // Tool Error Handler\n handleToolError(error, runId) {\n const span = spanMap.get(runId);\n if (span?.isRecording()) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n exitSpan(runId);\n }\n\n captureException(error, {\n mechanism: {\n handled: false,\n type: `${LANGCHAIN_ORIGIN}.tool_error_handler`,\n },\n });\n },\n\n // LangChain BaseCallbackHandler required methods\n copy() {\n return handler;\n },\n\n toJSON() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n\n toJSONNotImplemented() {\n return {\n lc: 1,\n type: 'not_implemented',\n id: handler.lc_id,\n };\n },\n };\n\n return handler;\n}\n\nexport { createLangChainCallbackHandler };\n//# sourceMappingURL=index.js.map\n", + "const LANGGRAPH_INTEGRATION_NAME = 'LangGraph';\nconst LANGGRAPH_ORIGIN = 'auto.ai.langgraph';\n\nexport { LANGGRAPH_INTEGRATION_NAME, LANGGRAPH_ORIGIN };\n//# sourceMappingURL=constants.js.map\n", + "import { GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, GEN_AI_RESPONSE_TEXT_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, GEN_AI_RESPONSE_MODEL_ATTRIBUTE, GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { normalizeLangChainMessages } from '../langchain/utils.js';\n\n/**\n * Extract tool calls from messages\n */\nfunction extractToolCalls(messages) {\n if (!messages || messages.length === 0) {\n return null;\n }\n\n const toolCalls = [];\n\n for (const message of messages) {\n if (message && typeof message === 'object') {\n const msgToolCalls = message.tool_calls;\n if (msgToolCalls && Array.isArray(msgToolCalls)) {\n toolCalls.push(...msgToolCalls);\n }\n }\n }\n\n return toolCalls.length > 0 ? toolCalls : null;\n}\n\n/**\n * Extract token usage from a message's usage_metadata or response_metadata\n * Returns token counts without setting span attributes\n */\nfunction extractTokenUsageFromMessage(message)\n\n {\n const msg = message ;\n let inputTokens = 0;\n let outputTokens = 0;\n let totalTokens = 0;\n\n // Extract from usage_metadata (newer format)\n if (msg.usage_metadata && typeof msg.usage_metadata === 'object') {\n const usage = msg.usage_metadata ;\n if (typeof usage.input_tokens === 'number') {\n inputTokens = usage.input_tokens;\n }\n if (typeof usage.output_tokens === 'number') {\n outputTokens = usage.output_tokens;\n }\n if (typeof usage.total_tokens === 'number') {\n totalTokens = usage.total_tokens;\n }\n return { inputTokens, outputTokens, totalTokens };\n }\n\n // Fallback: Extract from response_metadata.tokenUsage\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata ;\n if (metadata.tokenUsage && typeof metadata.tokenUsage === 'object') {\n const tokenUsage = metadata.tokenUsage ;\n if (typeof tokenUsage.promptTokens === 'number') {\n inputTokens = tokenUsage.promptTokens;\n }\n if (typeof tokenUsage.completionTokens === 'number') {\n outputTokens = tokenUsage.completionTokens;\n }\n if (typeof tokenUsage.totalTokens === 'number') {\n totalTokens = tokenUsage.totalTokens;\n }\n }\n }\n\n return { inputTokens, outputTokens, totalTokens };\n}\n\n/**\n * Extract model and finish reason from a message's response_metadata\n */\nfunction extractModelMetadata(span, message) {\n const msg = message ;\n\n if (msg.response_metadata && typeof msg.response_metadata === 'object') {\n const metadata = msg.response_metadata ;\n\n if (metadata.model_name && typeof metadata.model_name === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_MODEL_ATTRIBUTE, metadata.model_name);\n }\n\n if (metadata.finish_reason && typeof metadata.finish_reason === 'string') {\n span.setAttribute(GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE, [metadata.finish_reason]);\n }\n }\n}\n\n/**\n * Extract tools from compiled graph structure\n *\n * Tools are stored in: compiledGraph.builder.nodes.tools.runnable.tools\n */\nfunction extractToolsFromCompiledGraph(compiledGraph) {\n if (!compiledGraph.builder?.nodes?.tools?.runnable?.tools) {\n return null;\n }\n\n const tools = compiledGraph.builder?.nodes?.tools?.runnable?.tools;\n\n if (!tools || !Array.isArray(tools) || tools.length === 0) {\n return null;\n }\n\n // Extract name, description, and schema from each tool's lc_kwargs\n return tools.map((tool) => ({\n name: tool.lc_kwargs?.name,\n description: tool.lc_kwargs?.description,\n schema: tool.lc_kwargs?.schema,\n }));\n}\n\n/**\n * Set response attributes on the span\n */\nfunction setResponseAttributes(span, inputMessages, result) {\n // Extract messages from result\n const resultObj = result ;\n const outputMessages = resultObj?.messages;\n\n if (!outputMessages || !Array.isArray(outputMessages)) {\n return;\n }\n\n // Get new messages (delta between input and output)\n const inputCount = inputMessages?.length ?? 0;\n const newMessages = outputMessages.length > inputCount ? outputMessages.slice(inputCount) : [];\n\n if (newMessages.length === 0) {\n return;\n }\n\n // Extract and set tool calls from new messages BEFORE normalization\n // (normalization strips tool_calls, so we need to extract them first)\n const toolCalls = extractToolCalls(newMessages );\n if (toolCalls) {\n span.setAttribute(GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE, JSON.stringify(toolCalls));\n }\n\n // Normalize the new messages\n const normalizedNewMessages = normalizeLangChainMessages(newMessages);\n span.setAttribute(GEN_AI_RESPONSE_TEXT_ATTRIBUTE, JSON.stringify(normalizedNewMessages));\n\n // Accumulate token usage across all messages\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalTokens = 0;\n\n // Extract metadata from messages\n for (const message of newMessages) {\n // Accumulate token usage\n const tokens = extractTokenUsageFromMessage(message);\n totalInputTokens += tokens.inputTokens;\n totalOutputTokens += tokens.outputTokens;\n totalTokens += tokens.totalTokens;\n\n // Extract model metadata (last message's metadata wins for model/finish_reason)\n extractModelMetadata(span, message);\n }\n\n // Set accumulated token usage on span\n if (totalInputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE, totalInputTokens);\n }\n if (totalOutputTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE, totalOutputTokens);\n }\n if (totalTokens > 0) {\n span.setAttribute(GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, totalTokens);\n }\n}\n\nexport { extractModelMetadata, extractTokenUsageFromMessage, extractToolCalls, extractToolsFromCompiledGraph, setResponseAttributes };\n//# sourceMappingURL=utils.js.map\n", + "import { captureException } from '../../exports.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes.js';\nimport { SPAN_STATUS_ERROR } from '../spanstatus.js';\nimport { startSpan } from '../trace.js';\nimport { GEN_AI_AGENT_NAME_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_PIPELINE_NAME_ATTRIBUTE, GEN_AI_CONVERSATION_ID_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE, GEN_AI_INPUT_MESSAGES_ATTRIBUTE, GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE } from '../ai/gen-ai-attributes.js';\nimport { truncateGenAiMessages } from '../ai/messageTruncation.js';\nimport { resolveAIRecordingOptions, extractSystemInstructions } from '../ai/utils.js';\nimport { normalizeLangChainMessages } from '../langchain/utils.js';\nimport { LANGGRAPH_ORIGIN } from './constants.js';\nimport { extractToolsFromCompiledGraph, setResponseAttributes } from './utils.js';\n\n/**\n * Instruments StateGraph's compile method to create spans for agent creation and invocation\n *\n * Wraps the compile() method to:\n * - Create a `gen_ai.create_agent` span when compile() is called\n * - Automatically wrap the invoke() method on the returned compiled graph with a `gen_ai.invoke_agent` span\n *\n */\nfunction instrumentStateGraphCompile(\n originalCompile,\n options,\n) {\n return new Proxy(originalCompile, {\n apply(target, thisArg, args) {\n return startSpan(\n {\n op: 'gen_ai.create_agent',\n name: 'create_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'gen_ai.create_agent',\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'create_agent',\n },\n },\n span => {\n try {\n const compiledGraph = Reflect.apply(target, thisArg, args);\n const compileOptions = args.length > 0 ? (args[0] ) : {};\n\n // Extract graph name\n if (compileOptions?.name && typeof compileOptions.name === 'string') {\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, compileOptions.name);\n span.updateName(`create_agent ${compileOptions.name}`);\n }\n\n // Instrument agent invoke method on the compiled graph\n const originalInvoke = compiledGraph.invoke;\n if (originalInvoke && typeof originalInvoke === 'function') {\n compiledGraph.invoke = instrumentCompiledGraphInvoke(\n originalInvoke.bind(compiledGraph) ,\n compiledGraph,\n compileOptions,\n options,\n ) ;\n }\n\n return compiledGraph;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) ;\n}\n\n/**\n * Instruments CompiledGraph's invoke method to create spans for agent invocation\n *\n * Creates a `gen_ai.invoke_agent` span when invoke() is called\n */\nfunction instrumentCompiledGraphInvoke(\n originalInvoke,\n graphInstance,\n compileOptions,\n options,\n) {\n return new Proxy(originalInvoke, {\n apply(target, thisArg, args) {\n return startSpan(\n {\n op: 'gen_ai.invoke_agent',\n name: 'invoke_agent',\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: LANGGRAPH_ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: GEN_AI_INVOKE_AGENT_OPERATION_ATTRIBUTE,\n [GEN_AI_OPERATION_NAME_ATTRIBUTE]: 'invoke_agent',\n },\n },\n async span => {\n try {\n const graphName = compileOptions?.name;\n\n if (graphName && typeof graphName === 'string') {\n span.setAttribute(GEN_AI_PIPELINE_NAME_ATTRIBUTE, graphName);\n span.setAttribute(GEN_AI_AGENT_NAME_ATTRIBUTE, graphName);\n span.updateName(`invoke_agent ${graphName}`);\n }\n\n // Extract thread_id from the config (second argument)\n // LangGraph uses config.configurable.thread_id for conversation/session linking\n const config = args.length > 1 ? (args[1] ) : undefined;\n const configurable = config?.configurable ;\n const threadId = configurable?.thread_id;\n if (threadId && typeof threadId === 'string') {\n span.setAttribute(GEN_AI_CONVERSATION_ID_ATTRIBUTE, threadId);\n }\n\n // Extract available tools from the graph instance\n const tools = extractToolsFromCompiledGraph(graphInstance);\n if (tools) {\n span.setAttribute(GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, JSON.stringify(tools));\n }\n\n // Parse input messages\n const recordInputs = options.recordInputs;\n const recordOutputs = options.recordOutputs;\n const inputMessages =\n args.length > 0 ? ((args[0] )?.messages ?? []) : [];\n\n if (inputMessages && recordInputs) {\n const normalizedMessages = normalizeLangChainMessages(inputMessages);\n const { systemInstructions, filteredMessages } = extractSystemInstructions(normalizedMessages);\n\n if (systemInstructions) {\n span.setAttribute(GEN_AI_SYSTEM_INSTRUCTIONS_ATTRIBUTE, systemInstructions);\n }\n\n const truncatedMessages = truncateGenAiMessages(filteredMessages );\n const filteredLength = Array.isArray(filteredMessages) ? filteredMessages.length : 0;\n span.setAttributes({\n [GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify(truncatedMessages),\n [GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: filteredLength,\n });\n }\n\n // Call original invoke\n const result = await Reflect.apply(target, thisArg, args);\n\n // Set response attributes\n if (recordOutputs) {\n setResponseAttributes(span, inputMessages ?? null, result);\n }\n\n return result;\n } catch (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.ai.langgraph.error',\n },\n });\n throw error;\n }\n },\n );\n },\n }) ;\n}\n\n/**\n * Directly instruments a StateGraph instance to add tracing spans\n *\n * This function can be used to manually instrument LangGraph StateGraph instances\n * in environments where automatic instrumentation is not available or desired.\n *\n * @param stateGraph - The StateGraph instance to instrument\n * @param options - Optional configuration for recording inputs/outputs\n *\n * @example\n * ```typescript\n * import { instrumentLangGraph } from '@sentry/cloudflare';\n * import { StateGraph } from '@langchain/langgraph';\n *\n * const graph = new StateGraph(MessagesAnnotation)\n * .addNode('agent', mockLlm)\n * .addEdge(START, 'agent')\n * .addEdge('agent', END);\n *\n * instrumentLangGraph(graph, { recordInputs: true, recordOutputs: true });\n * const compiled = graph.compile({ name: 'my_agent' });\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction instrumentLangGraph(\n stateGraph,\n options,\n) {\n stateGraph.compile = instrumentStateGraphCompile(stateGraph.compile, resolveAIRecordingOptions(options));\n\n return stateGraph;\n}\n\nexport { instrumentLangGraph, instrumentStateGraphCompile };\n//# sourceMappingURL=index.js.map\n", + "/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nfunction getBreadcrumbLogLevelFromHttpStatusCode(statusCode) {\n // NOTE: undefined defaults to 'info' in Sentry\n if (statusCode === undefined) {\n return undefined;\n } else if (statusCode >= 400 && statusCode < 500) {\n return 'warning';\n } else if (statusCode >= 500) {\n return 'error';\n } else {\n return undefined;\n }\n}\n\nexport { getBreadcrumbLogLevelFromHttpStatusCode };\n//# sourceMappingURL=breadcrumb-log-level.js.map\n", + "/**\n * Replaces constructor functions in module exports, handling read-only properties,\n * and both default and named exports by wrapping them with the constructor.\n *\n * @param exports The module exports object to modify\n * @param exportName The name of the export to replace (e.g., 'GoogleGenAI', 'Anthropic', 'OpenAI')\n * @param wrappedConstructor The wrapped constructor function to replace the original with\n * @returns void\n */\nfunction replaceExports(\n exports$1,\n exportName,\n wrappedConstructor,\n) {\n const original = exports$1[exportName];\n\n if (typeof original !== 'function') {\n return;\n }\n\n // Replace the named export - handle read-only properties\n try {\n exports$1[exportName] = wrappedConstructor;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, exportName, {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Replace the default export if it points to the original constructor\n if (exports$1.default === original) {\n try {\n exports$1.default = wrappedConstructor;\n } catch {\n Object.defineProperty(exports$1, 'default', {\n value: wrappedConstructor,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n}\n\nexport { replaceExports };\n//# sourceMappingURL=exports.js.map\n", + "import { normalizeStackTracePath, UNKNOWN_FUNCTION } from './stacktrace.js';\n\n/**\n * Does this filename look like it's part of the app code?\n */\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal =\n isNative ||\n (filename &&\n // It's not internal if it's an absolute linux path\n !filename.startsWith('/') &&\n // It's not internal if it's an absolute windows path\n !filename.match(/^[A-Z]:/) &&\n // It's not internal if the path is starting with a dot\n !filename.startsWith('.') &&\n // It's not internal if the frame has a protocol. In node, this is usually the case if the file got pre-processed with a bundler like webpack\n !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//)); // Schema from: https://stackoverflow.com/a/3641782\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n\n return !isInternal && filename !== undefined && !filename.includes('node_modules/');\n}\n\n/** Node Stack line parser */\nfunction node(getModule) {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n const DATA_URI_MATCH = /at (?:async )?(.+?) \\(data:(.*?),/;\n\n return (line) => {\n const dataUriMatch = line.match(DATA_URI_MATCH);\n if (dataUriMatch) {\n return {\n filename: ``,\n function: dataUriMatch[1],\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n let filename = normalizeStackTracePath(lineMatch[2]);\n const isNative = lineMatch[5] === 'native';\n\n if (!filename && lineMatch[5] && !isNative) {\n filename = lineMatch[5];\n }\n\n const maybeDecodedFilename = filename ? _safeDecodeURI(filename) : undefined;\n return {\n filename: maybeDecodedFilename ?? filename,\n module: maybeDecodedFilename && getModule?.(maybeDecodedFilename),\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n };\n }\n\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n return undefined;\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/core so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || undefined;\n}\n\nfunction _safeDecodeURI(filename) {\n try {\n return decodeURI(filename);\n } catch {\n return undefined;\n }\n}\n\nexport { filenameIsInApp, node, nodeStackLineParser };\n//# sourceMappingURL=node-stack-trace.js.map\n", + "/** A simple Least Recently Used map */\nclass LRUMap {\n\n constructor( _maxSize) {this._maxSize = _maxSize;\n this._cache = new Map();\n }\n\n /** Get the current size of the cache */\n get size() {\n return this._cache.size;\n }\n\n /** Get an entry or undefined if it was not in the cache. Re-inserts to update the recently used order */\n get(key) {\n const value = this._cache.get(key);\n if (value === undefined) {\n return undefined;\n }\n // Remove and re-insert to update the order\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n\n /** Insert an entry and evict an older entry if we've reached maxSize */\n set(key, value) {\n if (this._cache.size >= this._maxSize) {\n // keys() returns an iterator in insertion order so keys().next() gives us the oldest key\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nextKey = this._cache.keys().next().value;\n this._cache.delete(nextKey);\n }\n this._cache.set(key, value);\n }\n\n /** Remove an entry and return the entry if it was in the cache */\n remove(key) {\n const value = this._cache.get(key);\n if (value) {\n this._cache.delete(key);\n }\n return value;\n }\n\n /** Clear all entries */\n clear() {\n this._cache.clear();\n }\n\n /** Get all the keys */\n keys() {\n return Array.from(this._cache.keys());\n }\n\n /** Get all the values */\n values() {\n const values = [];\n this._cache.forEach(value => values.push(value));\n return values;\n }\n}\n\nexport { LRUMap };\n//# sourceMappingURL=lru.js.map\n", + "import { errorMonitor } from 'node:events';\nimport { SpanKind, context, trace } from '@opentelemetry/api';\nimport { RPCType, setRPCMetadata, isTracingSuppressed, getRPCMetadata } from '@opentelemetry/core';\nimport { SEMATTRS_NET_HOST_IP, SEMATTRS_NET_HOST_PORT, SEMATTRS_NET_PEER_IP, SEMATTRS_HTTP_STATUS_CODE, ATTR_HTTP_ROUTE, ATTR_HTTP_RESPONSE_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport { debug, parseStringToURLObject, stripUrlQueryAndFragment, httpHeadersToSpanAttributes, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, getSpanStatusFromHttpCode, SPAN_STATUS_ERROR, getIsolationScope } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\nimport { addStartSpanCallback } from './httpServerIntegration.js';\n\nconst INTEGRATION_NAME = 'Http.ServerSpans';\n\n// Tree-shakable guard to remove all code related to tracing\n\nconst _httpServerSpansIntegration = ((options = {}) => {\n const ignoreStaticAssets = options.ignoreStaticAssets ?? true;\n const ignoreIncomingRequests = options.ignoreIncomingRequests;\n const ignoreStatusCodes = options.ignoreStatusCodes ?? [\n [401, 404],\n // 300 and 304 are possibly valid status codes we do not want to filter\n [301, 303],\n [305, 399],\n ];\n\n const { onSpanCreated } = options;\n // eslint-disable-next-line deprecation/deprecation\n const { requestHook, responseHook, applyCustomAttributesOnSpan } = options.instrumentation ?? {};\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n // If no tracing, we can just skip everything here\n if (typeof __SENTRY_TRACING__ !== 'undefined' && !__SENTRY_TRACING__) {\n return;\n }\n\n client.on('httpServerRequest', (_request, _response, normalizedRequest) => {\n // Type-casting this here because we do not want to put the node types into core\n const request = _request ;\n const response = _response ;\n\n const startSpan = (next) => {\n if (\n shouldIgnoreSpansForIncomingRequest(request, {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n })\n ) {\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Skipping span creation for incoming request', request.url);\n return next();\n }\n\n const fullUrl = normalizedRequest.url || request.url || '/';\n const urlObj = parseStringToURLObject(fullUrl);\n\n const headers = request.headers;\n const userAgent = headers['user-agent'];\n const ips = headers['x-forwarded-for'];\n const httpVersion = request.httpVersion;\n const host = headers.host;\n const hostname = host?.replace(/^(.*)(:[0-9]{1,5})/, '$1') || 'localhost';\n\n const tracer = client.tracer;\n const scheme = fullUrl.startsWith('https') ? 'https' : 'http';\n\n const method = normalizedRequest.method || request.method?.toUpperCase() || 'GET';\n const httpTargetWithoutQueryFragment = urlObj ? urlObj.pathname : stripUrlQueryAndFragment(fullUrl);\n const bestEffortTransactionName = `${method} ${httpTargetWithoutQueryFragment}`;\n\n // We use the plain tracer.startSpan here so we can pass the span kind\n const span = tracer.startSpan(bestEffortTransactionName, {\n kind: SpanKind.SERVER,\n attributes: {\n // Sentry specific attributes\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.server',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.http',\n 'sentry.http.prefetch': isKnownPrefetchRequest(request) || undefined,\n // Old Semantic Conventions attributes - added for compatibility with what `@opentelemetry/instrumentation-http` output before\n 'http.url': fullUrl,\n 'http.method': normalizedRequest.method,\n 'http.target': urlObj ? `${urlObj.pathname}${urlObj.search}` : httpTargetWithoutQueryFragment,\n 'http.host': host,\n 'net.host.name': hostname,\n 'http.client_ip': typeof ips === 'string' ? ips.split(',')[0] : undefined,\n 'http.user_agent': userAgent,\n 'http.scheme': scheme,\n 'http.flavor': httpVersion,\n 'net.transport': httpVersion?.toUpperCase() === 'QUIC' ? 'ip_udp' : 'ip_tcp',\n ...getRequestContentLengthAttribute(request),\n ...httpHeadersToSpanAttributes(\n normalizedRequest.headers || {},\n client.getOptions().sendDefaultPii ?? false,\n ),\n },\n });\n\n // TODO v11: Remove the following three hooks, only onSpanCreated should remain\n requestHook?.(span, request);\n responseHook?.(span, response);\n applyCustomAttributesOnSpan?.(span, request, response);\n onSpanCreated?.(span, request, response);\n\n const rpcMetadata = {\n type: RPCType.HTTP,\n span,\n };\n\n return context.with(setRPCMetadata(trace.setSpan(context.active(), span), rpcMetadata), () => {\n context.bind(context.active(), request);\n context.bind(context.active(), response);\n\n // Ensure we only end the span once\n // E.g. error can be emitted before close is emitted\n let isEnded = false;\n function endSpan(status) {\n if (isEnded) {\n return;\n }\n\n isEnded = true;\n\n const newAttributes = getIncomingRequestAttributesOnResponse(request, response);\n span.setAttributes(newAttributes);\n span.setStatus(status);\n span.end();\n\n // Update the transaction name if the route has changed\n const route = newAttributes['http.route'];\n if (route) {\n getIsolationScope().setTransactionName(`${request.method?.toUpperCase() || 'GET'} ${route}`);\n }\n }\n\n response.on('close', () => {\n endSpan(getSpanStatusFromHttpCode(response.statusCode));\n });\n response.on(errorMonitor, () => {\n const httpStatus = getSpanStatusFromHttpCode(response.statusCode);\n // Ensure we def. have an error status here\n endSpan(httpStatus.code === SPAN_STATUS_ERROR ? httpStatus : { code: SPAN_STATUS_ERROR });\n });\n\n return next();\n });\n };\n\n addStartSpanCallback(request, startSpan);\n });\n },\n processEvent(event) {\n // Drop transaction if it has a status code that should be ignored\n if (event.type === 'transaction') {\n const statusCode = event.contexts?.trace?.data?.['http.response.status_code'];\n if (typeof statusCode === 'number') {\n const shouldDrop = shouldFilterStatusCode(statusCode, ignoreStatusCodes);\n if (shouldDrop) {\n DEBUG_BUILD && debug.log('Dropping transaction due to status code', statusCode);\n return null;\n }\n }\n }\n\n return event;\n },\n afterAllSetup(client) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n if (client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerSpansIntergation` while `httpIntegration` is also present. Make sure to remove `httpIntegration` when adding `httpServerSpansIntegration`.',\n );\n }\n\n if (!client.getIntegrationByName('Http.Server')) {\n debug.error(\n 'It seems that you have manually added `httpServerSpansIntergation` without adding `httpServerIntegration`. This is a requiement for spans to be created - please add the `httpServerIntegration` integration.',\n );\n }\n },\n };\n}) ;\n\n/**\n * This integration emits spans for incoming requests handled via the node `http` module.\n * It requires the `httpServerIntegration` to be present.\n */\nconst httpServerSpansIntegration = _httpServerSpansIntegration\n\n;\n\nfunction isKnownPrefetchRequest(req) {\n // Currently only handles Next.js prefetch requests but may check other frameworks in the future.\n return req.headers['next-router-prefetch'] === '1';\n}\n\n/**\n * Check if a request is for a common static asset that should be ignored by default.\n *\n * Only exported for tests.\n */\nfunction isStaticAssetRequest(urlPath) {\n const path = stripUrlQueryAndFragment(urlPath);\n // Common static file extensions\n if (path.match(/\\.(ico|png|jpg|jpeg|gif|svg|css|js|woff|woff2|ttf|eot|webp|avif)$/)) {\n return true;\n }\n\n // Common metadata files\n if (path.match(/^\\/(robots\\.txt|sitemap\\.xml|manifest\\.json|browserconfig\\.xml)$/)) {\n return true;\n }\n\n return false;\n}\n\nfunction shouldIgnoreSpansForIncomingRequest(\n request,\n {\n ignoreStaticAssets,\n ignoreIncomingRequests,\n }\n\n,\n) {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // request.url is the only property that holds any information about the url\n // it only consists of the URL path and query string (if any)\n const urlPath = request.url;\n\n const method = request.method?.toUpperCase();\n // We do not capture OPTIONS/HEAD requests as spans\n if (method === 'OPTIONS' || method === 'HEAD' || !urlPath) {\n return true;\n }\n\n // Default static asset filtering\n if (ignoreStaticAssets && method === 'GET' && isStaticAssetRequest(urlPath)) {\n return true;\n }\n\n if (ignoreIncomingRequests?.(urlPath, request)) {\n return true;\n }\n\n return false;\n}\n\nfunction getRequestContentLengthAttribute(request) {\n const length = getContentLength(request.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(request.headers)) {\n return {\n ['http.request_content_length']: length,\n };\n } else {\n return {\n ['http.request_content_length_uncompressed']: length,\n };\n }\n}\n\nfunction getContentLength(headers) {\n const contentLengthHeader = headers['content-length'];\n if (contentLengthHeader === undefined) return null;\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) return null;\n\n return contentLength;\n}\n\nfunction isCompressed(headers) {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n\nfunction getIncomingRequestAttributesOnResponse(request, response) {\n // take socket from the request,\n // since it may be detached from the response object in keep-alive mode\n const { socket } = request;\n const { statusCode, statusMessage } = response;\n\n const newAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n // eslint-disable-next-line deprecation/deprecation\n [SEMATTRS_HTTP_STATUS_CODE]: statusCode,\n 'http.status_text': statusMessage?.toUpperCase(),\n };\n\n const rpcMetadata = getRPCMetadata(context.active());\n if (socket) {\n const { localAddress, localPort, remoteAddress, remotePort } = socket;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_IP] = localAddress;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_HOST_PORT] = localPort;\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_NET_PEER_IP] = remoteAddress;\n newAttributes['net.peer.port'] = remotePort;\n }\n // eslint-disable-next-line deprecation/deprecation\n newAttributes[SEMATTRS_HTTP_STATUS_CODE] = statusCode;\n newAttributes['http.status_text'] = (statusMessage || '').toUpperCase();\n\n if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) {\n const routeName = rpcMetadata.route;\n newAttributes[ATTR_HTTP_ROUTE] = routeName;\n }\n\n return newAttributes;\n}\n\n/**\n * If the given status code should be filtered for the given list of status codes/ranges.\n */\nfunction shouldFilterStatusCode(statusCode, dropForStatusCodes) {\n return dropForStatusCodes.some(code => {\n if (typeof code === 'number') {\n return code === statusCode;\n }\n\n const [min, max] = code;\n return statusCode >= min && statusCode <= max;\n });\n}\n\nexport { httpServerSpansIntegration, isStaticAssetRequest };\n//# sourceMappingURL=httpServerSpansIntegration.js.map\n", + "/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n", + "import { subscribe } from 'node:diagnostics_channel';\nimport { createContextKey, context, propagation } from '@opentelemetry/api';\nimport { debug, addNonEnumerableProperty, getClient, getIsolationScope, httpRequestToRequestData, stripUrlQueryAndFragment, withIsolationScope, generateSpanId, _INTERNAL_safeMathRandom, generateTraceId, getCurrentScope } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\nimport { patchRequestToCaptureBody } from '../../utils/captureRequestBody.js';\n\nconst HTTP_SERVER_INSTRUMENTED_KEY = createContextKey('sentry_http_server_instrumented');\nconst INTEGRATION_NAME = 'Http.Server';\n\nconst clientToRequestSessionAggregatesMap = new Map\n\n();\n\n// We keep track of emit functions we wrapped, to avoid double wrapping\n// We do this instead of putting a non-enumerable property on the function, because\n// sometimes the property seems to be migrated to forks of the emit function, which we do not want to happen\n// This was the case in the nestjs-distributed-tracing E2E test\nconst wrappedEmitFns = new WeakSet();\n\n/**\n * Add a callback to the request object that will be called when the request is started.\n * The callback will receive the next function to continue processing the request.\n */\nfunction addStartSpanCallback(request, callback) {\n addNonEnumerableProperty(request, '_startSpanCallback', new WeakRef(callback));\n}\n\nconst _httpServerIntegration = ((options = {}) => {\n const _options = {\n sessions: options.sessions ?? true,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS ?? 60000,\n maxRequestBodySize: options.maxRequestBodySize ?? 'medium',\n ignoreRequestBody: options.ignoreRequestBody,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const onHttpServerRequestStart = ((_data) => {\n const data = _data ;\n\n instrumentServer(data.server, _options);\n }) ;\n\n subscribe('http.server.request.start', onHttpServerRequestStart);\n },\n afterAllSetup(client) {\n if (DEBUG_BUILD && client.getIntegrationByName('Http')) {\n debug.warn(\n 'It seems that you have manually added `httpServerIntegration` while `httpIntegration` is also present. Make sure to remove `httpServerIntegration` when adding `httpIntegration`.',\n );\n }\n },\n };\n}) ;\n\n/**\n * This integration handles request isolation, trace continuation and other core Sentry functionality around incoming http requests\n * handled via the node `http` module.\n *\n * This version uses OpenTelemetry for context propagation and span management.\n *\n * @see {@link ../../light/integrations/httpServerIntegration.ts} for the lightweight version without OpenTelemetry\n */\nconst httpServerIntegration = _httpServerIntegration\n\n;\n\n/**\n * Instrument a server to capture incoming requests.\n *\n */\nfunction instrumentServer(\n server,\n {\n ignoreRequestBody,\n maxRequestBodySize,\n sessions,\n sessionFlushingDelayMS,\n }\n\n,\n) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEmit = server.emit;\n\n if (wrappedEmitFns.has(originalEmit)) {\n return;\n }\n\n const newEmit = new Proxy(originalEmit, {\n apply(target, thisArg, args) {\n // Only traces request events\n if (args[0] !== 'request') {\n return target.apply(thisArg, args);\n }\n\n const client = getClient();\n\n // Make sure we do not double execute our wrapper code, for edge cases...\n // Without this check, if we double-wrap emit, for whatever reason, you'd get two http.server spans (one the children of the other)\n if (context.active().getValue(HTTP_SERVER_INSTRUMENTED_KEY) || !client) {\n return target.apply(thisArg, args);\n }\n\n DEBUG_BUILD && debug.log(INTEGRATION_NAME, 'Handling incoming request');\n\n const isolationScope = getIsolationScope().clone();\n const request = args[1] ;\n const response = args[2] ;\n\n const normalizedRequest = httpRequestToRequestData(request);\n\n // request.ip is non-standard but some frameworks set this\n const ipAddress = (request ).ip || request.socket?.remoteAddress;\n\n const url = request.url || '/';\n if (maxRequestBodySize !== 'none' && !ignoreRequestBody?.(url, request)) {\n patchRequestToCaptureBody(request, isolationScope, maxRequestBodySize, INTEGRATION_NAME);\n }\n\n // Update the isolation scope, isolate this request\n isolationScope.setSDKProcessingMetadata({ normalizedRequest, ipAddress });\n\n // attempt to update the scope's `transactionName` based on the request URL\n // Ideally, framework instrumentations coming after the HttpInstrumentation\n // update the transactionName once we get a parameterized route.\n const httpMethod = (request.method || 'GET').toUpperCase();\n const httpTargetWithoutQueryFragment = stripUrlQueryAndFragment(url);\n\n const bestEffortTransactionName = `${httpMethod} ${httpTargetWithoutQueryFragment}`;\n\n isolationScope.setTransactionName(bestEffortTransactionName);\n\n if (sessions && client) {\n recordRequestSession(client, {\n requestIsolationScope: isolationScope,\n response,\n sessionFlushingDelayMS: sessionFlushingDelayMS ?? 60000,\n });\n }\n\n return withIsolationScope(isolationScope, () => {\n const newPropagationContext = {\n traceId: generateTraceId(),\n sampleRand: _INTERNAL_safeMathRandom(),\n propagationSpanId: generateSpanId(),\n };\n // - Set a fresh propagation context so each request gets a unique traceId.\n // When there are incoming trace headers, propagation.extract() below sets a remote\n // span on the OTel context which takes precedence in getTraceContextForScope().\n // - We can write directly to the current scope here because it is forked implicitly via\n // `context.with` in `withIsolationScope` (See `SentryContextManager`).\n // - explicitly making a deep copy to avoid mutation of original PC on the other scope\n getCurrentScope().setPropagationContext({ ...newPropagationContext });\n isolationScope.setPropagationContext({ ...newPropagationContext });\n\n const ctx = propagation\n .extract(context.active(), normalizedRequest.headers)\n .setValue(HTTP_SERVER_INSTRUMENTED_KEY, true);\n\n return context.with(ctx, () => {\n // This is used (optionally) by the httpServerSpansIntegration to attach _startSpanCallback to the request object\n client.emit('httpServerRequest', request, response, normalizedRequest);\n\n const callback = (request )._startSpanCallback?.deref();\n if (callback) {\n return callback(() => target.apply(thisArg, args));\n }\n return target.apply(thisArg, args);\n });\n });\n },\n });\n\n wrappedEmitFns.add(newEmit);\n server.emit = newEmit;\n}\n\n/**\n * Starts a session and tracks it in the context of a given isolation scope.\n * When the passed response is finished, the session is put into a task and is\n * aggregated with other sessions that may happen in a certain time window\n * (sessionFlushingDelayMs).\n *\n * The sessions are always aggregated by the client that is on the current scope\n * at the time of ending the response (if there is one).\n */\n// Exported for unit tests\nfunction recordRequestSession(\n client,\n {\n requestIsolationScope,\n response,\n sessionFlushingDelayMS,\n }\n\n,\n) {\n requestIsolationScope.setSDKProcessingMetadata({\n requestSession: { status: 'ok' },\n });\n response.once('close', () => {\n const requestSession = requestIsolationScope.getScopeData().sdkProcessingMetadata.requestSession;\n\n if (client && requestSession) {\n DEBUG_BUILD && debug.log(`Recorded request session with status: ${requestSession.status}`);\n\n const roundedDate = new Date();\n roundedDate.setSeconds(0, 0);\n const dateBucketKey = roundedDate.toISOString();\n\n const existingClientAggregate = clientToRequestSessionAggregatesMap.get(client);\n const bucket = existingClientAggregate?.[dateBucketKey] || { exited: 0, crashed: 0, errored: 0 };\n bucket[({ ok: 'exited', crashed: 'crashed', errored: 'errored' } )[requestSession.status]]++;\n\n if (existingClientAggregate) {\n existingClientAggregate[dateBucketKey] = bucket;\n } else {\n DEBUG_BUILD && debug.log('Opened new request session aggregate.');\n const newClientAggregate = { [dateBucketKey]: bucket };\n clientToRequestSessionAggregatesMap.set(client, newClientAggregate);\n\n const flushPendingClientAggregates = () => {\n clearTimeout(timeout);\n unregisterClientFlushHook();\n clientToRequestSessionAggregatesMap.delete(client);\n\n const aggregatePayload = Object.entries(newClientAggregate).map(\n ([timestamp, value]) => ({\n started: timestamp,\n exited: value.exited,\n errored: value.errored,\n crashed: value.crashed,\n }),\n );\n client.sendSession({ aggregates: aggregatePayload });\n };\n\n const unregisterClientFlushHook = client.on('flush', () => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to client flush');\n flushPendingClientAggregates();\n });\n const timeout = setTimeout(() => {\n DEBUG_BUILD && debug.log('Sending request session aggregate due to flushing schedule');\n flushPendingClientAggregates();\n }, sessionFlushingDelayMS).unref();\n }\n }\n });\n}\n\nexport { addStartSpanCallback, httpServerIntegration, recordRequestSession };\n//# sourceMappingURL=httpServerIntegration.js.map\n", + "const INSTRUMENTATION_NAME = '@sentry/instrumentation-http';\n\n/** We only want to capture request bodies up to 1mb. */\nconst MAX_BODY_BYTE_LENGTH = 1024 * 1024;\n\nexport { INSTRUMENTATION_NAME, MAX_BODY_BYTE_LENGTH };\n//# sourceMappingURL=constants.js.map\n", + "import { debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { MAX_BODY_BYTE_LENGTH } from '../integrations/http/constants.js';\n\n/**\n * This method patches the request object to capture the body.\n * Instead of actually consuming the streamed body ourselves, which has potential side effects,\n * we monkey patch `req.on('data')` to intercept the body chunks.\n * This way, we only read the body if the user also consumes the body, ensuring we do not change any behavior in unexpected ways.\n */\nfunction patchRequestToCaptureBody(\n req,\n isolationScope,\n maxIncomingRequestBodySize,\n integrationName,\n) {\n let bodyByteLength = 0;\n const chunks = [];\n\n DEBUG_BUILD && debug.log(integrationName, 'Patching request.on');\n\n /**\n * We need to keep track of the original callbacks, in order to be able to remove listeners again.\n * Since `off` depends on having the exact same function reference passed in, we need to be able to map\n * original listeners to our wrapped ones.\n */\n const callbackMap = new WeakMap();\n\n const maxBodySize =\n maxIncomingRequestBodySize === 'small'\n ? 1000\n : maxIncomingRequestBodySize === 'medium'\n ? 10000\n : MAX_BODY_BYTE_LENGTH;\n\n try {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.on = new Proxy(req.on, {\n apply: (target, thisArg, args) => {\n const [event, listener, ...restArgs] = args;\n\n if (event === 'data') {\n DEBUG_BUILD &&\n debug.log(integrationName, `Handling request.on(\"data\") with maximum body size of ${maxBodySize}b`);\n\n const callback = new Proxy(listener, {\n apply: (target, thisArg, args) => {\n try {\n const chunk = args[0] ;\n const bufferifiedChunk = Buffer.from(chunk);\n\n if (bodyByteLength < maxBodySize) {\n chunks.push(bufferifiedChunk);\n bodyByteLength += bufferifiedChunk.byteLength;\n } else if (DEBUG_BUILD) {\n debug.log(\n integrationName,\n `Dropping request body chunk because maximum body length of ${maxBodySize}b is exceeded.`,\n );\n }\n } catch (_err) {\n DEBUG_BUILD && debug.error(integrationName, 'Encountered error while storing body chunk.');\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n callbackMap.set(listener, callback);\n\n return Reflect.apply(target, thisArg, [event, callback, ...restArgs]);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n // Ensure we also remove callbacks correctly\n // eslint-disable-next-line @typescript-eslint/unbound-method\n req.off = new Proxy(req.off, {\n apply: (target, thisArg, args) => {\n const [, listener] = args;\n\n const callback = callbackMap.get(listener);\n if (callback) {\n callbackMap.delete(listener);\n\n const modifiedArgs = args.slice();\n modifiedArgs[1] = callback;\n return Reflect.apply(target, thisArg, modifiedArgs);\n }\n\n return Reflect.apply(target, thisArg, args);\n },\n });\n\n req.on('end', () => {\n try {\n const body = Buffer.concat(chunks).toString('utf-8');\n if (body) {\n // Using Buffer.byteLength here, because the body may contain characters that are not 1 byte long\n const bodyByteLength = Buffer.byteLength(body, 'utf-8');\n const truncatedBody =\n bodyByteLength > maxBodySize\n ? `${Buffer.from(body)\n .subarray(0, maxBodySize - 3)\n .toString('utf-8')}...`\n : body;\n\n isolationScope.setSDKProcessingMetadata({ normalizedRequest: { data: truncatedBody } });\n }\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error building captured request body', error);\n }\n }\n });\n } catch (error) {\n if (DEBUG_BUILD) {\n debug.error(integrationName, 'Error patching request to capture body', error);\n }\n }\n}\n\nexport { patchRequestToCaptureBody };\n//# sourceMappingURL=captureRequestBody.js.map\n", + "import { subscribe, unsubscribe } from 'node:diagnostics_channel';\nimport { errorMonitor } from 'node:events';\nimport { context, trace, SpanStatusCode } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { ATTR_URL_FULL, ATTR_USER_AGENT_ORIGINAL, ATTR_NETWORK_PEER_ADDRESS, ATTR_NETWORK_PEER_PORT, SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, ATTR_NETWORK_TRANSPORT, ATTR_NETWORK_PROTOCOL_VERSION, ATTR_HTTP_RESPONSE_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport { SDK_VERSION, LRUMap, startInactiveSpan, debug, getSpanStatusFromHttpCode, getHttpSpanDetailsFromUrlObject, parseStringToURLObject, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '@sentry/core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\nimport { INSTRUMENTATION_NAME } from './constants.js';\nimport { addRequestBreadcrumb, addTracePropagationHeadersToOutgoingRequest, getRequestOptions, getClientRequestUrl } from '../../utils/outgoingHttpRequest.js';\n\n/**\n * This custom HTTP instrumentation handles outgoing HTTP requests.\n *\n * It provides:\n * - Breadcrumbs for all outgoing requests\n * - Trace propagation headers (when enabled)\n * - Span creation for outgoing requests (when createSpansForOutgoingRequests is enabled)\n *\n * Span creation requires Node 22+ and uses diagnostic channels to avoid monkey-patching.\n * By default, this is only enabled in the node SDK, not in node-core or other runtime SDKs.\n *\n * Important note: Contrary to other OTEL instrumentation, this one cannot be unwrapped.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js/blob/f8ab5592ddea5cba0a3b33bf8d74f27872c0367f/experimental/packages/opentelemetry-instrumentation-http/src/http.ts\n */\nclass SentryHttpInstrumentation extends InstrumentationBase {\n\n constructor(config = {}) {\n super(INSTRUMENTATION_NAME, SDK_VERSION, config);\n\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** @inheritdoc */\n init() {\n // We register handlers when either http or https is instrumented\n // but we only want to register them once, whichever is loaded first\n let hasRegisteredHandlers = false;\n\n const onHttpClientResponseFinish = ((_data) => {\n const data = _data ;\n this._onOutgoingRequestFinish(data.request, data.response);\n }) ;\n\n const onHttpClientRequestError = ((_data) => {\n const data = _data ;\n this._onOutgoingRequestFinish(data.request, undefined);\n }) ;\n\n const onHttpClientRequestCreated = ((_data) => {\n const data = _data ;\n this._onOutgoingRequestCreated(data.request);\n }) ;\n\n const wrap = (moduleExports) => {\n if (hasRegisteredHandlers) {\n return moduleExports;\n }\n\n hasRegisteredHandlers = true;\n\n subscribe('http.client.response.finish', onHttpClientResponseFinish);\n\n // When an error happens, we still want to have a breadcrumb\n // In this case, `http.client.response.finish` is not triggered\n subscribe('http.client.request.error', onHttpClientRequestError);\n\n // NOTE: This channel only exists since Node 22.12+\n // Before that, outgoing requests are not patched\n // and trace headers are not propagated, sadly.\n if (this.getConfig().propagateTraceInOutgoingRequests || this.getConfig().createSpansForOutgoingRequests) {\n subscribe('http.client.request.created', onHttpClientRequestCreated);\n }\n return moduleExports;\n };\n\n const unwrap = () => {\n unsubscribe('http.client.response.finish', onHttpClientResponseFinish);\n unsubscribe('http.client.request.error', onHttpClientRequestError);\n unsubscribe('http.client.request.created', onHttpClientRequestCreated);\n };\n\n /**\n * You may be wondering why we register these diagnostics-channel listeners\n * in such a convoluted way (as InstrumentationNodeModuleDefinition...)˝,\n * instead of simply subscribing to the events once in here.\n * The reason for this is timing semantics: These functions are called once the http or https module is loaded.\n * If we'd subscribe before that, there seem to be conflicts with the OTEL native instrumentation in some scenarios,\n * especially the \"import-on-top\" pattern of setting up ESM applications.\n */\n return [\n new InstrumentationNodeModuleDefinition('http', ['*'], wrap, unwrap),\n new InstrumentationNodeModuleDefinition('https', ['*'], wrap, unwrap),\n ];\n }\n\n /**\n * Start a span for an outgoing request.\n * The span wraps the callback of the request, and ends when the response is finished.\n */\n _startSpanForOutgoingRequest(request) {\n // We monkey-patch `req.once('response'), which is used to trigger the callback of the request\n // eslint-disable-next-line @typescript-eslint/unbound-method, deprecation/deprecation\n const originalOnce = request.once;\n\n const [name, attributes] = _getOutgoingRequestSpanData(request);\n\n const span = startInactiveSpan({\n name,\n attributes,\n onlyIfParent: true,\n });\n\n this.getConfig().outgoingRequestHook?.(span, request);\n\n const newOnce = new Proxy(originalOnce, {\n apply(target, thisArg, args) {\n const [event] = args;\n if (event !== 'response') {\n return target.apply(thisArg, args);\n }\n\n const parentContext = context.active();\n const requestContext = trace.setSpan(parentContext, span);\n\n return context.with(requestContext, () => {\n return target.apply(thisArg, args);\n });\n },\n });\n\n // eslint-disable-next-line deprecation/deprecation\n request.once = newOnce;\n\n /**\n * Determines if the request has errored or the response has ended/errored.\n */\n let responseFinished = false;\n\n const endSpan = (status) => {\n if (responseFinished) {\n return;\n }\n responseFinished = true;\n\n span.setStatus(status);\n span.end();\n };\n\n request.prependListener('response', response => {\n if (request.listenerCount('response') <= 1) {\n response.resume();\n }\n\n context.bind(context.active(), response);\n\n const additionalAttributes = _getOutgoingRequestEndedSpanData(response);\n span.setAttributes(additionalAttributes);\n\n this.getConfig().outgoingResponseHook?.(span, response);\n this.getConfig().outgoingRequestApplyCustomAttributes?.(span, request, response);\n\n const endHandler = (forceError = false) => {\n this._diag.debug('outgoingRequest on end()');\n\n const status =\n // eslint-disable-next-line deprecation/deprecation\n forceError || typeof response.statusCode !== 'number' || (response.aborted && !response.complete)\n ? { code: SpanStatusCode.ERROR }\n : getSpanStatusFromHttpCode(response.statusCode);\n\n endSpan(status);\n };\n\n response.on('end', () => {\n endHandler();\n });\n response.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on response error()', error);\n endHandler(true);\n });\n });\n\n // Fallback if proper response end handling above fails\n request.on('close', () => {\n endSpan({ code: SpanStatusCode.UNSET });\n });\n request.on(errorMonitor, error => {\n this._diag.debug('outgoingRequest on request error()', error);\n endSpan({ code: SpanStatusCode.ERROR });\n });\n\n return span;\n }\n\n /**\n * This is triggered when an outgoing request finishes.\n * It has access to the final request and response objects.\n */\n _onOutgoingRequestFinish(request, response) {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling finished outgoing request');\n\n const _breadcrumbs = this.getConfig().breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n // Note: We cannot rely on the map being set by `_onOutgoingRequestCreated`, because that is not run in Node <22\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addRequestBreadcrumb(request, response);\n }\n }\n\n /**\n * This is triggered when an outgoing request is created.\n * It creates a span (if enabled) and propagates trace headers within the span's context,\n * so downstream services link to the outgoing HTTP span rather than its parent.\n */\n _onOutgoingRequestCreated(request) {\n DEBUG_BUILD && debug.log(INSTRUMENTATION_NAME, 'Handling outgoing request created');\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request) ?? this._shouldIgnoreOutgoingRequest(request);\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n const shouldCreateSpan = this.getConfig().createSpansForOutgoingRequests && (this.getConfig().spans ?? true);\n const shouldPropagate = this.getConfig().propagateTraceInOutgoingRequests;\n\n if (shouldCreateSpan) {\n const span = this._startSpanForOutgoingRequest(request);\n\n // Propagate headers within the span's context so the sentry-trace header\n // contains the outgoing span's ID, not the parent span's ID.\n // Only do this if the span is recording (has a parent) - otherwise the non-recording\n // span would produce all-zero trace IDs instead of using the scope's propagation context.\n if (shouldPropagate && span.isRecording()) {\n const requestContext = trace.setSpan(context.active(), span);\n context.with(requestContext, () => {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n });\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n } else if (shouldPropagate) {\n addTracePropagationHeadersToOutgoingRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n _shouldIgnoreOutgoingRequest(request) {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (!ignoreOutgoingRequests) {\n return false;\n }\n\n const options = getRequestOptions(request);\n const url = getClientRequestUrl(request);\n return ignoreOutgoingRequests(url, options);\n }\n}\n\nfunction _getOutgoingRequestSpanData(request) {\n const url = getClientRequestUrl(request);\n\n const [name, attributes] = getHttpSpanDetailsFromUrlObject(\n parseStringToURLObject(url),\n 'client',\n 'auto.http.otel.http',\n request,\n );\n\n const userAgent = request.getHeader('user-agent');\n\n return [\n name,\n {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'http.client',\n 'otel.kind': 'CLIENT',\n [ATTR_USER_AGENT_ORIGINAL]: userAgent,\n [ATTR_URL_FULL]: url,\n 'http.url': url,\n 'http.method': request.method,\n 'http.target': request.path || '/',\n 'net.peer.name': request.host,\n 'http.host': request.getHeader('host'),\n ...attributes,\n },\n ];\n}\n\nfunction _getOutgoingRequestEndedSpanData(response) {\n const { statusCode, statusMessage, httpVersion, socket } = response;\n\n const transport = httpVersion.toUpperCase() !== 'QUIC' ? 'ip_tcp' : 'ip_udp';\n\n const additionalAttributes = {\n [ATTR_HTTP_RESPONSE_STATUS_CODE]: statusCode,\n [ATTR_NETWORK_PROTOCOL_VERSION]: httpVersion,\n 'http.flavor': httpVersion,\n [ATTR_NETWORK_TRANSPORT]: transport,\n 'net.transport': transport,\n ['http.status_text']: statusMessage?.toUpperCase(),\n 'http.status_code': statusCode,\n ...getResponseContentLengthAttributes(response),\n };\n\n if (socket) {\n const { remoteAddress, remotePort } = socket;\n\n additionalAttributes[ATTR_NETWORK_PEER_ADDRESS] = remoteAddress;\n additionalAttributes[ATTR_NETWORK_PEER_PORT] = remotePort;\n additionalAttributes['net.peer.ip'] = remoteAddress;\n additionalAttributes['net.peer.port'] = remotePort;\n }\n\n return additionalAttributes;\n}\n\nfunction getResponseContentLengthAttributes(response) {\n const length = getContentLength(response.headers);\n if (length == null) {\n return {};\n }\n\n if (isCompressed(response.headers)) {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH]: length };\n } else {\n // eslint-disable-next-line deprecation/deprecation\n return { [SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED]: length };\n }\n}\n\nfunction getContentLength(headers) {\n const contentLengthHeader = headers['content-length'];\n if (typeof contentLengthHeader === 'number') {\n return contentLengthHeader;\n }\n if (typeof contentLengthHeader !== 'string') {\n return undefined;\n }\n\n const contentLength = parseInt(contentLengthHeader, 10);\n if (isNaN(contentLength)) {\n return undefined;\n }\n\n return contentLength;\n}\n\nfunction isCompressed(headers) {\n const encoding = headers['content-encoding'];\n\n return !!encoding && encoding !== 'identity';\n}\n\nexport { SentryHttpInstrumentation };\n//# sourceMappingURL=SentryHttpInstrumentation.js.map\n", + "import { parseBaggageHeader, objectToBaggageHeader } from '@sentry/core';\n\n/**\n * Merge two baggage headers into one.\n * - Sentry-specific entries (keys starting with \"sentry-\") from the new baggage take precedence\n * - Non-Sentry entries from existing baggage take precedence\n * The order of the existing baggage will be preserved, and new entries will be added to the end.\n *\n * This matches the behavior of OTEL's propagation.inject() which uses baggage.setEntry()\n * to overwrite existing entries with the same key.\n */\nfunction mergeBaggageHeaders(\n existing,\n baggage,\n) {\n if (!existing) {\n return baggage;\n }\n\n const existingBaggageEntries = parseBaggageHeader(existing);\n const newBaggageEntries = parseBaggageHeader(baggage);\n\n if (!newBaggageEntries) {\n return existing;\n }\n\n // Start with existing entries, but Sentry entries from new baggage will overwrite\n const mergedBaggageEntries = { ...existingBaggageEntries };\n Object.entries(newBaggageEntries).forEach(([key, value]) => {\n // Sentry-specific keys always take precedence from new baggage\n // Non-Sentry keys only added if not already present\n if (key.startsWith('sentry-') || !mergedBaggageEntries[key]) {\n mergedBaggageEntries[key] = value;\n }\n });\n\n return objectToBaggageHeader(mergedBaggageEntries);\n}\n\nexport { mergeBaggageHeaders };\n//# sourceMappingURL=baggage.js.map\n", + "import { getBreadcrumbLogLevelFromHttpStatusCode, addBreadcrumb, getClient, shouldPropagateTraceForUrl, getTraceData, debug, isError, parseUrl, getSanitizedUrlString } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { mergeBaggageHeaders } from './baggage.js';\n\nconst LOG_PREFIX = '@sentry/instrumentation-http';\n\n/** Add a breadcrumb for outgoing requests. */\nfunction addRequestBreadcrumb(request, response) {\n const data = getBreadcrumbData(request);\n\n const statusCode = response?.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\n/**\n * Add trace propagation headers to an outgoing request.\n * This must be called _before_ the request is sent!\n */\n// eslint-disable-next-line complexity\nfunction addTracePropagationHeadersToOutgoingRequest(\n request,\n propagationDecisionMap,\n) {\n const url = getClientRequestUrl(request);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const headersToAdd = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!headersToAdd) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = headersToAdd;\n\n if (sentryTrace && !request.getHeader('sentry-trace')) {\n try {\n request.setHeader('sentry-trace', sentryTrace);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added sentry-trace header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add sentry-trace header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (traceparent && !request.getHeader('traceparent')) {\n try {\n request.setHeader('traceparent', traceparent);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added traceparent header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add traceparent header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n\n if (baggage) {\n const newBaggage = mergeBaggageHeaders(request.getHeader('baggage'), baggage);\n if (newBaggage) {\n try {\n request.setHeader('baggage', newBaggage);\n DEBUG_BUILD && debug.log(LOG_PREFIX, 'Added baggage header to outgoing request');\n } catch (error) {\n DEBUG_BUILD &&\n debug.error(\n LOG_PREFIX,\n 'Failed to add baggage header to outgoing request:',\n isError(error) ? error.message : 'Unknown error',\n );\n }\n }\n }\n}\n\nfunction getBreadcrumbData(request) {\n try {\n // `request.host` does not contain the port, but the host header does\n const host = request.getHeader('host') || request.host;\n const url = new URL(request.path, `${request.protocol}//${host}`);\n const parsedUrl = parseUrl(url.toString());\n\n const data = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Convert an outgoing request to request options. */\nfunction getRequestOptions(request) {\n return {\n method: request.method,\n protocol: request.protocol,\n host: request.host,\n hostname: request.host,\n path: request.path,\n headers: request.getHeaders(),\n };\n}\n\n/**\n *\n */\nfunction getClientRequestUrl(request) {\n const hostname = request.getHeader('host') || request.host;\n const protocol = request.protocol;\n const path = request.path;\n\n return `${protocol}//${hostname}${path}`;\n}\n\nexport { addRequestBreadcrumb, addTracePropagationHeadersToOutgoingRequest, getClientRequestUrl, getRequestOptions };\n//# sourceMappingURL=outgoingHttpRequest.js.map\n", + "import { context } from '@opentelemetry/api';\nimport { isTracingSuppressed } from '@opentelemetry/core';\nimport { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, LRUMap } from '@sentry/core';\nimport * as diagch from 'diagnostics_channel';\nimport { NODE_MAJOR, NODE_MINOR } from '../../nodeVersion.js';\nimport { addTracePropagationHeadersToFetchRequest, addFetchRequestBreadcrumb, getAbsoluteUrl } from '../../utils/outgoingFetchRequest.js';\n\n/**\n * This custom node-fetch instrumentation is used to instrument outgoing fetch requests.\n * It does not emit any spans.\n *\n * The reason this is isolated from the OpenTelemetry instrumentation is that users may overwrite this,\n * which would lead to Sentry not working as expected.\n *\n * This is heavily inspired & adapted from:\n * https://github.com/open-telemetry/opentelemetry-js-contrib/blob/28e209a9da36bc4e1f8c2b0db7360170ed46cb80/plugins/node/instrumentation-undici/src/undici.ts\n */\nclass SentryNodeFetchInstrumentation extends InstrumentationBase {\n // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for\n // unsubscribing.\n\n constructor(config = {}) {\n super('@sentry/instrumentation-node-fetch', SDK_VERSION, config);\n this._channelSubs = [];\n this._propagationDecisionMap = new LRUMap(100);\n this._ignoreOutgoingRequestsMap = new WeakMap();\n }\n\n /** No need to instrument files/modules. */\n init() {\n return undefined;\n }\n\n /** Disable the instrumentation. */\n disable() {\n super.disable();\n this._channelSubs.forEach(sub => sub.unsubscribe());\n this._channelSubs = [];\n }\n\n /** Enable the instrumentation. */\n enable() {\n // \"enabled\" handling is currently a bit messy with InstrumentationBase.\n // If constructed with `{enabled: false}`, this `.enable()` is still called,\n // and `this.getConfig().enabled !== this.isEnabled()`, creating confusion.\n //\n // For now, this class will setup for instrumenting if `.enable()` is\n // called, but use `this.getConfig().enabled` to determine if\n // instrumentation should be generated. This covers the more likely common\n // case of config being given a construction time, rather than later via\n // `instance.enable()`, `.disable()`, or `.setConfig()` calls.\n super.enable();\n\n // This method is called by the super-class constructor before ours is\n // called. So we need to ensure the property is initalized.\n this._channelSubs = this._channelSubs || [];\n\n // Avoid to duplicate subscriptions\n if (this._channelSubs.length > 0) {\n return;\n }\n\n this._subscribeToChannel('undici:request:create', this._onRequestCreated.bind(this));\n this._subscribeToChannel('undici:request:headers', this._onResponseHeaders.bind(this));\n }\n\n /**\n * This method is called when a request is created.\n * You can still mutate the request here before it is sent.\n */\n _onRequestCreated({ request }) {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const shouldIgnore = this._shouldIgnoreOutgoingRequest(request);\n // We store this decisision for later so we do not need to re-evaluate it\n // Additionally, the active context is not correct in _onResponseHeaders, so we need to make sure it is evaluated here\n this._ignoreOutgoingRequestsMap.set(request, shouldIgnore);\n\n if (shouldIgnore) {\n return;\n }\n\n if (config.tracePropagation !== false) {\n addTracePropagationHeadersToFetchRequest(request, this._propagationDecisionMap);\n }\n }\n\n /**\n * This method is called when a response is received.\n */\n _onResponseHeaders({ request, response }) {\n const config = this.getConfig();\n const enabled = config.enabled !== false;\n\n if (!enabled) {\n return;\n }\n\n const _breadcrumbs = config.breadcrumbs;\n const breadCrumbsEnabled = typeof _breadcrumbs === 'undefined' ? true : _breadcrumbs;\n\n const shouldIgnore = this._ignoreOutgoingRequestsMap.get(request);\n\n if (breadCrumbsEnabled && !shouldIgnore) {\n addFetchRequestBreadcrumb(request, response);\n }\n }\n\n /** Subscribe to a diagnostics channel. */\n _subscribeToChannel(\n diagnosticChannel,\n onMessage,\n ) {\n // `diagnostics_channel` had a ref counting bug until v18.19.0.\n // https://github.com/nodejs/node/pull/47520\n const useNewSubscribe = NODE_MAJOR > 18 || (NODE_MAJOR === 18 && NODE_MINOR >= 19);\n\n let unsubscribe;\n if (useNewSubscribe) {\n diagch.subscribe?.(diagnosticChannel, onMessage);\n unsubscribe = () => diagch.unsubscribe?.(diagnosticChannel, onMessage);\n } else {\n const channel = diagch.channel(diagnosticChannel);\n channel.subscribe(onMessage);\n unsubscribe = () => channel.unsubscribe(onMessage);\n }\n\n this._channelSubs.push({\n name: diagnosticChannel,\n unsubscribe,\n });\n }\n\n /**\n * Check if the given outgoing request should be ignored.\n */\n _shouldIgnoreOutgoingRequest(request) {\n if (isTracingSuppressed(context.active())) {\n return true;\n }\n\n // Add trace propagation headers\n const url = getAbsoluteUrl(request.origin, request.path);\n const ignoreOutgoingRequests = this.getConfig().ignoreOutgoingRequests;\n\n if (typeof ignoreOutgoingRequests !== 'function' || !url) {\n return false;\n }\n\n return ignoreOutgoingRequests(url);\n }\n}\n\nexport { SentryNodeFetchInstrumentation };\n//# sourceMappingURL=SentryNodeFetchInstrumentation.js.map\n", + "import { parseSemver } from '@sentry/core';\n\nconst NODE_VERSION = parseSemver(process.versions.node) ;\nconst NODE_MAJOR = NODE_VERSION.major;\nconst NODE_MINOR = NODE_VERSION.minor;\n\nexport { NODE_MAJOR, NODE_MINOR, NODE_VERSION };\n//# sourceMappingURL=nodeVersion.js.map\n", + "import { getClient, shouldPropagateTraceForUrl, getTraceData, getBreadcrumbLogLevelFromHttpStatusCode, addBreadcrumb, parseUrl, getSanitizedUrlString } from '@sentry/core';\nimport { mergeBaggageHeaders } from './baggage.js';\n\nconst SENTRY_TRACE_HEADER = 'sentry-trace';\nconst SENTRY_BAGGAGE_HEADER = 'baggage';\n\n// For baggage, we make sure to merge this into a possibly existing header\nconst BAGGAGE_HEADER_REGEX = /baggage: (.*)\\r\\n/;\n\n/**\n * Add trace propagation headers to an outgoing fetch/undici request.\n *\n * Checks if the request URL matches trace propagation targets,\n * then injects sentry-trace, traceparent, and baggage headers.\n */\n// eslint-disable-next-line complexity\nfunction addTracePropagationHeadersToFetchRequest(\n request,\n propagationDecisionMap,\n) {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Manually add the trace headers, if it applies\n // Note: We do not use `propagation.inject()` here, because our propagator relies on an active span\n // Which we do not have in this case\n // The propagator _may_ overwrite this, but this should be fine as it is the same data\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n const addedHeaders = shouldPropagateTraceForUrl(url, tracePropagationTargets, propagationDecisionMap)\n ? getTraceData({ propagateTraceparent })\n : undefined;\n\n if (!addedHeaders) {\n return;\n }\n\n const { 'sentry-trace': sentryTrace, baggage, traceparent } = addedHeaders;\n\n // We do not want to overwrite existing headers here\n // If the core UndiciInstrumentation is registered, it will already have set the headers\n // We do not want to add any then\n if (Array.isArray(request.headers)) {\n const requestHeaders = request.headers;\n\n // We do not want to overwrite existing header here, if it was already set\n if (sentryTrace && !requestHeaders.includes(SENTRY_TRACE_HEADER)) {\n requestHeaders.push(SENTRY_TRACE_HEADER, sentryTrace);\n }\n\n if (traceparent && !requestHeaders.includes('traceparent')) {\n requestHeaders.push('traceparent', traceparent);\n }\n\n // For baggage, we make sure to merge this into a possibly existing header\n const existingBaggagePos = requestHeaders.findIndex(header => header === SENTRY_BAGGAGE_HEADER);\n if (baggage && existingBaggagePos === -1) {\n requestHeaders.push(SENTRY_BAGGAGE_HEADER, baggage);\n } else if (baggage) {\n const existingBaggage = requestHeaders[existingBaggagePos + 1];\n const merged = mergeBaggageHeaders(existingBaggage, baggage);\n if (merged) {\n requestHeaders[existingBaggagePos + 1] = merged;\n }\n }\n } else {\n const requestHeaders = request.headers;\n // We do not want to overwrite existing header here, if it was already set\n if (sentryTrace && !requestHeaders.includes(`${SENTRY_TRACE_HEADER}:`)) {\n request.headers += `${SENTRY_TRACE_HEADER}: ${sentryTrace}\\r\\n`;\n }\n\n if (traceparent && !requestHeaders.includes('traceparent:')) {\n request.headers += `traceparent: ${traceparent}\\r\\n`;\n }\n\n const existingBaggage = request.headers.match(BAGGAGE_HEADER_REGEX)?.[1];\n if (baggage && !existingBaggage) {\n request.headers += `${SENTRY_BAGGAGE_HEADER}: ${baggage}\\r\\n`;\n } else if (baggage) {\n const merged = mergeBaggageHeaders(existingBaggage, baggage);\n if (merged) {\n request.headers = request.headers.replace(BAGGAGE_HEADER_REGEX, `baggage: ${merged}\\r\\n`);\n }\n }\n }\n}\n\n/** Add a breadcrumb for an outgoing fetch/undici request. */\nfunction addFetchRequestBreadcrumb(request, response) {\n const data = getBreadcrumbData(request);\n\n const statusCode = response.statusCode;\n const level = getBreadcrumbLogLevelFromHttpStatusCode(statusCode);\n\n addBreadcrumb(\n {\n category: 'http',\n data: {\n status_code: statusCode,\n ...data,\n },\n type: 'http',\n level,\n },\n {\n event: 'response',\n request,\n response,\n },\n );\n}\n\nfunction getBreadcrumbData(request) {\n try {\n const url = getAbsoluteUrl(request.origin, request.path);\n const parsedUrl = parseUrl(url);\n\n const data = {\n url: getSanitizedUrlString(parsedUrl),\n 'http.method': request.method || 'GET',\n };\n\n if (parsedUrl.search) {\n data['http.query'] = parsedUrl.search;\n }\n if (parsedUrl.hash) {\n data['http.fragment'] = parsedUrl.hash;\n }\n\n return data;\n } catch {\n return {};\n }\n}\n\n/** Get the absolute URL from an origin and path. */\nfunction getAbsoluteUrl(origin, path = '/') {\n try {\n const url = new URL(path, origin);\n return url.toString();\n } catch {\n // fallback: Construct it on our own\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n }\n}\n\nexport { addFetchRequestBreadcrumb, addTracePropagationHeadersToFetchRequest, getAbsoluteUrl };\n//# sourceMappingURL=outgoingFetchRequest.js.map\n", + "import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { wrapContextManagerClass } from '@sentry/opentelemetry';\n\n/**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\nconst SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n\nexport { SentryContextManager };\n//# sourceMappingURL=contextManager.js.map\n", + "import { ATTR_URL_FULL, SEMATTRS_HTTP_URL, ATTR_HTTP_REQUEST_METHOD, SEMATTRS_HTTP_METHOD, ATTR_DB_SYSTEM_NAME, SEMATTRS_DB_SYSTEM, SEMATTRS_RPC_SERVICE, SEMATTRS_MESSAGING_SYSTEM, SEMATTRS_FAAS_TRIGGER, SEMATTRS_DB_STATEMENT, SEMATTRS_HTTP_TARGET, ATTR_HTTP_ROUTE, ATTR_HTTP_RESPONSE_STATUS_CODE, SEMATTRS_HTTP_STATUS_CODE, SEMATTRS_RPC_GRPC_STATUS_CODE } from '@opentelemetry/semantic-conventions';\nimport { parseUrl, getSanitizedUrlString, SDK_VERSION, addNonEnumerableProperty, isSentryRequestUrl, getClient, baggageHeaderToDynamicSamplingContext, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, stripUrlQueryAndFragment, spanToJSON, hasSpansEnabled, dynamicSamplingContextToSentryBaggageHeader, LRUMap, debug, shouldPropagateTraceForUrl, parseBaggageHeader, SENTRY_BAGGAGE_KEY_PREFIX, generateSentryTraceHeader, generateTraceparentHeader, getDynamicSamplingContextFromSpan, getCurrentScope, getDynamicSamplingContextFromScope, getIsolationScope, propagationContextFromHeaders, shouldContinueTrace, spanToTraceContext, getTraceContextFromScope, getRootSpan, handleCallbackErrors, getCapturedScopesOnSpan, setAsyncContextStrategy, getDefaultIsolationScope, getDefaultCurrentScope, SPAN_STATUS_OK, SPAN_STATUS_ERROR, getSpanStatusFromHttpCode, _INTERNAL_safeDateNow, debounce, timedEventsToMeasurements, captureEvent, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, convertSpanLinksForEnvelope, getStatusMessage, spanTimeInputToSeconds, addChildSpanToSpan, setCapturedScopesOnSpan, logSpanStart, logSpanEnd, parseSampleRate, _INTERNAL_safeMathRandom, sampleSpan } from '@sentry/core';\nexport { getClient, getDynamicSamplingContextFromSpan, shouldPropagateTraceForUrl } from '@sentry/core';\nimport * as api from '@opentelemetry/api';\nimport { trace, SpanKind, createContextKey, TraceFlags, propagation, INVALID_TRACEID, context, SpanStatusCode, ROOT_CONTEXT, isSpanContextValid } from '@opentelemetry/api';\nimport { TraceState, W3CBaggagePropagator, isTracingSuppressed, suppressTracing as suppressTracing$1 } from '@opentelemetry/core';\nimport { SamplingDecision } from '@opentelemetry/sdk-trace-base';\n\n/** If this attribute is true, it means that the parent is a remote span. */\nconst SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE = 'sentry.parentIsRemote';\n\n// These are not standardized yet, but used by the graphql instrumentation\nconst SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION = 'sentry.graphql.operation';\n\n/**\n * Get the parent span id from a span.\n * In OTel v1, the parent span id is accessed as `parentSpanId`\n * In OTel v2, the parent span id is accessed as `spanId` on the `parentSpanContext`\n */\nfunction getParentSpanId(span) {\n if ('parentSpanId' in span) {\n return span.parentSpanId ;\n } else if ('parentSpanContext' in span) {\n return (span.parentSpanContext )?.spanId;\n }\n\n return undefined;\n}\n\n/**\n * Check if a given span has attributes.\n * This is necessary because the base `Span` type does not have attributes,\n * so in places where we are passed a generic span, we need to check if we want to access them.\n */\nfunction spanHasAttributes(\n span,\n) {\n const castSpan = span ;\n return !!castSpan.attributes && typeof castSpan.attributes === 'object';\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasKind(span) {\n const castSpan = span ;\n return typeof castSpan.kind === 'number';\n}\n\n/**\n * Check if a given span has a status.\n * This is necessary because the base `Span` type does not have a status,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasStatus(\n span,\n) {\n const castSpan = span ;\n return !!castSpan.status;\n}\n\n/**\n * Check if a given span has a name.\n * This is necessary because the base `Span` type does not have a name,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasName(span) {\n const castSpan = span ;\n return !!castSpan.name;\n}\n\n/**\n * Check if a given span has a kind.\n * This is necessary because the base `Span` type does not have a kind,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasParentId(\n span,\n) {\n const castSpan = span ;\n return !!getParentSpanId(castSpan);\n}\n\n/**\n * Check if a given span has events.\n * This is necessary because the base `Span` type does not have events,\n * so in places where we are passed a generic span, we need to check if we want to access it.\n */\nfunction spanHasEvents(\n span,\n) {\n const castSpan = span ;\n return Array.isArray(castSpan.events);\n}\n\n/**\n * Get sanitizied request data from an OTEL span.\n */\nfunction getRequestSpanData(span) {\n // The base `Span` type has no `attributes`, so we need to guard here against that\n if (!spanHasAttributes(span)) {\n return {};\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeUrlAttribute = (span.attributes[ATTR_URL_FULL] || span.attributes[SEMATTRS_HTTP_URL])\n\n;\n\n const data = {\n url: maybeUrlAttribute,\n // eslint-disable-next-line deprecation/deprecation\n 'http.method': (span.attributes[ATTR_HTTP_REQUEST_METHOD] || span.attributes[SEMATTRS_HTTP_METHOD])\n\n,\n };\n\n // Default to GET if URL is set but method is not\n if (!data['http.method'] && data.url) {\n data['http.method'] = 'GET';\n }\n\n try {\n if (typeof maybeUrlAttribute === 'string') {\n const url = parseUrl(maybeUrlAttribute);\n\n data.url = getSanitizedUrlString(url);\n\n if (url.search) {\n data['http.query'] = url.search;\n }\n if (url.hash) {\n data['http.fragment'] = url.hash;\n }\n }\n } catch {\n // ignore\n }\n\n return data;\n}\n\n// Typescript complains if we do not use `...args: any[]` for the mixin, with:\n// A mixin class must have a constructor with a single rest parameter of type 'any[]'.ts(2545)\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Wrap an Client class with things we need for OpenTelemetry support.\n * Make sure that the Client class passed in is non-abstract!\n *\n * Usage:\n * const OpenTelemetryClient = getWrappedClientClass(NodeClient);\n * const client = new OpenTelemetryClient(options);\n */\nfunction wrapClientClass\n\n(ClientClass) {\n // @ts-expect-error We just assume that this is non-abstract, if you pass in an abstract class this would make it non-abstract\n class OpenTelemetryClient extends ClientClass {\n\n constructor(...args) {\n super(...args);\n }\n\n /** Get the OTEL tracer. */\n get tracer() {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/opentelemetry';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /**\n * @inheritDoc\n */\n async flush(timeout) {\n const provider = this.traceProvider;\n await provider?.forceFlush();\n return super.flush(timeout);\n }\n }\n\n return OpenTelemetryClient ;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Get the span kind from a span.\n * For whatever reason, this is not public API on the generic \"Span\" type,\n * so we need to check if we actually have a `SDKTraceBaseSpan` where we can fetch this from.\n * Otherwise, we fall back to `SpanKind.INTERNAL`.\n */\nfunction getSpanKind(span) {\n if (spanHasKind(span)) {\n return span.kind;\n }\n\n return SpanKind.INTERNAL;\n}\n\nconst SENTRY_TRACE_HEADER = 'sentry-trace';\nconst SENTRY_BAGGAGE_HEADER = 'baggage';\n\nconst SENTRY_TRACE_STATE_DSC = 'sentry.dsc';\nconst SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING = 'sentry.sampled_not_recording';\nconst SENTRY_TRACE_STATE_URL = 'sentry.url';\nconst SENTRY_TRACE_STATE_SAMPLE_RAND = 'sentry.sample_rand';\nconst SENTRY_TRACE_STATE_SAMPLE_RATE = 'sentry.sample_rate';\n\nconst SENTRY_SCOPES_CONTEXT_KEY = createContextKey('sentry_scopes');\n\nconst SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_isolation_scope');\n\nconst SENTRY_FORK_SET_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_scope');\n\nconst SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY = createContextKey('sentry_fork_set_isolation_scope');\n\nconst SCOPE_CONTEXT_FIELD = '_scopeContext';\n\n/**\n * Try to get the current scopes from the given OTEL context.\n * This requires a Context Manager that was wrapped with getWrappedContextManager.\n */\nfunction getScopesFromContext(context) {\n return context.getValue(SENTRY_SCOPES_CONTEXT_KEY) ;\n}\n\n/**\n * Set the current scopes on an OTEL context.\n * This will return a forked context with the Propagation Context set.\n */\nfunction setScopesOnContext(context, scopes) {\n return context.setValue(SENTRY_SCOPES_CONTEXT_KEY, scopes);\n}\n\n/**\n * Set the context on the scope so we can later look it up.\n * We need this to get the context from the scope in the `trace` functions.\n */\nfunction setContextOnScope(scope, context) {\n addNonEnumerableProperty(scope, SCOPE_CONTEXT_FIELD, context);\n}\n\n/**\n * Get the context related to a scope.\n */\nfunction getContextFromScope(scope) {\n return (scope )[SCOPE_CONTEXT_FIELD];\n}\n\n/**\n *\n * @param otelSpan Checks whether a given OTEL Span is an http request to sentry.\n * @returns boolean\n */\nfunction isSentryRequestSpan(span) {\n if (!spanHasAttributes(span)) {\n return false;\n }\n\n const { attributes } = span;\n\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n\n if (!httpUrl) {\n return false;\n }\n\n return isSentryRequestUrl(httpUrl.toString(), getClient());\n}\n\n/**\n * OpenTelemetry only knows about SAMPLED or NONE decision,\n * but for us it is important to differentiate between unset and unsampled.\n *\n * Both of these are identified as `traceFlags === TracegFlags.NONE`,\n * but we additionally look at a special trace state to differentiate between them.\n */\nfunction getSamplingDecision(spanContext) {\n const { traceFlags, traceState } = spanContext;\n\n const sampledNotRecording = traceState ? traceState.get(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING) === '1' : false;\n\n // If trace flag is `SAMPLED`, we interpret this as sampled\n // If it is `NONE`, it could mean either it was sampled to be not recorder, or that it was not sampled at all\n // For us this is an important difference, sow e look at the SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING\n // to identify which it is\n if (traceFlags === TraceFlags.SAMPLED) {\n return true;\n }\n\n if (sampledNotRecording) {\n return false;\n }\n\n // Fall back to DSC as a last resort, that may also contain `sampled`...\n const dscString = traceState ? traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n if (dsc?.sampled === 'true') {\n return true;\n }\n if (dsc?.sampled === 'false') {\n return false;\n }\n\n return undefined;\n}\n\n/**\n * Infer the op & description for a set of name, attributes and kind of a span.\n */\nfunction inferSpanData(spanName, attributes, kind) {\n // if http.method exists, this is an http request span\n // eslint-disable-next-line deprecation/deprecation\n const httpMethod = attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD];\n if (httpMethod) {\n return descriptionForHttpMethod({ attributes, name: spanName, kind }, httpMethod);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const dbSystem = attributes[ATTR_DB_SYSTEM_NAME] || attributes[SEMATTRS_DB_SYSTEM];\n const opIsCache =\n typeof attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] === 'string' &&\n attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP].startsWith('cache.');\n\n // If db.type exists then this is a database call span\n // If the Redis DB is used as a cache, the span description should not be changed\n if (dbSystem && !opIsCache) {\n return descriptionForDbSystem({ attributes, name: spanName });\n }\n\n const customSourceOrRoute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom' ? 'custom' : 'route';\n\n // If rpc.service exists then this is a rpc call span.\n // eslint-disable-next-line deprecation/deprecation\n const rpcService = attributes[SEMATTRS_RPC_SERVICE];\n if (rpcService) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, 'route'),\n op: 'rpc',\n };\n }\n\n // If messaging.system exists then this is a messaging system span.\n // eslint-disable-next-line deprecation/deprecation\n const messagingSystem = attributes[SEMATTRS_MESSAGING_SYSTEM];\n if (messagingSystem) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: 'message',\n };\n }\n\n // If faas.trigger exists then this is a function as a service span.\n // eslint-disable-next-line deprecation/deprecation\n const faasTrigger = attributes[SEMATTRS_FAAS_TRIGGER];\n if (faasTrigger) {\n return {\n ...getUserUpdatedNameAndSource(spanName, attributes, customSourceOrRoute),\n op: faasTrigger.toString(),\n };\n }\n\n return { op: undefined, description: spanName, source: 'custom' };\n}\n\n/**\n * Extract better op/description from an otel span.\n *\n * Does not overwrite the span name if the source is already set to custom to ensure\n * that user-updated span names are preserved. In this case, we only adjust the op but\n * leave span description and source unchanged.\n *\n * Based on https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/7422ce2a06337f68a59b552b8c5a2ac125d6bae5/exporter/sentryexporter/sentry_exporter.go#L306\n */\nfunction parseSpanDescription(span) {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const name = spanHasName(span) ? span.name : '';\n const kind = getSpanKind(span);\n\n return inferSpanData(name, attributes, kind);\n}\n\nfunction descriptionForDbSystem({ attributes, name }) {\n // if we already have a custom name, we don't overwrite it but only set the op\n const userDefinedName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n if (typeof userDefinedName === 'string') {\n return {\n op: 'db',\n description: userDefinedName,\n source: (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ) || 'custom',\n };\n }\n\n // if we already have the source set to custom, we don't overwrite the span description but only set the op\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom') {\n return { op: 'db', description: name, source: 'custom' };\n }\n\n // Use DB statement (Ex \"SELECT * FROM table\") if possible as description.\n // eslint-disable-next-line deprecation/deprecation\n const statement = attributes[SEMATTRS_DB_STATEMENT];\n\n const description = statement ? statement.toString() : name;\n\n return { op: 'db', description, source: 'task' };\n}\n\n/** Only exported for tests. */\nfunction descriptionForHttpMethod(\n { name, kind, attributes },\n httpMethod,\n) {\n const opParts = ['http'];\n\n switch (kind) {\n case SpanKind.CLIENT:\n opParts.push('client');\n break;\n case SpanKind.SERVER:\n opParts.push('server');\n break;\n }\n\n // Spans for HTTP requests we have determined to be prefetch requests will have a `.prefetch` postfix in the op\n if (attributes['sentry.http.prefetch']) {\n opParts.push('prefetch');\n }\n\n const { urlPath, url, query, fragment, hasRoute } = getSanitizedUrl(attributes, kind);\n\n if (!urlPath) {\n return { ...getUserUpdatedNameAndSource(name, attributes), op: opParts.join('.') };\n }\n\n const graphqlOperationsAttribute = attributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION];\n\n // Ex. GET /api/users\n const baseDescription = `${httpMethod} ${urlPath}`;\n\n // When the http span has a graphql operation, append it to the description\n // We add these in the graphqlIntegration\n const inferredDescription = graphqlOperationsAttribute\n ? `${baseDescription} (${getGraphqlOperationNamesFromAttribute(graphqlOperationsAttribute)})`\n : baseDescription;\n\n // If `httpPath` is a root path, then we can categorize the transaction source as route.\n const inferredSource = hasRoute || urlPath === '/' ? 'route' : 'url';\n\n const data = {};\n\n if (url) {\n data.url = url;\n }\n if (query) {\n data['http.query'] = query;\n }\n if (fragment) {\n data['http.fragment'] = fragment;\n }\n\n // If the span kind is neither client nor server, we use the original name\n // this infers that somebody manually started this span, in which case we don't want to overwrite the name\n const isClientOrServerKind = kind === SpanKind.CLIENT || kind === SpanKind.SERVER;\n\n // If the span is an auto-span (=it comes from one of our instrumentations),\n // we always want to infer the name\n // this is necessary because some of the auto-instrumentation we use uses kind=INTERNAL\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] || 'manual';\n const isManualSpan = !`${origin}`.startsWith('auto');\n\n // If users (or in very rare occasions we) set the source to custom, we don't overwrite the name\n const alreadyHasCustomSource = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] === 'custom';\n const customSpanName = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n const useInferredDescription =\n !alreadyHasCustomSource && customSpanName == null && (isClientOrServerKind || !isManualSpan);\n\n const { description, source } = useInferredDescription\n ? { description: inferredDescription, source: inferredSource }\n : getUserUpdatedNameAndSource(name, attributes);\n\n return {\n op: opParts.join('.'),\n description,\n source,\n data,\n };\n}\n\nfunction getGraphqlOperationNamesFromAttribute(attr) {\n if (Array.isArray(attr)) {\n // oxlint-disable-next-line typescript/require-array-sort-compare\n const sorted = attr.slice().sort();\n\n // Up to 5 items, we just add all of them\n if (sorted.length <= 5) {\n return sorted.join(', ');\n } else {\n // Else, we add the first 5 and the diff of other operations\n return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n }\n }\n\n return `${attr}`;\n}\n\n/** Exported for tests only */\nfunction getSanitizedUrl(\n attributes,\n kind,\n)\n\n {\n // This is the relative path of the URL, e.g. /sub\n // eslint-disable-next-line deprecation/deprecation\n const httpTarget = attributes[SEMATTRS_HTTP_TARGET];\n // This is the full URL, including host & query params etc., e.g. https://example.com/sub?foo=bar\n // eslint-disable-next-line deprecation/deprecation\n const httpUrl = attributes[SEMATTRS_HTTP_URL] || attributes[ATTR_URL_FULL];\n // This is the normalized route name - may not always be available!\n const httpRoute = attributes[ATTR_HTTP_ROUTE];\n\n const parsedUrl = typeof httpUrl === 'string' ? parseUrl(httpUrl) : undefined;\n const url = parsedUrl ? getSanitizedUrlString(parsedUrl) : undefined;\n const query = parsedUrl?.search || undefined;\n const fragment = parsedUrl?.hash || undefined;\n\n if (typeof httpRoute === 'string') {\n return { urlPath: httpRoute, url, query, fragment, hasRoute: true };\n }\n\n if (kind === SpanKind.SERVER && typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n if (parsedUrl) {\n return { urlPath: url, url, query, fragment, hasRoute: false };\n }\n\n // fall back to target even for client spans, if no URL is present\n if (typeof httpTarget === 'string') {\n return { urlPath: stripUrlQueryAndFragment(httpTarget), url, query, fragment, hasRoute: false };\n }\n\n return { urlPath: undefined, url, query, fragment, hasRoute: false };\n}\n\n/**\n * Because Otel instrumentation sometimes mutates span names via `span.updateName`, the only way\n * to ensure that a user-set span name is preserved is to store it as a tmp attribute on the span.\n * We delete this attribute once we're done with it when preparing the event envelope.\n *\n * This temp attribute always takes precedence over the original name.\n *\n * We also need to take care of setting the correct source. Users can always update the source\n * after updating the name, so we need to respect that.\n *\n * @internal exported only for testing\n */\nfunction getUserUpdatedNameAndSource(\n originalName,\n attributes,\n fallbackSource = 'custom',\n)\n\n {\n const source = (attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ) || fallbackSource;\n const description = attributes[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n\n if (description && typeof description === 'string') {\n return {\n description,\n source,\n };\n }\n\n return { description: originalName, source };\n}\n\n/**\n * Setup a DSC handler on the passed client,\n * ensuring that the transaction name is inferred from the span correctly.\n */\nfunction enhanceDscWithOpenTelemetryRootSpanName(client) {\n client.on('createDsc', (dsc, rootSpan) => {\n if (!rootSpan) {\n return;\n }\n\n // We want to overwrite the transaction on the DSC that is created by default in core\n // The reason for this is that we want to infer the span name, not use the initial one\n // Otherwise, we'll get names like \"GET\" instead of e.g. \"GET /foo\"\n // `parseSpanDescription` takes the attributes of the span into account for the name\n // This mutates the passed-in DSC\n\n const jsonSpan = spanToJSON(rootSpan);\n const attributes = jsonSpan.data;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n\n const { description } = spanHasName(rootSpan) ? parseSpanDescription(rootSpan) : { description: undefined };\n if (source !== 'url' && description) {\n dsc.transaction = description;\n }\n\n // Also ensure sampling decision is correctly inferred\n // In core, we use `spanIsSampled`, which just looks at the trace flags\n // but in OTEL, we use a slightly more complex logic to be able to differntiate between unsampled and deferred sampling\n if (hasSpansEnabled()) {\n const sampled = getSamplingDecision(rootSpan.spanContext());\n dsc.sampled = sampled == undefined ? undefined : String(sampled);\n }\n });\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n return trace.getActiveSpan();\n}\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\n/**\n * Generate a TraceState for the given data.\n */\nfunction makeTraceState({\n dsc,\n sampled,\n}\n\n) {\n // We store the DSC as OTEL trace state on the span context\n const dscString = dsc ? dynamicSamplingContextToSentryBaggageHeader(dsc) : undefined;\n\n const traceStateBase = new TraceState();\n\n const traceStateWithDsc = dscString ? traceStateBase.set(SENTRY_TRACE_STATE_DSC, dscString) : traceStateBase;\n\n // We also specifically want to store if this is sampled to be not recording,\n // or unsampled (=could be either sampled or not)\n return sampled === false ? traceStateWithDsc.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') : traceStateWithDsc;\n}\n\nconst setupElements = new Set();\n\n/** Get all the OpenTelemetry elements that have been set up. */\nfunction openTelemetrySetupCheck() {\n return Array.from(setupElements);\n}\n\n/** Mark an OpenTelemetry element as setup. */\nfunction setIsSetup(element) {\n setupElements.add(element);\n}\n\n/**\n * Injects and extracts `sentry-trace` and `baggage` headers from carriers.\n */\nclass SentryPropagator extends W3CBaggagePropagator {\n /** A map of URLs that have already been checked for if they match tracePropagationTargets. */\n\n constructor() {\n super();\n setIsSetup('SentryPropagator');\n\n // We're caching results so we don't have to recompute regexp every time we create a request.\n this._urlMatchesTargetsMap = new LRUMap(100);\n }\n\n /**\n * @inheritDoc\n */\n inject(context, carrier, setter) {\n if (isTracingSuppressed(context)) {\n DEBUG_BUILD && debug.log('[Tracing] Not injecting trace data for url because tracing is suppressed.');\n return;\n }\n\n const activeSpan = trace.getSpan(context);\n const url = activeSpan && getCurrentURL(activeSpan);\n\n const { tracePropagationTargets, propagateTraceparent } = getClient()?.getOptions() || {};\n if (!shouldPropagateTraceForUrl(url, tracePropagationTargets, this._urlMatchesTargetsMap)) {\n DEBUG_BUILD &&\n debug.log('[Tracing] Not injecting trace data for url because it does not match tracePropagationTargets:', url);\n return;\n }\n\n const existingBaggageHeader = getExistingBaggage(carrier);\n let baggage = propagation.getBaggage(context) || propagation.createBaggage({});\n\n const { dynamicSamplingContext, traceId, spanId, sampled } = getInjectionData(context);\n\n if (existingBaggageHeader) {\n const baggageEntries = parseBaggageHeader(existingBaggageHeader);\n\n if (baggageEntries) {\n Object.entries(baggageEntries).forEach(([key, value]) => {\n baggage = baggage.setEntry(key, { value });\n });\n }\n }\n\n if (dynamicSamplingContext) {\n baggage = Object.entries(dynamicSamplingContext).reduce((b, [dscKey, dscValue]) => {\n if (dscValue) {\n return b.setEntry(`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`, { value: dscValue });\n }\n return b;\n }, baggage);\n }\n\n // We also want to avoid setting the default OTEL trace ID, if we get that for whatever reason\n if (traceId && traceId !== INVALID_TRACEID) {\n setter.set(carrier, SENTRY_TRACE_HEADER, generateSentryTraceHeader(traceId, spanId, sampled));\n\n if (propagateTraceparent) {\n setter.set(carrier, 'traceparent', generateTraceparentHeader(traceId, spanId, sampled));\n }\n }\n\n super.inject(propagation.setBaggage(context, baggage), carrier, setter);\n }\n\n /**\n * @inheritDoc\n */\n extract(context, carrier, getter) {\n const maybeSentryTraceHeader = getter.get(carrier, SENTRY_TRACE_HEADER);\n const baggage = getter.get(carrier, SENTRY_BAGGAGE_HEADER);\n\n const sentryTrace = maybeSentryTraceHeader\n ? Array.isArray(maybeSentryTraceHeader)\n ? maybeSentryTraceHeader[0]\n : maybeSentryTraceHeader\n : undefined;\n\n // Add remote parent span context\n // If there is no incoming trace, this will return the context as-is\n return ensureScopesOnContext(getContextWithRemoteActiveSpan(context, { sentryTrace, baggage }));\n }\n\n /**\n * @inheritDoc\n */\n fields() {\n return [SENTRY_TRACE_HEADER, SENTRY_BAGGAGE_HEADER, 'traceparent'];\n }\n}\n\n/**\n * Get propagation injection data for the given context.\n * The additional options can be passed to override the scope and client that is otherwise derived from the context.\n */\nfunction getInjectionData(\n context,\n options = {},\n)\n\n {\n const span = trace.getSpan(context);\n\n // If we have a remote span, the spanId should be considered as the parentSpanId, not spanId itself\n // Instead, we use a virtual (generated) spanId for propagation\n if (span?.spanContext().isRemote) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: undefined,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // If we have a local span, we just use this\n if (span) {\n const spanContext = span.spanContext();\n const dynamicSamplingContext = getDynamicSamplingContextFromSpan(span);\n\n return {\n dynamicSamplingContext,\n traceId: spanContext.traceId,\n spanId: spanContext.spanId,\n sampled: getSamplingDecision(spanContext), // TODO: Do we need to change something here?\n };\n }\n\n // Else we try to use the propagation context from the scope\n // The only scenario where this should happen is when we neither have a span, nor an incoming trace\n const scope = options.scope || getScopesFromContext(context)?.scope || getCurrentScope();\n const client = options.client || getClient();\n\n const propagationContext = scope.getPropagationContext();\n const dynamicSamplingContext = client ? getDynamicSamplingContextFromScope(client, scope) : undefined;\n return {\n dynamicSamplingContext,\n traceId: propagationContext.traceId,\n spanId: propagationContext.propagationSpanId,\n sampled: propagationContext.sampled,\n };\n}\n\nfunction getContextWithRemoteActiveSpan(\n ctx,\n { sentryTrace, baggage },\n) {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n\n const { traceId, parentSpanId, sampled, dsc } = propagationContext;\n\n const client = getClient();\n const incomingDsc = baggageHeaderToDynamicSamplingContext(baggage);\n\n // We only want to set the virtual span if we are continuing a concrete trace\n // Otherwise, we ignore the incoming trace here, e.g. if we have no trace headers\n if (!parentSpanId || (client && !shouldContinueTrace(client, incomingDsc?.org_id))) {\n return ctx;\n }\n\n const spanContext = generateRemoteSpanContext({\n traceId,\n spanId: parentSpanId,\n sampled,\n dsc,\n });\n\n return trace.setSpanContext(ctx, spanContext);\n}\n\n/**\n * Takes trace strings and propagates them as a remote active span.\n * This should be used in addition to `continueTrace` in OTEL-powered environments.\n */\nfunction continueTraceAsRemoteSpan(\n ctx,\n options,\n callback,\n) {\n const ctxWithSpanContext = ensureScopesOnContext(getContextWithRemoteActiveSpan(ctx, options));\n\n return context.with(ctxWithSpanContext, callback);\n}\n\nfunction ensureScopesOnContext(ctx) {\n // If there are no scopes yet on the context, ensure we have them\n const scopes = getScopesFromContext(ctx);\n const newScopes = {\n // If we have no scope here, this is most likely either the root context or a context manually derived from it\n // In this case, we want to fork the current scope, to ensure we do not pollute the root scope\n scope: scopes ? scopes.scope : getCurrentScope().clone(),\n isolationScope: scopes ? scopes.isolationScope : getIsolationScope(),\n };\n\n return setScopesOnContext(ctx, newScopes);\n}\n\n/** Try to get the existing baggage header so we can merge this in. */\nfunction getExistingBaggage(carrier) {\n try {\n const baggage = (carrier )[SENTRY_BAGGAGE_HEADER];\n return Array.isArray(baggage) ? baggage.join(',') : baggage;\n } catch {\n return undefined;\n }\n}\n\n/**\n * It is pretty tricky to get access to the outgoing request URL of a request in the propagator.\n * As we only have access to the context of the span to be sent and the carrier (=headers),\n * but the span may be unsampled and thus have no attributes.\n *\n * So we use the following logic:\n * 1. If we have an active span, we check if it has a URL attribute.\n * 2. Else, if the active span has no URL attribute (e.g. it is unsampled), we check a special trace state (which we set in our sampler).\n */\nfunction getCurrentURL(span) {\n const spanData = spanToJSON(span).data;\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const urlAttribute = spanData[SEMATTRS_HTTP_URL] || spanData[ATTR_URL_FULL];\n if (typeof urlAttribute === 'string') {\n return urlAttribute;\n }\n\n // Also look at the traceState, which we may set in the sampler even for unsampled spans\n const urlTraceState = span.spanContext().traceState?.get(SENTRY_TRACE_STATE_URL);\n if (urlTraceState) {\n return urlTraceState;\n }\n\n return undefined;\n}\n\nfunction generateRemoteSpanContext({\n spanId,\n traceId,\n sampled,\n dsc,\n}\n\n) {\n // We store the DSC as OTEL trace state on the span context\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanContext = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n return spanContext;\n}\n\n/**\n * Internal helper for starting spans and manual spans. See {@link startSpan} and {@link startSpanManual} for the public APIs.\n * @param options - The span context options\n * @param callback - The callback to execute with the span\n * @param autoEnd - Whether to automatically end the span after the callback completes\n */\nfunction _startSpan(options, callback, autoEnd) {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n const ctx = shouldSkipSpan ? suppressTracing$1(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n // If spans are not enabled, ensure we suppress tracing for the span creation\n // but preserve the original context for the callback execution\n // This ensures that we don't create spans when tracing is disabled which\n // would otherwise be a problem for users that don't enable tracing but use\n // custom OpenTelemetry setups.\n if (!hasSpansEnabled()) {\n const suppressedCtx = isTracingSuppressed(ctx) ? ctx : suppressTracing$1(ctx);\n\n return context.with(suppressedCtx, () => {\n return tracer.startActiveSpan(name, spanOptions, suppressedCtx, span => {\n // Restore the original unsuppressed context for the callback execution\n // so that custom OpenTelemetry spans maintain the correct context.\n // We use activeCtx (not ctx) because ctx may be suppressed when onlyIfParent is true\n // and no parent span exists. Using activeCtx ensures custom OTel spans are never\n // inadvertently suppressed.\n return context.with(activeCtx, () => {\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n });\n }\n\n return tracer.startActiveSpan(name, spanOptions, ctx, span => {\n return handleCallbackErrors(\n () => callback(span),\n () => {\n // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses\n if (spanToJSON(span).status === undefined) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n },\n autoEnd ? () => span.end() : undefined,\n );\n });\n });\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startSpan(options, callback) {\n return _startSpan(options, callback, true);\n}\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` or the `finish` function passed to the callback manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * You'll always get a span passed to the callback,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startSpanManual(\n options,\n callback,\n) {\n return _startSpan(options, span => callback(span, () => span.end()), false);\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getActiveSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * This function will always return a span,\n * it may just be a non-recording span if the span is not sampled or if tracing is disabled.\n */\nfunction startInactiveSpan(options) {\n const tracer = getTracer();\n\n const { name, parentSpan: customParentSpan } = options;\n\n // If `options.parentSpan` is defined, we want to wrap the callback in `withActiveSpan`\n const wrapper = getActiveSpanWrapper(customParentSpan);\n\n return wrapper(() => {\n const activeCtx = getContext(options.scope, options.forceTransaction);\n const shouldSkipSpan = options.onlyIfParent && !trace.getSpan(activeCtx);\n let ctx = shouldSkipSpan ? suppressTracing$1(activeCtx) : activeCtx;\n\n const spanOptions = getSpanOptions(options);\n\n if (!hasSpansEnabled()) {\n ctx = isTracingSuppressed(ctx) ? ctx : suppressTracing$1(ctx);\n }\n\n return tracer.startSpan(name, spanOptions, ctx);\n });\n}\n\n/**\n * Forks the current scope and sets the provided span as active span in the context of the provided callback. Can be\n * passed `null` to start an entirely new span tree.\n *\n * @param span Spans started in the context of the provided callback will be children of this span. If `null` is passed,\n * spans started within the callback will be root spans.\n * @param callback Execution context in which the provided span will be active. Is passed the newly forked scope.\n * @returns the value returned from the provided callback function.\n */\nfunction withActiveSpan(span, callback) {\n const newContextWithActiveSpan = span ? trace.setSpan(context.active(), span) : trace.deleteSpan(context.active());\n return context.with(newContextWithActiveSpan, () => callback(getCurrentScope()));\n}\n\nfunction getTracer() {\n const client = getClient();\n return client?.tracer || trace.getTracer('@sentry/opentelemetry', SDK_VERSION);\n}\n\nfunction getSpanOptions(options) {\n const { startTime, attributes, kind, op, links } = options;\n\n // OTEL expects timestamps in ms, not seconds\n const fixedStartTime = typeof startTime === 'number' ? ensureTimestampInMilliseconds(startTime) : startTime;\n\n return {\n attributes: op\n ? {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...attributes,\n }\n : attributes,\n kind,\n links,\n startTime: fixedStartTime,\n };\n}\n\nfunction ensureTimestampInMilliseconds(timestamp) {\n const isMs = timestamp < 9999999999;\n return isMs ? timestamp * 1000 : timestamp;\n}\n\nfunction getContext(scope, forceTransaction) {\n const ctx = getContextForScope(scope);\n const parentSpan = trace.getSpan(ctx);\n\n // In the case that we have no parent span, we start a new trace\n // Note that if we continue a trace, we'll always have a remote parent span here anyhow\n if (!parentSpan) {\n return ctx;\n }\n\n // If we don't want to force a transaction, and we have a parent span, all good, we just return as-is!\n if (!forceTransaction) {\n return ctx;\n }\n\n // Else, if we do have a parent span but want to force a transaction, we have to simulate a \"root\" context\n\n // Else, we need to do two things:\n // 1. Unset the parent span from the context, so we'll create a new root span\n // 2. Ensure the propagation context is correct, so we'll continue from the parent span\n const ctxWithoutSpan = trace.deleteSpan(ctx);\n\n const { spanId, traceId } = parentSpan.spanContext();\n const sampled = getSamplingDecision(parentSpan.spanContext());\n\n // In this case, when we are forcing a transaction, we want to treat this like continuing an incoming trace\n // so we set the traceState according to the root span\n const rootSpan = getRootSpan(parentSpan);\n const dsc = getDynamicSamplingContextFromSpan(rootSpan);\n\n const traceState = makeTraceState({\n dsc,\n sampled,\n });\n\n const spanOptions = {\n traceId,\n spanId,\n isRemote: true,\n traceFlags: sampled ? TraceFlags.SAMPLED : TraceFlags.NONE,\n traceState,\n };\n\n const ctxWithSpanContext = trace.setSpanContext(ctxWithoutSpan, spanOptions);\n\n return ctxWithSpanContext;\n}\n\nfunction getContextForScope(scope) {\n if (scope) {\n const ctx = getContextFromScope(scope);\n if (ctx) {\n return ctx;\n }\n }\n\n return context.active();\n}\n\n/**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * This is a custom version of `continueTrace` that is used in OTEL-powered environments.\n * It propagates the trace as a remote span, in addition to setting it on the propagation context.\n */\nfunction continueTrace(options, callback) {\n return continueTraceAsRemoteSpan(context.active(), options, callback);\n}\n\n/**\n * Get the trace context for a given scope.\n * We have a custom implementation here because we need an OTEL-specific way to get the span from a scope.\n */\nfunction getTraceContextForScope(\n client,\n scope,\n) {\n const ctx = getContextFromScope(scope);\n const span = ctx && trace.getSpan(ctx);\n\n const traceContext = span ? spanToTraceContext(span) : getTraceContextFromScope(scope);\n\n const dynamicSamplingContext = span\n ? getDynamicSamplingContextFromSpan(span)\n : getDynamicSamplingContextFromScope(client, scope);\n return [dynamicSamplingContext, traceContext];\n}\n\nfunction getActiveSpanWrapper(parentSpan) {\n return parentSpan !== undefined\n ? (callback) => {\n return withActiveSpan(parentSpan, callback);\n }\n : (callback) => callback();\n}\n\n/** Suppress tracing in the given callback, ensuring no spans are generated inside of it. */\nfunction suppressTracing(callback) {\n const ctx = suppressTracing$1(context.active());\n return context.with(ctx, callback);\n}\n\n/** Ensure the `trace` context is set on all events. */\nfunction setupEventContextTrace(client) {\n client.on('preprocessEvent', event => {\n const span = getActiveSpan();\n // For transaction events, this is handled separately\n // Because the active span may not be the span that is actually the transaction event\n if (!span || event.type === 'transaction') {\n return;\n }\n\n // If event has already set `trace` context, use that one.\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts,\n };\n\n const rootSpan = getRootSpan(span);\n\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(rootSpan),\n ...event.sdkProcessingMetadata,\n };\n\n return event;\n });\n}\n\n/**\n * Otel-specific implementation of `getTraceData`.\n * @see `@sentry/core` version of `getTraceData` for more information\n */\nfunction getTraceData({\n span,\n scope,\n client,\n propagateTraceparent,\n} = {}) {\n let ctx = (scope && getContextFromScope(scope)) ?? api.context.active();\n\n if (span) {\n const { scope } = getCapturedScopesOnSpan(span);\n // fall back to current context if for whatever reason we can't find the one of the span\n ctx = (scope && getContextFromScope(scope)) || api.trace.setSpan(api.context.active(), span);\n }\n\n const { traceId, spanId, sampled, dynamicSamplingContext } = getInjectionData(ctx, { scope, client });\n\n const traceData = {\n 'sentry-trace': generateSentryTraceHeader(traceId, spanId, sampled),\n baggage: dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext),\n };\n\n if (propagateTraceparent) {\n traceData.traceparent = generateTraceparentHeader(traceId, spanId, sampled);\n }\n\n return traceData;\n}\n\n/**\n * Sets the async context strategy to use follow the OTEL context under the hood.\n * We handle forking a hub inside of our custom OTEL Context Manager (./otelContextManager.ts)\n */\nfunction setOpenTelemetryContextAsyncContextStrategy() {\n function getScopes() {\n const ctx = api.context.active();\n const scopes = getScopesFromContext(ctx);\n\n if (scopes) {\n return scopes;\n }\n\n // fallback behavior:\n // if, for whatever reason, we can't find scopes on the context here, we have to fix this somehow\n return {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n function withScope(callback) {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n // as by default, we don't want to fork this, unless triggered explicitly by `withScope`\n return api.context.with(ctx, () => {\n return callback(getCurrentScope());\n });\n }\n\n function withSetScope(scope, callback) {\n const ctx = getContextFromScope(scope) || api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_SET_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which picks up this scope as the current scope\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY, scope), () => {\n return callback(scope);\n });\n }\n\n function withIsolationScope(callback) {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY, true), () => {\n return callback(getIsolationScope());\n });\n }\n\n function withSetIsolationScope(isolationScope, callback) {\n const ctx = api.context.active();\n\n // We depend on the otelContextManager to handle the context/hub\n // We set the `SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY` context value, which is picked up by\n // the OTEL context manager, which uses the presence of this key to determine if it should\n // fork the isolation scope, or not\n return api.context.with(ctx.setValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY, isolationScope), () => {\n return callback(getIsolationScope());\n });\n }\n\n function getCurrentScope() {\n return getScopes().scope;\n }\n\n function getIsolationScope() {\n return getScopes().isolationScope;\n }\n\n setAsyncContextStrategy({\n withScope,\n withSetScope,\n withSetIsolationScope,\n withIsolationScope,\n getCurrentScope,\n getIsolationScope,\n startSpan,\n startSpanManual,\n startInactiveSpan,\n getActiveSpan,\n suppressTracing,\n getTraceData,\n continueTrace,\n // The types here don't fully align, because our own `Span` type is narrower\n // than the OTEL one - but this is OK for here, as we now we'll only have OTEL spans passed around\n withActiveSpan: withActiveSpan ,\n });\n}\n\n/**\n * Wrap an OpenTelemetry ContextManager in a way that ensures the context is kept in sync with the Sentry Scope.\n *\n * Usage:\n * import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\n * const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n * const contextManager = new SentryContextManager();\n */\nfunction wrapContextManagerClass(\n ContextManagerClass,\n) {\n /**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create new scopes per context, so that the OTEL Context & the Sentry Scope are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\n\n // @ts-expect-error TS does not like this, but we know this is fine\n class SentryContextManager extends ContextManagerClass {\n constructor(...args) {\n super(...args);\n setIsSetup('SentryContextManager');\n }\n /**\n * Overwrite with() of the original AsyncLocalStorageContextManager\n * to ensure we also create new scopes per context.\n */\n with(\n context,\n fn,\n thisArg,\n ...args\n ) {\n const currentScopes = getScopesFromContext(context);\n const currentScope = currentScopes?.scope || getCurrentScope();\n const currentIsolationScope = currentScopes?.isolationScope || getIsolationScope();\n\n const shouldForkIsolationScope = context.getValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY) === true;\n const scope = context.getValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY) ;\n const isolationScope = context.getValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY) ;\n\n const newCurrentScope = scope || currentScope.clone();\n const newIsolationScope =\n isolationScope || (shouldForkIsolationScope ? currentIsolationScope.clone() : currentIsolationScope);\n const scopes = { scope: newCurrentScope, isolationScope: newIsolationScope };\n\n const ctx1 = setScopesOnContext(context, scopes);\n\n // Remove the unneeded values again\n const ctx2 = ctx1\n .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)\n .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);\n\n setContextOnScope(newCurrentScope, ctx2);\n\n return super.with(ctx2, fn, thisArg, ...args);\n }\n\n /**\n * Gets underlying AsyncLocalStorage and symbol to allow lookup of scope.\n */\n getAsyncLocalStorageLookup() {\n return {\n // @ts-expect-error This is on the base class, but not part of the interface\n asyncLocalStorage: this._asyncLocalStorage,\n contextSymbol: SENTRY_SCOPES_CONTEXT_KEY,\n };\n }\n }\n\n return SentryContextManager ;\n}\n\n/**\n * This function runs through a list of OTEL Spans, and wraps them in an `SpanNode`\n * where each node holds a reference to their parent node.\n */\nfunction groupSpansWithParents(spans) {\n const nodeMap = new Map();\n\n for (const span of spans) {\n createOrUpdateSpanNodeAndRefs(nodeMap, span);\n }\n\n return Array.from(nodeMap, function ([_id, spanNode]) {\n return spanNode;\n });\n}\n\n/**\n * This returns the _local_ parent ID - `parentId` on the span may point to a remote span.\n */\nfunction getLocalParentId(span) {\n const parentIsRemote = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE] === true;\n // If the parentId is the trace parent ID, we pretend it's undefined\n // As this means the parent exists somewhere else\n return !parentIsRemote ? getParentSpanId(span) : undefined;\n}\n\nfunction createOrUpdateSpanNodeAndRefs(nodeMap, span) {\n const id = span.spanContext().spanId;\n const parentId = getLocalParentId(span);\n\n if (!parentId) {\n createOrUpdateNode(nodeMap, { id, span, children: [] });\n return;\n }\n\n // Else make sure to create parent node as well\n // Note that the parent may not know it's parent _yet_, this may be updated in a later pass\n const parentNode = createOrGetParentNode(nodeMap, parentId);\n const node = createOrUpdateNode(nodeMap, { id, span, parentNode, children: [] });\n parentNode.children.push(node);\n}\n\nfunction createOrGetParentNode(nodeMap, id) {\n const existing = nodeMap.get(id);\n\n if (existing) {\n return existing;\n }\n\n return createOrUpdateNode(nodeMap, { id, children: [] });\n}\n\nfunction createOrUpdateNode(nodeMap, spanNode) {\n const existing = nodeMap.get(spanNode.id);\n\n // If span is already set, nothing to do here\n if (existing?.span) {\n return existing;\n }\n\n // If it exists but span is not set yet, we update it\n if (existing && !existing.span) {\n existing.span = spanNode.span;\n existing.parentNode = spanNode.parentNode;\n return existing;\n }\n\n // Else, we create a new one...\n nodeMap.set(spanNode.id, spanNode);\n return spanNode;\n}\n\n// canonicalCodesGrpcMap maps some GRPC codes to Sentry's span statuses. See description in grpc documentation.\nconst canonicalGrpcErrorCodesMap = {\n '1': 'cancelled',\n '2': 'unknown_error',\n '3': 'invalid_argument',\n '4': 'deadline_exceeded',\n '5': 'not_found',\n '6': 'already_exists',\n '7': 'permission_denied',\n '8': 'resource_exhausted',\n '9': 'failed_precondition',\n '10': 'aborted',\n '11': 'out_of_range',\n '12': 'unimplemented',\n '13': 'internal_error',\n '14': 'unavailable',\n '15': 'data_loss',\n '16': 'unauthenticated',\n} ;\n\nconst isStatusErrorMessageValid = (message) => {\n return Object.values(canonicalGrpcErrorCodesMap).includes(message );\n};\n\n/**\n * Get a Sentry span status from an otel span.\n */\nfunction mapStatus(span) {\n const attributes = spanHasAttributes(span) ? span.attributes : {};\n const status = spanHasStatus(span) ? span.status : undefined;\n\n if (status) {\n // Since span status OK is not set by default, we give it priority: https://opentelemetry.io/docs/concepts/signals/traces/#span-status\n if (status.code === SpanStatusCode.OK) {\n return { code: SPAN_STATUS_OK };\n // If the span is already marked as erroneous we return that exact status\n } else if (status.code === SpanStatusCode.ERROR) {\n if (typeof status.message === 'undefined') {\n const inferredStatus = inferStatusFromAttributes(attributes);\n if (inferredStatus) {\n return inferredStatus;\n }\n }\n\n if (status.message && isStatusErrorMessageValid(status.message)) {\n return { code: SPAN_STATUS_ERROR, message: status.message };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'internal_error' };\n }\n }\n }\n\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n const inferredStatus = inferStatusFromAttributes(attributes);\n\n if (inferredStatus) {\n return inferredStatus;\n }\n\n // We default to setting the spans status to ok.\n if (status?.code === SpanStatusCode.UNSET) {\n return { code: SPAN_STATUS_OK };\n } else {\n return { code: SPAN_STATUS_ERROR, message: 'unknown_error' };\n }\n}\n\nfunction inferStatusFromAttributes(attributes) {\n // If the span status is UNSET, we try to infer it from HTTP or GRPC status codes.\n\n // eslint-disable-next-line deprecation/deprecation\n const httpCodeAttribute = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE];\n // eslint-disable-next-line deprecation/deprecation\n const grpcCodeAttribute = attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n\n const numberHttpCode =\n typeof httpCodeAttribute === 'number'\n ? httpCodeAttribute\n : typeof httpCodeAttribute === 'string'\n ? parseInt(httpCodeAttribute)\n : undefined;\n\n if (typeof numberHttpCode === 'number') {\n return getSpanStatusFromHttpCode(numberHttpCode);\n }\n\n if (typeof grpcCodeAttribute === 'string') {\n return { code: SPAN_STATUS_ERROR, message: canonicalGrpcErrorCodesMap[grpcCodeAttribute] || 'unknown_error' };\n }\n\n return undefined;\n}\n\nconst MAX_SPAN_COUNT = 1000;\nconst DEFAULT_TIMEOUT = 300; // 5 min\n\n/**\n * A Sentry-specific exporter that converts OpenTelemetry Spans to Sentry Spans & Transactions.\n */\nclass SentrySpanExporter {\n /*\n * A quick explanation on the buckets: We do bucketing of finished spans for efficiency. This span exporter is\n * accumulating spans until a root span is encountered and then it flushes all the spans that are descendants of that\n * root span. Because it is totally in the realm of possibilities that root spans are never finished, and we don't\n * want to accumulate spans indefinitely in memory, we need to periodically evacuate spans. Naively we could simply\n * store the spans in an array and each time a new span comes in we could iterate through the entire array and\n * evacuate all spans that have an end-timestamp that is older than our limit. This could get quite expensive because\n * we would have to iterate a potentially large number of spans every time we evacuate. We want to avoid these large\n * bursts of computation.\n *\n * Instead we go for a bucketing approach and put spans into buckets, based on what second\n * (modulo the time limit) the span was put into the exporter. With buckets, when we decide to evacuate, we can\n * iterate through the bucket entries instead, which have an upper bound of items, making the evacuation much more\n * efficient. Cleaning up also becomes much more efficient since it simply involves de-referencing a bucket within the\n * bucket array, and letting garbage collection take care of the rest.\n */\n\n // Essentially a a set of span ids that are already sent. The values are expiration\n // times in this cache so we don't hold onto them indefinitely.\n\n /* Internally, we use a debounced flush to give some wiggle room to the span processor to accumulate more spans. */\n\n constructor(options\n\n) {\n this._finishedSpanBucketSize = options?.timeout || DEFAULT_TIMEOUT;\n this._finishedSpanBuckets = new Array(this._finishedSpanBucketSize).fill(undefined);\n this._lastCleanupTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n this._spansToBucketEntry = new WeakMap();\n this._sentSpans = new Map();\n this._debouncedFlush = debounce(this.flush.bind(this), 1, { maxWait: 100 });\n }\n\n /**\n * Export a single span.\n * This is called by the span processor whenever a span is ended.\n */\n export(span) {\n const currentTimestampInS = Math.floor(_INTERNAL_safeDateNow() / 1000);\n\n if (this._lastCleanupTimestampInS !== currentTimestampInS) {\n let droppedSpanCount = 0;\n this._finishedSpanBuckets.forEach((bucket, i) => {\n if (bucket && bucket.timestampInS <= currentTimestampInS - this._finishedSpanBucketSize) {\n droppedSpanCount += bucket.spans.size;\n this._finishedSpanBuckets[i] = undefined;\n }\n });\n if (droppedSpanCount > 0) {\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter dropped ${droppedSpanCount} spans because they were pending for more than ${this._finishedSpanBucketSize} seconds.`,\n );\n }\n this._lastCleanupTimestampInS = currentTimestampInS;\n }\n\n const currentBucketIndex = currentTimestampInS % this._finishedSpanBucketSize;\n const currentBucket = this._finishedSpanBuckets[currentBucketIndex] || {\n timestampInS: currentTimestampInS,\n spans: new Set(),\n };\n this._finishedSpanBuckets[currentBucketIndex] = currentBucket;\n currentBucket.spans.add(span);\n this._spansToBucketEntry.set(span, currentBucket);\n\n // If the span doesn't have a local parent ID (it's a root span), we're gonna flush all the ended spans\n const localParentId = getLocalParentId(span);\n if (!localParentId || this._sentSpans.has(localParentId)) {\n this._debouncedFlush();\n }\n }\n\n /**\n * Try to flush any pending spans immediately.\n * This is called internally by the exporter (via _debouncedFlush),\n * but can also be triggered externally if we force-flush.\n */\n flush() {\n const finishedSpans = this._finishedSpanBuckets.flatMap(bucket => (bucket ? Array.from(bucket.spans) : []));\n\n this._flushSentSpanCache();\n const sentSpans = this._maybeSend(finishedSpans);\n\n const sentSpanCount = sentSpans.size;\n const remainingOpenSpanCount = finishedSpans.length - sentSpanCount;\n DEBUG_BUILD &&\n debug.log(\n `SpanExporter exported ${sentSpanCount} spans, ${remainingOpenSpanCount} spans are waiting for their parent spans to finish`,\n );\n\n const expirationDate = _INTERNAL_safeDateNow() + DEFAULT_TIMEOUT * 1000;\n\n for (const span of sentSpans) {\n this._sentSpans.set(span.spanContext().spanId, expirationDate);\n const bucketEntry = this._spansToBucketEntry.get(span);\n if (bucketEntry) {\n bucketEntry.spans.delete(span);\n }\n }\n // Cancel a pending debounced flush, if there is one\n // This can be relevant if we directly flush, circumventing the debounce\n // in that case, we want to cancel any pending debounced flush\n this._debouncedFlush.cancel();\n }\n\n /**\n * Clear the exporter.\n * This is called when the span processor is shut down.\n */\n clear() {\n this._finishedSpanBuckets = this._finishedSpanBuckets.fill(undefined);\n this._sentSpans.clear();\n this._debouncedFlush.cancel();\n }\n\n /**\n * Send the given spans, but only if they are part of a finished transaction.\n *\n * Returns the sent spans.\n * Spans remain unsent when their parent span is not yet finished.\n * This will happen regularly, as child spans are generally finished before their parents.\n * But it _could_ also happen because, for whatever reason, a parent span was lost.\n * In this case, we'll eventually need to clean this up.\n */\n _maybeSend(spans) {\n const grouped = groupSpansWithParents(spans);\n const sentSpans = new Set();\n\n const rootNodes = this._getCompletedRootNodes(grouped);\n\n for (const root of rootNodes) {\n const span = root.span;\n sentSpans.add(span);\n const transactionEvent = createTransactionForOtelSpan(span);\n\n // Add an attribute to the transaction event to indicate that this transaction is an orphaned transaction\n if (root.parentNode && this._sentSpans.has(root.parentNode.id)) {\n const traceData = transactionEvent.contexts?.trace?.data;\n if (traceData) {\n traceData['sentry.parent_span_already_sent'] = true;\n }\n }\n\n // We'll recursively add all the child spans to this array\n const spans = transactionEvent.spans || [];\n\n for (const child of root.children) {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n }\n\n // spans.sort() mutates the array, but we do not use this anymore after this point\n // so we can safely mutate it here\n transactionEvent.spans =\n spans.length > MAX_SPAN_COUNT\n ? spans.sort((a, b) => a.start_timestamp - b.start_timestamp).slice(0, MAX_SPAN_COUNT)\n : spans;\n\n const measurements = timedEventsToMeasurements(span.events);\n if (measurements) {\n transactionEvent.measurements = measurements;\n }\n\n captureEvent(transactionEvent);\n }\n\n return sentSpans;\n }\n\n /** Remove \"expired\" span id entries from the _sentSpans cache. */\n _flushSentSpanCache() {\n const currentTimestamp = _INTERNAL_safeDateNow();\n // Note, it is safe to delete items from the map as we go: https://stackoverflow.com/a/35943995/90297\n for (const [spanId, expirationTime] of this._sentSpans.entries()) {\n if (expirationTime <= currentTimestamp) {\n this._sentSpans.delete(spanId);\n }\n }\n }\n\n /** Check if a node is a completed root node or a node whose parent has already been sent */\n _nodeIsCompletedRootNodeOrHasSentParent(node) {\n return !!node.span && (!node.parentNode || this._sentSpans.has(node.parentNode.id));\n }\n\n /** Get all completed root nodes from a list of nodes */\n _getCompletedRootNodes(nodes) {\n // TODO: We should be able to remove the explicit `node is SpanNodeCompleted` type guard\n // once we stop supporting TS < 5.5\n return nodes.filter((node) => this._nodeIsCompletedRootNodeOrHasSentParent(node));\n }\n}\n\nfunction parseSpan(span) {\n const attributes = span.attributes;\n\n const origin = attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ;\n const op = attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] ;\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ;\n\n return { origin, op, source };\n}\n\n/** Exported only for tests. */\nfunction createTransactionForOtelSpan(span) {\n const { op, description, data, origin = 'manual', source } = getSpanData(span);\n const capturedSpanScopes = getCapturedScopesOnSpan(span );\n\n const sampleRate = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ;\n\n const attributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: sampleRate,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n ...data,\n ...removeSentryAttributes(span.attributes),\n };\n\n const { links } = span;\n const { traceId: trace_id, spanId: span_id } = span.spanContext();\n\n // If parentSpanIdFromTraceState is defined at all, we want it to take precedence\n // In that case, an empty string should be interpreted as \"no parent span id\",\n // even if `span.parentSpanId` is set\n // this is the case when we are starting a new trace, where we have a virtual span based on the propagationContext\n // We only want to continue the traceId in this case, but ignore the parent span\n const parent_span_id = getParentSpanId(span);\n\n const status = mapStatus(span);\n\n const traceContext = {\n parent_span_id,\n span_id,\n trace_id,\n data: attributes,\n origin,\n op,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n links: convertSpanLinksForEnvelope(links),\n };\n\n const statusCode = attributes[ATTR_HTTP_RESPONSE_STATUS_CODE];\n const responseContext = typeof statusCode === 'number' ? { response: { status_code: statusCode } } : undefined;\n\n const transactionEvent = {\n contexts: {\n trace: traceContext,\n otel: {\n resource: span.resource.attributes,\n },\n ...responseContext,\n },\n spans: [],\n start_timestamp: spanTimeInputToSeconds(span.startTime),\n timestamp: spanTimeInputToSeconds(span.endTime),\n transaction: description,\n type: 'transaction',\n sdkProcessingMetadata: {\n capturedSpanScope: capturedSpanScopes.scope,\n capturedSpanIsolationScope: capturedSpanScopes.isolationScope,\n sampleRate,\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span ),\n },\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n return transactionEvent;\n}\n\nfunction createAndFinishSpanForOtelSpan(node, spans, sentSpans) {\n const span = node.span;\n\n if (span) {\n sentSpans.add(span);\n }\n\n const shouldDrop = !span;\n\n // If this span should be dropped, we still want to create spans for the children of this\n if (shouldDrop) {\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n return;\n }\n\n const span_id = span.spanContext().spanId;\n const trace_id = span.spanContext().traceId;\n const parentSpanId = getParentSpanId(span);\n\n const { attributes, startTime, endTime, links } = span;\n\n const { op, description, data, origin = 'manual' } = getSpanData(span);\n const allData = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: origin,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: op,\n ...removeSentryAttributes(attributes),\n ...data,\n };\n\n const status = mapStatus(span);\n\n const spanJSON = {\n span_id,\n trace_id,\n data: allData,\n description,\n parent_span_id: parentSpanId,\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || undefined,\n status: getStatusMessage(status), // As per protocol, span status is allowed to be undefined\n op,\n origin,\n measurements: timedEventsToMeasurements(span.events),\n links: convertSpanLinksForEnvelope(links),\n };\n\n spans.push(spanJSON);\n\n node.children.forEach(child => {\n createAndFinishSpanForOtelSpan(child, spans, sentSpans);\n });\n}\n\nfunction getSpanData(span)\n\n {\n const { op: definedOp, source: definedSource, origin } = parseSpan(span);\n const { op: inferredOp, description, source: inferredSource, data: inferredData } = parseSpanDescription(span);\n\n const op = definedOp || inferredOp;\n const source = definedSource || inferredSource;\n\n const data = { ...inferredData, ...getData(span) };\n\n return {\n op,\n description,\n source,\n origin,\n data,\n };\n}\n\n/**\n * Remove custom `sentry.` attributes we do not need to send.\n * These are more carrier attributes we use inside of the SDK, we do not need to send them to the API.\n */\nfunction removeSentryAttributes(data) {\n const cleanedData = { ...data };\n\n /* eslint-disable @typescript-eslint/no-dynamic-delete */\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE];\n delete cleanedData[SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME];\n /* eslint-enable @typescript-eslint/no-dynamic-delete */\n\n return cleanedData;\n}\n\nfunction getData(span) {\n const attributes = span.attributes;\n const data = {};\n\n if (span.kind !== SpanKind.INTERNAL) {\n data['otel.kind'] = SpanKind[span.kind];\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const maybeHttpStatusCodeAttribute = attributes[SEMATTRS_HTTP_STATUS_CODE];\n if (maybeHttpStatusCodeAttribute) {\n data[ATTR_HTTP_RESPONSE_STATUS_CODE] = maybeHttpStatusCodeAttribute ;\n }\n\n const requestData = getRequestSpanData(span);\n\n if (requestData.url) {\n data.url = requestData.url;\n }\n\n if (requestData['http.query']) {\n data['http.query'] = requestData['http.query'].slice(1);\n }\n if (requestData['http.fragment']) {\n data['http.fragment'] = requestData['http.fragment'].slice(1);\n }\n\n return data;\n}\n\nfunction onSpanStart(span, parentContext) {\n // This is a reliable way to get the parent span - because this is exactly how the parent is identified in the OTEL SDK\n const parentSpan = trace.getSpan(parentContext);\n\n let scopes = getScopesFromContext(parentContext);\n\n // We need access to the parent span in order to be able to move up the span tree for breadcrumbs\n if (parentSpan && !parentSpan.spanContext().isRemote) {\n addChildSpanToSpan(parentSpan, span);\n }\n\n // We need this in the span exporter\n if (parentSpan?.spanContext().isRemote) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE, true);\n }\n\n // The root context does not have scopes stored, so we check for this specifically\n // As fallback we attach the global scopes\n if (parentContext === ROOT_CONTEXT) {\n scopes = {\n scope: getDefaultCurrentScope(),\n isolationScope: getDefaultIsolationScope(),\n };\n }\n\n // We need the scope at time of span creation in order to apply it to the event when the span is finished\n if (scopes) {\n setCapturedScopesOnSpan(span, scopes.scope, scopes.isolationScope);\n }\n\n logSpanStart(span);\n\n const client = getClient();\n client?.emit('spanStart', span);\n}\n\nfunction onSpanEnd(span) {\n logSpanEnd(span);\n\n const client = getClient();\n client?.emit('spanEnd', span);\n}\n\n/**\n * Converts OpenTelemetry Spans to Sentry Spans and sends them to Sentry via\n * the Sentry SDK.\n */\nclass SentrySpanProcessor {\n\n constructor(options) {\n setIsSetup('SentrySpanProcessor');\n this._exporter = new SentrySpanExporter(options);\n }\n\n /**\n * @inheritDoc\n */\n async forceFlush() {\n this._exporter.flush();\n }\n\n /**\n * @inheritDoc\n */\n async shutdown() {\n this._exporter.clear();\n }\n\n /**\n * @inheritDoc\n */\n onStart(span, parentContext) {\n onSpanStart(span, parentContext);\n }\n\n /** @inheritDoc */\n onEnd(span) {\n onSpanEnd(span);\n\n this._exporter.export(span);\n }\n}\n\n/**\n * A custom OTEL sampler that uses Sentry sampling rates to make its decision\n */\nclass SentrySampler {\n\n constructor(client) {\n this._client = client;\n setIsSetup('SentrySampler');\n }\n\n /** @inheritDoc */\n shouldSample(\n context,\n traceId,\n spanName,\n spanKind,\n spanAttributes,\n _links,\n ) {\n const options = this._client.getOptions();\n\n const parentSpan = getValidSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n if (!hasSpansEnabled(options)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n // `ATTR_HTTP_REQUEST_METHOD` is the new attribute, but we still support the old one, `SEMATTRS_HTTP_METHOD`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const maybeSpanHttpMethod = spanAttributes[SEMATTRS_HTTP_METHOD] || spanAttributes[ATTR_HTTP_REQUEST_METHOD];\n\n // If we have a http.client span that has no local parent, we never want to sample it\n // but we want to leave downstream sampling decisions up to the server\n if (spanKind === SpanKind.CLIENT && maybeSpanHttpMethod && (!parentSpan || parentContext?.isRemote)) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const parentSampled = parentSpan ? getParentSampled(parentSpan, traceId, spanName) : undefined;\n const isRootSpan = !parentSpan || parentContext?.isRemote;\n\n // We only sample based on parameters (like tracesSampleRate or tracesSampler) for root spans (which is done in sampleSpan).\n // Non-root-spans simply inherit the sampling decision from their parent.\n if (!isRootSpan) {\n return wrapSamplingDecision({\n decision: parentSampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n });\n }\n\n // We want to pass the inferred name & attributes to the sampler method\n const {\n description: inferredSpanName,\n data: inferredAttributes,\n op,\n } = inferSpanData(spanName, spanAttributes, spanKind);\n\n const mergedAttributes = {\n ...inferredAttributes,\n ...spanAttributes,\n };\n\n if (op) {\n mergedAttributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] = op;\n }\n\n const mutableSamplingDecision = { decision: true };\n this._client.emit(\n 'beforeSampling',\n {\n spanAttributes: mergedAttributes,\n spanName: inferredSpanName,\n parentSampled: parentSampled,\n parentContext: parentContext,\n },\n mutableSamplingDecision,\n );\n if (!mutableSamplingDecision.decision) {\n return wrapSamplingDecision({ decision: undefined, context, spanAttributes });\n }\n\n const { isolationScope } = getScopesFromContext(context) ?? {};\n\n const dscString = parentContext?.traceState ? parentContext.traceState.get(SENTRY_TRACE_STATE_DSC) : undefined;\n const dsc = dscString ? baggageHeaderToDynamicSamplingContext(dscString) : undefined;\n\n const sampleRand = parseSampleRate(dsc?.sample_rand) ?? _INTERNAL_safeMathRandom();\n\n const [sampled, sampleRate, localSampleRateWasApplied] = sampleSpan(\n options,\n {\n name: inferredSpanName,\n attributes: mergedAttributes,\n normalizedRequest: isolationScope?.getScopeData().sdkProcessingMetadata.normalizedRequest,\n parentSampled,\n parentSampleRate: parseSampleRate(dsc?.sample_rate),\n },\n sampleRand,\n );\n\n const method = `${maybeSpanHttpMethod}`.toUpperCase();\n if (method === 'OPTIONS' || method === 'HEAD') {\n DEBUG_BUILD && debug.log(`[Tracing] Not sampling span because HTTP method is '${method}' for ${spanName}`);\n\n return wrapSamplingDecision({\n decision: SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: 0, // we don't want to sample anything in the downstream trace either\n });\n }\n\n if (\n !sampled &&\n // We check for `parentSampled === undefined` because we only want to record client reports for spans that are trace roots (ie. when there was incoming trace)\n parentSampled === undefined\n ) {\n DEBUG_BUILD && debug.log('[Tracing] Discarding root span because its trace was not chosen to be sampled.');\n this._client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return {\n ...wrapSamplingDecision({\n decision: sampled ? SamplingDecision.RECORD_AND_SAMPLED : SamplingDecision.NOT_RECORD,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate: localSampleRateWasApplied ? sampleRate : undefined,\n }),\n attributes: {\n // We set the sample rate on the span when a local sample rate was applied to better understand how traces were sampled in Sentry\n [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: localSampleRateWasApplied ? sampleRate : undefined,\n },\n };\n }\n\n /** Returns the sampler name or short description with the configuration. */\n toString() {\n return 'SentrySampler';\n }\n}\n\nfunction getParentSampled(parentSpan, traceId, spanName) {\n const parentContext = parentSpan.spanContext();\n\n // Only inherit sample rate if `traceId` is the same\n // Note for testing: `isSpanContextValid()` checks the format of the traceId/spanId, so we need to pass valid ones\n if (isSpanContextValid(parentContext) && parentContext.traceId === traceId) {\n if (parentContext.isRemote) {\n const parentSampled = getSamplingDecision(parentSpan.spanContext());\n DEBUG_BUILD &&\n debug.log(`[Tracing] Inheriting remote parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n const parentSampled = getSamplingDecision(parentContext);\n DEBUG_BUILD && debug.log(`[Tracing] Inheriting parent's sampled decision for ${spanName}: ${parentSampled}`);\n return parentSampled;\n }\n\n return undefined;\n}\n\n/**\n * Wrap a sampling decision with data that Sentry needs to work properly with it.\n * If you pass `decision: undefined`, it will be treated as `NOT_RECORDING`, but in contrast to passing `NOT_RECORDING`\n * it will not propagate this decision to downstream Sentry SDKs.\n */\nfunction wrapSamplingDecision({\n decision,\n context,\n spanAttributes,\n sampleRand,\n downstreamTraceSampleRate,\n}\n\n) {\n let traceState = getBaseTraceState(context, spanAttributes);\n\n // We will override the propagated sample rate downstream when\n // - the tracesSampleRate is applied\n // - the tracesSampler is invoked\n // Since unsampled OTEL spans (NonRecordingSpans) cannot hold attributes we need to store this on the (trace)context.\n if (downstreamTraceSampleRate !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RATE, `${downstreamTraceSampleRate}`);\n }\n\n if (sampleRand !== undefined) {\n traceState = traceState.set(SENTRY_TRACE_STATE_SAMPLE_RAND, `${sampleRand}`);\n }\n\n // If the decision is undefined, we treat it as NOT_RECORDING, but we don't propagate this decision to downstream SDKs\n // Which is done by not setting `SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING` traceState\n if (decision == undefined) {\n return { decision: SamplingDecision.NOT_RECORD, traceState };\n }\n\n if (decision === SamplingDecision.NOT_RECORD) {\n return { decision, traceState: traceState.set(SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, '1') };\n }\n\n return { decision, traceState };\n}\n\nfunction getBaseTraceState(context, spanAttributes) {\n const parentSpan = trace.getSpan(context);\n const parentContext = parentSpan?.spanContext();\n\n let traceState = parentContext?.traceState || new TraceState();\n\n // We always keep the URL on the trace state, so we can access it in the propagator\n // `ATTR_URL_FULL` is the new attribute, but we still support the old one, `ATTR_HTTP_URL`, for now.\n // eslint-disable-next-line deprecation/deprecation\n const url = spanAttributes[SEMATTRS_HTTP_URL] || spanAttributes[ATTR_URL_FULL];\n if (url && typeof url === 'string') {\n traceState = traceState.set(SENTRY_TRACE_STATE_URL, url);\n }\n\n return traceState;\n}\n\n/**\n * If the active span is invalid, we want to ignore it as parent.\n * This aligns with how otel tracers and default samplers handle these cases.\n */\nfunction getValidSpan(context) {\n const span = trace.getSpan(context);\n return span && isSpanContextValid(span.spanContext()) ? span : undefined;\n}\n\nexport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, SentryPropagator, SentrySampler, SentrySpanProcessor, continueTrace, enhanceDscWithOpenTelemetryRootSpanName, getActiveSpan, getRequestSpanData, getScopesFromContext, getSpanKind, getTraceContextForScope, isSentryRequestSpan, openTelemetrySetupCheck, setOpenTelemetryContextAsyncContextStrategy, setupEventContextTrace, spanHasAttributes, spanHasEvents, spanHasKind, spanHasName, spanHasParentId, spanHasStatus, startInactiveSpan, startSpan, startSpanManual, suppressTracing, withActiveSpan, wrapClientClass, wrapContextManagerClass, wrapSamplingDecision };\n//# sourceMappingURL=index.js.map\n", + "import { diag, DiagLogLevel } from '@opentelemetry/api';\nimport { debug } from '@sentry/core';\n\n/**\n * Setup the OTEL logger to use our own debug logger.\n */\nfunction setupOpenTelemetryLogger() {\n // Disable diag, to ensure this works even if called multiple times\n diag.disable();\n diag.setLogger(\n {\n error: debug.error,\n warn: debug.warn,\n info: debug.log,\n debug: debug.log,\n verbose: debug.log,\n },\n DiagLogLevel.DEBUG,\n );\n}\n\nexport { setupOpenTelemetryLogger };\n//# sourceMappingURL=logger.js.map\n", + "import { registerInstrumentations } from '@opentelemetry/instrumentation';\n\n/** Exported only for tests. */\nconst INSTRUMENTED = {};\n\n/**\n * Instrument an OpenTelemetry instrumentation once.\n * This will skip running instrumentation again if it was already instrumented.\n */\nfunction generateInstrumentOnce(\n name,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n creatorOrClass,\n optionsCallback,\n) {\n if (optionsCallback) {\n return _generateInstrumentOnceWithOptions(\n name,\n creatorOrClass ,\n optionsCallback,\n );\n }\n\n return _generateInstrumentOnce(name, creatorOrClass );\n}\n\n// The plain version without handling of options\n// Should not be used with custom options that are mutated in the creator!\nfunction _generateInstrumentOnce(\n name,\n creator,\n) {\n return Object.assign(\n (options) => {\n const instrumented = INSTRUMENTED[name] ;\n if (instrumented) {\n // If options are provided, ensure we update them\n if (options) {\n instrumented.setConfig(options);\n }\n return instrumented;\n }\n\n const instrumentation = creator(options);\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n// This version handles options properly\nfunction _generateInstrumentOnceWithOptions\n\n(\n name,\n instrumentationClass,\n optionsCallback,\n) {\n return Object.assign(\n (_options) => {\n const options = optionsCallback(_options);\n\n const instrumented = INSTRUMENTED[name] ;\n if (instrumented) {\n // Ensure we update options\n instrumented.setConfig(options);\n return instrumented;\n }\n\n const instrumentation = new instrumentationClass(options) ;\n INSTRUMENTED[name] = instrumentation;\n\n registerInstrumentations({\n instrumentations: [instrumentation],\n });\n\n return instrumentation;\n },\n { id: name },\n );\n}\n\n/**\n * Ensure a given callback is called when the instrumentation is actually wrapping something.\n * This can be used to ensure some logic is only called when the instrumentation is actually active.\n *\n * This function returns a function that can be invoked with a callback.\n * This callback will either be invoked immediately\n * (e.g. if the instrumentation was already wrapped, or if _wrap could not be patched),\n * or once the instrumentation is actually wrapping something.\n *\n * Make sure to call this function right after adding the instrumentation, otherwise it may be too late!\n * The returned callback can be used any time, and also multiple times.\n */\nfunction instrumentWhenWrapped(instrumentation) {\n let isWrapped = false;\n let callbacks = [];\n\n if (!hasWrap(instrumentation)) {\n isWrapped = true;\n } else {\n const originalWrap = instrumentation['_wrap'];\n\n instrumentation['_wrap'] = (...args) => {\n isWrapped = true;\n callbacks.forEach(callback => callback());\n callbacks = [];\n return originalWrap(...args);\n };\n }\n\n const registerCallback = (callback) => {\n if (isWrapped) {\n callback();\n } else {\n callbacks.push(callback);\n }\n };\n\n return registerCallback;\n}\n\nfunction hasWrap(\n instrumentation,\n) {\n return typeof (instrumentation )['_wrap'] === 'function';\n}\n\nexport { INSTRUMENTED, generateInstrumentOnce, instrumentWhenWrapped };\n//# sourceMappingURL=instrument.js.map\n", + "import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport { defineIntegration, addBreadcrumb, captureException } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'ChildProcess';\n\n/**\n * Capture breadcrumbs and events for child processes and worker threads.\n */\nconst childProcessIntegration = defineIntegration((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setup() {\n diagnosticsChannel.channel('child_process').subscribe((event) => {\n if (event && typeof event === 'object' && 'process' in event) {\n captureChildProcessEvents(event.process , options);\n }\n });\n\n diagnosticsChannel.channel('worker_threads').subscribe((event) => {\n if (event && typeof event === 'object' && 'worker' in event) {\n captureWorkerThreadEvents(event.worker , options);\n }\n });\n },\n };\n});\n\nfunction captureChildProcessEvents(child, options) {\n let hasExited = false;\n let data;\n\n child\n .on('spawn', () => {\n // This is Sentry getting macOS OS context\n if (child.spawnfile === '/usr/bin/sw_vers') {\n hasExited = true;\n return;\n }\n\n data = { spawnfile: child.spawnfile };\n if (options.includeChildProcessArgs) {\n data.spawnargs = child.spawnargs;\n }\n })\n .on('exit', code => {\n if (!hasExited) {\n hasExited = true;\n\n // Only log for non-zero exit codes\n if (code !== null && code !== 0) {\n addBreadcrumb({\n category: 'child_process',\n message: `Child process exited with code '${code}'`,\n level: code === 0 ? 'info' : 'warning',\n data,\n });\n }\n }\n })\n .on('error', error => {\n if (!hasExited) {\n hasExited = true;\n\n addBreadcrumb({\n category: 'child_process',\n message: `Child process errored with '${error.message}'`,\n level: 'error',\n data,\n });\n }\n });\n}\n\nfunction captureWorkerThreadEvents(worker, options) {\n let threadId;\n\n worker\n .on('online', () => {\n threadId = worker.threadId;\n })\n .on('error', error => {\n if (options.captureWorkerErrors !== false) {\n captureException(error, {\n mechanism: { type: 'auto.child_process.worker_thread', handled: false, data: { threadId: String(threadId) } },\n });\n } else {\n addBreadcrumb({\n category: 'worker_thread',\n message: `Worker thread errored with '${error.message}'`,\n level: 'error',\n data: { threadId },\n });\n }\n });\n}\n\nexport { childProcessIntegration };\n//# sourceMappingURL=childProcess.js.map\n", + "import { execFile } from 'node:child_process';\nimport { readFile, readdir } from 'node:fs';\nimport * as os from 'node:os';\nimport { join } from 'node:path';\nimport { promisify } from 'node:util';\nimport { defineIntegration } from '@sentry/core';\n\n/* eslint-disable max-lines */\n\n\nconst readFileAsync = promisify(readFile);\nconst readDirAsync = promisify(readdir);\n\n// Process enhanced with methods from Node 18, 20, 22 as @types/node\n// is on `14.18.0` to match minimum version requirements of the SDK\n\nconst INTEGRATION_NAME = 'Context';\n\nconst _nodeContextIntegration = ((options = {}) => {\n let cachedContext;\n\n const _options = {\n app: true,\n os: true,\n device: true,\n culture: true,\n cloudResource: true,\n ...options,\n };\n\n /** Add contexts to the event. Caches the context so we only look it up once. */\n async function addContext(event) {\n if (cachedContext === undefined) {\n cachedContext = _getContexts();\n }\n\n const updatedContext = _updateContext(await cachedContext);\n\n // TODO(v11): conditional with `sendDefaultPii` here?\n event.contexts = {\n ...event.contexts,\n app: { ...updatedContext.app, ...event.contexts?.app },\n os: { ...updatedContext.os, ...event.contexts?.os },\n device: { ...updatedContext.device, ...event.contexts?.device },\n culture: { ...updatedContext.culture, ...event.contexts?.culture },\n cloud_resource: { ...updatedContext.cloud_resource, ...event.contexts?.cloud_resource },\n };\n\n return event;\n }\n\n /** Get the contexts from node. */\n async function _getContexts() {\n const contexts = {};\n\n if (_options.os) {\n contexts.os = await getOsContext();\n }\n\n if (_options.app) {\n contexts.app = getAppContext();\n }\n\n if (_options.device) {\n contexts.device = getDeviceContext(_options.device);\n }\n\n if (_options.culture) {\n const culture = getCultureContext();\n\n if (culture) {\n contexts.culture = culture;\n }\n }\n\n if (_options.cloudResource) {\n contexts.cloud_resource = getCloudResourceContext();\n }\n\n return contexts;\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addContext(event);\n },\n };\n}) ;\n\n/**\n * Capture context about the environment and the device that the client is running on, to events.\n */\nconst nodeContextIntegration = defineIntegration(_nodeContextIntegration);\n\n/**\n * Updates the context with dynamic values that can change\n */\nfunction _updateContext(contexts) {\n // Only update properties if they exist\n\n if (contexts.app?.app_memory) {\n contexts.app.app_memory = process.memoryUsage().rss;\n }\n\n if (contexts.app?.free_memory && typeof (process ).availableMemory === 'function') {\n const freeMemory = (process ).availableMemory?.();\n if (freeMemory != null) {\n contexts.app.free_memory = freeMemory;\n }\n }\n\n if (contexts.device?.free_memory) {\n contexts.device.free_memory = os.freemem();\n }\n\n return contexts;\n}\n\n/**\n * Returns the operating system context.\n *\n * Based on the current platform, this uses a different strategy to provide the\n * most accurate OS information. Since this might involve spawning subprocesses\n * or accessing the file system, this should only be executed lazily and cached.\n *\n * - On macOS (Darwin), this will execute the `sw_vers` utility. The context\n * has a `name`, `version`, `build` and `kernel_version` set.\n * - On Linux, this will try to load a distribution release from `/etc` and set\n * the `name`, `version` and `kernel_version` fields.\n * - On all other platforms, only a `name` and `version` will be returned. Note\n * that `version` might actually be the kernel version.\n */\nasync function getOsContext() {\n const platformId = os.platform();\n switch (platformId) {\n case 'darwin':\n return getDarwinInfo();\n case 'linux':\n return getLinuxInfo();\n default:\n return {\n name: PLATFORM_NAMES[platformId] || platformId,\n version: os.release(),\n };\n }\n}\n\nfunction getCultureContext() {\n try {\n if (typeof process.versions.icu !== 'string') {\n // Node was built without ICU support\n return;\n }\n\n // Check that node was built with full Intl support. Its possible it was built without support for non-English\n // locales which will make resolvedOptions inaccurate\n //\n // https://nodejs.org/api/intl.html#detecting-internationalization-support\n const january = new Date(9e8);\n const spanish = new Intl.DateTimeFormat('es', { month: 'long' });\n if (spanish.format(january) === 'enero') {\n const options = Intl.DateTimeFormat().resolvedOptions();\n\n return {\n locale: options.locale,\n timezone: options.timeZone,\n };\n }\n } catch {\n //\n }\n\n return;\n}\n\n/**\n * Get app context information from process\n */\nfunction getAppContext() {\n const app_memory = process.memoryUsage().rss;\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n const app_start_time = new Date(Date.now() - process.uptime() * 1000).toISOString();\n // https://nodejs.org/api/process.html#processavailablememory\n const appContext = { app_start_time, app_memory };\n\n if (typeof (process ).availableMemory === 'function') {\n const freeMemory = (process ).availableMemory?.();\n if (freeMemory != null) {\n appContext.free_memory = freeMemory;\n }\n }\n\n return appContext;\n}\n\n/**\n * Gets device information from os\n */\nfunction getDeviceContext(deviceOpt) {\n const device = {};\n\n // Sometimes os.uptime() throws due to lacking permissions: https://github.com/getsentry/sentry-javascript/issues/8202\n let uptime;\n try {\n uptime = os.uptime();\n } catch {\n // noop\n }\n\n // os.uptime or its return value seem to be undefined in certain environments (e.g. Azure functions).\n // Hence, we only set boot time, if we get a valid uptime value.\n // @see https://github.com/getsentry/sentry-javascript/issues/5856\n if (typeof uptime === 'number') {\n // oxlint-disable-next-line sdk/no-unsafe-random-apis\n device.boot_time = new Date(Date.now() - uptime * 1000).toISOString();\n }\n\n device.arch = os.arch();\n\n if (deviceOpt === true || deviceOpt.memory) {\n device.memory_size = os.totalmem();\n device.free_memory = os.freemem();\n }\n\n if (deviceOpt === true || deviceOpt.cpu) {\n const cpuInfo = os.cpus() ;\n const firstCpu = cpuInfo?.[0];\n if (firstCpu) {\n device.processor_count = cpuInfo.length;\n device.cpu_description = firstCpu.model;\n device.processor_frequency = firstCpu.speed;\n }\n }\n\n return device;\n}\n\n/** Mapping of Node's platform names to actual OS names. */\nconst PLATFORM_NAMES = {\n aix: 'IBM AIX',\n freebsd: 'FreeBSD',\n openbsd: 'OpenBSD',\n sunos: 'SunOS',\n win32: 'Windows',\n ohos: 'OpenHarmony',\n android: 'Android',\n};\n\n/** Linux version file to check for a distribution. */\n\n/** Mapping of linux release files located in /etc to distributions. */\nconst LINUX_DISTROS = [\n { name: 'fedora-release', distros: ['Fedora'] },\n { name: 'redhat-release', distros: ['Red Hat Linux', 'Centos'] },\n { name: 'redhat_version', distros: ['Red Hat Linux'] },\n { name: 'SuSE-release', distros: ['SUSE Linux'] },\n { name: 'lsb-release', distros: ['Ubuntu Linux', 'Arch Linux'] },\n { name: 'debian_version', distros: ['Debian'] },\n { name: 'debian_release', distros: ['Debian'] },\n { name: 'arch-release', distros: ['Arch Linux'] },\n { name: 'gentoo-release', distros: ['Gentoo Linux'] },\n { name: 'novell-release', distros: ['SUSE Linux'] },\n { name: 'alpine-release', distros: ['Alpine Linux'] },\n];\n\n/** Functions to extract the OS version from Linux release files. */\nconst LINUX_VERSIONS\n\n = {\n alpine: content => content,\n arch: content => matchFirst(/distrib_release=(.*)/, content),\n centos: content => matchFirst(/release ([^ ]+)/, content),\n debian: content => content,\n fedora: content => matchFirst(/release (..)/, content),\n mint: content => matchFirst(/distrib_release=(.*)/, content),\n red: content => matchFirst(/release ([^ ]+)/, content),\n suse: content => matchFirst(/VERSION = (.*)\\n/, content),\n ubuntu: content => matchFirst(/distrib_release=(.*)/, content),\n};\n\n/**\n * Executes a regular expression with one capture group.\n *\n * @param regex A regular expression to execute.\n * @param text Content to execute the RegEx on.\n * @returns The captured string if matched; otherwise undefined.\n */\nfunction matchFirst(regex, text) {\n const match = regex.exec(text);\n return match ? match[1] : undefined;\n}\n\n/** Loads the macOS operating system context. */\nasync function getDarwinInfo() {\n // Default values that will be used in case no operating system information\n // can be loaded. The default version is computed via heuristics from the\n // kernel version, but the build ID is missing.\n const darwinInfo = {\n kernel_version: os.release(),\n name: 'Mac OS X',\n version: `10.${Number(os.release().split('.')[0]) - 4}`,\n };\n\n try {\n // We try to load the actual macOS version by executing the `sw_vers` tool.\n // This tool should be available on every standard macOS installation. In\n // case this fails, we stick with the values computed above.\n\n const output = await new Promise((resolve, reject) => {\n execFile('/usr/bin/sw_vers', (error, stdout) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(stdout);\n });\n });\n\n darwinInfo.name = matchFirst(/^ProductName:\\s+(.*)$/m, output);\n darwinInfo.version = matchFirst(/^ProductVersion:\\s+(.*)$/m, output);\n darwinInfo.build = matchFirst(/^BuildVersion:\\s+(.*)$/m, output);\n } catch {\n // ignore\n }\n\n return darwinInfo;\n}\n\n/** Returns a distribution identifier to look up version callbacks. */\nfunction getLinuxDistroId(name) {\n return (name.split(' ') )[0].toLowerCase();\n}\n\n/** Loads the Linux operating system context. */\nasync function getLinuxInfo() {\n // By default, we cannot assume anything about the distribution or Linux\n // version. `os.release()` returns the kernel version and we assume a generic\n // \"Linux\" name, which will be replaced down below.\n const linuxInfo = {\n kernel_version: os.release(),\n name: 'Linux',\n };\n\n try {\n // We start guessing the distribution by listing files in the /etc\n // directory. This is were most Linux distributions (except Knoppix) store\n // release files with certain distribution-dependent meta data. We search\n // for exactly one known file defined in `LINUX_DISTROS` and exit if none\n // are found. In case there are more than one file, we just stick with the\n // first one.\n const etcFiles = await readDirAsync('/etc');\n const distroFile = LINUX_DISTROS.find(file => etcFiles.includes(file.name));\n if (!distroFile) {\n return linuxInfo;\n }\n\n // Once that file is known, load its contents. To make searching in those\n // files easier, we lowercase the file contents. Since these files are\n // usually quite small, this should not allocate too much memory and we only\n // hold on to it for a very short amount of time.\n const distroPath = join('/etc', distroFile.name);\n const contents = (await readFileAsync(distroPath, { encoding: 'utf-8' })).toLowerCase();\n\n // Some Linux distributions store their release information in the same file\n // (e.g. RHEL and Centos). In those cases, we scan the file for an\n // identifier, that basically consists of the first word of the linux\n // distribution name (e.g. \"red\" for Red Hat). In case there is no match, we\n // just assume the first distribution in our list.\n const { distros } = distroFile;\n linuxInfo.name = distros.find(d => contents.indexOf(getLinuxDistroId(d)) >= 0) || distros[0];\n\n // Based on the found distribution, we can now compute the actual version\n // number. This is different for every distribution, so several strategies\n // are computed in `LINUX_VERSIONS`.\n const id = getLinuxDistroId(linuxInfo.name);\n linuxInfo.version = LINUX_VERSIONS[id]?.(contents);\n } catch {\n // ignore\n }\n\n return linuxInfo;\n}\n\n/**\n * Grabs some information about hosting provider based on best effort.\n */\nfunction getCloudResourceContext() {\n if (process.env.VERCEL) {\n // https://vercel.com/docs/concepts/projects/environment-variables/system-environment-variables#system-environment-variables\n return {\n 'cloud.provider': 'vercel',\n 'cloud.region': process.env.VERCEL_REGION,\n };\n } else if (process.env.AWS_REGION) {\n // https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html\n return {\n 'cloud.provider': 'aws',\n 'cloud.region': process.env.AWS_REGION,\n 'cloud.platform': process.env.AWS_EXECUTION_ENV,\n };\n } else if (process.env.GCP_PROJECT) {\n // https://cloud.google.com/composer/docs/how-to/managing/environment-variables#reserved_variables\n return {\n 'cloud.provider': 'gcp',\n };\n } else if (process.env.ALIYUN_REGION_ID) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'alibaba_cloud',\n 'cloud.region': process.env.ALIYUN_REGION_ID,\n };\n } else if (process.env.WEBSITE_SITE_NAME && process.env.REGION_NAME) {\n // https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet#app-environment\n return {\n 'cloud.provider': 'azure',\n 'cloud.region': process.env.REGION_NAME,\n };\n } else if (process.env.IBM_CLOUD_REGION) {\n // TODO: find where I found these environment variables - at least gc.github.com returns something\n return {\n 'cloud.provider': 'ibm_cloud',\n 'cloud.region': process.env.IBM_CLOUD_REGION,\n };\n } else if (process.env.TENCENTCLOUD_REGION) {\n // https://www.tencentcloud.com/document/product/583/32748\n return {\n 'cloud.provider': 'tencent_cloud',\n 'cloud.region': process.env.TENCENTCLOUD_REGION,\n 'cloud.account.id': process.env.TENCENTCLOUD_APPID,\n 'cloud.availability_zone': process.env.TENCENTCLOUD_ZONE,\n };\n } else if (process.env.NETLIFY) {\n // https://docs.netlify.com/configure-builds/environment-variables/#read-only-variables\n return {\n 'cloud.provider': 'netlify',\n };\n } else if (process.env.FLY_REGION) {\n // https://fly.io/docs/reference/runtime-environment/\n return {\n 'cloud.provider': 'fly.io',\n 'cloud.region': process.env.FLY_REGION,\n };\n } else if (process.env.DYNO) {\n // https://devcenter.heroku.com/articles/dynos#local-environment-variables\n return {\n 'cloud.provider': 'heroku',\n };\n } else {\n return undefined;\n }\n}\n\nexport { getAppContext, getDeviceContext, nodeContextIntegration, readDirAsync, readFileAsync };\n//# sourceMappingURL=context.js.map\n", + "import { createReadStream } from 'node:fs';\nimport { createInterface } from 'node:readline';\nimport { LRUMap, defineIntegration, debug, snipLine } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst LRU_FILE_CONTENTS_CACHE = new LRUMap(10);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new LRUMap(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst INTEGRATION_NAME = 'ContextLines';\n// Determines the upper bound of lineno/colno that we will attempt to read. Large colno values are likely to be\n// minified code while large lineno values are likely to be bundled code.\n// Exported for testing purposes.\nconst MAX_CONTEXTLINES_COLNO = 1000;\nconst MAX_CONTEXTLINES_LINENO = 10000;\n\n/**\n * Get or init map value\n */\nfunction emplace(map, key, contents) {\n const value = map.get(key);\n\n if (value === undefined) {\n map.set(key, contents);\n return contents;\n }\n\n return value;\n}\n\n/**\n * Determines if context lines should be skipped for a file.\n * - .min.(mjs|cjs|js) files are and not useful since they dont point to the original source\n * - node: prefixed modules are part of the runtime and cannot be resolved to a file\n * - data: skip json, wasm and inline js https://nodejs.org/api/esm.html#data-imports\n */\nfunction shouldSkipContextLinesForFile(path) {\n // Test the most common prefix and extension first. These are the ones we\n // are most likely to see in user applications and are the ones we can break out of first.\n if (path.startsWith('node:')) return true;\n if (path.endsWith('.min.js')) return true;\n if (path.endsWith('.min.cjs')) return true;\n if (path.endsWith('.min.mjs')) return true;\n if (path.startsWith('data:')) return true;\n return false;\n}\n\n/**\n * Determines if we should skip contextlines based off the max lineno and colno values.\n */\nfunction shouldSkipContextLinesForFrame(frame) {\n if (frame.lineno !== undefined && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (frame.colno !== undefined && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\n/**\n * Checks if we have all the contents that we need in the cache.\n */\nfunction rangeExistsInContentCache(file, range) {\n const contents = LRU_FILE_CONTENTS_CACHE.get(file);\n if (contents === undefined) return false;\n\n for (let i = range[0]; i <= range[1]; i++) {\n if (contents[i] === undefined) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Creates contiguous ranges of lines to read from a file. In the case where context lines overlap,\n * the ranges are merged to create a single range.\n */\nfunction makeLineReaderRanges(lines, linecontext) {\n if (!lines.length) {\n return [];\n }\n\n let i = 0;\n const line = lines[0];\n\n if (typeof line !== 'number') {\n return [];\n }\n\n let current = makeContextRange(line, linecontext);\n const out = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n\n // If the next line falls into the current range, extend the current range to lineno + linecontext.\n const next = lines[i + 1];\n if (typeof next !== 'number') {\n break;\n }\n if (next <= current[1]) {\n current[1] = next + linecontext;\n } else {\n out.push(current);\n current = makeContextRange(next, linecontext);\n }\n\n i++;\n }\n\n return out;\n}\n\n/**\n * Extracts lines from a file and stores them in a cache.\n */\nfunction getContextLinesFromFile(path, ranges, output) {\n return new Promise((resolve, _reject) => {\n // It is important *not* to have any async code between createInterface and the 'line' event listener\n // as it will cause the 'line' event to\n // be emitted before the listener is attached.\n const stream = createReadStream(path);\n const lineReaded = createInterface({\n input: stream,\n });\n\n // We need to explicitly destroy the stream to prevent memory leaks,\n // removing the listeners on the readline interface is not enough.\n // See: https://github.com/nodejs/node/issues/9002 and https://github.com/getsentry/sentry-javascript/issues/14892\n function destroyStreamAndResolve() {\n stream.destroy();\n resolve();\n }\n\n // Init at zero and increment at the start of the loop because lines are 1 indexed.\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // We should never reach this point, but if we do, we should resolve the promise to prevent it from hanging.\n destroyStreamAndResolve();\n return;\n }\n let rangeStart = range[0];\n let rangeEnd = range[1];\n\n // We use this inside Promise.all, so we need to resolve the promise even if there is an error\n // to prevent Promise.all from short circuiting the rest.\n function onStreamError(e) {\n // Mark file path as failed to read and prevent multiple read attempts.\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);\n DEBUG_BUILD && debug.error(`Failed to read file: ${path}. Error: ${e}`);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve();\n }\n\n // We need to handle the error event to prevent the process from crashing in < Node 16\n // https://github.com/nodejs/node/pull/31603\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', destroyStreamAndResolve);\n\n lineReaded.on('line', line => {\n lineNumber++;\n if (lineNumber < rangeStart) return;\n\n // !Warning: This mutates the cache by storing the snipped line into the cache.\n output[lineNumber] = snipLine(line, 0);\n\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n // We need to close the file stream and remove listeners, else the reader will continue to run our listener;\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (range === undefined) {\n // This should never happen as it means we have a bug in the context.\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\n\n/**\n * Adds surrounding (context) lines of the line that an exception occurred on to the event.\n * This is done by reading the file line by line and extracting the lines. The extracted lines are stored in\n * a cache to prevent multiple reads of the same file. Failures to read a file are similarly cached to prevent multiple\n * failing reads from happening.\n */\n/* eslint-disable complexity */\nasync function addSourceContext(event, contextLines) {\n // keep a lookup map of which files we've already enqueued to read,\n // so we don't enqueue the same file multiple times which would cause multiple i/o reads\n const filesToLines = {};\n\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (!exception.stacktrace?.frames?.length) {\n continue;\n }\n\n // Maps preserve insertion order, so we iterate in reverse, starting at the\n // outermost frame and closer to where the exception has occurred (poor mans priority)\n for (let i = exception.stacktrace.frames.length - 1; i >= 0; i--) {\n const frame = exception.stacktrace.frames[i];\n const filename = frame?.filename;\n\n if (\n !frame ||\n typeof filename !== 'string' ||\n typeof frame.lineno !== 'number' ||\n shouldSkipContextLinesForFile(filename) ||\n shouldSkipContextLinesForFrame(frame)\n ) {\n continue;\n }\n\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n // @ts-expect-error this is defined above\n filesToLines[filename].push(frame.lineno);\n }\n }\n }\n\n const files = Object.keys(filesToLines);\n if (files.length == 0) {\n return event;\n }\n\n const readlinePromises = [];\n for (const file of files) {\n // If we failed to read this before, dont try reading it again.\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) {\n continue;\n }\n\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) {\n continue;\n }\n\n // Sort ranges so that they are sorted by line increasing order and match how the file is read.\n filesToLineRanges.sort((a, b) => a - b);\n // Check if the contents are already in the cache and if we can avoid reading the file again.\n const ranges = makeLineReaderRanges(filesToLineRanges, contextLines);\n if (ranges.every(r => rangeExistsInContentCache(file, r))) {\n continue;\n }\n\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache));\n }\n\n // The promise rejections are caught in order to prevent them from short circuiting Promise.all\n await Promise.all(readlinePromises).catch(() => {\n DEBUG_BUILD && debug.log('Failed to read one or more source files and resolve context lines');\n });\n\n // Perform the same loop as above, but this time we can assume all files are in the cache\n // and attempt to add source context to frames.\n if (contextLines > 0 && event.exception?.values) {\n for (const exception of event.exception.values) {\n if (exception.stacktrace?.frames && exception.stacktrace.frames.length > 0) {\n addSourceContextToFrames(exception.stacktrace.frames, contextLines, LRU_FILE_CONTENTS_CACHE);\n }\n }\n }\n\n return event;\n}\n/* eslint-enable complexity */\n\n/** Adds context lines to frames */\nfunction addSourceContextToFrames(\n frames,\n contextLines,\n cache,\n) {\n for (const frame of frames) {\n // Only add context if we have a filename and it hasn't already been added\n if (frame.filename && frame.context_line === undefined && typeof frame.lineno === 'number') {\n const contents = cache.get(frame.filename);\n if (contents === undefined) {\n continue;\n }\n\n addContextToFrame(frame.lineno, frame, contextLines, contents);\n }\n }\n}\n\n/**\n * Clears the context lines from a frame, used to reset a frame to its original state\n * if we fail to resolve all context lines for it.\n */\nfunction clearLineContext(frame) {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\n\n/**\n * Resolves context lines before and after the given line number and appends them to the frame;\n */\nfunction addContextToFrame(\n lineno,\n frame,\n contextLines,\n contents,\n) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping.\n // We already check for lineno before calling this, but since StackFrame lineno ism optional, we check it again.\n if (frame.lineno === undefined || contents === undefined) {\n DEBUG_BUILD && debug.error('Cannot resolve context for frame with no lineno or file contents');\n return;\n }\n\n frame.pre_context = [];\n for (let i = makeRangeStart(lineno, contextLines); i < lineno; i++) {\n // We always expect the start context as line numbers cannot be negative. If we dont find a line, then\n // something went wrong somewhere. Clear the context and return without adding any linecontext.\n const line = contents[i];\n if (line === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${i} in file ${frame.filename}`);\n return;\n }\n\n frame.pre_context.push(line);\n }\n\n // We should always have the context line. If we dont, something went wrong, so we clear the context and return\n // without adding any linecontext.\n if (contents[lineno] === undefined) {\n clearLineContext(frame);\n DEBUG_BUILD && debug.error(`Could not find line ${lineno} in file ${frame.filename}`);\n return;\n }\n\n frame.context_line = contents[lineno];\n\n const end = makeRangeEnd(lineno, contextLines);\n frame.post_context = [];\n for (let i = lineno + 1; i <= end; i++) {\n // Since we dont track when the file ends, we cant clear the context if we dont find a line as it could\n // just be that we reached the end of the file.\n const line = contents[i];\n if (line === undefined) {\n break;\n }\n frame.post_context.push(line);\n }\n}\n\n// Helper functions for generating line context ranges. They take a line number and the number of lines of context to\n// include before and after the line and generate an inclusive range of indices.\n\n// Compute inclusive end context range\nfunction makeRangeStart(line, linecontext) {\n return Math.max(1, line - linecontext);\n}\n// Compute inclusive start context range\nfunction makeRangeEnd(line, linecontext) {\n return line + linecontext;\n}\n// Determine start and end indices for context range (inclusive);\nfunction makeContextRange(line, linecontext) {\n return [makeRangeStart(line, linecontext), makeRangeEnd(line, linecontext)];\n}\n\n/** Exported only for tests, as a type-safe variant. */\nconst _contextLinesIntegration = ((options = {}) => {\n const contextLines = options.frameContextLines !== undefined ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addSourceContext(event, contextLines);\n },\n };\n}) ;\n\n/**\n * Capture the lines before and after the frame's context.\n */\nconst contextLinesIntegration = defineIntegration(_contextLinesIntegration);\n\nexport { MAX_CONTEXTLINES_COLNO, MAX_CONTEXTLINES_LINENO, _contextLinesIntegration, addContextToFrame, contextLinesIntegration };\n//# sourceMappingURL=contextlines.js.map\n", + "import { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument.js';\nimport { httpServerIntegration } from './httpServerIntegration.js';\nimport { httpServerSpansIntegration } from './httpServerSpansIntegration.js';\nimport { SentryHttpInstrumentation } from './SentryHttpInstrumentation.js';\n\nconst INTEGRATION_NAME = 'Http';\n\nconst instrumentSentryHttp = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n options => {\n return new SentryHttpInstrumentation(options);\n },\n);\n\n/**\n * The http integration instruments Node's internal http and https modules.\n * It creates breadcrumbs for outgoing HTTP requests which will be attached to the currently active span.\n */\nconst httpIntegration = defineIntegration((options = {}) => {\n const serverOptions = {\n sessions: options.trackIncomingRequestsAsSessions,\n sessionFlushingDelayMS: options.sessionFlushingDelayMS,\n ignoreRequestBody: options.ignoreIncomingRequestBody,\n maxRequestBodySize: options.maxIncomingRequestBodySize,\n };\n\n const serverSpansOptions = {\n ignoreIncomingRequests: options.ignoreIncomingRequests,\n ignoreStaticAssets: options.ignoreStaticAssets,\n ignoreStatusCodes: options.dropSpansForIncomingRequestStatusCodes,\n };\n\n const httpInstrumentationOptions = {\n breadcrumbs: options.breadcrumbs,\n propagateTraceInOutgoingRequests: options.tracePropagation ?? true,\n ignoreOutgoingRequests: options.ignoreOutgoingRequests,\n };\n\n const server = httpServerIntegration(serverOptions);\n const serverSpans = httpServerSpansIntegration(serverSpansOptions);\n\n // In node-core, for now we disable incoming requests spans by default\n // we may revisit this in a future release\n const spans = options.spans ?? false;\n const disableIncomingRequestSpans = options.disableIncomingRequestSpans ?? false;\n const enabledServerSpans = spans && !disableIncomingRequestSpans;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (enabledServerSpans) {\n serverSpans.setup(client);\n }\n },\n setupOnce() {\n server.setupOnce();\n\n instrumentSentryHttp(httpInstrumentationOptions);\n },\n\n processEvent(event) {\n // Note: We always run this, even if spans are disabled\n // The reason being that e.g. the remix integration disables span creation here but still wants to use the ignore status codes option\n return serverSpans.processEvent(event);\n },\n };\n});\n\nexport { httpIntegration, instrumentSentryHttp };\n//# sourceMappingURL=index.js.map\n", + "import { Worker } from 'node:worker_threads';\nimport { defineIntegration, debug } from '@sentry/core';\nimport { isDebuggerEnabled } from '../../utils/debug.js';\nimport { LOCAL_VARIABLES_KEY, functionNamesMatch } from './common.js';\n\n// This string is a placeholder that gets overwritten with the worker code.\nconst base64WorkerScript = 'LyohIEBzZW50cnkvbm9kZS1jb3JlIDEwLjQ2LjAgKGU1ZmRjOWQpIHwgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktamF2YXNjcmlwdCAqLwppbXBvcnR7U2Vzc2lvbiBhcyBlfWZyb20ibm9kZTppbnNwZWN0b3IvcHJvbWlzZXMiO2ltcG9ydHt3b3JrZXJEYXRhIGFzIHR9ZnJvbSJub2RlOndvcmtlcl90aHJlYWRzIjtjb25zdCBuPWdsb2JhbFRoaXMsaT17fTtjb25zdCBvPSJfX1NFTlRSWV9FUlJPUl9MT0NBTF9WQVJJQUJMRVNfXyI7Y29uc3QgYT10O2Z1bmN0aW9uIHMoLi4uZSl7YS5kZWJ1ZyYmZnVuY3Rpb24oZSl7aWYoISgiY29uc29sZSJpbiBuKSlyZXR1cm4gZSgpO2NvbnN0IHQ9bi5jb25zb2xlLG89e30sYT1PYmplY3Qua2V5cyhpKTthLmZvckVhY2goZT0+e2NvbnN0IG49aVtlXTtvW2VdPXRbZV0sdFtlXT1ufSk7dHJ5e3JldHVybiBlKCl9ZmluYWxseXthLmZvckVhY2goZT0+e3RbZV09b1tlXX0pfX0oKCk9PmNvbnNvbGUubG9nKCJbTG9jYWxWYXJpYWJsZXMgV29ya2VyXSIsLi4uZSkpfWFzeW5jIGZ1bmN0aW9uIGMoZSx0LG4saSl7Y29uc3Qgbz1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pO2lbbl09by5yZXN1bHQuZmlsdGVyKGU9PiJsZW5ndGgiIT09ZS5uYW1lJiYhaXNOYU4ocGFyc2VJbnQoZS5uYW1lLDEwKSkpLnNvcnQoKGUsdCk9PnBhcnNlSW50KGUubmFtZSwxMCktcGFyc2VJbnQodC5uYW1lLDEwKSkubWFwKGU9PmUudmFsdWU/LnZhbHVlKX1hc3luYyBmdW5jdGlvbiByKGUsdCxuLGkpe2NvbnN0IG89YXdhaXQgZS5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLHtvYmplY3RJZDp0LG93blByb3BlcnRpZXM6ITB9KTtpW25dPW8ucmVzdWx0Lm1hcChlPT5bZS5uYW1lLGUudmFsdWU/LnZhbHVlXSkucmVkdWNlKChlLFt0LG5dKT0+KGVbdF09bixlKSx7fSl9ZnVuY3Rpb24gdShlLHQpe2UudmFsdWUmJigidmFsdWUiaW4gZS52YWx1ZT92b2lkIDA9PT1lLnZhbHVlLnZhbHVlfHxudWxsPT09ZS52YWx1ZS52YWx1ZT90W2UubmFtZV09YDwke2UudmFsdWUudmFsdWV9PmA6dFtlLm5hbWVdPWUudmFsdWUudmFsdWU6ImRlc2NyaXB0aW9uImluIGUudmFsdWUmJiJmdW5jdGlvbiIhPT1lLnZhbHVlLnR5cGU/dFtlLm5hbWVdPWA8JHtlLnZhbHVlLmRlc2NyaXB0aW9ufT5gOiJ1bmRlZmluZWQiPT09ZS52YWx1ZS50eXBlJiYodFtlLm5hbWVdPSI8dW5kZWZpbmVkPiIpKX1hc3luYyBmdW5jdGlvbiBsKGUsdCl7Y29uc3Qgbj1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuZ2V0UHJvcGVydGllcyIse29iamVjdElkOnQsb3duUHJvcGVydGllczohMH0pLGk9e307Zm9yKGNvbnN0IHQgb2Ygbi5yZXN1bHQpaWYodC52YWx1ZT8ub2JqZWN0SWQmJiJBcnJheSI9PT10LnZhbHVlLmNsYXNzTmFtZSl7Y29uc3Qgbj10LnZhbHVlLm9iamVjdElkO2F3YWl0IGMoZSxuLHQubmFtZSxpKX1lbHNlIGlmKHQudmFsdWU/Lm9iamVjdElkJiYiT2JqZWN0Ij09PXQudmFsdWUuY2xhc3NOYW1lKXtjb25zdCBuPXQudmFsdWUub2JqZWN0SWQ7YXdhaXQgcihlLG4sdC5uYW1lLGkpfWVsc2UgdC52YWx1ZSYmdSh0LGkpO3JldHVybiBpfWxldCBmOyhhc3luYyBmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IGU7dC5jb25uZWN0VG9NYWluVGhyZWFkKCkscygiQ29ubmVjdGVkIHRvIG1haW4gdGhyZWFkIik7bGV0IG49ITE7dC5vbigiRGVidWdnZXIucmVzdW1lZCIsKCk9PntuPSExfSksdC5vbigiRGVidWdnZXIucGF1c2VkIixlPT57bj0hMCxhc3luYyBmdW5jdGlvbihlLHtyZWFzb246dCxkYXRhOntvYmplY3RJZDpufSxjYWxsRnJhbWVzOml9KXtpZigiZXhjZXB0aW9uIiE9PXQmJiJwcm9taXNlUmVqZWN0aW9uIiE9PXQpcmV0dXJuO2lmKGY/LigpLG51bGw9PW4pcmV0dXJuO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0e3Njb3BlQ2hhaW46bixmdW5jdGlvbk5hbWU6byx0aGlzOnN9PWlbdF0sYz1uLmZpbmQoZT0+ImxvY2FsIj09PWUudHlwZSkscj0iZ2xvYmFsIiE9PXMuY2xhc3NOYW1lJiZzLmNsYXNzTmFtZT9gJHtzLmNsYXNzTmFtZX0uJHtvfWA6bztpZih2b2lkIDA9PT1jPy5vYmplY3Qub2JqZWN0SWQpYVt0XT17ZnVuY3Rpb246cn07ZWxzZXtjb25zdCBuPWF3YWl0IGwoZSxjLm9iamVjdC5vYmplY3RJZCk7YVt0XT17ZnVuY3Rpb246cix2YXJzOm59fX1hd2FpdCBlLnBvc3QoIlJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24iLHtmdW5jdGlvbkRlY2xhcmF0aW9uOmBmdW5jdGlvbigpIHsgdGhpcy4ke299ID0gdGhpcy4ke299IHx8ICR7SlNPTi5zdHJpbmdpZnkoYSl9OyB9YCxzaWxlbnQ6ITAsb2JqZWN0SWQ6bn0pLGF3YWl0IGUucG9zdCgiUnVudGltZS5yZWxlYXNlT2JqZWN0Iix7b2JqZWN0SWQ6bn0pfSh0LGUucGFyYW1zKS50aGVuKGFzeW5jKCk9PntuJiZhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnJlc3VtZSIpfSxhc3luYyBlPT57biYmYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5yZXN1bWUiKX0pfSksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5lbmFibGUiKTtjb25zdCBpPSExIT09YS5jYXB0dXJlQWxsRXhjZXB0aW9ucztpZihhd2FpdCB0LnBvc3QoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIix7c3RhdGU6aT8iYWxsIjoidW5jYXVnaHQifSksaSl7Y29uc3QgZT1hLm1heEV4Y2VwdGlvbnNQZXJTZWNvbmR8fDUwO2Y9ZnVuY3Rpb24oZSx0LG4pe2xldCBpPTAsbz01LGE9MDtyZXR1cm4gc2V0SW50ZXJ2YWwoKCk9PnswPT09YT9pPmUmJihvKj0yLG4obyksbz44NjQwMCYmKG89ODY0MDApLGE9byk6KGEtPTEsMD09PWEmJnQoKSksaT0wfSwxZTMpLnVucmVmKCksKCk9PntpKz0xfX0oZSxhc3luYygpPT57cygiUmF0ZS1saW1pdCBsaWZ0ZWQuIiksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJhbGwifSl9LGFzeW5jIGU9PntzKGBSYXRlLWxpbWl0IGV4Y2VlZGVkLiBEaXNhYmxpbmcgY2FwdHVyaW5nIG9mIGNhdWdodCBleGNlcHRpb25zIGZvciAke2V9IHNlY29uZHMuYCksYXdhaXQgdC5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIse3N0YXRlOiJ1bmNhdWdodCJ9KX0pfX0pKCkuY2F0Y2goZT0+e3MoIkZhaWxlZCB0byBzdGFydCBkZWJ1Z2dlciIsZSl9KSxzZXRJbnRlcnZhbCgoKT0+e30sMWU0KTs=';\n\nfunction log(...args) {\n debug.log('[LocalVariables]', ...args);\n}\n\n/**\n * Adds local variables to exception frames\n */\nconst localVariablesAsyncIntegration = defineIntegration(((\n integrationOptions = {},\n) => {\n function addLocalVariablesToException(exception, localVariables) {\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const frameLocalVariables = localVariables[i];\n const frame = frames[frameIndex];\n\n if (!frame || !frameLocalVariables) {\n // Drop out if we run out of frames to match up\n break;\n }\n\n if (\n // We need to have vars to add\n frameLocalVariables.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frame.in_app === false && integrationOptions.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frame.function, frameLocalVariables.function)\n ) {\n continue;\n }\n\n frame.vars = frameLocalVariables.vars;\n }\n }\n\n function addLocalVariablesToEvent(event, hint) {\n if (\n hint.originalException &&\n typeof hint.originalException === 'object' &&\n LOCAL_VARIABLES_KEY in hint.originalException &&\n Array.isArray(hint.originalException[LOCAL_VARIABLES_KEY])\n ) {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception, hint.originalException[LOCAL_VARIABLES_KEY]);\n }\n\n hint.originalException[LOCAL_VARIABLES_KEY] = undefined;\n }\n\n return event;\n }\n\n async function startInspector() {\n // We load inspector dynamically because on some platforms Node is built without inspector support\n const inspector = await import('node:inspector');\n if (!inspector.url()) {\n inspector.open(0);\n }\n }\n\n function startWorker(options) {\n const worker = new Worker(new URL(`data:application/javascript;base64,${base64WorkerScript}`), {\n workerData: options,\n // We don't want any Node args to be passed to the worker\n execArgv: [],\n env: { ...process.env, NODE_OPTIONS: undefined },\n });\n\n process.on('exit', () => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n worker.terminate();\n });\n\n worker.once('error', (err) => {\n log('Worker error', err);\n });\n\n worker.once('exit', (code) => {\n log('Worker exit', code);\n });\n\n // Ensure this thread can't block app exit\n worker.unref();\n }\n\n return {\n name: 'LocalVariablesAsync',\n async setup(client) {\n const clientOptions = client.getOptions();\n\n if (!clientOptions.includeLocalVariables) {\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n const options = {\n ...integrationOptions,\n debug: debug.isEnabled(),\n };\n\n startInspector().then(\n () => {\n try {\n startWorker(options);\n } catch (e) {\n debug.error('Failed to start worker', e);\n }\n },\n e => {\n debug.error('Failed to start inspector', e);\n },\n );\n },\n processEvent(event, hint) {\n return addLocalVariablesToEvent(event, hint);\n },\n };\n}) );\n\nexport { base64WorkerScript, localVariablesAsyncIntegration };\n//# sourceMappingURL=local-variables-async.js.map\n", + "let cachedDebuggerEnabled;\n\n/**\n * Was the debugger enabled when this function was first called?\n */\nasync function isDebuggerEnabled() {\n if (cachedDebuggerEnabled === undefined) {\n try {\n // Node can be built without inspector support\n const inspector = await import('node:inspector');\n cachedDebuggerEnabled = !!inspector.url();\n } catch {\n cachedDebuggerEnabled = false;\n }\n }\n\n return cachedDebuggerEnabled;\n}\n\nexport { isDebuggerEnabled };\n//# sourceMappingURL=debug.js.map\n", + "/**\n * The key used to store the local variables on the error object.\n */\nconst LOCAL_VARIABLES_KEY = '__SENTRY_ERROR_LOCAL_VARIABLES__';\n\n/**\n * Creates a rate limiter that will call the disable callback when the rate limit is reached and the enable callback\n * when a timeout has occurred.\n * @param maxPerSecond Maximum number of calls per second\n * @param enable Callback to enable capture\n * @param disable Callback to disable capture\n * @returns A function to call to increment the rate limiter count\n */\nfunction createRateLimiter(\n maxPerSecond,\n enable,\n disable,\n) {\n let count = 0;\n let retrySeconds = 5;\n let disabledTimeout = 0;\n\n setInterval(() => {\n if (disabledTimeout === 0) {\n if (count > maxPerSecond) {\n retrySeconds *= 2;\n disable(retrySeconds);\n\n // Cap at one day\n if (retrySeconds > 86400) {\n retrySeconds = 86400;\n }\n disabledTimeout = retrySeconds;\n }\n } else {\n disabledTimeout -= 1;\n\n if (disabledTimeout === 0) {\n enable();\n }\n }\n\n count = 0;\n }, 1000).unref();\n\n return () => {\n count += 1;\n };\n}\n\n// Add types for the exception event data\n\n/** Could this be an anonymous function? */\nfunction isAnonymous(name) {\n return name !== undefined && (name.length === 0 || name === '?' || name === '');\n}\n\n/** Do the function names appear to match? */\nfunction functionNamesMatch(a, b) {\n return a === b || `Object.${a}` === b || a === `Object.${b}` || (isAnonymous(a) && isAnonymous(b));\n}\n\nexport { LOCAL_VARIABLES_KEY, createRateLimiter, functionNamesMatch, isAnonymous };\n//# sourceMappingURL=common.js.map\n", + "import { defineIntegration, LRUMap, getClient, debug } from '@sentry/core';\nimport { NODE_MAJOR } from '../../nodeVersion.js';\nimport { isDebuggerEnabled } from '../../utils/debug.js';\nimport { createRateLimiter, functionNamesMatch } from './common.js';\n\n/** Creates a unique hash from stack frames */\nfunction hashFrames(frames) {\n if (frames === undefined) {\n return;\n }\n\n // Only hash the 10 most recent frames (ie. the last 10)\n return frames.slice(-10).reduce((acc, frame) => `${acc},${frame.function},${frame.lineno},${frame.colno}`, '');\n}\n\n/**\n * We use the stack parser to create a unique hash from the exception stack trace\n * This is used to lookup vars when the exception passes through the event processor\n */\nfunction hashFromStack(stackParser, stack) {\n if (stack === undefined) {\n return undefined;\n }\n\n return hashFrames(stackParser(stack, 1));\n}\n\n/** Creates a container for callbacks to be called sequentially */\nfunction createCallbackList(complete) {\n // A collection of callbacks to be executed last to first\n let callbacks = [];\n\n let completedCalled = false;\n function checkedComplete(result) {\n callbacks = [];\n if (completedCalled) {\n return;\n }\n completedCalled = true;\n complete(result);\n }\n\n // complete should be called last\n callbacks.push(checkedComplete);\n\n function add(fn) {\n callbacks.push(fn);\n }\n\n function next(result) {\n const popped = callbacks.pop() || checkedComplete;\n\n try {\n popped(result);\n } catch {\n // If there is an error, we still want to call the complete callback\n checkedComplete(result);\n }\n }\n\n return { add, next };\n}\n\n/**\n * Promise API is available as `Experimental` and in Node 19 only.\n *\n * Callback-based API is `Stable` since v14 and `Experimental` since v8.\n * Because of that, we are creating our own `AsyncSession` class.\n *\n * https://nodejs.org/docs/latest-v19.x/api/inspector.html#promises-api\n * https://nodejs.org/docs/latest-v14.x/api/inspector.html\n */\nclass AsyncSession {\n /** Throws if inspector API is not available */\n constructor( _session) {this._session = _session;\n //\n }\n\n static async create(orDefault) {\n if (orDefault) {\n return orDefault;\n }\n\n const inspector = await import('node:inspector');\n return new AsyncSession(new inspector.Session());\n }\n\n /** @inheritdoc */\n configureAndConnect(onPause, captureAll) {\n this._session.connect();\n\n this._session.on('Debugger.paused', event => {\n onPause(event, () => {\n // After the pause work is complete, resume execution or the exception context memory is leaked\n this._session.post('Debugger.resume');\n });\n });\n\n this._session.post('Debugger.enable');\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n setPauseOnExceptions(captureAll) {\n this._session.post('Debugger.setPauseOnExceptions', { state: captureAll ? 'all' : 'uncaught' });\n }\n\n /** @inheritdoc */\n getLocalVariables(objectId, complete) {\n this._getProperties(objectId, props => {\n const { add, next } = createCallbackList(complete);\n\n for (const prop of props) {\n if (prop.value?.objectId && prop.value.className === 'Array') {\n const id = prop.value.objectId;\n add(vars => this._unrollArray(id, prop.name, vars, next));\n } else if (prop.value?.objectId && prop.value.className === 'Object') {\n const id = prop.value.objectId;\n add(vars => this._unrollObject(id, prop.name, vars, next));\n } else if (prop.value) {\n add(vars => this._unrollOther(prop, vars, next));\n }\n }\n\n next({});\n });\n }\n\n /**\n * Gets all the PropertyDescriptors of an object\n */\n _getProperties(objectId, next) {\n this._session.post(\n 'Runtime.getProperties',\n {\n objectId,\n ownProperties: true,\n },\n (err, params) => {\n if (err) {\n next([]);\n } else {\n next(params.result);\n }\n },\n );\n }\n\n /**\n * Unrolls an array property\n */\n _unrollArray(objectId, name, vars, next) {\n this._getProperties(objectId, props => {\n vars[name] = props\n .filter(v => v.name !== 'length' && !isNaN(parseInt(v.name, 10)))\n .sort((a, b) => parseInt(a.name, 10) - parseInt(b.name, 10))\n .map(v => v.value?.value);\n\n next(vars);\n });\n }\n\n /**\n * Unrolls an object property\n */\n _unrollObject(objectId, name, vars, next) {\n this._getProperties(objectId, props => {\n vars[name] = props\n .map(v => [v.name, v.value?.value])\n .reduce((obj, [key, val]) => {\n obj[key] = val;\n return obj;\n }, {} );\n\n next(vars);\n });\n }\n\n /**\n * Unrolls other properties\n */\n _unrollOther(prop, vars, next) {\n if (prop.value) {\n if ('value' in prop.value) {\n if (prop.value.value === undefined || prop.value.value === null) {\n vars[prop.name] = `<${prop.value.value}>`;\n } else {\n vars[prop.name] = prop.value.value;\n }\n } else if ('description' in prop.value && prop.value.type !== 'function') {\n vars[prop.name] = `<${prop.value.description}>`;\n } else if (prop.value.type === 'undefined') {\n vars[prop.name] = '';\n }\n }\n\n next(vars);\n }\n}\n\nconst INTEGRATION_NAME = 'LocalVariables';\n\n/**\n * Adds local variables to exception frames\n */\nconst _localVariablesSyncIntegration = ((\n options = {},\n sessionOverride,\n) => {\n const cachedFrames = new LRUMap(20);\n let rateLimiter;\n let shouldProcessEvent = false;\n\n function addLocalVariablesToException(exception) {\n const hash = hashFrames(exception.stacktrace?.frames);\n\n if (hash === undefined) {\n return;\n }\n\n // Check if we have local variables for an exception that matches the hash\n // remove is identical to get but also removes the entry from the cache\n const cachedFrame = cachedFrames.remove(hash);\n\n if (cachedFrame === undefined) {\n return;\n }\n\n // Filter out frames where the function name is `new Promise` since these are in the error.stack frames\n // but do not appear in the debugger call frames\n const frames = (exception.stacktrace?.frames || []).filter(frame => frame.function !== 'new Promise');\n\n for (let i = 0; i < frames.length; i++) {\n // Sentry frames are in reverse order\n const frameIndex = frames.length - i - 1;\n\n const cachedFrameVariable = cachedFrame[i];\n const frameVariable = frames[frameIndex];\n\n // Drop out if we run out of frames to match up\n if (!frameVariable || !cachedFrameVariable) {\n break;\n }\n\n if (\n // We need to have vars to add\n cachedFrameVariable.vars === undefined ||\n // Only skip out-of-app frames if includeOutOfAppFrames is not true\n (frameVariable.in_app === false && options.includeOutOfAppFrames !== true) ||\n // The function names need to match\n !functionNamesMatch(frameVariable.function, cachedFrameVariable.function)\n ) {\n continue;\n }\n\n frameVariable.vars = cachedFrameVariable.vars;\n }\n }\n\n function addLocalVariablesToEvent(event) {\n for (const exception of event.exception?.values || []) {\n addLocalVariablesToException(exception);\n }\n\n return event;\n }\n\n let setupPromise;\n\n async function setup() {\n const client = getClient();\n const clientOptions = client?.getOptions();\n\n if (!clientOptions?.includeLocalVariables) {\n return;\n }\n\n // Only setup this integration if the Node version is >= v18\n // https://github.com/getsentry/sentry-javascript/issues/7697\n const unsupportedNodeVersion = NODE_MAJOR < 18;\n\n if (unsupportedNodeVersion) {\n debug.log('The `LocalVariables` integration is only supported on Node >= v18.');\n return;\n }\n\n if (await isDebuggerEnabled()) {\n debug.warn('Local variables capture has been disabled because the debugger was already enabled');\n return;\n }\n\n try {\n const session = await AsyncSession.create(sessionOverride);\n\n const handlePaused = (\n stackParser,\n { params: { reason, data, callFrames } },\n complete,\n ) => {\n if (reason !== 'exception' && reason !== 'promiseRejection') {\n complete();\n return;\n }\n\n rateLimiter?.();\n\n // data.description contains the original error.stack\n const exceptionHash = hashFromStack(stackParser, data.description);\n\n if (exceptionHash == undefined) {\n complete();\n return;\n }\n\n const { add, next } = createCallbackList(frames => {\n cachedFrames.set(exceptionHash, frames);\n complete();\n });\n\n // Because we're queuing up and making all these calls synchronously, we can potentially overflow the stack\n // For this reason we only attempt to get local variables for the first 5 frames\n for (let i = 0; i < Math.min(callFrames.length, 5); i++) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { scopeChain, functionName, this: obj } = callFrames[i];\n\n const localScope = scopeChain.find(scope => scope.type === 'local');\n\n // obj.className is undefined in ESM modules\n const fn = obj.className === 'global' || !obj.className ? functionName : `${obj.className}.${functionName}`;\n\n if (localScope?.object.objectId === undefined) {\n add(frames => {\n frames[i] = { function: fn };\n next(frames);\n });\n } else {\n const id = localScope.object.objectId;\n add(frames =>\n session.getLocalVariables(id, vars => {\n frames[i] = { function: fn, vars };\n next(frames);\n }),\n );\n }\n }\n\n next([]);\n };\n\n const captureAll = options.captureAllExceptions !== false;\n\n session.configureAndConnect(\n (ev, complete) =>\n handlePaused(clientOptions.stackParser, ev , complete),\n captureAll,\n );\n\n if (captureAll) {\n const max = options.maxExceptionsPerSecond || 50;\n\n rateLimiter = createRateLimiter(\n max,\n () => {\n debug.log('Local variables rate-limit lifted.');\n session.setPauseOnExceptions(true);\n },\n seconds => {\n debug.log(\n `Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${seconds} seconds.`,\n );\n session.setPauseOnExceptions(false);\n },\n );\n }\n\n shouldProcessEvent = true;\n } catch (error) {\n debug.log('The `LocalVariables` integration failed to start.', error);\n }\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n setupPromise = setup();\n },\n async processEvent(event) {\n await setupPromise;\n\n if (shouldProcessEvent) {\n return addLocalVariablesToEvent(event);\n }\n\n return event;\n },\n // These are entirely for testing\n _getCachedFramesCount() {\n return cachedFrames.size;\n },\n _getFirstCachedFrame() {\n return cachedFrames.values()[0];\n },\n };\n}) ;\n\n/**\n * Adds local variables to exception frames.\n */\nconst localVariablesSyncIntegration = defineIntegration(_localVariablesSyncIntegration);\n\nexport { createCallbackList, hashFrames, hashFromStack, localVariablesSyncIntegration };\n//# sourceMappingURL=local-variables-sync.js.map\n", + "import { NODE_VERSION } from '../../nodeVersion.js';\nimport { localVariablesAsyncIntegration } from './local-variables-async.js';\nimport { localVariablesSyncIntegration } from './local-variables-sync.js';\n\nconst localVariablesIntegration = (options = {}) => {\n return NODE_VERSION.major < 19 ? localVariablesSyncIntegration(options) : localVariablesAsyncIntegration(options);\n};\n\nexport { localVariablesIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { isCjs } from '../utils/detection.js';\n\nlet moduleCache;\n\nconst INTEGRATION_NAME = 'Modules';\n\n/**\n * `__SENTRY_SERVER_MODULES__` can be replaced at build time with the modules loaded by the server.\n * Right now, we leverage this in Next.js to circumvent the problem that we do not get access to these things at runtime.\n */\nconst SERVER_MODULES = typeof __SENTRY_SERVER_MODULES__ === 'undefined' ? {} : __SENTRY_SERVER_MODULES__;\n\nconst _modulesIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n event.modules = {\n ...event.modules,\n ..._getModules(),\n };\n\n return event;\n },\n getModules: _getModules,\n };\n}) ;\n\n/**\n * Add node modules / packages to the event.\n * For this, multiple sources are used:\n * - They can be injected at build time into the __SENTRY_SERVER_MODULES__ variable (e.g. in Next.js)\n * - They are extracted from the dependencies & devDependencies in the package.json file\n * - They are extracted from the require.cache (CJS only)\n */\nconst modulesIntegration = _modulesIntegration;\n\nfunction getRequireCachePaths() {\n try {\n return require.cache ? Object.keys(require.cache ) : [];\n } catch {\n return [];\n }\n}\n\n/** Extract information about package.json modules */\nfunction collectModules() {\n return {\n ...SERVER_MODULES,\n ...getModulesFromPackageJson(),\n ...(isCjs() ? collectRequireModules() : {}),\n };\n}\n\n/** Extract information about package.json modules from require.cache */\nfunction collectRequireModules() {\n const mainPaths = require.main?.paths || [];\n const paths = getRequireCachePaths();\n\n // We start with the modules from package.json (if possible)\n // These may be overwritten by more specific versions from the require.cache\n const infos = {};\n const seen = new Set();\n\n paths.forEach(path => {\n let dir = path;\n\n /** Traverse directories upward in the search of package.json file */\n const updir = () => {\n const orig = dir;\n dir = dirname(orig);\n\n if (!dir || orig === dir || seen.has(orig)) {\n return undefined;\n }\n if (mainPaths.indexOf(dir) < 0) {\n return updir();\n }\n\n const pkgfile = join(orig, 'package.json');\n seen.add(orig);\n\n if (!existsSync(pkgfile)) {\n return updir();\n }\n\n try {\n const info = JSON.parse(readFileSync(pkgfile, 'utf8'))\n\n;\n infos[info.name] = info.version;\n } catch {\n // no-empty\n }\n };\n\n updir();\n });\n\n return infos;\n}\n\n/** Fetches the list of modules and the versions loaded by the entry file for your node.js app. */\nfunction _getModules() {\n if (!moduleCache) {\n moduleCache = collectModules();\n }\n return moduleCache;\n}\n\nfunction getPackageJson() {\n try {\n const filePath = join(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(filePath, 'utf8')) ;\n\n return packageJson;\n } catch {\n return {};\n }\n}\n\nfunction getModulesFromPackageJson() {\n const packageJson = getPackageJson();\n\n return {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n };\n}\n\nexport { modulesIntegration };\n//# sourceMappingURL=modules.js.map\n", + "import { consoleSandbox } from '@sentry/core';\nimport { NODE_MAJOR, NODE_MINOR } from '../nodeVersion.js';\n\n/** Detect CommonJS. */\nfunction isCjs() {\n try {\n // oxlint-disable-next-line typescript/prefer-optional-chain\n return typeof module !== 'undefined' && typeof module.exports !== 'undefined';\n } catch {\n return false;\n }\n}\n\nlet hasWarnedAboutNodeVersion;\n\n/**\n * Check if the current Node.js version supports module.register\n */\nfunction supportsEsmLoaderHooks() {\n if (isCjs()) {\n return false;\n }\n\n if (NODE_MAJOR >= 21 || (NODE_MAJOR === 20 && NODE_MINOR >= 6) || (NODE_MAJOR === 18 && NODE_MINOR >= 19)) {\n return true;\n }\n\n if (!hasWarnedAboutNodeVersion) {\n hasWarnedAboutNodeVersion = true;\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] You are using Node.js v${process.versions.node} in ESM mode (\"import syntax\"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS (\"require() syntax\"), or upgrade your Node.js version.`,\n );\n });\n }\n\n return false;\n}\n\nexport { isCjs, supportsEsmLoaderHooks };\n//# sourceMappingURL=detection.js.map\n", + "import { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument.js';\nimport { SentryNodeFetchInstrumentation } from './SentryNodeFetchInstrumentation.js';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n instrumentSentryNodeFetch(options);\n },\n };\n}) ;\n\nconst nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n\nexport { nativeNodeFetchIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { defineIntegration, getClient, captureException, debug } from '@sentry/core';\nimport { isMainThread } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { logAndExitProcess } from '../utils/errorhandling.js';\n\nconst INTEGRATION_NAME = 'OnUncaughtException';\n\n/**\n * Add a global exception handler.\n */\nconst onUncaughtExceptionIntegration = defineIntegration((options = {}) => {\n const optionsWithDefaults = {\n exitEvenIfOtherHandlersAreRegistered: false,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n // errors in worker threads are already handled by the childProcessIntegration\n // also we don't want to exit the Node process on worker thread errors\n if (!isMainThread) {\n return;\n }\n\n global.process.on('uncaughtException', makeErrorHandler(client, optionsWithDefaults));\n },\n };\n});\n\n/** Exported only for tests */\nfunction makeErrorHandler(client, options) {\n const timeout = 2000;\n let caughtFirstError = false;\n let caughtSecondError = false;\n let calledFatalError = false;\n let firstError;\n\n const clientOptions = client.getOptions();\n\n return Object.assign(\n (error) => {\n let onFatalError = logAndExitProcess;\n\n if (options.onFatalError) {\n onFatalError = options.onFatalError;\n } else if (clientOptions.onFatalError) {\n onFatalError = clientOptions.onFatalError ;\n }\n\n // Attaching a listener to `uncaughtException` will prevent the node process from exiting. We generally do not\n // want to alter this behaviour so we check for other listeners that users may have attached themselves and adjust\n // exit behaviour of the SDK accordingly:\n // - If other listeners are attached, do not exit.\n // - If the only listener attached is ours, exit.\n const userProvidedListenersCount = (global.process.listeners('uncaughtException') ).filter(\n listener => {\n // There are 3 listeners we ignore:\n return (\n // as soon as we're using domains this listener is attached by node itself\n listener.name !== 'domainUncaughtExceptionClear' &&\n // the handler we register for tracing\n listener.tag !== 'sentry_tracingErrorCallback' &&\n // the handler we register in this integration\n (listener )._errorHandler !== true\n );\n },\n ).length;\n\n const processWouldExit = userProvidedListenersCount === 0;\n const shouldApplyFatalHandlingLogic = options.exitEvenIfOtherHandlersAreRegistered || processWouldExit;\n\n if (!caughtFirstError) {\n // this is the first uncaught error and the ultimate reason for shutting down\n // we want to do absolutely everything possible to ensure it gets captured\n // also we want to make sure we don't go recursion crazy if more errors happen after this one\n firstError = error;\n caughtFirstError = true;\n\n if (getClient() === client) {\n captureException(error, {\n originalException: error,\n captureContext: {\n level: 'fatal',\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onuncaughtexception',\n },\n });\n }\n\n if (!calledFatalError && shouldApplyFatalHandlingLogic) {\n calledFatalError = true;\n onFatalError(error);\n }\n } else {\n if (shouldApplyFatalHandlingLogic) {\n if (calledFatalError) {\n // we hit an error *after* calling onFatalError - pretty boned at this point, just shut it down\n DEBUG_BUILD &&\n debug.warn(\n 'uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown',\n );\n logAndExitProcess(error);\n } else if (!caughtSecondError) {\n // two cases for how we can hit this branch:\n // - capturing of first error blew up and we just caught the exception from that\n // - quit trying to capture, proceed with shutdown\n // - a second independent error happened while waiting for first error to capture\n // - want to avoid causing premature shutdown before first error capture finishes\n // it's hard to immediately tell case 1 from case 2 without doing some fancy/questionable domain stuff\n // so let's instead just delay a bit before we proceed with our action here\n // in case 1, we just wait a bit unnecessarily but ultimately do the same thing\n // in case 2, the delay hopefully made us wait long enough for the capture to finish\n // two potential nonideal outcomes:\n // nonideal case 1: capturing fails fast, we sit around for a few seconds unnecessarily before proceeding correctly by calling onFatalError\n // nonideal case 2: case 2 happens, 1st error is captured but slowly, timeout completes before capture and we treat second error as the sendErr of (nonexistent) failure from trying to capture first error\n // note that after hitting this branch, we might catch more errors where (caughtSecondError && !calledFatalError)\n // we ignore them - they don't matter to us, we're just waiting for the second error timeout to finish\n caughtSecondError = true;\n setTimeout(() => {\n if (!calledFatalError) {\n // it was probably case 1, let's treat err as the sendErr and call onFatalError\n calledFatalError = true;\n onFatalError(firstError, error);\n }\n }, timeout); // capturing could take at least sendTimeout to fail, plus an arbitrary second for how long it takes to collect surrounding source etc\n }\n }\n }\n },\n { _errorHandler: true },\n );\n}\n\nexport { makeErrorHandler, onUncaughtExceptionIntegration };\n//# sourceMappingURL=onuncaughtexception.js.map\n", + "import { consoleSandbox, getClient, debug } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst DEFAULT_SHUTDOWN_TIMEOUT = 2000;\n\n/**\n * @hidden\n */\nfunction logAndExitProcess(error) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(error);\n });\n\n const client = getClient();\n\n if (client === undefined) {\n DEBUG_BUILD && debug.warn('No NodeClient was defined, we are exiting the process now.');\n global.process.exit(1);\n return;\n }\n\n const options = client.getOptions();\n const timeout =\n options?.shutdownTimeout && options.shutdownTimeout > 0 ? options.shutdownTimeout : DEFAULT_SHUTDOWN_TIMEOUT;\n client.close(timeout).then(\n (result) => {\n if (!result) {\n DEBUG_BUILD && debug.warn('We reached the timeout for emptying the request buffer, still exiting now!');\n }\n global.process.exit(1);\n },\n error => {\n DEBUG_BUILD && debug.error(error);\n },\n );\n}\n\nexport { logAndExitProcess };\n//# sourceMappingURL=errorhandling.js.map\n", + "import { defineIntegration, getClient, withActiveSpan, consoleSandbox, captureException, isMatchingPattern } from '@sentry/core';\nimport { logAndExitProcess } from '../utils/errorhandling.js';\n\nconst INTEGRATION_NAME = 'OnUnhandledRejection';\n\nconst DEFAULT_IGNORES = [\n {\n name: 'AI_NoOutputGeneratedError', // When stream aborts in Vercel AI SDK V5, Vercel flush() fails with an error\n },\n {\n name: 'AbortError', // When stream aborts in Vercel AI SDK V6\n },\n];\n\nconst _onUnhandledRejectionIntegration = ((options = {}) => {\n const opts = {\n mode: options.mode ?? 'warn',\n ignore: [...DEFAULT_IGNORES, ...(options.ignore ?? [])],\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n global.process.on('unhandledRejection', makeUnhandledPromiseHandler(client, opts));\n },\n };\n}) ;\n\nconst onUnhandledRejectionIntegration = defineIntegration(_onUnhandledRejectionIntegration);\n\n/** Extract error info safely */\nfunction extractErrorInfo(reason) {\n // Check if reason is an object (including Error instances, not just plain objects)\n if (typeof reason !== 'object' || reason === null) {\n return { name: '', message: String(reason ?? '') };\n }\n\n const errorLike = reason ;\n const name = typeof errorLike.name === 'string' ? errorLike.name : '';\n const message = typeof errorLike.message === 'string' ? errorLike.message : String(reason);\n\n return { name, message };\n}\n\n/** Check if a matcher matches the reason */\nfunction isMatchingReason(matcher, errorInfo) {\n // name/message matcher\n const nameMatches = matcher.name === undefined || isMatchingPattern(errorInfo.name, matcher.name, true);\n\n const messageMatches = matcher.message === undefined || isMatchingPattern(errorInfo.message, matcher.message);\n\n return nameMatches && messageMatches;\n}\n\n/** Match helper */\nfunction matchesIgnore(list, reason) {\n const errorInfo = extractErrorInfo(reason);\n return list.some(matcher => isMatchingReason(matcher, errorInfo));\n}\n\n/** Core handler */\nfunction makeUnhandledPromiseHandler(\n client,\n options,\n) {\n return function sendUnhandledPromise(reason, promise) {\n // Only handle for the active client\n if (getClient() !== client) {\n return;\n }\n\n // Skip if configured to ignore\n if (matchesIgnore(options.ignore ?? [], reason)) {\n return;\n }\n\n const level = options.mode === 'strict' ? 'fatal' : 'error';\n\n // this can be set in places where we cannot reliably get access to the active span/error\n // when the error bubbles up to this handler, we can use this to set the active span\n const activeSpanForError =\n reason && typeof reason === 'object' ? (reason )._sentry_active_span : undefined;\n\n const activeSpanWrapper = activeSpanForError\n ? (fn) => withActiveSpan(activeSpanForError, fn)\n : (fn) => fn();\n\n activeSpanWrapper(() => {\n captureException(reason, {\n originalException: promise,\n captureContext: {\n extra: { unhandledPromiseRejection: true },\n level,\n },\n mechanism: {\n handled: false,\n type: 'auto.node.onunhandledrejection',\n },\n });\n });\n\n handleRejection(reason, options.mode);\n };\n}\n\n/**\n * Handler for `mode` option\n */\nfunction handleRejection(reason, mode) {\n // https://github.com/nodejs/node/blob/7cf6f9e964aa00772965391c23acda6d71972a9a/lib/internal/process/promises.js#L234-L240\n const rejectionWarning =\n 'This error originated either by ' +\n 'throwing inside of an async function without a catch block, ' +\n 'or by rejecting a promise which was not handled with .catch().' +\n ' The promise rejected with the reason:';\n\n /* eslint-disable no-console */\n if (mode === 'warn') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n console.error(reason && typeof reason === 'object' && 'stack' in reason ? reason.stack : reason);\n });\n } else if (mode === 'strict') {\n consoleSandbox(() => {\n console.warn(rejectionWarning);\n });\n logAndExitProcess(reason);\n }\n /* eslint-enable no-console */\n}\n\nexport { makeUnhandledPromiseHandler, onUnhandledRejectionIntegration };\n//# sourceMappingURL=onunhandledrejection.js.map\n", + "import { defineIntegration, startSession, getIsolationScope, endSession } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'ProcessSession';\n\n/**\n * Records a Session for the current process to track release health.\n */\nconst processSessionIntegration = defineIntegration(() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n startSession();\n\n // Emitted in the case of healthy sessions, error of `mechanism.handled: true` and unhandledrejections because\n // The 'beforeExit' event is not emitted for conditions causing explicit termination,\n // such as calling process.exit() or uncaught exceptions.\n // Ref: https://nodejs.org/api/process.html#process_event_beforeexit\n process.on('beforeExit', () => {\n const session = getIsolationScope().getSession();\n\n // Only call endSession, if the Session exists on Scope and SessionStatus is not a\n // Terminal Status i.e. Exited or Crashed because\n // \"When a session is moved away from ok it must not be updated anymore.\"\n // Ref: https://develop.sentry.dev/sdk/sessions/\n if (session?.status !== 'ok') {\n endSession();\n }\n });\n },\n };\n});\n\nexport { processSessionIntegration };\n//# sourceMappingURL=processSession.js.map\n", + "import * as http from 'node:http';\nimport { defineIntegration, debug, serializeEnvelope, suppressTracing } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'Spotlight';\n\nconst _spotlightIntegration = ((options = {}) => {\n const _options = {\n sidecarUrl: options.sidecarUrl || 'http://localhost:8969/stream',\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n try {\n if (process.env.NODE_ENV && process.env.NODE_ENV !== 'development') {\n debug.warn(\"[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?\");\n }\n } catch {\n // ignore\n }\n connectToSpotlight(client, _options);\n },\n };\n}) ;\n\n/**\n * Use this integration to send errors and transactions to Spotlight.\n *\n * Learn more about spotlight at https://spotlightjs.com\n *\n * Important: This integration only works with Node 18 or newer.\n */\nconst spotlightIntegration = defineIntegration(_spotlightIntegration);\n\nfunction connectToSpotlight(client, options) {\n const spotlightUrl = parseSidecarUrl(options.sidecarUrl);\n if (!spotlightUrl) {\n return;\n }\n\n let failedRequests = 0;\n\n client.on('beforeEnvelope', (envelope) => {\n if (failedRequests > 3) {\n debug.warn('[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests');\n return;\n }\n\n const serializedEnvelope = serializeEnvelope(envelope);\n suppressTracing(() => {\n const req = http.request(\n {\n method: 'POST',\n path: spotlightUrl.pathname,\n hostname: spotlightUrl.hostname,\n port: spotlightUrl.port,\n headers: {\n 'Content-Type': 'application/x-sentry-envelope',\n },\n },\n res => {\n if (res.statusCode && res.statusCode >= 200 && res.statusCode < 400) {\n // Reset failed requests counter on success\n failedRequests = 0;\n }\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n res.setEncoding('utf8');\n },\n );\n\n req.on('error', () => {\n failedRequests++;\n debug.warn('[Spotlight] Failed to send envelope to Spotlight Sidecar');\n });\n req.write(serializedEnvelope);\n req.end();\n });\n });\n}\n\nfunction parseSidecarUrl(url) {\n try {\n return new URL(`${url}`);\n } catch {\n debug.warn(`[Spotlight] Invalid sidecar URL: ${url}`);\n return undefined;\n }\n}\n\nexport { INTEGRATION_NAME, spotlightIntegration };\n//# sourceMappingURL=spotlight.js.map\n", + "import * as util from 'node:util';\nimport { defineIntegration } from '@sentry/core';\n\nconst INTEGRATION_NAME = 'NodeSystemError';\n\nfunction isSystemError(error) {\n if (!(error instanceof Error)) {\n return false;\n }\n\n if (!('errno' in error) || typeof error.errno !== 'number') {\n return false;\n }\n\n // Appears this is the recommended way to check for Node.js SystemError\n // https://github.com/nodejs/node/issues/46869\n return util.getSystemErrorMap().has(error.errno);\n}\n\n/**\n * Captures context for Node.js SystemError errors.\n */\nconst systemErrorIntegration = defineIntegration((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n processEvent: (event, hint, client) => {\n if (!isSystemError(hint.originalException)) {\n return event;\n }\n\n const error = hint.originalException;\n\n const errorContext = {\n ...(error ),\n };\n\n if (!client.getOptions().sendDefaultPii && options.includePaths !== true) {\n delete errorContext.path;\n delete errorContext.dest;\n }\n\n event.contexts = {\n ...event.contexts,\n node_system_error: errorContext,\n };\n\n for (const exception of event.exception?.values || []) {\n if (exception.value) {\n if (error.path && exception.value.includes(error.path)) {\n exception.value = exception.value.replace(`'${error.path}'`, '').trim();\n }\n if (error.dest && exception.value.includes(error.dest)) {\n exception.value = exception.value.replace(`'${error.dest}'`, '').trim();\n }\n }\n }\n\n return event;\n },\n };\n});\n\nexport { systemErrorIntegration };\n//# sourceMappingURL=systemError.js.map\n", + "import * as http from 'node:http';\nimport * as https from 'node:https';\nimport { Readable } from 'node:stream';\nimport { createGzip } from 'node:zlib';\nimport { consoleSandbox, createTransport, suppressTracing } from '@sentry/core';\nimport { HttpsProxyAgent } from '../proxy/index.js';\n\n// Estimated maximum size for reasonable standalone event\nconst GZIP_THRESHOLD = 1024 * 32;\n\n/**\n * Gets a stream from a Uint8Array or string\n * Readable.from is ideal but was added in node.js v12.3.0 and v10.17.0\n */\nfunction streamFromBody(body) {\n return new Readable({\n read() {\n this.push(body);\n this.push(null);\n },\n });\n}\n\n/**\n * Creates a Transport that uses native the native 'http' and 'https' modules to send events to Sentry.\n */\nfunction makeNodeTransport(options) {\n let urlSegments;\n\n try {\n urlSegments = new URL(options.url);\n } catch (_e) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.',\n );\n });\n return createTransport(options, () => Promise.resolve({}));\n }\n\n const isHttps = urlSegments.protocol === 'https:';\n\n // Proxy prioritization: http => `options.proxy` | `process.env.http_proxy`\n // Proxy prioritization: https => `options.proxy` | `process.env.https_proxy` | `process.env.http_proxy`\n const proxy = applyNoProxyOption(\n urlSegments,\n options.proxy || (isHttps ? process.env.https_proxy : undefined) || process.env.http_proxy,\n );\n\n const nativeHttpModule = isHttps ? https : http;\n const keepAlive = options.keepAlive === undefined ? false : options.keepAlive;\n\n // TODO(v11): Evaluate if we can set keepAlive to true. This would involve testing for memory leaks in older node\n // versions(>= 8) as they had memory leaks when using it: #2555\n const agent = proxy\n ? (new HttpsProxyAgent(proxy) )\n : new nativeHttpModule.Agent({ keepAlive, maxSockets: 30, timeout: 2000 });\n\n const requestExecutor = createRequestExecutor(options, options.httpModule ?? nativeHttpModule, agent);\n return createTransport(options, requestExecutor);\n}\n\n/**\n * Honors the `no_proxy` env variable with the highest priority to allow for hosts exclusion.\n *\n * @param transportUrl The URL the transport intends to send events to.\n * @param proxy The client configured proxy.\n * @returns A proxy the transport should use.\n */\nfunction applyNoProxyOption(transportUrlSegments, proxy) {\n const { no_proxy } = process.env;\n\n const urlIsExemptFromProxy = no_proxy\n ?.split(',')\n .some(\n exemption => transportUrlSegments.host.endsWith(exemption) || transportUrlSegments.hostname.endsWith(exemption),\n );\n\n if (urlIsExemptFromProxy) {\n return undefined;\n } else {\n return proxy;\n }\n}\n\n/**\n * Creates a RequestExecutor to be used with `createTransport`.\n */\nfunction createRequestExecutor(\n options,\n httpModule,\n agent,\n) {\n const { hostname, pathname, port, protocol, search } = new URL(options.url);\n return function makeRequest(request) {\n return new Promise((resolve, reject) => {\n // This ensures we do not generate any spans in OpenTelemetry for the transport\n suppressTracing(() => {\n let body = streamFromBody(request.body);\n\n const headers = { ...options.headers };\n\n if (request.body.length > GZIP_THRESHOLD) {\n headers['content-encoding'] = 'gzip';\n body = body.pipe(createGzip());\n }\n\n const hostnameIsIPv6 = hostname.startsWith('[');\n\n const req = httpModule.request(\n {\n method: 'POST',\n agent,\n headers,\n // Remove \"[\" and \"]\" from IPv6 hostnames\n hostname: hostnameIsIPv6 ? hostname.slice(1, -1) : hostname,\n path: `${pathname}${search}`,\n port,\n protocol,\n ca: options.caCerts,\n },\n res => {\n res.on('data', () => {\n // Drain socket\n });\n\n res.on('end', () => {\n // Drain socket\n });\n\n res.setEncoding('utf8');\n\n // \"Key-value pairs of header names and values. Header names are lower-cased.\"\n // https://nodejs.org/api/http.html#http_message_headers\n const retryAfterHeader = res.headers['retry-after'] ?? null;\n const rateLimitsHeader = res.headers['x-sentry-rate-limits'] ?? null;\n\n resolve({\n statusCode: res.statusCode,\n headers: {\n 'retry-after': retryAfterHeader,\n 'x-sentry-rate-limits': Array.isArray(rateLimitsHeader)\n ? rateLimitsHeader[0] || null\n : rateLimitsHeader,\n },\n });\n },\n );\n\n req.on('error', reject);\n body.pipe(req);\n });\n });\n };\n}\n\nexport { makeNodeTransport };\n//# sourceMappingURL=http.js.map\n", + "import * as net from 'node:net';\nimport * as tls from 'node:tls';\nimport { debug } from '@sentry/core';\nimport { Agent } from './base.js';\nimport { parseProxyResponse } from './parse-proxy-response.js';\n\nfunction debugLog(...args) {\n debug.log('[https-proxy-agent]', ...args);\n}\n\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n */\nclass HttpsProxyAgent extends Agent {\n static __initStatic() {this.protocols = ['http', 'https']; }\n\n constructor(proxy, opts) {\n super(opts);\n this.options = {};\n this.proxy = typeof proxy === 'string' ? new URL(proxy) : proxy;\n this.proxyHeaders = opts?.headers ?? {};\n debugLog('Creating new HttpsProxyAgent instance: %o', this.proxy.href);\n\n // Trim off the brackets from IPv6 addresses\n const host = (this.proxy.hostname || this.proxy.host).replace(/^\\[|\\]$/g, '');\n const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === 'https:' ? 443 : 80;\n this.connectOpts = {\n // Attempt to negotiate http/1.1 for proxy servers that support http/2\n ALPNProtocols: ['http/1.1'],\n ...(opts ? omit(opts, 'headers') : null),\n host,\n port,\n };\n }\n\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n */\n async connect(req, opts) {\n const { proxy } = this;\n\n if (!opts.host) {\n throw new TypeError('No \"host\" provided');\n }\n\n // Create a socket connection to the proxy server.\n let socket;\n if (proxy.protocol === 'https:') {\n debugLog('Creating `tls.Socket`: %o', this.connectOpts);\n const servername = this.connectOpts.servername || this.connectOpts.host;\n socket = tls.connect({\n ...this.connectOpts,\n servername: servername && net.isIP(servername) ? undefined : servername,\n });\n } else {\n debugLog('Creating `net.Socket`: %o', this.connectOpts);\n socket = net.connect(this.connectOpts);\n }\n\n const headers =\n typeof this.proxyHeaders === 'function' ? this.proxyHeaders() : { ...this.proxyHeaders };\n const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;\n let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\\r\\n`;\n\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.username || proxy.password) {\n const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;\n }\n\n headers.Host = `${host}:${opts.port}`;\n\n if (!headers['Proxy-Connection']) {\n headers['Proxy-Connection'] = this.keepAlive ? 'Keep-Alive' : 'close';\n }\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n\n const proxyResponsePromise = parseProxyResponse(socket);\n\n socket.write(`${payload}\\r\\n`);\n\n const { connect, buffered } = await proxyResponsePromise;\n req.emit('proxyConnect', connect);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not EventEmitter in Node types\n this.emit('proxyConnect', connect, req);\n\n if (connect.statusCode === 200) {\n req.once('socket', resume);\n\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debugLog('Upgrading socket connection to TLS');\n const servername = opts.servername || opts.host;\n return tls.connect({\n ...omit(opts, 'host', 'path', 'port'),\n socket,\n servername: net.isIP(servername) ? undefined : servername,\n });\n }\n\n return socket;\n }\n\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n\n const fakeSocket = new net.Socket({ writable: false });\n fakeSocket.readable = true;\n\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debugLog('Replaying proxy buffer for failed request');\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n\n return fakeSocket;\n }\n} HttpsProxyAgent.__initStatic();\n\nfunction resume(socket) {\n socket.resume();\n}\n\nfunction omit(\n obj,\n ...keys\n)\n\n {\n const ret = {}\n\n;\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n\nexport { HttpsProxyAgent };\n//# sourceMappingURL=index.js.map\n", + "import * as http from 'node:http';\nimport 'node:https';\n\n/**\n * This code was originally forked from https://github.com/TooTallNate/proxy-agents/tree/b133295fd16f6475578b6b15bd9b4e33ecb0d0b7\n * With the following LICENSE:\n *\n * (The MIT License)\n *\n * Copyright (c) 2013 Nathan Rajlich *\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:*\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.*\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n\nconst INTERNAL = Symbol('AgentBaseInternalState');\n\nclass Agent extends http.Agent {\n\n // Set by `http.Agent` - missing from `@types/node`\n\n constructor(opts) {\n super(opts);\n this[INTERNAL] = {};\n }\n\n /**\n * Determine whether this is an `http` or `https` request.\n */\n isSecureEndpoint(options) {\n if (options) {\n // First check the `secureEndpoint` property explicitly, since this\n // means that a parent `Agent` is \"passing through\" to this instance.\n if (typeof (options ).secureEndpoint === 'boolean') {\n return options.secureEndpoint;\n }\n\n // If no explicit `secure` endpoint, check if `protocol` property is\n // set. This will usually be the case since using a full string URL\n // or `URL` instance should be the most common usage.\n if (typeof options.protocol === 'string') {\n return options.protocol === 'https:';\n }\n }\n\n // Finally, if no `protocol` property was set, then fall back to\n // checking the stack trace of the current call stack, and try to\n // detect the \"https\" module.\n const { stack } = new Error();\n if (typeof stack !== 'string') return false;\n return stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);\n }\n\n createSocket(req, options, cb) {\n const connectOpts = {\n ...options,\n secureEndpoint: this.isSecureEndpoint(options),\n };\n Promise.resolve()\n .then(() => this.connect(req, connectOpts))\n .then(socket => {\n if (socket instanceof http.Agent) {\n // @ts-expect-error `addRequest()` isn't defined in `@types/node`\n return socket.addRequest(req, connectOpts);\n }\n this[INTERNAL].currentSocket = socket;\n // @ts-expect-error `createSocket()` isn't defined in `@types/node`\n super.createSocket(req, options, cb);\n }, cb);\n }\n\n createConnection() {\n const socket = this[INTERNAL].currentSocket;\n this[INTERNAL].currentSocket = undefined;\n if (!socket) {\n throw new Error('No socket was returned in the `connect()` function');\n }\n return socket;\n }\n\n get defaultPort() {\n return this[INTERNAL].defaultPort ?? (this.protocol === 'https:' ? 443 : 80);\n }\n\n set defaultPort(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].defaultPort = v;\n }\n }\n\n get protocol() {\n return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? 'https:' : 'http:');\n }\n\n set protocol(v) {\n if (this[INTERNAL]) {\n this[INTERNAL].protocol = v;\n }\n }\n}\n\nexport { Agent };\n//# sourceMappingURL=base.js.map\n", + "import { debug } from '@sentry/core';\n\nfunction debugLog(...args) {\n debug.log('[https-proxy-agent:parse-proxy-response]', ...args);\n}\n\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n\n function read() {\n const b = socket.read();\n if (b) ondata(b);\n else socket.once('readable', read);\n }\n\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('readable', read);\n }\n\n function onend() {\n cleanup();\n debugLog('onend');\n reject(new Error('Proxy connection ended before receiving CONNECT response'));\n }\n\n function onerror(err) {\n cleanup();\n debugLog('onerror %o', err);\n reject(err);\n }\n\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n\n if (endOfHeaders === -1) {\n // keep buffering\n debugLog('have not received end of HTTP headers yet...');\n read();\n return;\n }\n\n const headerParts = buffered.subarray(0, endOfHeaders).toString('ascii').split('\\r\\n');\n const firstLine = headerParts.shift();\n if (!firstLine) {\n socket.destroy();\n return reject(new Error('No header received from proxy CONNECT response'));\n }\n const firstLineParts = firstLine.split(' ');\n const statusCode = +(firstLineParts[1] || 0);\n const statusText = firstLineParts.slice(2).join(' ');\n const headers = {};\n for (const header of headerParts) {\n if (!header) continue;\n const firstColon = header.indexOf(':');\n if (firstColon === -1) {\n socket.destroy();\n return reject(new Error(`Invalid header from proxy CONNECT response: \"${header}\"`));\n }\n const key = header.slice(0, firstColon).toLowerCase();\n const value = header.slice(firstColon + 1).trimStart();\n const current = headers[key];\n if (typeof current === 'string') {\n headers[key] = [current, value];\n } else if (Array.isArray(current)) {\n current.push(value);\n } else {\n headers[key] = value;\n }\n }\n debugLog('got proxy server response: %o %o', firstLine, headers);\n cleanup();\n resolve({\n connect: {\n statusCode,\n statusText,\n headers,\n },\n buffered,\n });\n }\n\n socket.on('error', onerror);\n socket.on('end', onend);\n\n read();\n });\n}\n\nexport { parseProxyResponse };\n//# sourceMappingURL=parse-proxy-response.js.map\n", + "import { envToBool } from '@sentry/core';\n\n/**\n * Parse the spotlight option with proper precedence:\n * - `false` or explicit string from options: use as-is\n * - `true`: enable spotlight, but prefer a custom URL from the env var if set\n * - `undefined`: defer entirely to the env var (bool or URL)\n */\nfunction getSpotlightConfig(optionsSpotlight) {\n if (optionsSpotlight === false) {\n return false;\n }\n\n if (typeof optionsSpotlight === 'string') {\n return optionsSpotlight;\n }\n\n // optionsSpotlight is true or undefined\n const envBool = envToBool(process.env.SENTRY_SPOTLIGHT, { strict: true });\n const envUrl = envBool === null && process.env.SENTRY_SPOTLIGHT ? process.env.SENTRY_SPOTLIGHT : undefined;\n\n return optionsSpotlight === true\n ? (envUrl ?? true) // true: use env URL if present, otherwise true\n : (envBool ?? envUrl); // undefined: use env var (bool or URL)\n}\n\nexport { getSpotlightConfig };\n//# sourceMappingURL=spotlight.js.map\n", + "import { posix, sep } from 'node:path';\nimport { dirname } from '@sentry/core';\n\n/** normalizes Windows paths */\nfunction normalizeWindowsPath(path) {\n return path\n .replace(/^[A-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/'); // replace all `\\` instances with `/`\n}\n\n/** Creates a function that gets the module name from a filename */\nfunction createGetModuleFromFilename(\n basePath = process.argv[1] ? dirname(process.argv[1]) : process.cwd(),\n isWindows = sep === '\\\\',\n) {\n const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;\n\n return (filename) => {\n if (!filename) {\n return;\n }\n\n const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;\n\n // eslint-disable-next-line prefer-const\n let { dir, base: file, ext } = posix.parse(normalizedFilename);\n\n if (ext === '.js' || ext === '.mjs' || ext === '.cjs') {\n file = file.slice(0, ext.length * -1);\n }\n\n // The file name might be URI-encoded which we want to decode to\n // the original file name.\n const decodedFile = decodeURIComponent(file);\n\n if (!dir) {\n // No dirname whatsoever\n dir = '.';\n }\n\n const n = dir.lastIndexOf('/node_modules');\n if (n > -1) {\n return `${dir.slice(n + 14).replace(/\\//g, '.')}:${decodedFile}`;\n }\n\n // Let's see if it's a part of the main module\n // To be a part of main module, it has to share the same base\n if (dir.startsWith(normalizedBase)) {\n const moduleName = dir.slice(normalizedBase.length + 1).replace(/\\//g, '.');\n return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;\n }\n\n return decodedFile;\n };\n}\n\nexport { createGetModuleFromFilename };\n//# sourceMappingURL=module.js.map\n", + "import { createStackParser, nodeStackLineParser, GLOBAL_OBJ } from '@sentry/core';\nimport { createGetModuleFromFilename } from '../utils/module.js';\n\n/**\n * Returns a release dynamically from environment variables.\n */\n// eslint-disable-next-line complexity\nfunction getSentryRelease(fallback) {\n // Always read first as Sentry takes this as precedence\n if (process.env.SENTRY_RELEASE) {\n return process.env.SENTRY_RELEASE;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (GLOBAL_OBJ.SENTRY_RELEASE?.id) {\n return GLOBAL_OBJ.SENTRY_RELEASE.id;\n }\n\n // This list is in approximate alpha order, separated into 3 categories:\n // 1. Git providers\n // 2. CI providers with specific environment variables (has the provider name in the variable name)\n // 3. CI providers with generic environment variables (checked for last to prevent possible false positives)\n\n const possibleReleaseNameOfGitProvider =\n // GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables\n process.env['GITHUB_SHA'] ||\n // GitLab CI - https://docs.gitlab.com/ee/ci/variables/predefined_variables.html\n process.env['CI_MERGE_REQUEST_SOURCE_BRANCH_SHA'] ||\n process.env['CI_BUILD_REF'] ||\n process.env['CI_COMMIT_SHA'] ||\n // Bitbucket - https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets/\n process.env['BITBUCKET_COMMIT'];\n\n const possibleReleaseNameOfCiProvidersWithSpecificEnvVar =\n // AppVeyor - https://www.appveyor.com/docs/environment-variables/\n process.env['APPVEYOR_PULL_REQUEST_HEAD_COMMIT'] ||\n process.env['APPVEYOR_REPO_COMMIT'] ||\n // AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html\n process.env['CODEBUILD_RESOLVED_SOURCE_VERSION'] ||\n // AWS Amplify - https://docs.aws.amazon.com/amplify/latest/userguide/environment-variables.html\n process.env['AWS_COMMIT_ID'] ||\n // Azure Pipelines - https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml\n process.env['BUILD_SOURCEVERSION'] ||\n // Bitrise - https://devcenter.bitrise.io/builds/available-environment-variables/\n process.env['GIT_CLONE_COMMIT_HASH'] ||\n // Buddy CI - https://buddy.works/docs/pipelines/environment-variables#default-environment-variables\n process.env['BUDDY_EXECUTION_REVISION'] ||\n // Builtkite - https://buildkite.com/docs/pipelines/environment-variables\n process.env['BUILDKITE_COMMIT'] ||\n // CircleCI - https://circleci.com/docs/variables/\n process.env['CIRCLE_SHA1'] ||\n // Cirrus CI - https://cirrus-ci.org/guide/writing-tasks/#environment-variables\n process.env['CIRRUS_CHANGE_IN_REPO'] ||\n // Codefresh - https://codefresh.io/docs/docs/codefresh-yaml/variables/\n process.env['CF_REVISION'] ||\n // Codemagic - https://docs.codemagic.io/yaml-basic-configuration/environment-variables/\n process.env['CM_COMMIT'] ||\n // Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables\n process.env['CF_PAGES_COMMIT_SHA'] ||\n // Drone - https://docs.drone.io/pipeline/environment/reference/\n process.env['DRONE_COMMIT_SHA'] ||\n // Flightcontrol - https://www.flightcontrol.dev/docs/guides/flightcontrol/environment-variables#built-in-environment-variables\n process.env['FC_GIT_COMMIT_SHA'] ||\n // Heroku #1 https://devcenter.heroku.com/articles/heroku-ci\n process.env['HEROKU_TEST_RUN_COMMIT_VERSION'] ||\n // Heroku #2 https://devcenter.heroku.com/articles/dyno-metadata#dyno-metadata\n process.env['HEROKU_BUILD_COMMIT'] ||\n // Heroku #3 (deprecated by Heroku, kept for backward compatibility)\n process.env['HEROKU_SLUG_COMMIT'] ||\n // Railway - https://docs.railway.app/reference/variables#git-variables\n process.env['RAILWAY_GIT_COMMIT_SHA'] ||\n // Render - https://render.com/docs/environment-variables\n process.env['RENDER_GIT_COMMIT'] ||\n // Semaphore CI - https://docs.semaphoreci.com/ci-cd-environment/environment-variables\n process.env['SEMAPHORE_GIT_SHA'] ||\n // TravisCI - https://docs.travis-ci.com/user/environment-variables/#default-environment-variables\n process.env['TRAVIS_PULL_REQUEST_SHA'] ||\n // Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables\n process.env['VERCEL_GIT_COMMIT_SHA'] ||\n process.env['VERCEL_GITHUB_COMMIT_SHA'] ||\n process.env['VERCEL_GITLAB_COMMIT_SHA'] ||\n process.env['VERCEL_BITBUCKET_COMMIT_SHA'] ||\n // Zeit (now known as Vercel)\n process.env['ZEIT_GITHUB_COMMIT_SHA'] ||\n process.env['ZEIT_GITLAB_COMMIT_SHA'] ||\n process.env['ZEIT_BITBUCKET_COMMIT_SHA'];\n\n const possibleReleaseNameOfCiProvidersWithGenericEnvVar =\n // CloudBees CodeShip - https://docs.cloudbees.com/docs/cloudbees-codeship/latest/pro-builds-and-configuration/environment-variables\n process.env['CI_COMMIT_ID'] ||\n // Coolify - https://coolify.io/docs/knowledge-base/environment-variables\n process.env['SOURCE_COMMIT'] ||\n // Heroku #3 https://devcenter.heroku.com/changelog-items/630\n process.env['SOURCE_VERSION'] ||\n // Jenkins - https://plugins.jenkins.io/git/#environment-variables\n process.env['GIT_COMMIT'] ||\n // Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata\n process.env['COMMIT_REF'] ||\n // TeamCity - https://www.jetbrains.com/help/teamcity/predefined-build-parameters.html\n process.env['BUILD_VCS_NUMBER'] ||\n // Woodpecker CI - https://woodpecker-ci.org/docs/usage/environment\n process.env['CI_COMMIT_SHA'];\n\n return (\n possibleReleaseNameOfGitProvider ||\n possibleReleaseNameOfCiProvidersWithSpecificEnvVar ||\n possibleReleaseNameOfCiProvidersWithGenericEnvVar ||\n fallback\n );\n}\n\n/** Node.js stack parser */\nconst defaultStackParser = createStackParser(nodeStackLineParser(createGetModuleFromFilename()));\n\nexport { defaultStackParser, getSentryRelease };\n//# sourceMappingURL=api.js.map\n", + "import * as os from 'node:os';\nimport { trace } from '@opentelemetry/api';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { ServerRuntimeClient, applySdkMetadata, debug, _INTERNAL_flushLogsBuffer, SDK_VERSION, _INTERNAL_clearAiProviderSkips } from '@sentry/core';\nimport { getTraceContextForScope } from '@sentry/opentelemetry';\nimport { threadId, isMainThread } from 'worker_threads';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS = 60000; // 60s was chosen arbitrarily\n\n/** A client for using Sentry with Node & OpenTelemetry. */\nclass NodeClient extends ServerRuntimeClient {\n\n constructor(options) {\n const serverName =\n options.includeServerName === false\n ? undefined\n : options.serverName || global.process.env.SENTRY_NAME || os.hostname();\n\n const clientOptions = {\n ...options,\n platform: 'node',\n // Use provided runtime or default to 'node' with current process version\n runtime: options.runtime || { name: 'node', version: global.process.version },\n serverName,\n };\n\n if (options.openTelemetryInstrumentations) {\n registerInstrumentations({\n instrumentations: options.openTelemetryInstrumentations,\n });\n }\n\n applySdkMetadata(clientOptions, 'node');\n\n debug.log(`Initializing Sentry: process: ${process.pid}, thread: ${isMainThread ? 'main' : `worker-${threadId}`}.`);\n\n super(clientOptions);\n\n if (this.getOptions().enableLogs) {\n this._logOnExitFlushListener = () => {\n _INTERNAL_flushLogsBuffer(this);\n };\n\n if (serverName) {\n this.on('beforeCaptureLog', log => {\n log.attributes = {\n ...log.attributes,\n 'server.address': serverName,\n };\n });\n }\n\n process.on('beforeExit', this._logOnExitFlushListener);\n }\n }\n\n /** Get the OTEL tracer. */\n get tracer() {\n if (this._tracer) {\n return this._tracer;\n }\n\n const name = '@sentry/node';\n const version = SDK_VERSION;\n const tracer = trace.getTracer(name, version);\n this._tracer = tracer;\n\n return tracer;\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async flush(timeout) {\n await this.traceProvider?.forceFlush();\n\n if (this.getOptions().sendClientReports) {\n this._flushOutcomes();\n }\n\n return super.flush(timeout);\n }\n\n /** @inheritDoc */\n // @ts-expect-error - PromiseLike is a subset of Promise\n async close(timeout) {\n if (this._clientReportInterval) {\n clearInterval(this._clientReportInterval);\n }\n\n if (this._clientReportOnExitFlushListener) {\n process.off('beforeExit', this._clientReportOnExitFlushListener);\n }\n\n if (this._logOnExitFlushListener) {\n process.off('beforeExit', this._logOnExitFlushListener);\n }\n\n const allEventsSent = await super.close(timeout);\n if (this.traceProvider) {\n await this.traceProvider.shutdown();\n }\n\n return allEventsSent;\n }\n\n /**\n * Will start tracking client reports for this client.\n *\n * NOTICE: This method will create an interval that is periodically called and attach a `process.on('beforeExit')`\n * hook. To clean up these resources, call `.close()` when you no longer intend to use the client. Not doing so will\n * result in a memory leak.\n */\n // The reason client reports need to be manually activated with this method instead of just enabling them in a\n // constructor, is that if users periodically and unboundedly create new clients, we will create more and more\n // intervals and beforeExit listeners, thus leaking memory. In these situations, users are required to call\n // `client.close()` in order to dispose of the acquired resources.\n // We assume that calling this method in Sentry.init() is a sensible default, because calling Sentry.init() over and\n // over again would also result in memory leaks.\n // Note: We have experimented with using `FinalizationRegisty` to clear the interval when the client is garbage\n // collected, but it did not work, because the cleanup function never got called.\n startClientReportTracking() {\n const clientOptions = this.getOptions();\n if (clientOptions.sendClientReports) {\n this._clientReportOnExitFlushListener = () => {\n this._flushOutcomes();\n };\n\n this._clientReportInterval = setInterval(() => {\n DEBUG_BUILD && debug.log('Flushing client reports based on interval.');\n this._flushOutcomes();\n }, clientOptions.clientReportFlushInterval ?? DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS)\n // Unref is critical for not preventing the process from exiting because the interval is active.\n .unref();\n\n process.on('beforeExit', this._clientReportOnExitFlushListener);\n }\n }\n\n /** @inheritDoc */\n _setupIntegrations() {\n // Clear AI provider skip registrations before setting up integrations\n // This ensures a clean state between different client initializations\n // (e.g., when LangChain skips OpenAI in one client, but a subsequent client uses OpenAI standalone)\n _INTERNAL_clearAiProviderSkips();\n super._setupIntegrations();\n }\n\n /** Custom implementation for OTEL, so we can handle scope-span linking. */\n _getTraceInfoFromScope(\n scope,\n ) {\n if (!scope) {\n return [undefined, undefined];\n }\n\n return getTraceContextForScope(this, scope);\n }\n}\n\nexport { NodeClient };\n//# sourceMappingURL=client.js.map\n", + "import { GLOBAL_OBJ, debug } from '@sentry/core';\nimport { createAddHookMessageChannel } from 'import-in-the-middle';\nimport * as moduleModule from 'module';\nimport { supportsEsmLoaderHooks } from '../utils/detection.js';\n\n/**\n * Initialize the ESM loader - This method is private and not part of the public\n * API.\n *\n * @ignore\n */\nfunction initializeEsmLoader() {\n if (!supportsEsmLoaderHooks()) {\n return;\n }\n\n if (!GLOBAL_OBJ._sentryEsmLoaderHookRegistered) {\n GLOBAL_OBJ._sentryEsmLoaderHookRegistered = true;\n\n try {\n const { addHookMessagePort } = createAddHookMessageChannel();\n // @ts-expect-error register is available in these versions\n moduleModule.register('import-in-the-middle/hook.mjs', import.meta.url, {\n data: { addHookMessagePort, include: [] },\n transferList: [addHookMessagePort],\n });\n } catch (error) {\n debug.warn(\"Failed to register 'import-in-the-middle' hook\", error);\n }\n }\n}\n\nexport { initializeEsmLoader };\n//# sourceMappingURL=esmLoader.js.map\n", + "import { debug, consoleSandbox, getCurrentScope, applySdkMetadata, envToBool, stackParserFromStackParserOptions, getIntegrationsToSetup, propagationContextFromHeaders, inboundFiltersIntegration, functionToStringIntegration, linkedErrorsIntegration, requestDataIntegration, conversationIdIntegration, consoleIntegration, hasSpansEnabled } from '@sentry/core';\nimport { setOpenTelemetryContextAsyncContextStrategy, enhanceDscWithOpenTelemetryRootSpanName, setupEventContextTrace, openTelemetrySetupCheck } from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { childProcessIntegration } from '../integrations/childProcess.js';\nimport { nodeContextIntegration } from '../integrations/context.js';\nimport { contextLinesIntegration } from '../integrations/contextlines.js';\nimport { httpIntegration } from '../integrations/http/index.js';\nimport { localVariablesIntegration } from '../integrations/local-variables/index.js';\nimport { modulesIntegration } from '../integrations/modules.js';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch/index.js';\nimport { onUncaughtExceptionIntegration } from '../integrations/onuncaughtexception.js';\nimport { onUnhandledRejectionIntegration } from '../integrations/onunhandledrejection.js';\nimport { processSessionIntegration } from '../integrations/processSession.js';\nimport { INTEGRATION_NAME, spotlightIntegration } from '../integrations/spotlight.js';\nimport { systemErrorIntegration } from '../integrations/systemError.js';\nimport { makeNodeTransport } from '../transports/http.js';\nimport { isCjs } from '../utils/detection.js';\nimport { getSpotlightConfig } from '../utils/spotlight.js';\nimport { defaultStackParser, getSentryRelease } from './api.js';\nimport { NodeClient } from './client.js';\nimport { initializeEsmLoader } from './esmLoader.js';\n\n/**\n * Get default integrations for the Node-Core SDK.\n */\nfunction getDefaultIntegrations() {\n return [\n // Common\n // TODO(v11): Replace with `eventFiltersIntegration` once we remove the deprecated `inboundFiltersIntegration`\n // eslint-disable-next-line deprecation/deprecation\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n linkedErrorsIntegration(),\n requestDataIntegration(),\n systemErrorIntegration(),\n conversationIdIntegration(),\n // Native Wrappers\n consoleIntegration(),\n httpIntegration(),\n nativeNodeFetchIntegration(),\n // Global Handlers\n onUncaughtExceptionIntegration(),\n onUnhandledRejectionIntegration(),\n // Event Info\n contextLinesIntegration(),\n localVariablesIntegration(),\n nodeContextIntegration(),\n childProcessIntegration(),\n processSessionIntegration(),\n modulesIntegration(),\n ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nfunction init(options = {}) {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nfunction initWithoutDefaultIntegrations(options = {}) {\n return _init(options, () => []);\n}\n\n/**\n * Initialize Sentry for Node, without performance instrumentation.\n */\nfunction _init(\n _options = {},\n getDefaultIntegrationsImpl,\n) {\n const options = getClientOptions(_options, getDefaultIntegrationsImpl);\n\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n debug.enable();\n } else {\n // use `console.warn` rather than `debug.warn` since by non-debug bundles have all `debug.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n\n if (options.registerEsmLoaderHooks !== false) {\n initializeEsmLoader();\n }\n\n setOpenTelemetryContextAsyncContextStrategy();\n\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n if (options.spotlight && !options.integrations.some(({ name }) => name === INTEGRATION_NAME)) {\n options.integrations.push(\n spotlightIntegration({\n sidecarUrl: typeof options.spotlight === 'string' ? options.spotlight : undefined,\n }),\n );\n }\n\n applySdkMetadata(options, 'node-core');\n\n const client = new NodeClient(options);\n // The client is on the current scope, from where it generally is inherited\n getCurrentScope().setClient(client);\n\n client.init();\n\n debug.log(`SDK initialized from ${isCjs() ? 'CommonJS' : 'ESM'}`);\n\n client.startClientReportTracking();\n\n updateScopeFromEnvVariables();\n\n enhanceDscWithOpenTelemetryRootSpanName(client);\n setupEventContextTrace(client);\n\n // Ensure we flush events when vercel functions are ended\n // See: https://vercel.com/docs/functions/functions-api-reference#sigterm-signal\n if (process.env.VERCEL) {\n process.on('SIGTERM', async () => {\n // We have 500ms for processing here, so we try to make sure to have enough time to send the events\n await client.flush(200);\n });\n }\n\n return client;\n}\n\n/**\n * Validate that your OpenTelemetry setup is correct.\n */\nfunction validateOpenTelemetrySetup() {\n if (!DEBUG_BUILD) {\n return;\n }\n\n const setup = openTelemetrySetupCheck();\n\n const required = ['SentryContextManager', 'SentryPropagator'];\n\n if (hasSpansEnabled()) {\n required.push('SentrySpanProcessor');\n }\n\n for (const k of required) {\n if (!setup.includes(k)) {\n debug.error(\n `You have to set up the ${k}. Without this, the OpenTelemetry & Sentry integration will not work properly.`,\n );\n }\n }\n\n if (!setup.includes('SentrySampler')) {\n debug.warn(\n 'You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.',\n );\n }\n}\n\nfunction getClientOptions(\n options,\n getDefaultIntegrationsImpl,\n) {\n const release = getRelease(options.release);\n\n const spotlight = getSpotlightConfig(options.spotlight);\n\n const tracesSampleRate = getTracesSampleRate(options.tracesSampleRate);\n\n const mergedOptions = {\n ...options,\n dsn: options.dsn ?? process.env.SENTRY_DSN,\n environment: options.environment ?? process.env.SENTRY_ENVIRONMENT,\n sendClientReports: options.sendClientReports ?? true,\n transport: options.transport ?? makeNodeTransport,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n release,\n tracesSampleRate,\n spotlight,\n debug: envToBool(options.debug ?? process.env.SENTRY_DEBUG),\n };\n\n const integrations = options.integrations;\n const defaultIntegrations = options.defaultIntegrations ?? getDefaultIntegrationsImpl(mergedOptions);\n\n return {\n ...mergedOptions,\n integrations: getIntegrationsToSetup({\n defaultIntegrations,\n integrations,\n }),\n };\n}\n\nfunction getRelease(release) {\n if (release !== undefined) {\n return release;\n }\n\n const detectedRelease = getSentryRelease();\n if (detectedRelease !== undefined) {\n return detectedRelease;\n }\n\n return undefined;\n}\n\nfunction getTracesSampleRate(tracesSampleRate) {\n if (tracesSampleRate !== undefined) {\n return tracesSampleRate;\n }\n\n const sampleRateFromEnv = process.env.SENTRY_TRACES_SAMPLE_RATE;\n if (!sampleRateFromEnv) {\n return undefined;\n }\n\n const parsed = parseFloat(sampleRateFromEnv);\n return isFinite(parsed) ? parsed : undefined;\n}\n\n/**\n * Update scope and propagation context based on environmental variables.\n *\n * See https://github.com/getsentry/rfcs/blob/main/text/0071-continue-trace-over-process-boundaries.md\n * for more details.\n */\nfunction updateScopeFromEnvVariables() {\n if (envToBool(process.env.SENTRY_USE_ENVIRONMENT) !== false) {\n const sentryTraceEnv = process.env.SENTRY_TRACE;\n const baggageEnv = process.env.SENTRY_BAGGAGE;\n const propagationContext = propagationContextFromHeaders(sentryTraceEnv, baggageEnv);\n getCurrentScope().setPropagationContext(propagationContext);\n }\n}\n\nexport { getDefaultIntegrations, init, initWithoutDefaultIntegrations, validateOpenTelemetrySetup };\n//# sourceMappingURL=index.js.map\n", + "import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\n\n/** Adds an origin to an OTEL Span. */\nfunction addOriginToSpan(span, origin) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n}\n\nexport { addOriginToSpan };\n//# sourceMappingURL=addOriginToSpan.js.map\n", + "/** Build a full URL from request options or a ClientRequest. */\nfunction getRequestUrl(requestOptions\n\n) {\n const protocol = requestOptions.protocol || '';\n const hostname = requestOptions.hostname || requestOptions.host || '';\n // Don't log standard :80 (http) and :443 (https) ports to reduce the noise\n // Also don't add port if the hostname already includes a port\n const port =\n !requestOptions.port || requestOptions.port === 80 || requestOptions.port === 443 || /^(.*):(\\d+)$/.test(hostname)\n ? ''\n : `:${requestOptions.port}`;\n const path = requestOptions.path ? requestOptions.path : '/';\n return `${protocol}//${hostname}${port}${path}`;\n}\n\nexport { getRequestUrl };\n//# sourceMappingURL=getRequestUrl.js.map\n", + "import { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici';\nimport { defineIntegration, stripDataUrlContent, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getClient, hasSpansEnabled } from '@sentry/core';\nimport { generateInstrumentOnce, SentryNodeFetchInstrumentation } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'NodeFetch';\n\nconst instrumentOtelNodeFetch = generateInstrumentOnce(\n INTEGRATION_NAME,\n UndiciInstrumentation,\n (options) => {\n return _getConfigWithDefaults(options);\n },\n);\n\nconst instrumentSentryNodeFetch = generateInstrumentOnce(\n `${INTEGRATION_NAME}.sentry`,\n SentryNodeFetchInstrumentation,\n (options) => {\n return options;\n },\n);\n\nconst _nativeNodeFetchIntegration = ((options = {}) => {\n return {\n name: 'NodeFetch',\n setupOnce() {\n const instrumentSpans = _shouldInstrumentSpans(options, getClient()?.getOptions());\n\n // This is the \"regular\" OTEL instrumentation that emits spans\n if (instrumentSpans) {\n instrumentOtelNodeFetch(options);\n }\n\n // This is the Sentry-specific instrumentation that creates breadcrumbs & propagates traces\n // This must be registered after the OTEL one, to ensure that the core trace propagation logic takes presedence\n // Otherwise, the sentry-trace header may be set multiple times\n instrumentSentryNodeFetch(options);\n },\n };\n}) ;\n\nconst nativeNodeFetchIntegration = defineIntegration(_nativeNodeFetchIntegration);\n\n// Matching the behavior of the base instrumentation\nfunction getAbsoluteUrl(origin, path = '/') {\n const url = `${origin}`;\n\n if (url.endsWith('/') && path.startsWith('/')) {\n return `${url}${path.slice(1)}`;\n }\n\n if (!url.endsWith('/') && !path.startsWith('/')) {\n return `${url}/${path}`;\n }\n\n return `${url}${path}`;\n}\n\nfunction _shouldInstrumentSpans(options, clientOptions = {}) {\n // If `spans` is passed in, it takes precedence\n // Else, we by default emit spans, unless `skipOpenTelemetrySetup` is set to `true` or spans are not enabled\n return typeof options.spans === 'boolean'\n ? options.spans\n : !clientOptions.skipOpenTelemetrySetup && hasSpansEnabled(clientOptions);\n}\n\n/** Exported only for tests. */\nfunction _getConfigWithDefaults(options = {}) {\n const instrumentationConfig = {\n requireParentforSpans: false,\n ignoreRequestHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n const _ignoreOutgoingRequests = options.ignoreOutgoingRequests;\n const shouldIgnore = _ignoreOutgoingRequests && url && _ignoreOutgoingRequests(url);\n\n return !!shouldIgnore;\n },\n startSpanHook: request => {\n const url = getAbsoluteUrl(request.origin, request.path);\n\n // Sanitize data URLs to prevent long base64 strings in span attributes\n if (url.startsWith('data:')) {\n const sanitizedUrl = stripDataUrlContent(url);\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n 'http.url': sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_URL_FULL]: sanitizedUrl,\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: `${request.method || 'GET'} ${sanitizedUrl}`,\n };\n }\n\n return {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.node_fetch',\n };\n },\n requestHook: options.requestHook,\n responseHook: options.responseHook,\n headersToSpanAttributes: options.headersToSpanAttributes,\n } ;\n\n return instrumentationConfig;\n}\n\nexport { _getConfigWithDefaults, nativeNodeFetchIntegration };\n//# sourceMappingURL=node-fetch.js.map\n", + "import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express';\nimport { defineIntegration, getIsolationScope, getDefaultIsolationScope, debug, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, httpRequestToRequestData, captureException } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan, ensureIsWrapped } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\n\nconst INTEGRATION_NAME = 'Express';\n\nfunction requestHook(span) {\n addOriginToSpan(span, 'auto.http.otel.express');\n\n const attributes = spanToJSON(span).data;\n // this is one of: middleware, request_handler, router\n const type = attributes['express.type'];\n\n if (type) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.express`);\n }\n\n // Also update the name, we don't need to \"middleware - \" prefix\n const name = attributes['express.name'];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n}\n\nfunction spanNameHook(info, defaultName) {\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is still default isolation scope - skipping setting transactionName');\n return defaultName;\n }\n if (info.layerType === 'request_handler') {\n // type cast b/c Otel unfortunately types info.request as any :(\n const req = info.request ;\n const method = req.method ? req.method.toUpperCase() : 'GET';\n getIsolationScope().setTransactionName(`${method} ${info.route}`);\n }\n return defaultName;\n}\n\nconst instrumentExpress = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new ExpressInstrumentation({\n requestHook: span => requestHook(span),\n spanNameHook: (info, defaultName) => spanNameHook(info, defaultName),\n }),\n);\n\nconst _expressIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentExpress();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Express](https://expressjs.com/).\n *\n * If you also want to capture errors, you need to call `setupExpressErrorHandler(app)` after you set up your Express server.\n *\n * For more information, see the [express documentation](https://docs.sentry.io/platforms/javascript/guides/express/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.expressIntegration()],\n * })\n * ```\n */\nconst expressIntegration = defineIntegration(_expressIntegration);\n\n/**\n * An Express-compatible error handler.\n */\nfunction expressErrorHandler(options) {\n return function sentryErrorMiddleware(\n error,\n request,\n res,\n next,\n ) {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n // When an error happens, the `expressRequestHandler` middleware does not run, so we set it here too\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n\n if (shouldHandleError(error)) {\n const eventId = captureException(error, { mechanism: { type: 'auto.middleware.express', handled: false } });\n (res ).sentry = eventId;\n }\n\n next(error);\n };\n}\n\nfunction expressRequestHandler() {\n return function sentryRequestMiddleware(\n request,\n _res,\n next,\n ) {\n const normalizedRequest = httpRequestToRequestData(request);\n // Ensure we use the express-enhanced request here, instead of the plain HTTP one\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n\n next();\n };\n}\n\n/**\n * Add an Express error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const express = require(\"express\");\n *\n * const app = express();\n *\n * // Add your routes, etc.\n *\n * // Add this after all routes,\n * // but before any and other error-handling middlewares are defined\n * Sentry.setupExpressErrorHandler(app);\n *\n * app.listen(3000);\n * ```\n */\nfunction setupExpressErrorHandler(\n app,\n options,\n) {\n app.use(expressRequestHandler());\n app.use(expressErrorHandler(options));\n ensureIsWrapped(app.use, 'express');\n}\n\nfunction getStatusCodeFromResponse(error) {\n const statusCode = error.status || error.statusCode || error.status_code || error.output?.statusCode;\n return statusCode ? parseInt(statusCode , 10) : 500;\n}\n\n/** Returns true if response code is internal server error */\nfunction defaultShouldHandleError(error) {\n const status = getStatusCodeFromResponse(error);\n return status >= 500;\n}\n\nexport { expressErrorHandler, expressIntegration, instrumentExpress, setupExpressErrorHandler };\n//# sourceMappingURL=express.js.map\n", + "/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n", + "import * as diagnosticsChannel from 'node:diagnostics_channel';\nimport { FastifyOtelInstrumentation } from '@fastify/otel';\nimport { debug, defineIntegration, getClient, getIsolationScope, captureException, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build.js';\nimport { FastifyInstrumentationV3 } from './v3/instrumentation.js';\n\n/**\n * Options for the Fastify integration.\n *\n * `shouldHandleError` - Callback method deciding whether error should be captured and sent to Sentry\n * This is used on Fastify v5 where Sentry handles errors in the diagnostics channel.\n * Fastify v3 and v4 use `setupFastifyErrorHandler` instead.\n *\n * @example\n *\n * ```javascript\n * Sentry.init({\n * integrations: [\n * Sentry.fastifyIntegration({\n * shouldHandleError(_error, _request, reply) {\n * return reply.statusCode >= 500;\n * },\n * });\n * },\n * });\n * ```\n *\n */\n\nconst INTEGRATION_NAME = 'Fastify';\n\nconst instrumentFastifyV3 = generateInstrumentOnce(\n `${INTEGRATION_NAME}.v3`,\n () => new FastifyInstrumentationV3(),\n);\n\nfunction getFastifyIntegration() {\n const client = getClient();\n if (!client) {\n return undefined;\n } else {\n return client.getIntegrationByName(INTEGRATION_NAME);\n }\n}\n\nfunction handleFastifyError(\n\n error,\n request,\n reply,\n handlerOrigin,\n) {\n const shouldHandleError = getFastifyIntegration()?.getShouldHandleError() || defaultShouldHandleError;\n // Diagnostics channel runs before the onError hook, so we can use it to check if the handler was already registered\n if (handlerOrigin === 'diagnostics-channel') {\n this.diagnosticsChannelExists = true;\n }\n\n if (this.diagnosticsChannelExists && handlerOrigin === 'onError-hook') {\n DEBUG_BUILD &&\n debug.warn(\n 'Fastify error handler was already registered via diagnostics channel.',\n 'You can safely remove `setupFastifyErrorHandler` call and set `shouldHandleError` on the integration options.',\n );\n\n // If the diagnostics channel already exists, we don't need to handle the error again\n return;\n }\n\n if (shouldHandleError(error, request, reply)) {\n captureException(error, { mechanism: { handled: false, type: 'auto.function.fastify' } });\n }\n}\n\nconst instrumentFastify = generateInstrumentOnce(`${INTEGRATION_NAME}.v5`, () => {\n const fastifyOtelInstrumentationInstance = new FastifyOtelInstrumentation();\n const plugin = fastifyOtelInstrumentationInstance.plugin();\n\n // This message handler works for Fastify versions 3, 4 and 5\n diagnosticsChannel.subscribe('fastify.initialization', message => {\n const fastifyInstance = (message ).fastify;\n\n fastifyInstance?.register(plugin).after(err => {\n if (err) {\n DEBUG_BUILD && debug.error('Failed to setup Fastify instrumentation', err);\n } else {\n instrumentClient();\n\n if (fastifyInstance) {\n instrumentOnRequest(fastifyInstance);\n }\n }\n });\n });\n\n // This diagnostics channel only works on Fastify version 5\n // For versions 3 and 4, we use `setupFastifyErrorHandler` instead\n diagnosticsChannel.subscribe('tracing:fastify.request.handler:error', message => {\n const { error, request, reply } = message\n\n;\n\n handleFastifyError.call(handleFastifyError, error, request, reply, 'diagnostics-channel');\n });\n\n // Returning this as Instrumentation to avoid leaking @fastify/otel types into the public API\n return fastifyOtelInstrumentationInstance ;\n});\n\nconst _fastifyIntegration = (({ shouldHandleError }) => {\n let _shouldHandleError;\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n _shouldHandleError = shouldHandleError || defaultShouldHandleError;\n\n instrumentFastifyV3();\n instrumentFastify();\n },\n getShouldHandleError() {\n return _shouldHandleError;\n },\n setShouldHandleError(fn) {\n _shouldHandleError = fn;\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Fastify](https://fastify.dev/).\n *\n * If you also want to capture errors, you need to call `setupFastifyErrorHandler(app)` after you set up your Fastify server.\n *\n * For more information, see the [fastify documentation](https://docs.sentry.io/platforms/javascript/guides/fastify/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.fastifyIntegration()],\n * })\n * ```\n */\nconst fastifyIntegration = defineIntegration((options = {}) =>\n _fastifyIntegration(options),\n);\n\n/**\n * Default function to determine if an error should be sent to Sentry\n *\n * 3xx and 4xx errors are not sent by default.\n */\nfunction defaultShouldHandleError(_error, _request, reply) {\n const statusCode = reply.statusCode;\n // 3xx and 4xx errors are not sent by default.\n return statusCode >= 500 || statusCode <= 299;\n}\n\n/**\n * Add an Fastify error handler to capture errors to Sentry.\n *\n * @param fastify The Fastify instance to which to add the error handler\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Fastify = require(\"fastify\");\n *\n * const app = Fastify();\n *\n * Sentry.setupFastifyErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen({ port: 3000 });\n * ```\n */\nfunction setupFastifyErrorHandler(fastify, options) {\n if (options?.shouldHandleError) {\n getFastifyIntegration()?.setShouldHandleError(options.shouldHandleError);\n }\n\n const plugin = Object.assign(\n function (fastify, _options, done) {\n fastify.addHook('onError', async (request, reply, error) => {\n handleFastifyError.call(handleFastifyError, error, request, reply, 'onError-hook');\n });\n done();\n },\n {\n [Symbol.for('skip-override')]: true,\n [Symbol.for('fastify.display-name')]: 'sentry-fastify-error-handler',\n },\n );\n\n fastify.register(plugin);\n}\n\nfunction addFastifySpanAttributes(span) {\n const spanJSON = spanToJSON(span);\n const spanName = spanJSON.description;\n const attributes = spanJSON.data;\n\n const type = attributes['fastify.type'];\n\n const isHook = type === 'hook';\n const isHandler = type === spanName?.startsWith('handler -');\n // In @fastify/otel `request-handler` is separated by dash, not underscore\n const isRequestHandler = spanName === 'request' || type === 'request-handler';\n\n // If this is already set, or we have no fastify span, no need to process again...\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || (!isHandler && !isRequestHandler && !isHook)) {\n return;\n }\n\n const opPrefix = isHook ? 'hook' : isHandler ? 'middleware' : isRequestHandler ? 'request_handler' : '';\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${opPrefix}.fastify`,\n });\n\n const attrName = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n if (typeof attrName === 'string') {\n // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n // This is a bit of a hack, and not always working for all spans\n // But it's the best we can do without a proper API\n const updatedName = attrName.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n span.updateName(updatedName);\n }\n}\n\nfunction instrumentClient() {\n const client = getClient();\n if (client) {\n client.on('spanStart', (span) => {\n addFastifySpanAttributes(span);\n });\n }\n}\n\nfunction instrumentOnRequest(fastify) {\n fastify.addHook('onRequest', async (request, _reply) => {\n if (request.opentelemetry) {\n const { span } = request.opentelemetry();\n\n if (span) {\n addFastifySpanAttributes(span);\n }\n }\n\n const routeName = request.routeOptions?.url;\n const method = request.method || 'GET';\n\n getIsolationScope().setTransactionName(`${method} ${routeName}`);\n });\n}\n\nexport { fastifyIntegration, instrumentFastify, instrumentFastifyV3, setupFastifyErrorHandler };\n//# sourceMappingURL=index.js.map\n", + "import { context, trace, SpanStatusCode } from '@opentelemetry/api';\nimport { getRPCMetadata, RPCType } from '@opentelemetry/core';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport { getIsolationScope, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getClient } from '@sentry/core';\nimport { FastifyNames, AttributeNames, FastifyTypes } from './enums/AttributeNames.js';\nimport { startSpan, endSpan, safeExecuteInTheMiddleMaybePromise } from './utils.js';\n\n// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\n/** @knipignore */\n\nconst PACKAGE_VERSION = '0.1.0';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-fastify-v3';\nconst ANONYMOUS_NAME = 'anonymous';\n\n// The instrumentation creates a span for invocations of lifecycle hook handlers\n// that take `(request, reply, ...[, done])` arguments. Currently this is all\n// lifecycle hooks except `onRequestAbort`.\n// https://fastify.dev/docs/latest/Reference/Hooks\nconst hooksNamesToWrap = new Set([\n 'onTimeout',\n 'onRequest',\n 'preParsing',\n 'preValidation',\n 'preSerialization',\n 'preHandler',\n 'onSend',\n 'onResponse',\n 'onError',\n]);\n\n/**\n * Fastify instrumentation for OpenTelemetry\n */\nclass FastifyInstrumentationV3 extends InstrumentationBase {\n constructor(config = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition('fastify', ['>=3.0.0 <4'], moduleExports => {\n return this._patchConstructor(moduleExports);\n }),\n ];\n }\n\n _hookOnRequest() {\n const instrumentation = this;\n\n return function onRequest(request, reply, done) {\n if (!instrumentation.isEnabled()) {\n return done();\n }\n instrumentation._wrap(reply, 'send', instrumentation._patchSend());\n\n const anyRequest = request ;\n\n const rpcMetadata = getRPCMetadata(context.active());\n const routeName = anyRequest.routeOptions\n ? anyRequest.routeOptions.url // since fastify@4.10.0\n : request.routerPath;\n if (routeName && rpcMetadata?.type === RPCType.HTTP) {\n rpcMetadata.route = routeName;\n }\n\n const method = request.method || 'GET';\n\n getIsolationScope().setTransactionName(`${method} ${routeName}`);\n done();\n };\n }\n\n _wrapHandler(\n pluginName,\n hookName,\n original,\n syncFunctionWithDone,\n ) {\n const instrumentation = this;\n this._diag.debug('Patching fastify route.handler function');\n\n return function ( ...args) {\n if (!instrumentation.isEnabled()) {\n return original.apply(this, args);\n }\n\n const name = original.name || pluginName || ANONYMOUS_NAME;\n const spanName = `${FastifyNames.MIDDLEWARE} - ${name}`;\n\n const reply = args[1] ;\n\n const span = startSpan(reply, instrumentation.tracer, spanName, {\n [AttributeNames.FASTIFY_TYPE]: FastifyTypes.MIDDLEWARE,\n [AttributeNames.PLUGIN_NAME]: pluginName,\n [AttributeNames.HOOK_NAME]: hookName,\n });\n\n const origDone = syncFunctionWithDone && (args[args.length - 1] );\n if (origDone) {\n args[args.length - 1] = function (...doneArgs) {\n endSpan(reply);\n origDone.apply(this, doneArgs);\n };\n }\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return safeExecuteInTheMiddleMaybePromise(\n () => {\n return original.apply(this, args);\n },\n err => {\n if (err instanceof Error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n span.recordException(err);\n }\n // async hooks should end the span as soon as the promise is resolved\n if (!syncFunctionWithDone) {\n endSpan(reply);\n }\n },\n );\n });\n };\n }\n\n _wrapAddHook() {\n const instrumentation = this;\n this._diag.debug('Patching fastify server.addHook function');\n\n // biome-ignore lint/complexity/useArrowFunction: \n return function (original) {\n return function wrappedAddHook( ...args) {\n const name = args[0] ;\n const handler = args[1] ;\n const pluginName = this.pluginName;\n if (!hooksNamesToWrap.has(name)) {\n return original.apply(this, args);\n }\n\n const syncFunctionWithDone =\n typeof args[args.length - 1] === 'function' && handler.constructor.name !== 'AsyncFunction';\n\n return original.apply(this, [\n name,\n instrumentation._wrapHandler(pluginName, name, handler, syncFunctionWithDone),\n ] );\n };\n };\n }\n\n _patchConstructor(moduleExports\n\n) {\n const instrumentation = this;\n\n function fastify( ...args) {\n const app = moduleExports.fastify.apply(this, args);\n app.addHook('onRequest', instrumentation._hookOnRequest());\n app.addHook('preHandler', instrumentation._hookPreHandler());\n\n instrumentClient();\n\n instrumentation._wrap(app, 'addHook', instrumentation._wrapAddHook());\n\n return app;\n }\n\n if (moduleExports.errorCodes !== undefined) {\n fastify.errorCodes = moduleExports.errorCodes;\n }\n fastify.fastify = fastify;\n fastify.default = fastify;\n return fastify;\n }\n\n _patchSend() {\n const instrumentation = this;\n this._diag.debug('Patching fastify reply.send function');\n\n return function patchSend(original) {\n return function send( ...args) {\n const maybeError = args[0];\n\n if (!instrumentation.isEnabled()) {\n return original.apply(this, args);\n }\n\n return safeExecuteInTheMiddle(\n () => {\n return original.apply(this, args);\n },\n err => {\n if (!err && maybeError instanceof Error) {\n // eslint-disable-next-line no-param-reassign\n err = maybeError;\n }\n endSpan(this, err);\n },\n );\n };\n };\n }\n\n _hookPreHandler() {\n const instrumentation = this;\n this._diag.debug('Patching fastify preHandler function');\n\n return function preHandler( request, reply, done) {\n if (!instrumentation.isEnabled()) {\n return done();\n }\n const anyRequest = request ;\n\n const handler = anyRequest.routeOptions?.handler || anyRequest.context?.handler;\n const handlerName = handler?.name.startsWith('bound ') ? handler.name.substring(6) : handler?.name;\n const spanName = `${FastifyNames.REQUEST_HANDLER} - ${handlerName || this.pluginName || ANONYMOUS_NAME}`;\n\n const spanAttributes = {\n [AttributeNames.PLUGIN_NAME]: this.pluginName,\n [AttributeNames.FASTIFY_TYPE]: FastifyTypes.REQUEST_HANDLER,\n // eslint-disable-next-line deprecation/deprecation\n [SEMATTRS_HTTP_ROUTE]: anyRequest.routeOptions\n ? anyRequest.routeOptions.url // since fastify@4.10.0\n : request.routerPath,\n };\n if (handlerName) {\n spanAttributes[AttributeNames.FASTIFY_NAME] = handlerName;\n }\n const span = startSpan(reply, instrumentation.tracer, spanName, spanAttributes);\n\n addFastifyV3SpanAttributes(span);\n\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n safeExecuteInTheMiddle(\n () => requestHook(span, { request }),\n e => {\n if (e) {\n instrumentation._diag.error('request hook failed', e);\n }\n },\n true,\n );\n }\n\n return context.with(trace.setSpan(context.active(), span), () => {\n done();\n });\n };\n }\n}\n\nfunction instrumentClient() {\n const client = getClient();\n if (client) {\n client.on('spanStart', (span) => {\n addFastifyV3SpanAttributes(span);\n });\n }\n}\n\nfunction addFastifyV3SpanAttributes(span) {\n const attributes = spanToJSON(span).data;\n\n // this is one of: middleware, request_handler\n const type = attributes['fastify.type'];\n\n // If this is already set, or we have no fastify span, no need to process again...\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n return;\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.fastify',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.fastify`,\n });\n\n // Also update the name, we don't need to \"middleware - \" prefix\n const name = attributes['fastify.name'] || attributes['plugin.name'] || attributes['hook.name'];\n if (typeof name === 'string') {\n // Try removing `fastify -> ` and `@fastify/otel -> ` prefixes\n // This is a bit of a hack, and not always working for all spans\n // But it's the best we can do without a proper API\n const updatedName = name.replace(/^fastify -> /, '').replace(/^@fastify\\/otel -> /, '');\n\n span.updateName(updatedName);\n }\n}\n\nexport { FastifyInstrumentationV3 };\n//# sourceMappingURL=instrumentation.js.map\n", + "// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/enums/AttributeNames.ts\n//\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar AttributeNames; (function (AttributeNames) {\n const FASTIFY_NAME = 'fastify.name'; AttributeNames[\"FASTIFY_NAME\"] = FASTIFY_NAME;\n const FASTIFY_TYPE = 'fastify.type'; AttributeNames[\"FASTIFY_TYPE\"] = FASTIFY_TYPE;\n const HOOK_NAME = 'hook.name'; AttributeNames[\"HOOK_NAME\"] = HOOK_NAME;\n const PLUGIN_NAME = 'plugin.name'; AttributeNames[\"PLUGIN_NAME\"] = PLUGIN_NAME;\n})(AttributeNames || (AttributeNames = {}));\n\nvar FastifyTypes; (function (FastifyTypes) {\n const MIDDLEWARE = 'middleware'; FastifyTypes[\"MIDDLEWARE\"] = MIDDLEWARE;\n const REQUEST_HANDLER = 'request_handler'; FastifyTypes[\"REQUEST_HANDLER\"] = REQUEST_HANDLER;\n})(FastifyTypes || (FastifyTypes = {}));\n\nvar FastifyNames; (function (FastifyNames) {\n const MIDDLEWARE = 'middleware'; FastifyNames[\"MIDDLEWARE\"] = MIDDLEWARE;\n const REQUEST_HANDLER = 'request handler'; FastifyNames[\"REQUEST_HANDLER\"] = REQUEST_HANDLER;\n})(FastifyNames || (FastifyNames = {}));\n\nexport { AttributeNames, FastifyNames, FastifyTypes };\n//# sourceMappingURL=AttributeNames.js.map\n", + "import { SpanStatusCode } from '@opentelemetry/api';\nimport { spanRequestSymbol } from './constants.js';\n\n// Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/utils.ts\n/* eslint-disable jsdoc/require-jsdoc */\n/* eslint-disable @typescript-eslint/no-dynamic-delete */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * Starts Span\n * @param reply - reply function\n * @param tracer - tracer\n * @param spanName - span name\n * @param spanAttributes - span attributes\n */\nfunction startSpan(\n reply,\n tracer,\n spanName,\n spanAttributes = {},\n) {\n const span = tracer.startSpan(spanName, { attributes: spanAttributes });\n\n const spans = reply[spanRequestSymbol] || [];\n spans.push(span);\n\n Object.defineProperty(reply, spanRequestSymbol, {\n enumerable: false,\n configurable: true,\n value: spans,\n });\n\n return span;\n}\n\n/**\n * Ends span\n * @param reply - reply function\n * @param err - error\n */\nfunction endSpan(reply, err) {\n const spans = reply[spanRequestSymbol] || [];\n // there is no active span, or it has already ended\n if (!spans.length) {\n return;\n }\n // biome-ignore lint/complexity/noForEach: \n spans.forEach((span) => {\n if (err) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n span.recordException(err);\n }\n span.end();\n });\n delete reply[spanRequestSymbol];\n}\n\n// @TODO after approve add this to instrumentation package and replace usage\n// when it will be released\n\n/**\n * This function handles the missing case from instrumentation package when\n * execute can either return a promise or void. And using async is not an\n * option as it is producing unwanted side effects.\n * @param execute - function to be executed\n * @param onFinish - function called when function executed\n * @param preventThrowingError - prevent to throw error when execute\n * function fails\n */\n\nfunction safeExecuteInTheMiddleMaybePromise(\n execute,\n onFinish,\n preventThrowingError,\n) {\n let error;\n let result = undefined;\n try {\n result = execute();\n\n if (isPromise(result)) {\n result.then(\n res => onFinish(undefined, res),\n err => onFinish(err),\n );\n }\n } catch (e) {\n error = e;\n } finally {\n if (!isPromise(result)) {\n onFinish(error, result);\n if (error && true) {\n // eslint-disable-next-line no-unsafe-finally\n throw error;\n }\n }\n // eslint-disable-next-line no-unsafe-finally\n return result;\n }\n}\n\nfunction isPromise(val) {\n return (\n (typeof val === 'object' && val && typeof Object.getOwnPropertyDescriptor(val, 'then')?.value === 'function') ||\n false\n );\n}\n\nexport { endSpan, safeExecuteInTheMiddleMaybePromise, startSpan };\n//# sourceMappingURL=utils.js.map\n", + "// Vendored from https://github.com/open-telemetry/opentelemetry-js-contrib/blob/407f61591ba69a39a6908264379d4d98a48dbec4/plugins/node/opentelemetry-instrumentation-fastify/src/constants.ts\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst spanRequestSymbol = Symbol('opentelemetry.instrumentation.fastify.request_active_span');\n\nexport { spanRequestSymbol };\n//# sourceMappingURL=constants.js.map\n", + "import { SpanStatusCode } from '@opentelemetry/api';\nimport { GraphQLInstrumentation } from '@opentelemetry/instrumentation-graphql';\nimport { spanToJSON, getRootSpan, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '@sentry/opentelemetry';\n\nconst INTEGRATION_NAME = 'Graphql';\n\nconst instrumentGraphql = generateInstrumentOnce(\n INTEGRATION_NAME,\n GraphQLInstrumentation,\n (_options) => {\n const options = getOptionsWithDefaults(_options);\n\n return {\n ...options,\n responseHook(span, result) {\n addOriginToSpan(span, 'auto.graphql.otel.graphql');\n\n // We want to ensure spans are marked as errored if there are errors in the result\n // We only do that if the span is not already marked with a status\n const resultWithMaybeError = result ;\n if (resultWithMaybeError.errors?.length && !spanToJSON(span).status) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n\n const attributes = spanToJSON(span).data;\n\n // If operation.name is not set, we fall back to use operation.type only\n const operationType = attributes['graphql.operation.type'];\n const operationName = attributes['graphql.operation.name'];\n\n if (options.useOperationNameForRootSpan && operationType) {\n const rootSpan = getRootSpan(span);\n const rootSpanAttributes = spanToJSON(rootSpan).data;\n\n const existingOperations = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION] || [];\n\n const newOperation = operationName ? `${operationType} ${operationName}` : `${operationType}`;\n\n // We keep track of each operation on the root span\n // This can either be a string, or an array of strings (if there are multiple operations)\n if (Array.isArray(existingOperations)) {\n (existingOperations ).push(newOperation);\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, existingOperations);\n } else if (typeof existingOperations === 'string') {\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, [existingOperations, newOperation]);\n } else {\n rootSpan.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION, newOperation);\n }\n\n if (!spanToJSON(rootSpan).data['original-description']) {\n rootSpan.setAttribute('original-description', spanToJSON(rootSpan).description);\n }\n // Important for e.g. @sentry/aws-serverless because this would otherwise overwrite the name again\n rootSpan.updateName(\n `${spanToJSON(rootSpan).data['original-description']} (${getGraphqlOperationNamesFromAttribute(\n existingOperations,\n )})`,\n );\n }\n },\n };\n },\n);\n\nconst _graphqlIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // We set defaults here, too, because otherwise we'd update the instrumentation config\n // to the config without defaults, as `generateInstrumentOnce` automatically calls `setConfig(options)`\n // when being called the second time\n instrumentGraphql(getOptionsWithDefaults(options));\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [graphql](https://www.npmjs.com/package/graphql) library.\n *\n * For more information, see the [`graphqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/graphql/).\n *\n * @param {GraphqlOptions} options Configuration options for the GraphQL integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.graphqlIntegration()],\n * });\n */\nconst graphqlIntegration = defineIntegration(_graphqlIntegration);\n\nfunction getOptionsWithDefaults(options) {\n return {\n ignoreResolveSpans: true,\n ignoreTrivialResolveSpans: true,\n useOperationNameForRootSpan: true,\n ...options,\n };\n}\n\n// copy from packages/opentelemetry/utils\nfunction getGraphqlOperationNamesFromAttribute(attr) {\n if (Array.isArray(attr)) {\n // oxlint-disable-next-line typescript/require-array-sort-compare\n const sorted = attr.slice().sort();\n\n // Up to 5 items, we just add all of them\n if (sorted.length <= 5) {\n return sorted.join(', ');\n } else {\n // Else, we add the first 5 and the diff of other operations\n return `${sorted.slice(0, 5).join(', ')}, +${sorted.length - 5}`;\n }\n }\n\n return `${attr}`;\n}\n\nexport { graphqlIntegration, instrumentGraphql };\n//# sourceMappingURL=graphql.js.map\n", + "import { KafkaJsInstrumentation } from '@opentelemetry/instrumentation-kafkajs';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Kafka';\n\nconst instrumentKafka = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new KafkaJsInstrumentation({\n consumerHook(span) {\n addOriginToSpan(span, 'auto.kafkajs.otel.consumer');\n },\n producerHook(span) {\n addOriginToSpan(span, 'auto.kafkajs.otel.producer');\n },\n }),\n);\n\nconst _kafkaIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentKafka();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [kafkajs](https://www.npmjs.com/package/kafkajs) library.\n *\n * For more information, see the [`kafkaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/kafka/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.kafkaIntegration()],\n * });\n */\nconst kafkaIntegration = defineIntegration(_kafkaIntegration);\n\nexport { instrumentKafka, kafkaIntegration };\n//# sourceMappingURL=kafka.js.map\n", + "import { LruMemoizerInstrumentation } from '@opentelemetry/instrumentation-lru-memoizer';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'LruMemoizer';\n\nconst instrumentLruMemoizer = generateInstrumentOnce(INTEGRATION_NAME, () => new LruMemoizerInstrumentation());\n\nconst _lruMemoizerIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentLruMemoizer();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [lru-memoizer](https://www.npmjs.com/package/lru-memoizer) library.\n *\n * For more information, see the [`lruMemoizerIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/lrumemoizer/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.lruMemoizerIntegration()],\n * });\n */\nconst lruMemoizerIntegration = defineIntegration(_lruMemoizerIntegration);\n\nexport { instrumentLruMemoizer, lruMemoizerIntegration };\n//# sourceMappingURL=lrumemoizer.js.map\n", + "import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongo';\n\nconst instrumentMongo = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new MongoDBInstrumentation({\n dbStatementSerializer: _defaultDbStatementSerializer,\n responseHook(span) {\n addOriginToSpan(span, 'auto.db.otel.mongo');\n },\n }),\n);\n\n/**\n * Replaces values in document with '?', hiding PII and helping grouping.\n */\nfunction _defaultDbStatementSerializer(commandObj) {\n const resultObj = _scrubStatement(commandObj);\n return JSON.stringify(resultObj);\n}\n\nfunction _scrubStatement(value) {\n if (Array.isArray(value)) {\n return value.map(element => _scrubStatement(element));\n }\n\n if (isCommandObj(value)) {\n const initial = {};\n return Object.entries(value)\n .map(([key, element]) => [key, _scrubStatement(element)])\n .reduce((prev, current) => {\n if (isCommandEntry(current)) {\n prev[current[0]] = current[1];\n }\n return prev;\n }, initial);\n }\n\n // A value like string or number, possible contains PII, scrub it\n return '?';\n}\n\nfunction isCommandObj(value) {\n return typeof value === 'object' && value !== null && !isBuffer(value);\n}\n\nfunction isBuffer(value) {\n let isBuffer = false;\n if (typeof Buffer !== 'undefined') {\n isBuffer = Buffer.isBuffer(value);\n }\n return isBuffer;\n}\n\nfunction isCommandEntry(value) {\n return Array.isArray(value);\n}\n\nconst _mongoIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMongo();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongodb](https://www.npmjs.com/package/mongodb) library.\n *\n * For more information, see the [`mongoIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongo/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mongoIntegration()],\n * });\n * ```\n */\nconst mongoIntegration = defineIntegration(_mongoIntegration);\n\nexport { _defaultDbStatementSerializer, instrumentMongo, mongoIntegration };\n//# sourceMappingURL=mongo.js.map\n", + "import { MongooseInstrumentation } from '@opentelemetry/instrumentation-mongoose';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongoose';\n\nconst instrumentMongoose = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new MongooseInstrumentation({\n responseHook(span) {\n addOriginToSpan(span, 'auto.db.otel.mongoose');\n },\n }),\n);\n\nconst _mongooseIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMongoose();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nconst mongooseIntegration = defineIntegration(_mongooseIntegration);\n\nexport { instrumentMongoose, mongooseIntegration };\n//# sourceMappingURL=mongoose.js.map\n", + "import { MySQLInstrumentation } from '@opentelemetry/instrumentation-mysql';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql';\n\nconst instrumentMysql = generateInstrumentOnce(INTEGRATION_NAME, () => new MySQLInstrumentation({}));\n\nconst _mysqlIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMysql();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql](https://www.npmjs.com/package/mysql) library.\n *\n * For more information, see the [`mysqlIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nconst mysqlIntegration = defineIntegration(_mysqlIntegration);\n\nexport { instrumentMysql, mysqlIntegration };\n//# sourceMappingURL=mysql.js.map\n", + "import { MySQL2Instrumentation } from '@opentelemetry/instrumentation-mysql2';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mysql2';\n\nconst instrumentMysql2 = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new MySQL2Instrumentation({\n responseHook(span) {\n addOriginToSpan(span, 'auto.db.otel.mysql2');\n },\n }),\n);\n\nconst _mysql2Integration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMysql2();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [mysql2](https://www.npmjs.com/package/mysql2) library.\n *\n * For more information, see the [`mysql2Integration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mysql2/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mysqlIntegration()],\n * });\n * ```\n */\nconst mysql2Integration = defineIntegration(_mysql2Integration);\n\nexport { instrumentMysql2, mysql2Integration };\n//# sourceMappingURL=mysql2.js.map\n", + "import { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_SENTRY_OP, truncate } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { getCacheKeySafely, getCacheOperation, shouldConsiderForCache, calculateCacheItemSize, isInCommands, GET_COMMANDS } from '../../utils/redisCache.js';\n\nconst INTEGRATION_NAME = 'Redis';\n\n/* Only exported for testing purposes */\nlet _redisOptions = {};\n\n/* Only exported for testing purposes */\nconst cacheResponseHook = (\n span,\n redisCommand,\n cmdArgs,\n response,\n) => {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.redis');\n\n const safeKey = getCacheKeySafely(redisCommand, cmdArgs);\n const cacheOperation = getCacheOperation(redisCommand);\n\n if (\n !safeKey ||\n !cacheOperation ||\n !_redisOptions.cachePrefixes ||\n !shouldConsiderForCache(redisCommand, safeKey, _redisOptions.cachePrefixes)\n ) {\n // not relevant for cache\n return;\n }\n\n // otel/ioredis seems to be using the old standard, as there was a change to those params: https://github.com/open-telemetry/opentelemetry-specification/issues/3199\n // We are using params based on the docs: https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/\n const networkPeerAddress = spanToJSON(span).data['net.peer.name'];\n const networkPeerPort = spanToJSON(span).data['net.peer.port'];\n if (networkPeerPort && networkPeerAddress) {\n span.setAttributes({ 'network.peer.address': networkPeerAddress, 'network.peer.port': networkPeerPort });\n }\n\n const cacheItemSize = calculateCacheItemSize(response);\n\n if (cacheItemSize) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, cacheItemSize);\n }\n\n if (isInCommands(GET_COMMANDS, redisCommand) && cacheItemSize !== undefined) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_HIT, cacheItemSize > 0);\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: cacheOperation,\n [SEMANTIC_ATTRIBUTE_CACHE_KEY]: safeKey,\n });\n\n // todo: change to string[] once EAP supports it\n const spanDescription = safeKey.join(', ');\n\n span.updateName(\n _redisOptions.maxCacheKeyLength ? truncate(spanDescription, _redisOptions.maxCacheKeyLength) : spanDescription,\n );\n};\n\nconst instrumentIORedis = generateInstrumentOnce(`${INTEGRATION_NAME}.IORedis`, () => {\n return new IORedisInstrumentation({\n responseHook: cacheResponseHook,\n });\n});\n\nconst instrumentRedisModule = generateInstrumentOnce(`${INTEGRATION_NAME}.Redis`, () => {\n return new RedisInstrumentation({\n responseHook: cacheResponseHook,\n });\n});\n\n/** To be able to preload all Redis OTel instrumentations with just one ID (\"Redis\"), all the instrumentations are generated in this one function */\nconst instrumentRedis = Object.assign(\n () => {\n instrumentIORedis();\n instrumentRedisModule();\n\n // todo: implement them gradually\n // new LegacyRedisInstrumentation({}),\n },\n { id: INTEGRATION_NAME },\n);\n\nconst _redisIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n _redisOptions = options;\n instrumentRedis();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [redis](https://www.npmjs.com/package/redis) and\n * [ioredis](https://www.npmjs.com/package/ioredis) libraries.\n *\n * For more information, see the [`redisIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/redis/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.redisIntegration()],\n * });\n * ```\n */\nconst redisIntegration = defineIntegration(_redisIntegration);\n\nexport { _redisOptions, cacheResponseHook, instrumentRedis, redisIntegration };\n//# sourceMappingURL=redis.js.map\n", + "const SINGLE_ARG_COMMANDS = ['get', 'set', 'setex'];\n\nconst GET_COMMANDS = ['get', 'mget'];\nconst SET_COMMANDS = ['set', 'setex'];\n// todo: del, expire\n\n/** Checks if a given command is in the list of redis commands.\n * Useful because commands can come in lowercase or uppercase (depending on the library). */\nfunction isInCommands(redisCommands, command) {\n return redisCommands.includes(command.toLowerCase());\n}\n\n/** Determine cache operation based on redis statement */\nfunction getCacheOperation(\n command,\n) {\n if (isInCommands(GET_COMMANDS, command)) {\n return 'cache.get';\n } else if (isInCommands(SET_COMMANDS, command)) {\n return 'cache.put';\n } else {\n return undefined;\n }\n}\n\nfunction keyHasPrefix(key, prefixes) {\n return prefixes.some(prefix => key.startsWith(prefix));\n}\n\n/** Safely converts a redis key to a string (comma-separated if there are multiple keys) */\nfunction getCacheKeySafely(redisCommand, cmdArgs) {\n try {\n if (cmdArgs.length === 0) {\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const processArg = (arg) => {\n if (typeof arg === 'string' || typeof arg === 'number' || Buffer.isBuffer(arg)) {\n return [arg.toString()];\n } else if (Array.isArray(arg)) {\n return flatten(arg.map(arg => processArg(arg)));\n } else {\n return [''];\n }\n };\n\n const firstArg = cmdArgs[0];\n if (isInCommands(SINGLE_ARG_COMMANDS, redisCommand) && firstArg != null) {\n return processArg(firstArg);\n }\n\n return flatten(cmdArgs.map(arg => processArg(arg)));\n } catch {\n return undefined;\n }\n}\n\n/** Determines whether a redis operation should be considered as \"cache operation\" by checking if a key is prefixed.\n * We only support certain commands (such as 'set', 'get', 'mget'). */\nfunction shouldConsiderForCache(redisCommand, keys, prefixes) {\n if (!getCacheOperation(redisCommand)) {\n return false;\n }\n\n for (const key of keys) {\n if (keyHasPrefix(key, prefixes)) {\n return true;\n }\n }\n return false;\n}\n\n/** Calculates size based on the cache response value */\nfunction calculateCacheItemSize(response) {\n const getSize = (value) => {\n try {\n if (Buffer.isBuffer(value)) return value.byteLength;\n else if (typeof value === 'string') return value.length;\n else if (typeof value === 'number') return value.toString().length;\n else if (value === null || value === undefined) return 0;\n return JSON.stringify(value).length;\n } catch {\n return undefined;\n }\n };\n\n return Array.isArray(response)\n ? response.reduce((acc, curr) => {\n const size = getSize(curr);\n return typeof size === 'number' ? (acc !== undefined ? acc + size : size) : acc;\n }, 0)\n : getSize(response);\n}\n\nfunction flatten(input) {\n const result = [];\n\n const flattenHelper = (input) => {\n input.forEach((el) => {\n if (Array.isArray(el)) {\n flattenHelper(el);\n } else {\n result.push(el);\n }\n });\n };\n\n flattenHelper(input);\n return result;\n}\n\nexport { GET_COMMANDS, SET_COMMANDS, calculateCacheItemSize, getCacheKeySafely, getCacheOperation, isInCommands, shouldConsiderForCache };\n//# sourceMappingURL=redisCache.js.map\n", + "import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Postgres';\n\nconst instrumentPostgres = generateInstrumentOnce(\n INTEGRATION_NAME,\n PgInstrumentation,\n (options) => ({\n requireParentSpan: true,\n requestHook(span) {\n addOriginToSpan(span, 'auto.db.otel.postgres');\n },\n ignoreConnectSpans: options?.ignoreConnectSpans ?? false,\n }),\n);\n\nconst _postgresIntegration = ((options) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentPostgres(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [pg](https://www.npmjs.com/package/pg) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.postgresIntegration()],\n * });\n * ```\n */\nconst postgresIntegration = defineIntegration(_postgresIntegration);\n\nexport { instrumentPostgres, postgresIntegration };\n//# sourceMappingURL=postgres.js.map\n", + "import { trace, context } from '@opentelemetry/api';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { ATTR_DB_OPERATION_NAME, ATTR_DB_QUERY_TEXT, ATTR_DB_SYSTEM_NAME, ATTR_DB_RESPONSE_STATUS_CODE, ATTR_ERROR_TYPE } from '@opentelemetry/semantic-conventions';\nimport { SDK_VERSION, debug, replaceExports, startSpanManual, SPAN_STATUS_ERROR, defineIntegration, instrumentPostgresJsSql } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\n\n// Instrumentation for https://github.com/porsager/postgres\n\n\nconst INTEGRATION_NAME = 'PostgresJs';\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <4'];\nconst SQL_OPERATION_REGEX = /^(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)/i;\n\n// Marker to track if a query was created from an instrumented sql instance\n// This prevents double-spanning when both wrapper and prototype patches are active\nconst QUERY_FROM_INSTRUMENTED_SQL = Symbol.for('sentry.query.from.instrumented.sql');\n\nconst instrumentPostgresJs = generateInstrumentOnce(\n INTEGRATION_NAME,\n (options) =>\n new PostgresJsInstrumentation({\n requireParentSpan: options?.requireParentSpan ?? true,\n requestHook: options?.requestHook,\n }),\n);\n\n/**\n * Instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n * This instrumentation captures postgresjs queries and their attributes.\n *\n * Uses internal Sentry patching patterns to support both CommonJS and ESM environments.\n */\nclass PostgresJsInstrumentation extends InstrumentationBase {\n constructor(config) {\n super('sentry-postgres-js', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by patching the postgres module.\n * Uses two complementary approaches:\n * 1. Main function wrapper: instruments sql instances created AFTER instrumentation is set up (CJS + ESM)\n * 2. Query.prototype patch: fallback for sql instances created BEFORE instrumentation (CJS only)\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n 'postgres',\n SUPPORTED_VERSIONS,\n exports$1 => {\n try {\n return this._patchPostgres(exports$1);\n } catch (e) {\n DEBUG_BUILD && debug.error('Failed to patch postgres module:', e);\n return exports$1;\n }\n },\n exports$1 => exports$1,\n );\n\n // Add fallback Query.prototype patching for pre-existing sql instances (CJS only)\n // This catches queries from sql instances created before Sentry was initialized\n ['src', 'cf/src', 'cjs/src'].forEach(path => {\n module.files.push(\n new InstrumentationNodeModuleFile(\n `postgres/${path}/query.js`,\n SUPPORTED_VERSIONS,\n this._patchQueryPrototype.bind(this),\n this._unpatchQueryPrototype.bind(this),\n ),\n );\n });\n\n return module;\n }\n\n /**\n * Patches the postgres module by wrapping the main export function.\n * This intercepts the creation of sql instances and instruments them.\n */\n _patchPostgres(exports$1) {\n // In CJS: exports is the function itself\n // In ESM: exports.default is the function\n const isFunction = typeof exports$1 === 'function';\n const Original = isFunction ? exports$1 : exports$1.default;\n\n if (typeof Original !== 'function') {\n DEBUG_BUILD && debug.warn('postgres module does not export a function. Skipping instrumentation.');\n return exports$1;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n const WrappedPostgres = function ( ...args) {\n const sql = Reflect.construct(Original , args);\n\n // Validate that construction succeeded and returned a valid function object\n if (!sql || typeof sql !== 'function') {\n DEBUG_BUILD && debug.warn('postgres() did not return a valid instance');\n return sql;\n }\n\n // Delegate to the portable instrumentation from @sentry/core\n const config = self.getConfig();\n return instrumentPostgresJsSql(sql, {\n requireParentSpan: config.requireParentSpan,\n requestHook: config.requestHook,\n });\n };\n\n Object.setPrototypeOf(WrappedPostgres, Original);\n Object.setPrototypeOf(WrappedPostgres.prototype, (Original ).prototype);\n\n for (const key of Object.getOwnPropertyNames(Original)) {\n if (!['length', 'name', 'prototype'].includes(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n if (descriptor) {\n Object.defineProperty(WrappedPostgres, key, descriptor);\n }\n }\n }\n\n // For CJS: the exports object IS the function, so return the wrapped function\n // For ESM: replace the default export\n if (isFunction) {\n return WrappedPostgres ;\n } else {\n replaceExports(exports$1, 'default', WrappedPostgres);\n return exports$1;\n }\n }\n\n /**\n * Determines whether a span should be created based on the current context.\n * If `requireParentSpan` is set to true in the configuration, a span will\n * only be created if there is a parent span available.\n */\n _shouldCreateSpans() {\n const config = this.getConfig();\n const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n return hasParentSpan || !config.requireParentSpan;\n }\n\n /**\n * Extracts DB operation name from SQL query and sets it on the span.\n */\n _setOperationName(span, sanitizedQuery, command) {\n if (command) {\n span.setAttribute(ATTR_DB_OPERATION_NAME, command);\n return;\n }\n // Fallback: extract operation from the SQL query\n const operationMatch = sanitizedQuery?.match(SQL_OPERATION_REGEX);\n if (operationMatch?.[1]) {\n span.setAttribute(ATTR_DB_OPERATION_NAME, operationMatch[1].toUpperCase());\n }\n }\n\n /**\n * Reconstructs the full SQL query from template strings with PostgreSQL placeholders.\n *\n * For sql`SELECT * FROM users WHERE id = ${123} AND name = ${'foo'}`:\n * strings = [\"SELECT * FROM users WHERE id = \", \" AND name = \", \"\"]\n * returns: \"SELECT * FROM users WHERE id = $1 AND name = $2\"\n */\n _reconstructQuery(strings) {\n if (!strings?.length) {\n return undefined;\n }\n if (strings.length === 1) {\n return strings[0] || undefined;\n }\n // Join template parts with PostgreSQL placeholders ($1, $2, etc.)\n return strings.reduce((acc, str, i) => (i === 0 ? str : `${acc}$${i}${str}`), '');\n }\n\n /**\n * Sanitize SQL query as per the OTEL semantic conventions\n * https://opentelemetry.io/docs/specs/semconv/database/database-spans/#sanitization-of-dbquerytext\n *\n * PostgreSQL $n placeholders are preserved per OTEL spec - they're parameterized queries,\n * not sensitive literals. Only actual values (strings, numbers, booleans) are sanitized.\n */\n _sanitizeSqlQuery(sqlQuery) {\n if (!sqlQuery) {\n return 'Unknown SQL Query';\n }\n\n return (\n sqlQuery\n // Remove comments first (they may contain newlines and extra spaces)\n .replace(/--.*$/gm, '') // Single line comments (multiline mode)\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // Multi-line comments\n .replace(/;\\s*$/, '') // Remove trailing semicolons\n // Collapse whitespace to a single space (after removing comments)\n .replace(/\\s+/g, ' ')\n .trim() // Remove extra spaces and trim\n // Sanitize hex/binary literals before string literals\n .replace(/\\bX'[0-9A-Fa-f]*'/gi, '?') // Hex string literals\n .replace(/\\bB'[01]*'/gi, '?') // Binary string literals\n // Sanitize string literals (handles escaped quotes)\n .replace(/'(?:[^']|'')*'/g, '?')\n // Sanitize hex numbers\n .replace(/\\b0x[0-9A-Fa-f]+/gi, '?')\n // Sanitize boolean literals\n .replace(/\\b(?:TRUE|FALSE)\\b/gi, '?')\n // Sanitize numeric literals (preserve $n placeholders via negative lookbehind)\n .replace(/-?\\b\\d+\\.?\\d*[eE][+-]?\\d+\\b/g, '?') // Scientific notation\n .replace(/-?\\b\\d+\\.\\d+\\b/g, '?') // Decimals\n .replace(/-?\\.\\d+\\b/g, '?') // Decimals starting with dot\n .replace(/(? {\n addOriginToSpan(span, 'auto.db.postgresjs');\n\n span.setAttributes({\n [ATTR_DB_SYSTEM_NAME]: 'postgres',\n [ATTR_DB_QUERY_TEXT]: sanitizedSqlQuery,\n });\n\n // Note: No connection context available for pre-existing instances\n // because the sql instance wasn't created through our instrumented wrapper\n\n const config = self.getConfig();\n const { requestHook } = config;\n if (requestHook) {\n safeExecuteInTheMiddle(\n () => requestHook(span, sanitizedSqlQuery, undefined),\n e => {\n if (e) {\n span.setAttribute('sentry.hook.error', 'requestHook failed');\n DEBUG_BUILD && debug.error(`Error in requestHook for ${INTEGRATION_NAME} integration:`, e);\n }\n },\n true,\n );\n }\n\n // Wrap resolve to end span on success\n const originalResolve = this.resolve;\n this.resolve = new Proxy(originalResolve , {\n apply: (resolveTarget, resolveThisArg, resolveArgs) => {\n try {\n self._setOperationName(span, sanitizedSqlQuery, resolveArgs?.[0]?.command);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in resolve callback:', e);\n }\n return Reflect.apply(resolveTarget, resolveThisArg, resolveArgs);\n },\n });\n\n // Wrap reject to end span on error\n const originalReject = this.reject;\n this.reject = new Proxy(originalReject , {\n apply: (rejectTarget, rejectThisArg, rejectArgs) => {\n try {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: rejectArgs?.[0]?.message || 'unknown_error',\n });\n span.setAttribute(ATTR_DB_RESPONSE_STATUS_CODE, rejectArgs?.[0]?.code || 'unknown');\n span.setAttribute(ATTR_ERROR_TYPE, rejectArgs?.[0]?.name || 'unknown');\n self._setOperationName(span, sanitizedSqlQuery);\n span.end();\n } catch (e) {\n DEBUG_BUILD && debug.error('Error ending span in reject callback:', e);\n }\n return Reflect.apply(rejectTarget, rejectThisArg, rejectArgs);\n },\n });\n\n try {\n return originalHandle.apply(this, args);\n } catch (e) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: e instanceof Error ? e.message : 'unknown_error',\n });\n span.end();\n throw e;\n }\n },\n );\n };\n\n // Store original for unpatch - must be set on the NEW patched function\n moduleExports.Query.prototype.handle.__sentry_original__ = originalHandle;\n\n return moduleExports;\n }\n\n /**\n * Restores the original Query.prototype.handle method.\n */\n _unpatchQueryPrototype(moduleExports\n\n) {\n if (moduleExports.Query.prototype.handle.__sentry_original__) {\n moduleExports.Query.prototype.handle = moduleExports.Query.prototype.handle.__sentry_original__;\n }\n return moduleExports;\n }\n}\n\nconst _postgresJsIntegration = ((options) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentPostgresJs(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [postgres](https://www.npmjs.com/package/postgres) library.\n *\n * For more information, see the [`postgresIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/postgres/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.postgresJsIntegration()],\n * });\n * ```\n */\n\nconst postgresJsIntegration = defineIntegration(_postgresJsIntegration);\n\nexport { PostgresJsInstrumentation, instrumentPostgresJs, postgresJsIntegration };\n//# sourceMappingURL=postgresjs.js.map\n", + "import { trace, TraceFlags, context, SpanKind } from '@opentelemetry/api';\nimport { PrismaInstrumentation } from '@prisma/instrumentation';\nimport { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, consoleSandbox } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Prisma';\n\nfunction isPrismaV6TracingHelper(helper) {\n return !!helper && typeof helper === 'object' && 'dispatchEngineSpans' in helper;\n}\n\nfunction getPrismaTracingHelper() {\n const prismaInstrumentationObject = (globalThis ).PRISMA_INSTRUMENTATION;\n const prismaTracingHelper =\n prismaInstrumentationObject &&\n typeof prismaInstrumentationObject === 'object' &&\n 'helper' in prismaInstrumentationObject\n ? prismaInstrumentationObject.helper\n : undefined;\n\n return prismaTracingHelper;\n}\n\nclass SentryPrismaInteropInstrumentation extends PrismaInstrumentation {\n constructor(options) {\n super(options?.instrumentationConfig);\n }\n\n enable() {\n super.enable();\n\n // The PrismaIntegration (super class) defines a global variable `global[\"PRISMA_INSTRUMENTATION\"]` when `enable()` is called. This global variable holds a \"TracingHelper\" which Prisma uses internally to create tracing data. It's their way of not depending on OTEL with their main package. The sucky thing is, prisma broke the interface of the tracing helper with the v6 major update. This means that if you use Prisma 5 with the v6 instrumentation (or vice versa) Prisma just blows up, because tries to call methods on the helper that no longer exist.\n // Because we actually want to use the v6 instrumentation and not blow up in Prisma 5 user's faces, what we're doing here is backfilling the v5 method (`createEngineSpan`) with a noop so that no longer crashes when it attempts to call that function.\n const prismaTracingHelper = getPrismaTracingHelper();\n\n if (isPrismaV6TracingHelper(prismaTracingHelper)) {\n // Inspired & adjusted from https://github.com/prisma/prisma/tree/5.22.0/packages/instrumentation\n (prismaTracingHelper ).createEngineSpan = (\n engineSpanEvent,\n ) => {\n const tracer = trace.getTracer('prismaV5Compatibility') ;\n\n // Prisma v5 relies on being able to create spans with a specific span & trace ID\n // this is no longer possible in OTEL v2, there is no public API to do this anymore\n // So in order to kind of hack this possibility, we rely on the internal `_idGenerator` property\n // This is used to generate the random IDs, and we overwrite this temporarily to generate static IDs\n // This is flawed and may not work, e.g. if the code is bundled and the private property is renamed\n // in such cases, these spans will not be captured and some Prisma spans will be missing\n const initialIdGenerator = tracer._idGenerator;\n\n if (!initialIdGenerator) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Sentry] Could not find _idGenerator on tracer, skipping Prisma v5 compatibility - some Prisma spans may be missing!',\n );\n });\n\n return;\n }\n\n try {\n engineSpanEvent.spans.forEach(engineSpan => {\n const kind = engineSpanKindToOTELSpanKind(engineSpan.kind);\n\n const parentSpanId = engineSpan.parent_span_id;\n const spanId = engineSpan.span_id;\n const traceId = engineSpan.trace_id;\n\n const links = engineSpan.links?.map(link => {\n return {\n context: {\n traceId: link.trace_id,\n spanId: link.span_id,\n traceFlags: TraceFlags.SAMPLED,\n },\n };\n });\n\n const ctx = trace.setSpanContext(context.active(), {\n traceId,\n spanId: parentSpanId,\n traceFlags: TraceFlags.SAMPLED,\n });\n\n context.with(ctx, () => {\n const temporaryIdGenerator = {\n generateTraceId: () => {\n return traceId;\n },\n generateSpanId: () => {\n return spanId;\n },\n };\n\n tracer._idGenerator = temporaryIdGenerator;\n\n const span = tracer.startSpan(engineSpan.name, {\n kind,\n links,\n startTime: engineSpan.start_time,\n attributes: engineSpan.attributes,\n });\n\n span.end(engineSpan.end_time);\n\n tracer._idGenerator = initialIdGenerator;\n });\n });\n } finally {\n // Ensure we always restore this at the end, even if something errors\n tracer._idGenerator = initialIdGenerator;\n }\n };\n }\n }\n}\n\nfunction engineSpanKindToOTELSpanKind(engineSpanKind) {\n switch (engineSpanKind) {\n case 'client':\n return SpanKind.CLIENT;\n case 'internal':\n default: // Other span kinds aren't currently supported\n return SpanKind.INTERNAL;\n }\n}\n\nconst instrumentPrisma = generateInstrumentOnce(INTEGRATION_NAME, options => {\n return new SentryPrismaInteropInstrumentation(options);\n});\n\n/**\n * Adds Sentry tracing instrumentation for the [prisma](https://www.npmjs.com/package/prisma) library.\n * For more information, see the [`prismaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/prisma/).\n *\n * NOTE: By default, this integration works with Prisma version 6.\n * To get performance instrumentation for other Prisma versions,\n * 1. Install the `@prisma/instrumentation` package with the desired version.\n * 1. Pass a `new PrismaInstrumentation()` instance as exported from `@prisma/instrumentation` to the `prismaInstrumentation` option of this integration:\n *\n * ```js\n * import { PrismaInstrumentation } from '@prisma/instrumentation'\n *\n * Sentry.init({\n * integrations: [\n * prismaIntegration({\n * // Override the default instrumentation that Sentry uses\n * prismaInstrumentation: new PrismaInstrumentation()\n * })\n * ]\n * })\n * ```\n *\n * The passed instrumentation instance will override the default instrumentation instance the integration would use, while the `prismaIntegration` will still ensure data compatibility for the various Prisma versions.\n * 1. Depending on your Prisma version (prior to version 6), add `previewFeatures = [\"tracing\"]` to the client generator block of your Prisma schema:\n *\n * ```\n * generator client {\n * provider = \"prisma-client-js\"\n * previewFeatures = [\"tracing\"]\n * }\n * ```\n */\nconst prismaIntegration = defineIntegration((options) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentPrisma(options);\n },\n setup(client) {\n // If no tracing helper exists, we skip any work here\n // this means that prisma is not being used\n if (!getPrismaTracingHelper()) {\n return;\n }\n\n client.on('spanStart', span => {\n const spanJSON = spanToJSON(span);\n if (spanJSON.description?.startsWith('prisma:')) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.prisma');\n }\n\n // Make sure we use the query text as the span name, for ex. SELECT * FROM \"User\" WHERE \"id\" = $1\n if (spanJSON.description === 'prisma:engine:db_query' && spanJSON.data['db.query.text']) {\n span.updateName(spanJSON.data['db.query.text'] );\n }\n\n // In Prisma v5.22+, the `db.system` attribute is automatically set\n // On older versions, this is missing, so we add it here\n if (spanJSON.description === 'prisma:engine:db_query' && !spanJSON.data['db.system']) {\n span.setAttribute('db.system', 'prisma');\n }\n });\n },\n };\n});\n\nexport { instrumentPrisma, prismaIntegration };\n//# sourceMappingURL=prisma.js.map\n", + "// src/PrismaInstrumentation.ts\nimport { trace as trace2 } from \"@opentelemetry/api\";\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition\n} from \"@opentelemetry/instrumentation\";\n\n// ../instrumentation-contract/dist/index.mjs\nvar package_default = {\n name: \"@prisma/instrumentation-contract\",\n version: \"7.4.2\",\n description: \"Shared types and utilities for Prisma instrumentation\",\n main: \"dist/index.js\",\n module: \"dist/index.mjs\",\n types: \"dist/index.d.ts\",\n exports: {\n \".\": {\n require: {\n types: \"./dist/index.d.ts\",\n default: \"./dist/index.js\"\n },\n import: {\n types: \"./dist/index.d.mts\",\n default: \"./dist/index.mjs\"\n }\n }\n },\n license: \"Apache-2.0\",\n homepage: \"https://www.prisma.io\",\n repository: {\n type: \"git\",\n url: \"https://github.com/prisma/prisma.git\",\n directory: \"packages/instrumentation-contract\"\n },\n bugs: \"https://github.com/prisma/prisma/issues\",\n scripts: {\n dev: \"DEV=true tsx helpers/build.ts\",\n build: \"tsx helpers/build.ts\",\n prepublishOnly: \"pnpm run build\",\n test: \"vitest run\"\n },\n files: [\n \"dist\"\n ],\n sideEffects: false,\n devDependencies: {\n \"@opentelemetry/api\": \"1.9.0\"\n },\n peerDependencies: {\n \"@opentelemetry/api\": \"^1.8\"\n }\n};\nvar majorVersion = package_default.version.split(\".\")[0];\nvar GLOBAL_INSTRUMENTATION_KEY = \"PRISMA_INSTRUMENTATION\";\nvar GLOBAL_VERSIONED_INSTRUMENTATION_KEY = `V${majorVersion}_PRISMA_INSTRUMENTATION`;\nvar globalThisWithPrismaInstrumentation = globalThis;\nfunction getGlobalTracingHelper() {\n const versionedGlobal = globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n if (versionedGlobal?.helper) {\n return versionedGlobal.helper;\n }\n const fallbackGlobal = globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n return fallbackGlobal?.helper;\n}\nfunction setGlobalTracingHelper(helper) {\n const globalValue = { helper };\n globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY] = globalValue;\n globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY] = globalValue;\n}\nfunction clearGlobalTracingHelper() {\n delete globalThisWithPrismaInstrumentation[GLOBAL_VERSIONED_INSTRUMENTATION_KEY];\n delete globalThisWithPrismaInstrumentation[GLOBAL_INSTRUMENTATION_KEY];\n}\n\n// src/ActiveTracingHelper.ts\nimport {\n context as _context,\n SpanKind,\n trace\n} from \"@opentelemetry/api\";\nvar showAllTraces = process.env.PRISMA_SHOW_ALL_TRACES === \"true\";\nvar nonSampledTraceParent = `00-10-10-00`;\nfunction engineSpanKindToOtelSpanKind(engineSpanKind) {\n switch (engineSpanKind) {\n case \"client\":\n return SpanKind.CLIENT;\n case \"internal\":\n default:\n return SpanKind.INTERNAL;\n }\n}\nvar ActiveTracingHelper = class {\n tracerProvider;\n ignoreSpanTypes;\n constructor({ tracerProvider, ignoreSpanTypes }) {\n this.tracerProvider = tracerProvider;\n this.ignoreSpanTypes = ignoreSpanTypes;\n }\n isEnabled() {\n return true;\n }\n getTraceParent(context) {\n const span = trace.getSpanContext(context ?? _context.active());\n if (span) {\n return `00-${span.traceId}-${span.spanId}-0${span.traceFlags}`;\n }\n return nonSampledTraceParent;\n }\n dispatchEngineSpans(spans) {\n const tracer = this.tracerProvider.getTracer(\"prisma\");\n const linkIds = /* @__PURE__ */ new Map();\n const roots = spans.filter((span) => span.parentId === null);\n for (const root of roots) {\n dispatchEngineSpan(tracer, root, spans, linkIds, this.ignoreSpanTypes);\n }\n }\n getActiveContext() {\n return _context.active();\n }\n runInChildSpan(options, callback) {\n if (typeof options === \"string\") {\n options = { name: options };\n }\n if (options.internal && !showAllTraces) {\n return callback();\n }\n const tracer = this.tracerProvider.getTracer(\"prisma\");\n const context = options.context ?? this.getActiveContext();\n const name = `prisma:client:${options.name}`;\n if (shouldIgnoreSpan(name, this.ignoreSpanTypes)) {\n return callback();\n }\n if (options.active === false) {\n const span = tracer.startSpan(name, options, context);\n return endSpan(span, callback(span, context));\n }\n return tracer.startActiveSpan(name, options, (span) => endSpan(span, callback(span, context)));\n }\n};\nfunction dispatchEngineSpan(tracer, engineSpan, allSpans, linkIds, ignoreSpanTypes) {\n if (shouldIgnoreSpan(engineSpan.name, ignoreSpanTypes)) return;\n const spanOptions = {\n attributes: engineSpan.attributes,\n kind: engineSpanKindToOtelSpanKind(engineSpan.kind),\n startTime: engineSpan.startTime\n };\n tracer.startActiveSpan(engineSpan.name, spanOptions, (span) => {\n linkIds.set(engineSpan.id, span.spanContext().spanId);\n if (engineSpan.links) {\n span.addLinks(\n engineSpan.links.flatMap((link) => {\n const linkedId = linkIds.get(link);\n if (!linkedId) {\n return [];\n }\n return {\n context: {\n spanId: linkedId,\n traceId: span.spanContext().traceId,\n traceFlags: span.spanContext().traceFlags\n }\n };\n })\n );\n }\n const children = allSpans.filter((s) => s.parentId === engineSpan.id);\n for (const child of children) {\n dispatchEngineSpan(tracer, child, allSpans, linkIds, ignoreSpanTypes);\n }\n span.end(engineSpan.endTime);\n });\n}\nfunction endSpan(span, result) {\n if (isPromiseLike(result)) {\n return result.then(\n (value) => {\n span.end();\n return value;\n },\n (reason) => {\n span.end();\n throw reason;\n }\n );\n }\n span.end();\n return result;\n}\nfunction isPromiseLike(value) {\n return value != null && typeof value[\"then\"] === \"function\";\n}\nfunction shouldIgnoreSpan(spanName, ignoreSpanTypes) {\n return ignoreSpanTypes.some(\n (pattern) => typeof pattern === \"string\" ? pattern === spanName : pattern.test(spanName)\n );\n}\n\n// package.json\nvar package_default2 = {\n name: \"@prisma/instrumentation\",\n version: \"7.4.2\",\n description: \"OpenTelemetry compliant instrumentation for Prisma Client\",\n main: \"dist/index.js\",\n module: \"dist/index.mjs\",\n types: \"dist/index.d.ts\",\n exports: {\n \".\": {\n require: {\n types: \"./dist/index.d.ts\",\n default: \"./dist/index.js\"\n },\n import: {\n types: \"./dist/index.d.ts\",\n default: \"./dist/index.mjs\"\n }\n }\n },\n license: \"Apache-2.0\",\n homepage: \"https://www.prisma.io\",\n repository: {\n type: \"git\",\n url: \"https://github.com/prisma/prisma.git\",\n directory: \"packages/instrumentation\"\n },\n bugs: \"https://github.com/prisma/prisma/issues\",\n devDependencies: {\n \"@opentelemetry/api\": \"1.9.0\",\n \"@prisma/instrumentation-contract\": \"workspace:*\",\n \"@types/node\": \"~20.19.24\",\n typescript: \"5.4.5\"\n },\n dependencies: {\n \"@opentelemetry/instrumentation\": \"^0.207.0\"\n },\n peerDependencies: {\n \"@opentelemetry/api\": \"^1.8\"\n },\n files: [\n \"dist\"\n ],\n keywords: [\n \"prisma\",\n \"instrumentation\",\n \"opentelemetry\",\n \"otel\"\n ],\n scripts: {\n dev: \"DEV=true tsx helpers/build.ts\",\n build: \"tsx helpers/build.ts\",\n prepublishOnly: \"pnpm run build\",\n test: \"vitest run\"\n },\n sideEffects: false\n};\n\n// src/constants.ts\nvar VERSION = package_default2.version;\nvar NAME = package_default2.name;\nvar MODULE_NAME = \"@prisma/client\";\n\n// src/PrismaInstrumentation.ts\nvar PrismaInstrumentation = class extends InstrumentationBase {\n tracerProvider;\n constructor(config = {}) {\n super(NAME, VERSION, config);\n }\n setTracerProvider(tracerProvider) {\n this.tracerProvider = tracerProvider;\n }\n init() {\n const module = new InstrumentationNodeModuleDefinition(MODULE_NAME, [VERSION]);\n return [module];\n }\n enable() {\n const config = this._config;\n setGlobalTracingHelper(\n new ActiveTracingHelper({\n tracerProvider: this.tracerProvider ?? trace2.getTracerProvider(),\n ignoreSpanTypes: config.ignoreSpanTypes ?? []\n })\n );\n }\n disable() {\n clearGlobalTracingHelper();\n }\n isEnabled() {\n return getGlobalTracingHelper() !== void 0;\n }\n};\n\n// src/index.ts\nimport { registerInstrumentations } from \"@opentelemetry/instrumentation\";\nexport {\n PrismaInstrumentation,\n registerInstrumentations\n};\n", + "import { HapiInstrumentation } from '@opentelemetry/instrumentation-hapi';\nimport { defineIntegration, SDK_VERSION, getClient, getIsolationScope, getDefaultIsolationScope, debug, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, captureException } from '@sentry/core';\nimport { generateInstrumentOnce, ensureIsWrapped } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build.js';\n\nconst INTEGRATION_NAME = 'Hapi';\n\nconst instrumentHapi = generateInstrumentOnce(INTEGRATION_NAME, () => new HapiInstrumentation());\n\nconst _hapiIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentHapi();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Hapi](https://hapi.dev/).\n *\n * If you also want to capture errors, you need to call `setupHapiErrorHandler(server)` after you set up your server.\n *\n * For more information, see the [hapi documentation](https://docs.sentry.io/platforms/javascript/guides/hapi/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.hapiIntegration()],\n * })\n * ```\n */\nconst hapiIntegration = defineIntegration(_hapiIntegration);\n\nfunction isErrorEvent(event) {\n return !!(event && typeof event === 'object' && 'error' in event && event.error);\n}\n\nfunction sendErrorToSentry(errorData) {\n captureException(errorData, {\n mechanism: {\n type: 'auto.function.hapi',\n handled: false,\n },\n });\n}\n\nconst hapiErrorPlugin = {\n name: 'SentryHapiErrorPlugin',\n version: SDK_VERSION,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n register: async function (serverArg) {\n const server = serverArg ;\n\n server.events.on({ name: 'request', channels: ['error'] }, (request, event) => {\n if (getIsolationScope() !== getDefaultIsolationScope()) {\n const route = request.route;\n if (route.path) {\n getIsolationScope().setTransactionName(`${route.method.toUpperCase()} ${route.path}`);\n }\n } else {\n DEBUG_BUILD &&\n debug.warn('Isolation scope is still the default isolation scope - skipping setting transactionName');\n }\n\n if (isErrorEvent(event)) {\n sendErrorToSentry(event.error);\n }\n });\n },\n};\n\n/**\n * Add a Hapi plugin to capture errors to Sentry.\n *\n * @param server The Hapi server to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Hapi = require('@hapi/hapi');\n *\n * const init = async () => {\n * const server = Hapi.server();\n *\n * // all your routes here\n *\n * await Sentry.setupHapiErrorHandler(server);\n *\n * await server.start();\n * };\n * ```\n */\nasync function setupHapiErrorHandler(server) {\n await server.register(hapiErrorPlugin);\n\n // Sadly, middleware spans do not go through `requestHook`, so we handle those here\n // We register this hook in this method, because if we register it in the integration `setup`,\n // it would always run even for users that are not even using hapi\n const client = getClient();\n if (client) {\n client.on('spanStart', span => {\n addHapiSpanAttributes(span);\n });\n }\n\n ensureIsWrapped(server.register, 'hapi');\n}\n\nfunction addHapiSpanAttributes(span) {\n const attributes = spanToJSON(span).data;\n\n // this is one of: router, plugin, server.ext\n const type = attributes['hapi.type'];\n\n // If this is already set, or we have no Hapi span, no need to process again...\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n return;\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hapi',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hapi`,\n });\n}\n\nexport { hapiErrorPlugin, hapiIntegration, instrumentHapi, setupHapiErrorHandler };\n//# sourceMappingURL=index.js.map\n", + "import { ATTR_HTTP_ROUTE, ATTR_HTTP_REQUEST_METHOD } from '@opentelemetry/semantic-conventions';\nimport { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getIsolationScope, getDefaultIsolationScope, debug, httpRequestToRequestData, captureException } from '@sentry/core';\nimport { generateInstrumentOnce, ensureIsWrapped } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../../debug-build.js';\nimport { AttributeNames } from './constants.js';\nimport { HonoInstrumentation } from './instrumentation.js';\n\nconst INTEGRATION_NAME = 'Hono';\n\nfunction addHonoSpanAttributes(span) {\n const attributes = spanToJSON(span).data;\n const type = attributes[AttributeNames.HONO_TYPE];\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n return;\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.hono',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.hono`,\n });\n\n const name = attributes[AttributeNames.HONO_NAME];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n return;\n }\n\n const route = attributes[ATTR_HTTP_ROUTE];\n const method = attributes[ATTR_HTTP_REQUEST_METHOD];\n if (typeof route === 'string' && typeof method === 'string') {\n getIsolationScope().setTransactionName(`${method} ${route}`);\n }\n}\n\nconst instrumentHono = generateInstrumentOnce(\n INTEGRATION_NAME,\n () =>\n new HonoInstrumentation({\n responseHook: span => {\n addHonoSpanAttributes(span);\n },\n }),\n);\n\nconst _honoIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentHono();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Hono](https://hono.dev/).\n *\n * If you also want to capture errors, you need to call `setupHonoErrorHandler(app)` after you set up your Hono server.\n *\n * For more information, see the [hono documentation](https://docs.sentry.io/platforms/javascript/guides/hono/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.honoIntegration()],\n * })\n * ```\n */\nconst honoIntegration = defineIntegration(_honoIntegration);\n\nfunction honoRequestHandler() {\n return async function sentryRequestMiddleware(context, next) {\n const normalizedRequest = httpRequestToRequestData(context.req);\n getIsolationScope().setSDKProcessingMetadata({ normalizedRequest });\n await next();\n };\n}\n\nfunction defaultShouldHandleError(context) {\n const statusCode = context.res.status;\n return statusCode >= 500;\n}\n\nfunction honoErrorHandler(options) {\n return async function sentryErrorMiddleware(context, next) {\n await next();\n\n const shouldHandleError = options?.shouldHandleError || defaultShouldHandleError;\n if (shouldHandleError(context)) {\n (context.res ).sentry = captureException(context.error, {\n mechanism: {\n type: 'auto.middleware.hono',\n handled: false,\n },\n });\n }\n };\n}\n\n/**\n * Add a Hono error handler to capture errors to Sentry.\n *\n * @param app The Hono instances\n * @param options Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const { Hono } = require(\"hono\");\n *\n * const app = new Hono();\n *\n * Sentry.setupHonoErrorHandler(app);\n *\n * // Add your routes, etc.\n * ```\n */\nfunction setupHonoErrorHandler(\n app,\n options,\n) {\n app.use(honoRequestHandler());\n app.use(honoErrorHandler(options));\n ensureIsWrapped(app.use, 'hono');\n}\n\nexport { honoIntegration, instrumentHono, setupHonoErrorHandler };\n//# sourceMappingURL=index.js.map\n", + "const AttributeNames = {\n HONO_TYPE: 'hono.type',\n HONO_NAME: 'hono.name',\n} ;\n\nconst HonoTypes = {\n MIDDLEWARE: 'middleware',\n REQUEST_HANDLER: 'request_handler',\n} ;\n\nexport { AttributeNames, HonoTypes };\n//# sourceMappingURL=constants.js.map\n", + "import { context, trace, SpanStatusCode } from '@opentelemetry/api';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { isThenable } from '@sentry/core';\nimport { AttributeNames, HonoTypes } from './constants.js';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-hono';\nconst PACKAGE_VERSION = '0.0.1';\n\n/**\n * Hono instrumentation for OpenTelemetry\n */\nclass HonoInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n /**\n * Initialize the instrumentation.\n */\n init() {\n return [\n new InstrumentationNodeModuleDefinition('hono', ['>=4.0.0 <5'], moduleExports => this._patch(moduleExports)),\n ];\n }\n\n /**\n * Patches the module exports to instrument Hono.\n */\n _patch(moduleExports) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n class WrappedHono extends moduleExports.Hono {\n constructor(...args) {\n super(...args);\n\n instrumentation._wrap(this, 'get', instrumentation._patchHandler());\n instrumentation._wrap(this, 'post', instrumentation._patchHandler());\n instrumentation._wrap(this, 'put', instrumentation._patchHandler());\n instrumentation._wrap(this, 'delete', instrumentation._patchHandler());\n instrumentation._wrap(this, 'options', instrumentation._patchHandler());\n instrumentation._wrap(this, 'patch', instrumentation._patchHandler());\n instrumentation._wrap(this, 'all', instrumentation._patchHandler());\n instrumentation._wrap(this, 'on', instrumentation._patchOnHandler());\n instrumentation._wrap(this, 'use', instrumentation._patchMiddlewareHandler());\n }\n }\n\n try {\n moduleExports.Hono = WrappedHono;\n } catch {\n // This is a workaround for environments where direct assignment is not allowed.\n return { ...moduleExports, Hono: WrappedHono };\n }\n\n return moduleExports;\n }\n\n /**\n * Patches the route handler to instrument it.\n */\n _patchHandler() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n return function (original) {\n return function wrappedHandler( ...args) {\n if (typeof args[0] === 'string') {\n const path = args[0];\n if (args.length === 1) {\n return original.apply(this, [path]);\n }\n\n const handlers = args.slice(1);\n return original.apply(this, [\n path,\n ...handlers.map(handler => instrumentation._wrapHandler(handler )),\n ]);\n }\n\n return original.apply(\n this,\n args.map(handler => instrumentation._wrapHandler(handler )),\n );\n };\n };\n }\n\n /**\n * Patches the 'on' handler to instrument it.\n */\n _patchOnHandler() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n return function (original) {\n return function wrappedHandler( ...args) {\n const handlers = args.slice(2);\n return original.apply(this, [\n ...args.slice(0, 2),\n ...handlers.map(handler => instrumentation._wrapHandler(handler )),\n ]);\n };\n };\n }\n\n /**\n * Patches the middleware handler to instrument it.\n */\n _patchMiddlewareHandler() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n return function (original) {\n return function wrappedHandler( ...args) {\n if (typeof args[0] === 'string') {\n const path = args[0];\n if (args.length === 1) {\n return original.apply(this, [path]);\n }\n\n const handlers = args.slice(1);\n return original.apply(this, [\n path,\n ...handlers.map(handler => instrumentation._wrapHandler(handler )),\n ]);\n }\n\n return original.apply(\n this,\n args.map(handler => instrumentation._wrapHandler(handler )),\n );\n };\n };\n }\n\n /**\n * Wraps a handler or middleware handler to apply instrumentation.\n */\n _wrapHandler(handler) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instrumentation = this;\n\n return function ( c, next) {\n if (!instrumentation.isEnabled()) {\n return handler.apply(this, [c, next]);\n }\n\n const path = c.req.path;\n const span = instrumentation.tracer.startSpan(path);\n\n return context.with(trace.setSpan(context.active(), span), () => {\n return instrumentation._safeExecute(\n () => {\n const result = handler.apply(this, [c, next]);\n if (isThenable(result)) {\n return result.then(result => {\n const type = instrumentation._determineHandlerType(result);\n span.setAttributes({\n [AttributeNames.HONO_TYPE]: type,\n [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n });\n instrumentation.getConfig().responseHook?.(span);\n return result;\n });\n } else {\n const type = instrumentation._determineHandlerType(result);\n span.setAttributes({\n [AttributeNames.HONO_TYPE]: type,\n [AttributeNames.HONO_NAME]: type === HonoTypes.REQUEST_HANDLER ? path : handler.name || 'anonymous',\n });\n instrumentation.getConfig().responseHook?.(span);\n return result;\n }\n },\n () => span.end(),\n error => {\n instrumentation._handleError(span, error);\n span.end();\n },\n );\n });\n };\n }\n\n /**\n * Safely executes a function and handles errors.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _safeExecute(execute, onSuccess, onFailure) {\n try {\n const result = execute();\n\n if (isThenable(result)) {\n result.then(\n () => onSuccess(),\n (error) => onFailure(error),\n );\n } else {\n onSuccess();\n }\n\n return result;\n } catch (error) {\n onFailure(error);\n throw error;\n }\n }\n\n /**\n * Determines the handler type based on the result.\n * @param result\n * @private\n */\n _determineHandlerType(result) {\n return result === undefined ? HonoTypes.MIDDLEWARE : HonoTypes.REQUEST_HANDLER;\n }\n\n /**\n * Handles errors by setting the span status and recording the exception.\n */\n _handleError(span, error) {\n if (error instanceof Error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n }\n }\n}\n\nexport { HonoInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { KoaInstrumentation } from '@opentelemetry/instrumentation-koa';\nimport { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';\nimport { spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, getIsolationScope, getDefaultIsolationScope, debug, defineIntegration, captureException } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan, ensureIsWrapped } from '@sentry/node-core';\nimport { DEBUG_BUILD } from '../../debug-build.js';\n\nconst INTEGRATION_NAME = 'Koa';\n\nconst instrumentKoa = generateInstrumentOnce(\n INTEGRATION_NAME,\n KoaInstrumentation,\n (options = {}) => {\n return {\n ignoreLayersType: options.ignoreLayersType ,\n requestHook(span, info) {\n addOriginToSpan(span, 'auto.http.otel.koa');\n\n const attributes = spanToJSON(span).data;\n\n // this is one of: middleware, router\n const type = attributes['koa.type'];\n if (type) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, `${type}.koa`);\n }\n\n // Also update the name\n const name = attributes['koa.name'];\n if (typeof name === 'string') {\n // Somehow, name is sometimes `''` for middleware spans\n // See: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2220\n span.updateName(name || '< unknown >');\n }\n\n if (getIsolationScope() === getDefaultIsolationScope()) {\n DEBUG_BUILD && debug.warn('Isolation scope is default isolation scope - skipping setting transactionName');\n return;\n }\n const route = attributes[ATTR_HTTP_ROUTE];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const method = info.context?.request?.method?.toUpperCase() || 'GET';\n if (route) {\n getIsolationScope().setTransactionName(`${method} ${route}`);\n }\n },\n } ;\n },\n);\n\nconst _koaIntegration = ((options = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentKoa(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Koa](https://koajs.com/).\n *\n * If you also want to capture errors, you need to call `setupKoaErrorHandler(app)` after you set up your Koa server.\n *\n * For more information, see the [koa documentation](https://docs.sentry.io/platforms/javascript/guides/koa/).\n *\n * @param {KoaOptions} options Configuration options for the Koa integration.\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.koaIntegration()],\n * })\n * ```\n *\n * @example\n * ```javascript\n * // To ignore middleware spans\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [\n * Sentry.koaIntegration({\n * ignoreLayersType: ['middleware']\n * })\n * ],\n * })\n * ```\n */\nconst koaIntegration = defineIntegration(_koaIntegration);\n\n/**\n * Add an Koa error handler to capture errors to Sentry.\n *\n * The error handler must be before any other middleware and after all controllers.\n *\n * @param app The Express instances\n * @param options {ExpressHandlerOptions} Configuration options for the handler\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const Koa = require(\"koa\");\n *\n * const app = new Koa();\n *\n * Sentry.setupKoaErrorHandler(app);\n *\n * // Add your routes, etc.\n *\n * app.listen(3000);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst setupKoaErrorHandler = (app) => {\n app.use(async (ctx, next) => {\n try {\n await next();\n } catch (error) {\n captureException(error, {\n mechanism: {\n handled: false,\n type: 'auto.middleware.koa',\n },\n });\n throw error;\n }\n });\n\n ensureIsWrapped(app.use, 'koa');\n};\n\nexport { instrumentKoa, koaIntegration, setupKoaErrorHandler };\n//# sourceMappingURL=koa.js.map\n", + "import { ConnectInstrumentation } from '@opentelemetry/instrumentation-connect';\nimport { defineIntegration, getClient, captureException, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce, ensureIsWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Connect';\n\nconst instrumentConnect = generateInstrumentOnce(INTEGRATION_NAME, () => new ConnectInstrumentation());\n\nconst _connectIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentConnect();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for [Connect](https://github.com/senchalabs/connect/).\n *\n * If you also want to capture errors, you need to call `setupConnectErrorHandler(app)` after you initialize your connect app.\n *\n * For more information, see the [connect documentation](https://docs.sentry.io/platforms/javascript/guides/connect/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.connectIntegration()],\n * })\n * ```\n */\nconst connectIntegration = defineIntegration(_connectIntegration);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction connectErrorMiddleware(err, req, res, next) {\n captureException(err, {\n mechanism: {\n handled: false,\n type: 'auto.middleware.connect',\n },\n });\n next(err);\n}\n\n/**\n * Add a Connect middleware to capture errors to Sentry.\n *\n * @param app The Connect app to attach the error handler to\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n * const connect = require(\"connect\");\n *\n * const app = connect();\n *\n * Sentry.setupConnectErrorHandler(app);\n *\n * // Add you connect routes here\n *\n * app.listen(3000);\n * ```\n */\nconst setupConnectErrorHandler = (app) => {\n app.use(connectErrorMiddleware);\n\n // Sadly, ConnectInstrumentation has no requestHook, so we need to add the attributes here\n // We register this hook in this method, because if we register it in the integration `setup`,\n // it would always run even for users that are not even using connect\n const client = getClient();\n if (client) {\n client.on('spanStart', span => {\n addConnectSpanAttributes(span);\n });\n }\n\n ensureIsWrapped(app.use, 'connect');\n};\n\nfunction addConnectSpanAttributes(span) {\n const attributes = spanToJSON(span).data;\n\n // this is one of: middleware, request_handler\n const type = attributes['connect.type'];\n\n // If this is already set, or we have no connect span, no need to process again...\n if (attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] || !type) {\n return;\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.http.otel.connect',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: `${type}.connect`,\n });\n\n // Also update the name, we don't need the \"middleware - \" prefix\n const name = attributes['connect.name'];\n if (typeof name === 'string') {\n span.updateName(name);\n }\n}\n\nexport { connectIntegration, instrumentConnect, setupConnectErrorHandler };\n//# sourceMappingURL=connect.js.map\n", + "import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';\nimport { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst TEDIUS_INSTRUMENTED_METHODS = new Set([\n 'callProcedure',\n 'execSql',\n 'execSqlBatch',\n 'execBulkLoad',\n 'prepare',\n 'execute',\n]);\n\nconst INTEGRATION_NAME = 'Tedious';\n\nconst instrumentTedious = generateInstrumentOnce(INTEGRATION_NAME, () => new TediousInstrumentation({}));\n\nconst _tediousIntegration = (() => {\n let instrumentationWrappedCallback;\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const instrumentation = instrumentTedious();\n instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n },\n\n setup(client) {\n instrumentationWrappedCallback?.(() =>\n client.on('spanStart', span => {\n const { description, data } = spanToJSON(span);\n // Tedius integration always set a span name and `db.system` attribute to `mssql`.\n if (!description || data['db.system'] !== 'mssql') {\n return;\n }\n\n const operation = description.split(' ')[0] || '';\n if (TEDIUS_INSTRUMENTED_METHODS.has(operation)) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.tedious');\n }\n }),\n );\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [tedious](https://www.npmjs.com/package/tedious) library.\n *\n * For more information, see the [`tediousIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/tedious/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.tediousIntegration()],\n * });\n * ```\n */\nconst tediousIntegration = defineIntegration(_tediousIntegration);\n\nexport { instrumentTedious, tediousIntegration };\n//# sourceMappingURL=tedious.js.map\n", + "import { GenericPoolInstrumentation } from '@opentelemetry/instrumentation-generic-pool';\nimport { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nconst instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n let instrumentationWrappedCallback;\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const instrumentation = instrumentGenericPool();\n instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n },\n\n setup(client) {\n instrumentationWrappedCallback?.(() =>\n client.on('spanStart', span => {\n const spanJSON = spanToJSON(span);\n\n const spanDescription = spanJSON.description;\n\n // typo in emitted span for version <= 0.38.0 of @opentelemetry/instrumentation-generic-pool\n const isGenericPoolSpan =\n spanDescription === 'generic-pool.aquire' || spanDescription === 'generic-pool.acquire';\n\n if (isGenericPoolSpan) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.generic_pool');\n }\n }),\n );\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [generic-pool](https://www.npmjs.com/package/generic-pool) library.\n *\n * For more information, see the [`genericPoolIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/genericpool/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.genericPoolIntegration()],\n * });\n * ```\n */\nconst genericPoolIntegration = defineIntegration(_genericPoolIntegration);\n\nexport { genericPoolIntegration, instrumentGenericPool };\n//# sourceMappingURL=genericPool.js.map\n", + "import { AmqplibInstrumentation } from '@opentelemetry/instrumentation-amqplib';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Amqplib';\n\nconst config = {\n consumeEndHook: (span) => {\n addOriginToSpan(span, 'auto.amqplib.otel.consumer');\n },\n publishHook: (span) => {\n addOriginToSpan(span, 'auto.amqplib.otel.publisher');\n },\n};\n\nconst instrumentAmqplib = generateInstrumentOnce(INTEGRATION_NAME, () => new AmqplibInstrumentation(config));\n\nconst _amqplibIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentAmqplib();\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [amqplib](https://www.npmjs.com/package/amqplib) library.\n *\n * For more information, see the [`amqplibIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/amqplib/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.amqplibIntegration()],\n * });\n * ```\n */\nconst amqplibIntegration = defineIntegration(_amqplibIntegration);\n\nexport { amqplibIntegration, instrumentAmqplib };\n//# sourceMappingURL=amqplib.js.map\n", + "const INTEGRATION_NAME = 'VercelAI';\n\nexport { INTEGRATION_NAME };\n//# sourceMappingURL=constants.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, getClient, handleCallbackErrors, addNonEnumerableProperty, getActiveSpan, _INTERNAL_getSpanContextForToolCallId, withScope, captureException, _INTERNAL_cleanupToolCallSpanContext } from '@sentry/core';\nimport { INTEGRATION_NAME } from './constants.js';\n\nconst SUPPORTED_VERSIONS = ['>=3.0.0 <7'];\n\n// List of patched methods\n// From: https://sdk.vercel.ai/docs/ai-sdk-core/telemetry#collected-data\nconst INSTRUMENTED_METHODS = [\n 'generateText',\n 'streamText',\n 'generateObject',\n 'streamObject',\n 'embed',\n 'embedMany',\n 'rerank',\n] ;\n\nfunction isToolError(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n const candidate = obj ;\n return (\n 'type' in candidate &&\n 'error' in candidate &&\n 'toolName' in candidate &&\n 'toolCallId' in candidate &&\n candidate.type === 'tool-error' &&\n candidate.error instanceof Error\n );\n}\n\n/**\n * Process tool call results: capture tool errors and clean up span context mappings.\n *\n * Error checking runs first (needs span context for linking), then cleanup removes all entries.\n * Tool errors are not rejected in Vercel AI V5 — they appear as metadata in the result content.\n */\nfunction processToolCallResults(result) {\n if (typeof result !== 'object' || result === null || !('content' in result)) {\n return;\n }\n\n const resultObj = result ;\n if (!Array.isArray(resultObj.content)) {\n return;\n }\n\n captureToolErrors(resultObj.content);\n cleanupToolCallSpanContexts(resultObj.content);\n}\n\nfunction captureToolErrors(content) {\n for (const item of content) {\n if (!isToolError(item)) {\n continue;\n }\n\n // Try to get the span context associated with this tool call ID\n const spanContext = _INTERNAL_getSpanContextForToolCallId(item.toolCallId);\n\n if (spanContext) {\n // We have the span context, so link the error using span and trace IDs\n withScope(scope => {\n scope.setContext('trace', {\n trace_id: spanContext.traceId,\n span_id: spanContext.spanId,\n });\n\n scope.setTag('vercel.ai.tool.name', item.toolName);\n scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n scope.setLevel('error');\n\n captureException(item.error, {\n mechanism: {\n type: 'auto.vercelai.otel',\n handled: false,\n },\n });\n });\n } else {\n // Fallback: capture without span linking\n withScope(scope => {\n scope.setTag('vercel.ai.tool.name', item.toolName);\n scope.setTag('vercel.ai.tool.callId', item.toolCallId);\n scope.setLevel('error');\n\n captureException(item.error, {\n mechanism: {\n type: 'auto.vercelai.otel',\n handled: false,\n },\n });\n });\n }\n }\n}\n\n/**\n * Remove span context entries for all completed tool calls in the content array.\n */\nfunction cleanupToolCallSpanContexts(content) {\n for (const item of content) {\n if (\n typeof item === 'object' &&\n item !== null &&\n 'toolCallId' in item &&\n typeof (item ).toolCallId === 'string'\n ) {\n _INTERNAL_cleanupToolCallSpanContext((item ).toolCallId );\n }\n }\n}\n\n/**\n * Determines whether to record inputs and outputs for Vercel AI telemetry based on the configuration hierarchy.\n *\n * The order of precedence is:\n * 1. The vercel ai integration options\n * 2. The experimental_telemetry options in the vercel ai method calls\n * 3. When telemetry is explicitly enabled (isEnabled: true), default to recording\n * 4. Otherwise, use the sendDefaultPii option from client options\n */\nfunction determineRecordingSettings(\n integrationRecordingOptions,\n methodTelemetryOptions,\n telemetryExplicitlyEnabled,\n defaultRecordingEnabled,\n) {\n const recordInputs =\n integrationRecordingOptions?.recordInputs !== undefined\n ? integrationRecordingOptions.recordInputs\n : methodTelemetryOptions.recordInputs !== undefined\n ? methodTelemetryOptions.recordInputs\n : telemetryExplicitlyEnabled === true\n ? true // When telemetry is explicitly enabled, default to recording inputs\n : defaultRecordingEnabled;\n\n const recordOutputs =\n integrationRecordingOptions?.recordOutputs !== undefined\n ? integrationRecordingOptions.recordOutputs\n : methodTelemetryOptions.recordOutputs !== undefined\n ? methodTelemetryOptions.recordOutputs\n : telemetryExplicitlyEnabled === true\n ? true // When telemetry is explicitly enabled, default to recording inputs\n : defaultRecordingEnabled;\n\n return { recordInputs, recordOutputs };\n}\n\n/**\n * This detects is added by the Sentry Vercel AI Integration to detect if the integration should\n * be enabled.\n *\n * It also patches the `ai` module to enable Vercel AI telemetry automatically for all methods.\n */\nclass SentryVercelAiInstrumentation extends InstrumentationBase {\n __init() {this._isPatched = false;}\n __init2() {this._callbacks = [];}\n\n constructor(config = {}) {\n super('@sentry/instrumentation-vercel-ai', SDK_VERSION, config);SentryVercelAiInstrumentation.prototype.__init.call(this);SentryVercelAiInstrumentation.prototype.__init2.call(this); }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition('ai', SUPPORTED_VERSIONS, this._patch.bind(this));\n return module;\n }\n\n /**\n * Call the provided callback when the module is patched.\n * If it has already been patched, the callback will be called immediately.\n */\n callWhenPatched(callback) {\n if (this._isPatched) {\n callback();\n } else {\n this._callbacks.push(callback);\n }\n }\n\n /**\n * Patches module exports to enable Vercel AI telemetry.\n */\n _patch(moduleExports) {\n this._isPatched = true;\n\n this._callbacks.forEach(callback => callback());\n this._callbacks = [];\n\n const generatePatch = (originalMethod) => {\n return new Proxy(originalMethod, {\n apply: (target, thisArg, args) => {\n const existingExperimentalTelemetry = args[0].experimental_telemetry || {};\n const isEnabled = existingExperimentalTelemetry.isEnabled;\n\n const client = getClient();\n const integration = client?.getIntegrationByName(INTEGRATION_NAME);\n const integrationOptions = integration?.options;\n const shouldRecordInputsAndOutputs = integration ? Boolean(client?.getOptions().sendDefaultPii) : false;\n\n const { recordInputs, recordOutputs } = determineRecordingSettings(\n integrationOptions,\n existingExperimentalTelemetry,\n isEnabled,\n shouldRecordInputsAndOutputs,\n );\n\n args[0].experimental_telemetry = {\n ...existingExperimentalTelemetry,\n isEnabled: isEnabled !== undefined ? isEnabled : true,\n recordInputs,\n recordOutputs,\n };\n\n return handleCallbackErrors(\n () => Reflect.apply(target, thisArg, args),\n error => {\n // This error bubbles up to unhandledrejection handler (if not handled before),\n // where we do not know the active span anymore\n // So to circumvent this, we set the active span on the error object\n // which is picked up by the unhandledrejection handler\n if (error && typeof error === 'object') {\n addNonEnumerableProperty(error, '_sentry_active_span', getActiveSpan());\n }\n },\n () => {},\n result => {\n processToolCallResults(result);\n },\n );\n },\n });\n };\n\n // Is this an ESM module?\n // https://tc39.es/ecma262/#sec-module-namespace-objects\n if (Object.prototype.toString.call(moduleExports) === '[object Module]') {\n // In ESM we take the usual route and just replace the exports we want to instrument\n for (const method of INSTRUMENTED_METHODS) {\n // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n if (moduleExports[method] != null) {\n moduleExports[method] = generatePatch(moduleExports[method]);\n }\n }\n\n return moduleExports;\n } else {\n // In CJS we can't replace the exports in the original module because they\n // don't have setters, so we create a new object with the same properties\n const patchedModuleExports = INSTRUMENTED_METHODS.reduce((acc, curr) => {\n // Skip methods that don't exist in this version of the AI SDK (e.g., rerank was added in v6)\n if (moduleExports[curr] != null) {\n acc[curr] = generatePatch(moduleExports[curr]);\n }\n return acc;\n }, {} );\n\n return { ...moduleExports, ...patchedModuleExports };\n }\n }\n}\n\nexport { SentryVercelAiInstrumentation, cleanupToolCallSpanContexts, determineRecordingSettings, processToolCallResults };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { defineIntegration, addVercelAiProcessors } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { INTEGRATION_NAME } from './constants.js';\nimport { SentryVercelAiInstrumentation } from './instrumentation.js';\n\nconst instrumentVercelAi = generateInstrumentOnce(INTEGRATION_NAME, () => new SentryVercelAiInstrumentation({}));\n\n/**\n * Determines if the integration should be forced based on environment and package availability.\n * Returns true if the 'ai' package is available.\n */\nfunction shouldForceIntegration(client) {\n const modules = client.getIntegrationByName('Modules');\n return !!modules?.getModules?.()?.ai;\n}\n\nconst _vercelAIIntegration = ((options = {}) => {\n let instrumentation;\n\n return {\n name: INTEGRATION_NAME,\n options,\n setupOnce() {\n instrumentation = instrumentVercelAi();\n },\n afterAllSetup(client) {\n // Auto-detect if we should force the integration when running with 'ai' package available\n // Note that this can only be detected if the 'Modules' integration is available, and running in CJS mode\n const shouldForce = options.force ?? shouldForceIntegration(client);\n\n if (shouldForce) {\n addVercelAiProcessors(client);\n } else {\n instrumentation?.callWhenPatched(() => addVercelAiProcessors(client));\n }\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the [ai](https://www.npmjs.com/package/ai) library.\n * This integration is not enabled by default, you need to manually add it.\n *\n * For more information, see the [`ai` documentation](https://sdk.vercel.ai/docs/ai-sdk-core/telemetry).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.vercelAIIntegration()],\n * });\n * ```\n *\n * This integration adds tracing support to all `ai` function calls.\n * You need to opt-in to collecting spans for a specific call,\n * you can do so by setting `experimental_telemetry.isEnabled` to `true` in the first argument of the function call.\n *\n * ```javascript\n * const result = await generateText({\n * model: openai('gpt-4-turbo'),\n * experimental_telemetry: { isEnabled: true },\n * });\n * ```\n *\n * If you want to collect inputs and outputs for a specific call, you must specifically opt-in to each\n * function call by setting `experimental_telemetry.recordInputs` and `experimental_telemetry.recordOutputs`\n * to `true`.\n *\n * ```javascript\n * const result = await generateText({\n * model: openai('gpt-4-turbo'),\n * experimental_telemetry: { isEnabled: true, recordInputs: true, recordOutputs: true },\n * });\n */\nconst vercelAIIntegration = defineIntegration(_vercelAIIntegration);\n\nexport { instrumentVercelAi, vercelAIIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, _INTERNAL_shouldSkipAiProviderWrapping, OPENAI_INTEGRATION_NAME, instrumentOpenAiClient } from '@sentry/core';\n\nconst supportedVersions = ['>=4.0.0 <7'];\n\n/**\n * Sentry OpenAI instrumentation using OpenTelemetry.\n */\nclass SentryOpenAiInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-openai', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition('openai', supportedVersions, this._patch.bind(this));\n return module;\n }\n\n /**\n * Core patch logic applying instrumentation to the OpenAI and AzureOpenAI client constructors.\n */\n _patch(exports$1) {\n let result = exports$1;\n result = this._patchClient(result, 'OpenAI');\n result = this._patchClient(result, 'AzureOpenAI');\n return result;\n }\n\n /**\n * Patch logic applying instrumentation to the specified client constructor.\n */\n _patchClient(exports$1, exportKey) {\n const Original = exports$1[exportKey];\n if (!Original) {\n return exports$1;\n }\n\n const config = this.getConfig();\n\n const WrappedOpenAI = function ( ...args) {\n // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n if (_INTERNAL_shouldSkipAiProviderWrapping(OPENAI_INTEGRATION_NAME)) {\n return Reflect.construct(Original, args) ;\n }\n\n const instance = Reflect.construct(Original, args);\n\n return instrumentOpenAiClient(instance , config);\n } ;\n\n // Preserve static and prototype chains\n Object.setPrototypeOf(WrappedOpenAI, Original);\n Object.setPrototypeOf(WrappedOpenAI.prototype, Original.prototype);\n\n for (const key of Object.getOwnPropertyNames(Original)) {\n if (!['length', 'name', 'prototype'].includes(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n if (descriptor) {\n Object.defineProperty(WrappedOpenAI, key, descriptor);\n }\n }\n }\n\n // Constructor replacement - handle read-only properties\n // The OpenAI property might have only a getter, so use defineProperty\n try {\n exports$1[exportKey] = WrappedOpenAI;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, exportKey, {\n value: WrappedOpenAI,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Wrap the default export if it points to the original constructor\n // Constructor replacement - handle read-only properties\n // The OpenAI property might have only a getter, so use defineProperty\n if (exports$1.default === Original) {\n try {\n exports$1.default = WrappedOpenAI;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, 'default', {\n value: WrappedOpenAI,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n return exports$1;\n }\n}\n\nexport { SentryOpenAiInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { OPENAI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryOpenAiInstrumentation } from './instrumentation.js';\n\nconst instrumentOpenAi = generateInstrumentOnce(\n OPENAI_INTEGRATION_NAME,\n options => new SentryOpenAiInstrumentation(options),\n);\n\nconst _openAiIntegration = ((options = {}) => {\n return {\n name: OPENAI_INTEGRATION_NAME,\n setupOnce() {\n instrumentOpenAi(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the OpenAI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments OpenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.openAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.openAIIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.openAIIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n */\nconst openAIIntegration = defineIntegration(_openAiIntegration);\n\nexport { instrumentOpenAi, openAIIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, _INTERNAL_shouldSkipAiProviderWrapping, ANTHROPIC_AI_INTEGRATION_NAME, instrumentAnthropicAiClient } from '@sentry/core';\n\nconst supportedVersions = ['>=0.19.2 <1.0.0'];\n\n/**\n * Sentry Anthropic AI instrumentation using OpenTelemetry.\n */\nclass SentryAnthropicAiInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-anthropic-ai', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n '@anthropic-ai/sdk',\n supportedVersions,\n this._patch.bind(this),\n );\n return module;\n }\n\n /**\n * Core patch logic applying instrumentation to the Anthropic AI client constructor.\n */\n _patch(exports$1) {\n const Original = exports$1.Anthropic;\n\n const config = this.getConfig();\n\n const WrappedAnthropic = function ( ...args) {\n // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n if (_INTERNAL_shouldSkipAiProviderWrapping(ANTHROPIC_AI_INTEGRATION_NAME)) {\n return Reflect.construct(Original, args) ;\n }\n\n const instance = Reflect.construct(Original, args);\n\n return instrumentAnthropicAiClient(instance , config);\n } ;\n\n // Preserve static and prototype chains\n Object.setPrototypeOf(WrappedAnthropic, Original);\n Object.setPrototypeOf(WrappedAnthropic.prototype, Original.prototype);\n\n for (const key of Object.getOwnPropertyNames(Original)) {\n if (!['length', 'name', 'prototype'].includes(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n if (descriptor) {\n Object.defineProperty(WrappedAnthropic, key, descriptor);\n }\n }\n }\n\n // Constructor replacement - handle read-only properties\n // The Anthropic property might have only a getter, so use defineProperty\n try {\n exports$1.Anthropic = WrappedAnthropic;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, 'Anthropic', {\n value: WrappedAnthropic,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n\n // Wrap the default export if it points to the original constructor\n // Constructor replacement - handle read-only properties\n // The Anthropic property might have only a getter, so use defineProperty\n if (exports$1.default === Original) {\n try {\n exports$1.default = WrappedAnthropic;\n } catch {\n // If direct assignment fails, override the property descriptor\n Object.defineProperty(exports$1, 'default', {\n value: WrappedAnthropic,\n writable: true,\n configurable: true,\n enumerable: true,\n });\n }\n }\n return exports$1;\n }\n}\n\nexport { SentryAnthropicAiInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { ANTHROPIC_AI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryAnthropicAiInstrumentation } from './instrumentation.js';\n\nconst instrumentAnthropicAi = generateInstrumentOnce(\n ANTHROPIC_AI_INTEGRATION_NAME,\n options => new SentryAnthropicAiInstrumentation(options),\n);\n\nconst _anthropicAIIntegration = ((options = {}) => {\n return {\n name: ANTHROPIC_AI_INTEGRATION_NAME,\n options,\n setupOnce() {\n instrumentAnthropicAi(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the Anthropic AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Anthropic AI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.anthropicAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.anthropicAIIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.anthropicAIIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n */\nconst anthropicAIIntegration = defineIntegration(_anthropicAIIntegration);\n\nexport { anthropicAIIntegration, instrumentAnthropicAi };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, replaceExports, _INTERNAL_shouldSkipAiProviderWrapping, GOOGLE_GENAI_INTEGRATION_NAME, instrumentGoogleGenAIClient } from '@sentry/core';\n\nconst supportedVersions = ['>=0.10.0 <2'];\n\n/**\n * Represents the patched shape of the Google GenAI module export.\n */\n\n/**\n * Sentry Google GenAI instrumentation using OpenTelemetry.\n */\nclass SentryGoogleGenAiInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-google-genai', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n '@google/genai',\n supportedVersions,\n exports$1 => this._patch(exports$1),\n exports$1 => exports$1,\n // In CJS, @google/genai re-exports from (dist/node/index.cjs) file.\n // Patching only the root module sometimes misses the real implementation or\n // gets overwritten when that file is loaded. We add a file-level patch so that\n // _patch runs again on the concrete implementation\n [\n new InstrumentationNodeModuleFile(\n '@google/genai/dist/node/index.cjs',\n supportedVersions,\n exports$1 => this._patch(exports$1),\n exports$1 => exports$1,\n ),\n ],\n );\n return module;\n }\n\n /**\n * Core patch logic applying instrumentation to the Google GenAI client constructor.\n */\n _patch(exports$1) {\n const Original = exports$1.GoogleGenAI;\n const config = this.getConfig();\n\n if (typeof Original !== 'function') {\n return exports$1;\n }\n\n const WrappedGoogleGenAI = function ( ...args) {\n // Check if wrapping should be skipped (e.g., when LangChain is handling instrumentation)\n if (_INTERNAL_shouldSkipAiProviderWrapping(GOOGLE_GENAI_INTEGRATION_NAME)) {\n return Reflect.construct(Original, args) ;\n }\n\n const instance = Reflect.construct(Original, args);\n\n return instrumentGoogleGenAIClient(instance, config);\n };\n\n // Preserve static and prototype chains\n Object.setPrototypeOf(WrappedGoogleGenAI, Original);\n Object.setPrototypeOf(WrappedGoogleGenAI.prototype, Original.prototype);\n\n for (const key of Object.getOwnPropertyNames(Original)) {\n if (!['length', 'name', 'prototype'].includes(key)) {\n const descriptor = Object.getOwnPropertyDescriptor(Original, key);\n if (descriptor) {\n Object.defineProperty(WrappedGoogleGenAI, key, descriptor);\n }\n }\n }\n\n // Replace google genai exports with the wrapped constructor\n replaceExports(exports$1, 'GoogleGenAI', WrappedGoogleGenAI);\n\n return exports$1;\n }\n}\n\nexport { SentryGoogleGenAiInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { GOOGLE_GENAI_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryGoogleGenAiInstrumentation } from './instrumentation.js';\n\nconst instrumentGoogleGenAI = generateInstrumentOnce(\n GOOGLE_GENAI_INTEGRATION_NAME,\n options => new SentryGoogleGenAiInstrumentation(options),\n);\n\nconst _googleGenAIIntegration = ((options = {}) => {\n return {\n name: GOOGLE_GENAI_INTEGRATION_NAME,\n setupOnce() {\n instrumentGoogleGenAI(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for the Google Generative AI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments Google GenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.googleGenAiIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.googleGenAiIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.googleGenAiIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n */\nconst googleGenAIIntegration = defineIntegration(_googleGenAIIntegration);\n\nexport { googleGenAIIntegration, instrumentGoogleGenAI };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, _INTERNAL_skipAiProviderWrapping, OPENAI_INTEGRATION_NAME, ANTHROPIC_AI_INTEGRATION_NAME, GOOGLE_GENAI_INTEGRATION_NAME, createLangChainCallbackHandler } from '@sentry/core';\n\nconst supportedVersions = ['>=0.1.0 <2.0.0'];\n\n/**\n * Augments a callback handler list with Sentry's handler if not already present\n */\nfunction augmentCallbackHandlers(handlers, sentryHandler) {\n // Handle null/undefined - return array with just our handler\n if (!handlers) {\n return [sentryHandler];\n }\n\n // If handlers is already an array\n if (Array.isArray(handlers)) {\n // Check if our handler is already in the list\n if (handlers.includes(sentryHandler)) {\n return handlers;\n }\n // Add our handler to the list\n return [...handlers, sentryHandler];\n }\n\n // If it's a single handler object, convert to array\n if (typeof handlers === 'object') {\n return [handlers, sentryHandler];\n }\n\n // Unknown type - return original\n return handlers;\n}\n\n/**\n * Wraps Runnable methods (invoke, stream, batch) to inject Sentry callbacks at request time\n * Uses a Proxy to intercept method calls and augment the options.callbacks\n */\nfunction wrapRunnableMethod(\n originalMethod,\n sentryHandler,\n _methodName,\n) {\n return new Proxy(originalMethod, {\n apply(target, thisArg, args) {\n // LangChain Runnable method signatures:\n // invoke(input, options?) - options contains callbacks\n // stream(input, options?) - options contains callbacks\n // batch(inputs, options?) - options contains callbacks\n\n // Options is typically the second argument\n const optionsIndex = 1;\n let options = args[optionsIndex] ;\n\n // If options don't exist or aren't an object, create them\n if (!options || typeof options !== 'object' || Array.isArray(options)) {\n options = {};\n args[optionsIndex] = options;\n }\n\n // Inject our callback handler into options.callbacks (request time callbacks)\n const existingCallbacks = options.callbacks;\n const augmentedCallbacks = augmentCallbackHandlers(existingCallbacks, sentryHandler);\n options.callbacks = augmentedCallbacks;\n\n // Call original method with augmented options\n return Reflect.apply(target, thisArg, args);\n },\n }) ;\n}\n\n/**\n * Sentry LangChain instrumentation using OpenTelemetry.\n */\nclass SentryLangChainInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-langchain', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n * We patch the BaseChatModel class methods to inject callbacks\n *\n * We hook into provider packages (@langchain/anthropic, @langchain/openai, etc.)\n * because @langchain/core is often bundled and not loaded as a separate module\n */\n init() {\n const modules = [];\n\n // Hook into common LangChain provider packages\n const providerPackages = [\n '@langchain/anthropic',\n '@langchain/openai',\n '@langchain/google-genai',\n '@langchain/mistralai',\n '@langchain/google-vertexai',\n '@langchain/groq',\n ];\n\n for (const packageName of providerPackages) {\n // In CJS, LangChain packages re-export from dist/index.cjs files.\n // Patching only the root module sometimes misses the real implementation or\n // gets overwritten when that file is loaded. We add a file-level patch so that\n // _patch runs again on the concrete implementation\n modules.push(\n new InstrumentationNodeModuleDefinition(\n packageName,\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n [\n new InstrumentationNodeModuleFile(\n `${packageName}/dist/index.cjs`,\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n ),\n ],\n ),\n );\n }\n\n // Hook into main 'langchain' package to catch initChatModel (v1+)\n modules.push(\n new InstrumentationNodeModuleDefinition(\n 'langchain',\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n [\n // To catch the CJS build that contains ConfigurableModel / initChatModel for v1\n new InstrumentationNodeModuleFile(\n 'langchain/dist/chat_models/universal.cjs',\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n ),\n ],\n ),\n );\n\n return modules;\n }\n\n /**\n * Core patch logic - patches chat model methods to inject Sentry callbacks\n * This is called when a LangChain provider package is loaded\n */\n _patch(exports$1) {\n // Skip AI provider wrapping now that LangChain is actually being used\n // This prevents duplicate spans from Anthropic/OpenAI/GoogleGenAI standalone integrations\n _INTERNAL_skipAiProviderWrapping([\n OPENAI_INTEGRATION_NAME,\n ANTHROPIC_AI_INTEGRATION_NAME,\n GOOGLE_GENAI_INTEGRATION_NAME,\n ]);\n\n // Create a shared handler instance\n const sentryHandler = createLangChainCallbackHandler(this.getConfig());\n\n // Patch Runnable methods to inject callbacks at request time\n // This directly manipulates options.callbacks that LangChain uses\n this._patchRunnableMethods(exports$1, sentryHandler);\n\n return exports$1;\n }\n\n /**\n * Patches chat model methods (invoke, stream, batch) to inject Sentry callbacks\n * Finds a chat model class from the provider package exports and patches its prototype methods\n */\n _patchRunnableMethods(exports$1, sentryHandler) {\n // Known chat model class names for each provider\n const knownChatModelNames = [\n 'ChatAnthropic',\n 'ChatOpenAI',\n 'ChatGoogleGenerativeAI',\n 'ChatMistralAI',\n 'ChatVertexAI',\n 'ChatGroq',\n 'ConfigurableModel',\n ];\n\n const exportsToPatch = (exports$1.universal_exports ?? exports$1) ;\n\n const chatModelClass = Object.values(exportsToPatch).find(exp => {\n return typeof exp === 'function' && knownChatModelNames.includes(exp.name);\n }) ;\n\n if (!chatModelClass) {\n return;\n }\n\n // Patch directly on chatModelClass.prototype\n const targetProto = chatModelClass.prototype ;\n\n // Skip if already patched (both file-level and module-level hooks resolve to the same prototype)\n if (targetProto.__sentry_patched__) {\n return;\n }\n targetProto.__sentry_patched__ = true;\n\n // Patch the methods (invoke, stream, batch)\n // All chat model instances will inherit these patched methods\n const methodsToPatch = ['invoke', 'stream', 'batch'] ;\n\n for (const methodName of methodsToPatch) {\n const method = targetProto[methodName];\n if (typeof method === 'function') {\n targetProto[methodName] = wrapRunnableMethod(\n method ,\n sentryHandler);\n }\n }\n }\n}\n\nexport { SentryLangChainInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { LANGCHAIN_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangChainInstrumentation } from './instrumentation.js';\n\nconst instrumentLangChain = generateInstrumentOnce(\n LANGCHAIN_INTEGRATION_NAME,\n options => new SentryLangChainInstrumentation(options),\n);\n\nconst _langChainIntegration = ((options = {}) => {\n return {\n name: LANGCHAIN_INTEGRATION_NAME,\n setupOnce() {\n instrumentLangChain(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for LangChain.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangChain runnable instances\n * to capture telemetry data by injecting Sentry callback handlers into all LangChain calls.\n *\n * **Important:** This integration automatically skips wrapping the OpenAI, Anthropic, and Google GenAI\n * providers to prevent duplicate spans when using LangChain with these AI providers.\n * LangChain handles the instrumentation for all underlying AI providers.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * Sentry.init({\n * integrations: [Sentry.langChainIntegration()],\n * sendDefaultPii: true, // Enable to record inputs/outputs\n * });\n *\n * // LangChain calls are automatically instrumented\n * const model = new ChatOpenAI();\n * await model.invoke(\"What is the capital of France?\");\n * ```\n *\n * ## Manual Callback Handler\n *\n * You can also manually add the Sentry callback handler alongside other callbacks:\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n * import { ChatOpenAI } from '@langchain/openai';\n *\n * const sentryHandler = Sentry.createLangChainCallbackHandler({\n * recordInputs: true,\n * recordOutputs: true\n * });\n *\n * const model = new ChatOpenAI();\n * await model.invoke(\n * \"What is the capital of France?\",\n * { callbacks: [sentryHandler, myOtherCallback] }\n * );\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages/prompts (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.langChainIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.langChainIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n * ## Supported Events\n *\n * The integration captures the following LangChain lifecycle events:\n * - LLM/Chat Model: start, end, error\n * - Chain: start, end, error\n * - Tool: start, end, error\n *\n */\nconst langChainIntegration = defineIntegration(_langChainIntegration);\n\nexport { instrumentLangChain, langChainIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, instrumentLangGraph } from '@sentry/core';\n\nconst supportedVersions = ['>=0.0.0 <2.0.0'];\n\n/**\n * Sentry LangGraph instrumentation using OpenTelemetry.\n */\nclass SentryLangGraphInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super('@sentry/instrumentation-langgraph', SDK_VERSION, config);\n }\n\n /**\n * Initializes the instrumentation by defining the modules to be patched.\n */\n init() {\n const module = new InstrumentationNodeModuleDefinition(\n '@langchain/langgraph',\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n [\n new InstrumentationNodeModuleFile(\n /**\n * In CJS, LangGraph packages re-export from dist/index.cjs files.\n * Patching only the root module sometimes misses the real implementation or\n * gets overwritten when that file is loaded. We add a file-level patch so that\n * _patch runs again on the concrete implementation\n */\n '@langchain/langgraph/dist/index.cjs',\n supportedVersions,\n this._patch.bind(this),\n exports$1 => exports$1,\n ),\n ],\n );\n return module;\n }\n\n /**\n * Core patch logic applying instrumentation to the LangGraph module.\n */\n _patch(exports$1) {\n // Patch StateGraph.compile to instrument both compile() and invoke()\n if (exports$1.StateGraph && typeof exports$1.StateGraph === 'function') {\n instrumentLangGraph(\n exports$1.StateGraph.prototype ,\n this.getConfig(),\n );\n }\n\n return exports$1;\n }\n}\n\nexport { SentryLangGraphInstrumentation };\n//# sourceMappingURL=instrumentation.js.map\n", + "import { LANGGRAPH_INTEGRATION_NAME, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryLangGraphInstrumentation } from './instrumentation.js';\n\nconst instrumentLangGraph = generateInstrumentOnce(\n LANGGRAPH_INTEGRATION_NAME,\n options => new SentryLangGraphInstrumentation(options),\n);\n\nconst _langGraphIntegration = ((options = {}) => {\n return {\n name: LANGGRAPH_INTEGRATION_NAME,\n setupOnce() {\n instrumentLangGraph(options);\n },\n };\n}) ;\n\n/**\n * Adds Sentry tracing instrumentation for LangGraph.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments LangGraph StateGraph and compiled graph instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.langGraphIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.langGraphIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.langGraphIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n * ## Captured Operations\n *\n * The integration captures the following LangGraph operations:\n * - **Agent Creation** (`StateGraph.compile()`) - Creates a `gen_ai.create_agent` span\n * - **Agent Invocation** (`CompiledGraph.invoke()`) - Creates a `gen_ai.invoke_agent` span\n *\n * ## Captured Data\n *\n * When `recordInputs` and `recordOutputs` are enabled, the integration captures:\n * - Input messages from the graph state\n * - Output messages and LLM responses\n * - Tool calls made during agent execution\n * - Agent and graph names\n * - Available tools configured in the graph\n *\n */\nconst langGraphIntegration = defineIntegration(_langGraphIntegration);\n\nexport { instrumentLangGraph, langGraphIntegration };\n//# sourceMappingURL=index.js.map\n", + "import { InstrumentationBase } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION } from '@sentry/core';\nimport { patchFirestore } from './patches/firestore.js';\nimport { patchFunctions } from './patches/functions.js';\n\nconst DefaultFirebaseInstrumentationConfig = {};\nconst firestoreSupportedVersions = ['>=3.0.0 <5']; // firebase 9+\nconst functionsSupportedVersions = ['>=6.0.0 <7']; // firebase-functions v2\n\n/**\n * Instrumentation for Firebase services, specifically Firestore.\n */\nclass FirebaseInstrumentation extends InstrumentationBase {\n constructor(config = DefaultFirebaseInstrumentationConfig) {\n super('@sentry/instrumentation-firebase', SDK_VERSION, config);\n }\n\n /**\n * sets config\n * @param config\n */\n setConfig(config = {}) {\n super.setConfig({ ...DefaultFirebaseInstrumentationConfig, ...config });\n }\n\n /**\n *\n * @protected\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n init() {\n const modules = [];\n\n modules.push(patchFirestore(this.tracer, firestoreSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n modules.push(patchFunctions(this.tracer, functionsSupportedVersions, this._wrap, this._unwrap, this.getConfig()));\n\n return modules;\n }\n}\n\nexport { FirebaseInstrumentation };\n//# sourceMappingURL=firebaseInstrumentation.js.map\n", + "import * as net from 'node:net';\nimport { SpanKind, context, trace, diag } from '@opentelemetry/api';\nimport { InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, isWrapped, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\nimport { ATTR_DB_OPERATION_NAME, ATTR_DB_NAMESPACE, ATTR_DB_COLLECTION_NAME, ATTR_DB_SYSTEM_NAME, ATTR_SERVER_ADDRESS, ATTR_SERVER_PORT } from '@opentelemetry/semantic-conventions';\n\n// Inline minimal types used from `shimmer` to avoid importing shimmer's types directly.\n// We only need the shape for `wrap` and `unwrap` used in this file.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n/**\n *\n * @param tracer - Opentelemetry Tracer\n * @param firestoreSupportedVersions - supported version of firebase/firestore\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation wrap function\n */\nfunction patchFirestore(\n tracer,\n firestoreSupportedVersions,\n wrap,\n unwrap,\n config,\n) {\n const defaultFirestoreSpanCreationHook = () => {};\n\n let firestoreSpanCreationHook = defaultFirestoreSpanCreationHook;\n const configFirestoreSpanCreationHook = config.firestoreSpanCreationHook;\n\n if (typeof configFirestoreSpanCreationHook === 'function') {\n firestoreSpanCreationHook = (span) => {\n safeExecuteInTheMiddle(\n () => configFirestoreSpanCreationHook(span),\n error => {\n if (!error) {\n return;\n }\n diag.error(error?.message);\n },\n true,\n );\n };\n }\n\n const moduleFirestoreCJS = new InstrumentationNodeModuleDefinition(\n '@firebase/firestore',\n firestoreSupportedVersions,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (moduleExports) => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n );\n const files = [\n '@firebase/firestore/dist/lite/index.node.cjs.js',\n '@firebase/firestore/dist/lite/index.node.mjs.js',\n '@firebase/firestore/dist/lite/index.rn.esm2017.js',\n '@firebase/firestore/dist/lite/index.cjs.js',\n ];\n\n for (const file of files) {\n moduleFirestoreCJS.files.push(\n new InstrumentationNodeModuleFile(\n file,\n firestoreSupportedVersions,\n moduleExports => wrapMethods(moduleExports, wrap, unwrap, tracer, firestoreSpanCreationHook),\n moduleExports => unwrapMethods(moduleExports, unwrap),\n ),\n );\n }\n\n return moduleFirestoreCJS;\n}\n\nfunction wrapMethods(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports,\n wrap,\n unwrap,\n tracer,\n firestoreSpanCreationHook,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n unwrapMethods(moduleExports, unwrap);\n\n wrap(moduleExports, 'addDoc', patchAddDoc(tracer, firestoreSpanCreationHook));\n wrap(moduleExports, 'getDocs', patchGetDocs(tracer, firestoreSpanCreationHook));\n wrap(moduleExports, 'setDoc', patchSetDoc(tracer, firestoreSpanCreationHook));\n wrap(moduleExports, 'deleteDoc', patchDeleteDoc(tracer, firestoreSpanCreationHook));\n\n return moduleExports;\n}\n\nfunction unwrapMethods(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n moduleExports,\n unwrap,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n for (const method of ['addDoc', 'getDocs', 'setDoc', 'deleteDoc']) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isWrapped(moduleExports[method])) {\n unwrap(moduleExports, method);\n }\n }\n return moduleExports;\n}\n\nfunction patchAddDoc(\n tracer,\n firestoreSpanCreationHook,\n)\n\n {\n return function addDoc(original) {\n return function (\n reference,\n data,\n ) {\n const span = startDBSpan(tracer, 'addDoc', reference);\n firestoreSpanCreationHook(span);\n return executeContextWithSpan(span, () => {\n return original(reference, data);\n });\n };\n };\n}\n\nfunction patchDeleteDoc(\n tracer,\n firestoreSpanCreationHook,\n)\n\n {\n return function deleteDoc(original) {\n return function (reference) {\n const span = startDBSpan(tracer, 'deleteDoc', reference.parent || reference);\n firestoreSpanCreationHook(span);\n return executeContextWithSpan(span, () => {\n return original(reference);\n });\n };\n };\n}\n\nfunction patchGetDocs(\n tracer,\n firestoreSpanCreationHook,\n)\n\n {\n return function getDocs(original) {\n return function (\n reference,\n ) {\n const span = startDBSpan(tracer, 'getDocs', reference);\n firestoreSpanCreationHook(span);\n return executeContextWithSpan(span, () => {\n return original(reference);\n });\n };\n };\n}\n\nfunction patchSetDoc(\n tracer,\n firestoreSpanCreationHook,\n)\n\n {\n return function setDoc(original) {\n return function (\n reference,\n data,\n options,\n ) {\n const span = startDBSpan(tracer, 'setDoc', reference.parent || reference);\n firestoreSpanCreationHook(span);\n\n return executeContextWithSpan(span, () => {\n return typeof options !== 'undefined' ? original(reference, data, options) : original(reference, data);\n });\n };\n };\n}\n\nfunction executeContextWithSpan(span, callback) {\n return context.with(trace.setSpan(context.active(), span), () => {\n return safeExecuteInTheMiddle(\n () => {\n return callback();\n },\n err => {\n if (err) {\n span.recordException(err);\n }\n span.end();\n },\n true,\n );\n });\n}\n\nfunction startDBSpan(\n tracer,\n spanName,\n reference,\n) {\n const span = tracer.startSpan(`${spanName} ${reference.path}`, { kind: SpanKind.CLIENT });\n addAttributes(span, reference);\n span.setAttribute(ATTR_DB_OPERATION_NAME, spanName);\n return span;\n}\n\n/**\n * Gets the server address and port attributes from the Firestore settings.\n * It's best effort to extract the address and port from the settings, especially for IPv6.\n * @param span - The span to set attributes on.\n * @param settings - The Firestore settings containing host information.\n */\nfunction getPortAndAddress(settings)\n\n {\n let address;\n let port;\n\n if (typeof settings.host === 'string') {\n if (settings.host.startsWith('[')) {\n // IPv6 addresses can be enclosed in square brackets, e.g., [2001:db8::1]:8080\n if (settings.host.endsWith(']')) {\n // IPv6 with square brackets without port\n address = settings.host.replace(/^\\[|\\]$/g, '');\n } else if (settings.host.includes(']:')) {\n // IPv6 with square brackets with port\n const lastColonIndex = settings.host.lastIndexOf(':');\n if (lastColonIndex !== -1) {\n address = settings.host.slice(1, lastColonIndex).replace(/^\\[|\\]$/g, '');\n port = settings.host.slice(lastColonIndex + 1);\n }\n }\n } else {\n // IPv4 or IPv6 without square brackets\n // If it's an IPv6 address without square brackets, we assume it does not have a port.\n if (net.isIPv6(settings.host)) {\n address = settings.host;\n }\n // If it's an IPv4 address, we can extract the port if it exists.\n else {\n const lastColonIndex = settings.host.lastIndexOf(':');\n if (lastColonIndex !== -1) {\n address = settings.host.slice(0, lastColonIndex);\n port = settings.host.slice(lastColonIndex + 1);\n } else {\n address = settings.host;\n }\n }\n }\n }\n return {\n address: address,\n port: port ? parseInt(port, 10) : undefined,\n };\n}\n\nfunction addAttributes(\n span,\n reference,\n) {\n const firestoreApp = reference.firestore.app;\n const firestoreOptions = firestoreApp.options;\n const json = reference.firestore.toJSON() || {};\n const settings = json.settings || {};\n\n const attributes = {\n [ATTR_DB_COLLECTION_NAME]: reference.path,\n [ATTR_DB_NAMESPACE]: firestoreApp.name,\n [ATTR_DB_SYSTEM_NAME]: 'firebase.firestore',\n 'firebase.firestore.type': reference.type,\n 'firebase.firestore.options.projectId': firestoreOptions.projectId,\n 'firebase.firestore.options.appId': firestoreOptions.appId,\n 'firebase.firestore.options.messagingSenderId': firestoreOptions.messagingSenderId,\n 'firebase.firestore.options.storageBucket': firestoreOptions.storageBucket,\n };\n\n const { address, port } = getPortAndAddress(settings);\n\n if (address) {\n attributes[ATTR_SERVER_ADDRESS] = address;\n }\n if (port) {\n attributes[ATTR_SERVER_PORT] = port;\n }\n\n span.setAttributes(attributes);\n}\n\nexport { getPortAndAddress, patchFirestore };\n//# sourceMappingURL=firestore.js.map\n", + "import { SpanKind, context, trace, diag } from '@opentelemetry/api';\nimport { InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, isWrapped, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';\n\n/**\n * Patches Firebase Functions v2 to add OpenTelemetry instrumentation\n * @param tracer - Opentelemetry Tracer\n * @param functionsSupportedVersions - supported versions of firebase-functions\n * @param wrap - reference to native instrumentation wrap function\n * @param unwrap - reference to native instrumentation unwrap function\n * @param config - Firebase instrumentation config\n */\nfunction patchFunctions(\n tracer,\n functionsSupportedVersions,\n wrap,\n unwrap,\n config,\n) {\n let requestHook = () => {};\n let responseHook = () => {};\n const errorHook = config.functions?.errorHook;\n const configRequestHook = config.functions?.requestHook;\n const configResponseHook = config.functions?.responseHook;\n\n if (typeof configResponseHook === 'function') {\n responseHook = (span, err) => {\n safeExecuteInTheMiddle(\n () => configResponseHook(span, err),\n error => {\n if (!error) {\n return;\n }\n diag.error(error?.message);\n },\n true,\n );\n };\n }\n if (typeof configRequestHook === 'function') {\n requestHook = (span) => {\n safeExecuteInTheMiddle(\n () => configRequestHook(span),\n error => {\n if (!error) {\n return;\n }\n diag.error(error?.message);\n },\n true,\n );\n };\n }\n\n const moduleFunctionsCJS = new InstrumentationNodeModuleDefinition('firebase-functions', functionsSupportedVersions);\n const modulesToInstrument = [\n { name: 'firebase-functions/lib/v2/providers/https.js', triggerType: 'function' },\n { name: 'firebase-functions/lib/v2/providers/firestore.js', triggerType: 'firestore' },\n { name: 'firebase-functions/lib/v2/providers/scheduler.js', triggerType: 'scheduler' },\n { name: 'firebase-functions/lib/v2/storage.js', triggerType: 'storage' },\n ] ;\n\n modulesToInstrument.forEach(({ name, triggerType }) => {\n moduleFunctionsCJS.files.push(\n new InstrumentationNodeModuleFile(\n name,\n functionsSupportedVersions,\n moduleExports =>\n wrapCommonFunctions(\n moduleExports,\n wrap,\n unwrap,\n tracer,\n { requestHook, responseHook, errorHook },\n triggerType,\n ),\n moduleExports => unwrapCommonFunctions(moduleExports, unwrap),\n ),\n );\n });\n\n return moduleFunctionsCJS;\n}\n\n/**\n * Patches Cloud Functions for Firebase (v2) to add OpenTelemetry instrumentation\n *\n * @param tracer - Opentelemetry Tracer\n * @param functionsConfig - Firebase instrumentation config\n * @param triggerType - Type of trigger\n * @returns A function that patches the function\n */\nfunction patchV2Functions(\n tracer,\n functionsConfig,\n triggerType,\n) {\n return function v2FunctionsWrapper(original) {\n return function ( ...args) {\n const handler = typeof args[0] === 'function' ? args[0] : args[1];\n const documentOrOptions = typeof args[0] === 'function' ? undefined : args[0];\n\n if (!handler) {\n return original.call(this, ...args);\n }\n\n const wrappedHandler = async function ( ...handlerArgs) {\n const functionName = process.env.FUNCTION_TARGET || process.env.K_SERVICE || 'unknown';\n const span = tracer.startSpan(`firebase.function.${triggerType}`, {\n kind: SpanKind.SERVER,\n });\n\n const attributes = {\n 'faas.name': functionName,\n 'faas.trigger': triggerType,\n 'faas.provider': 'firebase',\n };\n\n if (process.env.GCLOUD_PROJECT) {\n attributes['cloud.project_id'] = process.env.GCLOUD_PROJECT;\n }\n\n if (process.env.EVENTARC_CLOUD_EVENT_SOURCE) {\n attributes['cloud.event_source'] = process.env.EVENTARC_CLOUD_EVENT_SOURCE;\n }\n\n span.setAttributes(attributes);\n functionsConfig?.requestHook?.(span);\n\n // Can be changed to safeExecuteInTheMiddleAsync once following is merged and released\n // https://github.com/open-telemetry/opentelemetry-js/pull/6032\n return context.with(trace.setSpan(context.active(), span), async () => {\n let error;\n let result;\n\n try {\n result = await handler.apply(this, handlerArgs);\n } catch (e) {\n error = e ;\n }\n\n functionsConfig?.responseHook?.(span, error);\n\n if (error) {\n span.recordException(error);\n }\n\n span.end();\n\n if (error) {\n await functionsConfig?.errorHook?.(span, error);\n throw error;\n }\n\n return result;\n });\n };\n\n if (documentOrOptions) {\n return original.call(this, documentOrOptions, wrappedHandler);\n } else {\n return original.call(this, wrappedHandler);\n }\n };\n };\n}\n\nfunction wrapCommonFunctions(\n moduleExports,\n wrap,\n unwrap,\n tracer,\n functionsConfig,\n triggerType,\n) {\n unwrapCommonFunctions(moduleExports, unwrap);\n\n switch (triggerType) {\n case 'function':\n wrap(moduleExports, 'onRequest', patchV2Functions(tracer, functionsConfig, 'http.request'));\n wrap(moduleExports, 'onCall', patchV2Functions(tracer, functionsConfig, 'http.call'));\n break;\n\n case 'firestore':\n wrap(moduleExports, 'onDocumentCreated', patchV2Functions(tracer, functionsConfig, 'firestore.document.created'));\n wrap(moduleExports, 'onDocumentUpdated', patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'));\n wrap(moduleExports, 'onDocumentDeleted', patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'));\n wrap(moduleExports, 'onDocumentWritten', patchV2Functions(tracer, functionsConfig, 'firestore.document.written'));\n wrap(\n moduleExports,\n 'onDocumentCreatedWithAuthContext',\n patchV2Functions(tracer, functionsConfig, 'firestore.document.created'),\n );\n wrap(\n moduleExports,\n 'onDocumentUpdatedWithAuthContext',\n patchV2Functions(tracer, functionsConfig, 'firestore.document.updated'),\n );\n\n wrap(\n moduleExports,\n 'onDocumentDeletedWithAuthContext',\n patchV2Functions(tracer, functionsConfig, 'firestore.document.deleted'),\n );\n\n wrap(\n moduleExports,\n 'onDocumentWrittenWithAuthContext',\n patchV2Functions(tracer, functionsConfig, 'firestore.document.written'),\n );\n break;\n\n case 'scheduler':\n wrap(moduleExports, 'onSchedule', patchV2Functions(tracer, functionsConfig, 'scheduler.scheduled'));\n break;\n\n case 'storage':\n wrap(moduleExports, 'onObjectFinalized', patchV2Functions(tracer, functionsConfig, 'storage.object.finalized'));\n wrap(moduleExports, 'onObjectArchived', patchV2Functions(tracer, functionsConfig, 'storage.object.archived'));\n wrap(moduleExports, 'onObjectDeleted', patchV2Functions(tracer, functionsConfig, 'storage.object.deleted'));\n wrap(\n moduleExports,\n 'onObjectMetadataUpdated',\n patchV2Functions(tracer, functionsConfig, 'storage.object.metadataUpdated'),\n );\n break;\n }\n\n return moduleExports;\n}\n\nfunction unwrapCommonFunctions(\n moduleExports,\n unwrap,\n) {\n const methods = [\n 'onSchedule',\n 'onRequest',\n 'onCall',\n 'onObjectFinalized',\n 'onObjectArchived',\n 'onObjectDeleted',\n 'onObjectMetadataUpdated',\n 'onDocumentCreated',\n 'onDocumentUpdated',\n 'onDocumentDeleted',\n 'onDocumentWritten',\n 'onDocumentCreatedWithAuthContext',\n 'onDocumentUpdatedWithAuthContext',\n 'onDocumentDeletedWithAuthContext',\n 'onDocumentWrittenWithAuthContext',\n ];\n\n for (const method of methods) {\n if (isWrapped(moduleExports[method])) {\n unwrap(moduleExports, method);\n }\n }\n return moduleExports;\n}\n\nexport { patchFunctions, patchV2Functions };\n//# sourceMappingURL=functions.js.map\n", + "import { defineIntegration, captureException, flush, SEMANTIC_ATTRIBUTE_SENTRY_OP } from '@sentry/core';\nimport { generateInstrumentOnce, addOriginToSpan } from '@sentry/node-core';\nimport { FirebaseInstrumentation } from './otel/firebaseInstrumentation.js';\n\nconst INTEGRATION_NAME = 'Firebase';\n\nconst config = {\n firestoreSpanCreationHook: span => {\n addOriginToSpan(span, 'auto.firebase.otel.firestore');\n\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'db.query');\n },\n functions: {\n requestHook: span => {\n addOriginToSpan(span, 'auto.firebase.otel.functions');\n\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'http.request');\n },\n errorHook: async (_, error) => {\n if (error) {\n captureException(error, {\n mechanism: {\n type: 'auto.firebase.otel.functions',\n handled: false,\n },\n });\n await flush(2000);\n }\n },\n },\n};\n\nconst instrumentFirebase = generateInstrumentOnce(INTEGRATION_NAME, () => new FirebaseInstrumentation(config));\n\nconst _firebaseIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentFirebase();\n },\n };\n}) ;\n\nconst firebaseIntegration = defineIntegration(_firebaseIntegration);\n\nexport { firebaseIntegration, instrumentFirebase };\n//# sourceMappingURL=firebase.js.map\n", + "import { instrumentSentryHttp, instrumentOtelHttp } from '../http.js';\nimport { instrumentAmqplib, amqplibIntegration } from './amqplib.js';\nimport { instrumentAnthropicAi, anthropicAIIntegration } from './anthropic-ai/index.js';\nimport { instrumentConnect, connectIntegration } from './connect.js';\nimport { instrumentExpress, expressIntegration } from './express.js';\nimport { instrumentFastify, instrumentFastifyV3, fastifyIntegration } from './fastify/index.js';\nimport { instrumentFirebase, firebaseIntegration } from './firebase/firebase.js';\nimport { instrumentGenericPool, genericPoolIntegration } from './genericPool.js';\nimport { instrumentGoogleGenAI, googleGenAIIntegration } from './google-genai/index.js';\nimport { instrumentGraphql, graphqlIntegration } from './graphql.js';\nimport { instrumentHapi, hapiIntegration } from './hapi/index.js';\nimport { instrumentHono, honoIntegration } from './hono/index.js';\nimport { instrumentKafka, kafkaIntegration } from './kafka.js';\nimport { instrumentKoa, koaIntegration } from './koa.js';\nimport { instrumentLangChain, langChainIntegration } from './langchain/index.js';\nimport { instrumentLangGraph, langGraphIntegration } from './langgraph/index.js';\nimport { instrumentLruMemoizer, lruMemoizerIntegration } from './lrumemoizer.js';\nimport { instrumentMongo, mongoIntegration } from './mongo.js';\nimport { instrumentMongoose, mongooseIntegration } from './mongoose.js';\nimport { instrumentMysql, mysqlIntegration } from './mysql.js';\nimport { instrumentMysql2, mysql2Integration } from './mysql2.js';\nimport { instrumentOpenAi, openAIIntegration } from './openai/index.js';\nimport { instrumentPostgres, postgresIntegration } from './postgres.js';\nimport { instrumentPostgresJs, postgresJsIntegration } from './postgresjs.js';\nimport { prismaIntegration } from './prisma.js';\nimport { instrumentRedis, redisIntegration } from './redis.js';\nimport { instrumentTedious, tediousIntegration } from './tedious.js';\nimport { instrumentVercelAi, vercelAIIntegration } from './vercelai/index.js';\n\n/**\n * With OTEL, all performance integrations will be added, as OTEL only initializes them when the patched package is actually required.\n */\nfunction getAutoPerformanceIntegrations() {\n return [\n expressIntegration(),\n fastifyIntegration(),\n graphqlIntegration(),\n honoIntegration(),\n mongoIntegration(),\n mongooseIntegration(),\n mysqlIntegration(),\n mysql2Integration(),\n redisIntegration(),\n postgresIntegration(),\n prismaIntegration(),\n hapiIntegration(),\n koaIntegration(),\n connectIntegration(),\n tediousIntegration(),\n genericPoolIntegration(),\n kafkaIntegration(),\n amqplibIntegration(),\n lruMemoizerIntegration(),\n // AI providers\n // LangChain must come first to disable AI provider integrations before they instrument\n langChainIntegration(),\n langGraphIntegration(),\n vercelAIIntegration(),\n openAIIntegration(),\n anthropicAIIntegration(),\n googleGenAIIntegration(),\n postgresJsIntegration(),\n firebaseIntegration(),\n ];\n}\n\n/**\n * Get a list of methods to instrument OTEL, when preload instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getOpenTelemetryInstrumentationToPreload() {\n return [\n instrumentSentryHttp,\n instrumentOtelHttp,\n instrumentExpress,\n instrumentConnect,\n instrumentFastify,\n instrumentFastifyV3,\n instrumentHapi,\n instrumentHono,\n instrumentKafka,\n instrumentKoa,\n instrumentLruMemoizer,\n instrumentMongo,\n instrumentMongoose,\n instrumentMysql,\n instrumentMysql2,\n instrumentPostgres,\n instrumentHapi,\n instrumentGraphql,\n instrumentRedis,\n instrumentTedious,\n instrumentGenericPool,\n instrumentAmqplib,\n instrumentLangChain,\n instrumentVercelAi,\n instrumentOpenAi,\n instrumentPostgresJs,\n instrumentFirebase,\n instrumentAnthropicAi,\n instrumentGoogleGenAI,\n instrumentLangGraph,\n ];\n}\n\nexport { getAutoPerformanceIntegrations, getOpenTelemetryInstrumentationToPreload };\n//# sourceMappingURL=index.js.map\n", + "import { trace, propagation, context } from '@opentelemetry/api';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_SERVICE_VERSION, SEMRESATTRS_SERVICE_NAMESPACE, ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { SDK_VERSION, debug } from '@sentry/core';\nimport { setupOpenTelemetryLogger, SentryContextManager, initializeEsmLoader } from '@sentry/node-core';\nimport { SentrySpanProcessor, SentrySampler, SentryPropagator } from '@sentry/opentelemetry';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing/index.js';\n\n// About 277h - this must fit into new Array(len)!\nconst MAX_MAX_SPAN_WAIT_DURATION = 1000000;\n\n/**\n * Initialize OpenTelemetry for Node.\n */\nfunction initOpenTelemetry(client, options = {}) {\n if (client.getOptions().debug) {\n setupOpenTelemetryLogger();\n }\n\n const [provider, asyncLocalStorageLookup] = setupOtel(client, options);\n client.traceProvider = provider;\n client.asyncLocalStorageLookup = asyncLocalStorageLookup;\n}\n\n/**\n * Preload OpenTelemetry for Node.\n * This can be used to preload instrumentation early, but set up Sentry later.\n * By preloading the OTEL instrumentation wrapping still happens early enough that everything works.\n */\nfunction preloadOpenTelemetry(options = {}) {\n const { debug: debug$1 } = options;\n\n if (debug$1) {\n debug.enable();\n }\n\n initializeEsmLoader();\n\n // These are all integrations that we need to pre-load to ensure they are set up before any other code runs\n getPreloadMethods(options.integrations).forEach(fn => {\n fn();\n\n if (debug$1) {\n debug.log(`[Sentry] Preloaded ${fn.id} instrumentation`);\n }\n });\n}\n\nfunction getPreloadMethods(integrationNames) {\n const instruments = getOpenTelemetryInstrumentationToPreload();\n\n if (!integrationNames) {\n return instruments;\n }\n\n // We match exact matches of instrumentation, but also match prefixes, e.g. \"Fastify.v5\" will match \"Fastify\"\n return instruments.filter(instrumentation => {\n const id = instrumentation.id;\n return integrationNames.some(integrationName => id === integrationName || id.startsWith(`${integrationName}.`));\n });\n}\n\n/** Just exported for tests. */\nfunction setupOtel(\n client,\n options = {},\n) {\n // Create and configure NodeTracerProvider\n const provider = new BasicTracerProvider({\n sampler: new SentrySampler(client),\n resource: defaultResource().merge(\n resourceFromAttributes({\n [ATTR_SERVICE_NAME]: 'node',\n // eslint-disable-next-line deprecation/deprecation\n [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry',\n [ATTR_SERVICE_VERSION]: SDK_VERSION,\n }),\n ),\n forceFlushTimeoutMillis: 500,\n spanProcessors: [\n new SentrySpanProcessor({\n timeout: _clampSpanProcessorTimeout(client.getOptions().maxSpanWaitDuration),\n }),\n ...(options.spanProcessors || []),\n ],\n });\n\n // Register as globals\n trace.setGlobalTracerProvider(provider);\n propagation.setGlobalPropagator(new SentryPropagator());\n\n const ctxManager = new SentryContextManager();\n context.setGlobalContextManager(ctxManager);\n\n return [provider, ctxManager.getAsyncLocalStorageLookup()];\n}\n\n/** Just exported for tests. */\nfunction _clampSpanProcessorTimeout(maxSpanWaitDuration) {\n if (maxSpanWaitDuration == null) {\n return undefined;\n }\n\n // We guard for a max. value here, because we create an array with this length\n // So if this value is too large, this would fail\n if (maxSpanWaitDuration > MAX_MAX_SPAN_WAIT_DURATION) {\n DEBUG_BUILD &&\n debug.warn(`\\`maxSpanWaitDuration\\` is too high, using the maximum value of ${MAX_MAX_SPAN_WAIT_DURATION}`);\n return MAX_MAX_SPAN_WAIT_DURATION;\n } else if (maxSpanWaitDuration <= 0 || Number.isNaN(maxSpanWaitDuration)) {\n DEBUG_BUILD && debug.warn('`maxSpanWaitDuration` must be a positive number, using default value instead.');\n return undefined;\n }\n\n return maxSpanWaitDuration;\n}\n\nexport { _clampSpanProcessorTimeout, initOpenTelemetry, preloadOpenTelemetry, setupOtel };\n//# sourceMappingURL=initOtel.js.map\n", + "import { applySdkMetadata, hasSpansEnabled } from '@sentry/core';\nimport { init as init$1, validateOpenTelemetrySetup, getDefaultIntegrations as getDefaultIntegrations$1 } from '@sentry/node-core';\nimport { httpIntegration } from '../integrations/http.js';\nimport { nativeNodeFetchIntegration } from '../integrations/node-fetch.js';\nimport { getAutoPerformanceIntegrations } from '../integrations/tracing/index.js';\nimport { initOpenTelemetry } from './initOtel.js';\n\n/**\n * Get default integrations, excluding performance.\n */\nfunction getDefaultIntegrationsWithoutPerformance() {\n const nodeCoreIntegrations = getDefaultIntegrations$1();\n\n // Filter out the node-core HTTP and NodeFetch integrations and replace them with Node SDK's composite versions\n return nodeCoreIntegrations\n .filter(integration => integration.name !== 'Http' && integration.name !== 'NodeFetch')\n .concat(httpIntegration(), nativeNodeFetchIntegration());\n}\n\n/** Get the default integrations for the Node SDK. */\nfunction getDefaultIntegrations(options) {\n return [\n ...getDefaultIntegrationsWithoutPerformance(),\n // We only add performance integrations if tracing is enabled\n // Note that this means that without tracing enabled, e.g. `expressIntegration()` will not be added\n // This means that generally request isolation will work (because that is done by httpIntegration)\n // But `transactionName` will not be set automatically\n ...(hasSpansEnabled(options) ? getAutoPerformanceIntegrations() : []),\n ];\n}\n\n/**\n * Initialize Sentry for Node.\n */\nfunction init(options = {}) {\n return _init(options, getDefaultIntegrations);\n}\n\n/**\n * Internal initialization function.\n */\nfunction _init(\n options = {},\n getDefaultIntegrationsImpl,\n) {\n applySdkMetadata(options, 'node');\n\n const client = init$1({\n ...options,\n // Only use Node SDK defaults if none provided\n defaultIntegrations: options.defaultIntegrations ?? getDefaultIntegrationsImpl(options),\n });\n\n // Add Node SDK specific OpenTelemetry setup\n if (client && !options.skipOpenTelemetrySetup) {\n initOpenTelemetry(client, {\n spanProcessors: options.openTelemetrySpanProcessors,\n });\n validateOpenTelemetrySetup();\n }\n\n return client;\n}\n\n/**\n * Initialize Sentry for Node, without any integrations added by default.\n */\nfunction initWithoutDefaultIntegrations(options = {}) {\n return _init(options, () => []);\n}\n\nexport { getDefaultIntegrations, getDefaultIntegrationsWithoutPerformance, init, initWithoutDefaultIntegrations };\n//# sourceMappingURL=index.js.map\n", + "import * as Sentry from '@sentry/node'\nimport type { Event } from '@sentry/node'\nimport type { ElideSetupActionOptions } from './options'\n\n// Public DSN — not a secret. Only allows sending events, not reading them.\nconst SENTRY_DSN =\n 'https://b5a33745f4bf36a0f1e66dbcfceaa898@o4510814125228032.ingest.us.sentry.io/4511124523974656'\n\nconst ACTION_VERSION = '1.0.0'\n\nlet telemetryEnabled = false\n\n// Environment variable patterns that could contain secrets.\nconst SENSITIVE_PATTERNS = [\n /token/i,\n /secret/i,\n /password/i,\n /key/i,\n /credential/i,\n /auth/i,\n /^GITHUB_/i,\n /^AWS_/i,\n /^AZURE_/i,\n /^GCP_/i,\n /^NPM_/i,\n /^NODE_AUTH/i\n]\n\n/**\n * Scrub a string of any values that look like they came from sensitive env vars.\n * Replaces any known env var value found in the string with [REDACTED].\n */\nfunction scrubEnvVars(input: string): string {\n let result = input\n for (const [key, value] of Object.entries(process.env)) {\n if (!value || value.length < 8) continue\n if (SENSITIVE_PATTERNS.some(p => p.test(key))) {\n result = result.replaceAll(value, '[REDACTED]')\n }\n }\n return result\n}\n\n/**\n * Scrub an entire Sentry event of sensitive data.\n */\nfunction scrubEvent(event: Event): Event {\n delete event.server_name\n delete event.extra\n delete event.user\n delete event.request\n event.contexts = {}\n event.breadcrumbs = []\n\n if (event.exception?.values) {\n for (const ex of event.exception.values) {\n if (ex.value) {\n ex.value = scrubEnvVars(ex.value)\n }\n }\n }\n\n if (event.message) {\n event.message = scrubEnvVars(event.message)\n }\n\n return event\n}\n\n/**\n * Initialize Sentry telemetry with aggressive scrubbing.\n * Enables error reporting, tracing, and metrics.\n * No environment data, no PII, no secrets — only the error/span and action config tags.\n */\nexport function initTelemetry(\n enabled: boolean,\n options: ElideSetupActionOptions\n): void {\n telemetryEnabled = enabled\n if (!enabled) return\n\n Sentry.init({\n dsn: SENTRY_DSN,\n defaultIntegrations: false,\n environment: options.channel,\n release: `setup-elide@${ACTION_VERSION}`,\n tracesSampleRate: 1.0,\n beforeSend(event) {\n return scrubEvent(event)\n },\n beforeSendTransaction(event) {\n return scrubEvent(event)\n }\n })\n\n Sentry.setTags({\n installer: options.installer,\n os: options.os,\n arch: options.arch,\n channel: options.channel,\n version: options.version,\n action_version: ACTION_VERSION\n })\n}\n\n/**\n * Report an error to Sentry with optional additional tags.\n */\nexport function reportError(\n err: Error,\n context?: Record\n): void {\n if (!telemetryEnabled) return\n\n Sentry.withScope(scope => {\n if (context) {\n for (const [k, v] of Object.entries(context)) {\n scope.setTag(k, v)\n }\n }\n Sentry.captureException(err)\n })\n}\n\n/**\n * Run an async function inside a Sentry tracing span.\n * If telemetry is disabled, runs the function directly.\n */\nexport async function withSpan(\n name: string,\n op: string,\n fn: () => Promise\n): Promise {\n if (!telemetryEnabled) return fn()\n\n return Sentry.startSpan(\n { name, op, attributes: { 'sentry.origin': 'manual' } },\n async () => fn()\n )\n}\n\n/**\n * Record a metric gauge value (e.g., install duration).\n */\nexport function recordMetric(\n name: string,\n value: number,\n unit: string,\n tags?: Record\n): void {\n if (!telemetryEnabled) return\n Sentry.metrics.gauge(name, value, { unit, tags })\n}\n\n/**\n * Log an informational event to Sentry.\n */\nexport function logEvent(message: string, data?: Record): void {\n if (!telemetryEnabled) return\n Sentry.captureMessage(message, {\n level: 'info',\n tags: data\n })\n}\n\n/**\n * Flush pending Sentry events. Call before process exit.\n */\nexport async function flushTelemetry(): Promise {\n if (!telemetryEnabled) return\n await Sentry.flush(2000)\n}\n", + "/**\n * Post-step entry point.\n * Flushes any pending telemetry events before the action exits.\n */\nimport { flushTelemetry } from './telemetry'\n\nflushTelemetry()\n" + ], + "mappings": "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,GAMtB,oCAAmC,GAMnC,sCAAqC,GAKrC,uBACO,EAAG,GAAQ,gBAAgB,CACtC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACJ,CAAC,EAQD,IAAM,GAA+B,YAC/B,GAA2B,QAC3B,GAA2B,QAC3B,GAA4B,SAC5B,GAAyB,MACzB,GAAgC,aAChC,GAA8B,WAC9B,GAA0B,OAC1B,GAAgC,aAChC,GAA4B,SAC5B,GAA8B,WAC9B,GAA2B,QAC3B,GAA4B,SAC5B,GAA4B,SAC5B,GAA8B,WAC9B,GAAyB,MACzB,GAA2B,QAC3B,GAA4B,SAC5B,GAA8B,WAC9B,GAA2B,QAC3B,GAA+B,YAC/B,GAA8B,WAC9B,GAA+B,YAC/B,GAA+B,YAC/B,GAA6B,UAC7B,GAA6B,UAC7B,GAA+B,YAC/B,GAA+B,YAC/B,GAA4B,SAC5B,GAA4B,SAC5B,GAA8B,WAC9B,GAA6B,UAC7B,GAAwB,KACxB,GAAgC,aAChC,GAA+B,YAC/B,GAA2B,QAC3B,GAA6B,UAC7B,GAA2B,QAC3B,GAA+B,YAC/B,GAA6B,UAC7B,GAA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", + "debugId": "BD7DC9C81710F1F864756E2164756E21", + "names": [] +} \ No newline at end of file diff --git a/package.json b/package.json index 20e3e6a..3f922a0 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@actions/http-client": "4.0.0", "@actions/io": "3.0.2", "@actions/tool-cache": "4.0.0", + "@sentry/node": "^10.46.0", "octokit": "5.0.5" }, "devDependencies": { @@ -57,10 +58,11 @@ "format:write": "biome format --write src __tests__", "format:check": "biome format src __tests__", "lint": "oxlint src __tests__", - "package": "bun build src/index.ts --outdir=dist --target=node --minify --sourcemap=linked", - "package:watch": "bun build src/index.ts --outdir=dist --target=node --sourcemap=linked --watch", - "test": "bun test __tests__/options.test.ts __tests__/platform.test.ts __tests__/releases.test.ts __tests__/index.test.ts && bun test __tests__/command.test.ts && bun test __tests__/releases-download.test.ts && bun test __tests__/install-apt.test.ts __tests__/install-script.test.ts __tests__/main.test.ts", - "test:docker": "docker build -t setup-elide-test . && docker run --rm setup-elide-test sh -c 'bun run build && bun test'", + "package": "bun build src/index.ts src/post.ts --outdir=dist --target=node --minify --sourcemap=linked", + "package:watch": "bun build src/index.ts src/post.ts --outdir=dist --target=node --sourcemap=linked --watch", + "test": "rm -rf coverage && bun test __tests__/options.test.ts __tests__/platform.test.ts __tests__/releases.test.ts __tests__/index.test.ts && cp coverage/lcov.info coverage/batch1.info && bun test __tests__/command.test.ts && cp coverage/lcov.info coverage/batch2.info && bun test __tests__/releases-download.test.ts && cp coverage/lcov.info coverage/batch3.info && bun test __tests__/telemetry.test.ts && cp coverage/lcov.info coverage/batch4.info && bun test __tests__/install-apt.test.ts __tests__/install-shell.test.ts __tests__/install-msi.test.ts __tests__/install-pkg.test.ts __tests__/install-rpm.test.ts && cp coverage/lcov.info coverage/batch5.info && bun test __tests__/main.test.ts && cp coverage/lcov.info coverage/batch6.info && cat coverage/batch*.info > coverage/lcov.info", + "test:ci": "rm -rf coverage test-results && mkdir -p test-results && bun test --reporter=junit --reporter-outfile=test-results/batch1.xml __tests__/options.test.ts __tests__/platform.test.ts __tests__/releases.test.ts __tests__/index.test.ts && cp coverage/lcov.info coverage/batch1.info && bun test --reporter=junit --reporter-outfile=test-results/batch2.xml __tests__/command.test.ts && cp coverage/lcov.info coverage/batch2.info && bun test --reporter=junit --reporter-outfile=test-results/batch3.xml __tests__/releases-download.test.ts && cp coverage/lcov.info coverage/batch3.info && bun test --reporter=junit --reporter-outfile=test-results/batch4.xml __tests__/telemetry.test.ts && cp coverage/lcov.info coverage/batch4.info && bun test --reporter=junit --reporter-outfile=test-results/batch5.xml __tests__/install-apt.test.ts __tests__/install-shell.test.ts __tests__/install-msi.test.ts __tests__/install-pkg.test.ts __tests__/install-rpm.test.ts && cp coverage/lcov.info coverage/batch5.info && bun test --reporter=junit --reporter-outfile=test-results/batch6.xml __tests__/main.test.ts && cp coverage/lcov.info coverage/batch6.info && cat coverage/batch*.info > coverage/lcov.info", + "test:docker": "docker build -t setup-elide-test . && docker run --rm setup-elide-test sh -c 'bun run build && bun run test'", "all": "bun run format:write && bun run build && bun run test" }, "license": "MIT", diff --git a/src/command.ts b/src/command.ts index 8d1533f..2f91d81 100644 --- a/src/command.ts +++ b/src/command.ts @@ -24,25 +24,15 @@ export enum ElideArgument { VERSION = '--version' } -/** - * Prewarm the provided Elide binary by running a small script. - * - * @param bin Path to the Elide binary. - * @return Promise which resolves when finished. - */ -export async function prewarm(bin: string): Promise { - core.info(`Prewarming Elide at bin: ${bin}`) - return execElide(bin, [ElideCommand.INFO]) -} - /** * Print info about the specified Elide runtime binary. + * Also serves as a prewarm step (the info command exercises the runtime). * * @param bin Path to the Elide binary. * @return Promise which resolves when finished. */ -export async function info(bin: string): Promise { - core.debug(`Printing runtime info at bin: ${bin}`) +export async function elideInfo(bin: string): Promise { + core.info(`Running Elide info at bin: ${bin}`) return execElide(bin, [ElideCommand.INFO]) } diff --git a/src/config.ts b/src/config.ts deleted file mode 100644 index e6d23a5..0000000 --- a/src/config.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Version of the GitHub API to use. -export const GITHUB_API_VERSION = '2022-11-28' - -// Default headers to send on GitHub API requests. -export const GITHUB_DEFAULT_HEADERS = { - 'X-GitHub-Api-Version': GITHUB_API_VERSION -} diff --git a/src/install-msi.ts b/src/install-msi.ts new file mode 100644 index 0000000..c52d33f --- /dev/null +++ b/src/install-msi.ts @@ -0,0 +1,41 @@ +import path from 'node:path' +import * as core from '@actions/core' +import * as exec from '@actions/exec' +import * as toolCache from '@actions/tool-cache' +import { which } from '@actions/io' +import type { ElideRelease } from './releases' +import { buildCdnAssetUrl } from './releases' +import type { ElideSetupActionOptions } from './options' +import { obtainVersion } from './command' + +export async function installViaMsi( + options: ElideSetupActionOptions +): Promise { + const url = buildCdnAssetUrl(options, 'msi') + core.info(`Downloading Elide MSI from ${url}`) + const msiPath = await toolCache.downloadTool(url.toString()) + + core.info('Installing Elide via MSI') + const installDir = options.install_path || 'C:\\Elide' + await exec.exec('msiexec', [ + '/i', + msiPath, + '/quiet', + '/norestart', + `INSTALLDIR=${installDir}` + ]) + + const elidePath = await which('elide', true) + const version = await obtainVersion(elidePath) + const elideBin = path.dirname(elidePath) + const elideHome = elideBin + + core.info(`Elide ${version} installed via MSI at ${elidePath}`) + + return { + version: { tag_name: version, userProvided: options.version !== 'latest' }, + elidePath, + elideHome, + elideBin + } +} diff --git a/src/install-pkg.ts b/src/install-pkg.ts new file mode 100644 index 0000000..d923e24 --- /dev/null +++ b/src/install-pkg.ts @@ -0,0 +1,34 @@ +import path from 'node:path' +import * as core from '@actions/core' +import * as exec from '@actions/exec' +import * as toolCache from '@actions/tool-cache' +import { which } from '@actions/io' +import type { ElideRelease } from './releases' +import { buildCdnAssetUrl } from './releases' +import type { ElideSetupActionOptions } from './options' +import { obtainVersion } from './command' + +export async function installViaPkg( + options: ElideSetupActionOptions +): Promise { + const url = buildCdnAssetUrl(options, 'pkg') + core.info(`Downloading Elide PKG from ${url}`) + const pkgPath = await toolCache.downloadTool(url.toString()) + + core.info('Installing Elide via PKG') + await exec.exec('sudo', ['installer', '-pkg', pkgPath, '-target', '/']) + + const elidePath = await which('elide', true) + const version = await obtainVersion(elidePath) + const elideBin = path.dirname(elidePath) + const elideHome = elideBin + + core.info(`Elide ${version} installed via PKG at ${elidePath}`) + + return { + version: { tag_name: version, userProvided: options.version !== 'latest' }, + elidePath, + elideHome, + elideBin + } +} diff --git a/src/install-rpm.ts b/src/install-rpm.ts new file mode 100644 index 0000000..f61d072 --- /dev/null +++ b/src/install-rpm.ts @@ -0,0 +1,48 @@ +import path from 'node:path' +import * as core from '@actions/core' +import * as exec from '@actions/exec' +import * as toolCache from '@actions/tool-cache' +import { which } from '@actions/io' +import type { ElideRelease } from './releases' +import { buildCdnAssetUrl } from './releases' +import type { ElideSetupActionOptions } from './options' +import { obtainVersion } from './command' + +export async function installViaRpm( + options: ElideSetupActionOptions +): Promise { + const url = buildCdnAssetUrl(options, 'rpm') + core.info(`Downloading Elide RPM from ${url}`) + const rpmPath = await toolCache.downloadTool(url.toString()) + + // Try dnf first (modern RHEL/Fedora), fall back to rpm + let useDnf = false + try { + await which('dnf', true) + useDnf = true + } catch { + // dnf not available, will use rpm + } + + if (useDnf) { + core.info('Installing Elide via dnf') + await exec.exec('sudo', ['dnf', 'install', '-y', rpmPath]) + } else { + core.info('Installing Elide via rpm') + await exec.exec('sudo', ['rpm', '-U', '--replacepkgs', rpmPath]) + } + + const elidePath = await which('elide', true) + const version = await obtainVersion(elidePath) + const elideBin = path.dirname(elidePath) + const elideHome = elideBin + + core.info(`Elide ${version} installed via RPM at ${elidePath}`) + + return { + version: { tag_name: version, userProvided: options.version !== 'latest' }, + elidePath, + elideHome, + elideBin + } +} diff --git a/src/install-script.ts b/src/install-script.ts deleted file mode 100644 index fef618a..0000000 --- a/src/install-script.ts +++ /dev/null @@ -1,70 +0,0 @@ -import path from 'node:path' -import * as core from '@actions/core' -import * as exec from '@actions/exec' -import * as toolCache from '@actions/tool-cache' -import { which } from '@actions/io' -import type { ElideRelease } from './releases' -import type { ElideSetupActionOptions } from './options' -import { obtainVersion } from './command' - -const installScriptUrl = 'https://dl.elide.dev/cli/install.sh' - -/** - * Install Elide via the official `elide.sh` install script. - * - * This path is used on macOS and non-Debian Linux where the apt repository - * is not available. - * - * @param options Effective action options. - * @return Release information for the installed binary. - */ -export async function installViaScript( - options: ElideSetupActionOptions -): Promise { - // Download the install script to a temp file (safer than curl | bash) - core.info('Downloading Elide install script') - const scriptPath = await toolCache.downloadTool(installScriptUrl) - - // Build script arguments - const scriptArgs = [scriptPath] - if ( - options.version && - options.version !== 'latest' && - options.version !== 'local' - ) { - scriptArgs.push('--version', options.version) - } - - // Execute the install script - core.info('Running Elide install script') - await exec.exec('bash', scriptArgs) - - // Locate the installed binary - let elidePath: string - try { - elidePath = await which('elide', true) - } catch { - // The install script may place the binary in ~/.elide/bin which - // might not be on PATH yet. Try the conventional location. - const home = process.env.HOME || process.env.USERPROFILE || '~' - const fallbackBin = `${home}/.elide/bin` - core.addPath(fallbackBin) - elidePath = await which('elide', true) - } - - const version = await obtainVersion(elidePath) - const elideBin = path.dirname(elidePath) - const elideHome = elideBin - - core.info(`Elide ${version} installed via script at ${elidePath}`) - - return { - version: { - tag_name: version, - userProvided: options.version !== 'latest' - }, - elidePath, - elideHome, - elideBin - } -} diff --git a/src/install-shell.ts b/src/install-shell.ts new file mode 100644 index 0000000..7cff683 --- /dev/null +++ b/src/install-shell.ts @@ -0,0 +1,115 @@ +import path from 'node:path' +import * as core from '@actions/core' +import * as exec from '@actions/exec' +import * as toolCache from '@actions/tool-cache' +import { which } from '@actions/io' +import type { ElideRelease } from './releases' +import type { ElideSetupActionOptions } from './options' +import { obtainVersion } from './command' + +const bashScriptUrl = 'https://dl.elide.dev/cli/install.sh' +const powershellScriptUrl = 'https://dl.elide.dev/cli/install.ps1' + +/** + * Install Elide via the official install scripts. + * + * - Linux/macOS: downloads `install.sh` and runs with `bash ... --gha` + * - Windows: downloads `install.ps1` and runs with `powershell ... -Gha` + * + * The `--gha` / `-Gha` flags ensure the scripts route downloads through + * GitHub Releases for faster performance in GitHub Actions. + * + * @param options Effective action options. + * @return Release information for the installed binary. + */ +export async function installViaShell( + options: ElideSetupActionOptions +): Promise { + if (options.os === 'windows') { + return installViaPowerShell(options) + } + return installViaBash(options) +} + +async function installViaBash( + options: ElideSetupActionOptions +): Promise { + core.info('Downloading Elide install script (bash)') + const scriptPath = await toolCache.downloadTool(bashScriptUrl) + + const scriptArgs = [scriptPath, '--gha'] + if ( + options.version && + options.version !== 'latest' && + options.version !== 'local' + ) { + scriptArgs.push('--version', options.version) + } + + core.info('Running Elide install script') + await exec.exec('bash', scriptArgs) + + let elidePath: string + try { + elidePath = await which('elide', true) + } catch { + // The install script may place the binary in ~/.elide/bin which + // might not be on PATH yet. Try the conventional location. + const home = process.env.HOME || process.env.USERPROFILE || '~' + const fallbackBin = `${home}/.elide/bin` + core.addPath(fallbackBin) + elidePath = await which('elide', true) + } + + const version = await obtainVersion(elidePath) + const elideBin = path.dirname(elidePath) + const elideHome = elideBin + + core.info(`Elide ${version} installed via bash script at ${elidePath}`) + + return { + version: { + tag_name: version, + userProvided: options.version !== 'latest' + }, + elidePath, + elideHome, + elideBin + } +} + +async function installViaPowerShell( + options: ElideSetupActionOptions +): Promise { + core.info('Downloading Elide install script (PowerShell)') + const scriptPath = await toolCache.downloadTool(powershellScriptUrl) + + const psArgs = ['-ExecutionPolicy', 'Bypass', '-File', scriptPath, '-Gha'] + if ( + options.version && + options.version !== 'latest' && + options.version !== 'local' + ) { + psArgs.push('-Version', options.version) + } + + core.info('Running Elide install script (PowerShell)') + await exec.exec('powershell', psArgs) + + const elidePath = await which('elide', true) + const version = await obtainVersion(elidePath) + const elideBin = path.dirname(elidePath) + const elideHome = elideBin + + core.info(`Elide ${version} installed via PowerShell script at ${elidePath}`) + + return { + version: { + tag_name: version, + userProvided: options.version !== 'latest' + }, + elidePath, + elideHome, + elideBin + } +} diff --git a/src/main.ts b/src/main.ts index 38c54ae..67c4ec5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,71 +1,37 @@ import * as core from '@actions/core' import * as io from '@actions/io' -import { ActionOutputName, ElideSetupActionOutputs } from './outputs' -import { prewarm, info, obtainVersion } from './command' +import { elideInfo, obtainVersion } from './command' +import { + initTelemetry, + reportError, + flushTelemetry, + withSpan, + recordMetric, + logEvent +} from './telemetry' + +/** + * Enumerates outputs and maps them to their well-known names. + */ +export enum ActionOutputName { + PATH = 'path', + VERSION = 'version', + CACHED = 'cached', + INSTALLER = 'installer' +} import buildOptions, { - OptionName, ElideSetupActionOptions, - defaults, - normalizeOs, - normalizeArch, - normalizeChannel + buildOptionsFromInputs, + validateInstallerForPlatform } from './options' import { downloadRelease, ElideRelease } from './releases' -import { isDebianLike } from './platform' import { installViaApt } from './install-apt' -import { installViaScript } from './install-script' - -function stringOption( - option: string, - defaultValue?: string -): string | undefined { - const value: string = core.getInput(option) - core.debug(`Property value: ${option}=${value || defaultValue}`) - return value || defaultValue || undefined -} - -function getBooleanOption(booleanInputName: string): boolean { - const trueValue = [ - 'true', - 'True', - 'TRUE', - 'yes', - 'Yes', - 'YES', - 'y', - 'Y', - 'on', - 'On', - 'ON' - ] - const falseValue = [ - 'false', - 'False', - 'FALSE', - 'no', - 'No', - 'NO', - 'n', - 'N', - 'off', - 'Off', - 'OFF' - ] - const stringInput = core.getInput(booleanInputName) - /* istanbul ignore next */ - if (trueValue.includes(stringInput)) return true - /* istanbul ignore next */ - if (falseValue.includes(stringInput)) return false - return false // default to `false` -} - -function booleanOption(option: string, defaultValue: boolean): boolean { - const value: boolean = getBooleanOption(option) - /* istanbul ignore next */ - return value !== null && value !== undefined ? value : defaultValue -} +import { installViaShell } from './install-shell' +import { installViaMsi } from './install-msi' +import { installViaPkg } from './install-pkg' +import { installViaRpm } from './install-rpm' export function notSupported(options: ElideSetupActionOptions): null | Error { const spec = `${options.os}-${options.arch}` @@ -77,29 +43,16 @@ export function notSupported(options: ElideSetupActionOptions): null | Error { case 'windows-amd64': return null default: - core.error(`Platform is not supported: ${spec}`) return new Error(`Platform not supported: ${spec}`) } } -export async function postInstall( - bin: string, - options: ElideSetupActionOptions -): Promise { - if (options.prewarm) { - try { - await prewarm(bin) - } catch (err) { - core.debug( - `Prewarm failed; proceeding anyway. Error: ${err instanceof Error ? err.message : err}` - ) - } - } +export async function postInstall(bin: string): Promise { try { - await info(bin) + await elideInfo(bin) } catch (err) { core.debug( - `Info command failed; proceeding anyway. Error: ${err instanceof Error ? err.message : err}` + `Post-install info failed; proceeding anyway. Error: ${err instanceof Error ? err.message : err}` ) } } @@ -108,11 +61,77 @@ export async function resolveExistingBinary(): Promise { try { return await io.which('elide', true) } catch { - // ignore: no existing copy return null } } +async function writeSummary( + version: string, + options: ElideSetupActionOptions, + installer: string, + elidePath: string, + cached: boolean, + elapsedMs: number +): Promise { + try { + const elapsed = + elapsedMs < 1000 + ? `${Math.round(elapsedMs)}ms` + : `${(elapsedMs / 1000).toFixed(1)}s` + + await core.summary + .addHeading('Elide Installed', 2) + .addTable([ + [ + { data: 'Version', header: true }, + { data: version, header: false } + ], + [ + { data: 'Channel', header: true }, + { data: options.channel, header: false } + ], + [ + { data: 'Installer', header: true }, + { data: installer, header: false } + ], + [ + { data: 'Platform', header: true }, + { data: `${options.os}-${options.arch}`, header: false } + ], + [ + { data: 'Path', header: true }, + { data: elidePath, header: false } + ], + [ + { data: 'Cached', header: true }, + { data: cached ? 'yes' : 'no', header: false } + ], + [ + { data: 'Time', header: true }, + { data: elapsed, header: false } + ] + ]) + .write() + } catch { + // Summary writes can fail in non-GHA environments; ignore + } +} + +async function writeErrorSummary(error: Error): Promise { + try { + await core.summary + .addHeading('Setup Elide Failed', 2) + .addCodeBlock(error.message, 'text') + .addLink( + 'Report this issue', + 'https://github.com/elide-dev/setup-elide/issues/new' + ) + .write() + } catch { + // ignore + } +} + /** * The main function for the action. * @returns {Promise} Resolves when the action is complete. @@ -120,117 +139,183 @@ export async function resolveExistingBinary(): Promise { export async function run( options?: Partial ): Promise { + const startTime = Date.now() + try { - // resolve effective plugin options - core.info('Installing Elide with GitHub Actions') - const effectiveOptions: ElideSetupActionOptions = options - ? buildOptions(options) - : buildOptions({ - version: stringOption(OptionName.VERSION, 'latest'), - install_path: stringOption( - OptionName.INSTALL_PATH, - /* istanbul ignore next */ - process.env.ELIDE_HOME || defaults.install_path - ), - os: normalizeOs( - stringOption(OptionName.OS, process.platform) as string - ), - arch: normalizeArch( - stringOption(OptionName.ARCH, process.arch) as string - ), - channel: normalizeChannel( - stringOption(OptionName.CHANNEL, 'nightly') as string - ), - export_path: booleanOption(OptionName.EXPORT_PATH, true), - token: stringOption(OptionName.TOKEN, process.env.GITHUB_TOKEN), - custom_url: stringOption(OptionName.CUSTOM_URL), - version_tag: stringOption(OptionName.VERSION_TAG) - }) + // --- Resolve options --- + const effectiveOptions: ElideSetupActionOptions = await core.group( + '⚙️ Resolving options', + async () => { + const opts = options ? buildOptions(options) : buildOptionsFromInputs() + core.info( + `Options: version=${opts.version} channel=${opts.channel} installer=${opts.installer} os=${opts.os} arch=${opts.arch}` + ) + return opts + } + ) - // make sure the requested version, platform, and os triple is supported - const supportErr = notSupported(effectiveOptions) - if (supportErr) { - core.setFailed(supportErr.message) - return - } + // Init telemetry early so errors during install are captured + initTelemetry(effectiveOptions.telemetry, effectiveOptions) + logEvent('setup-elide.start', { + installer: effectiveOptions.installer, + version: effectiveOptions.version, + os: effectiveOptions.os, + arch: effectiveOptions.arch + }) - // if elide is already installed and the user didn't set `force`, we can bail - if (!effectiveOptions.force) { - const existing: string | null = await resolveExistingBinary() - if (existing) { - core.debug( - `Located existing Elide binary at: '${existing}'. Obtaining version...` - ) - await postInstall(existing, effectiveOptions) - const version = await obtainVersion(existing) - - /* istanbul ignore next */ - if ( - version === effectiveOptions.version || - effectiveOptions.version === 'local' - ) { - core.info( - `Existing Elide installation at version '${version}' was preserved` + await withSpan('setup-elide', 'setup', async () => { + // --- Validate platform --- + const supportErr = notSupported(effectiveOptions) + if (supportErr) { + core.error(supportErr.message, { title: 'Platform Not Supported' }) + core.setFailed(supportErr.message) + return + } + + // --- Check for existing binary --- + if (!effectiveOptions.force) { + const existing: string | null = await resolveExistingBinary() + if (existing) { + core.debug( + `Located existing Elide binary at: '${existing}'. Obtaining version...` ) - core.setOutput(ActionOutputName.PATH, existing) - core.setOutput(ActionOutputName.VERSION, version) - return + await postInstall(existing) + const version = await obtainVersion(existing) + + if ( + version === effectiveOptions.version || + effectiveOptions.version === 'local' + ) { + core.notice(`Existing Elide ${version} preserved at ${existing}`, { + title: 'Already Installed' + }) + core.setOutput(ActionOutputName.PATH, existing) + core.setOutput(ActionOutputName.VERSION, version) + core.setOutput(ActionOutputName.CACHED, 'true') + core.setOutput(ActionOutputName.INSTALLER, 'none') + logEvent('setup-elide.exit', { status: 'cached' }) + return + } } } - } - // choose installation method based on platform - let release: ElideRelease - if (effectiveOptions.custom_url) { - // custom URL always uses the tarball download path - release = await downloadRelease(effectiveOptions) - } else if (effectiveOptions.os === 'linux' && (await isDebianLike())) { - core.info('Detected Debian/Ubuntu -- installing via apt repository') - release = await installViaApt(effectiveOptions) - } else if (effectiveOptions.os === 'windows') { - core.info('Detected Windows -- installing via archive download') - release = await downloadRelease(effectiveOptions) - } else if ( - effectiveOptions.os === 'linux' || - effectiveOptions.os === 'darwin' - ) { - core.info('Installing via install script') - release = await installViaScript(effectiveOptions) - } else { - // Unknown platform: fall back to archive download - release = await downloadRelease(effectiveOptions) - } - core.debug(`Release version: '${release.version.tag_name}'`) + // --- Validate installer for platform --- + let installer = effectiveOptions.installer + const validation = validateInstallerForPlatform( + installer, + effectiveOptions.os + ) + if (!validation.valid) { + core.warning( + `Installer '${installer}' is not supported on ${effectiveOptions.os}: ${validation.reason}. Falling back to 'archive'.`, + { title: 'Installer Fallback' } + ) + installer = 'archive' + } - // if instructed, add Elide to the path - if (effectiveOptions.export_path) { - core.info(`Adding '${release.elideBin}' to PATH`) - core.addPath(release.elideBin) - } + // --- Install --- + const release: ElideRelease = await core.group( + `📦 Installing Elide via ${installer}`, + async () => + withSpan(`install.${installer}`, 'install', async () => { + if (effectiveOptions.custom_url) { + core.info(`Using custom URL: ${effectiveOptions.custom_url}`) + return downloadRelease(effectiveOptions) + } - // begin preparing outputs - const outputs: ElideSetupActionOutputs = { - path: release.elidePath, - version: effectiveOptions.version - } + switch (installer) { + case 'archive': + return downloadRelease(effectiveOptions) + case 'shell': + return installViaShell(effectiveOptions) + case 'msi': + return installViaMsi(effectiveOptions) + case 'pkg': + return installViaPkg(effectiveOptions) + case 'apt': + return installViaApt(effectiveOptions) + case 'rpm': + return installViaRpm(effectiveOptions) + } + }) + ) + core.debug(`Release version: '${release.version.tag_name}'`) + + // --- Post-install --- + const version: string = await core.group( + '✅ Verifying installation', + async () => + withSpan('verify', 'verify', async () => { + if (effectiveOptions.export_path) { + core.info(`Adding '${release.elideBin}' to PATH`) + core.addPath(release.elideBin) + } - // verify installed version - await postInstall(release.elidePath, effectiveOptions) - const version = await obtainVersion(release.elidePath) + await postInstall(release.elidePath) + const ver = await obtainVersion(release.elidePath) - const isNightly = release.version.tag_name.startsWith('nightly-') - if (!isNightly && version !== release.version.tag_name) { - core.warning( - `Elide version mismatch: expected '${release.version.tag_name}', but got '${version}'` + const isNightly = release.version.tag_name.startsWith('nightly-') + if (!isNightly && ver !== release.version.tag_name) { + core.warning( + `Elide version mismatch: expected '${release.version.tag_name}', but got '${ver}'`, + { title: 'Version Mismatch' } + ) + } + + return ver + }) ) - } - // mount outputs - core.setOutput(ActionOutputName.PATH, outputs.path) - core.setOutput(ActionOutputName.VERSION, version) - core.info(`Elide installed at version ${release.version.tag_name}`) + // --- Set outputs --- + const cached = release.cached ?? false + core.setOutput(ActionOutputName.PATH, release.elidePath) + core.setOutput(ActionOutputName.VERSION, version) + core.setOutput(ActionOutputName.CACHED, cached ? 'true' : 'false') + core.setOutput(ActionOutputName.INSTALLER, installer) + + if (cached) { + core.notice(`Using cached Elide ${release.version.tag_name}`, { + title: 'Cache Hit' + }) + } + + const elapsed = Date.now() - startTime + core.info( + `Elide ${release.version.tag_name} installed in ${elapsed < 1000 ? `${elapsed}ms` : `${(elapsed / 1000).toFixed(1)}s`}` + ) + + // Record install duration as a metric + recordMetric('setup_elide.duration_ms', elapsed, 'millisecond', { + installer, + os: effectiveOptions.os, + arch: effectiveOptions.arch, + cached: cached ? 'true' : 'false' + }) + + logEvent('setup-elide.exit', { + status: 'success', + installer, + version, + cached: cached ? 'true' : 'false' + }) + + await writeSummary( + version, + effectiveOptions, + installer, + release.elidePath, + cached, + elapsed + ) + }) } catch (error) { - // Fail the workflow run if an error occurs - if (error instanceof Error) core.setFailed(error.message) + if (error instanceof Error) { + reportError(error) + core.error(error.message, { title: 'Installation Failed' }) + core.setFailed(error.message) + await writeErrorSummary(error) + } + } finally { + await flushTelemetry() } } diff --git a/src/options.ts b/src/options.ts index 601789c..bff833f 100644 --- a/src/options.ts +++ b/src/options.ts @@ -1,5 +1,6 @@ import os from 'node:os' import path from 'node:path' +import * as core from '@actions/core' /** * Enumerates options and maps them to their well-known option names. @@ -14,15 +15,32 @@ export enum OptionName { VERSION_TAG = 'version_tag', TOKEN = 'token', INSTALL_PATH = 'install_path', - FORCE = 'force' + FORCE = 'force', + NO_CACHE = 'no_cache', + INSTALLER = 'installer', + TELEMETRY = 'telemetry' } /** - * Describes the interface provided by setup action configuration, once interpreted and once - * defaults are applied. + * Recognized release channels. */ export type ElideChannel = 'nightly' | 'preview' | 'release' +/** + * Recognized installer methods. + */ +export type InstallerMethod = + | 'archive' + | 'shell' + | 'msi' + | 'pkg' + | 'apt' + | 'rpm' + +/** + * Describes the interface provided by setup action configuration, once interpreted and once + * defaults are applied. + */ export interface ElideSetupActionOptions { // Desired version of Elide; the special token `latest` resolves the latest version. version: string | 'latest' @@ -30,6 +48,9 @@ export interface ElideSetupActionOptions { // Release channel: 'nightly' (default), 'preview', or 'release'. channel: ElideChannel + // Installation method: 'archive' (default), 'shell', 'msi', 'pkg', 'apt', or 'rpm'. + installer: InstallerMethod + // Whether to setup Elide on the PATH; defaults to `true`. export_path: boolean @@ -48,9 +69,6 @@ export interface ElideSetupActionOptions { // Whether to force installation if a copy of Elide is already installed. force: boolean - // Whether to pre-warm the installed copy of Elide; defaults to `true`. - prewarm: boolean - // Custom download URL to use in place of interpreted download URLs. custom_url?: string @@ -59,6 +77,9 @@ export interface ElideSetupActionOptions { // Custom GitHub token to use, or the workflow's default token, if any. token?: string + + // Whether to send anonymous error telemetry; defaults to `true`. + telemetry: boolean } /** @@ -76,7 +97,6 @@ export const nixDefaultPath = path.resolve(os.homedir(), 'elide') */ export const configPath = path.resolve(os.homedir(), '.elide') -/* istanbul ignore next */ const defaultTargetPath = process.platform === 'win32' ? windowsDefaultPath : nixDefaultPath @@ -86,15 +106,69 @@ const defaultTargetPath = export const defaults: ElideSetupActionOptions = { version: 'latest', channel: 'nightly', + installer: 'archive', + telemetry: true, no_cache: false, export_path: true, force: false, - prewarm: true, os: normalizeOs(process.platform), arch: normalizeArch(process.arch), install_path: defaultTargetPath } +/** + * Normalize an installer string to a recognized installer method. + */ +export function normalizeInstaller(value: string): InstallerMethod { + switch (value.trim().toLowerCase()) { + case 'archive': + return 'archive' + case 'shell': + return 'shell' + case 'msi': + return 'msi' + case 'pkg': + return 'pkg' + case 'apt': + return 'apt' + case 'rpm': + return 'rpm' + default: + return 'archive' + } +} + +/** + * Validate that the chosen installer method is compatible with the target OS. + * Returns `{ valid: true }` or `{ valid: false, reason: string }`. + */ +export function validateInstallerForPlatform( + installer: InstallerMethod, + targetOs: string +): { valid: boolean; reason?: string } { + switch (installer) { + case 'archive': + case 'shell': + return { valid: true } + case 'msi': + if (targetOs !== 'windows') + return { valid: false, reason: 'MSI is only available on Windows' } + return { valid: true } + case 'pkg': + if (targetOs !== 'darwin') + return { valid: false, reason: 'PKG is only available on macOS' } + return { valid: true } + case 'apt': + if (targetOs !== 'linux') + return { valid: false, reason: 'apt is only available on Linux' } + return { valid: true } + case 'rpm': + if (targetOs !== 'linux') + return { valid: false, reason: 'RPM is only available on Linux' } + return { valid: true } + } +} + /** * Normalize a channel string to a recognized channel token. */ @@ -135,7 +209,6 @@ export function normalizeOs(os: string): 'darwin' | 'windows' | 'linux' { case 'linux': return 'linux' } - /* istanbul ignore next */ throw new Error(`Unrecognized OS: ${os}`) } @@ -158,7 +231,6 @@ export function normalizeArch(arch: string): 'amd64' | 'aarch64' { case 'arm64': return 'aarch64' } - /* istanbul ignore next */ throw new Error(`Unrecognized architecture: ${arch}`) } @@ -179,3 +251,61 @@ export default function buildOptions( arch: normalizeArch(opts?.arch || defaults.arch) } satisfies ElideSetupActionOptions } + +const SENSITIVE_INPUT_NAMES = new Set([OptionName.TOKEN, 'secret', 'password']) + +function isSensitiveInput(name: string): boolean { + return ( + SENSITIVE_INPUT_NAMES.has(name) || + name.toLowerCase().includes('token') || + name.toLowerCase().includes('secret') + ) +} + +function stringInput(name: string, defaultValue?: string): string | undefined { + const value = core.getInput(name) + if (isSensitiveInput(name)) { + core.debug( + `Input: ${name}=${value ? '' : defaultValue ? '' : ''}` + ) + } else { + core.debug(`Input: ${name}=${value || defaultValue}`) + } + return value || defaultValue || undefined +} + +function booleanInput(name: string, defaultValue: boolean): boolean { + try { + return core.getBooleanInput(name) + } catch { + return defaultValue + } +} + +/** + * Build action options by reading GitHub Actions inputs via core.getInput. + */ +export function buildOptionsFromInputs(): ElideSetupActionOptions { + return buildOptions({ + version: stringInput(OptionName.VERSION, 'latest'), + installer: normalizeInstaller( + stringInput(OptionName.INSTALLER, 'archive') as string + ), + install_path: stringInput( + OptionName.INSTALL_PATH, + process.env.ELIDE_HOME || defaults.install_path + ), + os: normalizeOs(stringInput(OptionName.OS, process.platform) as string), + arch: normalizeArch(stringInput(OptionName.ARCH, process.arch) as string), + channel: normalizeChannel( + stringInput(OptionName.CHANNEL, 'nightly') as string + ), + force: booleanInput(OptionName.FORCE, false), + export_path: booleanInput(OptionName.EXPORT_PATH, true), + no_cache: booleanInput(OptionName.NO_CACHE, false), + telemetry: booleanInput(OptionName.TELEMETRY, true), + token: stringInput(OptionName.TOKEN, process.env.GITHUB_TOKEN), + custom_url: stringInput(OptionName.CUSTOM_URL), + version_tag: stringInput(OptionName.VERSION_TAG) + }) +} diff --git a/src/outputs.ts b/src/outputs.ts deleted file mode 100644 index 9e64e33..0000000 --- a/src/outputs.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Models the shape of outputs provided by the setup action. - */ -export type ElideSetupActionOutputs = { - // Path to the Elide binary. - path: string - - // Version number for the binary. - version: string -} - -/** - * Enumerates outputs and maps them to their well-known names. - */ -export enum ActionOutputName { - // Path to the Elide binary. - PATH = 'path', - - // Path to the Elide binary. - VERSION = 'version' -} diff --git a/src/platform.ts b/src/platform.ts index bdd075c..054b8c2 100644 --- a/src/platform.ts +++ b/src/platform.ts @@ -14,3 +14,18 @@ export async function isDebianLike(): Promise { return false } } + +/** + * Check whether the current system is RPM-based (RHEL, Fedora, CentOS, etc.) + * by testing for the presence of `/etc/redhat-release`. + * + * @return `true` if `/etc/redhat-release` exists. + */ +export async function isRpmBased(): Promise { + try { + await access('/etc/redhat-release') + return true + } catch { + return false + } +} diff --git a/src/post.ts b/src/post.ts new file mode 100644 index 0000000..8b12022 --- /dev/null +++ b/src/post.ts @@ -0,0 +1,7 @@ +/** + * Post-step entry point. + * Flushes any pending telemetry events before the action exits. + */ +import { flushTelemetry } from './telemetry' + +flushTelemetry() diff --git a/src/releases.ts b/src/releases.ts index 06d59d8..6bb753c 100644 --- a/src/releases.ts +++ b/src/releases.ts @@ -3,7 +3,6 @@ import { Octokit } from 'octokit' import * as toolCache from '@actions/tool-cache' import * as github from '@actions/github' import type { ElideSetupActionOptions } from './options' -import { GITHUB_DEFAULT_HEADERS } from './config' import { obtainVersion } from './command' import { which, mv } from '@actions/io' import { spawnSync } from 'node:child_process' @@ -11,6 +10,40 @@ import { existsSync } from 'node:fs' const downloadBase = 'https://elide.zip' +const GITHUB_API_VERSION = '2022-11-28' + +const GITHUB_DEFAULT_HEADERS = { + 'X-GitHub-Api-Version': GITHUB_API_VERSION +} + +// Matches tags like "nightly-20260328" or "nightly-2026-03-28" +const NIGHTLY_TAG_RE = /^nightly-(.+)$/ + +/** + * Convert a release tag to a valid semver string for use with @actions/tool-cache. + * + * tool-cache's `find()` calls `semver.clean()` on the version, which returns null + * for non-semver strings like "nightly-20260328". This causes cache lookups to + * silently fail (never hit, never store correctly). + * + * Mapping: + * "1.0.0" → "1.0.0" (already semver) + * "1.0.0-beta10" → "1.0.0-beta10" (valid semver prerelease) + * "nightly-20260328" → "0.0.0-nightly.20260328" + * + * We use prerelease (not build metadata with +) because semver.clean strips + * build metadata, making it useless for cache key matching. + */ +export function toSemverCacheKey(tag: string): string { + const nightlyMatch = tag.match(NIGHTLY_TAG_RE) + if (nightlyMatch) { + // Use prerelease segment so semver.clean preserves it + const datePart = nightlyMatch[1].replaceAll('-', '') + return `0.0.0-nightly.${datePart}` + } + return tag +} + /** * Version info resolved for a release of Elide. */ @@ -55,6 +88,9 @@ export type ElideRelease = { // Path to Elide's bin folder. elideBin: string + // Whether this release was served from the tool cache. + cached?: boolean + // Deferred cleanup or after-action method. deferred?: () => Promise } @@ -112,53 +148,51 @@ export function cdnArch(arch: string): string { } /** - * Build a download URL for an Elide release; if a custom URL is provided as part of the set of - * `options`, use it instead. + * Build a CDN asset URL for an Elide release artifact. + * Appends `?source=gha` for analytics tracking. + * + * @param options Effective options (uses channel, version, os, arch). + * @param ext File extension (e.g. 'tgz', 'txz', 'zip', 'msi', 'pkg', 'rpm'). + * @return Full CDN URL. + */ +export function buildCdnAssetUrl( + options: ElideSetupActionOptions, + ext: string +): URL { + const channel = options.channel || 'nightly' + const revision = options.version === 'latest' ? 'latest' : options.version + const os = cdnOs(options.os) + const arch = cdnArch(options.arch) + return new URL( + `${downloadBase}/artifacts/${channel}/${revision}/elide.${os}-${arch}.${ext}?source=gha` + ) +} + +/** + * Build a download URL for an Elide release archive. + * Selects the best archive format based on local tool availability. * - * @param version Version we are downloading. * @param options Effective options. * @return URL and archive type to use. */ export async function buildDownloadUrl( - options: ElideSetupActionOptions, - version: ElideVersionInfo + options: ElideSetupActionOptions ): Promise<{ url: URL; archiveType: ArchiveType }> { let ext = 'tgz' let archiveType = ArchiveType.GZIP const hasXz = await which('xz') - /* istanbul ignore next */ if (options.os === ElideOS.WINDOWS) { ext = 'zip' archiveType = ArchiveType.ZIP } else if (hasXz) { - // use xz if available ext = 'txz' archiveType = ArchiveType.TXZ } - // Use the explicit channel from options; fall back to inferring from tag - const channel = options.channel || 'nightly' - - // Determine revision: use "latest" when version is "latest", - // otherwise use the version as-is (a semver like "1.0.0") - let revision: string - if (options.version === 'latest') { - revision = 'latest' - } else { - revision = options.version - } - - // Map internal tokens to CDN platform tags (darwin→macos, aarch64→arm64) - const os = cdnOs(options.os) - const arch = cdnArch(options.arch) - return { archiveType, - url: new URL( - // https://elide.zip/artifacts/{channel}/{revision}/elide.{os}-{arch}.{ext} - `${downloadBase}/artifacts/${channel}/${revision}/elide.${os}-${arch}.${ext}` - ) + url: buildCdnAssetUrl(options, ext) } } @@ -181,7 +215,6 @@ async function unpackRelease( ): Promise { let target: string try { - /* istanbul ignore next */ if (options.os === ElideOS.WINDOWS) { core.debug( `Extracting as zip on Windows, from: ${archive}, to: ${elideHome}` @@ -192,7 +225,6 @@ async function unpackRelease( switch (archiveType) { // extract as zip - /* istanbul ignore next */ case ArchiveType.ZIP: core.debug( `Extracting as zip on Unix or Linux, from: ${archive}, to: ${elideHome}` @@ -255,52 +287,78 @@ async function unpackRelease( } } } catch (err) { - /* istanbul ignore next */ core.warning(`Failed to extract Elide release: ${err}`) target = elideHome } - // determine if the archive has a directory root - if ( - resolvedVersion === '1.0.0-alpha7' || - resolvedVersion === '1.0.0-alpha8' - ) { - return target // no directory root: early release - } core.debug(`Elide release ${resolvedVersion} extracted at ${target}`) return target } +const MAX_RETRIES = 3 +const RETRY_DELAY_MS = 1000 + /** - * Fetch the latest Elide release from GitHub. + * Fetch the latest Elide release from GitHub, with retry on transient failures. * * @param token GitHub token active for this workflow step. */ export async function resolveLatestVersion( token?: string ): Promise { - /* istanbul ignore next */ + if (!token) { + core.warning( + 'No GitHub token provided. API requests may be rate-limited. ' + + 'Set the `token` input or ensure GITHUB_TOKEN is available.' + ) + } const octokit = token ? github.getOctokit(token) : new Octokit({}) - const latest = await octokit.request( - 'GET /repos/{owner}/{repo}/releases/latest', - { - owner: 'elide-dev', - repo: 'elide', - headers: GITHUB_DEFAULT_HEADERS - } - ) - /* istanbul ignore next */ - if (!latest) { - throw new Error('Failed to fetch the latest Elide version') - } - /* istanbul ignore next */ - const name = latest.data?.name || undefined - return { - name, - tag_name: latest.data.tag_name, - userProvided: !!token + let lastError: Error | undefined + for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) { + try { + const latest = await octokit.request( + 'GET /repos/{owner}/{repo}/releases/latest', + { + owner: 'elide-dev', + repo: 'elide', + headers: GITHUB_DEFAULT_HEADERS + } + ) + + if (!latest) { + throw new Error('Failed to fetch the latest Elide version') + } + const name = latest.data?.name || undefined + return { + name, + tag_name: latest.data.tag_name, + userProvided: !!token + } + } catch (err) { + lastError = err instanceof Error ? err : new Error(String(err)) + const isRateLimit = + lastError.message.includes('rate limit') || + lastError.message.includes('quota exhausted') || + lastError.message.includes('403') || + lastError.message.includes('429') + + if (attempt < MAX_RETRIES) { + const delay = RETRY_DELAY_MS * attempt + core.warning( + `GitHub API request failed (attempt ${attempt}/${MAX_RETRIES}): ${lastError.message}. Retrying in ${delay}ms...` + ) + await new Promise(resolve => setTimeout(resolve, delay)) + } else if (isRateLimit) { + core.error( + 'GitHub API rate limit exhausted. Provide a token via the `token` input to increase the limit.', + { title: 'Rate Limited' } + ) + } + } } + + throw lastError! } /** @@ -314,7 +372,7 @@ async function maybeDownload( options: ElideSetupActionOptions ): Promise { // build download URL, use result from cache or disk - const { url, archiveType } = await buildDownloadUrl(options, version) + const { url, archiveType } = await buildDownloadUrl(options) const sep = options.os === ElideOS.WINDOWS ? '\\' : '/' const binName = options.os === ElideOS.WINDOWS ? 'elide.exe' : 'elide' let targetBin = `${options.install_path}${sep}bin${sep}${binName}` @@ -325,22 +383,20 @@ async function maybeDownload( // build resulting tarball path and resolved tool info let elidePath = targetBin - /* istanbul ignore next */ let elideHome: string = process.env.ELIDE_HOME || options.install_path let elidePathTarget = elideHome let elideBin: string = `${elideHome}${sep}bin` let elideDir: string | null = null + const cacheVersion = toSemverCacheKey(version.tag_name) try { core.debug( - `Checking for cached tool 'elide' at version '${version.tag_name}'` + `Checking for cached tool 'elide' at version '${version.tag_name}' (cache key: ${cacheVersion})` ) - elideDir = toolCache.find('elide', version.tag_name, options.arch) + elideDir = toolCache.find('elide', cacheVersion, options.arch) } catch (err) { - /* istanbul ignore next */ core.debug(`Failed to locate Elide in tool cache: ${err}`) } - /* istanbul ignore next */ if (options.no_cache !== true && elideDir) { // we have an existing cached copy of elide core.debug('Caching enabled and cached Elide release found; using it') @@ -349,7 +405,6 @@ async function maybeDownload( elideBin = `${elideDir}${sep}bin` core.info(`Using cached copy of Elide at version ${version.tag_name}`) } else { - /* istanbul ignore next */ if (options.no_cache) { core.debug( 'Cache disabled; forcing a fetch of the specified Elide release' @@ -365,11 +420,8 @@ async function maybeDownload( try { elideArchive = await toolCache.downloadTool(url.toString()) } catch (err) { - /* istanbul ignore next */ core.error(`Failed to download Elide release: ${err}`) - /* istanbul ignore next */ if (err instanceof Error) core.setFailed(err) - /* istanbul ignore next */ throw err } @@ -389,7 +441,7 @@ async function maybeDownload( const cachedPath = await toolCache.cacheDir( elideHome, 'elide', - version.tag_name, + cacheVersion, options.arch ) @@ -401,11 +453,13 @@ async function maybeDownload( } } + const wasCached = !!(options.no_cache !== true && elideDir) const result = { version, elidePath, elideHome: elidePathTarget, - elideBin + elideBin, + cached: wasCached } core.debug(`Elide release info: ${JSON.stringify(result)}`) return result @@ -429,14 +483,12 @@ export async function downloadRelease( // sniff archive type from URL let archiveType: ArchiveType = ArchiveType.GZIP - /* istanbul ignore next */ if (options.custom_url.endsWith('.txz')) { archiveType = ArchiveType.TXZ } else if (options.custom_url.endsWith('.zip')) { archiveType = ArchiveType.ZIP } - /* istanbul ignore next */ let elideHome: string = process.env.ELIDE_HOME || options.install_path elideHome = await unpackRelease( customArchive, @@ -460,11 +512,8 @@ export async function downloadRelease( elidePath } } catch (err) { - /* istanbul ignore next */ core.error(`Failed to download custom release: ${err}`) - /* istanbul ignore next */ if (err instanceof Error) core.setFailed(err) - /* istanbul ignore next */ throw err } } else { @@ -474,7 +523,6 @@ export async function downloadRelease( core.debug('Resolving latest version via GitHub API') versionInfo = await resolveLatestVersion(options.token) } else { - /* istanbul ignore next */ versionInfo = { tag_name: options.version, userProvided: true diff --git a/src/telemetry.ts b/src/telemetry.ts new file mode 100644 index 0000000..111ff77 --- /dev/null +++ b/src/telemetry.ts @@ -0,0 +1,172 @@ +import * as Sentry from '@sentry/node' +import type { Event } from '@sentry/node' +import type { ElideSetupActionOptions } from './options' + +// Public DSN — not a secret. Only allows sending events, not reading them. +const SENTRY_DSN = + 'https://b5a33745f4bf36a0f1e66dbcfceaa898@o4510814125228032.ingest.us.sentry.io/4511124523974656' + +const ACTION_VERSION = '1.0.0' + +let telemetryEnabled = false + +// Environment variable patterns that could contain secrets. +const SENSITIVE_PATTERNS = [ + /token/i, + /secret/i, + /password/i, + /key/i, + /credential/i, + /auth/i, + /^GITHUB_/i, + /^AWS_/i, + /^AZURE_/i, + /^GCP_/i, + /^NPM_/i, + /^NODE_AUTH/i +] + +/** + * Scrub a string of any values that look like they came from sensitive env vars. + * Replaces any known env var value found in the string with [REDACTED]. + */ +function scrubEnvVars(input: string): string { + let result = input + for (const [key, value] of Object.entries(process.env)) { + if (!value || value.length < 8) continue + if (SENSITIVE_PATTERNS.some(p => p.test(key))) { + result = result.replaceAll(value, '[REDACTED]') + } + } + return result +} + +/** + * Scrub an entire Sentry event of sensitive data. + */ +function scrubEvent(event: Event): Event { + delete event.server_name + delete event.extra + delete event.user + delete event.request + event.contexts = {} + event.breadcrumbs = [] + + if (event.exception?.values) { + for (const ex of event.exception.values) { + if (ex.value) { + ex.value = scrubEnvVars(ex.value) + } + } + } + + if (event.message) { + event.message = scrubEnvVars(event.message) + } + + return event +} + +/** + * Initialize Sentry telemetry with aggressive scrubbing. + * Enables error reporting, tracing, and metrics. + * No environment data, no PII, no secrets — only the error/span and action config tags. + */ +export function initTelemetry( + enabled: boolean, + options: ElideSetupActionOptions +): void { + telemetryEnabled = enabled + if (!enabled) return + + Sentry.init({ + dsn: SENTRY_DSN, + defaultIntegrations: false, + environment: options.channel, + release: `setup-elide@${ACTION_VERSION}`, + tracesSampleRate: 1.0, + beforeSend(event) { + return scrubEvent(event) + }, + beforeSendTransaction(event) { + return scrubEvent(event) + } + }) + + Sentry.setTags({ + installer: options.installer, + os: options.os, + arch: options.arch, + channel: options.channel, + version: options.version, + action_version: ACTION_VERSION + }) +} + +/** + * Report an error to Sentry with optional additional tags. + */ +export function reportError( + err: Error, + context?: Record +): void { + if (!telemetryEnabled) return + + Sentry.withScope(scope => { + if (context) { + for (const [k, v] of Object.entries(context)) { + scope.setTag(k, v) + } + } + Sentry.captureException(err) + }) +} + +/** + * Run an async function inside a Sentry tracing span. + * If telemetry is disabled, runs the function directly. + */ +export async function withSpan( + name: string, + op: string, + fn: () => Promise +): Promise { + if (!telemetryEnabled) return fn() + + return Sentry.startSpan( + { name, op, attributes: { 'sentry.origin': 'manual' } }, + async () => fn() + ) +} + +/** + * Record a metric gauge value (e.g., install duration). + */ +export function recordMetric( + name: string, + value: number, + unit: string, + tags?: Record +): void { + if (!telemetryEnabled) return + Sentry.metrics.gauge(name, value, { unit, tags }) +} + +/** + * Log an informational event to Sentry. + */ +export function logEvent(message: string, data?: Record): void { + if (!telemetryEnabled) return + Sentry.captureMessage(message, { + level: 'info', + tags: data + }) +} + +/** + * Flush pending Sentry events. Call before process exit. + */ +export async function flushTelemetry(): Promise { + if (!telemetryEnabled) return + await Sentry.flush(2000) +}